From 774546251f99885ba087c663999f3691958c236f Mon Sep 17 00:00:00 2001 From: spiwar <92001312+spiwar@users.noreply.github.com> Date: Tue, 27 Jan 2026 16:38:43 -0700 Subject: [PATCH 01/40] feat(endfield): switch to neutwo tonemapping by default --- src/games/endfield/common.hlsl | 8 ++++++++ .../endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl | 3 +-- .../endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl | 2 +- .../endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl | 2 +- 29 files changed, 36 insertions(+), 29 deletions(-) diff --git a/src/games/endfield/common.hlsl b/src/games/endfield/common.hlsl index e01e5651d8..9cfcbb2fe9 100644 --- a/src/games/endfield/common.hlsl +++ b/src/games/endfield/common.hlsl @@ -55,6 +55,14 @@ float3 ApplyHermiteSplineByMaxChannel(float3 input, float peak_ratio, float whit float3 tonemapped = input * scale; return tonemapped; } +float3 ApplyNeutwoByMaxChannel(float3 input, float peak_ratio, float white_clip = 100.f) { + float max_channel = renodx::math::Max(input); + + float mapped_peak = renodx::tonemap::Neutwo(max_channel, peak_ratio, white_clip); + float scale = renodx::math::DivideSafe(mapped_peak, max_channel, 1.f); + float3 tonemapped = input * scale; + return tonemapped; +} struct UserGradingConfig { float exposure; diff --git a/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl index 84dc9d6af2..447dfa06c5 100644 --- a/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl @@ -215,7 +215,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl index 5017846631..d3c8244385 100644 --- a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl @@ -242,7 +242,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl index 542a13beca..3bcd28f0c2 100644 --- a/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl @@ -182,7 +182,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl index 176d153139..fad31252b8 100644 --- a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl @@ -252,7 +252,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl index b5ce43fece..fdd474499f 100644 --- a/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl @@ -197,7 +197,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl index cdf3c23425..0c31cdb794 100644 --- a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl @@ -286,9 +286,8 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); - } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl index 1493b24d61..b1789ab45b 100644 --- a/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl @@ -194,7 +194,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl index 65ef2875a4..bdcc4c2837 100644 --- a/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl @@ -224,7 +224,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl index 5425472b9a..64e4bf825f 100644 --- a/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl @@ -199,7 +199,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl index 55da2c3fdd..e3555fba01 100644 --- a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl @@ -307,7 +307,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl index c669fb0402..80c060588c 100644 --- a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl @@ -184,7 +184,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl index 2151594baa..6d28f13978 100644 --- a/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl @@ -240,7 +240,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl index fdbba0cbb0..99a4e20277 100644 --- a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl @@ -260,7 +260,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl index cb85e0019f..0aba090c6b 100644 --- a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl @@ -176,7 +176,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl index cf8b817f90..ba736ddd30 100644 --- a/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl @@ -209,7 +209,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl index 2bc6e6ea61..43e78dd8d6 100644 --- a/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl @@ -144,7 +144,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl index c7c6f5055c..39326ae460 100644 --- a/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl @@ -146,7 +146,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl index 2c9390cd29..5780c9dac7 100644 --- a/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl @@ -166,7 +166,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl index b87937fee2..c27cd4488c 100644 --- a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl @@ -253,7 +253,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl index 923bda04c1..5d67f0b0ed 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl @@ -99,7 +99,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl index b1abcfa6b8..4919319acf 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl @@ -220,7 +220,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl index 7d762160cb..afa235123c 100644 --- a/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl @@ -159,7 +159,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl index 1b345ce829..6580e9fb6b 100644 --- a/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl @@ -175,7 +175,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl index 68dd99ccb0..765451136d 100644 --- a/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl @@ -224,7 +224,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl index 0c93caafda..a9d0334c45 100644 --- a/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl @@ -83,7 +83,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl index 07af03a625..6ac49b3705 100644 --- a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl @@ -178,7 +178,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl index fcdb84ba49..512b460340 100644 --- a/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl @@ -118,7 +118,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl index b6c5791e20..e47da5fb86 100644 --- a/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl @@ -116,7 +116,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyHermiteSplineByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( From a249519b344f83ceddf4985599e115b96b8882ba Mon Sep 17 00:00:00 2001 From: Arnas Golubeckas <139492523+SGTForgery@users.noreply.github.com> Date: Wed, 28 Jan 2026 04:12:52 +0000 Subject: [PATCH 02/40] feat(endfield): disable cloning, fix hair shadows, fix reshade bypass Fixed up some internal code Disabled cloning and other resource upgrade code again (to improve mem and VRAM issues maybe) Hair bangs shadow fix included again AO now applies on to grass/foliage again Added red text explaining shader bypass --- src/games/endfield/addon.cpp | 120 +++++++++++------- .../endfield/shadows/0x61FA72DD.ps_5_0.hlsl | 4 +- .../endfield/shadows/0xB8580FF6.ps_5_0.hlsl | 8 +- ...=> grass-shadowing_0x0C02AB31.cs_5_0.hlsl} | 2 +- src/games/endfield/shared.h | 4 +- .../endfield/ui/ui12_0x684B1BD3.ps_5_0.hlsl | 53 ++++++++ 6 files changed, 139 insertions(+), 52 deletions(-) rename src/games/endfield/shadows/{0x0C02AB31.cs_5_0.hlsl => grass-shadowing_0x0C02AB31.cs_5_0.hlsl} (99%) create mode 100644 src/games/endfield/ui/ui12_0x684B1BD3.ps_5_0.hlsl diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index de6ec8693d..568feb697f 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -451,6 +451,18 @@ renodx::utils::settings::Settings settings = { .tooltip = "Adjusts the intensity of bloom effects.", .min = 0.f, .max = 100.f, + }, + new renodx::utils::settings::Setting{ + .value_type = renodx::utils::settings::SettingValueType::CUSTOM, + .label = std::string("Reshade shader bypass, applies on_drawn after game's deferred lighting pass. Only properly works with DLAA/TAAU 100 scaling atm"), + .on_draw = []() { + ImGui::SetWindowFontScale(2.0f); + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.0f, 0.0f, 0.0f, 1.0f)); + ImGui::TextWrapped("Reshade shader bypass, applies on_drawn after game's deferred lighting pass. Only properly works with DLAA/TAAU 100 scaling atm"); + ImGui::PopStyleColor(); + ImGui::SetWindowFontScale(1.0f); + return false; + }, }, new renodx::utils::settings::Setting{ .key = "RenderReshadeBeforeUI", @@ -483,8 +495,8 @@ renodx::utils::settings::Settings settings = { .labels = {"Off", "Vanilla", "2x", "3x"}, }, new renodx::utils::settings::Setting{ - .key = "AO_INTENSITY", - .binding = &shader_injection.ao_intensity, + .key = "SHADOW_HARDENING", + .binding = &shader_injection.shadow_hardening, .value_type = renodx::utils::settings::SettingValueType::INTEGER, .default_value = 1.f, .label = "Improved Shadows", @@ -584,6 +596,11 @@ renodx::utils::settings::Settings settings = { .label = "- Made for Arknights: Endfield 1.0", .section = "About", }, + new renodx::utils::settings::Setting{ + .value_type = renodx::utils::settings::SettingValueType::TEXT, + .label = std::string("- Special thanks to both Musa & Miru for helping with the addon"), + .section = "About", + }, new renodx::utils::settings::Setting{ .value_type = renodx::utils::settings::SettingValueType::TEXT, .label = std::string("- Many thanks to ShortFuse for RenoDX"), @@ -791,62 +808,77 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { renodx::mods::swapchain::swap_chain_upgrade_targets.push_back({ .old_format = reshade::api::format::r8g8b8a8_typeless, .new_format = reshade::api::format::r16g16b16a16_float, - .ignore_size = false, - .use_resource_view_cloning = true, - .aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), - .usage_include = reshade::api::resource_usage::render_target, + //.ignore_size = false, + //.use_resource_view_cloning = true, + //.aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), + //.usage_include = reshade::api::resource_usage::render_target, }); renodx::mods::swapchain::swap_chain_upgrade_targets.push_back({ .old_format = reshade::api::format::r8g8b8a8_unorm, .new_format = reshade::api::format::r16g16b16a16_float, - .ignore_size = false, - .use_resource_view_cloning = true, - .aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), - .usage_include = reshade::api::resource_usage::render_target, + //.ignore_size = false, + //.use_resource_view_cloning = true, + //.aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), + //.usage_include = reshade::api::resource_usage::render_target, }); renodx::mods::swapchain::swap_chain_upgrade_targets.push_back({ .old_format = reshade::api::format::r10g10b10a2_unorm, .new_format = reshade::api::format::r16g16b16a16_float, - .ignore_size = false, - .use_resource_view_cloning = true, - .aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), - .usage_include = reshade::api::resource_usage::render_target, + //.ignore_size = false, + //.use_resource_view_cloning = true, + //.aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), + //.usage_include = reshade::api::resource_usage::render_target, }); const uint32_t target_crcs[] = { - 0x00C16AFBu, - 0x039C28DAu, - 0x086097D2u, - 0x09270FDAu, - 0x0E520F06u, - 0x10076711u, - 0x21241B7Au, - 0x51359B4Du, - 0x53875523u, - 0x53D50BD5u, - 0x57737D9Fu, - 0x5FC0BD3Cu, - 0x6166487Au, - 0x61908D50u, - 0x64CEB255u, - 0x6A76C719u, - 0x86420EBCu, - 0x9790A50Cu, - 0x9AA3FC1Fu, - 0xA6501734u, - 0xA6E6ABE6u, - 0xA8213A68u, - 0xAFDCA263u, - 0xAFECA8F4u, - 0xBCD91195u, - 0xD5BC74ACu, - 0xE0058043u, - 0xF8FA587Fu, + + 0x37837806u, + 0xD3FA93FCu, + + /* + 0x00C16AFBu, + 0x039C28DAu, + 0x086097D2u, + 0x09270FDAu, + 0x0E520F06u, + 0x10076711u, + 0x21241B7Au, + 0x51359B4Du, + 0x53875523u, + 0x53D50BD5u, + 0x57737D9Fu, + 0x5FC0BD3Cu, + 0x6166487Au, + 0x61908D50u, + 0x64CEB255u, + 0x6A76C719u, + 0x86420EBCu, + 0x9790A50Cu, + 0x9AA3FC1Fu, + 0xA6501734u, + 0xA6E6ABE6u, + 0xA8213A68u, + 0xAFDCA263u, + 0xAFECA8F4u, + 0xBCD91195u, + 0xD5BC74ACu, + 0xE0058043u, + 0xF8FA587Fu, + */ + }; for (uint32_t crc : target_crcs) { - if (custom_shaders.find(crc) != custom_shaders.end()) { - custom_shaders[crc].on_drawn = ExecuteReshadeEffects; + + // Ensure an entry exists for the shader hash even if we don't have compiled HLSL + auto it = custom_shaders.find(crc); + if (it == custom_shaders.end()) { + renodx::mods::shader::CustomShader cs{}; + cs.crc32 = crc; + cs.on_drawn = ExecuteReshadeEffects; + custom_shaders.emplace(crc, std::move(cs)); + } else { + it->second.on_drawn = ExecuteReshadeEffects; } } diff --git a/src/games/endfield/shadows/0x61FA72DD.ps_5_0.hlsl b/src/games/endfield/shadows/0x61FA72DD.ps_5_0.hlsl index d5b205bc52..ce0c665704 100644 --- a/src/games/endfield/shadows/0x61FA72DD.ps_5_0.hlsl +++ b/src/games/endfield/shadows/0x61FA72DD.ps_5_0.hlsl @@ -372,8 +372,8 @@ void main( r0.y = -1 + r0.y; r0.y = cb0[175].z * r0.y + 1; - if (AO_INTENSITY >= 1.f) { - // Boost AO intensity (hardcoded 4x) + if (SHADOW_HARDENING>= 1.f) { + r0.y = 1.0 + (r0.y - 1.0) * 4.0; } diff --git a/src/games/endfield/shadows/0xB8580FF6.ps_5_0.hlsl b/src/games/endfield/shadows/0xB8580FF6.ps_5_0.hlsl index de6e5c8090..8f82563c3b 100644 --- a/src/games/endfield/shadows/0xB8580FF6.ps_5_0.hlsl +++ b/src/games/endfield/shadows/0xB8580FF6.ps_5_0.hlsl @@ -336,11 +336,13 @@ void main( r0.w = -1 + r0.w; r0.w = cb0[175].z * r0.w + 1; - if (AO_INTENSITY >= 1.f) { - // Boost AO intensity (hardcoded 4x) + /* + if (SHADOW_HARDENING>= 1.f) { + r0.w = 1.0 + (r0.w - 1.0) * 4.0; } - + */ + r0.z = r0.z * r0.w; } r0.w = cb2[35].z + -r0.z; diff --git a/src/games/endfield/shadows/0x0C02AB31.cs_5_0.hlsl b/src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl similarity index 99% rename from src/games/endfield/shadows/0x0C02AB31.cs_5_0.hlsl rename to src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl index 939eb641e7..28cfa687e9 100644 --- a/src/games/endfield/shadows/0x0C02AB31.cs_5_0.hlsl +++ b/src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl @@ -388,7 +388,7 @@ void main(uint3 vThreadIDInGroup : SV_GroupThreadID, uint3 vThreadGroupID : SV_G r1.w = max(0, r1.w); r0.y = r1.w * r0.y; - if (AO_INTENSITY>= 1.f) { + if (SHADOW_HARDENING>= 1.f) { r0.y = r0.y * 4.0; } diff --git a/src/games/endfield/shared.h b/src/games/endfield/shared.h index 9ede27511f..eecc1a5159 100644 --- a/src/games/endfield/shared.h +++ b/src/games/endfield/shared.h @@ -87,7 +87,7 @@ struct ShaderInjectData { float bloom_strength; float godrays_intensity; float perchannelblowout; - float ao_intensity; + float shadow_hardening; }; #ifndef __cplusplus @@ -144,7 +144,7 @@ cbuffer shader_injection : register(b13) { #define BLOOM_STRENGTH shader_injection.bloom_strength #define GODRAYS_INTENSITY shader_injection.godrays_intensity #define PER_CHANNEL_BLOWOUT shader_injection.perchannelblowout -#define AO_INTENSITY shader_injection.ao_intensity +#define SHADOW_HARDENING shader_injection.shadow_hardening #include "../../shaders/renodx.hlsl" diff --git a/src/games/endfield/ui/ui12_0x684B1BD3.ps_5_0.hlsl b/src/games/endfield/ui/ui12_0x684B1BD3.ps_5_0.hlsl new file mode 100644 index 0000000000..1cd31e7913 --- /dev/null +++ b/src/games/endfield/ui/ui12_0x684B1BD3.ps_5_0.hlsl @@ -0,0 +1,53 @@ +// ---- Created with 3Dmigoto v1.4.1 on Tue Jan 27 19:44:20 2026 + +#include "../shared.h" + +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb0 : register(b0) +{ + float4 cb0[7]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float4 v1 : TEXCOORD0, + float4 v2 : TEXCOORD1, + float4 v3 : TEXCOORD2, + float4 v4 : TEXCOORD3, + out float4 o0 : SV_Target0) +{ + float4 r0; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xy = cmp(v3.xy >= cb0[4].xy); + r0.zw = cmp(cb0[4].zw >= v3.xy); + r0.xyzw = r0.xyzw ? float4(1,1,1,1) : 0; + r0.xy = r0.xy * r0.zw; + r0.x = r0.x * r0.y; + r0.y = t1.Sample(s1_s, v2.xy).w; + r0.y = cb0[3].w + r0.y; + r0.y = v1.w * r0.y; + o0.w = r0.y * r0.x; + r0.xyz = t0.SampleLevel(s0_s, v4.xy, 0).xyz; + r0.xyz = v1.xyz * r0.xyz; + o0.xyz = cb0[6].xxx * r0.xyz; + + if (UI_VISIBILITY < 0.5f) o0 = 0; + + return; +} \ No newline at end of file From 0c0dc3e54d88ddd187bdac6488ddcec3428eb95b Mon Sep 17 00:00:00 2001 From: spiwar <92001312+spiwar@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:24:52 -0700 Subject: [PATCH 03/40] feat(endfield): re-tuned SDR and HDR hue correction values --- .../uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x039C28DA.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x086097D2.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x09270FDA.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x0E520F06.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x10076711.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x21241B7A.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x51359B4D.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x53875523.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x57737D9F.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x6166487A.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x61908D50.ps_5_0.hlsl | 82 ++++++++++--------- .../uberpost/uberpost_0x64CEB255.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x6A76C719.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x86420EBC.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x9790A50C.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0xA6501734.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0xA8213A68.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0xBCD91195.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl | 18 +++- .../uberpost/uberpost_0xE0058043.ps_5_0.hlsl | 20 +++-- .../uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl | 18 +++- 28 files changed, 421 insertions(+), 149 deletions(-) diff --git a/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl index 447dfa06c5..d2504860f1 100644 --- a/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl @@ -204,14 +204,24 @@ void main( ); float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl index d3c8244385..b6e2946179 100644 --- a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl @@ -231,14 +231,24 @@ void main( ); float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl index 3bcd28f0c2..77bf8b12a6 100644 --- a/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl @@ -171,14 +171,24 @@ void main( ); float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl index fad31252b8..4ae06b437b 100644 --- a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl @@ -241,14 +241,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl index fdd474499f..de170b4167 100644 --- a/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl @@ -186,14 +186,24 @@ void main( ); float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl index 0c31cdb794..f902211f8a 100644 --- a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl @@ -275,14 +275,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl index b1789ab45b..97cfc587dd 100644 --- a/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl @@ -183,14 +183,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl index bdcc4c2837..1f771a6c5e 100644 --- a/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl @@ -213,14 +213,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl index 64e4bf825f..59513e699f 100644 --- a/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl @@ -188,14 +188,24 @@ void main( ); float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl index e3555fba01..91b5daad70 100644 --- a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl @@ -296,14 +296,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl index 80c060588c..0e1d95b218 100644 --- a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl @@ -173,14 +173,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl index 6d28f13978..f845f7415d 100644 --- a/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl @@ -229,14 +229,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl index 99a4e20277..7b46273db7 100644 --- a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl @@ -249,14 +249,24 @@ void main( ); float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl index 0aba090c6b..387f0e0081 100644 --- a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl @@ -8,29 +8,22 @@ Texture2D t0 : register(t0); SamplerState s0_s : register(s0); -cbuffer cb1 : register(b1) -{ +cbuffer cb1 : register(b1) { float4 cb1[26]; } -cbuffer cb0 : register(b0) -{ +cbuffer cb0 : register(b0) { float4 cb0[110]; } - - - // 3Dmigoto declarations #define cmp - - void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2,r3,r4,r5,r6; + float4 v0: SV_Position0, + float2 v1: TEXCOORD0, + out float4 o0: SV_Target0) { + float4 r0, r1, r2, r3, r4, r5, r6; uint4 bitmask, uiDest; float4 fDest; @@ -45,44 +38,44 @@ void main( r0.z = exp2(r0.z); r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; - r1.xyz = float3(1,0,0) * r1.xyz; + r1.xyz = float3(1, 0, 0) * r1.xyz; r0.z = cmp(3 < cb1[25].x); if (r0.z != 0) { - r2.xy = cmp(float2(0,0) != cb1[25].wz); + r2.xy = cmp(float2(0, 0) != cb1[25].wz); r0.z = (int)r2.y | (int)r2.x; r2.xy = r0.xy * r0.ww; r2.xy = r0.zz ? r2.xy : r0.xy; r0.z = cb1[25].y + cb1[0].z; r2.z = cb1[25].y + cb1[25].y; - r3.xyzw = cb1[25].yyyy * float4(3,3,4,4); + r3.xyzw = cb1[25].yyyy * float4(3, 3, 4, 4); r4.xy = -r2.xy * r0.zz + v1.xy; r4.xyz = t0.SampleLevel(s0_s, r4.xy, 0).xyz; - r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; + r4.xyz = r4.xyz * float3(1, 0, 0) + r1.xyz; r0.z = r0.z + r0.z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; + r4.xyz = r5.xyz * float3(1, 0, 0) + r4.xyz; r5.xy = -r2.xy * cb1[25].yy + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; + r4.xyz = r5.xyz * float3(0, 1, 0) + r4.xyz; r0.z = cb1[25].y * 2 + cb1[0].z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r3.xyzw = cb1[0].zzzz * float4(2,2,2,2) + r3.xyzw; + r4.xyz = r5.xyz * float3(0, 1, 0) + r4.xyz; + r3.xyzw = cb1[0].zzzz * float4(2, 2, 2, 2) + r3.xyzw; r3.xyzw = -r2.xyxy * r3.xyzw + v1.xyxy; r5.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; + r4.xyz = r5.xyz * float3(0, 1, 0) + r4.xyz; r2.zw = -r2.xy * r2.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; - r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; + r4.xyz = r5.xyz * float3(0, 0, 1) + r4.xyz; r0.z = cb1[25].y * 3 + cb1[0].z; r2.xy = -r2.xy * r0.zz + v1.xy; r2.xyz = t0.SampleLevel(s0_s, r2.xy, 0).xyz; - r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; + r2.xyz = r2.xyz * float3(0, 0, 1) + r4.xyz; r3.xyz = t0.SampleLevel(s0_s, r3.zw, 0).xyz; - r2.xyz = r3.xyz * float3(0,0,1) + r2.xyz; - r2.xyz = float3(0.333333403,0.333333403,0.333333403) * r2.xyz; + r2.xyz = r3.xyz * float3(0, 0, 1) + r2.xyz; + r2.xyz = float3(0.333333403, 0.333333403, 0.333333403) * r2.xyz; } else { r0.z = cmp(0.000000 != cb1[25].w); r3.xy = r0.xy * r0.ww; @@ -90,22 +83,22 @@ void main( r0.z = cb1[25].y * 2 + cb1[0].z; r0.zw = -r0.xy * r0.zz + v1.xy; r3.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; - r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; + r1.xyz = r3.xyz * float3(0, 1, 0) + r1.xyz; r0.z = cb1[0].z + cb1[0].z; r0.z = cb1[25].y * 3 + r0.z; r0.xy = -r0.xy * r0.zz + v1.xy; r0.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; - r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; + r2.xyz = r0.xyz * float3(0, 0, 1) + r1.xyz; } r0.xyz = cb0[109].xxx * r2.zxy; r1.xyz = t1.SampleLevel(s0_s, v1.xy, 0).xyz; r0.w = -cb1[9].z + 1; r3.xyz = r1.zxy * r0.www; - r3.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r3.xyz); + r3.xyz = cmp(float3(0.300000012, 0.300000012, 0.300000012) < r3.xyz); r4.xyz = log2(r1.zxy); - r4.xyz = float3(0.330000013,0.330000013,0.330000013) * r4.xyz; + r4.xyz = float3(0.330000013, 0.330000013, 0.330000013) * r4.xyz; r4.xyz = exp2(r4.xyz); - r4.xyz = r4.xyz * float3(1.49380004,1.49380004,1.49380004) + float3(-0.699999988,-0.699999988,-0.699999988); + r4.xyz = r4.xyz * float3(1.49380004, 1.49380004, 1.49380004) + float3(-0.699999988, -0.699999988, -0.699999988); r0.w = max(r0.y, r0.z); r0.w = max(r0.w, r0.x); r5.xy = -cb1[10].yx + r0.ww; @@ -151,8 +144,8 @@ void main( r0.w = cb1[2].y * r0.w; r0.w = exp2(r0.w); float vignette_value = lerp(1.0, r0.w, VIGNETTE_STRENGTH); - r0.w = 1.0; // Disable original vignette, apply after tonemapping - r1.xyz = -cb1[4].zxy + float3(1,1,1); + r0.w = 1.0; // Disable original vignette, apply after tonemapping + r1.xyz = -cb1[4].zxy + float3(1, 1, 1); r1.xyz = r0.www * r1.xyz + cb1[4].zxy; r0.xyz = r1.xyz * r0.xyz; renodx::lut::Config lut_config = renodx::lut::config::Create( @@ -161,18 +154,27 @@ void main( 0.f, renodx::lut::config::type::ARRI_C1000_NO_CUT, renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); + cb1[7].xyz); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); @@ -191,4 +193,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl index ba736ddd30..b394b9866a 100644 --- a/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl @@ -198,14 +198,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl index 43e78dd8d6..343a52122c 100644 --- a/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl @@ -133,14 +133,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl index 39326ae460..11322fcf7a 100644 --- a/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl @@ -135,14 +135,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl index 5780c9dac7..b12a8268fd 100644 --- a/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl @@ -155,14 +155,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl index c27cd4488c..dbdfb88769 100644 --- a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl @@ -242,14 +242,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl index 5d67f0b0ed..b5ea88b1f6 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl @@ -88,14 +88,24 @@ void main( ); float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl index 4919319acf..3c92d0a1e4 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl @@ -209,14 +209,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl index afa235123c..db271a9fa7 100644 --- a/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl @@ -148,14 +148,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl index 6580e9fb6b..261f12ec82 100644 --- a/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl @@ -164,14 +164,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl index 765451136d..a08bc5316e 100644 --- a/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl @@ -213,14 +213,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl index a9d0334c45..3e74f9445f 100644 --- a/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl @@ -72,14 +72,24 @@ void main( ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl index 6ac49b3705..19e3711c90 100644 --- a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl @@ -167,14 +167,24 @@ void main( ); float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl index 512b460340..8de46c790b 100644 --- a/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl @@ -106,15 +106,25 @@ void main( cb1[7].xyz ); float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - + + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); diff --git a/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl index e47da5fb86..c5919dd023 100644 --- a/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl @@ -105,14 +105,24 @@ void main( ); float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); + float y = renodx::color::y::from::BT709(graded); + float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); [branch] if (shader_injection.tone_map_type == 0.f) { - o0.xyz = renodx::tonemap::ExponentialRollOff(max(0, graded), 0.18f, 1.f); + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = 0.f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = 0.7f; + cg_config.highlight_saturation = 0.f; + o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); + o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); + o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { + float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); From 04c568bff67df23dd2aab5317cf7679fcceb4a83 Mon Sep 17 00:00:00 2001 From: spiwar <92001312+spiwar@users.noreply.github.com> Date: Wed, 28 Jan 2026 00:45:07 -0700 Subject: [PATCH 04/40] feat(endfield): adjust white clip for sdr & hdr --- .../endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl | 8 ++++---- .../endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl | 8 ++++---- 28 files changed, 112 insertions(+), 112 deletions(-) diff --git a/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl index d2504860f1..cb4f105ff0 100644 --- a/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl @@ -211,13 +211,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -225,7 +225,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl index b6e2946179..fcc6984b07 100644 --- a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl @@ -238,13 +238,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -252,7 +252,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl index 77bf8b12a6..456684e8e1 100644 --- a/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl @@ -178,13 +178,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -192,7 +192,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl index 4ae06b437b..c8a03191fa 100644 --- a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl @@ -248,13 +248,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -262,7 +262,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl index de170b4167..69b6c57dcc 100644 --- a/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl @@ -193,13 +193,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -207,7 +207,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl index f902211f8a..0fd7d6f091 100644 --- a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl @@ -282,13 +282,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -296,7 +296,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl index 97cfc587dd..ba1649e85e 100644 --- a/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl @@ -190,13 +190,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -204,7 +204,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl index 1f771a6c5e..62a0d96c47 100644 --- a/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl @@ -220,13 +220,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -234,7 +234,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl index 59513e699f..1d01934cfa 100644 --- a/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl @@ -195,13 +195,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -209,7 +209,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl index 91b5daad70..e9b960d8a6 100644 --- a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl @@ -303,13 +303,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -317,7 +317,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl index 0e1d95b218..8f8bc3ccfb 100644 --- a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl @@ -180,13 +180,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -194,7 +194,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl index f845f7415d..541c0165db 100644 --- a/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl @@ -236,13 +236,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -250,7 +250,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl index 7b46273db7..7f8a91f1d1 100644 --- a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl @@ -256,13 +256,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -270,7 +270,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl index 387f0e0081..db6069ffa5 100644 --- a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl @@ -164,13 +164,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -178,7 +178,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl index b394b9866a..33404169f5 100644 --- a/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl @@ -205,13 +205,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -219,7 +219,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl index 343a52122c..4f1d353c57 100644 --- a/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl @@ -140,13 +140,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -154,7 +154,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl index 11322fcf7a..85ae862dab 100644 --- a/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl @@ -142,13 +142,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -156,7 +156,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl index b12a8268fd..470836b4b7 100644 --- a/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl @@ -162,13 +162,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -176,7 +176,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl index dbdfb88769..b5d67478ad 100644 --- a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl @@ -249,13 +249,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -263,7 +263,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl index b5ea88b1f6..ae3724137b 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl @@ -95,13 +95,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -109,7 +109,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl index 3c92d0a1e4..a5e402d315 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl @@ -216,13 +216,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -230,7 +230,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl index db271a9fa7..2f105ee846 100644 --- a/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl @@ -155,13 +155,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -169,7 +169,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl index 261f12ec82..1ea2d938d4 100644 --- a/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl @@ -171,13 +171,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -185,7 +185,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl index a08bc5316e..9e8ff513a0 100644 --- a/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl @@ -220,13 +220,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -234,7 +234,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl index 3e74f9445f..8138b25aca 100644 --- a/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl @@ -79,13 +79,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -93,7 +93,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl index 19e3711c90..bd8a9a6004 100644 --- a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl @@ -174,13 +174,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -188,7 +188,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl index 8de46c790b..b82b2ea78b 100644 --- a/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl @@ -114,13 +114,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -128,7 +128,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl index c5919dd023..69a5e03025 100644 --- a/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl @@ -112,13 +112,13 @@ void main( float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); UserGradingConfig cg_config; cg_config.saturation = 1.f; - cg_config.dechroma = 0.f; + cg_config.dechroma = .1f; cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = 0.7f; + cg_config.chrominance_emulation_strength = .7f; cg_config.highlight_saturation = 0.f; o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, 1.0f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } else { float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); @@ -126,7 +126,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = ApplyNeutwoByMaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( From 5341dfa04de6b5008b0a32a1f98773f76d1a1514 Mon Sep 17 00:00:00 2001 From: spiwar <92001312+spiwar@users.noreply.github.com> Date: Thu, 29 Jan 2026 00:53:38 -0700 Subject: [PATCH 05/40] fix(endfield): re-enable swapchain encoding option, only upgrade RGBA8_UNORM by Aspect Ratio, disable RGB10A2 upgrades. --- src/games/endfield/addon.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 568feb697f..7f107f0a02 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -737,7 +737,7 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { // return void }, .is_global = true, - .is_visible = []() { return false; }, + .is_visible = []() { return current_settings_mode >= 1; }, }; renodx::utils::settings::LoadSetting(renodx::utils::settings::global_name, setting); bool is_hdr10 = setting->GetValue() == 4; @@ -813,14 +813,17 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { //.aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), //.usage_include = reshade::api::resource_usage::render_target, }); + // Need aspect ratio upgrade or grass will be broken renodx::mods::swapchain::swap_chain_upgrade_targets.push_back({ .old_format = reshade::api::format::r8g8b8a8_unorm, .new_format = reshade::api::format::r16g16b16a16_float, - //.ignore_size = false, + .ignore_size = false, //.use_resource_view_cloning = true, - //.aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), - //.usage_include = reshade::api::resource_usage::render_target, + .aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), + .aspect_ratio_tolerance = 0.02f, + .usage_include = reshade::api::resource_usage::render_target, }); + /* not sure if even needed so skipped renodx::mods::swapchain::swap_chain_upgrade_targets.push_back({ .old_format = reshade::api::format::r10g10b10a2_unorm, .new_format = reshade::api::format::r16g16b16a16_float, @@ -829,7 +832,7 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { //.aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), //.usage_include = reshade::api::resource_usage::render_target, }); - + */ const uint32_t target_crcs[] = { 0x37837806u, From 9237ed8f7c9ecbee1b60d5f7745c3c9995f6f453 Mon Sep 17 00:00:00 2001 From: Arnas Golubeckas <139492523+SGTForgery@users.noreply.github.com> Date: Thu, 29 Jan 2026 21:26:09 +0000 Subject: [PATCH 06/40] feat(endfield): Added alt fog blend mode with hue preservation, Improved cloud shadows, Added chromatic aberration slider --- src/games/endfield/addon.cpp | 50 +- .../endfield/deferred-lighting/0x1E8A471E.cso | Bin 0 -> 47548 bytes .../deferred-lighting/0x1E8A471E.ps_5_0.asm | 1581 ++++++++++++++++ .../0x1E8A471E.ps_5_0_original_backup.asm | 1516 +++++++++++++++ .../endfield/deferred-lighting/0x37837806.cso | Bin 0 -> 27444 bytes .../deferred-lighting/0x37837806.ps_5_0.asm | 949 ++++++++++ .../0x37837806.ps_5_0_original_backup.asm | 884 +++++++++ .../endfield/deferred-lighting/0xD3FA93FC.cso | Bin 0 -> 49064 bytes .../deferred-lighting/0xD3FA93FC.ps_5_0.asm | 1638 +++++++++++++++++ .../0xD3FA93FC.ps_5_0_original_backup.asm | 1573 ++++++++++++++++ .../endfield/deferred-lighting/0xD88CD7C9.cso | Bin 0 -> 26660 bytes .../deferred-lighting/0xD88CD7C9.ps_5_0.asm | 918 +++++++++ .../0xD88CD7C9.ps_5_0_original_backup.asm | 853 +++++++++ .../deferred-lighting/fog_blend_test.asm | 50 + ...l => cloud-shadows_0x61FA72DD.ps_5_0.hlsl} | 10 +- src/games/endfield/shared.h | 4 + .../uberpost/uberpost_0x039C28DA.ps_5_0.hlsl | 17 +- .../uberpost/uberpost_0x09270FDA.ps_5_0.hlsl | 17 +- .../uberpost/uberpost_0x10076711.ps_5_0.hlsl | 17 +- .../uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl | 15 +- .../uberpost/uberpost_0x57737D9F.ps_5_0.hlsl | 17 +- .../uberpost/uberpost_0x6166487A.ps_5_0.hlsl | 17 +- .../uberpost/uberpost_0x61908D50.ps_5_0.hlsl | 25 +- .../uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl | 17 +- .../uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl | 17 +- .../uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl | 17 +- 26 files changed, 10101 insertions(+), 101 deletions(-) create mode 100644 src/games/endfield/deferred-lighting/0x1E8A471E.cso create mode 100644 src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0x37837806.cso create mode 100644 src/games/endfield/deferred-lighting/0x37837806.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x37837806.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0xD3FA93FC.cso create mode 100644 src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0xD88CD7C9.cso create mode 100644 src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/fog_blend_test.asm rename src/games/endfield/shadows/{0x61FA72DD.ps_5_0.hlsl => cloud-shadows_0x61FA72DD.ps_5_0.hlsl} (98%) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 7f107f0a02..8cccde5733 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -440,6 +440,17 @@ renodx::utils::settings::Settings settings = { .max = 100.f, .parse = [](float value) { return value * 0.01f; }, }, + new renodx::utils::settings::Setting{ + .key = "ChromaticAberrationStrength", + .binding = &shader_injection.chromatic_aberration_strength, + .default_value = 50.f, + .label = "Chromatic Aberration", + .section = "Effects", + .tooltip = "Controls the intensity of chromatic aberration effect.", + .min = 0.f, + .max = 100.f, + .parse = [](float value) { return value * 0.01f; }, + }, new renodx::utils::settings::Setting{ .key = "BloomStrength", .binding = &shader_injection.bloom_strength, @@ -505,6 +516,16 @@ renodx::utils::settings::Settings settings = { .labels = {"Off", "On"}, .is_visible = []() { return current_settings_mode >= 1; }, }, + new renodx::utils::settings::Setting{ + .key = "FogModification", + .binding = &shader_injection.fog_modification, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 1.f, + .label = "Hue-Preserving Fog", + .section = "Rendering Improvements", + .tooltip = "Toggles alternative hue-preserving fog", + .labels = {"Original", "Alt"}, + }, new renodx::utils::settings::Setting{ .key = "SwapChainCustomColorSpace", .binding = &shader_injection.swap_chain_custom_color_space, @@ -806,12 +827,13 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { renodx::mods::swapchain::swap_chain_upgrade_targets.push_back({ - .old_format = reshade::api::format::r8g8b8a8_typeless, - .new_format = reshade::api::format::r16g16b16a16_float, - //.ignore_size = false, - //.use_resource_view_cloning = true, - //.aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), - //.usage_include = reshade::api::resource_usage::render_target, + .old_format = reshade::api::format::r8g8b8a8_typeless, + .new_format = reshade::api::format::r16g16b16a16_float, + .ignore_size = false, + //.use_resource_view_cloning = true, + .aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), + .aspect_ratio_tolerance = 0.02f, + .usage_include = reshade::api::resource_usage::render_target, }); // Need aspect ratio upgrade or grass will be broken renodx::mods::swapchain::swap_chain_upgrade_targets.push_back({ @@ -823,21 +845,22 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { .aspect_ratio_tolerance = 0.02f, .usage_include = reshade::api::resource_usage::render_target, }); - /* not sure if even needed so skipped + /* renodx::mods::swapchain::swap_chain_upgrade_targets.push_back({ .old_format = reshade::api::format::r10g10b10a2_unorm, .new_format = reshade::api::format::r16g16b16a16_float, - //.ignore_size = false, + .ignore_size = false, //.use_resource_view_cloning = true, - //.aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), - //.usage_include = reshade::api::resource_usage::render_target, + .aspect_ratio = static_cast(renodx::mods::swapchain::SwapChainUpgradeTarget::BACK_BUFFER), + .aspect_ratio_tolerance = 0.02f, + .usage_include = reshade::api::resource_usage::render_target, }); */ const uint32_t target_crcs[] = { - 0x37837806u, 0xD3FA93FCu, - + }; + /* 0x00C16AFBu, 0x039C28DAu, @@ -868,11 +891,8 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { 0xE0058043u, 0xF8FA587Fu, */ - - }; for (uint32_t crc : target_crcs) { - // Ensure an entry exists for the shader hash even if we don't have compiled HLSL auto it = custom_shaders.find(crc); if (it == custom_shaders.end()) { diff --git a/src/games/endfield/deferred-lighting/0x1E8A471E.cso b/src/games/endfield/deferred-lighting/0x1E8A471E.cso new file mode 100644 index 0000000000000000000000000000000000000000..e44e7c989a18d506fa4a2db2a04e8be8dd82be3d GIT binary patch literal 47548 zcmcJYeUM&Pec$iiwO7(gw&leLv(WG$Gi{?J#ag+Rkg@h^ZEp;8YLCGR&L4$(g4?u| z7eOJVrCu#W1Edf)v~EpO0w#!#-D#(8XGmXyY_;)ZGNePC#PnrartZ{b=rq$&W-{#z zg?>N3d%oxSJ$LUTOG$fX?sM)vzxS8(JLkTvbm!YQ?%4mIANb$@@H@ZrU!ULH_1}Kt z`7b}T&@|1z{AW$GsQ!m_d|byb>v+>!fAmk^tG?B-TgNdSH1NTtU8j>f`_uSkJm5Nc z>#29#``!=ycGuhQxaXex?rffX^2vL|7dha;ccR0s^3{Oo-}Yxu|G9U4 zP(*LN`>wZtS4yGJ`k!c;zp%Sm_>(s_&7mONS~vZ)zx*-mLzkx6I?$_D$9N8X6uFsMA*c}qUSI$5Ufw=m7ya=|=69{H3;uP3YdjG6 z1%CbDdS!6^vcdHYzAo}#KDa(GxPHapTB#oLe`3;HwYI;H2QheXf3wIn=kHRSFHU;c zpI3^$PGhfbnyc5Eer&VQ-Kw#TGPckON$p3P=93qiX6ugoU*4P+41Sx-h3>EKZ_sau zL(DS{Ix@R>t+xB1 zaLKdd8b7HXoqKz>)(Y{Mt?zJKNq11@F|t{;g*OM|Ruk zr?y_lqs4CXq;EU@3~VT4vbnD#V5qL{%KAY2qI^#;zI*N~`v3lQeO#6ndKf+WC`#4V z&9?W6`#TkD`$2vRA0hAbfT!_Km3)COzM%8f70whOR- zxawMdYpb!3SWpiJu~6(Aj%e1wc=TC^yPM|I7vxm(*Y?5>yhlIK+wB_YJP^-47YmMj z8##o}U8`TIbJ@0R9FO0q@pC0Uo7eU-#_(2!=a?B!L%S=#LTkRS5>Rz0ViR^Mmh|wT z#|O5JoM!CM)eL<~QRTgK^|DPb>?6F-A@o*}>oQWC#Q2 z7Wo~%#2;I2(}%zQLube7X4SI~sdU zbJZd=z~9_7pSe(SdQD@jdDL+Hu&J8N8bVHUZ65E|`HEP}PcdhqX*>N4>X2v`jubty zf3@%@SD;Y~f502v>CyK$zW%3v<=A8#_SnBT%X|&niKlt?c5a6|M z=%cO|oE>#tao+b}(UCagC+Z;hZKt1T({%$IiJk2ruGUMZH5SsR%0f5r(ATu+iJ$0^ zY5m~=4*2tUYzvNl%j)s1`J2aZU1jf**Hz6kTF5DOgs$+i-^O$`fBF*BQC-J)EYH!^ zc@IDG9(|Z+=xi8!ttHVL2Cnp5W`2fk1wYY;J zX}-*N^38fI7F^~m^Bov6u@#)&54{}+HO3y1coRGK*a#i_Md(aV4-DOhFs@C9oK@k# z+r8=Xm~~;k$3GqpFjEQPkm8*`iv3mT&bS9mja{nW$1RBaNt zc~*Gjg!M&t{P|zL`{i}Uu$3|A5d5nvKctZNO)!%fGw*-#+u{zw>AA0LQTa zFZ=kuPrUlhje9>YoId|74EhgSH{YLHNTsA~qqK;tCB7=#KY23?> zy{E;2_!(dN2M-7{Kgro+eKxlzfm8SgEj*}^@Qc`QPb@#`ap4!T*lU=VbzzSMKm03M z(_Biq4`1(xa$FWV0h+C2cb5H7hEc<;lVgLe@DgmdVIDj6(^EZU&%O#D*nCd+8P?ad zm(u%6b@RRvzoIwIa_Eb{_f-8f#y$XCd}ti&G^EeI1m-vleVJiHUuK^BC(W*diX3Z_ zWz*v$V2-!P=+VLZAn!w%Q$>e$@(DV}Q=q6zrQX#%6<*Cv?8x}$WgUPa+j9gR)OPGY zz%wm&Z;LN}&HTa1FxLn7h7lLj8K$Awz1RR{c_DYwSQ?5DmZPzr1_uX;34-G|(yg%D0F|{9Z9Fo6g<^r^y@9f8k0r7wr z&H3(LdQ{l5aJ;61ODxtj2IWJgJ`$^?f~T>_d;DxX*2RJ!Fyp>OHEM{1ULJe&>N1B4 zy~NbL;%XT~zut-|%sS(bSA6w1k73V>u&|@|QL}EGF+XJ3Y0)t+@E9Y0 z(jD!&A0-!jKU#b-nhV(nmd#uu*AE4^>D~*L9`k&|ulO$H%0D^BGc5ZRT>0x7=n8(! zAI`~J=5gEUXE2Y5Z=#uzDdZWL^&qCwBi1~R(J!U7SLTIziC za}GU`eag8l-*CUhe91N-GvmzDSNo4}JG>*$>I zS_#Ox*Tc5f$**}bSL7P`X}95R2Z!0la~JVgeo#6@Z7a`k+pgl>t}~A2qu@WIJ&`ORe2TbDCcDiJ#Fu-4b4eCXROcv4HMsMRzypz#V>rU)8>91Jkx_ehvr~B zg9q=V_?Tw7&}z7@@x^E7O%DzG%5CA|f71;8jvVwV@&XroOlMf33wsQsM!;Lo_-kD@ zzUBQu($V<%koF!OsulIQkZN-Hf?TFPFM^bGF}-{FF|W~qulf=^&@1yJ&+s2HM7O*r z(@@nxyn`OR;?tNT*j%1TRsO)o_ALc3e1ooBgPZp)=w~}JPTsd<9O(1DWlWbQ?OT|? zw*RH}Ed@8`d@DKLv(Sr8#G>q5u6wZfa7oV+@KM|8Cz{v5Jmxj9nOV>9CF_s(1-vsD zThEv$r-fVAp71-mdhgSAx)`h>MF9Y*STZs=L0K)u?^w9Ok>0bJE=AB zy+P+~r=LMHZ*n*DMjp2HV@-3jP7g}QgM}~S-k*ZEsQcj60@K{7c+4vr`hfS9rumun zre^D7kG--nFVk7p())TE_+Srqcz%xY$vD&eSA8#hR8wa30jJ7LFwcF%elW?mTy*69 zg#F6%^|sT`pxLjitH{=;t5{f(x%;iAS4Xsqp`7E%xE!I<=#ImlmlwOy|RaD2g>7Qem3!TAU;bOpyU zxh7}yzB%d^xT^b0;J^bN(PvWh4tU~;-G280OfBjt^Mbij-W#1gscZ8jrtlPP%*j{i zyzQFi``@1)8fwm-*{O$VZWO%jrufj(4xF9RU?Xz07KR+&3y$$@yI4Df-S_G$4etWS zc(&b6nvco#%xmnyc6yJYFJtr`Lm$TI8GA~!Ay0cI`dc-2pT>Bd}cY^1@^2#29(W81X^A`BJ+wUvR)jH}KF69^fO(^4)`@ z{llJv1*W*fUZmtwoFhXxyG<`0VjLdmO~0mlWAo6ybS6jPwb1ED@1EW3yz&!|sQK{0 zzQXUC#BU}?4+&?C=e3imjpk$hvOM%B=aJLv)9*o(eE~BM$y#u%G7bCA!&2FL+BQ88 zto9@SfaC}-YBTia3qH?Abpu&p*7s2HgP)f|=RBb99T%KAq580Z90|t2OKmrDr_5!N0>=1Ml9(r`K~`SySxc4~_PG)%L81Ksok%@iqAl4s^Id}(x;x8!&w3ma{^{Ze))ipJ*J;#s=DEf~Myc&J z7UUdxIFwsxqDEM5*4c8YE64?gTn-__%Y2go@E53=I=Wxt7U_*Sz(|(~hJ}~g<&7Zi! zpLu6FsxOh7z`%E(^>R#2haA%ZgU&tj)JA!Nb8OPrZR(Qcm3haz&Pr$f=#i%!h-bsu z54O*I#&FEL@AVE-c}k5ze%tA1=3ZlK9bRF3(Q`!@*=P9YsB~Eq9`l3eCgcInMBqse z4YifJ$9c{{_=8{ciai_i6})4b8)Gz{&zX-I{hi2@b)@kxa{HuwZNj(@?o-*)J4 zJ1*rP@mvr*>Xzpae1HFEr*#WH#LKyf9?nVkM=s$bq1SaN+h-rXe!TuyzuM#r`4lR6U#7lfjoghvxE2>KS+={;_V% zCFc-h(|X&_#d$V4zSLyXJGWjddCYP02cE21o^Q^@Y~O0Z&HJ3!XnSIPe2-}w^J5R? z{K0oT6OOg`W0NI%=~3s*T3N%u+br-&f-gyjpjAx38N)xA@Tof)U!ch2;9q!H&P|E# z+DZQoC-5Yb9$rP}HPp2X(>J15A;*5)+?u_XPhvmn7#I(K;~(W)?ElLAiacYE>DhSr zXrgmy@GZE+Z60p+C%7Azz|Fo=Ev`AHyovi6WUQw1vAnYQqs!cOFqQQ8E4GumyseX#zte+a}X^?-9bYcx6H>|Jy zBfTn2@e3To6q~rWgzl_h#PzJ=Vm!^yJ?87NLyvr;@pD*Y%cjc1II=flM?BX`?6AS` zLz2Zcy3(uFHO^zbf0}jG$*O;bJ^93;6M7C+_ch>uUu|`uA2u?-ki+xUm>(tg7{f;3 z*kb<22RyJbN(unF6Q{mSl;j8XZRg0IfXoQMF(KMhQI8JJ#N_8DR;pcx%Yt= za}Yf2cMlKqmfriwKl4IoVoE<2CuHMO<0E?v@2F&(@1Z0cI_#kb$NGVj^|HR;IEK&> zOM3eQK3a1k&Jm-6gAMl<8R+3X$qQIxhV9UW4XH1D#_*%|2E5>lZ>(jH zNLJfP==2#%TqrhISKW$^lDl^(H}heSLrjsQ7XH>c)hv~`x1BCRPTaqRFO(m#Ahq@WJR*7b2{-6e|l0qezWcDg|m<5*$&Ow5_@db zdDv{fX((*Z`Pz0Gon!k=f?P_j^@E@N+jcvBbgOcBL%LuG>jiunqaJ$<9>ycq;7t;q z$MBn4$`-ZEb#3w_k0 z4o-A}4Enay&m0*OL5#=u$JDq-7N&M1+kR(0U6lUVw5h*ojGFcFDb4fydR@UwwIT49 z65cua3clI5#KmKem-AEd+eCPlOWelfZWbRI51KK&4;5b-4|!vF&ldd@hsY`7x+Ht? z?~5gtKRVd^vbHlX@D1i@BpQGQYvbJw39?YM4GRcd}u>~K&*M79G z#`qGK%jLUzg?uNMsV~02Tz&C9`FuHk!0s`=%EOv#*yMex*fwtzjGA<#&Z!sf*+&6e z5sVy%4j8_s&oJyU4BQ3L9V~RfVyuh%<%jP{umz22J$e}4;AEa2LmseWiSBqA180~& z8wEz3FV}CDWnJOVTu`g`f*vb6pVwT9dmwzteH8UzBE#VoV}(b-Uq7ljjZc8tCc{jV zaggVlFpbyN`ik63eKjxh5blECNgt35JsYaJ6IZP*5#RD&XL^5HbkcLMXDOk=RMuJedFdI@L8Gk)@hd&oug{w@i;q5iRH(Xg@i={GdKiLPlcMLsN{1dr1q;u^8H|w`t^vki;nCkb`zu6~- zIaYqZpK;6|ndYB$gh$b1CeI3fombdn{T;KRvdflVeE?!S_5qA~g;3SSxvIccp{4T(>5EH)`-~;oEk)sDJyzx$lX# zw3XoK+uegbeaJ7o=6(B|{fHgA#L9LJVbo2-oOj6Z7(F%Ce!vE7<=L(M0UdrY%)RO` zt@_VCq6g>Li2u%|Z+Q-hC%W7+g4cEe4BGs7`0sD%ciO@`0p_K1cNkN{hI(TIu!xD? zGcLw;U$d?+a-J%Dd6o(PP2K+&+jkiT5AZj2uL_R*Qehs0F0H4#P1|-N7&O*a>7@0w ziSNPTy{0|iN|BS-RpLu5Jty32XfOE4WWK>e&%Mt+quzF!7TkkV+^CDtjmgn)yaNk< zs!{L*x0k!Mp5dzrZXJ{hQJ)Ka=v8!%@9EH^=vw1pJqzB<_jHoc<4^n0A0F%@?6aJ^ z=*vFHFzZI#PKye7jcM6`Xei$G5PR_o8RdOX)e}CfCqub~Ch`Wk)ka~Wr{%KuA&`U(_?C&>#A?)6ewTAn~iR$+^l~ z_sawPN{3u*e6@08qu4am75%w4GaUV6tc&qxBG|UZSPwExm+?KFVb}xCVcE?XYm@V0 zY+sGcAuT+h^FEVv{Ectidwm0z@i#<8jCl@+Kiq?F82aZt0MC4lFW<&q5SaO!Zdvq< zXB>|eTg!K|{da2QG5Bq#pZbiIxwsX7BMa>4KpsAv5CHbiXUgYV3v;D_w&1KZ{vn016__K$ci z2p;O(K;om#AQ;G0gh;Ot3VFX~|bgM8M>W0OAq88_!>#Vaw$ zc;=nw68c8IbYh<7+gJ=u&$no{2YKYyYg0T{XL!m1Nf+d0otTT}%YMQ7@GY8UWPYt= zIe+jS>rJd<>031OTT}f%EqUPi8?lMb4QGuE+OkHD;q$!H_}u4bd_d0?d%SineY*eN z>!w6^?WEatpYbFM`@MIS%xi|Qb3fC6XJosV&dgqmzP>+)m+{DN{G)ZD?wy=x%&|*- zixxgAIhk=4*IEPM%eq_G39Uc=x_d(dw;Rjx|#;u zOX&c*v4O47F z7Gr0{3!m{V8n!Z~`5F3V+OcoZ@N33F?=zyu<~8xi`Wg?L6yu=NX{-UjJl6YX_FJ?J z^S5Z`4gS1u(Tww`YE0yXY&0+1h#x(6Ip3nq*r-~5P_{7N95eXg#~eHPVp=1#nt=aO zHA3_=-=ZOhJRx4lIG}%bf&0#R-=cxLT4R8_I5O2+?*yCCrx?&T$Bj38q zuDEXiKXO<7m~O6p;K9SZ(9!awcifW$gBSX`*S&VVS96?@jef@ezVOHJkWIY7Ll%9u zhwH2#I9V^_W*l_D57-j%P>*d|b84L7W53*6WS|H5rq4LTZ_%JdHu(5~wRA1tL+U<} zz1xy}!*i<%4k`Go|KzOdLd!SEao@?&`uD>-q zsdL+cj>a>*OK|o%L94um*BJgr!uQ^Ucg*0cRXsdrId=$XJ$MfHT#0WdQ9{OIFe3|kI9vbO;-AgU6377jZ*19R422#64 zcozyD-=WOIlU~7(_l>MK=+Jf=9QhW_{LWq5>xd3I4_!{_->QOEt;#j5?HG3JbHj4= z94EdZfmhq@lnWld3BM^m^gZ6rZ_#SZ^lxGsPv|toAdW`ytp2qQd`pmhIcB?g^9?oe zL0|rj;^?K9Z8x6trtO3nt+$&~%Z2t*a>1+oWD_#lPCsf{$6L#NE_N_?;LF&y&KYw( zH6F1B58oTlWB5%iaus=eg9eNqUgm)e_<9Ukj2%)>t{D#*;K9SP7z59;PM34O1%n4Y zIDS{a81*IeP%fjF+RSqaaN15kbG{P;en7Q@UTZ?F36=qG%jMpp=oT`7F-G5Z`k5mm zW9~KmNTOzVI32YoFtjO~rwE!x}a8d6r3DT#iiq2j9!Fg}7WUU-(@K-^=w8zQ0_) z_?~>e96#XuF}|-=uGz2nig>e6rM*!wYTf~zQ&-%xj{>$)@bLvO=;<>Idl;h+-YK`y ziF`$#_RaAvn)ANbVe4Udf-~d^FT?VDK^O7|dBglcUw9Gc%k`UOzzdh9WUc!_bo#{(r@9`vYtXy^oj41E(ODX=*zu3 zJl(@X{B}R3G2Y>}oqh(5`*#gRp6I;U)cOZ5`NFmJ(fSp<^<0X4sCsgLXqh?| z-aUL&H$q3gI{}{_`w$MlHPuCOmFL=~E1Q^ck9>h6Bt+(9l8?V(xS%aF>-C6fY^c@?iI0h zS$&D+GtM#PcDyqH2cGn=S1Dlrz*D^983yN`A7#Ai0S$Z-O~5ofsvGnfhQ5qhr&}le zza53XO9dudt|Kn^pSX})ZPzs4`P*&hLqkp5>F@Mze&TCBG!%N9_MGM{4Ic0k-+hK< zz8`x3V^90Y_&Se0lJ%f(yQcZz=IhpdXy^|lbM5|{J0I|{jyfHcx%JhX*L{Fbd~D0m zPTe2Pg{{c-%r9v1`6=CJ5f6`HqsKIdm?Pmc<~2Gls&6~}G+QU8M-St#T3APvn^7#WNm88AHdm6aV*r^7cpWI)9rkqp2oG zPIEy{)9{UT@EG~F{kw177{ixtF?XQN_`2+zr`Zo#fBpY5CwxGUkMNc7<2wN~I(ufK zU-CQNFUCC<*Z9S-=NM4kBrZXt`>*2jz-LTxt$M09#9U=ubE=-}a@6*w`S!m$Hkk*D zf4?=JjpAqdpz`bOzc*-CN*p9F&Ee*D@@?pE9&C5F>W-rm!~w7emW_(WX5y<6Y)Z7lTv586|rFdu06u8%puI!R4%{^+#& zR(1z3{OG(vXYw)8tgmiOgwgAae!y9SH6HYa6&dxr5a%|$6vyC+U(wHNwPElx4mD`I z;CT$*Pd@R)iEQ&l;jD=6S^HM+L*PApA0nM+)^}(eU-*|6YX^HN^J}{vqW4V^Pp-0j z;sidijefrT$f1neb|P%H^y|ZGL-Vu%KI&QpEo+No%r)x{e&QT^fZ;p*V*HpRy2s;M zEo{W%oi;w9HK}hy8^OoM=wHIdjN5kbvwifJwh>zPF}9Iw+sOIyz(&Tr-f|zywPGE< zCdTMY-*)=B0zHt=UeGaPT{%HL8S=#!;2ajrbhG;O_1t)C zgZ!XIww-$xv|w#;e%&jDy&s@6l3?QWsb5ViY&PRy_EbfI>sS`R)kjDEiSs6QFE z?L>G5^#@vNjN{Mst)T zQv6?PR^4X|_S}&pBJaO+$V3(X^ee=F}kUCqBU=)gaC3s5j`?cKR96kJT&l zqL-~fpLNSLk{LCo;9k!>3i|SYc_ENm*mn9E$Zk7^{Jx96-=o9B^6Yo6sT&y!aORpLiOBi{CD5~zxUX?*NXhMLprUmQ=H)g_DmOxj}9o$(e?RKe}6~k z_!1lNA-PW9`=q<51u&zacUww-D+U>-}M^$KX;A+phmRRQ?v#hjgv?P`tBS6E6AkqMqMF z1AltI&(mpLhsJbNjH)gCpRVZW{w?Jm6ds4fmqxwA$I~3$s{iLLV;Rpirp$-tW~H@! z9D63;gB&^X+0H)X|Dr)hU_X%X;7P554>FYR@ht>+e0#%K+v%ro>@#Aofv)z?qnf+m zGiJRkOMmOSa6pIn?!x!@AlFQ;uhdU#iX(Dp_6g7Uxwl%>!810W3%5S2Hg4~;hwmu9 zi~pO=tHjIN6Y@z zZ#~!nd!fMC8vr|1_VB>$7wGUUI-h*UH%`2=#70BaXE`Q*m*Dw|-4}}-#^B}n!lU>i z^6uWEFS^)&^w{FO115R#Jx=V2#MATepTFmk6Zug6t$TlDXMEL`x_6}B2dwA`48M_! ze^hf8*x3Xlj*+M3p5)mAV?N+FVAdb|&>5SFo9DmBE|f98ugSSDlHkEu%Kfk#AKJfd z*EHE?&g~y$Q9oIS+Ai?cUv=ms=XFGne;jAW#(eDq^u#|Qv*?55y|x8oKEIS+vae~oalPQ7c+~sd>@Q%u1sl@~ z81L)n>BT$Y5xwF*h4|%s()_Kp#xVR%uD#>C+voA~gOUeqSbKr%h}tW>$aCVr9uwbW z9xrGN*eT@@K5aYwsF{cLz&3ma4}1d;!-%6{*qHd&eI<1GEyFevoxgKHZ}xi}(rcQ# zCCAyLFN%*^g~8iC0&q*Q8GEu%fem?L`#he&Ob^e4qP`rS_+lPUV3{XA7~?6lcwVbM zeAYBu=lyQ_{Tj24%w6pFw-fyTL9bUGA|}9=OTVVmG&b|R@^g9jdnY9O+K)2qdMad4$;?3)<(vrW!{ofIwp;2hcXYVr3{&RhEd z8V>xhEnITaG~^iVNP$6%kKBXH{>QQmGkx~es_2k|@9AmsN1W?hw;g`g`cR*B81Im1 zY46eTmGuAjrFaBC>&zrX8J0x9*2{~|D z=gxETcd6*`UY$$(Wy@wBfY)|S^FN+_;Kb1zj;??78=t*hL$O|N3!85+dfoaxEMtqa zV^v<;2{35hYoObZ4>7m?;KAGV3pO{4l=gaa7##0gyP zKYad)A~*B+!9weKD_)iM#|q5(>K{GBXvkyH8U+2t8sBTulHuh_Dx5om}HeTLzG#^3?2{mD6N zA93Uy+x2f}-LCl=_GY=lo9dNxXbTN=9AX2{xQ7cHifrl^*J{CseU9=u{@s)Co&MdJ zp{?k~+$gwxU+{9wZY(x_6Gd7>%{$$Ft*t+wZx>2N`PdU6$7NA)mAG9Qx9{3VwaQ2Cu`# z&j)ngcKR7K>JE5Ebx%h;tPl9Wd=2j-B`5JQISGuMq|Y#Nk}+ZfuGWd*9l22C@f;8s zG8k7L@QymZT{9jr^8SWA&iJOgv(yY=mPd|a3w(xh>jG|GiapuqT`Tg3)+N9ZMI{QsBqAq9t zwj13Y1CMF{v;$v0yUzK-IzXPZoqne8*5ab=qN~rkxDxH&A+7hw)Ht8BUr}v{{Wkoq zM_$A3*0amD?VnwqE_!$_^ZW>0o*$8y#GQtXLtM!W8*?0)lg^!0(V`nZVg4!~W8Y2e zG#2Z3j$_U{Xr{2HGcS?Wd2POBo^+P&`c~wG?D=$C{LMj~qvk2UiKPFY-FZgN*ax2P z_FIN6Nq6R&Vb}$o_qKTSoazLz0*7(oT!Y_=FJt~hu8rhT)@MUB@F7n0=noIp0@et4 zdT+|#SL=LXWdMVQHCps>kDTcYJ0O_%4e*ltrf0G;vhpU2ux7lY&%+y!DS7hr$*4T&fHgcTQ1LMfGx@Q@N~=; zb?*F7-QMjuXzw0A2cFj)!yPB<&YCj@W6e>nMjeCK*`in5>Ea6NSm+^Ide<&;!sp~N zHj&@pEOh!&8`iGiBOgRRr*_Ft^|{Wf_~pE$CLx2SITSUC^IqQ8I&(L{0a=%snl$Ds zp>|m|bChOZ>$K`+SdkkwX(;znH3|EvDKzqyYji&?nXWs=!METrPMy%)jC~n!kL#O5 zUG?>E2nUb9eWkruhwB3Snm511-}^x8cN5wNaMiq9N2YsDI+N4>JE3R)N?+T?=!8~t zocNv80Bxb;xBq4iAH-ZyPwa>OK_}1o>_cdZf1>VVAGEA5^jzCFhS4t-yYP+LOn#vs zI#|E4{2&*=p=P2x=UFf6yJHIsUFdnY$GYP_(;J5#dxtRA8siLk+cwry
  • N<}rHi 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 Q4VdH8Tl>=B*{`qv0UufvWB>pF literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x37837806.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x37837806.ps_5_0.asm new file mode 100644 index 0000000000..7a5838d00e --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x37837806.ps_5_0.asm @@ -0,0 +1,949 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Thu Jan 29 17:17:27 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture2d (float,float,float,float) t19 +dcl_resource_texture2d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 25 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t20.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t21.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t22.xyzw +mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) +ftou r1.xz, r1.xxzx +ubfe r4.x, l(7), l(3), r1.x +utof r4.x, r4.x +round_ne r1.y, r1.y +ftou r1.y, r1.y +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r5.y, -r4.y, l(1.000000) +lt r4.y, r5.y, l(0.000000) +ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) +movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) +mul r4.zw, r4.zzzw, r6.xxxy +movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx +dp3 r2.x, r5.xyzx, r5.xyzx +rsq r2.x, r2.x +mul r5.xyz, r2.xxxx, r5.xyzx +and r2.x, r1.y, l(7) +utof r2.x, r2.x +mad r2.x, r2.x, l(0.107142866), l(0.500000) +utof r4.yz, r0.xxyx +mul r6.xy, v0.xyxx, cb0[82].zwzz +mad r6.zw, r6.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r7.xy, r4.yzyy, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r7.xy, r7.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r2.y, r7.xyxx, t1.yxzw, s0, l(0.000000) +mul r7.xyzw, -r6.wwww, cb0[25].xyzw +mad r7.xyzw, cb0[24].xyzw, r6.zzzz, r7.xyzw +mad r7.xyzw, cb0[26].xyzw, r2.yyyy, r7.xyzw +add r7.xyzw, r7.xyzw, cb0[27].xyzw +div r7.xyz, r7.xyzx, r7.wwww +mul r2.y, r7.y, cb0[1].z +mad r2.y, cb0[0].z, r7.x, r2.y +mad r2.y, cb0[2].z, r7.z, r2.y +add r2.y, r2.y, cb0[3].z +eq r4.w, l(0.000000), cb0[86].w +add r8.xyz, -r7.xyzx, cb0[44].xyzx +mov r9.x, cb0[0].z +mov r9.y, cb0[1].z +mov r9.z, cb0[2].z +movc r8.xyz, r4.wwww, r8.xyzx, r9.xyzx +dp3 r4.w, r8.xyzx, r8.xyzx +max r6.z, r4.w, l(9.999999939E-09) +rsq r6.z, r6.z +mul r10.xyz, r6.zzzz, r8.xyzx +mul r4.w, r4.w, r6.z +lt r6.w, l(0.000488281250), cb0[234].x +if_nz r6.w + sample_b_indexable(texture2d)(float,float,float,float) r6.w, v1.xyxx, t19.yzwx, s1, cb0[108].x +else + mov r6.w, l(1.000000) +endif +add r6.w, -r6.w, l(1.000000) +mad_sat r8.w, r2.z, l(0.300000), l(0.250000) +mul r8.w, r8.w, cb0[222].x +mul r8.w, r6.w, r8.w +mad r8.w, r8.w, l(-0.750000), l(1.000000) +mul r3.xyz, r3.xyzx, r8.wwww +min r8.w, r2.z, l(0.300000) +mul r6.w, r6.w, cb0[222].x +mul r6.w, r6.w, l(0.500000) +add r8.w, -r2.z, r8.w +mad r11.z, r6.w, r8.w, r2.z +mul r2.zw, r2.xxxw, l(0.000000, 0.000000, 0.080000, 3.000000) +dp3 r6.w, r5.xyzx, r10.xyzx +max r8.w, r6.w, l(0.000000) +mad r12.xyzw, r11.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r9.w, r12.x, r12.x +mul r10.w, r8.w, l(-9.280000) +exp r10.w, r10.w +min r9.w, r9.w, r10.w +mad r9.w, r9.w, r12.x, r12.y +mad r12.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r12.zwzz +ld_indexable(texture2d)(float,float,float,float) r12.z, r0.xyzz, t6.zwxy +lt r0.z, l(0.001000), r12.z +if_nz r0.z + bfi r0.z, l(3), l(2), r1.x, l(0) + mul r1.x, r1.w, l(3.000000) + ftou r1.x, r1.x + bfi r0.z, l(2), l(0), r1.x, r0.z + utof r0.z, r0.z + mul r1.x, r0.z, l(0.0322580636) + ubfe r1.y, l(7), l(3), r1.y + utof r1.y, r1.y + mul r1.y, r1.y, l(0.00787401572) + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r6.xyxx, t9.yzwx, s1, l(0.000000) + dp3 r9.w, -r10.xyzx, r5.xyzx + add r9.w, r9.w, r9.w + mad r13.xyz, r5.xyzx, -r9.wwww, -r10.xyzx + dp3 r9.w, -cb2[0].xyzx, r13.xyzx + mad r14.xyz, cb2[0].xyzx, r9.wwww, r13.xyzx + lt r9.w, r9.w, cb2[4].z + dp3 r10.w, r14.xyzx, r14.xyzx + max r10.w, r10.w, l(0.0000610351562) + rsq r10.w, r10.w + mul r14.xyz, r10.wwww, r14.xyzx + mul r14.xyz, r14.xyzx, cb2[4].yyyy + mad r14.xyz, -cb2[0].xyzx, cb2[4].zzzz, r14.xyzx + dp3 r10.w, r14.xyzx, r14.xyzx + rsq r10.w, r10.w + mul r14.xyz, r10.wwww, r14.xyzx + movc r13.xyz, r9.wwww, r14.xyzx, r13.xyzx + mad r8.xyz, r8.xyzx, r6.zzzz, r13.xyzx + dp3 r6.z, r8.xyzx, r8.xyzx + max r6.z, r6.z, l(0.0000610351562) + rsq r6.z, r6.z + mul r8.xyz, r6.zzzz, r8.xyzx + dp3 r6.z, r5.xyzx, r13.xyzx + mov_sat r11.x, r6.z + dp3_sat r9.w, r5.xyzx, r8.xyzx + dp3 r10.w, r10.xyzx, r13.xyzx + min r11.y, r8.w, l(1.000000) + mul r11.w, r11.z, r11.z + mul r11.w, r11.w, r11.w + mad r13.x, r9.w, r11.w, -r9.w + mad r9.w, r13.x, r9.w, l(1.000000) + dp3_sat r8.x, r10.xyzx, r8.xyzx + add r8.x, -r8.x, l(1.000000) + mul r8.y, r8.x, r8.x + mul r8.y, r8.y, r8.y + mul r8.z, r8.x, r8.y + add r13.x, -r11.z, l(1.000000) + mad r13.y, -r13.x, l(0.383026), l(-0.0761947036) + mad r13.y, r13.x, r13.y, l(1.049970) + mad r13.x, r13.x, r13.y, l(0.409255) + min r13.x, r13.x, l(0.999000) + add r13.y, -r13.x, l(1.000000) + mad r2.x, -r2.x, l(0.080000), l(1.000000) + mad r2.x, r2.x, l(0.0476190485), r2.z + mov_sat r13.z, -r10.w + mul r13.z, r13.z, r13.z + mad r13.z, r13.z, l(-0.640000), l(1.000000) + mul r13.z, r13.z, r13.z + mad r8.x, -r8.y, r8.x, l(1.000000) + mad r8.x, r2.z, r8.x, r8.z + mul r8.y, r9.w, r9.w + div r8.y, r11.w, r8.y + mad r14.xy, -r11.yxyy, r11.wwww, r11.yxyy + mad r14.xy, r14.xyxx, r11.yxyy, r11.wwww + sqrt r14.xy, r14.xyxx + mul r14.xy, r11.xyxx, r14.xyxx + add r8.z, r14.y, r14.x + add r8.z, r8.z, l(0.000100) + div r8.z, l(0.500000), r8.z + mul r8.y, r8.z, r8.y + mul r8.x, r8.y, r8.x + min r8.x, r8.x, l(2048.000000) + mad r14.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r8.y, r14.xyxx, t8.yxzw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r8.z, r14.zwzz, t8.yzxw, s1, l(0.000000) + mul r8.y, r8.z, r8.y + mul r8.y, r13.x, r8.y + div r8.y, r8.y, r13.y + mul r8.z, r2.x, r2.x + mul r8.y, r8.y, r8.z + mad r2.x, -r2.x, r13.y, l(1.000000) + div r2.x, r8.y, r2.x + add r2.x, r2.x, r8.x + add_sat r6.w, r6.w, l(0.200000) + mov_sat r8.x, r10.w + add r8.x, r8.x, l(0.500000) + min r8.x, r8.x, l(1.000000) + mul r8.y, r6.w, r8.x + add_sat r8.z, r10.w, l(1.000000) + mad r6.w, -r6.w, r8.x, l(1.000000) + mad r6.w, r8.z, r6.w, r8.y + mul r2.x, r2.x, r6.w + mul r2.x, r1.y, r2.x + mul r8.xyz, r1.yyyy, r3.xyzx + ubfe r6.w, l(7), l(3), r1.z + utof r6.w, r6.w + mul r6.w, r6.w, l(0.00787401572) + mul r2.x, r2.x, cb2[4].x + max r2.x, r2.x, l(0.000000) + min r2.x, r2.x, l(1000.000000) + mul r2.x, r11.x, r2.x + mad r8.xyz, r8.xyzx, r6.wwww, r2.xxxx + max r2.x, r3.y, r3.x + max r2.x, r3.z, r2.x + max r2.x, r2.x, l(0.010000) + div r13.xyw, r3.xyxz, r2.xxxx + mul r2.x, r4.x, l(0.00393700786) + mul r13.xyw, r2.xxxx, r13.xyxw + add_sat r2.x, -r6.z, l(0.500000) + ne r6.w, r13.z, l(0.360000) + div r9.w, l(0.360000), r13.z + movc r6.w, r6.w, r9.w, l(1.000000) + mul r2.x, r2.x, r6.w + mad_sat r0.z, r0.z, l(0.0322580636), r6.z + add r0.z, -r11.x, r0.z + mul r11.xyw, r0.zzzz, r3.xyxz + mad r11.xyw, r13.xyxw, r2.xxxx, r11.xyxw + mad r8.xyz, r11.xywx, r1.yyyy, r8.xyzx + mul r8.xyz, r8.xyzx, cb2[1].xyzx + mov r12.w, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r12.zwzz, t7.xywz, s1, cb0[108].x + add r0.z, -r12.z, l(1.000000) + mad r11.xyw, r8.xyxz, r11.xyxw, -r8.xyxz + mad r8.xyz, r0.zzzz, r11.xywx, r8.xyzx + max r0.z, r1.y, r1.w + add r0.z, -r1.w, r0.z + mad r0.z, r1.x, r0.z, r1.w + mul r1.xyw, r0.zzzz, r8.xyxz +else + mov r1.xyw, l(0,0,0,0) +endif +ne r6.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy +if_nz r6.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + mad r0.z, r0.z, l(0.750000), l(0.250000) + min r0.z, r3.w, r0.z + add r2.x, r0.z, r8.w + mad r6.z, r11.z, l(-16.000000), l(-1.000000) + exp r6.z, r6.z + log r2.x, |r2.x| + mul r2.x, r2.x, r6.z + exp r2.x, r2.x + add r2.x, r0.z, r2.x + add r2.x, r2.x, l(-1.000000) + mov_sat r8.xyz, r2.xxxx + mad r11.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) + mul r11.xyw, r0.zzzz, r11.xyxw + mad r11.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r11.xyxw + add r11.xyw, r11.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) + mul r11.xyw, r0.zzzz, r11.xyxw + mad r11.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r11.xyxw + add r11.xyw, r11.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) + mul r11.xyw, r0.zzzz, r11.xyxw + max r11.xyw, r0.zzzz, r11.xyxw +else + mov r8.xyz, r3.wwww + mov r11.xyw, r3.wwww +endif +mad r13.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r13.xyz, r7.xzyx, -r13.xyzx +max r0.z, |r13.y|, |r13.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r2.x, |r13.z|, l(-208.000000) +mul_sat r2.x, r2.x, l(0.031250) +max r0.z, r0.z, r2.x +ne r2.x, l(0.000000), cb0[210].w +lt r3.w, r0.z, l(1.000000) +and r2.x, r2.x, r3.w +if_nz r2.x + mad r13.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r13.xyz, r7.xzyx, -r13.xyzx + max r2.x, |r13.y|, |r13.x| + add r2.x, r2.x, l(-29.000000) + mul_sat r2.x, r2.x, l(0.500000) + add r3.w, |r13.z|, l(-13.000000) + mul_sat r3.w, r3.w, l(0.500000) + max r2.x, r2.x, r3.w + lt r3.w, r2.x, l(1.000000) + if_nz r3.w + mad r13.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r14.xyz, r13.xyzx, cb0[211].xyzx + round_ni r14.xyz, r14.xyzx + mad r13.xyz, r13.xyzx, cb0[211].xyzx, -r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r14.xyw, r13.xyzx, t13.yzwx, s2, l(0.000000) + add r3.w, -r2.x, l(1.000000) + mul r6.z, l(0.500000), cb0[211].y + mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) + max r6.z, r6.z, r13.y + min r6.z, r9.w, r6.z + mul r13.w, r6.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r13.xwzx, t14.xyzw, s1, l(0.000000) + mad r6.z, r15.w, r3.w, r0.z + add r16.xyz, r13.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t14.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r14.yyyy, r16.xyzx + mov r16.w, r14.y + mul r16.xyzw, r3.wwww, r16.xyzw + add r13.xyz, r13.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xyz, r13.xyzx, t14.xyzw, s1, l(0.000000) + mad r13.xyz, r13.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r13.xyz, r14.xxxx, r13.xyzx + mov r13.w, r14.x + mul r13.xyzw, r3.wwww, r13.xyzw + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r14.wwww, r15.xyzx + mul r14.xyzw, r3.wwww, r14.xyzw + else + mov r16.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r6.z, r0.z + endif + mad r15.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r15.xyz, r7.xzyx, -r15.xyzx + max r3.w, |r15.y|, |r15.x| + add r3.w, r3.w, l(-116.000000) + mul_sat r3.w, r3.w, l(0.125000) + add r9.w, |r15.z|, l(-52.000000) + mul_sat r9.w, r9.w, l(0.125000) + max r3.w, r3.w, r9.w + lt r9.w, r3.w, l(1.000000) + if_nz r9.w + mad r15.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r15.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r15.xyzx, t15.yzwx, s2, l(0.000000) + add r9.w, -r3.w, l(1.000000) + mul r2.x, r2.x, r9.w + mul r9.w, l(0.500000), cb0[211].y + mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) + max r9.w, r9.w, r15.y + min r9.w, r10.w, r9.w + mul r15.w, r9.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t16.xyzw, s1, l(0.000000) + mad r6.z, r18.w, r2.x, r6.z + add r19.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t16.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mad r16.xyzw, r19.xyzw, r2.xxxx, r16.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t16.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r17.xxxx, r15.xyzx + mov r15.w, r17.x + mad r13.xyzw, r15.xyzw, r2.xxxx, r13.xyzw + mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r15.xyzx + mad r14.xyzw, r17.xyzw, r2.xxxx, r14.xyzw + endif + lt r2.x, l(0.000000), r3.w + if_nz r2.x + mad r15.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r15.xyzx, cb0[211].xyzx + mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r17.xyzx + mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r18.xyzx, r15.xyzx + min r15.xyz, r17.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) + add r2.x, -r0.z, l(1.000000) + mul r2.x, r2.x, r3.w + max r3.w, r18.y, r15.y + min r3.w, r17.y, r3.w + mul r15.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) + add r18.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r19.yyyy, r18.xyzx + mov r18.w, r19.y + mad r16.xyzw, r18.xyzw, r2.xxxx, r16.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r19.xxxx, r15.xyzx + mov r15.w, r19.x + mad r13.xyzw, r15.xyzw, r2.xxxx, r13.xyzw + mad r15.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r19.wwww, r15.xyzx + mad r14.xyzw, r19.xyzw, r2.xxxx, r14.xyzw + mad r6.z, r17.w, r2.x, r6.z + endif + mad_sat r2.x, r6.z, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r2.x + add r0.z, r0.z, r2.x + mul r15.y, r0.z, l(0.500000) +else + mov r16.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) +endif +mul r17.xyzw, r15.yyyx, cb0[213].xyzw +mad r17.y, r17.w, l(0.500000), r17.y +mul r12.zw, r15.yyyx, cb0[213].wwwy +mad r17.w, r12.w, l(0.375000), r12.z +add r14.xyzw, r14.xyzw, r17.xyzw +mul r17.xyzw, r15.yyyx, cb0[214].xyzw +mad r17.y, r17.w, l(0.500000), r17.y +mul r12.zw, r15.yyyx, cb0[214].wwwy +mad r17.w, r12.w, l(0.375000), r12.z +add r13.xyzw, r13.xyzw, r17.xyzw +mul r17.xyzw, r15.yyyx, cb0[215].xyzw +mad r17.y, r17.w, l(0.500000), r17.y +mul r12.zw, r15.yyyx, cb0[215].wwwy +mad r17.w, r12.w, l(0.375000), r12.z +add r15.xyzw, r16.xyzw, r17.xyzw +ge r12.zw, r6.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r12.w, r12.z +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r16.xyzw, r6.xyxx, t12.xyzw, s1, l(0.000000) + lt r17.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r16.xyzw| + or r6.xy, r17.zwzz, r17.xyxx + or r0.z, r6.y, r6.x + if_nz r0.z + dp3 r0.z, r16.yzwy, r16.yzwy + sqrt r0.z, r0.z + mov r6.x, l(1.000000) + mov r6.y, r0.z + mov r2.x, l(0) + loop + ge r3.w, l(4.600000), r6.y + breakc_nz r3.w + iadd r3.w, r2.x, l(1) + mul r12.zw, r6.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) + mov r6.xy, r12.zwzz + mov r2.x, r3.w + continue + endloop + mul r16.xyzw, r6.xxxx, r16.xyzw + dp3 r0.z, r16.yzwy, r16.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb3[3].x, cb3[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r6.x, r0.z, l(0.00390625000) + mov r6.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r6.xy, r6.xyxx, t11.xyzw, s1, l(0.000000) + mad r6.xy, r6.xyxx, cb3[2].xyxx, cb3[2].zwzz + mul r17.x, r6.x, l(3.54490781) + mul r17.yzw, r6.yyyy, r16.yyzw + mul r0.z, r16.x, l(0.406976730) + exp r0.z, r0.z + mul r16.xyzw, r0.zzzz, r17.xyzw + mov r17.xyzw, r16.xyzw + mov r0.z, l(0) + loop + uge r3.w, r0.z, r2.x + breakc_nz r3.w + mul r18.xyzw, r17.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r3.w, r18.xyzw, r17.xyzw + dp2 r6.x, r18.yxyy, r17.xyxx + dp2 r6.y, r18.zxzz, r17.xzxx + dp2 r6.z, r18.wxww, r17.xwxx + iadd r9.w, r0.z, l(1) + mov r17.x, r3.w + mov r17.yzw, r6.xxyz + mov r0.z, r9.w + continue + endloop + mul r16.xyzw, r17.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r17.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r16.xyzw, r17.xyzw + dp2 r2.x, r16.yxyy, r17.xyxx + dp2 r3.w, r16.zxzz, r17.xzxx + dp2 r6.x, r16.wxww, r17.xwxx + mul r17.xyzw, r13.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r6.y, r16.xyzw, r17.xyzw + dp2 r6.z, r16.yxyy, r17.xyxx + dp2 r9.w, r16.zxzz, r17.xzxx + dp2 r10.w, r16.wxww, r17.xwxx + mul r17.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r12.z, r16.xyzw, r17.xyzw + dp2 r12.w, r16.yxyy, r17.xyxx + dp2 r16.y, r16.zxzz, r17.xzxx + dp2 r16.x, r16.wxww, r17.xwxx + mul r14.w, r0.z, l(0.886226952) + mul r14.x, r6.x, l(-1.02332675) + mul r14.y, r2.x, l(-1.02332675) + mul r14.z, r3.w, l(1.02332675) + mul r13.x, r10.w, l(-1.02332675) + mul r13.yw, r6.zzzy, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r13.z, r9.w, l(1.02332675) + mul r15.yw, r12.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r15.xz, r16.xxyx, l(-1.02332675, 0.000000, 1.02332675, 0.000000) + endif +endif +mov r5.w, l(1.000000) +dp4 r6.x, r14.xyzw, r5.xyzw +dp4 r6.y, r13.xyzw, r5.xyzw +dp4 r6.z, r15.xyzw, r5.xyzw +max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +dp3 r0.z, -r10.xyzx, r5.xyzx +add r0.z, r0.z, r0.z +mad r16.xyz, r5.xyzx, -r0.zzzz, -r10.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r2.x, r11.z, l(0.001000) +log r2.x, r2.x +mad r2.x, -r2.x, l(1.200000), l(1.000000) +add r0.z, r0.z, -r2.x +mul r12.zw, r4.yyyz, cb1[0].wwww +round_ni r12.zw, r12.zzzw +add r2.x, |r2.y|, -cb1[2].y +round_ni r2.x, r2.x +add r3.w, l(-1.000000), cb1[1].x +max r9.w, r2.x, l(0.000000) +min r3.w, r3.w, r9.w +ge r2.x, r3.w, r2.x +mad r9.w, r12.w, cb1[0].x, r12.z +ftoi r9.w, r9.w +iadd r9.w, r9.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.w, r9.w, l(0), t0.xxxx +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +and r3.w, r3.w, r9.w +and r2.x, r2.x, r3.w +mul r17.xyz, r6.xyzx, cb0[111].xxxx +dp3 r3.w, r17.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r7.w, l(1.000000) +mov r17.xyz, l(0,0,0,0) +mov r9.w, l(1.000000) +mov r10.w, r2.x +mov r11.z, l(0) +loop + lt r12.z, l(0.010000), r9.w + ine r12.w, r10.w, l(0) + and r12.w, r12.z, r12.w + if_nz r12.w + firstbit_lo r12.w, r10.w + ishl r16.w, l(1), r12.w + xor r10.w, r10.w, r16.w + ishl r12.w, r12.w, l(3) + dp4 r18.x, cb1[r12.w + 6].xyzw, r7.xyzw + dp4 r18.y, cb1[r12.w + 7].xyzw, r7.xyzw + dp4 r18.z, cb1[r12.w + 8].xyzw, r7.xyzw + ge r19.xyz, cb1[r12.w + 5].xyzx, |r18.xyzx| + and r16.w, r19.y, r19.x + and r16.w, r19.z, r16.w + if_nz r16.w + mul r16.w, l(0.100000), cb1[r12.w + 5].x + mul r19.xyz, |r18.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r19.xy, r19.xyxx, r19.xyxx + add r20.xyz, -|r18.xyzx|, cb1[r12.w + 5].xyzx + mul r20.xyz, r20.xyzx, cb1[r12.w + 9].xyzx + eq r17.w, l(1.000000), cb1[r12.w + 10].x + if_nz r17.w + dp3 r21.x, cb1[r12.w + 6].xyzx, r16.xyzx + dp3 r21.y, cb1[r12.w + 7].xyzx, r16.xyzx + dp3 r21.z, cb1[r12.w + 8].xyzx, r16.xyzx + add r22.xyz, -r18.xyzx, cb1[r12.w + 5].xyzx + div r22.xyz, r22.xyzx, r21.xyzx + add r23.xyz, -r18.xyzx, -cb1[r12.w + 5].xyzx + div r23.xyz, r23.xyzx, r21.xyzx + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx + movc r22.xyz, r24.xyzx, r22.xyzx, r23.xyzx + min r17.w, r22.y, r22.x + min r17.w, r22.z, r17.w + mad r18.xyz, r21.xyzx, r17.wwww, r18.xyzx + else + mov r18.xyz, r16.xyzx + endif + dp3 r17.w, r18.xyzx, r18.xyzx + rsq r17.w, r17.w + mul r18.xyz, r17.wwww, r18.xyzx + lt r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyzx + lt r22.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r21.xyz, -r21.xyzx, r22.xyzx + itof r21.xyz, r21.xyzx + dp3 r17.w, r18.xyzx, r21.xyzx + div r18.xyz, r18.xyzx, r17.wwww + lt r17.w, r18.z, l(0.000000) + add r18.zw, -|r18.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r18.zw, r18.zzzw, r21.xxxy + movc r18.xy, r17.wwww, r18.zwzz, r18.xyxx + dp4 r17.w, cb1[r12.w + 4].xyzw, r5.xyzw + max r17.w, r17.w, l(0.000000) + max r17.w, r17.w, l(0.000100) + min r18.z, r20.z, r20.y + min r18.z, r18.z, r20.x + add r18.w, r19.y, r19.x + mad r18.w, r19.z, r19.z, r18.w + mad r16.w, r16.w, r16.w, -r18.w + mul r16.w, r16.w, cb1[r12.w + 9].x + mul r16.w, r16.w, cb1[r12.w + 9].x + add r18.w, l(1.000000), -cb1[r12.w + 10].y + mul r16.w, r16.w, r18.w + mul r16.w, r16.w, l(100.000000) + mad_sat r16.w, r18.z, cb1[r12.w + 10].y, r16.w + mul r18.z, r16.w, cb1[r12.w + 10].w + mad r18.xy, r18.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r19.xy, r18.xyxx, cb1[1].wwww, cb1[2].wwww + mov r19.z, cb1[r12.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r18.xyw, r19.xyzx, t5.xywz, s3, r0.z + mul r18.xyw, r18.xyxw, cb1[r12.w + 9].wwww + div r19.x, r3.w, r17.w + min r19.x, |r19.x|, l(1.000000) + mad r19.x, r19.x, l(2.000000), r3.w + add r17.w, r17.w, l(2.000000) + div r17.w, r19.x, r17.w + add r17.w, r17.w, l(-1.000000) + mad r17.w, r17.w, cb0[112].w, l(1.000000) + mul r18.xyw, r17.wwww, r18.xyxw + mul r18.xyz, r18.zzzz, r18.xywx + mad r17.xyz, r18.xyzx, r9.wwww, r17.xyzx + mad r12.w, -r16.w, cb1[r12.w + 10].w, l(1.000000) + mul r9.w, r9.w, r12.w + endif + mov r11.z, l(-1) + continue + else + mov r11.z, r12.z + break + endif + mov r11.z, r12.z +endloop +if_nz r11.z + dp3 r2.x, r16.xyzx, r16.xyzx + rsq r2.x, r2.x + mul r7.xzw, r2.xxxx, r16.xxyz + lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r7.xzwx + lt r18.xyz, r7.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r16.xyz, -r16.xyzx, r18.xyzx + itof r16.xyz, r16.xyzx + dp3 r2.x, r7.xzwx, r16.xyzx + div r7.xzw, r7.xxzw, r2.xxxx + lt r2.x, r7.w, l(0.000000) + add r12.zw, -|r7.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r12.zw, r12.zzzw, r16.xxxy + movc r7.xz, r2.xxxx, r12.zzwz, r7.xxzx + dp4 r2.x, cb1[3].xyzw, r5.xyzw + max r2.x, r2.x, l(0.000000) + max r2.x, r2.x, l(0.000100) + mad r7.xz, r7.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) + mad r16.xy, r7.xzxx, cb1[1].wwww, cb1[2].wwww + mov r16.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r7.xzw, r16.xyzx, t5.xwyz, s3, r0.z + div r0.z, r3.w, r2.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r3.w + add r2.x, r2.x, l(2.000000) + div r0.z, r0.z, r2.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r7.xzw, r0.zzzz, r7.xxzw + mad r17.xyz, r7.xzwx, r9.wwww, r17.xyzx +endif +mul r7.xzw, r17.xxyz, cb0[112].zzzz +mul r7.xzw, r7.xxzw, cb0[111].yyyy +if_nz r6.w + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r16.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r2.x, -r0.z, l(1.000000) + mul r17.xyz, r2.xxxx, r7.xzwx + mad r7.xzw, r16.xxyz, r0.zzzz, r17.xxyz +endif +mul r6.xyz, r3.xyzx, r6.xyzx +mul r6.xyz, r6.xyzx, cb0[111].xxxx +mad r0.z, r2.z, r12.x, r12.y +mul r7.xzw, r0.zzzz, r7.xxzw +mul r7.xzw, r8.xxyz, r7.xxzw +mad r6.xyz, r6.xyzx, r11.xywx, r7.xzwx +mul r5.xyzw, r5.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) +dp4 r8.x, r14.xyzw, r5.xyzw +dp4 r8.y, r13.xyzw, r5.xyzw +dp4 r8.z, r15.xyzw, r5.xyzw +max r5.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +mul r5.xyz, r5.xyzx, cb0[111].xxxx +mul r5.xyz, r11.xywx, r5.xyzx +max r0.z, r3.y, r3.x +max r0.z, r3.z, r0.z +max r0.z, r0.z, l(0.010000) +div r3.xyz, r3.xyzx, r0.zzzz +mul r3.xyz, r3.xyzx, r5.xyzx +mul r0.z, r4.x, l(0.00787401572) +min r2.x, r8.w, l(1.000000) +bfi r1.z, l(3), l(2), r1.z, l(0) +ftou r2.z, r2.w +bfi r1.z, l(2), l(0), r2.z, r1.z +utof r1.z, r1.z +mul r1.z, r1.z, l(0.0322580636) +mad r0.z, r0.z, r2.x, r1.z +mul r2.xzw, r0.zzzz, r3.xxyz +mad r2.xzw, r2.xxzw, l(0.318309873, 0.000000, 0.318309873, 0.318309873), r6.xxyz +add r1.xyz, r1.xywx, r2.xzwx +mad r0.z, r7.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r4.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r7.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xzw, r0.zzzz, cb0[155].xxyz +mul r2.xzw, r2.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r2.xzw, r2.xxzw +dp3 r0.z, -r10.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r3.x, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r3.x +lt r3.x, l(0.000000), cb0[163].z +if_nz r3.x + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r10.xyzx, -r9.xyzx + add r3.z, r7.y, -cb0[44].y + lt r3.w, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.w + mul r0.x, r0.x, cb0[163].w + div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul r4.x, r0.x, r3.w + mad r5.x, r4.x, r3.z, cb0[44].y + mad r3.z, -r4.x, r3.z, r3.z + mul r4.x, r3.z, cb0[159].z + max r4.x, r4.x, l(-127.000000) + mul r3.z, r3.z, cb0[162].x + max r3.z, r3.z, l(-127.000000) + add r5.y, r5.x, -cb0[159].x + mul r5.y, r5.y, cb0[159].z + max r5.y, r5.y, l(-127.000000) + exp r5.y, -r5.y + mul r5.y, r5.y, cb0[159].y + lt r5.z, l(5.960464478E-08), |r4.x| + exp r5.w, -r4.x + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.x + mad r4.x, -r4.x, l(0.240226507), l(0.693147182) + movc r4.x, r5.z, r5.w, r4.x + add r5.x, r5.x, -cb0[162].z + mul r5.x, r5.x, cb0[162].x + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[162].y + lt r5.z, l(5.960464478E-08), |r3.z| + exp r5.w, -r3.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r3.z + mad r3.z, -r3.z, l(0.240226507), l(0.693147182) + movc r3.z, r5.z, r5.w, r3.z + mul r3.z, r3.z, r5.x + mad r3.z, r5.y, r4.x, r3.z + mad r0.x, -r0.x, r3.w, l(1.000000) + mul r0.x, r4.w, r0.x + mul r0.x, r0.x, r3.z + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r3.zw, r4.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r3.z + add r0.x, r3.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r2.y|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t10.xyzw, s1, l(0.000000) + add r0.y, |r2.y|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r7.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.y, cb0[44].y, -cb0[159].x + mul r2.y, r2.y, cb0[159].z + max r2.y, r2.y, l(-127.000000) + exp r2.y, -r2.y + mul r2.y, r2.y, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.y, r0.w, r0.y + mul r0.y, r4.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r4.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xzwx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.y, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.y, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx + +// Check fog modification toggle (cb13[12].y) +// If 0 (Original), skip fog modification and output original +if_z cb13[12].y + mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx + dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) + ret +endif + +// === Custom Hue-Preserving Fog Blend === +// FOG_INTENSITY = 0.7, HUE_PRESERVATION = 0.6 +// r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter (0-255) + +// Normalize colors to 0-1 range +mul r5.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r1/255 +mul r6.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 + +// Reduce fog intensity: transmittance = lerp(transmittance, 1, 0.3) +add r7.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r7.xyz, r7.xyzx, l(0.300000, 0.300000, 0.300000, 0.000000), r4.xyzx // adjusted transmittance + +// fogColor *= FOG_INTENSITY (0.7) +mul r6.xyz, r6.xyzx, l(0.700000, 0.700000, 0.700000, 0.000000) + +// Standard fog blend: foggedScene = sceneColor * transmittance + fogColor +mad r8.xyz, r5.xyzx, r7.xyzx, r6.xyzx + +// Calculate fog amount: fogAmount = 1 - avg(transmittance) +dp3 r3.w, r7.xyzx, l(0.333333, 0.333333, 0.333333, 0.000000) +add r3.w, -r3.w, l(1.000000) + +// Scene luminance (BT.709) +dp3 r5.w, r5.xyzx, l(0.2126, 0.7152, 0.0722, 0.000000) + +// Fogged luminance +dp3 r6.w, r8.xyzx, l(0.2126, 0.7152, 0.0722, 0.000000) + +// lumaWeight = saturate(sceneLuma * 100) for smooth falloff +mul_sat r7.w, r5.w, l(100.000000) + +// Safe luma for division +max r5.w, r5.w, l(0.0001) + +// sceneRatios = sceneColor / safeLuma +div r9.xyz, r5.xyzx, r5.wwww + +// Clamp ratios to prevent artifacts +max r9.xyz, r9.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r9.xyz, r9.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000) + +// huePreserved = sceneRatios * foggedLuma +mul r9.xyz, r9.xyzx, r6.wwww + +// preserveAmount = HUE_PRESERVATION * saturate(1 - fogAmount*0.5) * lumaWeight +mul r5.w, r3.w, l(0.500000) +add_sat r5.w, -r5.w, l(1.000000) +mul r5.w, r5.w, l(0.600000) // HUE_PRESERVATION +mul r5.w, r5.w, r7.w + +// foggedScene = lerp(foggedScene, huePreserved, preserveAmount) +add r9.xyz, r9.xyzx, -r8.xyzx +mad r8.xyz, r5.wwww, r9.xyzx, r8.xyzx + +// Output: scale back to 0-255 range +mul o0.xyz, r8.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x37837806.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x37837806.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..0b71e1b3d9 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x37837806.ps_5_0_original_backup.asm @@ -0,0 +1,884 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Thu Jan 29 18:08:39 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture2d (float,float,float,float) t19 +dcl_resource_texture2d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 25 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t20.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t21.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t22.xyzw +mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) +ftou r1.xz, r1.xxzx +ubfe r4.x, l(7), l(3), r1.x +utof r4.x, r4.x +round_ne r1.y, r1.y +ftou r1.y, r1.y +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r5.y, -r4.y, l(1.000000) +lt r4.y, r5.y, l(0.000000) +ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) +movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) +mul r4.zw, r4.zzzw, r6.xxxy +movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx +dp3 r2.x, r5.xyzx, r5.xyzx +rsq r2.x, r2.x +mul r5.xyz, r2.xxxx, r5.xyzx +and r2.x, r1.y, l(7) +utof r2.x, r2.x +mad r2.x, r2.x, l(0.107142866), l(0.500000) +utof r4.yz, r0.xxyx +mul r6.xy, v0.xyxx, cb0[82].zwzz +mad r6.zw, r6.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r7.xy, r4.yzyy, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r7.xy, r7.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r2.y, r7.xyxx, t1.yxzw, s0, l(0.000000) +mul r7.xyzw, -r6.wwww, cb0[25].xyzw +mad r7.xyzw, cb0[24].xyzw, r6.zzzz, r7.xyzw +mad r7.xyzw, cb0[26].xyzw, r2.yyyy, r7.xyzw +add r7.xyzw, r7.xyzw, cb0[27].xyzw +div r7.xyz, r7.xyzx, r7.wwww +mul r2.y, r7.y, cb0[1].z +mad r2.y, cb0[0].z, r7.x, r2.y +mad r2.y, cb0[2].z, r7.z, r2.y +add r2.y, r2.y, cb0[3].z +eq r4.w, l(0.000000), cb0[86].w +add r8.xyz, -r7.xyzx, cb0[44].xyzx +mov r9.x, cb0[0].z +mov r9.y, cb0[1].z +mov r9.z, cb0[2].z +movc r8.xyz, r4.wwww, r8.xyzx, r9.xyzx +dp3 r4.w, r8.xyzx, r8.xyzx +max r6.z, r4.w, l(9.999999939E-09) +rsq r6.z, r6.z +mul r10.xyz, r6.zzzz, r8.xyzx +mul r4.w, r4.w, r6.z +lt r6.w, l(0.000488281250), cb0[234].x +if_nz r6.w + sample_b_indexable(texture2d)(float,float,float,float) r6.w, v1.xyxx, t19.yzwx, s1, cb0[108].x +else + mov r6.w, l(1.000000) +endif +add r6.w, -r6.w, l(1.000000) +mad_sat r8.w, r2.z, l(0.300000), l(0.250000) +mul r8.w, r8.w, cb0[222].x +mul r8.w, r6.w, r8.w +mad r8.w, r8.w, l(-0.750000), l(1.000000) +mul r3.xyz, r3.xyzx, r8.wwww +min r8.w, r2.z, l(0.300000) +mul r6.w, r6.w, cb0[222].x +mul r6.w, r6.w, l(0.500000) +add r8.w, -r2.z, r8.w +mad r11.z, r6.w, r8.w, r2.z +mul r2.zw, r2.xxxw, l(0.000000, 0.000000, 0.080000, 3.000000) +dp3 r6.w, r5.xyzx, r10.xyzx +max r8.w, r6.w, l(0.000000) +mad r12.xyzw, r11.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r9.w, r12.x, r12.x +mul r10.w, r8.w, l(-9.280000) +exp r10.w, r10.w +min r9.w, r9.w, r10.w +mad r9.w, r9.w, r12.x, r12.y +mad r12.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r12.zwzz +ld_indexable(texture2d)(float,float,float,float) r12.z, r0.xyzz, t6.zwxy +lt r0.z, l(0.001000), r12.z +if_nz r0.z + bfi r0.z, l(3), l(2), r1.x, l(0) + mul r1.x, r1.w, l(3.000000) + ftou r1.x, r1.x + bfi r0.z, l(2), l(0), r1.x, r0.z + utof r0.z, r0.z + mul r1.x, r0.z, l(0.0322580636) + ubfe r1.y, l(7), l(3), r1.y + utof r1.y, r1.y + mul r1.y, r1.y, l(0.00787401572) + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r6.xyxx, t9.yzwx, s1, l(0.000000) + dp3 r9.w, -r10.xyzx, r5.xyzx + add r9.w, r9.w, r9.w + mad r13.xyz, r5.xyzx, -r9.wwww, -r10.xyzx + dp3 r9.w, -cb2[0].xyzx, r13.xyzx + mad r14.xyz, cb2[0].xyzx, r9.wwww, r13.xyzx + lt r9.w, r9.w, cb2[4].z + dp3 r10.w, r14.xyzx, r14.xyzx + max r10.w, r10.w, l(0.0000610351562) + rsq r10.w, r10.w + mul r14.xyz, r10.wwww, r14.xyzx + mul r14.xyz, r14.xyzx, cb2[4].yyyy + mad r14.xyz, -cb2[0].xyzx, cb2[4].zzzz, r14.xyzx + dp3 r10.w, r14.xyzx, r14.xyzx + rsq r10.w, r10.w + mul r14.xyz, r10.wwww, r14.xyzx + movc r13.xyz, r9.wwww, r14.xyzx, r13.xyzx + mad r8.xyz, r8.xyzx, r6.zzzz, r13.xyzx + dp3 r6.z, r8.xyzx, r8.xyzx + max r6.z, r6.z, l(0.0000610351562) + rsq r6.z, r6.z + mul r8.xyz, r6.zzzz, r8.xyzx + dp3 r6.z, r5.xyzx, r13.xyzx + mov_sat r11.x, r6.z + dp3_sat r9.w, r5.xyzx, r8.xyzx + dp3 r10.w, r10.xyzx, r13.xyzx + min r11.y, r8.w, l(1.000000) + mul r11.w, r11.z, r11.z + mul r11.w, r11.w, r11.w + mad r13.x, r9.w, r11.w, -r9.w + mad r9.w, r13.x, r9.w, l(1.000000) + dp3_sat r8.x, r10.xyzx, r8.xyzx + add r8.x, -r8.x, l(1.000000) + mul r8.y, r8.x, r8.x + mul r8.y, r8.y, r8.y + mul r8.z, r8.x, r8.y + add r13.x, -r11.z, l(1.000000) + mad r13.y, -r13.x, l(0.383026), l(-0.0761947036) + mad r13.y, r13.x, r13.y, l(1.049970) + mad r13.x, r13.x, r13.y, l(0.409255) + min r13.x, r13.x, l(0.999000) + add r13.y, -r13.x, l(1.000000) + mad r2.x, -r2.x, l(0.080000), l(1.000000) + mad r2.x, r2.x, l(0.0476190485), r2.z + mov_sat r13.z, -r10.w + mul r13.z, r13.z, r13.z + mad r13.z, r13.z, l(-0.640000), l(1.000000) + mul r13.z, r13.z, r13.z + mad r8.x, -r8.y, r8.x, l(1.000000) + mad r8.x, r2.z, r8.x, r8.z + mul r8.y, r9.w, r9.w + div r8.y, r11.w, r8.y + mad r14.xy, -r11.yxyy, r11.wwww, r11.yxyy + mad r14.xy, r14.xyxx, r11.yxyy, r11.wwww + sqrt r14.xy, r14.xyxx + mul r14.xy, r11.xyxx, r14.xyxx + add r8.z, r14.y, r14.x + add r8.z, r8.z, l(0.000100) + div r8.z, l(0.500000), r8.z + mul r8.y, r8.z, r8.y + mul r8.x, r8.y, r8.x + min r8.x, r8.x, l(2048.000000) + mad r14.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r8.y, r14.xyxx, t8.yxzw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r8.z, r14.zwzz, t8.yzxw, s1, l(0.000000) + mul r8.y, r8.z, r8.y + mul r8.y, r13.x, r8.y + div r8.y, r8.y, r13.y + mul r8.z, r2.x, r2.x + mul r8.y, r8.y, r8.z + mad r2.x, -r2.x, r13.y, l(1.000000) + div r2.x, r8.y, r2.x + add r2.x, r2.x, r8.x + add_sat r6.w, r6.w, l(0.200000) + mov_sat r8.x, r10.w + add r8.x, r8.x, l(0.500000) + min r8.x, r8.x, l(1.000000) + mul r8.y, r6.w, r8.x + add_sat r8.z, r10.w, l(1.000000) + mad r6.w, -r6.w, r8.x, l(1.000000) + mad r6.w, r8.z, r6.w, r8.y + mul r2.x, r2.x, r6.w + mul r2.x, r1.y, r2.x + mul r8.xyz, r1.yyyy, r3.xyzx + ubfe r6.w, l(7), l(3), r1.z + utof r6.w, r6.w + mul r6.w, r6.w, l(0.00787401572) + mul r2.x, r2.x, cb2[4].x + max r2.x, r2.x, l(0.000000) + min r2.x, r2.x, l(1000.000000) + mul r2.x, r11.x, r2.x + mad r8.xyz, r8.xyzx, r6.wwww, r2.xxxx + max r2.x, r3.y, r3.x + max r2.x, r3.z, r2.x + max r2.x, r2.x, l(0.010000) + div r13.xyw, r3.xyxz, r2.xxxx + mul r2.x, r4.x, l(0.00393700786) + mul r13.xyw, r2.xxxx, r13.xyxw + add_sat r2.x, -r6.z, l(0.500000) + ne r6.w, r13.z, l(0.360000) + div r9.w, l(0.360000), r13.z + movc r6.w, r6.w, r9.w, l(1.000000) + mul r2.x, r2.x, r6.w + mad_sat r0.z, r0.z, l(0.0322580636), r6.z + add r0.z, -r11.x, r0.z + mul r11.xyw, r0.zzzz, r3.xyxz + mad r11.xyw, r13.xyxw, r2.xxxx, r11.xyxw + mad r8.xyz, r11.xywx, r1.yyyy, r8.xyzx + mul r8.xyz, r8.xyzx, cb2[1].xyzx + mov r12.w, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r12.zwzz, t7.xywz, s1, cb0[108].x + add r0.z, -r12.z, l(1.000000) + mad r11.xyw, r8.xyxz, r11.xyxw, -r8.xyxz + mad r8.xyz, r0.zzzz, r11.xywx, r8.xyzx + max r0.z, r1.y, r1.w + add r0.z, -r1.w, r0.z + mad r0.z, r1.x, r0.z, r1.w + mul r1.xyw, r0.zzzz, r8.xyxz +else + mov r1.xyw, l(0,0,0,0) +endif +ne r6.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy +if_nz r6.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + mad r0.z, r0.z, l(0.750000), l(0.250000) + min r0.z, r3.w, r0.z + add r2.x, r0.z, r8.w + mad r6.z, r11.z, l(-16.000000), l(-1.000000) + exp r6.z, r6.z + log r2.x, |r2.x| + mul r2.x, r2.x, r6.z + exp r2.x, r2.x + add r2.x, r0.z, r2.x + add r2.x, r2.x, l(-1.000000) + mov_sat r8.xyz, r2.xxxx + mad r11.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) + mul r11.xyw, r0.zzzz, r11.xyxw + mad r11.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r11.xyxw + add r11.xyw, r11.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) + mul r11.xyw, r0.zzzz, r11.xyxw + mad r11.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r11.xyxw + add r11.xyw, r11.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) + mul r11.xyw, r0.zzzz, r11.xyxw + max r11.xyw, r0.zzzz, r11.xyxw +else + mov r8.xyz, r3.wwww + mov r11.xyw, r3.wwww +endif +mad r13.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r13.xyz, r7.xzyx, -r13.xyzx +max r0.z, |r13.y|, |r13.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r2.x, |r13.z|, l(-208.000000) +mul_sat r2.x, r2.x, l(0.031250) +max r0.z, r0.z, r2.x +ne r2.x, l(0.000000), cb0[210].w +lt r3.w, r0.z, l(1.000000) +and r2.x, r2.x, r3.w +if_nz r2.x + mad r13.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r13.xyz, r7.xzyx, -r13.xyzx + max r2.x, |r13.y|, |r13.x| + add r2.x, r2.x, l(-29.000000) + mul_sat r2.x, r2.x, l(0.500000) + add r3.w, |r13.z|, l(-13.000000) + mul_sat r3.w, r3.w, l(0.500000) + max r2.x, r2.x, r3.w + lt r3.w, r2.x, l(1.000000) + if_nz r3.w + mad r13.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r14.xyz, r13.xyzx, cb0[211].xyzx + round_ni r14.xyz, r14.xyzx + mad r13.xyz, r13.xyzx, cb0[211].xyzx, -r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r14.xyw, r13.xyzx, t13.yzwx, s2, l(0.000000) + add r3.w, -r2.x, l(1.000000) + mul r6.z, l(0.500000), cb0[211].y + mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) + max r6.z, r6.z, r13.y + min r6.z, r9.w, r6.z + mul r13.w, r6.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r13.xwzx, t14.xyzw, s1, l(0.000000) + mad r6.z, r15.w, r3.w, r0.z + add r16.xyz, r13.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t14.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r14.yyyy, r16.xyzx + mov r16.w, r14.y + mul r16.xyzw, r3.wwww, r16.xyzw + add r13.xyz, r13.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xyz, r13.xyzx, t14.xyzw, s1, l(0.000000) + mad r13.xyz, r13.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r13.xyz, r14.xxxx, r13.xyzx + mov r13.w, r14.x + mul r13.xyzw, r3.wwww, r13.xyzw + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r14.wwww, r15.xyzx + mul r14.xyzw, r3.wwww, r14.xyzw + else + mov r16.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r6.z, r0.z + endif + mad r15.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r15.xyz, r7.xzyx, -r15.xyzx + max r3.w, |r15.y|, |r15.x| + add r3.w, r3.w, l(-116.000000) + mul_sat r3.w, r3.w, l(0.125000) + add r9.w, |r15.z|, l(-52.000000) + mul_sat r9.w, r9.w, l(0.125000) + max r3.w, r3.w, r9.w + lt r9.w, r3.w, l(1.000000) + if_nz r9.w + mad r15.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r15.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r15.xyzx, t15.yzwx, s2, l(0.000000) + add r9.w, -r3.w, l(1.000000) + mul r2.x, r2.x, r9.w + mul r9.w, l(0.500000), cb0[211].y + mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) + max r9.w, r9.w, r15.y + min r9.w, r10.w, r9.w + mul r15.w, r9.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t16.xyzw, s1, l(0.000000) + mad r6.z, r18.w, r2.x, r6.z + add r19.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t16.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mad r16.xyzw, r19.xyzw, r2.xxxx, r16.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t16.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r17.xxxx, r15.xyzx + mov r15.w, r17.x + mad r13.xyzw, r15.xyzw, r2.xxxx, r13.xyzw + mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r15.xyzx + mad r14.xyzw, r17.xyzw, r2.xxxx, r14.xyzw + endif + lt r2.x, l(0.000000), r3.w + if_nz r2.x + mad r15.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r15.xyzx, cb0[211].xyzx + mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r17.xyzx + mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r18.xyzx, r15.xyzx + min r15.xyz, r17.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) + add r2.x, -r0.z, l(1.000000) + mul r2.x, r2.x, r3.w + max r3.w, r18.y, r15.y + min r3.w, r17.y, r3.w + mul r15.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) + add r18.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r19.yyyy, r18.xyzx + mov r18.w, r19.y + mad r16.xyzw, r18.xyzw, r2.xxxx, r16.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r19.xxxx, r15.xyzx + mov r15.w, r19.x + mad r13.xyzw, r15.xyzw, r2.xxxx, r13.xyzw + mad r15.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r19.wwww, r15.xyzx + mad r14.xyzw, r19.xyzw, r2.xxxx, r14.xyzw + mad r6.z, r17.w, r2.x, r6.z + endif + mad_sat r2.x, r6.z, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r2.x + add r0.z, r0.z, r2.x + mul r15.y, r0.z, l(0.500000) +else + mov r16.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) +endif +mul r17.xyzw, r15.yyyx, cb0[213].xyzw +mad r17.y, r17.w, l(0.500000), r17.y +mul r12.zw, r15.yyyx, cb0[213].wwwy +mad r17.w, r12.w, l(0.375000), r12.z +add r14.xyzw, r14.xyzw, r17.xyzw +mul r17.xyzw, r15.yyyx, cb0[214].xyzw +mad r17.y, r17.w, l(0.500000), r17.y +mul r12.zw, r15.yyyx, cb0[214].wwwy +mad r17.w, r12.w, l(0.375000), r12.z +add r13.xyzw, r13.xyzw, r17.xyzw +mul r17.xyzw, r15.yyyx, cb0[215].xyzw +mad r17.y, r17.w, l(0.500000), r17.y +mul r12.zw, r15.yyyx, cb0[215].wwwy +mad r17.w, r12.w, l(0.375000), r12.z +add r15.xyzw, r16.xyzw, r17.xyzw +ge r12.zw, r6.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r12.w, r12.z +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r16.xyzw, r6.xyxx, t12.xyzw, s1, l(0.000000) + lt r17.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r16.xyzw| + or r6.xy, r17.zwzz, r17.xyxx + or r0.z, r6.y, r6.x + if_nz r0.z + dp3 r0.z, r16.yzwy, r16.yzwy + sqrt r0.z, r0.z + mov r6.x, l(1.000000) + mov r6.y, r0.z + mov r2.x, l(0) + loop + ge r3.w, l(4.600000), r6.y + breakc_nz r3.w + iadd r3.w, r2.x, l(1) + mul r12.zw, r6.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) + mov r6.xy, r12.zwzz + mov r2.x, r3.w + continue + endloop + mul r16.xyzw, r6.xxxx, r16.xyzw + dp3 r0.z, r16.yzwy, r16.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb3[3].x, cb3[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r6.x, r0.z, l(0.00390625000) + mov r6.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r6.xy, r6.xyxx, t11.xyzw, s1, l(0.000000) + mad r6.xy, r6.xyxx, cb3[2].xyxx, cb3[2].zwzz + mul r17.x, r6.x, l(3.54490781) + mul r17.yzw, r6.yyyy, r16.yyzw + mul r0.z, r16.x, l(0.406976730) + exp r0.z, r0.z + mul r16.xyzw, r0.zzzz, r17.xyzw + mov r17.xyzw, r16.xyzw + mov r0.z, l(0) + loop + uge r3.w, r0.z, r2.x + breakc_nz r3.w + mul r18.xyzw, r17.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r3.w, r18.xyzw, r17.xyzw + dp2 r6.x, r18.yxyy, r17.xyxx + dp2 r6.y, r18.zxzz, r17.xzxx + dp2 r6.z, r18.wxww, r17.xwxx + iadd r9.w, r0.z, l(1) + mov r17.x, r3.w + mov r17.yzw, r6.xxyz + mov r0.z, r9.w + continue + endloop + mul r16.xyzw, r17.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r17.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r16.xyzw, r17.xyzw + dp2 r2.x, r16.yxyy, r17.xyxx + dp2 r3.w, r16.zxzz, r17.xzxx + dp2 r6.x, r16.wxww, r17.xwxx + mul r17.xyzw, r13.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r6.y, r16.xyzw, r17.xyzw + dp2 r6.z, r16.yxyy, r17.xyxx + dp2 r9.w, r16.zxzz, r17.xzxx + dp2 r10.w, r16.wxww, r17.xwxx + mul r17.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r12.z, r16.xyzw, r17.xyzw + dp2 r12.w, r16.yxyy, r17.xyxx + dp2 r16.y, r16.zxzz, r17.xzxx + dp2 r16.x, r16.wxww, r17.xwxx + mul r14.w, r0.z, l(0.886226952) + mul r14.x, r6.x, l(-1.02332675) + mul r14.y, r2.x, l(-1.02332675) + mul r14.z, r3.w, l(1.02332675) + mul r13.x, r10.w, l(-1.02332675) + mul r13.yw, r6.zzzy, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r13.z, r9.w, l(1.02332675) + mul r15.yw, r12.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r15.xz, r16.xxyx, l(-1.02332675, 0.000000, 1.02332675, 0.000000) + endif +endif +mov r5.w, l(1.000000) +dp4 r6.x, r14.xyzw, r5.xyzw +dp4 r6.y, r13.xyzw, r5.xyzw +dp4 r6.z, r15.xyzw, r5.xyzw +max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +dp3 r0.z, -r10.xyzx, r5.xyzx +add r0.z, r0.z, r0.z +mad r16.xyz, r5.xyzx, -r0.zzzz, -r10.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r2.x, r11.z, l(0.001000) +log r2.x, r2.x +mad r2.x, -r2.x, l(1.200000), l(1.000000) +add r0.z, r0.z, -r2.x +mul r12.zw, r4.yyyz, cb1[0].wwww +round_ni r12.zw, r12.zzzw +add r2.x, |r2.y|, -cb1[2].y +round_ni r2.x, r2.x +add r3.w, l(-1.000000), cb1[1].x +max r9.w, r2.x, l(0.000000) +min r3.w, r3.w, r9.w +ge r2.x, r3.w, r2.x +mad r9.w, r12.w, cb1[0].x, r12.z +ftoi r9.w, r9.w +iadd r9.w, r9.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.w, r9.w, l(0), t0.xxxx +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +and r3.w, r3.w, r9.w +and r2.x, r2.x, r3.w +mul r17.xyz, r6.xyzx, cb0[111].xxxx +dp3 r3.w, r17.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r7.w, l(1.000000) +mov r17.xyz, l(0,0,0,0) +mov r9.w, l(1.000000) +mov r10.w, r2.x +mov r11.z, l(0) +loop + lt r12.z, l(0.010000), r9.w + ine r12.w, r10.w, l(0) + and r12.w, r12.z, r12.w + if_nz r12.w + firstbit_lo r12.w, r10.w + ishl r16.w, l(1), r12.w + xor r10.w, r10.w, r16.w + ishl r12.w, r12.w, l(3) + dp4 r18.x, cb1[r12.w + 6].xyzw, r7.xyzw + dp4 r18.y, cb1[r12.w + 7].xyzw, r7.xyzw + dp4 r18.z, cb1[r12.w + 8].xyzw, r7.xyzw + ge r19.xyz, cb1[r12.w + 5].xyzx, |r18.xyzx| + and r16.w, r19.y, r19.x + and r16.w, r19.z, r16.w + if_nz r16.w + mul r16.w, l(0.100000), cb1[r12.w + 5].x + mul r19.xyz, |r18.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r19.xy, r19.xyxx, r19.xyxx + add r20.xyz, -|r18.xyzx|, cb1[r12.w + 5].xyzx + mul r20.xyz, r20.xyzx, cb1[r12.w + 9].xyzx + eq r17.w, l(1.000000), cb1[r12.w + 10].x + if_nz r17.w + dp3 r21.x, cb1[r12.w + 6].xyzx, r16.xyzx + dp3 r21.y, cb1[r12.w + 7].xyzx, r16.xyzx + dp3 r21.z, cb1[r12.w + 8].xyzx, r16.xyzx + add r22.xyz, -r18.xyzx, cb1[r12.w + 5].xyzx + div r22.xyz, r22.xyzx, r21.xyzx + add r23.xyz, -r18.xyzx, -cb1[r12.w + 5].xyzx + div r23.xyz, r23.xyzx, r21.xyzx + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx + movc r22.xyz, r24.xyzx, r22.xyzx, r23.xyzx + min r17.w, r22.y, r22.x + min r17.w, r22.z, r17.w + mad r18.xyz, r21.xyzx, r17.wwww, r18.xyzx + else + mov r18.xyz, r16.xyzx + endif + dp3 r17.w, r18.xyzx, r18.xyzx + rsq r17.w, r17.w + mul r18.xyz, r17.wwww, r18.xyzx + lt r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyzx + lt r22.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r21.xyz, -r21.xyzx, r22.xyzx + itof r21.xyz, r21.xyzx + dp3 r17.w, r18.xyzx, r21.xyzx + div r18.xyz, r18.xyzx, r17.wwww + lt r17.w, r18.z, l(0.000000) + add r18.zw, -|r18.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r18.zw, r18.zzzw, r21.xxxy + movc r18.xy, r17.wwww, r18.zwzz, r18.xyxx + dp4 r17.w, cb1[r12.w + 4].xyzw, r5.xyzw + max r17.w, r17.w, l(0.000000) + max r17.w, r17.w, l(0.000100) + min r18.z, r20.z, r20.y + min r18.z, r18.z, r20.x + add r18.w, r19.y, r19.x + mad r18.w, r19.z, r19.z, r18.w + mad r16.w, r16.w, r16.w, -r18.w + mul r16.w, r16.w, cb1[r12.w + 9].x + mul r16.w, r16.w, cb1[r12.w + 9].x + add r18.w, l(1.000000), -cb1[r12.w + 10].y + mul r16.w, r16.w, r18.w + mul r16.w, r16.w, l(100.000000) + mad_sat r16.w, r18.z, cb1[r12.w + 10].y, r16.w + mul r18.z, r16.w, cb1[r12.w + 10].w + mad r18.xy, r18.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r19.xy, r18.xyxx, cb1[1].wwww, cb1[2].wwww + mov r19.z, cb1[r12.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r18.xyw, r19.xyzx, t5.xywz, s3, r0.z + mul r18.xyw, r18.xyxw, cb1[r12.w + 9].wwww + div r19.x, r3.w, r17.w + min r19.x, |r19.x|, l(1.000000) + mad r19.x, r19.x, l(2.000000), r3.w + add r17.w, r17.w, l(2.000000) + div r17.w, r19.x, r17.w + add r17.w, r17.w, l(-1.000000) + mad r17.w, r17.w, cb0[112].w, l(1.000000) + mul r18.xyw, r17.wwww, r18.xyxw + mul r18.xyz, r18.zzzz, r18.xywx + mad r17.xyz, r18.xyzx, r9.wwww, r17.xyzx + mad r12.w, -r16.w, cb1[r12.w + 10].w, l(1.000000) + mul r9.w, r9.w, r12.w + endif + mov r11.z, l(-1) + continue + else + mov r11.z, r12.z + break + endif + mov r11.z, r12.z +endloop +if_nz r11.z + dp3 r2.x, r16.xyzx, r16.xyzx + rsq r2.x, r2.x + mul r7.xzw, r2.xxxx, r16.xxyz + lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r7.xzwx + lt r18.xyz, r7.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r16.xyz, -r16.xyzx, r18.xyzx + itof r16.xyz, r16.xyzx + dp3 r2.x, r7.xzwx, r16.xyzx + div r7.xzw, r7.xxzw, r2.xxxx + lt r2.x, r7.w, l(0.000000) + add r12.zw, -|r7.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r12.zw, r12.zzzw, r16.xxxy + movc r7.xz, r2.xxxx, r12.zzwz, r7.xxzx + dp4 r2.x, cb1[3].xyzw, r5.xyzw + max r2.x, r2.x, l(0.000000) + max r2.x, r2.x, l(0.000100) + mad r7.xz, r7.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) + mad r16.xy, r7.xzxx, cb1[1].wwww, cb1[2].wwww + mov r16.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r7.xzw, r16.xyzx, t5.xwyz, s3, r0.z + div r0.z, r3.w, r2.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r3.w + add r2.x, r2.x, l(2.000000) + div r0.z, r0.z, r2.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r7.xzw, r0.zzzz, r7.xxzw + mad r17.xyz, r7.xzwx, r9.wwww, r17.xyzx +endif +mul r7.xzw, r17.xxyz, cb0[112].zzzz +mul r7.xzw, r7.xxzw, cb0[111].yyyy +if_nz r6.w + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r16.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r2.x, -r0.z, l(1.000000) + mul r17.xyz, r2.xxxx, r7.xzwx + mad r7.xzw, r16.xxyz, r0.zzzz, r17.xxyz +endif +mul r6.xyz, r3.xyzx, r6.xyzx +mul r6.xyz, r6.xyzx, cb0[111].xxxx +mad r0.z, r2.z, r12.x, r12.y +mul r7.xzw, r0.zzzz, r7.xxzw +mul r7.xzw, r8.xxyz, r7.xxzw +mad r6.xyz, r6.xyzx, r11.xywx, r7.xzwx +mul r5.xyzw, r5.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) +dp4 r8.x, r14.xyzw, r5.xyzw +dp4 r8.y, r13.xyzw, r5.xyzw +dp4 r8.z, r15.xyzw, r5.xyzw +max r5.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +mul r5.xyz, r5.xyzx, cb0[111].xxxx +mul r5.xyz, r11.xywx, r5.xyzx +max r0.z, r3.y, r3.x +max r0.z, r3.z, r0.z +max r0.z, r0.z, l(0.010000) +div r3.xyz, r3.xyzx, r0.zzzz +mul r3.xyz, r3.xyzx, r5.xyzx +mul r0.z, r4.x, l(0.00787401572) +min r2.x, r8.w, l(1.000000) +bfi r1.z, l(3), l(2), r1.z, l(0) +ftou r2.z, r2.w +bfi r1.z, l(2), l(0), r2.z, r1.z +utof r1.z, r1.z +mul r1.z, r1.z, l(0.0322580636) +mad r0.z, r0.z, r2.x, r1.z +mul r2.xzw, r0.zzzz, r3.xxyz +mad r2.xzw, r2.xxzw, l(0.318309873, 0.000000, 0.318309873, 0.318309873), r6.xxyz +add r1.xyz, r1.xywx, r2.xzwx +mad r0.z, r7.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r4.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r7.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xzw, r0.zzzz, cb0[155].xxyz +mul r2.xzw, r2.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r2.xzw, r2.xxzw +dp3 r0.z, -r10.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r3.x, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r3.x +lt r3.x, l(0.000000), cb0[163].z +if_nz r3.x + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r10.xyzx, -r9.xyzx + add r3.z, r7.y, -cb0[44].y + lt r3.w, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.w + mul r0.x, r0.x, cb0[163].w + div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul r4.x, r0.x, r3.w + mad r5.x, r4.x, r3.z, cb0[44].y + mad r3.z, -r4.x, r3.z, r3.z + mul r4.x, r3.z, cb0[159].z + max r4.x, r4.x, l(-127.000000) + mul r3.z, r3.z, cb0[162].x + max r3.z, r3.z, l(-127.000000) + add r5.y, r5.x, -cb0[159].x + mul r5.y, r5.y, cb0[159].z + max r5.y, r5.y, l(-127.000000) + exp r5.y, -r5.y + mul r5.y, r5.y, cb0[159].y + lt r5.z, l(5.960464478E-08), |r4.x| + exp r5.w, -r4.x + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.x + mad r4.x, -r4.x, l(0.240226507), l(0.693147182) + movc r4.x, r5.z, r5.w, r4.x + add r5.x, r5.x, -cb0[162].z + mul r5.x, r5.x, cb0[162].x + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[162].y + lt r5.z, l(5.960464478E-08), |r3.z| + exp r5.w, -r3.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r3.z + mad r3.z, -r3.z, l(0.240226507), l(0.693147182) + movc r3.z, r5.z, r5.w, r3.z + mul r3.z, r3.z, r5.x + mad r3.z, r5.y, r4.x, r3.z + mad r0.x, -r0.x, r3.w, l(1.000000) + mul r0.x, r4.w, r0.x + mul r0.x, r0.x, r3.z + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r3.zw, r4.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r3.z + add r0.x, r3.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r2.y|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t10.xyzw, s1, l(0.000000) + add r0.y, |r2.y|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r7.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.y, cb0[44].y, -cb0[159].x + mul r2.y, r2.y, cb0[159].z + max r2.y, r2.y, l(-127.000000) + exp r2.y, -r2.y + mul r2.y, r2.y, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.y, r0.w, r0.y + mul r0.y, r4.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r4.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xzwx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.y, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.y, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx +mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xD3FA93FC.cso b/src/games/endfield/deferred-lighting/0xD3FA93FC.cso new file mode 100644 index 0000000000000000000000000000000000000000..f7740c34d15134b0d10688be39dd46600384e9ce GIT binary patch literal 49064 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 mlWV=@gW!*!J=eIlPw= 1.f) { - - r0.y = 1.0 + (r0.y - 1.0) * 4.0; + if (SHADOW_HARDENING >= 1.f) { + r0.y = 1.0 + (r0.y - 1.0) * 2.0; + + // Soften cloud shadow transitions for diffused look + r0.y = smoothstep(0.0, 1.0, r0.y); + r0.y = lerp(r0.y, 1.0, 0.25); } r0.x = r0.x * r0.y; @@ -385,6 +388,7 @@ void main( r0.x = cb2[35].z; } r0.x = min(1, r0.x); + r0.x = -1 + r0.x; o0.x = cb2[34].x * r0.x + 1; o0.yz = float2(1,0); diff --git a/src/games/endfield/shared.h b/src/games/endfield/shared.h index eecc1a5159..471a406e33 100644 --- a/src/games/endfield/shared.h +++ b/src/games/endfield/shared.h @@ -88,6 +88,8 @@ struct ShaderInjectData { float godrays_intensity; float perchannelblowout; float shadow_hardening; + float chromatic_aberration_strength; + float fog_modification; }; #ifndef __cplusplus @@ -145,6 +147,8 @@ cbuffer shader_injection : register(b13) { #define GODRAYS_INTENSITY shader_injection.godrays_intensity #define PER_CHANNEL_BLOWOUT shader_injection.perchannelblowout #define SHADOW_HARDENING shader_injection.shadow_hardening +#define CHROMATIC_ABERRATION_STRENGTH shader_injection.chromatic_aberration_strength +#define FOG_MODIFICATION shader_injection.fog_modification #include "../../shaders/renodx.hlsl" diff --git a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl index fcc6984b07..0b71772291 100644 --- a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl @@ -49,15 +49,16 @@ void main( r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; r0.z = cmp(3 < cb1[25].x); if (r0.z != 0) { r2.xy = cmp(float2(0,0) != cb1[25].wz); r0.z = (int)r2.y | (int)r2.x; r2.xy = r0.xy * r0.ww; r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y + cb1[0].z; - r2.z = cb1[25].y + cb1[25].y; - r3.xyzw = cb1[25].yyyy * float4(3,3,4,4); + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; + r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); r4.xy = -r2.xy * r0.zz + v1.xy; r4.xyz = t0.SampleLevel(s1_s, r4.xy, 0).xyz; r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; @@ -65,10 +66,10 @@ void main( r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy + v1.xy; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; @@ -79,7 +80,7 @@ void main( r2.zw = -r2.xy * r2.zz + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r2.zw, 0).xyz; r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; - r0.z = cb1[25].y * 3 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; r2.xy = -r2.xy * r0.zz + v1.xy; r2.xyz = t0.SampleLevel(s1_s, r2.xy, 0).xyz; r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; @@ -90,12 +91,12 @@ void main( r0.z = cmp(0.000000 != cb1[25].w); r3.xy = r0.xy * r0.ww; r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r0.zw = -r0.xy * r0.zz + v1.xy; r3.xyz = t0.SampleLevel(s1_s, r0.zw, 0).xyz; r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * 3 + r0.z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; r0.xy = -r0.xy * r0.zz + v1.xy; r0.xyz = t0.SampleLevel(s1_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; diff --git a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl index c8a03191fa..933e10242f 100644 --- a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl @@ -47,15 +47,16 @@ void main( r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; r0.z = cmp(3 < cb1[25].x); if (r0.z != 0) { r2.xy = cmp(float2(0,0) != cb1[25].wz); r0.z = (int)r2.y | (int)r2.x; r2.xy = r0.xy * r0.ww; r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y + cb1[0].z; - r2.z = cb1[25].y + cb1[25].y; - r3.xyzw = cb1[25].yyyy * float4(3,3,4,4); + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; + r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); r4.xy = -r2.xy * r0.zz + v1.xy; r4.xyz = t0.SampleLevel(s0_s, r4.xy, 0).xyz; r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; @@ -63,10 +64,10 @@ void main( r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy + v1.xy; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; @@ -77,7 +78,7 @@ void main( r2.zw = -r2.xy * r2.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; - r0.z = cb1[25].y * 3 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; r2.xy = -r2.xy * r0.zz + v1.xy; r2.xyz = t0.SampleLevel(s0_s, r2.xy, 0).xyz; r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; @@ -88,12 +89,12 @@ void main( r0.z = cmp(0.000000 != cb1[25].w); r3.xy = r0.xy * r0.ww; r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r0.zw = -r0.xy * r0.zz + v1.xy; r3.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * 3 + r0.z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; r0.xy = -r0.xy * r0.zz + v1.xy; r0.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; diff --git a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl index 0fd7d6f091..ac3ea9efae 100644 --- a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl @@ -46,15 +46,16 @@ void main( r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; r0.z = cmp(3 < cb1[25].x); if (r0.z != 0) { r2.xy = cmp(float2(0,0) != cb1[25].wz); r0.z = (int)r2.y | (int)r2.x; r2.xy = r0.xy * r0.ww; r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y + cb1[0].z; - r2.z = cb1[25].y + cb1[25].y; - r3.xyzw = cb1[25].yyyy * float4(3,3,4,4); + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; + r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); r4.xy = -r2.xy * r0.zz + v1.xy; r4.xyz = t0.SampleLevel(s0_s, r4.xy, 0).xyz; r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; @@ -62,10 +63,10 @@ void main( r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy + v1.xy; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; @@ -76,7 +77,7 @@ void main( r2.zw = -r2.xy * r2.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; - r0.z = cb1[25].y * 3 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; r2.xy = -r2.xy * r0.zz + v1.xy; r2.xyz = t0.SampleLevel(s0_s, r2.xy, 0).xyz; r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; @@ -87,12 +88,12 @@ void main( r0.z = cmp(0.000000 != cb1[25].w); r3.xy = r0.xy * r0.ww; r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r0.zw = -r0.xy * r0.zz + v1.xy; r3.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * 3 + r0.z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; r0.xy = -r0.xy * r0.zz + v1.xy; r0.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; diff --git a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl index e9b960d8a6..2f1a823427 100644 --- a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl @@ -50,14 +50,15 @@ void main( r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; r0.z = cmp(3 < cb1[25].x); if (r0.z != 0) { r2.xy = cmp(float2(0,0) != cb1[25].wz); r0.z = (int)r2.y | (int)r2.x; r2.xy = r0.xy * r0.ww; r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y + cb1[0].z; - r2.z = cb1[25].y + cb1[25].y; + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; r3.xyzw = cb1[25].yyyy * float4(3,3,4,4); r4.xy = -r2.xy * r0.zz + v1.xy; r4.xyz = t0.SampleLevel(s1_s, r4.xy, 0).xyz; @@ -66,10 +67,10 @@ void main( r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy + v1.xy; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; @@ -80,7 +81,7 @@ void main( r2.zw = -r2.xy * r2.zz + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r2.zw, 0).xyz; r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; - r0.z = cb1[25].y * 3 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; r2.xy = -r2.xy * r0.zz + v1.xy; r2.xyz = t0.SampleLevel(s1_s, r2.xy, 0).xyz; r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; @@ -91,12 +92,12 @@ void main( r0.z = cmp(0.000000 != cb1[25].w); r3.xy = r0.xy * r0.ww; r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r0.zw = -r0.xy * r0.zz + v1.xy; r3.xyz = t0.SampleLevel(s1_s, r0.zw, 0).xyz; r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * 3 + r0.z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; r0.xy = -r0.xy * r0.zz + v1.xy; r0.xyz = t0.SampleLevel(s1_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; diff --git a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl index 8f8bc3ccfb..17c70cb722 100644 --- a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl @@ -46,15 +46,16 @@ void main( r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; r0.z = cmp(3 < cb1[25].x); if (r0.z != 0) { r2.xy = cmp(float2(0,0) != cb1[25].wz); r0.z = (int)r2.y | (int)r2.x; r2.xy = r0.xy * r0.ww; r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y + cb1[0].z; - r2.z = cb1[25].y + cb1[25].y; - r3.xyzw = cb1[25].yyyy * float4(3,3,4,4); + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; + r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); r4.xy = -r2.xy * r0.zz + v1.xy; r4.xyz = t0.SampleLevel(s0_s, r4.xy, 0).xyz; r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; @@ -62,10 +63,10 @@ void main( r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy + v1.xy; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; @@ -76,7 +77,7 @@ void main( r2.zw = -r2.xy * r2.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; - r0.z = cb1[25].y * 3 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; r2.xy = -r2.xy * r0.zz + v1.xy; r2.xyz = t0.SampleLevel(s0_s, r2.xy, 0).xyz; r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; @@ -87,12 +88,12 @@ void main( r0.z = cmp(0.000000 != cb1[25].w); r3.xy = r0.xy * r0.ww; r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r0.zw = -r0.xy * r0.zz + v1.xy; r3.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * 3 + r0.z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; r0.xy = -r0.xy * r0.zz + v1.xy; r0.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; diff --git a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl index 7f8a91f1d1..1a8d342f42 100644 --- a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl @@ -44,15 +44,16 @@ void main( r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; r0.z = cmp(3 < cb1[25].x); if (r0.z != 0) { r2.xy = cmp(float2(0,0) != cb1[25].wz); r0.z = (int)r2.y | (int)r2.x; r2.xy = r0.xy * r0.ww; r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y + cb1[0].z; - r2.z = cb1[25].y + cb1[25].y; - r3.xyzw = cb1[25].yyyy * float4(3,3,4,4); + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; + r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); r4.xy = -r2.xy * r0.zz + v1.xy; r4.xyz = t0.SampleLevel(s0_s, r4.xy, 0).xyz; r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; @@ -60,10 +61,10 @@ void main( r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy + v1.xy; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; @@ -74,7 +75,7 @@ void main( r2.zw = -r2.xy * r2.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; - r0.z = cb1[25].y * 3 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; r2.xy = -r2.xy * r0.zz + v1.xy; r2.xyz = t0.SampleLevel(s0_s, r2.xy, 0).xyz; r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; @@ -85,12 +86,12 @@ void main( r0.z = cmp(0.000000 != cb1[25].w); r3.xy = r0.xy * r0.ww; r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r0.zw = -r0.xy * r0.zz + v1.xy; r3.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * 3 + r0.z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; r0.xy = -r0.xy * r0.zz + v1.xy; r0.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; diff --git a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl index db6069ffa5..116477eca6 100644 --- a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl @@ -38,27 +38,28 @@ void main( r0.z = exp2(r0.z); r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; - r1.xyz = float3(1, 0, 0) * r1.xyz; + r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; r0.z = cmp(3 < cb1[25].x); if (r0.z != 0) { r2.xy = cmp(float2(0, 0) != cb1[25].wz); r0.z = (int)r2.y | (int)r2.x; r2.xy = r0.xy * r0.ww; r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y + cb1[0].z; - r2.z = cb1[25].y + cb1[25].y; - r3.xyzw = cb1[25].yyyy * float4(3, 3, 4, 4); + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; + r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); r4.xy = -r2.xy * r0.zz + v1.xy; r4.xyz = t0.SampleLevel(s0_s, r4.xy, 0).xyz; r4.xyz = r4.xyz * float3(1, 0, 0) + r1.xyz; r0.z = r0.z + r0.z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(1, 0, 0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy + v1.xy; + r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0, 1, 0) + r4.xyz; - r0.z = cb1[25].y * 2 + cb1[0].z; + r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0, 1, 0) + r4.xyz; @@ -68,8 +69,8 @@ void main( r4.xyz = r5.xyz * float3(0, 1, 0) + r4.xyz; r2.zw = -r2.xy * r2.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; - r4.xyz = r5.xyz * float3(0, 0, 1) + r4.xyz; - r0.z = cb1[25].y * 3 + cb1[0].z; + r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; r2.xy = -r2.xy * r0.zz + v1.xy; r2.xyz = t0.SampleLevel(s0_s, r2.xy, 0).xyz; r2.xyz = r2.xyz * float3(0, 0, 1) + r4.xyz; @@ -80,12 +81,12 @@ void main( r0.z = cmp(0.000000 != cb1[25].w); r3.xy = r0.xy * r0.ww; r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r0.zw = -r0.xy * r0.zz + v1.xy; r3.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; r1.xyz = r3.xyz * float3(0, 1, 0) + r1.xyz; r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * 3 + r0.z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; r0.xy = -r0.xy * r0.zz + v1.xy; r0.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0, 0, 1) + r1.xyz; diff --git a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl index b5d67478ad..4e8a53fceb 100644 --- a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl @@ -50,15 +50,16 @@ void main( r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; r0.z = cmp(3 < cb1[25].x); if (r0.z != 0) { r2.xy = cmp(float2(0,0) != cb1[25].wz); r0.z = (int)r2.y | (int)r2.x; r2.xy = r0.xy * r0.ww; r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y + cb1[0].z; - r2.z = cb1[25].y + cb1[25].y; - r3.xyzw = cb1[25].yyyy * float4(3,3,4,4); + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; + r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); r4.xy = -r2.xy * r0.zz + v1.xy; r4.xyz = t0.SampleLevel(s1_s, r4.xy, 0).xyz; r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; @@ -66,10 +67,10 @@ void main( r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy + v1.xy; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; @@ -80,7 +81,7 @@ void main( r2.zw = -r2.xy * r2.zz + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r2.zw, 0).xyz; r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; - r0.z = cb1[25].y * 3 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; r2.xy = -r2.xy * r0.zz + v1.xy; r2.xyz = t0.SampleLevel(s1_s, r2.xy, 0).xyz; r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; @@ -91,12 +92,12 @@ void main( r0.z = cmp(0.000000 != cb1[25].w); r3.xy = r0.xy * r0.ww; r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r0.zw = -r0.xy * r0.zz + v1.xy; r3.xyz = t0.SampleLevel(s1_s, r0.zw, 0).xyz; r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * 3 + r0.z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; r0.xy = -r0.xy * r0.zz + v1.xy; r0.xyz = t0.SampleLevel(s1_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; diff --git a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl index a5e402d315..2120a00472 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl @@ -50,15 +50,16 @@ void main( r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; r0.z = cmp(3 < cb1[25].x); if (r0.z != 0) { r2.xy = cmp(float2(0,0) != cb1[25].wz); r0.z = (int)r2.y | (int)r2.x; r2.xy = r0.xy * r0.ww; r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y + cb1[0].z; - r2.z = cb1[25].y + cb1[25].y; - r3.xyzw = cb1[25].yyyy * float4(3,3,4,4); + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; + r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); r4.xy = -r2.xy * r0.zz + v1.xy; r4.xyz = t0.SampleLevel(s1_s, r4.xy, 0).xyz; r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; @@ -66,10 +67,10 @@ void main( r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy + v1.xy; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; @@ -80,7 +81,7 @@ void main( r2.zw = -r2.xy * r2.zz + v1.xy; r5.xyz = t0.SampleLevel(s1_s, r2.zw, 0).xyz; r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; - r0.z = cb1[25].y * 3 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; r2.xy = -r2.xy * r0.zz + v1.xy; r2.xyz = t0.SampleLevel(s1_s, r2.xy, 0).xyz; r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; @@ -91,12 +92,12 @@ void main( r0.z = cmp(0.000000 != cb1[25].w); r3.xy = r0.xy * r0.ww; r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r0.zw = -r0.xy * r0.zz + v1.xy; r3.xyz = t0.SampleLevel(s1_s, r0.zw, 0).xyz; r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * 3 + r0.z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; r0.xy = -r0.xy * r0.zz + v1.xy; r0.xyz = t0.SampleLevel(s1_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; diff --git a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl index bd8a9a6004..f8f3fd2938 100644 --- a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl @@ -44,15 +44,16 @@ void main( r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; r0.z = cmp(3 < cb1[25].x); if (r0.z != 0) { r2.xy = cmp(float2(0,0) != cb1[25].wz); r0.z = (int)r2.y | (int)r2.x; r2.xy = r0.xy * r0.ww; r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y + cb1[0].z; - r2.z = cb1[25].y + cb1[25].y; - r3.xyzw = cb1[25].yyyy * float4(3,3,4,4); + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; + r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); r4.xy = -r2.xy * r0.zz + v1.xy; r4.xyz = t0.SampleLevel(s0_s, r4.xy, 0).xyz; r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; @@ -60,10 +61,10 @@ void main( r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy + v1.xy; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r5.xy = -r2.xy * r0.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; @@ -74,7 +75,7 @@ void main( r2.zw = -r2.xy * r2.zz + v1.xy; r5.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; - r0.z = cb1[25].y * 3 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; r2.xy = -r2.xy * r0.zz + v1.xy; r2.xyz = t0.SampleLevel(s0_s, r2.xy, 0).xyz; r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; @@ -85,12 +86,12 @@ void main( r0.z = cmp(0.000000 != cb1[25].w); r3.xy = r0.xy * r0.ww; r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * 2 + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; r0.zw = -r0.xy * r0.zz + v1.xy; r3.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * 3 + r0.z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; r0.xy = -r0.xy * r0.zz + v1.xy; r0.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; From a54ecbf3cf825dd6412813fc976bfc6e16cb8f82 Mon Sep 17 00:00:00 2001 From: SGTForgery Date: Sun, 1 Feb 2026 03:01:38 +0000 Subject: [PATCH 07/40] feat(endfield) Added deferred shader support for alt fog / bypass for Wulin, UI toggle hotkey, Reworked UID / latency bar toggles to work with every res --- src/games/endfield/addon.cpp | 289 ++- .../endfield/deferred-lighting/0x05D849CE.cso | Bin 0 -> 57276 bytes .../deferred-lighting/0x05D849CE.ps_5_0.asm | 1864 ++++++++++++++ .../0x05D849CE.ps_5_0_original_backup.asm | 1844 ++++++++++++++ .../endfield/deferred-lighting/0x0E84DFD1.cso | Bin 0 -> 59992 bytes .../deferred-lighting/0x0E84DFD1.ps_5_0.asm | 1962 +++++++++++++++ .../0x0E84DFD1.ps_5_0_original_backup.asm | 1942 ++++++++++++++ .../endfield/deferred-lighting/0x1E8A471E.cso | Bin 47548 -> 47020 bytes .../deferred-lighting/0x1E8A471E.ps_5_0.asm | 49 +- .../endfield/deferred-lighting/0x37837806.cso | Bin 27444 -> 26916 bytes .../deferred-lighting/0x37837806.ps_5_0.asm | 49 +- .../endfield/deferred-lighting/0x518D3855.cso | Bin 0 -> 51720 bytes .../deferred-lighting/0x518D3855.ps_5_0.asm | 1698 +++++++++++++ .../0x518D3855.ps_5_0_original_backup.asm | 1678 +++++++++++++ .../endfield/deferred-lighting/0x5468822B.cso | Bin 0 -> 57096 bytes .../deferred-lighting/0x5468822B.ps_5_0.asm | 1860 ++++++++++++++ .../0x5468822B.ps_5_0_original_backup.asm | 1840 ++++++++++++++ .../endfield/deferred-lighting/0x620A40FD.cso | Bin 0 -> 27940 bytes .../deferred-lighting/0x620A40FD.ps_5_0.asm | 945 +++++++ .../0x620A40FD.ps_5_0_original_backup.asm | 901 +++++++ .../endfield/deferred-lighting/0x7010AF4B.cso | Bin 0 -> 27140 bytes .../deferred-lighting/0x7010AF4B.ps_5_0.asm | 913 +++++++ .../0x7010AF4B.ps_5_0_original_backup.asm | 869 +++++++ .../endfield/deferred-lighting/0x8BA3C806.cso | Bin 0 -> 48028 bytes .../deferred-lighting/0x8BA3C806.ps_5_0.asm | 1576 ++++++++++++ .../0x8BA3C806.ps_5_0_original_backup.asm | 1532 +++++++++++ .../endfield/deferred-lighting/0x8D6CC6FA.cso | Bin 0 -> 67840 bytes .../deferred-lighting/0x8D6CC6FA.ps_5_0.asm | 2234 +++++++++++++++++ .../0x8D6CC6FA.ps_5_0_original_backup.asm | 2190 ++++++++++++++++ .../endfield/deferred-lighting/0x9630ACD4.cso | Bin 0 -> 48560 bytes .../deferred-lighting/0x9630ACD4.ps_5_0.asm | 1596 ++++++++++++ .../0x9630ACD4.ps_5_0_original_backup.asm | 1576 ++++++++++++ .../endfield/deferred-lighting/0x99725481.cso | Bin 0 -> 60512 bytes .../deferred-lighting/0x99725481.ps_5_0.asm | 1979 +++++++++++++++ .../0x99725481.ps_5_0_original_backup.asm | 1959 +++++++++++++++ .../endfield/deferred-lighting/0xB094C87E.cso | Bin 0 -> 51188 bytes .../deferred-lighting/0xB094C87E.ps_5_0.asm | 1681 +++++++++++++ .../0xB094C87E.ps_5_0_original_backup.asm | 1661 ++++++++++++ .../endfield/deferred-lighting/0xC34914B1.cso | Bin 0 -> 58856 bytes .../deferred-lighting/0xC34914B1.ps_5_0.asm | 1931 ++++++++++++++ .../0xC34914B1.ps_5_0_original_backup.asm | 1911 ++++++++++++++ .../endfield/deferred-lighting/0xD3FA93FC.cso | Bin 49064 -> 48536 bytes .../deferred-lighting/0xD3FA93FC.ps_5_0.asm | 49 +- .../endfield/deferred-lighting/0xD5B102A4.cso | Bin 0 -> 38580 bytes .../deferred-lighting/0xD5B102A4.ps_5_0.asm | 1283 ++++++++++ .../0xD5B102A4.ps_5_0_original_backup.asm | 1263 ++++++++++ .../endfield/deferred-lighting/0xD88CD7C9.cso | Bin 26660 -> 26132 bytes .../deferred-lighting/0xD88CD7C9.ps_5_0.asm | 49 +- .../endfield/deferred-lighting/0xE322C21D.cso | Bin 0 -> 49564 bytes .../deferred-lighting/0xE322C21D.ps_5_0.asm | 1634 ++++++++++++ .../0xE322C21D.ps_5_0_original_backup.asm | 1590 ++++++++++++ .../endfield/deferred-lighting/0xEC0BE43D.cso | Bin 0 -> 57296 bytes .../deferred-lighting/0xEC0BE43D.ps_5_0.asm | 1867 ++++++++++++++ .../0xEC0BE43D.ps_5_0_original_backup.asm | 1847 ++++++++++++++ .../endfield/deferred-lighting/0xF901F0EC.cso | Bin 0 -> 29572 bytes .../deferred-lighting/0xF901F0EC.ps_5_0.asm | 993 ++++++++ .../0xF901F0EC.ps_5_0_original_backup.asm | 973 +++++++ .../deferred-lighting/fog_blend_test.cso | Bin 0 -> 1052 bytes .../cloud-shadows_0x61FA72DD.ps_5_0.hlsl | 4 +- .../endfield/ui/uid_0x6B8E9049.ps_5_0.hlsl | 17 +- 60 files changed, 51881 insertions(+), 217 deletions(-) create mode 100644 src/games/endfield/deferred-lighting/0x05D849CE.cso create mode 100644 src/games/endfield/deferred-lighting/0x05D849CE.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x05D849CE.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0x0E84DFD1.cso create mode 100644 src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0x518D3855.cso create mode 100644 src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x518D3855.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0x5468822B.cso create mode 100644 src/games/endfield/deferred-lighting/0x5468822B.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x5468822B.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0x620A40FD.cso create mode 100644 src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0x7010AF4B.cso create mode 100644 src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0x8BA3C806.cso create mode 100644 src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0x8D6CC6FA.cso create mode 100644 src/games/endfield/deferred-lighting/0x8D6CC6FA.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x8D6CC6FA.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0x9630ACD4.cso create mode 100644 src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0x99725481.cso create mode 100644 src/games/endfield/deferred-lighting/0x99725481.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x99725481.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0xB094C87E.cso create mode 100644 src/games/endfield/deferred-lighting/0xB094C87E.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xB094C87E.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0xC34914B1.cso create mode 100644 src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0xD5B102A4.cso create mode 100644 src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0xE322C21D.cso create mode 100644 src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0xEC0BE43D.cso create mode 100644 src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0xF901F0EC.cso create mode 100644 src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/fog_blend_test.cso diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 8cccde5733..9d44b0be0f 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -71,6 +71,114 @@ bool ExecuteReshadeEffects(reshade::api::command_list* cmd_list) { return true; } +// Hotkey state tracking (defined before settings array for use in on_draw lambdas) +bool ui_toggle_key_was_pressed = false; +int ui_toggle_hotkey = 0; +bool hotkey_input_active = false; + +// Heuristic tracking for ping/UID UI +bool is_ping_input_candidate = false; +bool is_ping_drawn = false; +bool is_uid_input_candidate = false; + +// on_draw callback for ping/latency bar shader (0xEF07F89A) +bool OnPingDraw(reshade::api::command_list* cmd_list) { + if (is_ping_input_candidate) { + is_ping_drawn = true; + return shader_injection.ping_text_opacity >= 0.5f; + } + is_ping_drawn = false; + return true; +} + +// on_draw callback for UID text shader (0x6B8E9049) +bool OnUIDDraw(reshade::api::command_list* cmd_list) { + if (is_uid_input_candidate) { + if (shader_injection.status_text_opacity < 0.5f) { + return false; + } + } + return true; +} + +// Helper function to get key name from virtual key code +std::string GetKeyName(int keycode) { + if (keycode == 0 || keycode >= 256) return ""; + + static const char* keyboard_keys[256] = { + "", "Left Mouse", "Right Mouse", "Cancel", "Middle Mouse", "X1 Mouse", "X2 Mouse", "", "Backspace", "Tab", "", "", "Clear", "Enter", "", "", + "Shift", "Control", "Alt", "Pause", "Caps Lock", "", "", "", "", "", "", "Escape", "", "", "", "", + "Space", "Page Up", "Page Down", "End", "Home", "Left Arrow", "Up Arrow", "Right Arrow", "Down Arrow", "Select", "", "", "Print Screen", "Insert", "Delete", "Help", + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "", "", "", "", "", "", + "", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", + "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Left Windows", "Right Windows", "Apps", "", "Sleep", + "Numpad 0", "Numpad 1", "Numpad 2", "Numpad 3", "Numpad 4", "Numpad 5", "Numpad 6", "Numpad 7", "Numpad 8", "Numpad 9", "Numpad *", "Numpad +", "", "Numpad -", "Numpad Decimal", "Numpad /", + "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", "F16", + "F17", "F18", "F19", "F20", "F21", "F22", "F23", "F24", "", "", "", "", "", "", "", "", + "Num Lock", "Scroll Lock", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "Left Shift", "Right Shift", "Left Control", "Right Control", "Left Menu", "Right Menu", "Browser Back", "Browser Forward", "Browser Refresh", "Browser Stop", "Browser Search", "Browser Favorites", "Browser Home", "Volume Mute", "Volume Down", "Volume Up", + "Next Track", "Previous Track", "Media Stop", "Media Play/Pause", "Mail", "Media Select", "Launch App 1", "Launch App 2", "", "", "OEM ;", "OEM +", "OEM ,", "OEM -", "OEM .", "OEM /", + "OEM ~", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "OEM [", "OEM \\", "OEM ]", "OEM '", "OEM 8", + "", "", "OEM <", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "Attn", "CrSel", "ExSel", "Erase EOF", "Play", "Zoom", "", "PA1", "OEM Clear", "" + }; + + return keyboard_keys[keycode]; +} + +int GetLastKeyPressedImGui() { + + struct KeyMapping { + ImGuiKey imgui_key; + int vk_code; + }; + + static const KeyMapping kKeyMappings[] = { + // Function keys + {ImGuiKey_F1, VK_F1}, {ImGuiKey_F2, VK_F2}, {ImGuiKey_F3, VK_F3}, {ImGuiKey_F4, VK_F4}, + {ImGuiKey_F5, VK_F5}, {ImGuiKey_F6, VK_F6}, {ImGuiKey_F7, VK_F7}, {ImGuiKey_F8, VK_F8}, + {ImGuiKey_F9, VK_F9}, {ImGuiKey_F10, VK_F10}, {ImGuiKey_F11, VK_F11}, {ImGuiKey_F12, VK_F12}, + // Navigation keys + {ImGuiKey_Insert, VK_INSERT}, {ImGuiKey_Delete, VK_DELETE}, {ImGuiKey_Home, VK_HOME}, {ImGuiKey_End, VK_END}, + {ImGuiKey_PageUp, VK_PRIOR}, {ImGuiKey_PageDown, VK_NEXT}, + // Arrow keys + {ImGuiKey_LeftArrow, VK_LEFT}, {ImGuiKey_RightArrow, VK_RIGHT}, {ImGuiKey_UpArrow, VK_UP}, {ImGuiKey_DownArrow, VK_DOWN}, + // Special keys + {ImGuiKey_Backspace, VK_BACK}, {ImGuiKey_Space, VK_SPACE}, {ImGuiKey_Enter, VK_RETURN}, + {ImGuiKey_Escape, VK_ESCAPE}, {ImGuiKey_Tab, VK_TAB}, + {ImGuiKey_Pause, VK_PAUSE}, {ImGuiKey_ScrollLock, VK_SCROLL}, {ImGuiKey_PrintScreen, VK_SNAPSHOT}, + // Numpad + {ImGuiKey_Keypad0, VK_NUMPAD0}, {ImGuiKey_Keypad1, VK_NUMPAD1}, {ImGuiKey_Keypad2, VK_NUMPAD2}, + {ImGuiKey_Keypad3, VK_NUMPAD3}, {ImGuiKey_Keypad4, VK_NUMPAD4}, {ImGuiKey_Keypad5, VK_NUMPAD5}, + {ImGuiKey_Keypad6, VK_NUMPAD6}, {ImGuiKey_Keypad7, VK_NUMPAD7}, {ImGuiKey_Keypad8, VK_NUMPAD8}, + {ImGuiKey_Keypad9, VK_NUMPAD9}, {ImGuiKey_KeypadDecimal, VK_DECIMAL}, + {ImGuiKey_KeypadDivide, VK_DIVIDE}, {ImGuiKey_KeypadMultiply, VK_MULTIPLY}, + {ImGuiKey_KeypadSubtract, VK_SUBTRACT}, {ImGuiKey_KeypadAdd, VK_ADD}, {ImGuiKey_KeypadEnter, VK_RETURN}, + // Letters + {ImGuiKey_A, 'A'}, {ImGuiKey_B, 'B'}, {ImGuiKey_C, 'C'}, {ImGuiKey_D, 'D'}, {ImGuiKey_E, 'E'}, + {ImGuiKey_F, 'F'}, {ImGuiKey_G, 'G'}, {ImGuiKey_H, 'H'}, {ImGuiKey_I, 'I'}, {ImGuiKey_J, 'J'}, + {ImGuiKey_K, 'K'}, {ImGuiKey_L, 'L'}, {ImGuiKey_M, 'M'}, {ImGuiKey_N, 'N'}, {ImGuiKey_O, 'O'}, + {ImGuiKey_P, 'P'}, {ImGuiKey_Q, 'Q'}, {ImGuiKey_R, 'R'}, {ImGuiKey_S, 'S'}, {ImGuiKey_T, 'T'}, + {ImGuiKey_U, 'U'}, {ImGuiKey_V, 'V'}, {ImGuiKey_W, 'W'}, {ImGuiKey_X, 'X'}, {ImGuiKey_Y, 'Y'}, {ImGuiKey_Z, 'Z'}, + // Numbers + {ImGuiKey_0, '0'}, {ImGuiKey_1, '1'}, {ImGuiKey_2, '2'}, {ImGuiKey_3, '3'}, {ImGuiKey_4, '4'}, + {ImGuiKey_5, '5'}, {ImGuiKey_6, '6'}, {ImGuiKey_7, '7'}, {ImGuiKey_8, '8'}, {ImGuiKey_9, '9'}, + // Punctuation + {ImGuiKey_GraveAccent, VK_OEM_3}, {ImGuiKey_Minus, VK_OEM_MINUS}, {ImGuiKey_Equal, VK_OEM_PLUS}, + {ImGuiKey_LeftBracket, VK_OEM_4}, {ImGuiKey_RightBracket, VK_OEM_6}, {ImGuiKey_Backslash, VK_OEM_5}, + {ImGuiKey_Semicolon, VK_OEM_1}, {ImGuiKey_Apostrophe, VK_OEM_7}, + {ImGuiKey_Comma, VK_OEM_COMMA}, {ImGuiKey_Period, VK_OEM_PERIOD}, {ImGuiKey_Slash, VK_OEM_2}, + }; + + for (const auto& mapping : kKeyMappings) { + if (ImGui::IsKeyPressed(mapping.imgui_key, false)) { + return mapping.vk_code; + } + } + return 0; +} + renodx::utils::settings::Settings settings = { new renodx::utils::settings::Setting{ .key = "SettingsMode", @@ -355,7 +463,7 @@ renodx::utils::settings::Settings settings = { .binding = &shader_injection.status_text_opacity, .value_type = renodx::utils::settings::SettingValueType::INTEGER, .default_value = 0.f, - .label = "UID Text", + .label = "UID / Latency Text", .section = "User Interface & Video", .tooltip = "Toggle UID text visibility", .labels = {"Hidden", "Visible"}, @@ -365,7 +473,7 @@ renodx::utils::settings::Settings settings = { .binding = &shader_injection.ping_text_opacity, .value_type = renodx::utils::settings::SettingValueType::INTEGER, .default_value = 0.f, - .label = "Ping Text", + .label = "Latency Bar", .section = "User Interface & Video", .tooltip = "Toggle ping text visibility", .labels = {"Hidden", "Visible"}, @@ -377,9 +485,71 @@ renodx::utils::settings::Settings settings = { .default_value = 1.f, .label = "UI Visibility", .section = "User Interface & Video", - .tooltip = "Toggle UI visibility for screenshots", + .tooltip = "Toggle UI visibility for screenshots (use hotkey for quick toggle)", .labels = {"Hidden", "Visible"}, }, + new renodx::utils::settings::Setting{ + .key = "UIVisibilityHotkey", + .value_type = renodx::utils::settings::SettingValueType::CUSTOM, + .default_value = 0.f, + .label = "UI Toggle Hotkey", + .section = "User Interface & Video", + .tooltip = "Click in the field and press any key to set the hotkey, or press Backspace/Delete to clear", + .on_draw = []() { + static bool key_was_pressed = false; + bool changed = false; + + // Get current key name for display + std::string key_name = ui_toggle_hotkey != 0 ? GetKeyName(ui_toggle_hotkey) : ""; + char buf[64] = {0}; + if (!key_name.empty()) { + size_t copy_len = (key_name.size() < sizeof(buf) - 1) ? key_name.size() : sizeof(buf) - 1; + memcpy(buf, key_name.c_str(), copy_len); + } + + // Create the input text widget + ImGui::InputTextWithHint( + "UI Toggle Hotkey", + "Click to set keyboard shortcut", + buf, + sizeof(buf), + ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_NoUndoRedo | ImGuiInputTextFlags_NoHorizontalScroll + ); + + // Check if widget is active and capture key presses + if (ImGui::IsItemActive()) { + hotkey_input_active = true; + int key_pressed = GetLastKeyPressedImGui(); + + if (key_pressed != 0 && !key_was_pressed) { + if (key_pressed == VK_BACK || key_pressed == VK_DELETE) { + ui_toggle_hotkey = 0; + changed = true; + } else if (key_pressed != VK_ESCAPE) { + ui_toggle_hotkey = key_pressed; + changed = true; + } + + if (changed) { + reshade::set_config_value(nullptr, renodx::utils::settings::global_name.c_str(), "UIVisibilityHotkey", ui_toggle_hotkey); + } + key_was_pressed = true; + } else if (key_pressed == 0) { + key_was_pressed = false; + } + } else { + hotkey_input_active = false; + key_was_pressed = false; + } + + if (ImGui::IsItemHovered(ImGuiHoveredFlags_ForTooltip)) { + ImGui::SetTooltip("Click and press any key to set hotkey.\nPress Backspace or Delete to clear."); + } + + return changed; + }, + .is_global = true, + }, new renodx::utils::settings::Setting{ .key = "VideoAutoHDR", .binding = &shader_injection.tone_map_hdr_video, @@ -547,6 +717,22 @@ renodx::utils::settings::Settings settings = { }, .is_visible = []() { return settings[0]->GetValue() >= 1; }, }, + new renodx::utils::settings::Setting{ + .key = "SwapChainEncoding", + .binding = &shader_injection.swap_chain_encoding, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 4.f, + .label = "Encoding", + .section = "Display Output", + .labels = {"None", "SRGB", "2.2", "2.4", "HDR10", "scRGB"}, + .is_enabled = []() { return shader_injection.tone_map_type >= 1; }, + .on_change_value = [](float previous, float current) { + bool is_hdr10 = current == 4; + shader_injection.swap_chain_encoding_color_space = (is_hdr10 ? 1.f : 0.f); + }, + .is_global = true, + .is_visible = []() { return current_settings_mode >= 1; }, + }, new renodx::utils::settings::Setting{ .key = "IntermediateDecoding", .binding = &shader_injection.intermediate_encoding, @@ -649,6 +835,23 @@ void OnPresetOff() { // renodx::utils::settings::UpdateSetting("colorGradeLUTScaling", 0.f); } +// OnDrawIndexed event handler for heuristic-based ping/UID detection +bool OnDrawIndexed( + reshade::api::command_list* cmd_list, + uint32_t index_count, + uint32_t instance_count, + uint32_t first_index, + int32_t vertex_offset, + uint32_t first_instance) { + // Detect ping/latency bar: drawn with index_count=18, first_index=0, vertex_offset=0 + is_ping_input_candidate = ((index_count == 18) && (first_index == 0) && (vertex_offset == 0)); + + // Detect UID text: drawn right after ping (first_index=18) when ping was drawn + is_uid_input_candidate = ((first_index == 18) && is_ping_drawn); + + return false; // Don't skip the draw call +} + void OnPresent(reshade::api::command_queue* queue, reshade::api::swapchain* swapchain, const reshade::api::rect* source_rect, @@ -660,6 +863,22 @@ void OnPresent(reshade::api::command_queue* queue, shader_injection.custom_flip_uv_y = 1.f; } + // Reset heuristic tracking flags for ping/UID detection + is_ping_input_candidate = false; + is_uid_input_candidate = false; + is_ping_drawn = false; + + // Check UI visibility hotkey (skip if user is currently setting a new hotkey) + if (ui_toggle_hotkey != 0 && !hotkey_input_active) { + bool key_down = (GetAsyncKeyState(ui_toggle_hotkey) & 0x8000) != 0; + if (key_down && !ui_toggle_key_was_pressed) { + // Toggle UI visibility + shader_injection.ui_visibility = (shader_injection.ui_visibility == 0.f) ? 1.f : 0.f; + // Update the setting value to keep UI in sync + renodx::utils::settings::UpdateSetting("UIVisibility", shader_injection.ui_visibility); + } + ui_toggle_key_was_pressed = key_down; + } } bool initialized = false; @@ -742,30 +961,14 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { settings.push_back(setting); } + // Initialize SwapChainEncoding-related settings { - auto* setting = new renodx::utils::settings::Setting{ - .key = "SwapChainEncoding", - .binding = &shader_injection.swap_chain_encoding, - .value_type = renodx::utils::settings::SettingValueType::INTEGER, - .default_value = 4.f, - .label = "Encoding", - .section = "Display Output", - .labels = {"None", "SRGB", "2.2", "2.4", "HDR10", "scRGB"}, - .is_enabled = []() { return shader_injection.tone_map_type >= 1; }, - .on_change_value = [](float previous, float current) { - bool is_hdr10 = current == 4; - shader_injection.swap_chain_encoding_color_space = (is_hdr10 ? 1.f : 0.f); - // return void - }, - .is_global = true, - .is_visible = []() { return current_settings_mode >= 1; }, - }; - renodx::utils::settings::LoadSetting(renodx::utils::settings::global_name, setting); - bool is_hdr10 = setting->GetValue() == 4; + float encoding_value = 4.f; // default + reshade::get_config_value(nullptr, renodx::utils::settings::global_name.c_str(), "SwapChainEncoding", encoding_value); + bool is_hdr10 = encoding_value == 4; renodx::mods::swapchain::SetUseHDR10(is_hdr10); - renodx::mods::swapchain::use_resize_buffer = setting->GetValue() < 4; + renodx::mods::swapchain::use_resize_buffer = encoding_value < 4; shader_injection.swap_chain_encoding_color_space = is_hdr10 ? 1.f : 0.f; - settings.push_back(setting); } { @@ -783,14 +986,21 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { bool use_device_proxy = setting->GetValue() == 1.f; renodx::mods::swapchain::use_device_proxy = use_device_proxy; renodx::mods::swapchain::set_color_space = !use_device_proxy; - if (use_device_proxy) { - reshade::register_event(OnPresent); - } else { + if (!use_device_proxy) { shader_injection.custom_flip_uv_y = 0.f; } + reshade::register_event(OnPresent); settings.push_back(setting); } + // Load UI visibility hotkey from saved config + { + int saved_hotkey = 0; + if (reshade::get_config_value(nullptr, renodx::utils::settings::global_name.c_str(), "UIVisibilityHotkey", saved_hotkey)) { + ui_toggle_hotkey = saved_hotkey; + } + } + { auto* setting = new renodx::utils::settings::Setting{ .key = "SwapChainDeviceProxyBaseWaitIdle", @@ -859,6 +1069,11 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { const uint32_t target_crcs[] = { 0x37837806u, 0xD3FA93FCu, + 0x620A40FDu, + 0xE322C21Du, + 0xB094C87Eu, + 0xF901F0ECu, + 0x518D3855u, }; /* @@ -905,11 +1120,31 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { } } + // Add on_draw callbacks for ping/UID shaders (heuristic-based detection) + // Ping/latency bar shader: 0xEF07F89A + { + auto it = custom_shaders.find(0xEF07F89Au); + if (it != custom_shaders.end()) { + it->second.on_draw = OnPingDraw; + } + } + // UID text shader: 0x6B8E9049 + { + auto it = custom_shaders.find(0x6B8E9049u); + if (it != custom_shaders.end()) { + it->second.on_draw = OnUIDDraw; + } + } + + // Register draw_indexed event for heuristic ping/UID detection + reshade::register_event(OnDrawIndexed); + initialized = true; } break; case DLL_PROCESS_DETACH: + reshade::unregister_event(OnDrawIndexed); reshade::unregister_event(OnPresent); reshade::unregister_addon(h_module); break; diff --git a/src/games/endfield/deferred-lighting/0x05D849CE.cso b/src/games/endfield/deferred-lighting/0x05D849CE.cso new file mode 100644 index 0000000000000000000000000000000000000000..263e61cb3e8d02eecb2d8052d78a1234aac0e553 GIT binary patch literal 57276 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

    lPVxyEAdtm=H^`}Rk@79~7r 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 ac*rt;=8^E%4+@^`;Wv2xh@?9s-2V&jW7)v~ literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0.asm new file mode 100644 index 0000000000..a8663b864a --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0.asm @@ -0,0 +1,1962 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 16:35:51 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[5], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_constantbuffer CB7[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_sampler s5, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture2d (float,float,float,float) t17 +dcl_resource_texture2d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture3d (float,float,float,float) t23 +dcl_resource_texture3d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_resource_texture2d (float,float,float,float) t27 +dcl_resource_texture2d (float,float,float,float) t28 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 38 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t26.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t27.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r2.xyw, r1.wwww, r3.xyxz +utof r4.xy, r0.xyxx +mul r4.zw, v0.xxxy, cb0[82].zzzw +mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r5.zw, r5.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) +mul r6.xyzw, -r5.yyyy, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw +mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r3.w, r5.y, cb0[1].z +mad r3.w, cb0[0].z, r5.x, r3.w +mad r3.w, cb0[2].z, r5.z, r3.w +add r3.w, r3.w, cb0[3].z +eq r6.x, l(0.000000), cb0[86].w +add r6.yzw, -r5.xxyz, cb0[44].xxyz +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r6.xyz, r6.xxxx, r6.yzwy, r7.xyzx +dp3 r6.w, r6.xyzx, r6.xyzx +max r7.w, r6.w, l(9.999999939E-09) +rsq r7.w, r7.w +mul r8.xyz, r6.xyzx, r7.wwww +mul r6.w, r6.w, r7.w +lt r8.w, l(0.000488281250), cb0[234].x +if_nz r8.w + sample_b_indexable(texture2d)(float,float,float,float) r9.xy, v1.xyxx, t25.xyzw, s1, cb0[108].x +else + mov r9.xy, l(1.000000,1.000000,0,0) +endif +lt r9.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[226].xxxy +if_nz r9.z + add r9.z, |r2.y|, |r2.x| + add r9.z, |r2.w|, r9.z + div r9.z, l(1.000000, 1.000000, 1.000000, 1.000000), r9.z + mul r10.xyz, |r2.xywx|, r9.zzzz + mul r11.xyz, r5.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r9.z, r11.xyzx, t10.yzxw, s2, l(0.000000) + mul r11.xyzw, r10.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) + add r10.xyw, r11.zwzz, r11.xxxy + mad r10.xyz, r10.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r10.xywx + mad r10.w, r9.z, l(2.000000), l(-1.000000) + mul r10.xyz, r10.wwww, r10.xyzx + mov r10.w, |r2.y| + add r10.w, r10.w, l(-0.700000) + mul_sat r10.w, r10.w, l(4.000000) + mad r11.x, r10.w, l(-2.000000), l(3.000000) + mul r10.w, r10.w, r10.w + mul r10.w, r10.w, r11.x + add r11.x, -cb0[229].z, cb0[229].y + mad r10.w, r10.w, r11.x, cb0[229].z + mul r10.xyz, r10.wwww, r10.xyzx +else + mov r10.xyz, l(0,0,0,0) + mov r9.z, l(0) +endif +mad r10.w, -r3.y, r1.w, l(-0.200000) +if_nz r9.w + mul r11.xyz, r2.xywx, cb0[233].zzzz + mul r12.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r11.xyz, r11.xyzx, cb0[225].xxxx, r12.xyzx + max r9.w, -r2.y, l(0.000000) + min r9.w, r9.w, l(0.900000) + add r9.w, -r9.w, l(1.000000) + mul_sat r11.w, r10.w, l(-10.000000) + mad r12.x, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.x + max r11.w, r11.w, l(0.100000) + min r11.w, r11.w, l(1.000000) + mul r9.w, r9.w, r11.w + mad r11.xyz, r11.xyzx, r9.wwww, r5.xyzx + add r10.xyz, r10.xyzx, r11.xyzx + mul r11.xyz, r10.yyyy, cb5[1].xyzx + mad r11.xyz, cb5[0].xyzx, r10.xxxx, r11.xyzx + mad r10.xyz, cb5[2].xyzx, r10.zzzz, r11.xyzx + add r10.xyz, r10.xyzx, cb5[3].xyzx + mad r11.x, r10.x, l(0.500000), cb5[4].x + mad r9.w, r10.y, l(0.500000), l(0.500000) + add r11.z, -r9.w, cb5[4].y + add r10.xy, r11.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r9.w, r10.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r9.w, r10.xyxx, t9.xxxx, s5, r9.w +else + mov r9.w, l(1.000000) +endif +mov_sat r10.x, r2.y +add r10.y, l(1.000000), -cb0[230].w +mad r10.x, r10.x, r10.y, cb0[230].w +add r10.yz, r5.xxzx, -cb0[44].xxzx +max r10.y, |r10.z|, |r10.y| +mul r10.z, r9.w, r10.x +mul r11.x, l(0.0500000119), cb0[222].w +mad r11.y, -cb0[222].w, l(0.700000), r10.y +div r11.x, l(1.000000, 1.000000, 1.000000, 1.000000), r11.x +mul_sat r11.x, r11.x, r11.y +mad r11.y, r11.x, l(-2.000000), l(3.000000) +mul r11.x, r11.x, r11.x +mul r11.x, r11.x, r11.y +mad r9.w, -r10.x, r9.w, l(1.000000) +mad r9.w, r11.x, r9.w, r10.z +ge r10.z, r1.z, l(0.045000) +and r10.z, r10.z, l(0x3f800000) +mul r10.z, r9.w, r10.z +deriv_rty_coarse r11.xyz, r5.xyzx +deriv_rtx_coarse r12.xyz, r5.zxyz +mul r13.xyz, r11.xyzx, r12.xyzx +mad r11.xyz, r11.zxyz, r12.yzxy, -r13.xyzx +dp3 r11.w, r11.xyzx, r11.xyzx +max r11.w, r11.w, l(1.175494351E-38) +rsq r11.w, r11.w +mul r12.xyz, r11.wwww, r11.xzyx +mov_sat r11.y, r12.x +add r11.z, r11.y, l(-0.988000) +mul_sat r11.z, r11.z, l(1000.012878) +mad r12.w, r11.z, l(-2.000000), l(3.000000) +mul r11.z, r11.z, r11.z +mul r11.z, r11.z, r12.w +add r12.w, |r3.w|, l(-15.000000) +mul_sat r12.w, r12.w, l(0.015000) +add r12.w, -r12.w, l(1.000000) +lt r13.x, l(0.000488281250), cb0[223].y +mad r13.y, cb0[223].z, l(0.300000), l(0.687000) +add r11.y, r11.y, -r13.y +mul_sat r11.y, r11.y, l(-1000.012878) +mad r13.y, r11.y, l(-2.000000), l(3.000000) +mul r11.y, r11.y, r11.y +mul r11.y, r11.y, r13.y +mad r11.x, r11.x, r11.w, l(0.500000) +mul_sat r11.x, r11.x, l(2.500000) +mad r11.w, r11.x, l(-2.000000), l(3.000000) +mul r11.x, r11.x, r11.x +mul r11.x, r11.x, r11.w +mul r11.x, r11.x, r11.y +lt r11.x, l(0.000488281250), r11.x +and r11.x, r11.x, r13.x +if_nz r11.x + mul r11.xy, |r12.yzyy|, |r12.yzyy| + add r11.w, r11.y, r11.x + div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w + mul r11.xy, r11.wwww, r11.xyxx + mul r13.xyz, r12.xzyx, l(0.000000, 1.000000, 0.000000, 0.000000) + mad r13.xyz, r12.yxzy, l(1.000000, 0.000000, 0.000000, 0.000000), -r13.xyzx + dp2 r11.w, r13.xyxx, r13.xyxx + rsq r11.w, r11.w + mul r13.xyz, r11.wwww, r13.xyzx + mul r14.xyz, r12.xzyx, r13.xyzx + mad r14.xyz, r13.zxyz, r12.zyxz, -r14.xyzx + dp3 r11.w, r14.xyzx, r14.xyzx + rsq r11.w, r11.w + mul r14.xyz, r11.wwww, r14.xyzx + add r15.xyz, r5.xyzx, r5.xyzx + round_ni r15.xyz, r15.xyzx + add r15.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + add r13.zw, r15.yyyy, r15.xxxz + dp2 r11.w, r13.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + lt r13.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.zzzy + lt r15.xy, r12.zyzz, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r13.zw, r13.zzzw, -r15.xxxy + itof r13.zw, r13.zzzw + mul r15.xy, r5.xzxx, r13.zwzz + mul r13.z, r9.z, r11.w + add r13.w, -r11.w, l(1.000000) + mad r13.w, r13.w, l(0.700000), l(0.300000) + mul r16.xy, r13.zzzz, l(3.000000, 6.000000, 0.000000, 0.000000) + mad r13.z, -cb0[223].x, r13.w, r16.x + frc r17.x, r13.z + mad r13.z, cb0[223].x, l(-0.300000), r16.y + frc r17.y, r13.z + mul r11.w, r11.w, l(5.000000) + round_ni r11.w, r11.w + add r16.x, r11.w, l(1.000000) + mul r16.y, r5.y, r16.x + mov r5.w, l(0.100000) + mul r13.zw, r5.yyyw, r16.xxxy + frc r13.zw, r13.zzzw + add r16.xy, r17.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + add r16.xy, r13.zwzz, -r16.xyxx + add r16.xy, r16.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) + mul_sat r16.xy, r16.xyxx, l(5.00000048, 5.00000048, 0.000000, 0.000000) + mad r16.zw, r16.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) + mul r16.xy, r16.xyxx, r16.xyxx + mul r16.xy, r16.xyxx, r16.zwzz + add r16.zw, -r13.zzzw, r17.xxxy + max r16.xy, r16.zwzz, r16.xyxx + add r17.zw, -r17.xxxy, r13.zzzw + add r17.zw, r17.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) + mul r17.zw, r17.zzzw, l(0.000000, 0.000000, 5.00000048, 5.00000048) + max r17.zw, r17.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r18.xy, r17.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r17.zw, r17.zzzw, r17.zzzw + mul r17.zw, r17.zzzw, r18.xxxy + add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + max r16.zw, r16.zzzw, r17.zzzw + ge r13.zw, r13.zzzw, r17.xxxy + and r13.zw, r13.zzzw, l(0, 0, 0x3f800000, 0x3f800000) + add r16.zw, -r16.xxxy, r16.zzzw + mad r13.zw, r13.zzzw, r16.zzzw, r16.xxxy + mad r11.w, r13.z, r13.z, l(-0.400000) + mul_sat r11.w, r11.w, l(1.66666663) + mad r13.z, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r13.z + mad r13.z, r13.w, l(2.000000), l(-1.000000) + mul r16.x, r11.w, l(0.010000) + mul r16.y, r13.z, r16.x + mad r17.x, r9.z, l(0.100000), r16.y + mul r16.x, r11.w, r16.x + mad r16.x, r16.x, r13.z, r9.z + mul r17.y, r9.z, r16.x + mov r15.z, r5.y + mad r16.xy, r15.yzyy, cb0[224].xyxx, r17.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r16.xyxx, t11.xyzw, s2, cb0[108].x + mov r15.w, -r15.x + mad r15.xy, r15.wzww, cb0[224].xyxx, r17.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r15.xyzw, r15.xyxx, t11.xyzw, s2, cb0[108].x + mul r15.xyzw, r11.yyyy, r15.xyzw + mad r15.xyzw, r16.xyzw, r11.xxxx, r15.xyzw + mad r11.xy, r15.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mad r9.z, r11.w, l(2.000000), l(-1.000000) + mad_sat r9.z, r9.z, l(0.800000), r13.w + mad r13.w, -r15.w, l(0.500000), l(1.000000) + mad r9.z, r9.z, r13.w, l(-0.700000) + mul_sat r9.z, r9.z, l(3.33333325) + mad r13.w, r9.z, l(-2.000000), l(3.000000) + mul r9.z, r9.z, r9.z + mul r9.z, r9.z, r13.w + mul r13.z, r13.z, r15.w + mad_sat r11.w, r13.z, l(0.500000), r11.w + mad r11.w, r11.w, l(0.500000), l(0.100000) + max r9.z, r9.z, r11.w + add r11.w, -r9.z, l(1.000000) + max r11.w, r11.w, l(0.000000) + mul r13.z, r11.w, r11.w + mul r13.z, r13.z, r13.z + mul r11.w, r11.w, r13.z + ge r11.w, r15.z, r11.w + and r11.w, r11.w, l(0x3f800000) + mad r9.z, r9.z, l(0.700000), l(0.200000018) + mad r9.z, r11.w, r9.z, l(0.100000) + mul r9.z, r15.z, r9.z + mul r9.z, r9.z, cb0[223].y + mul r9.z, r9.z, l(0.330000) + mul r11.w, r10.z, cb0[222].x + mul r11.w, r12.w, r11.w + mul r9.z, r9.z, r11.w + dp2 r11.w, r11.xyxx, r11.xyxx + min r11.w, r11.w, l(1.000000) + add r11.w, -r11.w, l(1.000000) + sqrt r11.w, r11.w + max r11.w, r11.w, l(0.000488281250) + mul_sat r13.z, r9.z, l(10.000000) + mad r13.w, r13.z, l(-2.000000), l(3.000000) + mul r13.z, r13.z, r13.z + mul r13.z, r13.z, r13.w + mul r13.z, r13.z, cb0[223].y + mul r15.xy, r11.xyxx, r13.zzzz + add r11.x, l(-1.500000), cb0[223].y + mul_sat r11.x, r11.x, l(0.666666687) + mad r11.y, r11.x, l(-2.000000), l(3.000000) + mul r11.x, r11.x, r11.x + mul r11.x, r11.x, r11.y + mul r11.y, r11.x, l(-0.200000) + mad r11.x, -r11.x, l(-0.200000), r11.w + mad r15.z, r9.z, r11.x, r11.y + dp3 r11.x, r15.xyzx, r15.xyzx + max r11.x, r11.x, l(1.175494351E-38) + rsq r11.x, r11.x + mul r11.xyw, r11.xxxx, r15.xyxz + mov r15.x, r13.y + mov r15.y, r14.x + mov r15.z, r12.y + dp3 r15.x, r15.xyzx, r11.xywx + mov r14.w, r12.x + dp2 r15.y, r14.ywyy, r11.ywyy + mov r12.x, r13.x + mov r12.y, r14.z + dp3 r15.z, r12.xyzx, r11.xywx + mad r11.xyw, -r3.xyxz, r1.wwww, r15.xyxz + mad r13.xyz, r9.zzzz, r11.xywx, r2.xywx + mul r9.z, r9.z, cb0[223].y + mul r9.z, r9.z, l(0.330000) +else + mov r13.xyz, r2.xywx + mov r9.z, l(0) +endif +lt r11.xy, l(0.000488281250, 0.000488281250, 0.000000, 0.000000), cb0[227].ywyy +or r11.x, r11.y, r11.x +lt r11.y, l(0.000488281250), r11.z +and r11.x, r11.y, r11.x +if_nz r11.x + mul r11.xyw, r2.ywyx, l(1.000000, 0.000000, 0.000000, 0.000000) + mad r11.xyw, r2.xyxw, l(0.000000, 0.000000, 0.000000, 1.000000), -r11.xyxw + dp2 r12.x, r11.xwxx, r11.xwxx + rsq r12.x, r12.x + mul r11.xyw, r11.xyxw, r12.xxxx + mul r12.xyz, r2.ywxy, r11.xywx + mad r12.xyz, r11.wxyw, r2.wxyw, -r12.xyzx + dp3 r11.y, r12.xyzx, r12.xyzx + rsq r11.y, r11.y + mul r14.xyz, r11.yyyy, r12.xzyx + mul r12.xy, -r5.xzxx, cb0[228].xyxx + frc r15.xy, r12.xyxx + round_ni r12.xy, r12.xyxx + dp2 r11.y, r12.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.y, null, r11.y + mul r11.y, r11.y, l(43758.546875) + frc r11.y, r11.y + add r12.x, r11.y, cb0[227].x + frc r12.x, r12.x + mul r12.y, cb0[228].z, cb0[228].z + mul r12.x, r12.y, r12.x + round_ni r12.x, r12.x + div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[228].z + mad r15.zw, -r5.xxxz, cb0[228].xxxy, cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.xy, r15.zwzz, t12.zwxy, s2, cb0[108].x + mad r15.zw, -r5.xxxz, cb0[228].xxxy, -cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.zw, r15.zwzz, t12.xyzw, s2, cb0[108].x + mul r16.xyzw, r16.xyzw, cb0[227].wwww + mad r16.xyzw, r16.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -cb0[227].wwww + ge r11.y, l(0.500000), r11.y + and r11.y, r11.y, l(0x3f800000) + add r15.zw, -r15.xxxy, r15.yyyx + mad r15.xy, r11.yyyy, r15.zwzz, r15.xyxx + div r11.y, r12.x, cb0[228].z + ge r12.z, r11.y, -r11.y + frc r11.y, |r11.y| + movc r11.y, r12.z, r11.y, -r11.y + mul r11.y, r11.y, cb0[228].z + mul r17.x, r11.y, r12.y + add r15.zw, l(0.000000, 0.000000, -0.050000, -1.000000), cb0[228].wwwz + mul r11.y, r12.y, r12.x + round_ni r11.y, r11.y + add r11.y, -r11.y, r15.w + mul r17.y, r11.y, r12.y + mad r12.xy, r15.xyxx, r12.yyyy, r17.xyxx + frc r12.xy, r12.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r12.xy, r12.xyxx, t12.xyzw, s1, cb0[108].x + mul r12.xy, r12.xyxx, cb0[227].yyyy + mad r12.xy, r12.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[227].yyyy + add r15.xy, r16.zwzz, r16.xyxx + add r12.xy, r12.xyxx, r15.xyxx + dp2 r11.y, r12.xyxx, r12.xyxx + min r11.y, r11.y, l(1.000000) + add r11.y, -r11.y, l(1.000000) + sqrt r11.y, r11.y + max r12.z, r11.y, l(0.000488281250) + dp3 r11.y, r12.xyzx, r12.xyzx + rsq r11.y, r11.y + mul r12.xyz, r11.yyyy, r12.xyzx + mov r14.w, r2.x + dp2 r16.x, r14.xwxx, r12.yzyy + mov r17.x, r11.w + mov r17.y, r14.z + mov r17.z, r2.y + dp3 r16.y, r17.xyzx, r12.xyzx + mov r14.x, r11.x + mov r14.z, r2.w + dp3 r16.z, r14.xyzx, r12.xyzx + mul r10.z, r10.z, cb0[222].x + mul r10.z, r11.z, r10.z + max r11.x, l(0.000488281250), cb0[228].w + mov_sat r15.z, r15.z + add r11.y, -r11.x, r15.z + add r11.x, r2.z, -r11.x + div r11.y, l(1.000000, 1.000000, 1.000000, 1.000000), r11.y + mul_sat r11.x, r11.y, r11.x + mad r11.y, r11.x, l(-2.000000), l(3.000000) + mul r11.x, r11.x, r11.x + mul r11.x, r11.x, r11.y + mul r10.z, r10.z, r11.x + mul r10.z, r12.w, r10.z + mad r3.xyz, -r3.xyzx, r1.wwww, r16.xyzx + mad r13.xyz, r10.zzzz, r3.xyzx, r2.xywx +endif +min r1.w, r9.y, r9.x +mul r3.x, r10.x, cb0[230].z +mad r3.y, -cb0[230].z, r10.x, l(1.000000) +mad r3.x, r9.w, r3.y, r3.x +mad r3.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r3.z, r10.y, -cb0[222].w +div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y +mul_sat r3.y, r3.y, r3.z +mad r3.z, r3.y, l(-2.000000), l(3.000000) +mul r3.y, r3.y, r3.y +mul r3.y, r3.y, r3.z +add r3.z, -r3.x, cb0[230].y +mad r3.x, r3.y, r3.z, r3.x +add r3.x, -r3.x, l(1.000000) +mul r3.y, r3.x, r9.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r3.z, -r2.z, l(1.000000) +mad_sat r9.w, r3.z, cb0[222].z, cb0[222].y +mad_sat r9.w, r9.z, cb0[224].z, r9.w +add r10.x, -r9.w, l(1.000000) +mad r9.w, r1.x, r10.x, r9.w +mul_sat r10.x, r10.w, l(3.33333325) +mad r10.y, r10.x, l(-2.000000), l(3.000000) +mul r10.x, r10.x, r10.x +mad r10.x, -r10.y, r10.x, l(1.000000) +mul r10.y, r9.w, cb0[222].x +add r10.z, -r1.x, l(1.000000) +mul r10.y, r10.z, r10.y +mul r10.y, r10.x, r10.y +mad r10.y, r10.y, l(-0.750000), l(1.000000) +mad r9.w, r9.w, l(-0.299999952), l(0.900000) +sqrt r10.z, r3.z +add r9.w, r9.w, r10.z +add_sat r9.w, r9.w, l(-0.600000) +max r9.w, r3.z, r9.w +min r9.w, r9.w, l(0.990000) +add_sat r10.z, l(2.000000), -cb0[222].x +mul r10.z, r10.z, cb0[222].x +mul r10.x, r10.x, r10.z +mad r3.x, -r9.x, r3.x, l(1.000000) +mul r3.x, r3.x, r10.x +add r9.x, -r3.z, r9.w +mad r3.x, r3.x, r9.x, r3.z +add r3.x, -r3.x, l(1.000000) +mul_sat r3.z, r9.z, l(20.000000) +mad r9.x, r3.z, l(-2.000000), l(3.000000) +mul r3.z, r3.z, r3.z +mul r3.z, r3.z, r9.x +mad r3.z, r3.z, l(-0.900000), l(1.000000) +mul r9.x, r3.z, r3.x +add r9.y, r9.y, l(-1.000000) +mad r11.x, r1.z, r9.y, l(1.000000) +add r11.y, -r1.z, l(1.000000) +movc r9.yz, r8.wwww, r11.xxyx, l(0,1.000000,1.000000,0) +min r1.z, r9.x, r9.y +mad r3.x, r3.x, r3.z, -r1.z +mad r1.z, r1.w, r3.x, r1.z +add r2.z, -r1.z, r2.z +mad r11.w, r3.y, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r9.xyw, r0.xyzz, t28.xywz +min r1.z, r10.y, r9.z +add r2.z, -r1.z, r10.y +mad r1.z, r1.w, r2.z, r1.z +add r1.w, -r1.z, l(1.000000) +mad r1.z, r3.y, r1.w, r1.z +mul r3.xyz, r1.zzzz, r9.xywx +mul r10.xyz, r1.xxxx, r3.xyzx +mad r9.xyz, r9.xywx, r1.zzzz, -r10.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz +dp3 r2.z, r13.xyzx, r8.xyzx +max r10.x, r2.z, l(0.000000) +mul r3.y, r11.w, r11.w +mul r12.x, r10.x, r10.x +mul r12.z, r10.x, r12.x +mul r2.z, r3.y, r3.y +mul r3.z, r3.y, r2.z +mov r10.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r14.x, l(3.327070, 1.000000, 0.000000, 0.000000), r10.xyxx +dp2 r14.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r10.xzxx +mov r3.x, l(1.000000) +dp2 r8.w, r14.xyxx, r3.xyxx +mov r12.yw, l(0,9.044010,0,1.000000) +dp3 r14.x, l(3.596850, -1.367720, 1.000000, 0.000000), r12.xzwx +dp3 r14.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r12.xyzx +mov r15.x, l(5.565890) +mov r15.yz, r12.xxzx +dp3 r14.z, l(1.000000, 19.788601, -20.212299, 0.000000), r15.xyzx +dp3 r9.w, r14.xyzx, r3.xyzx +div r8.w, r8.w, r9.w +dp2 r14.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r10.xwxx +mov r12.x, l(1.296780) +mov r12.y, r10.x +dp2 r14.y, l(1.000000, -0.755907, 0.000000, 0.000000), r12.xyxx +dp2 r9.w, r14.xyxx, r3.xyxx +dp3 r14.x, l(2.923380, 59.418800, 1.000000, 0.000000), r12.yzwy +mov r12.xw, l(20.322500,0,0,121.563004) +dp3 r14.y, l(1.000000, -27.030199, 222.591995, 0.000000), r12.xyzx +dp3 r14.z, l(626.130005, 316.627014, 1.000000, 0.000000), r12.yzwy +dp3 r3.x, r14.xyzx, r3.xyzx +div r3.x, r9.w, r3.x +mad r10.yzw, r1.xxzw, r8.wwww, r3.xxxx +add r3.x, r3.x, r8.w +ld_indexable(texture2d)(float,float,float,float) r12.x, r0.xyzz, t7.xyzw +lt r0.z, l(0.001000), r12.x +if_nz r0.z + dp3 r0.z, -r8.xyzx, r13.xyzx + add r0.z, r0.z, r0.z + mad r14.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx + dp3 r0.z, -cb3[0].xyzx, r14.xyzx + mad r15.xyz, cb3[0].xyzx, r0.zzzz, r14.xyzx + lt r0.z, r0.z, cb3[4].z + dp3 r3.z, r15.xyzx, r15.xyzx + max r3.z, r3.z, l(0.0000610351562) + rsq r3.z, r3.z + mul r15.xyz, r3.zzzz, r15.xyzx + mul r15.xyz, r15.xyzx, cb3[4].yyyy + mad r15.xyz, -cb3[0].xyzx, cb3[4].zzzz, r15.xyzx + dp3 r3.z, r15.xyzx, r15.xyzx + rsq r3.z, r3.z + mul r15.xyz, r3.zzzz, r15.xyzx + movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx + mad r15.xyz, r6.xyzx, r7.wwww, r14.xyzx + dp3 r0.z, r15.xyzx, r15.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r15.xyz, r0.zzzz, r15.xyzx + dp3_sat r11.y, r14.xyzx, r13.xyzx + dp3_sat r0.z, r13.xyzx, r15.xyzx + min r11.z, r10.x, l(1.000000) + mad r3.z, r0.z, r2.z, -r0.z + mad r0.z, r3.z, r0.z, l(1.000000) + dp3_sat r3.z, r8.xyzx, r15.xyzx + add r3.z, -r3.z, l(1.000000) + mul r8.w, r3.z, r3.z + mul r8.w, r8.w, r8.w + mul r9.w, r3.z, r8.w + add r12.z, -r11.w, l(1.000000) + mad r12.w, -r12.z, l(0.383026), l(-0.0761947036) + mad r12.w, r12.z, r12.w, l(1.049970) + mad r12.z, r12.z, r12.w, l(0.409255) + min r12.z, r12.z, l(0.999000) + add r12.w, -r12.z, l(1.000000) + add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx + mad r3.z, -r8.w, r3.z, l(1.000000) + mad r16.xyz, r1.xzwx, r3.zzzz, r9.wwww + mul r0.z, r0.z, r0.z + div r0.z, r2.z, r0.z + mad r17.xy, -r11.zyzz, r2.zzzz, r11.zyzz + mad r17.xy, r17.xyxx, r11.zyzz, r2.zzzz + sqrt r17.xy, r17.xyxx + mul r17.xy, r11.yzyy, r17.xyxx + add r2.z, r17.y, r17.x + add r2.z, r2.z, l(0.000100) + div r2.z, l(0.500000), r2.z + mul r0.z, r0.z, r2.z + mul r16.xyz, r0.zzzz, r16.xyzx + min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r17.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r17.xyxx, t13.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r17.zwzz, t13.yzxw, s1, l(0.000000) + mul r0.z, r0.z, r2.z + mul r0.z, r12.z, r0.z + div r0.z, r0.z, r12.w + mul r17.xyz, r15.xyzx, r15.xyzx + mul r17.xyz, r0.zzzz, r17.xyzx + mad r15.xyz, -r15.xyzx, r12.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r15.xyz, r17.xyzx, r15.xyzx + add r15.xyz, r15.xyzx, r16.xyzx + mul r15.xyz, r15.xyzx, cb3[4].xxxx + max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r15.xyz, r15.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + dp3_sat r0.z, r14.xyzx, r2.xywx + mul r14.xyz, r0.zzzz, r9.xyzx + mad r14.xyz, r15.xyzx, r11.yyyy, r14.xyzx + mul r14.xyz, r14.xyzx, cb3[1].xyzx + mov r12.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r12.yzw, r12.xyxx, t8.wxyz, s1, cb0[108].x + add r0.z, -r12.x, l(1.000000) + mad r12.xyz, r14.xyzx, r12.yzwy, -r14.xyzx + mad r12.xyz, r0.zzzz, r12.xyzx, r14.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t14.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r12.xyz, r0.zzzz, r12.xyzx +else + mov r12.xyz, l(0,0,0,0) +endif +mul r11.yz, r4.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r11.yz, r11.yyzy +mad r0.z, r11.z, cb2[1].y, r11.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r2.z, -cb0[85].y, cb2[2].w, |r3.w| +round_ni r2.z, r2.z +add r3.z, l(-1.000000), cb2[1].w +max r8.w, r2.z, l(0.000000) +min r3.z, r3.z, r8.w +mul r8.w, r3.z, l(8.000000) +ftoi r8.w, r8.w +ge r2.z, r3.z, r2.z +iadd r3.z, r8.w, cb0[110].y +dp3 r8.w, -r8.xyzx, r13.xyzx +add r8.w, r8.w, r8.w +mad r14.xyz, r13.xyzx, -r8.wwww, -r8.xyzx +min r11.x, r10.x, l(1.000000) +add r8.w, -r11.w, l(1.000000) +mad r9.w, -r8.w, l(0.383026), l(-0.0761947036) +mad r9.w, r8.w, r9.w, l(1.049970) +mad r8.w, r8.w, r9.w, l(0.409255) +min r8.w, r8.w, l(0.999000) +add r9.w, -r8.w, l(1.000000) +add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx +mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r10.x, r11.yzyy, t13.xyzw, s1, l(0.000000) +mad r16.xyz, -r15.xyzx, r9.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r15.xyz, r15.xyzx, r15.xyzx +mov r17.w, l(1.000000) +mov r18.y, l(1.000000) +mov r19.z, r11.w +mov r20.xyz, l(0,0,0,0) +mov r11.yz, l(0,1.000000,0,0) +loop + ilt r12.w, l(7), r11.z + breakc_nz r12.w + iadd r12.w, r0.z, r11.z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx + iadd r14.w, r3.z, r11.z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r14.w, r14.w, l(0), t0.xxxx + and r12.w, r12.w, r14.w + and r12.w, r2.z, r12.w + ishl r14.w, r11.z, l(5) + mov r21.xyz, l(0,0,0,0) + mov r15.w, r11.y + mov r16.w, r12.w + loop + breakc_z r16.w + firstbit_lo r18.z, r16.w + ishl r18.w, l(1), r18.z + xor r18.w, r16.w, r18.w + iadd r18.z, r14.w, r18.z + bfi r22.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r18.zzzz, l(1, 3, 5, 6) + bfi r19.w, l(29), l(3), r18.z, l(7) + ftou r20.w, cb3[r22.z + 6].w + ieq r20.w, r20.w, l(1) + if_nz r20.w + add r17.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx + and r23.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.z + 6].xzyx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.w + 6].yxzy + ushr r25.xyz, cb3[r22.z + 6].xzyx, l(16, 16, 16, 0) + ushr r26.xyz, cb3[r22.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r23.xyz, r23.xyzx + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyw, r26.yxyz + mov r27.xz, r23.xxzx + mov r27.yw, r25.xxxz + dp4 r20.w, r17.xyzw, r27.xyzw + mov r25.x, r23.y + mov r25.z, r24.y + mov r25.w, r26.x + dp4 r21.w, r17.xyzw, r25.xyzw + mov r26.xz, r24.xxzx + dp4 r17.x, r17.xyzw, r26.xyzw + max r17.y, |r20.w|, |r21.w| + max r17.x, |r17.x|, r17.y + mad r17.y, cb3[r19.w + 6].x, l(0.500000), l(0.500000) + add r17.x, -r17.y, r17.x + mad r17.y, -cb3[r19.w + 6].x, l(0.500000), l(0.500000) + div_sat r17.x, r17.x, r17.y + add r17.x, -r17.x, l(1.000000) + mul r17.x, r17.x, r17.x + else + mov r17.x, l(1.000000) + endif + lt r17.y, l(0.500000), cb3[r22.y + 6].z + lt r17.z, r17.x, l(0.001000) + or r17.z, r17.y, r17.z + if_nz r17.z + mov r16.w, r18.w + continue + endif + ishl r17.z, r18.z, l(3) + bfi r18.z, l(29), l(3), r18.z, l(2) + lt r20.w, cb3[r17.z + 6].w, l(1.500000) + if_nz r20.w + mad r20.w, cb3[r18.z + 6].y, l(0.500000), l(0.500000) + add r23.x, r20.w, -|cb3[r18.z + 6].x| + add r23.y, -r23.x, cb3[r18.z + 6].y + add r20.w, -|r23.x|, l(1.000000) + add r20.w, -|r23.y|, r20.w + ge r21.w, cb3[r18.z + 6].x, l(0.000000) + max r22.z, r20.w, l(0.000488281250) + movc r23.z, r21.w, r22.z, -r22.z + dp3 r22.z, r23.xyzx, r23.xyzx + rsq r22.z, r22.z + mul r24.xyz, r22.zzzz, r23.xyzx + add r25.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx + dp3 r22.z, r25.xyzx, r25.xyzx + rsq r23.z, r22.z + mul r26.xyz, r23.zzzz, r25.xyzx + dp3_sat r18.x, r13.xyzx, r26.xyzx + ftoi r24.w, cb3[r19.w + 6].w + mul r27.xyz, r24.xyzx, cb3[r18.z + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r25.w, cb3[r17.z + 6].w + and r25.w, r25.w, l(1) + ieq r26.w, r25.w, l(0) + not r26.w, r26.w + lt r27.w, l(0.000000), cb3[r18.z + 6].z + and r26.w, r26.w, r27.w + dp3 r27.w, r28.xyzx, r28.xyzx + sqrt r27.w, r27.w + dp3 r28.w, r29.xyzx, r29.xyzx + sqrt r28.w, r28.w + dp3 r29.w, r13.xyzx, r28.xyzx + div r29.w, r29.w, r27.w + dp3 r30.x, r13.xyzx, r29.xyzx + div r30.x, r30.x, r28.w + add r29.w, r29.w, r30.x + mul_sat r30.x, r29.w, l(0.500000) + dp3 r29.x, r28.xyzx, r29.xyzx + mad r27.w, r27.w, r28.w, r29.x + mad r27.w, r27.w, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r27.w + movc r19.xy, r26.wwww, r30.xyxx, r18.xyxx + lt r27.w, cb3[r22.w + 6].w, l(0.000000) + if_nz r27.w + mul r27.w, cb3[r22.x + 6].w, cb3[r22.x + 6].w + mul r27.w, r22.z, r27.w + mad r27.w, -r27.w, r27.w, l(1.000000) + max r27.w, r27.w, l(0.000000) + add r22.z, r22.z, l(1.000000) + div r22.z, l(1.000000, 1.000000, 1.000000, 1.000000), r22.z + and r28.w, r26.w, l(0x3f800000) + add r29.x, r19.y, -r22.z + mad r22.z, r28.w, r29.x, r22.z + mul r27.w, r27.w, r27.w + mul r22.z, r22.z, r27.w + else + mul r29.xyz, r25.xyzx, cb3[r22.x + 6].wwww + dp3 r27.w, r29.xyzx, r29.xyzx + min r27.w, r27.w, l(1.000000) + add r27.w, -r27.w, l(1.000000) + log r27.w, r27.w + mul r27.w, r27.w, cb3[r22.w + 6].w + exp r27.w, r27.w + mul r22.z, r19.y, r27.w + endif + dp3 r19.y, r26.xyzx, -r24.xyzx + add r19.y, r19.y, -cb3[r18.z + 6].z + mul_sat r19.y, r19.y, cb3[r18.z + 6].w + mul r19.y, r19.y, r19.y + movc r19.y, r25.w, l(1.000000), r19.y + mul r19.y, r19.y, r22.z + not r22.z, r26.w + ige r24.x, r24.w, l(0) + and r22.z, r22.z, r24.x + if_nz r22.z + if_z r25.w + ishl r22.z, r24.w, l(2) + mul r24.xyz, r5.yyyy, cb6[r22.z + 33].xywx + mad r24.xyz, cb6[r22.z + 32].xywx, r5.xxxx, r24.xyzx + mad r24.xyz, cb6[r22.z + 34].xywx, r5.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb6[r22.z + 35].xywx + div_sat r24.xy, r24.xyxx, r24.zzzz + mad r24.xy, r24.xyxx, cb6[r24.w + 0].zwzz, cb6[r24.w + 0].xyxx + else + ishl r22.z, r24.w, l(2) + dp3 r29.x, -r25.xyzx, cb6[r22.z + 32].xyzx + dp3 r29.y, -r25.xyzx, cb6[r22.z + 33].xyzx + dp3 r29.z, -r25.xyzx, cb6[r22.z + 34].xyzx + lt r22.z, |r29.x|, |r29.y| + and r22.z, r22.z, l(1) + dp2 r24.z, |r29.xyxx|, icb[r22.z + 0].xyxx + lt r24.z, r24.z, |r29.z| + movc r22.z, r24.z, l(2), r22.z + dp3 r24.z, r29.xyzx, icb[r22.z + 0].xyzx + lt r24.z, r24.z, l(0.000000) + bfi r22.z, l(31), l(1), r22.z, r24.z + ushr r24.z, r22.z, l(1) + dp3 r24.z, r29.xyzx, icb[r24.z + 0].xyzx + div r27.w, l(0.000244140625), cb6[r24.w + 0].w + add r27.w, -r27.w, l(0.500000) + utof r28.w, r22.z + ult r29.w, r22.z, l(2) + and r29.w, r29.w, l(2) + dp2 r29.x, r29.xzxx, icb[r29.w + 0].xzxx + mul r29.x, r29.x, icb[r22.z + 4].z + div r29.x, r29.x, |r24.z| + mad r28.w, r29.x, r27.w, r28.w + add r28.w, r28.w, l(0.500000) + mul_sat r30.x, r28.w, l(0.166666672) + iadd r28.w, l(-1), icb[r22.z + 4].y + dp2 r28.w, r29.yzyy, icb[r28.w + 0].xyxx + mul r22.z, r28.w, icb[r22.z + 4].w + div r22.z, r22.z, |r24.z| + mad_sat r30.y, -r22.z, r27.w, l(0.500000) + mad r24.xy, r30.xyxx, cb6[r24.w + 0].zwzz, cb6[r24.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r22.z, r24.xyxx, t15.yzxw, s1, l(0.000000) + mul r19.y, r19.y, r22.z + endif + lt r22.z, l(0.000000), r19.y + if_nz r22.z + if_z r25.w + ftoi r24.x, cb3[r22.y + 6].x + else + add r24.yzw, r5.xxyz, -cb3[r22.x + 6].xxyz + lt r29.xyz, |r24.zwwz|, |r24.yyzy| + and r25.w, r29.y, r29.x + lt r24.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r24.yyzw + ushr r27.w, cb3[r18.z + 6].w, l(24) + ubfe r29.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r18.z + 6].wwww + movc r24.y, r24.y, r27.w, r29.x + and r27.w, l(255), cb3[r18.z + 6].w + movc r24.z, r24.z, r29.y, r27.w + ubfe r27.w, l(8), l(8), cb3[r22.y + 6].x + and r28.w, l(255), cb3[r22.y + 6].x + movc r24.w, r24.w, r27.w, r28.w + movc r24.z, r29.z, r24.z, r24.w + movc r24.y, r25.w, r24.y, r24.z + ilt r24.z, r24.y, l(80) + movc r24.x, r24.z, r24.y, l(-1) + endif + ishl r24.y, r24.x, l(2) + mad r29.xyz, r26.xyzx, cb4[r24.x + 288].xxxx, r5.xyzx + mul r24.z, l(5.000000), cb4[r24.x + 288].y + mad r29.xyz, r13.xyzx, r24.zzzz, r29.xyzx + mul r30.xyzw, r29.yyyy, cb4[r24.y + 65].xyzw + mad r30.xyzw, cb4[r24.y + 64].xyzw, r29.xxxx, r30.xyzw + mad r29.xyzw, cb4[r24.y + 66].xyzw, r29.zzzz, r30.xyzw + add r29.xyzw, r29.xyzw, cb4[r24.y + 67].xyzw + div r24.yzw, r29.xxyz, r29.wwww + ge r29.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.yzwy + ge r30.xyz, r24.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) + add r31.xy, -cb4[r24.x + 344].xyxx, cb4[r24.x + 344].zwzz + mad r24.yz, r24.yyzy, r31.xxyx, cb4[r24.x + 344].xxyx + mad r31.xy, r24.yzyy, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r31.xy, r31.xyxx + mad r24.yz, r24.yyzy, cb4[400].zzwz, -r31.xxyx + add r32.xyzw, r24.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r33.xyzw, r32.xxzz, r32.xxzz + add r31.zw, -r24.yyyz, l(0.000000, 0.000000, 1.000000, 1.000000) + min r32.xz, r24.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r34.xy, r24.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r35.xy, r31.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r34.xy, -r34.xyxx, r34.xyxx, r32.ywyy + add r34.xy, r34.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r34.xy, r34.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r33.xz, r33.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r24.yz, r33.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r24.yyzy + mul r36.xy, r24.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r24.yz, -r32.xxzx, r32.xxzx, r31.zzwz + add r24.yz, r24.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r37.xy, r24.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r24.yz, r32.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r36.z, r37.x + mov r36.w, r24.y + mov r35.z, r34.x + mov r35.w, r33.x + add r32.xyzw, r35.zwxz, r36.zwxz + mov r37.z, r36.y + mov r37.w, r24.z + mov r34.z, r35.y + mov r34.w, r33.z + add r33.xyz, r34.zywz, r37.zywz + div r35.xyz, r35.xzwx, r32.zwyz + add r35.xyz, r35.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r35.xyz, r35.yxzy, cb4[400].xxxx + div r34.xyz, r34.zywz, r33.xyzx + add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r34.xyz, r34.xyzx, cb4[400].yyyy + mov r35.w, r34.x + mad r36.xyzw, r31.xyxy, cb4[400].xyxy, r35.ywxw + mad r24.yz, r31.xxyx, cb4[400].xxyx, r35.zzwz + mov r34.w, r35.y + mov r35.yw, r34.yyyz + mad r37.xyzw, r31.xyxy, cb4[400].xyxy, r35.xyzy + mad r34.xyzw, r31.xyxy, cb4[400].xyxy, r34.wywz + mad r31.xyzw, r31.xyxy, cb4[400].xyxy, r35.xwzw + mul r35.xyzw, r32.zwyz, r33.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r36.xyxx, t6.xxxx, s4, r24.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r27.w, r36.zwzz, t6.xxxx, s4, r24.w + mul r27.w, r27.w, r35.y + mad r25.w, r35.x, r25.w, r27.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r24.yzyy, t6.xxxx, s4, r24.w + mad r24.y, r35.z, r24.y, r25.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r34.xyxx, t6.xxxx, s4, r24.w + mad r24.y, r35.w, r24.z, r24.y + mul r35.xyzw, r32.xyzw, r33.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r37.xyxx, t6.xxxx, s4, r24.w + mad r24.y, r35.x, r24.z, r24.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r37.zwzz, t6.xxxx, s4, r24.w + mad r24.y, r35.y, r24.z, r24.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r34.zwzz, t6.xxxx, s4, r24.w + mad r24.y, r35.z, r24.z, r24.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r31.xyxx, t6.xxxx, s4, r24.w + mad r24.y, r35.w, r24.z, r24.y + ige r24.z, r24.x, l(0) + or r29.xyz, r29.xyzx, r30.xyzx + or r25.w, r29.y, r29.x + or r25.w, r29.z, r25.w + and r27.w, r24.w, l(0x7fffffff) + ult r27.w, l(0x7f800000), r27.w + or r25.w, r25.w, r27.w + mul r27.w, r32.y, r33.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.w, r31.zwzz, t6.xxxx, s4, r24.w + mad r24.y, r27.w, r24.w, r24.y + add r24.y, r24.y, l(-1.000000) + mad r24.x, cb4[r24.x + 288].w, r24.y, l(1.000000) + movc r24.x, r25.w, l(1.000000), r24.x + movc r24.x, r24.z, r24.x, l(1.000000) + else + mov r24.x, l(1.000000) + endif + if_nz r26.w + dp3 r24.y, r14.xyzx, r27.xyzx + mul_sat r24.z, r23.z, cb3[r18.z + 6].z + mad r24.z, r24.z, l(0.500000), r3.y + min r24.z, r24.z, l(1.000000) + div r24.z, r3.y, r24.z + mad r29.xyz, r14.xyzx, r24.yyyy, -r27.xyzx + dp3 r24.w, r28.xyzx, r29.xyzx + mul r24.y, r24.y, r24.y + mad r24.y, cb3[r18.z + 6].z, cb3[r18.z + 6].z, -r24.y + div_sat r24.y, r24.w, r24.y + mad r27.xyz, r27.xyzx, r24.yyyy, r28.xyzx + dp3 r24.y, r27.xyzx, r27.xyzx + rsq r24.y, r24.y + mul r26.xyz, r24.yyyy, r27.xyzx + else + mov r24.z, l(1.000000) + endif + if_nz r22.z + mul_sat r22.z, r23.z, cb3[r19.w + 6].y + mad r26.xyz, r6.xyzx, r7.wwww, r26.xyzx + dp3 r23.z, r26.xyzx, r26.xyzx + max r23.z, r23.z, l(0.0000610351562) + rsq r23.z, r23.z + mul r26.xyz, r23.zzzz, r26.xyzx + max r20.w, r20.w, l(5.960464478E-08) + movc r23.w, r21.w, r20.w, -r20.w + dp3 r20.w, r23.xywx, r23.xywx + rsq r20.w, r20.w + mul r23.xyz, r20.wwww, r23.xywx + mul r23.xyz, r23.xyzx, cb3[r18.z + 6].zzzz + mad r27.xyz, -r23.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r23.xyz, r23.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + dp3 r20.w, r13.xyzx, r27.xyzx + dp3 r21.w, r27.xyzx, r27.xyzx + sqrt r21.w, r21.w + div r20.w, r20.w, r21.w + dp3 r21.w, r13.xyzx, r23.xyzx + dp3 r23.x, r23.xyzx, r23.xyzx + sqrt r23.x, r23.x + div r21.w, r21.w, r23.x + add r20.w, r20.w, r21.w + mul_sat r20.w, r20.w, l(0.500000) + movc r18.x, r26.w, r20.w, r18.x + dp3_sat r20.w, r13.xyzx, r26.xyzx + dp3_sat r21.w, r8.xyzx, r26.xyzx + lt r23.x, l(0.000000), r22.z + mul r22.z, r22.z, r22.z + mad r23.y, r21.w, l(3.600000), l(0.400000) + div r22.z, r22.z, r23.y + mad r22.z, r11.w, r11.w, r22.z + min r22.z, r22.z, l(1.000000) + movc r22.z, r23.x, r22.z, r3.y + mul r22.z, r22.z, r22.z + mad r23.x, r20.w, r22.z, -r20.w + mad r20.w, r23.x, r20.w, l(1.000000) + add r21.w, -r21.w, l(1.000000) + mul r23.x, r21.w, r21.w + mul r23.x, r23.x, r23.x + mul r23.y, r21.w, r23.x + mad r21.w, -r23.x, r21.w, l(1.000000) + mad r23.xyz, r1.xzwx, r21.wwww, r23.yyyy + mul r20.w, r20.w, r20.w + div r20.w, r22.z, r20.w + mul r20.w, r24.z, r20.w + mad r21.w, -r11.x, r22.z, r11.x + mad r21.w, r21.w, r11.x, r22.z + sqrt r21.w, r21.w + mad r23.w, -r19.x, r22.z, r19.x + mad r22.z, r23.w, r19.x, r22.z + sqrt r22.z, r22.z + mul r22.z, r11.x, r22.z + mad r21.w, r19.x, r21.w, r22.z + add r21.w, r21.w, l(0.000100) + div r21.w, l(0.500000), r21.w + mul r20.w, r20.w, r21.w + mul r23.xyz, r20.wwww, r23.xyzx + min r23.xyz, r23.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r24.yz, r19.xxzx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r20.w, r24.yzyy, t13.yzwx, s1, l(0.000000) + mul r20.w, r10.x, r20.w + mul r20.w, r8.w, r20.w + div r20.w, r20.w, r9.w + mul r24.yzw, r15.xxyz, r20.wwww + div r24.yzw, r24.yyzw, r16.xxyz + add r23.xyz, r23.xyzx, r24.yzwy + mul r23.xyz, r23.xyzx, cb3[r19.w + 6].zzzz + max r23.xyz, r23.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r23.xyz, r23.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r24.yzw, r9.xxyz, r18.xxxx + mad r23.xyz, r23.xyzx, r19.xxxx, r24.yzwy + mul r24.yzw, r19.yyyy, cb3[r17.z + 6].xxyz + mul r24.xyz, r24.xxxx, r24.yzwy + mul r24.xyz, r17.xxxx, r24.xyzx + mul r23.xyz, r23.xyzx, r24.xyzx + else + mov r23.xyz, l(0,0,0,0) + endif + else + if_z r17.y + mad r17.x, cb3[r18.z + 6].y, l(0.500000), l(0.500000) + add r24.x, r17.x, -|cb3[r18.z + 6].x| + add r24.y, -r24.x, cb3[r18.z + 6].y + add r17.x, -|r24.x|, l(1.000000) + add r17.x, -|r24.y|, r17.x + max r17.x, r17.x, l(0.000488281250) + ge r17.y, cb3[r18.z + 6].x, l(0.000000) + movc r24.z, r17.y, r17.x, -r17.x + dp3 r17.x, r24.xyzx, r24.xyzx + rsq r17.x, r17.x + mul r24.xyz, r17.xxxx, r24.xyzx + add r25.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx + dp3 r17.x, r25.xyzx, r25.xyzx + rsq r17.y, r17.x + mul r26.xyz, r17.yyyy, r25.xyzx + ftoi r17.y, cb3[r19.w + 6].w + mul r19.xyw, r24.xyxz, cb3[r18.z + 6].zzzz + mad r27.xyz, -r19.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r19.xyw, r19.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r25.xyxz + ftou r17.z, cb3[r17.z + 6].w + and r17.z, r17.z, l(1) + ieq r18.x, r17.z, l(0) + not r18.x, r18.x + lt r20.w, l(0.000000), cb3[r18.z + 6].z + and r18.x, r18.x, r20.w + dp3 r20.w, r27.xyzx, r27.xyzx + sqrt r20.w, r20.w + dp3 r21.w, r19.xywx, r19.xywx + sqrt r21.w, r21.w + dp3 r19.x, r27.xyzx, r19.xywx + mad r19.x, r20.w, r21.w, r19.x + mad r19.x, r19.x, l(0.500000), l(1.000000) + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x + movc r19.x, r18.x, r19.x, l(1.000000) + lt r19.y, cb3[r22.w + 6].w, l(0.000000) + if_nz r19.y + mul r19.y, cb3[r22.x + 6].w, cb3[r22.x + 6].w + mul r19.y, r17.x, r19.y + mad r19.y, -r19.y, r19.y, l(1.000000) + max r19.y, r19.y, l(0.000000) + add r17.x, r17.x, l(1.000000) + div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x + and r19.w, r18.x, l(0x3f800000) + add r20.w, -r17.x, r19.x + mad r17.x, r19.w, r20.w, r17.x + mul r19.y, r19.y, r19.y + mul r17.x, r17.x, r19.y + else + mul r27.xyz, r25.xyzx, cb3[r22.x + 6].wwww + dp3 r19.y, r27.xyzx, r27.xyzx + min r19.y, r19.y, l(1.000000) + add r19.y, -r19.y, l(1.000000) + log r19.y, r19.y + mul r19.y, r19.y, cb3[r22.w + 6].w + exp r19.y, r19.y + mul r17.x, r19.y, r19.x + endif + dp3 r19.x, r26.xyzx, -r24.xyzx + add r19.x, r19.x, -cb3[r18.z + 6].z + mul_sat r19.x, r19.x, cb3[r18.z + 6].w + mul r19.x, r19.x, r19.x + movc r19.x, r17.z, l(1.000000), r19.x + mul r17.x, r17.x, r19.x + not r18.x, r18.x + ige r19.x, r17.y, l(0) + and r18.x, r18.x, r19.x + if_nz r18.x + if_z r17.z + ishl r18.x, r17.y, l(2) + mul r19.xyw, r5.yyyy, cb6[r18.x + 33].xyxw + mad r19.xyw, cb6[r18.x + 32].xyxw, r5.xxxx, r19.xyxw + mad r19.xyw, cb6[r18.x + 34].xyxw, r5.zzzz, r19.xyxw + add r19.xyw, r19.xyxw, cb6[r18.x + 35].xyxw + div_sat r19.xy, r19.xyxx, r19.wwww + mad r19.xy, r19.xyxx, cb6[r17.y + 0].zwzz, cb6[r17.y + 0].xyxx + else + ishl r18.x, r17.y, l(2) + dp3 r24.x, -r25.xyzx, cb6[r18.x + 32].xyzx + dp3 r24.y, -r25.xyzx, cb6[r18.x + 33].xyzx + dp3 r24.z, -r25.xyzx, cb6[r18.x + 34].xyzx + lt r18.x, |r24.x|, |r24.y| + and r18.x, r18.x, l(1) + dp2 r19.w, |r24.xyxx|, icb[r18.x + 0].xyxx + lt r19.w, r19.w, |r24.z| + movc r18.x, r19.w, l(2), r18.x + dp3 r19.w, r24.xyzx, icb[r18.x + 0].xyzx + lt r19.w, r19.w, l(0.000000) + bfi r18.x, l(31), l(1), r18.x, r19.w + ushr r19.w, r18.x, l(1) + dp3 r19.w, r24.xyzx, icb[r19.w + 0].xyzx + div r20.w, l(0.000244140625), cb6[r17.y + 0].w + add r20.w, -r20.w, l(0.500000) + utof r21.w, r18.x + ult r22.z, r18.x, l(2) + and r22.z, r22.z, l(2) + dp2 r22.z, r24.xzxx, icb[r22.z + 0].xzxx + mul r22.z, r22.z, icb[r18.x + 4].z + div r22.z, r22.z, |r19.w| + mad r21.w, r22.z, r20.w, r21.w + add r21.w, r21.w, l(0.500000) + mul_sat r25.x, r21.w, l(0.166666672) + iadd r21.w, l(-1), icb[r18.x + 4].y + dp2 r21.w, r24.yzyy, icb[r21.w + 0].xyxx + mul r18.x, r21.w, icb[r18.x + 4].w + div r18.x, r18.x, |r19.w| + mad_sat r25.y, -r18.x, r20.w, l(0.500000) + mad r19.xy, r25.xyxx, cb6[r17.y + 0].zwzz, cb6[r17.y + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r17.y, r19.xyxx, t15.yxzw, s1, l(0.000000) + mul r17.x, r17.y, r17.x + endif + lt r17.x, l(0.000000), r17.x + if_nz r17.x + if_z r17.z + ftoi r17.x, cb3[r22.y + 6].x + else + add r19.xyw, r5.xyxz, -cb3[r22.x + 6].xyxz + lt r22.xzw, |r19.yyww|, |r19.xxxy| + and r17.y, r22.z, r22.x + lt r19.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyxw + ushr r17.z, cb3[r18.z + 6].w, l(24) + ubfe r22.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r18.z + 6].wwww + movc r17.z, r19.x, r17.z, r22.x + and r18.x, l(255), cb3[r18.z + 6].w + movc r18.x, r19.y, r22.z, r18.x + ubfe r18.z, l(8), l(8), cb3[r22.y + 6].x + and r19.x, l(255), cb3[r22.y + 6].x + movc r18.z, r19.w, r18.z, r19.x + movc r18.x, r22.w, r18.x, r18.z + movc r17.y, r17.y, r17.z, r18.x + ilt r17.z, r17.y, l(80) + movc r17.x, r17.z, r17.y, l(-1) + endif + ishl r17.y, r17.x, l(2) + mad r19.xyw, r26.xyxz, cb4[r17.x + 288].xxxx, r5.xyxz + mul r17.z, l(5.000000), cb4[r17.x + 288].y + mad r19.xyw, r2.xyxw, r17.zzzz, r19.xyxw + mul r22.xyzw, r19.yyyy, cb4[r17.y + 65].xyzw + mad r22.xyzw, cb4[r17.y + 64].xyzw, r19.xxxx, r22.xyzw + mad r22.xyzw, cb4[r17.y + 66].xyzw, r19.wwww, r22.xyzw + add r22.xyzw, r22.xyzw, cb4[r17.y + 67].xyzw + div r19.xyw, r22.xyxz, r22.wwww + ge r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xywx + ge r24.xyz, r19.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r17.yz, -cb4[r17.x + 344].xxyx, cb4[r17.x + 344].zzwz + mad r17.yz, r19.xxyx, r17.yyzy, cb4[r17.x + 344].xxyx + mad r18.xz, r17.yyzy, cb4[400].zzwz, l(0.500000, 0.000000, 0.500000, 0.000000) + round_ni r18.xz, r18.xxzx + mad r17.yz, r17.yyzy, cb4[400].zzwz, -r18.xxzx + add r25.xyzw, r17.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r26.xyzw, r25.xxzz, r25.xxzz + add r19.xy, -r17.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) + min r25.xz, r17.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r27.xy, r17.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r28.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r27.xy, -r27.xyxx, r27.xyxx, r25.ywyy + add r27.xy, r27.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r27.xy, r27.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r26.xz, r26.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r17.yz, r26.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r17.yyzy + mul r29.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r17.yz, -r25.xxzx, r25.xxzx, r19.xxyx + add r17.yz, r17.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r30.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r17.yz, r25.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r29.z, r30.x + mov r29.w, r17.y + mov r28.z, r27.x + mov r28.w, r26.x + add r25.xyzw, r28.zwxz, r29.zwxz + mov r30.z, r29.y + mov r30.w, r17.z + mov r27.z, r28.y + mov r27.w, r26.z + add r26.xyz, r27.zywz, r30.zywz + div r28.xyz, r28.xzwx, r25.zwyz + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.yxzy, cb4[400].xxxx + div r27.xyz, r27.zywz, r26.xyzx + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyz, r27.xyzx, cb4[400].yyyy + mov r28.w, r27.x + mad r29.xyzw, r18.xzxz, cb4[400].xyxy, r28.ywxw + mad r17.yz, r18.xxzx, cb4[400].xxyx, r28.zzwz + mov r27.w, r28.y + mov r28.yw, r27.yyyz + mad r30.xyzw, r18.xzxz, cb4[400].xyxy, r28.xyzy + mad r27.xyzw, r18.xzxz, cb4[400].xyxy, r27.wywz + mad r28.xyzw, r18.xzxz, cb4[400].xyxy, r28.xwzw + mul r31.xyzw, r25.zwyz, r26.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r29.xyxx, t6.xxxx, s4, r19.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r29.zwzz, t6.xxxx, s4, r19.w + mul r18.z, r18.z, r31.y + mad r18.x, r31.x, r18.x, r18.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r17.yzyy, t6.xxxx, s4, r19.w + mad r17.y, r31.z, r17.y, r18.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r27.xyxx, t6.xxxx, s4, r19.w + mad r17.y, r31.w, r17.z, r17.y + mul r29.xyzw, r25.xyzw, r26.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r30.xyxx, t6.xxxx, s4, r19.w + mad r17.y, r29.x, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r30.zwzz, t6.xxxx, s4, r19.w + mad r17.y, r29.y, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r27.zwzz, t6.xxxx, s4, r19.w + mad r17.y, r29.z, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r28.xyxx, t6.xxxx, s4, r19.w + mad r17.y, r29.w, r17.z, r17.y + ige r17.z, r17.x, l(0) + or r22.xyz, r22.xyzx, r24.xyzx + or r18.x, r22.y, r22.x + or r18.x, r22.z, r18.x + and r18.z, r19.w, l(0x7fffffff) + ult r18.z, l(0x7f800000), r18.z + or r18.x, r18.z, r18.x + mul r18.z, r25.y, r26.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r28.zwzz, t6.xxxx, s4, r19.w + mad r17.y, r18.z, r19.x, r17.y + add r17.y, r17.y, l(-1.000000) + mad r17.x, cb4[r17.x + 288].w, r17.y, l(1.000000) + movc r17.x, r18.x, l(1.000000), r17.x + movc r17.x, r17.z, r17.x, l(1.000000) + else + mov r17.x, l(1.000000) + endif + else + mov r17.x, l(1.000000) + endif + mul r15.w, r15.w, r17.x + mov r23.xyz, l(0,0,0,0) + endif + add r21.xyz, r21.xyzx, r23.xyzx + mov r16.w, r18.w + endloop + mov r11.y, r15.w + add r20.xyz, r20.xyzx, r21.xyzx + iadd r11.z, r11.z, l(1) +endloop +mad r6.xyz, r20.xyzx, r11.yyyy, r12.xyzx +ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r3.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + dp3 r2.z, r2.xywx, r8.xyzx + max r2.z, r2.z, l(0.000000) + add r2.z, r0.z, r2.z + mad r3.y, r11.w, l(-16.000000), l(-1.000000) + exp r3.y, r3.y + log r2.z, |r2.z| + mul r2.z, r2.z, r3.y + exp r2.z, r2.z + add r2.z, r0.z, r2.z + add r2.z, r2.z, l(-1.000000) + mov_sat r11.xyz, r2.zzzz + mad r12.xyz, r9.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r9.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r9.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + max r12.xyz, r0.zzzz, r12.xyzx +else + mov r11.xyz, r1.yyyy + mov r12.xyz, r1.yyyy +endif +mad r15.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[212].x +mad r16.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx +dp2 r0.z, r16.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx +mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r16.xyz, r15.xzyx, -r16.xyzx +max r0.z, |r16.y|, |r16.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.y, |r16.z|, l(-208.000000) +mul_sat r1.y, r1.y, l(0.031250) +max r0.z, r0.z, r1.y +ne r1.y, l(0.000000), cb0[210].w +lt r2.z, r0.z, l(1.000000) +and r1.y, r1.y, r2.z +if_nz r1.y + mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r16.xyz, r15.xzyx, -r16.xyzx + max r1.y, |r16.y|, |r16.x| + add r1.y, r1.y, l(-29.000000) + mul_sat r1.y, r1.y, l(0.500000) + add r2.z, |r16.z|, l(-13.000000) + mul_sat r2.z, r2.z, l(0.500000) + max r1.y, r1.y, r2.z + lt r2.z, r1.y, l(1.000000) + if_nz r2.z + mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r16.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t19.yzwx, s2, l(0.000000) + add r2.z, -r1.y, l(1.000000) + mul r3.y, l(0.500000), cb0[211].y + mad r7.w, -cb0[211].y, l(0.500000), l(1.000000) + max r3.y, r3.y, r16.y + min r3.y, r7.w, r3.y + mul r16.w, r3.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t20.xyzw, s1, l(0.000000) + mad r3.y, r18.w, r2.z, r0.z + add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mul r19.xyzw, r2.zzzz, r19.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t20.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r17.xxxx, r16.xyzx + mov r16.w, r17.x + mul r16.xyzw, r2.zzzz, r16.xyzw + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r18.xyzx + mul r17.xyzw, r2.zzzz, r17.xyzw + else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r3.y, r0.z + endif + mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r18.xyz, r15.xzyx, -r18.xyzx + max r2.z, |r18.y|, |r18.x| + add r2.z, r2.z, l(-116.000000) + mul_sat r2.z, r2.z, l(0.125000) + add r7.w, |r18.z|, l(-52.000000) + mul_sat r7.w, r7.w, l(0.125000) + max r2.z, r2.z, r7.w + lt r7.w, r2.z, l(1.000000) + if_nz r7.w + mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r18.xyzx, cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t21.yzwx, s2, l(0.000000) + add r7.w, -r2.z, l(1.000000) + mul r1.y, r1.y, r7.w + mul r7.w, l(0.500000), cb0[211].y + mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) + max r7.w, r7.w, r18.y + min r7.w, r8.w, r7.w + mul r18.w, r7.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t22.xyzw, s1, l(0.000000) + mad r3.y, r21.w, r1.y, r3.y + add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t22.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r20.yyyy, r22.xyzx + mov r22.w, r20.y + mad r19.xyzw, r22.xyzw, r1.yyyy, r19.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t22.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.xxxx, r18.xyzx + mov r18.w, r20.x + mad r16.xyzw, r18.xyzw, r1.yyyy, r16.xyzw + mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r18.xyzx + mad r17.xyzw, r20.xyzw, r1.yyyy, r17.xyzw + endif + lt r1.y, l(0.000000), r2.z + if_nz r1.y + mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r15.xyzx, cb0[211].xyzx + mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r18.xyzx + mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r20.xyzx, r15.xyzx + min r15.xyz, r18.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t23.yzwx, s2, l(0.000000) + add r1.y, -r0.z, l(1.000000) + mul r1.y, r1.y, r2.z + max r2.z, r20.y, r15.y + min r2.z, r18.y, r2.z + mul r15.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t24.xyzw, s1, l(0.000000) + add r20.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t24.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r21.yyyy, r20.xyzx + mov r20.w, r21.y + mad r19.xyzw, r20.xyzw, r1.yyyy, r19.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t24.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r21.xxxx, r15.xyzx + mov r15.w, r21.x + mad r16.xyzw, r15.xyzw, r1.yyyy, r16.xyzw + mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r15.xyzx + mad r17.xyzw, r21.xyzw, r1.yyyy, r17.xyzw + mad r3.y, r18.w, r1.y, r3.y + endif + mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r1.y + add r0.z, r0.z, r1.y + mul r15.y, r0.z, l(0.500000) +else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r15.yxyy, cb0[213].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.zw, r15.yyyx, cb0[213].wwwy +mad r18.x, r15.w, l(0.375000), r15.z +add r17.xyzw, r17.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[214].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.zw, r15.yyyx, cb0[214].wwwy +mad r18.x, r15.w, l(0.375000), r15.z +add r16.xyzw, r16.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[215].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.xy, r15.yxyy, cb0[215].wyww +mad r18.x, r15.y, l(0.375000), r15.x +add r15.xyzw, r18.wyzx, r19.xyzw +ge r18.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r18.y, r18.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.zwzz, t18.xyzw, s1, l(0.000000) + lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| + or r4.zw, r19.zzzw, r19.xxxy + or r0.z, r4.w, r4.z + if_nz r0.z + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mov r4.z, l(1.000000) + mov r4.w, r0.z + mov r1.y, l(0) + loop + ge r2.z, l(4.600000), r4.w + breakc_nz r2.z + iadd r2.z, r1.y, l(1) + mul r19.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r4.zw, r19.xxxy + mov r1.y, r2.z + continue + endloop + mul r18.xyzw, r4.zzzz, r18.xyzw + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb7[3].x, cb7[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r19.x, r0.z, l(0.00390625000) + mov r19.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r19.xyxx, t17.zwxy, s1, l(0.000000) + mad r4.zw, r4.zzzw, cb7[2].xxxy, cb7[2].zzzw + mul r19.x, r4.z, l(3.54490781) + mul r19.yzw, r4.wwww, r18.yyzw + mul r0.z, r18.x, l(0.406976730) + exp r0.z, r0.z + mul r18.xyzw, r0.zzzz, r19.xyzw + mov r19.xyzw, r18.xyzw + mov r0.z, l(0) + loop + uge r2.z, r0.z, r1.y + breakc_nz r2.z + mul r20.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r2.z, r20.xyzw, r19.xyzw + dp2 r3.y, r20.yxyy, r19.xyxx + dp2 r4.z, r20.zxzz, r19.xzxx + dp2 r4.w, r20.wxww, r19.xwxx + iadd r7.w, r0.z, l(1) + mov r19.x, r2.z + mov r19.y, r3.y + mov r19.zw, r4.zzzw + mov r0.z, r7.w + continue + endloop + mul r18.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r19.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r18.xyzw, r19.xyzw + dp2 r1.y, r18.yxyy, r19.xyxx + dp2 r2.z, r18.zxzz, r19.xzxx + dp2 r3.y, r18.wxww, r19.xwxx + mul r19.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.z, r18.xyzw, r19.xyzw + dp2 r4.w, r18.yxyy, r19.xyxx + dp2 r7.w, r18.zxzz, r19.xzxx + dp2 r8.w, r18.wxww, r19.xwxx + mul r19.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r9.w, r18.xyzw, r19.xyzw + dp2 r10.x, r18.yxyy, r19.xyxx + dp2 r12.w, r18.zxzz, r19.xzxx + dp2 r14.w, r18.wxww, r19.xwxx + mul r17.w, r0.z, l(0.886226952) + mul r17.x, r3.y, l(-1.02332675) + mul r17.y, r1.y, l(-1.02332675) + mul r17.z, r2.z, l(1.02332675) + mul r16.x, r8.w, l(-1.02332675) + mul r16.yw, r4.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r16.z, r7.w, l(1.02332675) + mul r15.w, r9.w, l(0.886226952) + mul r15.x, r14.w, l(-1.02332675) + mul r15.y, r10.x, l(-1.02332675) + mul r15.z, r12.w, l(1.02332675) + endif +endif +dp3 r0.z, r17.xyzx, r2.xywx +add r0.z, r17.w, r0.z +max r17.x, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r2.xywx +add r0.z, r16.w, r0.z +max r17.y, r0.z, l(0.000000) +dp3 r0.z, r15.xyzx, r2.xywx +add r0.z, r15.w, r0.z +max r17.z, r0.z, l(0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.y, r11.w, l(0.001000) +log r1.y, r1.y +mad r1.y, -r1.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.y +mul r2.xy, r4.xyxx, cb1[0].wwww +round_ni r2.xy, r2.xyxx +add r1.y, |r3.w|, -cb1[2].y +round_ni r1.y, r1.y +add r2.z, l(-1.000000), cb1[1].x +max r2.w, r1.y, l(0.000000) +min r2.z, r2.z, r2.w +ge r1.y, r2.z, r1.y +mad r2.x, r2.y, cb1[0].x, r2.x +ftoi r2.xy, r2.xzxx +iadd r2.xy, r2.xyxx, cb0[110].zwzz +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.x, r2.x, l(0), t0.xxxx +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.y, r2.y, l(0), t0.xxxx +and r2.x, r2.y, r2.x +and r1.y, r1.y, r2.x +mul r2.xyz, r17.xyzx, cb0[111].xxxx +dp3 r2.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r5.w, l(1.000000) +mov r13.w, l(1.000000) +mov r2.yzw, l(0,0,0,0) +mov r3.y, l(1.000000) +mov r4.z, r1.y +mov r4.w, l(0) +loop + lt r7.w, l(0.010000), r3.y + ine r8.w, r4.z, l(0) + and r8.w, r7.w, r8.w + if_nz r8.w + firstbit_lo r8.w, r4.z + ishl r9.w, l(1), r8.w + xor r4.z, r4.z, r9.w + ishl r8.w, r8.w, l(3) + dp4 r15.x, cb1[r8.w + 6].xyzw, r5.xyzw + dp4 r15.y, cb1[r8.w + 7].xyzw, r5.xyzw + dp4 r15.z, cb1[r8.w + 8].xyzw, r5.xyzw + ge r16.xyz, cb1[r8.w + 5].xyzx, |r15.xyzx| + and r9.w, r16.y, r16.x + and r9.w, r16.z, r9.w + if_nz r9.w + mul r9.w, l(0.100000), cb1[r8.w + 5].x + mul r16.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r16.xy, r16.xyxx, r16.xyxx + add r18.xyz, -|r15.xyzx|, cb1[r8.w + 5].xyzx + mul r18.xyz, r18.xyzx, cb1[r8.w + 9].xyzx + eq r10.x, l(1.000000), cb1[r8.w + 10].x + if_nz r10.x + dp3 r19.x, cb1[r8.w + 6].xyzx, r14.xyzx + dp3 r19.y, cb1[r8.w + 7].xyzx, r14.xyzx + dp3 r19.z, cb1[r8.w + 8].xyzx, r14.xyzx + add r20.xyz, -r15.xyzx, cb1[r8.w + 5].xyzx + div r20.xyz, r20.xyzx, r19.xyzx + add r21.xyz, -r15.xyzx, -cb1[r8.w + 5].xyzx + div r21.xyz, r21.xyzx, r19.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx + min r10.x, r20.y, r20.x + min r10.x, r20.z, r10.x + mad r15.xyz, r19.xyzx, r10.xxxx, r15.xyzx + else + mov r15.xyz, r14.xyzx + endif + dp3 r10.x, r15.xyzx, r15.xyzx + rsq r10.x, r10.x + mul r15.xyz, r10.xxxx, r15.xyzx + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r20.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r19.xyz, -r19.xyzx, r20.xyzx + itof r19.xyz, r19.xyzx + dp3 r10.x, r15.xyzx, r19.xyzx + div r15.xyz, r15.xyzx, r10.xxxx + lt r10.x, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r19.xxxy + movc r15.xy, r10.xxxx, r15.zwzz, r15.xyxx + dp4 r10.x, cb1[r8.w + 4].xyzw, r13.xyzw + max r10.x, r10.x, l(0.000000) + max r10.x, r10.x, l(0.000100) + min r11.w, r18.z, r18.y + min r11.w, r11.w, r18.x + add r12.w, r16.y, r16.x + mad r12.w, r16.z, r16.z, r12.w + mad r9.w, r9.w, r9.w, -r12.w + mul r9.w, r9.w, cb1[r8.w + 9].x + mul r9.w, r9.w, cb1[r8.w + 9].x + add r12.w, l(1.000000), -cb1[r8.w + 10].y + mul r9.w, r9.w, r12.w + mul r9.w, r9.w, l(100.000000) + mad_sat r9.w, r11.w, cb1[r8.w + 10].y, r9.w + mul r11.w, r9.w, cb1[r8.w + 10].w + mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r15.xy, r15.xyxx, cb1[1].wwww, cb1[2].wwww + mov r15.z, cb1[r8.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z + mul r15.xyz, r15.xyzx, cb1[r8.w + 9].wwww + div r12.w, r2.x, r10.x + min r12.w, |r12.w|, l(1.000000) + mad r12.w, r12.w, l(2.000000), r2.x + add r10.x, r10.x, l(2.000000) + div r10.x, r12.w, r10.x + add r10.x, r10.x, l(-1.000000) + mad r10.x, r10.x, cb0[112].w, l(1.000000) + mul r15.xyz, r10.xxxx, r15.xyzx + mul r15.xyz, r11.wwww, r15.xyzx + mad r2.yzw, r15.xxyz, r3.yyyy, r2.yyzw + mad r8.w, -r9.w, cb1[r8.w + 10].w, l(1.000000) + mul r3.y, r3.y, r8.w + endif + mov r4.w, l(-1) + continue + else + mov r4.w, r7.w + break + endif + mov r4.w, r7.w +endloop +if_nz r4.w + dp3 r1.y, r14.xyzx, r14.xyzx + rsq r1.y, r1.y + mul r5.xzw, r1.yyyy, r14.xxyz + lt r14.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r5.xzwx + lt r15.xyz, r5.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r14.xyz, -r14.xyzx, r15.xyzx + itof r14.xyz, r14.xyzx + dp3 r1.y, r5.xzwx, r14.xyzx + div r5.xzw, r5.xxzw, r1.yyyy + lt r1.y, r5.w, l(0.000000) + add r4.zw, -|r5.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r4.zw, r4.zzzw, r14.xxxy + movc r4.zw, r1.yyyy, r4.zzzw, r5.xxxz + mov r13.w, l(1.000000) + dp4 r1.y, cb1[3].xyzw, r13.xyzw + max r1.y, r1.y, l(0.000000) + max r1.y, r1.y, l(0.000100) + mad r4.zw, r4.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r13.xy, r4.zwzz, cb1[1].wwww, cb1[2].wwww + mov r13.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r5.xzw, r13.xyzx, t5.xwyz, s3, r0.z + div r0.z, r2.x, r1.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r2.x + add r1.y, r1.y, l(2.000000) + div r0.z, r0.z, r1.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r5.xzw, r0.zzzz, r5.xxzw + mad r2.yzw, r5.xxzw, r3.yyyy, r2.yyzw +endif +mul r2.xyz, r2.yzwy, cb0[112].zzzz +mul r2.xyz, r2.xyzx, cb0[111].yyyy +if_nz r3.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x + add r1.y, -r0.z, l(1.000000) + mul r13.xyz, r1.yyyy, r2.xyzx + mad r2.xyz, r5.xzwx, r0.zzzz, r13.xyzx +endif +mul r5.xzw, r9.xxyz, r17.xxyz +mul r5.xzw, r5.xxzw, cb0[111].xxxx +add r0.z, -r3.x, l(1.000000) +div r0.z, r0.z, r3.x +mul r1.xyz, r0.zzzz, r1.xzwx +mad r1.xyz, r1.xyzx, r10.yzwy, r10.yzwy +mul r1.xyz, r1.xyzx, r2.xyzx +mul r1.xyz, r11.xyzx, r1.xyzx +mad r1.xyz, r5.xzwx, r12.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r6.xyzx +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r6.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r5.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r8.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[163].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r8.xyzx, -r7.xyzx + add r2.w, r5.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.w + mul r4.z, r0.x, r3.z + mad r4.w, r4.z, r2.w, cb0[44].y + mad r2.w, -r4.z, r2.w, r2.w + mul r4.z, r2.w, cb0[159].z + max r4.z, r4.z, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.x, r4.w, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.z, l(5.960464478E-08), |r4.z| + exp r5.w, -r4.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.z + mad r4.z, -r4.z, l(0.240226507), l(0.693147182) + movc r4.z, r5.z, r5.w, r4.z + add r4.w, r4.w, -cb0[162].z + mul r4.w, r4.w, cb0[162].x + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[162].y + lt r5.z, l(5.960464478E-08), |r2.w| + exp r5.w, -r2.w + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r5.z, r5.w, r2.w + mul r2.w, r2.w, r4.w + mad r2.w, r5.x, r4.z, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r0.x, r6.w, r0.x + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r6.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.xxxy + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r3.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r3.xyzx, t16.xyzw, s1, l(0.000000) + add r0.y, |r3.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r5.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r6.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r6.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx + +// === Simplified Fog Modification (Anti-Banding) === +// Check if fog modification is enabled via cb13[12].y +lt r15.x, l(0.500000), cb13[12].y +if_nz r15.x + // r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter + // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density + add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + + // Reduce fog inscatter intensity + mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + + // Modified fog blend: scene * boostedTrans + reducedInscatter + mad o0.xyz, r1.xyzx, r15.xyzx, r16.xyzx +else + // Original fog blend + mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +endif +// === End Fog Modification === +dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..94ad4d1501 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0_original_backup.asm @@ -0,0 +1,1942 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 16:35:51 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[5], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_constantbuffer CB7[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_sampler s5, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture2d (float,float,float,float) t17 +dcl_resource_texture2d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture3d (float,float,float,float) t23 +dcl_resource_texture3d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_resource_texture2d (float,float,float,float) t27 +dcl_resource_texture2d (float,float,float,float) t28 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 38 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t26.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t27.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r2.xyw, r1.wwww, r3.xyxz +utof r4.xy, r0.xyxx +mul r4.zw, v0.xxxy, cb0[82].zzzw +mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r5.zw, r5.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) +mul r6.xyzw, -r5.yyyy, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw +mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r3.w, r5.y, cb0[1].z +mad r3.w, cb0[0].z, r5.x, r3.w +mad r3.w, cb0[2].z, r5.z, r3.w +add r3.w, r3.w, cb0[3].z +eq r6.x, l(0.000000), cb0[86].w +add r6.yzw, -r5.xxyz, cb0[44].xxyz +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r6.xyz, r6.xxxx, r6.yzwy, r7.xyzx +dp3 r6.w, r6.xyzx, r6.xyzx +max r7.w, r6.w, l(9.999999939E-09) +rsq r7.w, r7.w +mul r8.xyz, r6.xyzx, r7.wwww +mul r6.w, r6.w, r7.w +lt r8.w, l(0.000488281250), cb0[234].x +if_nz r8.w + sample_b_indexable(texture2d)(float,float,float,float) r9.xy, v1.xyxx, t25.xyzw, s1, cb0[108].x +else + mov r9.xy, l(1.000000,1.000000,0,0) +endif +lt r9.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[226].xxxy +if_nz r9.z + add r9.z, |r2.y|, |r2.x| + add r9.z, |r2.w|, r9.z + div r9.z, l(1.000000, 1.000000, 1.000000, 1.000000), r9.z + mul r10.xyz, |r2.xywx|, r9.zzzz + mul r11.xyz, r5.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r9.z, r11.xyzx, t10.yzxw, s2, l(0.000000) + mul r11.xyzw, r10.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) + add r10.xyw, r11.zwzz, r11.xxxy + mad r10.xyz, r10.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r10.xywx + mad r10.w, r9.z, l(2.000000), l(-1.000000) + mul r10.xyz, r10.wwww, r10.xyzx + mov r10.w, |r2.y| + add r10.w, r10.w, l(-0.700000) + mul_sat r10.w, r10.w, l(4.000000) + mad r11.x, r10.w, l(-2.000000), l(3.000000) + mul r10.w, r10.w, r10.w + mul r10.w, r10.w, r11.x + add r11.x, -cb0[229].z, cb0[229].y + mad r10.w, r10.w, r11.x, cb0[229].z + mul r10.xyz, r10.wwww, r10.xyzx +else + mov r10.xyz, l(0,0,0,0) + mov r9.z, l(0) +endif +mad r10.w, -r3.y, r1.w, l(-0.200000) +if_nz r9.w + mul r11.xyz, r2.xywx, cb0[233].zzzz + mul r12.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r11.xyz, r11.xyzx, cb0[225].xxxx, r12.xyzx + max r9.w, -r2.y, l(0.000000) + min r9.w, r9.w, l(0.900000) + add r9.w, -r9.w, l(1.000000) + mul_sat r11.w, r10.w, l(-10.000000) + mad r12.x, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.x + max r11.w, r11.w, l(0.100000) + min r11.w, r11.w, l(1.000000) + mul r9.w, r9.w, r11.w + mad r11.xyz, r11.xyzx, r9.wwww, r5.xyzx + add r10.xyz, r10.xyzx, r11.xyzx + mul r11.xyz, r10.yyyy, cb5[1].xyzx + mad r11.xyz, cb5[0].xyzx, r10.xxxx, r11.xyzx + mad r10.xyz, cb5[2].xyzx, r10.zzzz, r11.xyzx + add r10.xyz, r10.xyzx, cb5[3].xyzx + mad r11.x, r10.x, l(0.500000), cb5[4].x + mad r9.w, r10.y, l(0.500000), l(0.500000) + add r11.z, -r9.w, cb5[4].y + add r10.xy, r11.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r9.w, r10.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r9.w, r10.xyxx, t9.xxxx, s5, r9.w +else + mov r9.w, l(1.000000) +endif +mov_sat r10.x, r2.y +add r10.y, l(1.000000), -cb0[230].w +mad r10.x, r10.x, r10.y, cb0[230].w +add r10.yz, r5.xxzx, -cb0[44].xxzx +max r10.y, |r10.z|, |r10.y| +mul r10.z, r9.w, r10.x +mul r11.x, l(0.0500000119), cb0[222].w +mad r11.y, -cb0[222].w, l(0.700000), r10.y +div r11.x, l(1.000000, 1.000000, 1.000000, 1.000000), r11.x +mul_sat r11.x, r11.x, r11.y +mad r11.y, r11.x, l(-2.000000), l(3.000000) +mul r11.x, r11.x, r11.x +mul r11.x, r11.x, r11.y +mad r9.w, -r10.x, r9.w, l(1.000000) +mad r9.w, r11.x, r9.w, r10.z +ge r10.z, r1.z, l(0.045000) +and r10.z, r10.z, l(0x3f800000) +mul r10.z, r9.w, r10.z +deriv_rty_coarse r11.xyz, r5.xyzx +deriv_rtx_coarse r12.xyz, r5.zxyz +mul r13.xyz, r11.xyzx, r12.xyzx +mad r11.xyz, r11.zxyz, r12.yzxy, -r13.xyzx +dp3 r11.w, r11.xyzx, r11.xyzx +max r11.w, r11.w, l(1.175494351E-38) +rsq r11.w, r11.w +mul r12.xyz, r11.wwww, r11.xzyx +mov_sat r11.y, r12.x +add r11.z, r11.y, l(-0.988000) +mul_sat r11.z, r11.z, l(1000.012878) +mad r12.w, r11.z, l(-2.000000), l(3.000000) +mul r11.z, r11.z, r11.z +mul r11.z, r11.z, r12.w +add r12.w, |r3.w|, l(-15.000000) +mul_sat r12.w, r12.w, l(0.015000) +add r12.w, -r12.w, l(1.000000) +lt r13.x, l(0.000488281250), cb0[223].y +mad r13.y, cb0[223].z, l(0.300000), l(0.687000) +add r11.y, r11.y, -r13.y +mul_sat r11.y, r11.y, l(-1000.012878) +mad r13.y, r11.y, l(-2.000000), l(3.000000) +mul r11.y, r11.y, r11.y +mul r11.y, r11.y, r13.y +mad r11.x, r11.x, r11.w, l(0.500000) +mul_sat r11.x, r11.x, l(2.500000) +mad r11.w, r11.x, l(-2.000000), l(3.000000) +mul r11.x, r11.x, r11.x +mul r11.x, r11.x, r11.w +mul r11.x, r11.x, r11.y +lt r11.x, l(0.000488281250), r11.x +and r11.x, r11.x, r13.x +if_nz r11.x + mul r11.xy, |r12.yzyy|, |r12.yzyy| + add r11.w, r11.y, r11.x + div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w + mul r11.xy, r11.wwww, r11.xyxx + mul r13.xyz, r12.xzyx, l(0.000000, 1.000000, 0.000000, 0.000000) + mad r13.xyz, r12.yxzy, l(1.000000, 0.000000, 0.000000, 0.000000), -r13.xyzx + dp2 r11.w, r13.xyxx, r13.xyxx + rsq r11.w, r11.w + mul r13.xyz, r11.wwww, r13.xyzx + mul r14.xyz, r12.xzyx, r13.xyzx + mad r14.xyz, r13.zxyz, r12.zyxz, -r14.xyzx + dp3 r11.w, r14.xyzx, r14.xyzx + rsq r11.w, r11.w + mul r14.xyz, r11.wwww, r14.xyzx + add r15.xyz, r5.xyzx, r5.xyzx + round_ni r15.xyz, r15.xyzx + add r15.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + add r13.zw, r15.yyyy, r15.xxxz + dp2 r11.w, r13.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + lt r13.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.zzzy + lt r15.xy, r12.zyzz, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r13.zw, r13.zzzw, -r15.xxxy + itof r13.zw, r13.zzzw + mul r15.xy, r5.xzxx, r13.zwzz + mul r13.z, r9.z, r11.w + add r13.w, -r11.w, l(1.000000) + mad r13.w, r13.w, l(0.700000), l(0.300000) + mul r16.xy, r13.zzzz, l(3.000000, 6.000000, 0.000000, 0.000000) + mad r13.z, -cb0[223].x, r13.w, r16.x + frc r17.x, r13.z + mad r13.z, cb0[223].x, l(-0.300000), r16.y + frc r17.y, r13.z + mul r11.w, r11.w, l(5.000000) + round_ni r11.w, r11.w + add r16.x, r11.w, l(1.000000) + mul r16.y, r5.y, r16.x + mov r5.w, l(0.100000) + mul r13.zw, r5.yyyw, r16.xxxy + frc r13.zw, r13.zzzw + add r16.xy, r17.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + add r16.xy, r13.zwzz, -r16.xyxx + add r16.xy, r16.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) + mul_sat r16.xy, r16.xyxx, l(5.00000048, 5.00000048, 0.000000, 0.000000) + mad r16.zw, r16.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) + mul r16.xy, r16.xyxx, r16.xyxx + mul r16.xy, r16.xyxx, r16.zwzz + add r16.zw, -r13.zzzw, r17.xxxy + max r16.xy, r16.zwzz, r16.xyxx + add r17.zw, -r17.xxxy, r13.zzzw + add r17.zw, r17.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) + mul r17.zw, r17.zzzw, l(0.000000, 0.000000, 5.00000048, 5.00000048) + max r17.zw, r17.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r18.xy, r17.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r17.zw, r17.zzzw, r17.zzzw + mul r17.zw, r17.zzzw, r18.xxxy + add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + max r16.zw, r16.zzzw, r17.zzzw + ge r13.zw, r13.zzzw, r17.xxxy + and r13.zw, r13.zzzw, l(0, 0, 0x3f800000, 0x3f800000) + add r16.zw, -r16.xxxy, r16.zzzw + mad r13.zw, r13.zzzw, r16.zzzw, r16.xxxy + mad r11.w, r13.z, r13.z, l(-0.400000) + mul_sat r11.w, r11.w, l(1.66666663) + mad r13.z, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r13.z + mad r13.z, r13.w, l(2.000000), l(-1.000000) + mul r16.x, r11.w, l(0.010000) + mul r16.y, r13.z, r16.x + mad r17.x, r9.z, l(0.100000), r16.y + mul r16.x, r11.w, r16.x + mad r16.x, r16.x, r13.z, r9.z + mul r17.y, r9.z, r16.x + mov r15.z, r5.y + mad r16.xy, r15.yzyy, cb0[224].xyxx, r17.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r16.xyxx, t11.xyzw, s2, cb0[108].x + mov r15.w, -r15.x + mad r15.xy, r15.wzww, cb0[224].xyxx, r17.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r15.xyzw, r15.xyxx, t11.xyzw, s2, cb0[108].x + mul r15.xyzw, r11.yyyy, r15.xyzw + mad r15.xyzw, r16.xyzw, r11.xxxx, r15.xyzw + mad r11.xy, r15.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mad r9.z, r11.w, l(2.000000), l(-1.000000) + mad_sat r9.z, r9.z, l(0.800000), r13.w + mad r13.w, -r15.w, l(0.500000), l(1.000000) + mad r9.z, r9.z, r13.w, l(-0.700000) + mul_sat r9.z, r9.z, l(3.33333325) + mad r13.w, r9.z, l(-2.000000), l(3.000000) + mul r9.z, r9.z, r9.z + mul r9.z, r9.z, r13.w + mul r13.z, r13.z, r15.w + mad_sat r11.w, r13.z, l(0.500000), r11.w + mad r11.w, r11.w, l(0.500000), l(0.100000) + max r9.z, r9.z, r11.w + add r11.w, -r9.z, l(1.000000) + max r11.w, r11.w, l(0.000000) + mul r13.z, r11.w, r11.w + mul r13.z, r13.z, r13.z + mul r11.w, r11.w, r13.z + ge r11.w, r15.z, r11.w + and r11.w, r11.w, l(0x3f800000) + mad r9.z, r9.z, l(0.700000), l(0.200000018) + mad r9.z, r11.w, r9.z, l(0.100000) + mul r9.z, r15.z, r9.z + mul r9.z, r9.z, cb0[223].y + mul r9.z, r9.z, l(0.330000) + mul r11.w, r10.z, cb0[222].x + mul r11.w, r12.w, r11.w + mul r9.z, r9.z, r11.w + dp2 r11.w, r11.xyxx, r11.xyxx + min r11.w, r11.w, l(1.000000) + add r11.w, -r11.w, l(1.000000) + sqrt r11.w, r11.w + max r11.w, r11.w, l(0.000488281250) + mul_sat r13.z, r9.z, l(10.000000) + mad r13.w, r13.z, l(-2.000000), l(3.000000) + mul r13.z, r13.z, r13.z + mul r13.z, r13.z, r13.w + mul r13.z, r13.z, cb0[223].y + mul r15.xy, r11.xyxx, r13.zzzz + add r11.x, l(-1.500000), cb0[223].y + mul_sat r11.x, r11.x, l(0.666666687) + mad r11.y, r11.x, l(-2.000000), l(3.000000) + mul r11.x, r11.x, r11.x + mul r11.x, r11.x, r11.y + mul r11.y, r11.x, l(-0.200000) + mad r11.x, -r11.x, l(-0.200000), r11.w + mad r15.z, r9.z, r11.x, r11.y + dp3 r11.x, r15.xyzx, r15.xyzx + max r11.x, r11.x, l(1.175494351E-38) + rsq r11.x, r11.x + mul r11.xyw, r11.xxxx, r15.xyxz + mov r15.x, r13.y + mov r15.y, r14.x + mov r15.z, r12.y + dp3 r15.x, r15.xyzx, r11.xywx + mov r14.w, r12.x + dp2 r15.y, r14.ywyy, r11.ywyy + mov r12.x, r13.x + mov r12.y, r14.z + dp3 r15.z, r12.xyzx, r11.xywx + mad r11.xyw, -r3.xyxz, r1.wwww, r15.xyxz + mad r13.xyz, r9.zzzz, r11.xywx, r2.xywx + mul r9.z, r9.z, cb0[223].y + mul r9.z, r9.z, l(0.330000) +else + mov r13.xyz, r2.xywx + mov r9.z, l(0) +endif +lt r11.xy, l(0.000488281250, 0.000488281250, 0.000000, 0.000000), cb0[227].ywyy +or r11.x, r11.y, r11.x +lt r11.y, l(0.000488281250), r11.z +and r11.x, r11.y, r11.x +if_nz r11.x + mul r11.xyw, r2.ywyx, l(1.000000, 0.000000, 0.000000, 0.000000) + mad r11.xyw, r2.xyxw, l(0.000000, 0.000000, 0.000000, 1.000000), -r11.xyxw + dp2 r12.x, r11.xwxx, r11.xwxx + rsq r12.x, r12.x + mul r11.xyw, r11.xyxw, r12.xxxx + mul r12.xyz, r2.ywxy, r11.xywx + mad r12.xyz, r11.wxyw, r2.wxyw, -r12.xyzx + dp3 r11.y, r12.xyzx, r12.xyzx + rsq r11.y, r11.y + mul r14.xyz, r11.yyyy, r12.xzyx + mul r12.xy, -r5.xzxx, cb0[228].xyxx + frc r15.xy, r12.xyxx + round_ni r12.xy, r12.xyxx + dp2 r11.y, r12.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.y, null, r11.y + mul r11.y, r11.y, l(43758.546875) + frc r11.y, r11.y + add r12.x, r11.y, cb0[227].x + frc r12.x, r12.x + mul r12.y, cb0[228].z, cb0[228].z + mul r12.x, r12.y, r12.x + round_ni r12.x, r12.x + div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[228].z + mad r15.zw, -r5.xxxz, cb0[228].xxxy, cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.xy, r15.zwzz, t12.zwxy, s2, cb0[108].x + mad r15.zw, -r5.xxxz, cb0[228].xxxy, -cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.zw, r15.zwzz, t12.xyzw, s2, cb0[108].x + mul r16.xyzw, r16.xyzw, cb0[227].wwww + mad r16.xyzw, r16.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -cb0[227].wwww + ge r11.y, l(0.500000), r11.y + and r11.y, r11.y, l(0x3f800000) + add r15.zw, -r15.xxxy, r15.yyyx + mad r15.xy, r11.yyyy, r15.zwzz, r15.xyxx + div r11.y, r12.x, cb0[228].z + ge r12.z, r11.y, -r11.y + frc r11.y, |r11.y| + movc r11.y, r12.z, r11.y, -r11.y + mul r11.y, r11.y, cb0[228].z + mul r17.x, r11.y, r12.y + add r15.zw, l(0.000000, 0.000000, -0.050000, -1.000000), cb0[228].wwwz + mul r11.y, r12.y, r12.x + round_ni r11.y, r11.y + add r11.y, -r11.y, r15.w + mul r17.y, r11.y, r12.y + mad r12.xy, r15.xyxx, r12.yyyy, r17.xyxx + frc r12.xy, r12.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r12.xy, r12.xyxx, t12.xyzw, s1, cb0[108].x + mul r12.xy, r12.xyxx, cb0[227].yyyy + mad r12.xy, r12.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[227].yyyy + add r15.xy, r16.zwzz, r16.xyxx + add r12.xy, r12.xyxx, r15.xyxx + dp2 r11.y, r12.xyxx, r12.xyxx + min r11.y, r11.y, l(1.000000) + add r11.y, -r11.y, l(1.000000) + sqrt r11.y, r11.y + max r12.z, r11.y, l(0.000488281250) + dp3 r11.y, r12.xyzx, r12.xyzx + rsq r11.y, r11.y + mul r12.xyz, r11.yyyy, r12.xyzx + mov r14.w, r2.x + dp2 r16.x, r14.xwxx, r12.yzyy + mov r17.x, r11.w + mov r17.y, r14.z + mov r17.z, r2.y + dp3 r16.y, r17.xyzx, r12.xyzx + mov r14.x, r11.x + mov r14.z, r2.w + dp3 r16.z, r14.xyzx, r12.xyzx + mul r10.z, r10.z, cb0[222].x + mul r10.z, r11.z, r10.z + max r11.x, l(0.000488281250), cb0[228].w + mov_sat r15.z, r15.z + add r11.y, -r11.x, r15.z + add r11.x, r2.z, -r11.x + div r11.y, l(1.000000, 1.000000, 1.000000, 1.000000), r11.y + mul_sat r11.x, r11.y, r11.x + mad r11.y, r11.x, l(-2.000000), l(3.000000) + mul r11.x, r11.x, r11.x + mul r11.x, r11.x, r11.y + mul r10.z, r10.z, r11.x + mul r10.z, r12.w, r10.z + mad r3.xyz, -r3.xyzx, r1.wwww, r16.xyzx + mad r13.xyz, r10.zzzz, r3.xyzx, r2.xywx +endif +min r1.w, r9.y, r9.x +mul r3.x, r10.x, cb0[230].z +mad r3.y, -cb0[230].z, r10.x, l(1.000000) +mad r3.x, r9.w, r3.y, r3.x +mad r3.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r3.z, r10.y, -cb0[222].w +div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y +mul_sat r3.y, r3.y, r3.z +mad r3.z, r3.y, l(-2.000000), l(3.000000) +mul r3.y, r3.y, r3.y +mul r3.y, r3.y, r3.z +add r3.z, -r3.x, cb0[230].y +mad r3.x, r3.y, r3.z, r3.x +add r3.x, -r3.x, l(1.000000) +mul r3.y, r3.x, r9.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r3.z, -r2.z, l(1.000000) +mad_sat r9.w, r3.z, cb0[222].z, cb0[222].y +mad_sat r9.w, r9.z, cb0[224].z, r9.w +add r10.x, -r9.w, l(1.000000) +mad r9.w, r1.x, r10.x, r9.w +mul_sat r10.x, r10.w, l(3.33333325) +mad r10.y, r10.x, l(-2.000000), l(3.000000) +mul r10.x, r10.x, r10.x +mad r10.x, -r10.y, r10.x, l(1.000000) +mul r10.y, r9.w, cb0[222].x +add r10.z, -r1.x, l(1.000000) +mul r10.y, r10.z, r10.y +mul r10.y, r10.x, r10.y +mad r10.y, r10.y, l(-0.750000), l(1.000000) +mad r9.w, r9.w, l(-0.299999952), l(0.900000) +sqrt r10.z, r3.z +add r9.w, r9.w, r10.z +add_sat r9.w, r9.w, l(-0.600000) +max r9.w, r3.z, r9.w +min r9.w, r9.w, l(0.990000) +add_sat r10.z, l(2.000000), -cb0[222].x +mul r10.z, r10.z, cb0[222].x +mul r10.x, r10.x, r10.z +mad r3.x, -r9.x, r3.x, l(1.000000) +mul r3.x, r3.x, r10.x +add r9.x, -r3.z, r9.w +mad r3.x, r3.x, r9.x, r3.z +add r3.x, -r3.x, l(1.000000) +mul_sat r3.z, r9.z, l(20.000000) +mad r9.x, r3.z, l(-2.000000), l(3.000000) +mul r3.z, r3.z, r3.z +mul r3.z, r3.z, r9.x +mad r3.z, r3.z, l(-0.900000), l(1.000000) +mul r9.x, r3.z, r3.x +add r9.y, r9.y, l(-1.000000) +mad r11.x, r1.z, r9.y, l(1.000000) +add r11.y, -r1.z, l(1.000000) +movc r9.yz, r8.wwww, r11.xxyx, l(0,1.000000,1.000000,0) +min r1.z, r9.x, r9.y +mad r3.x, r3.x, r3.z, -r1.z +mad r1.z, r1.w, r3.x, r1.z +add r2.z, -r1.z, r2.z +mad r11.w, r3.y, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r9.xyw, r0.xyzz, t28.xywz +min r1.z, r10.y, r9.z +add r2.z, -r1.z, r10.y +mad r1.z, r1.w, r2.z, r1.z +add r1.w, -r1.z, l(1.000000) +mad r1.z, r3.y, r1.w, r1.z +mul r3.xyz, r1.zzzz, r9.xywx +mul r10.xyz, r1.xxxx, r3.xyzx +mad r9.xyz, r9.xywx, r1.zzzz, -r10.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz +dp3 r2.z, r13.xyzx, r8.xyzx +max r10.x, r2.z, l(0.000000) +mul r3.y, r11.w, r11.w +mul r12.x, r10.x, r10.x +mul r12.z, r10.x, r12.x +mul r2.z, r3.y, r3.y +mul r3.z, r3.y, r2.z +mov r10.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r14.x, l(3.327070, 1.000000, 0.000000, 0.000000), r10.xyxx +dp2 r14.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r10.xzxx +mov r3.x, l(1.000000) +dp2 r8.w, r14.xyxx, r3.xyxx +mov r12.yw, l(0,9.044010,0,1.000000) +dp3 r14.x, l(3.596850, -1.367720, 1.000000, 0.000000), r12.xzwx +dp3 r14.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r12.xyzx +mov r15.x, l(5.565890) +mov r15.yz, r12.xxzx +dp3 r14.z, l(1.000000, 19.788601, -20.212299, 0.000000), r15.xyzx +dp3 r9.w, r14.xyzx, r3.xyzx +div r8.w, r8.w, r9.w +dp2 r14.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r10.xwxx +mov r12.x, l(1.296780) +mov r12.y, r10.x +dp2 r14.y, l(1.000000, -0.755907, 0.000000, 0.000000), r12.xyxx +dp2 r9.w, r14.xyxx, r3.xyxx +dp3 r14.x, l(2.923380, 59.418800, 1.000000, 0.000000), r12.yzwy +mov r12.xw, l(20.322500,0,0,121.563004) +dp3 r14.y, l(1.000000, -27.030199, 222.591995, 0.000000), r12.xyzx +dp3 r14.z, l(626.130005, 316.627014, 1.000000, 0.000000), r12.yzwy +dp3 r3.x, r14.xyzx, r3.xyzx +div r3.x, r9.w, r3.x +mad r10.yzw, r1.xxzw, r8.wwww, r3.xxxx +add r3.x, r3.x, r8.w +ld_indexable(texture2d)(float,float,float,float) r12.x, r0.xyzz, t7.xyzw +lt r0.z, l(0.001000), r12.x +if_nz r0.z + dp3 r0.z, -r8.xyzx, r13.xyzx + add r0.z, r0.z, r0.z + mad r14.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx + dp3 r0.z, -cb3[0].xyzx, r14.xyzx + mad r15.xyz, cb3[0].xyzx, r0.zzzz, r14.xyzx + lt r0.z, r0.z, cb3[4].z + dp3 r3.z, r15.xyzx, r15.xyzx + max r3.z, r3.z, l(0.0000610351562) + rsq r3.z, r3.z + mul r15.xyz, r3.zzzz, r15.xyzx + mul r15.xyz, r15.xyzx, cb3[4].yyyy + mad r15.xyz, -cb3[0].xyzx, cb3[4].zzzz, r15.xyzx + dp3 r3.z, r15.xyzx, r15.xyzx + rsq r3.z, r3.z + mul r15.xyz, r3.zzzz, r15.xyzx + movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx + mad r15.xyz, r6.xyzx, r7.wwww, r14.xyzx + dp3 r0.z, r15.xyzx, r15.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r15.xyz, r0.zzzz, r15.xyzx + dp3_sat r11.y, r14.xyzx, r13.xyzx + dp3_sat r0.z, r13.xyzx, r15.xyzx + min r11.z, r10.x, l(1.000000) + mad r3.z, r0.z, r2.z, -r0.z + mad r0.z, r3.z, r0.z, l(1.000000) + dp3_sat r3.z, r8.xyzx, r15.xyzx + add r3.z, -r3.z, l(1.000000) + mul r8.w, r3.z, r3.z + mul r8.w, r8.w, r8.w + mul r9.w, r3.z, r8.w + add r12.z, -r11.w, l(1.000000) + mad r12.w, -r12.z, l(0.383026), l(-0.0761947036) + mad r12.w, r12.z, r12.w, l(1.049970) + mad r12.z, r12.z, r12.w, l(0.409255) + min r12.z, r12.z, l(0.999000) + add r12.w, -r12.z, l(1.000000) + add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx + mad r3.z, -r8.w, r3.z, l(1.000000) + mad r16.xyz, r1.xzwx, r3.zzzz, r9.wwww + mul r0.z, r0.z, r0.z + div r0.z, r2.z, r0.z + mad r17.xy, -r11.zyzz, r2.zzzz, r11.zyzz + mad r17.xy, r17.xyxx, r11.zyzz, r2.zzzz + sqrt r17.xy, r17.xyxx + mul r17.xy, r11.yzyy, r17.xyxx + add r2.z, r17.y, r17.x + add r2.z, r2.z, l(0.000100) + div r2.z, l(0.500000), r2.z + mul r0.z, r0.z, r2.z + mul r16.xyz, r0.zzzz, r16.xyzx + min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r17.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r17.xyxx, t13.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r17.zwzz, t13.yzxw, s1, l(0.000000) + mul r0.z, r0.z, r2.z + mul r0.z, r12.z, r0.z + div r0.z, r0.z, r12.w + mul r17.xyz, r15.xyzx, r15.xyzx + mul r17.xyz, r0.zzzz, r17.xyzx + mad r15.xyz, -r15.xyzx, r12.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r15.xyz, r17.xyzx, r15.xyzx + add r15.xyz, r15.xyzx, r16.xyzx + mul r15.xyz, r15.xyzx, cb3[4].xxxx + max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r15.xyz, r15.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + dp3_sat r0.z, r14.xyzx, r2.xywx + mul r14.xyz, r0.zzzz, r9.xyzx + mad r14.xyz, r15.xyzx, r11.yyyy, r14.xyzx + mul r14.xyz, r14.xyzx, cb3[1].xyzx + mov r12.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r12.yzw, r12.xyxx, t8.wxyz, s1, cb0[108].x + add r0.z, -r12.x, l(1.000000) + mad r12.xyz, r14.xyzx, r12.yzwy, -r14.xyzx + mad r12.xyz, r0.zzzz, r12.xyzx, r14.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t14.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r12.xyz, r0.zzzz, r12.xyzx +else + mov r12.xyz, l(0,0,0,0) +endif +mul r11.yz, r4.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r11.yz, r11.yyzy +mad r0.z, r11.z, cb2[1].y, r11.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r2.z, -cb0[85].y, cb2[2].w, |r3.w| +round_ni r2.z, r2.z +add r3.z, l(-1.000000), cb2[1].w +max r8.w, r2.z, l(0.000000) +min r3.z, r3.z, r8.w +mul r8.w, r3.z, l(8.000000) +ftoi r8.w, r8.w +ge r2.z, r3.z, r2.z +iadd r3.z, r8.w, cb0[110].y +dp3 r8.w, -r8.xyzx, r13.xyzx +add r8.w, r8.w, r8.w +mad r14.xyz, r13.xyzx, -r8.wwww, -r8.xyzx +min r11.x, r10.x, l(1.000000) +add r8.w, -r11.w, l(1.000000) +mad r9.w, -r8.w, l(0.383026), l(-0.0761947036) +mad r9.w, r8.w, r9.w, l(1.049970) +mad r8.w, r8.w, r9.w, l(0.409255) +min r8.w, r8.w, l(0.999000) +add r9.w, -r8.w, l(1.000000) +add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx +mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r10.x, r11.yzyy, t13.xyzw, s1, l(0.000000) +mad r16.xyz, -r15.xyzx, r9.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r15.xyz, r15.xyzx, r15.xyzx +mov r17.w, l(1.000000) +mov r18.y, l(1.000000) +mov r19.z, r11.w +mov r20.xyz, l(0,0,0,0) +mov r11.yz, l(0,1.000000,0,0) +loop + ilt r12.w, l(7), r11.z + breakc_nz r12.w + iadd r12.w, r0.z, r11.z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx + iadd r14.w, r3.z, r11.z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r14.w, r14.w, l(0), t0.xxxx + and r12.w, r12.w, r14.w + and r12.w, r2.z, r12.w + ishl r14.w, r11.z, l(5) + mov r21.xyz, l(0,0,0,0) + mov r15.w, r11.y + mov r16.w, r12.w + loop + breakc_z r16.w + firstbit_lo r18.z, r16.w + ishl r18.w, l(1), r18.z + xor r18.w, r16.w, r18.w + iadd r18.z, r14.w, r18.z + bfi r22.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r18.zzzz, l(1, 3, 5, 6) + bfi r19.w, l(29), l(3), r18.z, l(7) + ftou r20.w, cb3[r22.z + 6].w + ieq r20.w, r20.w, l(1) + if_nz r20.w + add r17.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx + and r23.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.z + 6].xzyx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.w + 6].yxzy + ushr r25.xyz, cb3[r22.z + 6].xzyx, l(16, 16, 16, 0) + ushr r26.xyz, cb3[r22.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r23.xyz, r23.xyzx + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyw, r26.yxyz + mov r27.xz, r23.xxzx + mov r27.yw, r25.xxxz + dp4 r20.w, r17.xyzw, r27.xyzw + mov r25.x, r23.y + mov r25.z, r24.y + mov r25.w, r26.x + dp4 r21.w, r17.xyzw, r25.xyzw + mov r26.xz, r24.xxzx + dp4 r17.x, r17.xyzw, r26.xyzw + max r17.y, |r20.w|, |r21.w| + max r17.x, |r17.x|, r17.y + mad r17.y, cb3[r19.w + 6].x, l(0.500000), l(0.500000) + add r17.x, -r17.y, r17.x + mad r17.y, -cb3[r19.w + 6].x, l(0.500000), l(0.500000) + div_sat r17.x, r17.x, r17.y + add r17.x, -r17.x, l(1.000000) + mul r17.x, r17.x, r17.x + else + mov r17.x, l(1.000000) + endif + lt r17.y, l(0.500000), cb3[r22.y + 6].z + lt r17.z, r17.x, l(0.001000) + or r17.z, r17.y, r17.z + if_nz r17.z + mov r16.w, r18.w + continue + endif + ishl r17.z, r18.z, l(3) + bfi r18.z, l(29), l(3), r18.z, l(2) + lt r20.w, cb3[r17.z + 6].w, l(1.500000) + if_nz r20.w + mad r20.w, cb3[r18.z + 6].y, l(0.500000), l(0.500000) + add r23.x, r20.w, -|cb3[r18.z + 6].x| + add r23.y, -r23.x, cb3[r18.z + 6].y + add r20.w, -|r23.x|, l(1.000000) + add r20.w, -|r23.y|, r20.w + ge r21.w, cb3[r18.z + 6].x, l(0.000000) + max r22.z, r20.w, l(0.000488281250) + movc r23.z, r21.w, r22.z, -r22.z + dp3 r22.z, r23.xyzx, r23.xyzx + rsq r22.z, r22.z + mul r24.xyz, r22.zzzz, r23.xyzx + add r25.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx + dp3 r22.z, r25.xyzx, r25.xyzx + rsq r23.z, r22.z + mul r26.xyz, r23.zzzz, r25.xyzx + dp3_sat r18.x, r13.xyzx, r26.xyzx + ftoi r24.w, cb3[r19.w + 6].w + mul r27.xyz, r24.xyzx, cb3[r18.z + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r25.w, cb3[r17.z + 6].w + and r25.w, r25.w, l(1) + ieq r26.w, r25.w, l(0) + not r26.w, r26.w + lt r27.w, l(0.000000), cb3[r18.z + 6].z + and r26.w, r26.w, r27.w + dp3 r27.w, r28.xyzx, r28.xyzx + sqrt r27.w, r27.w + dp3 r28.w, r29.xyzx, r29.xyzx + sqrt r28.w, r28.w + dp3 r29.w, r13.xyzx, r28.xyzx + div r29.w, r29.w, r27.w + dp3 r30.x, r13.xyzx, r29.xyzx + div r30.x, r30.x, r28.w + add r29.w, r29.w, r30.x + mul_sat r30.x, r29.w, l(0.500000) + dp3 r29.x, r28.xyzx, r29.xyzx + mad r27.w, r27.w, r28.w, r29.x + mad r27.w, r27.w, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r27.w + movc r19.xy, r26.wwww, r30.xyxx, r18.xyxx + lt r27.w, cb3[r22.w + 6].w, l(0.000000) + if_nz r27.w + mul r27.w, cb3[r22.x + 6].w, cb3[r22.x + 6].w + mul r27.w, r22.z, r27.w + mad r27.w, -r27.w, r27.w, l(1.000000) + max r27.w, r27.w, l(0.000000) + add r22.z, r22.z, l(1.000000) + div r22.z, l(1.000000, 1.000000, 1.000000, 1.000000), r22.z + and r28.w, r26.w, l(0x3f800000) + add r29.x, r19.y, -r22.z + mad r22.z, r28.w, r29.x, r22.z + mul r27.w, r27.w, r27.w + mul r22.z, r22.z, r27.w + else + mul r29.xyz, r25.xyzx, cb3[r22.x + 6].wwww + dp3 r27.w, r29.xyzx, r29.xyzx + min r27.w, r27.w, l(1.000000) + add r27.w, -r27.w, l(1.000000) + log r27.w, r27.w + mul r27.w, r27.w, cb3[r22.w + 6].w + exp r27.w, r27.w + mul r22.z, r19.y, r27.w + endif + dp3 r19.y, r26.xyzx, -r24.xyzx + add r19.y, r19.y, -cb3[r18.z + 6].z + mul_sat r19.y, r19.y, cb3[r18.z + 6].w + mul r19.y, r19.y, r19.y + movc r19.y, r25.w, l(1.000000), r19.y + mul r19.y, r19.y, r22.z + not r22.z, r26.w + ige r24.x, r24.w, l(0) + and r22.z, r22.z, r24.x + if_nz r22.z + if_z r25.w + ishl r22.z, r24.w, l(2) + mul r24.xyz, r5.yyyy, cb6[r22.z + 33].xywx + mad r24.xyz, cb6[r22.z + 32].xywx, r5.xxxx, r24.xyzx + mad r24.xyz, cb6[r22.z + 34].xywx, r5.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb6[r22.z + 35].xywx + div_sat r24.xy, r24.xyxx, r24.zzzz + mad r24.xy, r24.xyxx, cb6[r24.w + 0].zwzz, cb6[r24.w + 0].xyxx + else + ishl r22.z, r24.w, l(2) + dp3 r29.x, -r25.xyzx, cb6[r22.z + 32].xyzx + dp3 r29.y, -r25.xyzx, cb6[r22.z + 33].xyzx + dp3 r29.z, -r25.xyzx, cb6[r22.z + 34].xyzx + lt r22.z, |r29.x|, |r29.y| + and r22.z, r22.z, l(1) + dp2 r24.z, |r29.xyxx|, icb[r22.z + 0].xyxx + lt r24.z, r24.z, |r29.z| + movc r22.z, r24.z, l(2), r22.z + dp3 r24.z, r29.xyzx, icb[r22.z + 0].xyzx + lt r24.z, r24.z, l(0.000000) + bfi r22.z, l(31), l(1), r22.z, r24.z + ushr r24.z, r22.z, l(1) + dp3 r24.z, r29.xyzx, icb[r24.z + 0].xyzx + div r27.w, l(0.000244140625), cb6[r24.w + 0].w + add r27.w, -r27.w, l(0.500000) + utof r28.w, r22.z + ult r29.w, r22.z, l(2) + and r29.w, r29.w, l(2) + dp2 r29.x, r29.xzxx, icb[r29.w + 0].xzxx + mul r29.x, r29.x, icb[r22.z + 4].z + div r29.x, r29.x, |r24.z| + mad r28.w, r29.x, r27.w, r28.w + add r28.w, r28.w, l(0.500000) + mul_sat r30.x, r28.w, l(0.166666672) + iadd r28.w, l(-1), icb[r22.z + 4].y + dp2 r28.w, r29.yzyy, icb[r28.w + 0].xyxx + mul r22.z, r28.w, icb[r22.z + 4].w + div r22.z, r22.z, |r24.z| + mad_sat r30.y, -r22.z, r27.w, l(0.500000) + mad r24.xy, r30.xyxx, cb6[r24.w + 0].zwzz, cb6[r24.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r22.z, r24.xyxx, t15.yzxw, s1, l(0.000000) + mul r19.y, r19.y, r22.z + endif + lt r22.z, l(0.000000), r19.y + if_nz r22.z + if_z r25.w + ftoi r24.x, cb3[r22.y + 6].x + else + add r24.yzw, r5.xxyz, -cb3[r22.x + 6].xxyz + lt r29.xyz, |r24.zwwz|, |r24.yyzy| + and r25.w, r29.y, r29.x + lt r24.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r24.yyzw + ushr r27.w, cb3[r18.z + 6].w, l(24) + ubfe r29.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r18.z + 6].wwww + movc r24.y, r24.y, r27.w, r29.x + and r27.w, l(255), cb3[r18.z + 6].w + movc r24.z, r24.z, r29.y, r27.w + ubfe r27.w, l(8), l(8), cb3[r22.y + 6].x + and r28.w, l(255), cb3[r22.y + 6].x + movc r24.w, r24.w, r27.w, r28.w + movc r24.z, r29.z, r24.z, r24.w + movc r24.y, r25.w, r24.y, r24.z + ilt r24.z, r24.y, l(80) + movc r24.x, r24.z, r24.y, l(-1) + endif + ishl r24.y, r24.x, l(2) + mad r29.xyz, r26.xyzx, cb4[r24.x + 288].xxxx, r5.xyzx + mul r24.z, l(5.000000), cb4[r24.x + 288].y + mad r29.xyz, r13.xyzx, r24.zzzz, r29.xyzx + mul r30.xyzw, r29.yyyy, cb4[r24.y + 65].xyzw + mad r30.xyzw, cb4[r24.y + 64].xyzw, r29.xxxx, r30.xyzw + mad r29.xyzw, cb4[r24.y + 66].xyzw, r29.zzzz, r30.xyzw + add r29.xyzw, r29.xyzw, cb4[r24.y + 67].xyzw + div r24.yzw, r29.xxyz, r29.wwww + ge r29.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.yzwy + ge r30.xyz, r24.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) + add r31.xy, -cb4[r24.x + 344].xyxx, cb4[r24.x + 344].zwzz + mad r24.yz, r24.yyzy, r31.xxyx, cb4[r24.x + 344].xxyx + mad r31.xy, r24.yzyy, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r31.xy, r31.xyxx + mad r24.yz, r24.yyzy, cb4[400].zzwz, -r31.xxyx + add r32.xyzw, r24.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r33.xyzw, r32.xxzz, r32.xxzz + add r31.zw, -r24.yyyz, l(0.000000, 0.000000, 1.000000, 1.000000) + min r32.xz, r24.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r34.xy, r24.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r35.xy, r31.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r34.xy, -r34.xyxx, r34.xyxx, r32.ywyy + add r34.xy, r34.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r34.xy, r34.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r33.xz, r33.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r24.yz, r33.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r24.yyzy + mul r36.xy, r24.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r24.yz, -r32.xxzx, r32.xxzx, r31.zzwz + add r24.yz, r24.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r37.xy, r24.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r24.yz, r32.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r36.z, r37.x + mov r36.w, r24.y + mov r35.z, r34.x + mov r35.w, r33.x + add r32.xyzw, r35.zwxz, r36.zwxz + mov r37.z, r36.y + mov r37.w, r24.z + mov r34.z, r35.y + mov r34.w, r33.z + add r33.xyz, r34.zywz, r37.zywz + div r35.xyz, r35.xzwx, r32.zwyz + add r35.xyz, r35.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r35.xyz, r35.yxzy, cb4[400].xxxx + div r34.xyz, r34.zywz, r33.xyzx + add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r34.xyz, r34.xyzx, cb4[400].yyyy + mov r35.w, r34.x + mad r36.xyzw, r31.xyxy, cb4[400].xyxy, r35.ywxw + mad r24.yz, r31.xxyx, cb4[400].xxyx, r35.zzwz + mov r34.w, r35.y + mov r35.yw, r34.yyyz + mad r37.xyzw, r31.xyxy, cb4[400].xyxy, r35.xyzy + mad r34.xyzw, r31.xyxy, cb4[400].xyxy, r34.wywz + mad r31.xyzw, r31.xyxy, cb4[400].xyxy, r35.xwzw + mul r35.xyzw, r32.zwyz, r33.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r36.xyxx, t6.xxxx, s4, r24.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r27.w, r36.zwzz, t6.xxxx, s4, r24.w + mul r27.w, r27.w, r35.y + mad r25.w, r35.x, r25.w, r27.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r24.yzyy, t6.xxxx, s4, r24.w + mad r24.y, r35.z, r24.y, r25.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r34.xyxx, t6.xxxx, s4, r24.w + mad r24.y, r35.w, r24.z, r24.y + mul r35.xyzw, r32.xyzw, r33.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r37.xyxx, t6.xxxx, s4, r24.w + mad r24.y, r35.x, r24.z, r24.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r37.zwzz, t6.xxxx, s4, r24.w + mad r24.y, r35.y, r24.z, r24.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r34.zwzz, t6.xxxx, s4, r24.w + mad r24.y, r35.z, r24.z, r24.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r31.xyxx, t6.xxxx, s4, r24.w + mad r24.y, r35.w, r24.z, r24.y + ige r24.z, r24.x, l(0) + or r29.xyz, r29.xyzx, r30.xyzx + or r25.w, r29.y, r29.x + or r25.w, r29.z, r25.w + and r27.w, r24.w, l(0x7fffffff) + ult r27.w, l(0x7f800000), r27.w + or r25.w, r25.w, r27.w + mul r27.w, r32.y, r33.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.w, r31.zwzz, t6.xxxx, s4, r24.w + mad r24.y, r27.w, r24.w, r24.y + add r24.y, r24.y, l(-1.000000) + mad r24.x, cb4[r24.x + 288].w, r24.y, l(1.000000) + movc r24.x, r25.w, l(1.000000), r24.x + movc r24.x, r24.z, r24.x, l(1.000000) + else + mov r24.x, l(1.000000) + endif + if_nz r26.w + dp3 r24.y, r14.xyzx, r27.xyzx + mul_sat r24.z, r23.z, cb3[r18.z + 6].z + mad r24.z, r24.z, l(0.500000), r3.y + min r24.z, r24.z, l(1.000000) + div r24.z, r3.y, r24.z + mad r29.xyz, r14.xyzx, r24.yyyy, -r27.xyzx + dp3 r24.w, r28.xyzx, r29.xyzx + mul r24.y, r24.y, r24.y + mad r24.y, cb3[r18.z + 6].z, cb3[r18.z + 6].z, -r24.y + div_sat r24.y, r24.w, r24.y + mad r27.xyz, r27.xyzx, r24.yyyy, r28.xyzx + dp3 r24.y, r27.xyzx, r27.xyzx + rsq r24.y, r24.y + mul r26.xyz, r24.yyyy, r27.xyzx + else + mov r24.z, l(1.000000) + endif + if_nz r22.z + mul_sat r22.z, r23.z, cb3[r19.w + 6].y + mad r26.xyz, r6.xyzx, r7.wwww, r26.xyzx + dp3 r23.z, r26.xyzx, r26.xyzx + max r23.z, r23.z, l(0.0000610351562) + rsq r23.z, r23.z + mul r26.xyz, r23.zzzz, r26.xyzx + max r20.w, r20.w, l(5.960464478E-08) + movc r23.w, r21.w, r20.w, -r20.w + dp3 r20.w, r23.xywx, r23.xywx + rsq r20.w, r20.w + mul r23.xyz, r20.wwww, r23.xywx + mul r23.xyz, r23.xyzx, cb3[r18.z + 6].zzzz + mad r27.xyz, -r23.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r23.xyz, r23.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + dp3 r20.w, r13.xyzx, r27.xyzx + dp3 r21.w, r27.xyzx, r27.xyzx + sqrt r21.w, r21.w + div r20.w, r20.w, r21.w + dp3 r21.w, r13.xyzx, r23.xyzx + dp3 r23.x, r23.xyzx, r23.xyzx + sqrt r23.x, r23.x + div r21.w, r21.w, r23.x + add r20.w, r20.w, r21.w + mul_sat r20.w, r20.w, l(0.500000) + movc r18.x, r26.w, r20.w, r18.x + dp3_sat r20.w, r13.xyzx, r26.xyzx + dp3_sat r21.w, r8.xyzx, r26.xyzx + lt r23.x, l(0.000000), r22.z + mul r22.z, r22.z, r22.z + mad r23.y, r21.w, l(3.600000), l(0.400000) + div r22.z, r22.z, r23.y + mad r22.z, r11.w, r11.w, r22.z + min r22.z, r22.z, l(1.000000) + movc r22.z, r23.x, r22.z, r3.y + mul r22.z, r22.z, r22.z + mad r23.x, r20.w, r22.z, -r20.w + mad r20.w, r23.x, r20.w, l(1.000000) + add r21.w, -r21.w, l(1.000000) + mul r23.x, r21.w, r21.w + mul r23.x, r23.x, r23.x + mul r23.y, r21.w, r23.x + mad r21.w, -r23.x, r21.w, l(1.000000) + mad r23.xyz, r1.xzwx, r21.wwww, r23.yyyy + mul r20.w, r20.w, r20.w + div r20.w, r22.z, r20.w + mul r20.w, r24.z, r20.w + mad r21.w, -r11.x, r22.z, r11.x + mad r21.w, r21.w, r11.x, r22.z + sqrt r21.w, r21.w + mad r23.w, -r19.x, r22.z, r19.x + mad r22.z, r23.w, r19.x, r22.z + sqrt r22.z, r22.z + mul r22.z, r11.x, r22.z + mad r21.w, r19.x, r21.w, r22.z + add r21.w, r21.w, l(0.000100) + div r21.w, l(0.500000), r21.w + mul r20.w, r20.w, r21.w + mul r23.xyz, r20.wwww, r23.xyzx + min r23.xyz, r23.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r24.yz, r19.xxzx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r20.w, r24.yzyy, t13.yzwx, s1, l(0.000000) + mul r20.w, r10.x, r20.w + mul r20.w, r8.w, r20.w + div r20.w, r20.w, r9.w + mul r24.yzw, r15.xxyz, r20.wwww + div r24.yzw, r24.yyzw, r16.xxyz + add r23.xyz, r23.xyzx, r24.yzwy + mul r23.xyz, r23.xyzx, cb3[r19.w + 6].zzzz + max r23.xyz, r23.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r23.xyz, r23.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r24.yzw, r9.xxyz, r18.xxxx + mad r23.xyz, r23.xyzx, r19.xxxx, r24.yzwy + mul r24.yzw, r19.yyyy, cb3[r17.z + 6].xxyz + mul r24.xyz, r24.xxxx, r24.yzwy + mul r24.xyz, r17.xxxx, r24.xyzx + mul r23.xyz, r23.xyzx, r24.xyzx + else + mov r23.xyz, l(0,0,0,0) + endif + else + if_z r17.y + mad r17.x, cb3[r18.z + 6].y, l(0.500000), l(0.500000) + add r24.x, r17.x, -|cb3[r18.z + 6].x| + add r24.y, -r24.x, cb3[r18.z + 6].y + add r17.x, -|r24.x|, l(1.000000) + add r17.x, -|r24.y|, r17.x + max r17.x, r17.x, l(0.000488281250) + ge r17.y, cb3[r18.z + 6].x, l(0.000000) + movc r24.z, r17.y, r17.x, -r17.x + dp3 r17.x, r24.xyzx, r24.xyzx + rsq r17.x, r17.x + mul r24.xyz, r17.xxxx, r24.xyzx + add r25.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx + dp3 r17.x, r25.xyzx, r25.xyzx + rsq r17.y, r17.x + mul r26.xyz, r17.yyyy, r25.xyzx + ftoi r17.y, cb3[r19.w + 6].w + mul r19.xyw, r24.xyxz, cb3[r18.z + 6].zzzz + mad r27.xyz, -r19.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r19.xyw, r19.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r25.xyxz + ftou r17.z, cb3[r17.z + 6].w + and r17.z, r17.z, l(1) + ieq r18.x, r17.z, l(0) + not r18.x, r18.x + lt r20.w, l(0.000000), cb3[r18.z + 6].z + and r18.x, r18.x, r20.w + dp3 r20.w, r27.xyzx, r27.xyzx + sqrt r20.w, r20.w + dp3 r21.w, r19.xywx, r19.xywx + sqrt r21.w, r21.w + dp3 r19.x, r27.xyzx, r19.xywx + mad r19.x, r20.w, r21.w, r19.x + mad r19.x, r19.x, l(0.500000), l(1.000000) + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x + movc r19.x, r18.x, r19.x, l(1.000000) + lt r19.y, cb3[r22.w + 6].w, l(0.000000) + if_nz r19.y + mul r19.y, cb3[r22.x + 6].w, cb3[r22.x + 6].w + mul r19.y, r17.x, r19.y + mad r19.y, -r19.y, r19.y, l(1.000000) + max r19.y, r19.y, l(0.000000) + add r17.x, r17.x, l(1.000000) + div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x + and r19.w, r18.x, l(0x3f800000) + add r20.w, -r17.x, r19.x + mad r17.x, r19.w, r20.w, r17.x + mul r19.y, r19.y, r19.y + mul r17.x, r17.x, r19.y + else + mul r27.xyz, r25.xyzx, cb3[r22.x + 6].wwww + dp3 r19.y, r27.xyzx, r27.xyzx + min r19.y, r19.y, l(1.000000) + add r19.y, -r19.y, l(1.000000) + log r19.y, r19.y + mul r19.y, r19.y, cb3[r22.w + 6].w + exp r19.y, r19.y + mul r17.x, r19.y, r19.x + endif + dp3 r19.x, r26.xyzx, -r24.xyzx + add r19.x, r19.x, -cb3[r18.z + 6].z + mul_sat r19.x, r19.x, cb3[r18.z + 6].w + mul r19.x, r19.x, r19.x + movc r19.x, r17.z, l(1.000000), r19.x + mul r17.x, r17.x, r19.x + not r18.x, r18.x + ige r19.x, r17.y, l(0) + and r18.x, r18.x, r19.x + if_nz r18.x + if_z r17.z + ishl r18.x, r17.y, l(2) + mul r19.xyw, r5.yyyy, cb6[r18.x + 33].xyxw + mad r19.xyw, cb6[r18.x + 32].xyxw, r5.xxxx, r19.xyxw + mad r19.xyw, cb6[r18.x + 34].xyxw, r5.zzzz, r19.xyxw + add r19.xyw, r19.xyxw, cb6[r18.x + 35].xyxw + div_sat r19.xy, r19.xyxx, r19.wwww + mad r19.xy, r19.xyxx, cb6[r17.y + 0].zwzz, cb6[r17.y + 0].xyxx + else + ishl r18.x, r17.y, l(2) + dp3 r24.x, -r25.xyzx, cb6[r18.x + 32].xyzx + dp3 r24.y, -r25.xyzx, cb6[r18.x + 33].xyzx + dp3 r24.z, -r25.xyzx, cb6[r18.x + 34].xyzx + lt r18.x, |r24.x|, |r24.y| + and r18.x, r18.x, l(1) + dp2 r19.w, |r24.xyxx|, icb[r18.x + 0].xyxx + lt r19.w, r19.w, |r24.z| + movc r18.x, r19.w, l(2), r18.x + dp3 r19.w, r24.xyzx, icb[r18.x + 0].xyzx + lt r19.w, r19.w, l(0.000000) + bfi r18.x, l(31), l(1), r18.x, r19.w + ushr r19.w, r18.x, l(1) + dp3 r19.w, r24.xyzx, icb[r19.w + 0].xyzx + div r20.w, l(0.000244140625), cb6[r17.y + 0].w + add r20.w, -r20.w, l(0.500000) + utof r21.w, r18.x + ult r22.z, r18.x, l(2) + and r22.z, r22.z, l(2) + dp2 r22.z, r24.xzxx, icb[r22.z + 0].xzxx + mul r22.z, r22.z, icb[r18.x + 4].z + div r22.z, r22.z, |r19.w| + mad r21.w, r22.z, r20.w, r21.w + add r21.w, r21.w, l(0.500000) + mul_sat r25.x, r21.w, l(0.166666672) + iadd r21.w, l(-1), icb[r18.x + 4].y + dp2 r21.w, r24.yzyy, icb[r21.w + 0].xyxx + mul r18.x, r21.w, icb[r18.x + 4].w + div r18.x, r18.x, |r19.w| + mad_sat r25.y, -r18.x, r20.w, l(0.500000) + mad r19.xy, r25.xyxx, cb6[r17.y + 0].zwzz, cb6[r17.y + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r17.y, r19.xyxx, t15.yxzw, s1, l(0.000000) + mul r17.x, r17.y, r17.x + endif + lt r17.x, l(0.000000), r17.x + if_nz r17.x + if_z r17.z + ftoi r17.x, cb3[r22.y + 6].x + else + add r19.xyw, r5.xyxz, -cb3[r22.x + 6].xyxz + lt r22.xzw, |r19.yyww|, |r19.xxxy| + and r17.y, r22.z, r22.x + lt r19.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyxw + ushr r17.z, cb3[r18.z + 6].w, l(24) + ubfe r22.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r18.z + 6].wwww + movc r17.z, r19.x, r17.z, r22.x + and r18.x, l(255), cb3[r18.z + 6].w + movc r18.x, r19.y, r22.z, r18.x + ubfe r18.z, l(8), l(8), cb3[r22.y + 6].x + and r19.x, l(255), cb3[r22.y + 6].x + movc r18.z, r19.w, r18.z, r19.x + movc r18.x, r22.w, r18.x, r18.z + movc r17.y, r17.y, r17.z, r18.x + ilt r17.z, r17.y, l(80) + movc r17.x, r17.z, r17.y, l(-1) + endif + ishl r17.y, r17.x, l(2) + mad r19.xyw, r26.xyxz, cb4[r17.x + 288].xxxx, r5.xyxz + mul r17.z, l(5.000000), cb4[r17.x + 288].y + mad r19.xyw, r2.xyxw, r17.zzzz, r19.xyxw + mul r22.xyzw, r19.yyyy, cb4[r17.y + 65].xyzw + mad r22.xyzw, cb4[r17.y + 64].xyzw, r19.xxxx, r22.xyzw + mad r22.xyzw, cb4[r17.y + 66].xyzw, r19.wwww, r22.xyzw + add r22.xyzw, r22.xyzw, cb4[r17.y + 67].xyzw + div r19.xyw, r22.xyxz, r22.wwww + ge r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xywx + ge r24.xyz, r19.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r17.yz, -cb4[r17.x + 344].xxyx, cb4[r17.x + 344].zzwz + mad r17.yz, r19.xxyx, r17.yyzy, cb4[r17.x + 344].xxyx + mad r18.xz, r17.yyzy, cb4[400].zzwz, l(0.500000, 0.000000, 0.500000, 0.000000) + round_ni r18.xz, r18.xxzx + mad r17.yz, r17.yyzy, cb4[400].zzwz, -r18.xxzx + add r25.xyzw, r17.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r26.xyzw, r25.xxzz, r25.xxzz + add r19.xy, -r17.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) + min r25.xz, r17.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r27.xy, r17.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r28.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r27.xy, -r27.xyxx, r27.xyxx, r25.ywyy + add r27.xy, r27.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r27.xy, r27.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r26.xz, r26.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r17.yz, r26.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r17.yyzy + mul r29.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r17.yz, -r25.xxzx, r25.xxzx, r19.xxyx + add r17.yz, r17.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r30.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r17.yz, r25.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r29.z, r30.x + mov r29.w, r17.y + mov r28.z, r27.x + mov r28.w, r26.x + add r25.xyzw, r28.zwxz, r29.zwxz + mov r30.z, r29.y + mov r30.w, r17.z + mov r27.z, r28.y + mov r27.w, r26.z + add r26.xyz, r27.zywz, r30.zywz + div r28.xyz, r28.xzwx, r25.zwyz + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.yxzy, cb4[400].xxxx + div r27.xyz, r27.zywz, r26.xyzx + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyz, r27.xyzx, cb4[400].yyyy + mov r28.w, r27.x + mad r29.xyzw, r18.xzxz, cb4[400].xyxy, r28.ywxw + mad r17.yz, r18.xxzx, cb4[400].xxyx, r28.zzwz + mov r27.w, r28.y + mov r28.yw, r27.yyyz + mad r30.xyzw, r18.xzxz, cb4[400].xyxy, r28.xyzy + mad r27.xyzw, r18.xzxz, cb4[400].xyxy, r27.wywz + mad r28.xyzw, r18.xzxz, cb4[400].xyxy, r28.xwzw + mul r31.xyzw, r25.zwyz, r26.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r29.xyxx, t6.xxxx, s4, r19.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r29.zwzz, t6.xxxx, s4, r19.w + mul r18.z, r18.z, r31.y + mad r18.x, r31.x, r18.x, r18.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r17.yzyy, t6.xxxx, s4, r19.w + mad r17.y, r31.z, r17.y, r18.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r27.xyxx, t6.xxxx, s4, r19.w + mad r17.y, r31.w, r17.z, r17.y + mul r29.xyzw, r25.xyzw, r26.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r30.xyxx, t6.xxxx, s4, r19.w + mad r17.y, r29.x, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r30.zwzz, t6.xxxx, s4, r19.w + mad r17.y, r29.y, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r27.zwzz, t6.xxxx, s4, r19.w + mad r17.y, r29.z, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r28.xyxx, t6.xxxx, s4, r19.w + mad r17.y, r29.w, r17.z, r17.y + ige r17.z, r17.x, l(0) + or r22.xyz, r22.xyzx, r24.xyzx + or r18.x, r22.y, r22.x + or r18.x, r22.z, r18.x + and r18.z, r19.w, l(0x7fffffff) + ult r18.z, l(0x7f800000), r18.z + or r18.x, r18.z, r18.x + mul r18.z, r25.y, r26.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r28.zwzz, t6.xxxx, s4, r19.w + mad r17.y, r18.z, r19.x, r17.y + add r17.y, r17.y, l(-1.000000) + mad r17.x, cb4[r17.x + 288].w, r17.y, l(1.000000) + movc r17.x, r18.x, l(1.000000), r17.x + movc r17.x, r17.z, r17.x, l(1.000000) + else + mov r17.x, l(1.000000) + endif + else + mov r17.x, l(1.000000) + endif + mul r15.w, r15.w, r17.x + mov r23.xyz, l(0,0,0,0) + endif + add r21.xyz, r21.xyzx, r23.xyzx + mov r16.w, r18.w + endloop + mov r11.y, r15.w + add r20.xyz, r20.xyzx, r21.xyzx + iadd r11.z, r11.z, l(1) +endloop +mad r6.xyz, r20.xyzx, r11.yyyy, r12.xyzx +ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r3.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + dp3 r2.z, r2.xywx, r8.xyzx + max r2.z, r2.z, l(0.000000) + add r2.z, r0.z, r2.z + mad r3.y, r11.w, l(-16.000000), l(-1.000000) + exp r3.y, r3.y + log r2.z, |r2.z| + mul r2.z, r2.z, r3.y + exp r2.z, r2.z + add r2.z, r0.z, r2.z + add r2.z, r2.z, l(-1.000000) + mov_sat r11.xyz, r2.zzzz + mad r12.xyz, r9.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r9.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r9.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + max r12.xyz, r0.zzzz, r12.xyzx +else + mov r11.xyz, r1.yyyy + mov r12.xyz, r1.yyyy +endif +mad r15.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[212].x +mad r16.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx +dp2 r0.z, r16.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx +mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r16.xyz, r15.xzyx, -r16.xyzx +max r0.z, |r16.y|, |r16.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.y, |r16.z|, l(-208.000000) +mul_sat r1.y, r1.y, l(0.031250) +max r0.z, r0.z, r1.y +ne r1.y, l(0.000000), cb0[210].w +lt r2.z, r0.z, l(1.000000) +and r1.y, r1.y, r2.z +if_nz r1.y + mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r16.xyz, r15.xzyx, -r16.xyzx + max r1.y, |r16.y|, |r16.x| + add r1.y, r1.y, l(-29.000000) + mul_sat r1.y, r1.y, l(0.500000) + add r2.z, |r16.z|, l(-13.000000) + mul_sat r2.z, r2.z, l(0.500000) + max r1.y, r1.y, r2.z + lt r2.z, r1.y, l(1.000000) + if_nz r2.z + mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r16.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t19.yzwx, s2, l(0.000000) + add r2.z, -r1.y, l(1.000000) + mul r3.y, l(0.500000), cb0[211].y + mad r7.w, -cb0[211].y, l(0.500000), l(1.000000) + max r3.y, r3.y, r16.y + min r3.y, r7.w, r3.y + mul r16.w, r3.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t20.xyzw, s1, l(0.000000) + mad r3.y, r18.w, r2.z, r0.z + add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mul r19.xyzw, r2.zzzz, r19.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t20.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r17.xxxx, r16.xyzx + mov r16.w, r17.x + mul r16.xyzw, r2.zzzz, r16.xyzw + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r18.xyzx + mul r17.xyzw, r2.zzzz, r17.xyzw + else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r3.y, r0.z + endif + mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r18.xyz, r15.xzyx, -r18.xyzx + max r2.z, |r18.y|, |r18.x| + add r2.z, r2.z, l(-116.000000) + mul_sat r2.z, r2.z, l(0.125000) + add r7.w, |r18.z|, l(-52.000000) + mul_sat r7.w, r7.w, l(0.125000) + max r2.z, r2.z, r7.w + lt r7.w, r2.z, l(1.000000) + if_nz r7.w + mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r18.xyzx, cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t21.yzwx, s2, l(0.000000) + add r7.w, -r2.z, l(1.000000) + mul r1.y, r1.y, r7.w + mul r7.w, l(0.500000), cb0[211].y + mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) + max r7.w, r7.w, r18.y + min r7.w, r8.w, r7.w + mul r18.w, r7.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t22.xyzw, s1, l(0.000000) + mad r3.y, r21.w, r1.y, r3.y + add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t22.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r20.yyyy, r22.xyzx + mov r22.w, r20.y + mad r19.xyzw, r22.xyzw, r1.yyyy, r19.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t22.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.xxxx, r18.xyzx + mov r18.w, r20.x + mad r16.xyzw, r18.xyzw, r1.yyyy, r16.xyzw + mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r18.xyzx + mad r17.xyzw, r20.xyzw, r1.yyyy, r17.xyzw + endif + lt r1.y, l(0.000000), r2.z + if_nz r1.y + mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r15.xyzx, cb0[211].xyzx + mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r18.xyzx + mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r20.xyzx, r15.xyzx + min r15.xyz, r18.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t23.yzwx, s2, l(0.000000) + add r1.y, -r0.z, l(1.000000) + mul r1.y, r1.y, r2.z + max r2.z, r20.y, r15.y + min r2.z, r18.y, r2.z + mul r15.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t24.xyzw, s1, l(0.000000) + add r20.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t24.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r21.yyyy, r20.xyzx + mov r20.w, r21.y + mad r19.xyzw, r20.xyzw, r1.yyyy, r19.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t24.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r21.xxxx, r15.xyzx + mov r15.w, r21.x + mad r16.xyzw, r15.xyzw, r1.yyyy, r16.xyzw + mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r15.xyzx + mad r17.xyzw, r21.xyzw, r1.yyyy, r17.xyzw + mad r3.y, r18.w, r1.y, r3.y + endif + mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r1.y + add r0.z, r0.z, r1.y + mul r15.y, r0.z, l(0.500000) +else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r15.yxyy, cb0[213].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.zw, r15.yyyx, cb0[213].wwwy +mad r18.x, r15.w, l(0.375000), r15.z +add r17.xyzw, r17.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[214].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.zw, r15.yyyx, cb0[214].wwwy +mad r18.x, r15.w, l(0.375000), r15.z +add r16.xyzw, r16.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[215].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.xy, r15.yxyy, cb0[215].wyww +mad r18.x, r15.y, l(0.375000), r15.x +add r15.xyzw, r18.wyzx, r19.xyzw +ge r18.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r18.y, r18.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.zwzz, t18.xyzw, s1, l(0.000000) + lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| + or r4.zw, r19.zzzw, r19.xxxy + or r0.z, r4.w, r4.z + if_nz r0.z + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mov r4.z, l(1.000000) + mov r4.w, r0.z + mov r1.y, l(0) + loop + ge r2.z, l(4.600000), r4.w + breakc_nz r2.z + iadd r2.z, r1.y, l(1) + mul r19.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r4.zw, r19.xxxy + mov r1.y, r2.z + continue + endloop + mul r18.xyzw, r4.zzzz, r18.xyzw + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb7[3].x, cb7[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r19.x, r0.z, l(0.00390625000) + mov r19.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r19.xyxx, t17.zwxy, s1, l(0.000000) + mad r4.zw, r4.zzzw, cb7[2].xxxy, cb7[2].zzzw + mul r19.x, r4.z, l(3.54490781) + mul r19.yzw, r4.wwww, r18.yyzw + mul r0.z, r18.x, l(0.406976730) + exp r0.z, r0.z + mul r18.xyzw, r0.zzzz, r19.xyzw + mov r19.xyzw, r18.xyzw + mov r0.z, l(0) + loop + uge r2.z, r0.z, r1.y + breakc_nz r2.z + mul r20.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r2.z, r20.xyzw, r19.xyzw + dp2 r3.y, r20.yxyy, r19.xyxx + dp2 r4.z, r20.zxzz, r19.xzxx + dp2 r4.w, r20.wxww, r19.xwxx + iadd r7.w, r0.z, l(1) + mov r19.x, r2.z + mov r19.y, r3.y + mov r19.zw, r4.zzzw + mov r0.z, r7.w + continue + endloop + mul r18.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r19.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r18.xyzw, r19.xyzw + dp2 r1.y, r18.yxyy, r19.xyxx + dp2 r2.z, r18.zxzz, r19.xzxx + dp2 r3.y, r18.wxww, r19.xwxx + mul r19.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.z, r18.xyzw, r19.xyzw + dp2 r4.w, r18.yxyy, r19.xyxx + dp2 r7.w, r18.zxzz, r19.xzxx + dp2 r8.w, r18.wxww, r19.xwxx + mul r19.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r9.w, r18.xyzw, r19.xyzw + dp2 r10.x, r18.yxyy, r19.xyxx + dp2 r12.w, r18.zxzz, r19.xzxx + dp2 r14.w, r18.wxww, r19.xwxx + mul r17.w, r0.z, l(0.886226952) + mul r17.x, r3.y, l(-1.02332675) + mul r17.y, r1.y, l(-1.02332675) + mul r17.z, r2.z, l(1.02332675) + mul r16.x, r8.w, l(-1.02332675) + mul r16.yw, r4.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r16.z, r7.w, l(1.02332675) + mul r15.w, r9.w, l(0.886226952) + mul r15.x, r14.w, l(-1.02332675) + mul r15.y, r10.x, l(-1.02332675) + mul r15.z, r12.w, l(1.02332675) + endif +endif +dp3 r0.z, r17.xyzx, r2.xywx +add r0.z, r17.w, r0.z +max r17.x, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r2.xywx +add r0.z, r16.w, r0.z +max r17.y, r0.z, l(0.000000) +dp3 r0.z, r15.xyzx, r2.xywx +add r0.z, r15.w, r0.z +max r17.z, r0.z, l(0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.y, r11.w, l(0.001000) +log r1.y, r1.y +mad r1.y, -r1.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.y +mul r2.xy, r4.xyxx, cb1[0].wwww +round_ni r2.xy, r2.xyxx +add r1.y, |r3.w|, -cb1[2].y +round_ni r1.y, r1.y +add r2.z, l(-1.000000), cb1[1].x +max r2.w, r1.y, l(0.000000) +min r2.z, r2.z, r2.w +ge r1.y, r2.z, r1.y +mad r2.x, r2.y, cb1[0].x, r2.x +ftoi r2.xy, r2.xzxx +iadd r2.xy, r2.xyxx, cb0[110].zwzz +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.x, r2.x, l(0), t0.xxxx +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.y, r2.y, l(0), t0.xxxx +and r2.x, r2.y, r2.x +and r1.y, r1.y, r2.x +mul r2.xyz, r17.xyzx, cb0[111].xxxx +dp3 r2.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r5.w, l(1.000000) +mov r13.w, l(1.000000) +mov r2.yzw, l(0,0,0,0) +mov r3.y, l(1.000000) +mov r4.z, r1.y +mov r4.w, l(0) +loop + lt r7.w, l(0.010000), r3.y + ine r8.w, r4.z, l(0) + and r8.w, r7.w, r8.w + if_nz r8.w + firstbit_lo r8.w, r4.z + ishl r9.w, l(1), r8.w + xor r4.z, r4.z, r9.w + ishl r8.w, r8.w, l(3) + dp4 r15.x, cb1[r8.w + 6].xyzw, r5.xyzw + dp4 r15.y, cb1[r8.w + 7].xyzw, r5.xyzw + dp4 r15.z, cb1[r8.w + 8].xyzw, r5.xyzw + ge r16.xyz, cb1[r8.w + 5].xyzx, |r15.xyzx| + and r9.w, r16.y, r16.x + and r9.w, r16.z, r9.w + if_nz r9.w + mul r9.w, l(0.100000), cb1[r8.w + 5].x + mul r16.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r16.xy, r16.xyxx, r16.xyxx + add r18.xyz, -|r15.xyzx|, cb1[r8.w + 5].xyzx + mul r18.xyz, r18.xyzx, cb1[r8.w + 9].xyzx + eq r10.x, l(1.000000), cb1[r8.w + 10].x + if_nz r10.x + dp3 r19.x, cb1[r8.w + 6].xyzx, r14.xyzx + dp3 r19.y, cb1[r8.w + 7].xyzx, r14.xyzx + dp3 r19.z, cb1[r8.w + 8].xyzx, r14.xyzx + add r20.xyz, -r15.xyzx, cb1[r8.w + 5].xyzx + div r20.xyz, r20.xyzx, r19.xyzx + add r21.xyz, -r15.xyzx, -cb1[r8.w + 5].xyzx + div r21.xyz, r21.xyzx, r19.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx + min r10.x, r20.y, r20.x + min r10.x, r20.z, r10.x + mad r15.xyz, r19.xyzx, r10.xxxx, r15.xyzx + else + mov r15.xyz, r14.xyzx + endif + dp3 r10.x, r15.xyzx, r15.xyzx + rsq r10.x, r10.x + mul r15.xyz, r10.xxxx, r15.xyzx + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r20.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r19.xyz, -r19.xyzx, r20.xyzx + itof r19.xyz, r19.xyzx + dp3 r10.x, r15.xyzx, r19.xyzx + div r15.xyz, r15.xyzx, r10.xxxx + lt r10.x, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r19.xxxy + movc r15.xy, r10.xxxx, r15.zwzz, r15.xyxx + dp4 r10.x, cb1[r8.w + 4].xyzw, r13.xyzw + max r10.x, r10.x, l(0.000000) + max r10.x, r10.x, l(0.000100) + min r11.w, r18.z, r18.y + min r11.w, r11.w, r18.x + add r12.w, r16.y, r16.x + mad r12.w, r16.z, r16.z, r12.w + mad r9.w, r9.w, r9.w, -r12.w + mul r9.w, r9.w, cb1[r8.w + 9].x + mul r9.w, r9.w, cb1[r8.w + 9].x + add r12.w, l(1.000000), -cb1[r8.w + 10].y + mul r9.w, r9.w, r12.w + mul r9.w, r9.w, l(100.000000) + mad_sat r9.w, r11.w, cb1[r8.w + 10].y, r9.w + mul r11.w, r9.w, cb1[r8.w + 10].w + mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r15.xy, r15.xyxx, cb1[1].wwww, cb1[2].wwww + mov r15.z, cb1[r8.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z + mul r15.xyz, r15.xyzx, cb1[r8.w + 9].wwww + div r12.w, r2.x, r10.x + min r12.w, |r12.w|, l(1.000000) + mad r12.w, r12.w, l(2.000000), r2.x + add r10.x, r10.x, l(2.000000) + div r10.x, r12.w, r10.x + add r10.x, r10.x, l(-1.000000) + mad r10.x, r10.x, cb0[112].w, l(1.000000) + mul r15.xyz, r10.xxxx, r15.xyzx + mul r15.xyz, r11.wwww, r15.xyzx + mad r2.yzw, r15.xxyz, r3.yyyy, r2.yyzw + mad r8.w, -r9.w, cb1[r8.w + 10].w, l(1.000000) + mul r3.y, r3.y, r8.w + endif + mov r4.w, l(-1) + continue + else + mov r4.w, r7.w + break + endif + mov r4.w, r7.w +endloop +if_nz r4.w + dp3 r1.y, r14.xyzx, r14.xyzx + rsq r1.y, r1.y + mul r5.xzw, r1.yyyy, r14.xxyz + lt r14.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r5.xzwx + lt r15.xyz, r5.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r14.xyz, -r14.xyzx, r15.xyzx + itof r14.xyz, r14.xyzx + dp3 r1.y, r5.xzwx, r14.xyzx + div r5.xzw, r5.xxzw, r1.yyyy + lt r1.y, r5.w, l(0.000000) + add r4.zw, -|r5.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r4.zw, r4.zzzw, r14.xxxy + movc r4.zw, r1.yyyy, r4.zzzw, r5.xxxz + mov r13.w, l(1.000000) + dp4 r1.y, cb1[3].xyzw, r13.xyzw + max r1.y, r1.y, l(0.000000) + max r1.y, r1.y, l(0.000100) + mad r4.zw, r4.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r13.xy, r4.zwzz, cb1[1].wwww, cb1[2].wwww + mov r13.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r5.xzw, r13.xyzx, t5.xwyz, s3, r0.z + div r0.z, r2.x, r1.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r2.x + add r1.y, r1.y, l(2.000000) + div r0.z, r0.z, r1.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r5.xzw, r0.zzzz, r5.xxzw + mad r2.yzw, r5.xxzw, r3.yyyy, r2.yyzw +endif +mul r2.xyz, r2.yzwy, cb0[112].zzzz +mul r2.xyz, r2.xyzx, cb0[111].yyyy +if_nz r3.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x + add r1.y, -r0.z, l(1.000000) + mul r13.xyz, r1.yyyy, r2.xyzx + mad r2.xyz, r5.xzwx, r0.zzzz, r13.xyzx +endif +mul r5.xzw, r9.xxyz, r17.xxyz +mul r5.xzw, r5.xxzw, cb0[111].xxxx +add r0.z, -r3.x, l(1.000000) +div r0.z, r0.z, r3.x +mul r1.xyz, r0.zzzz, r1.xzwx +mad r1.xyz, r1.xyzx, r10.yzwy, r10.yzwy +mul r1.xyz, r1.xyzx, r2.xyzx +mul r1.xyz, r11.xyzx, r1.xyzx +mad r1.xyz, r5.xzwx, r12.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r6.xyzx +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r6.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r5.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r8.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[163].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r8.xyzx, -r7.xyzx + add r2.w, r5.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.w + mul r4.z, r0.x, r3.z + mad r4.w, r4.z, r2.w, cb0[44].y + mad r2.w, -r4.z, r2.w, r2.w + mul r4.z, r2.w, cb0[159].z + max r4.z, r4.z, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.x, r4.w, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.z, l(5.960464478E-08), |r4.z| + exp r5.w, -r4.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.z + mad r4.z, -r4.z, l(0.240226507), l(0.693147182) + movc r4.z, r5.z, r5.w, r4.z + add r4.w, r4.w, -cb0[162].z + mul r4.w, r4.w, cb0[162].x + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[162].y + lt r5.z, l(5.960464478E-08), |r2.w| + exp r5.w, -r2.w + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r5.z, r5.w, r2.w + mul r2.w, r2.w, r4.w + mad r2.w, r5.x, r4.z, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r0.x, r6.w, r0.x + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r6.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.xxxy + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r3.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r3.xyzx, t16.xyzw, s1, l(0.000000) + add r0.y, |r3.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r5.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r6.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r6.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx +mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x1E8A471E.cso b/src/games/endfield/deferred-lighting/0x1E8A471E.cso index e44e7c989a18d506fa4a2db2a04e8be8dd82be3d..25e3bfb46694077893472f89e706f54646fe021c 100644 GIT binary patch delta 87 zcmdnvvGHa*D4zU(n<{r&nwmWnPuAbAIXPoz2mtygA>9A~ delta 535 zcmZ4Uo@vi#CMlN)Cuf0&kw4eHy885*8~gK=YfIA@85kJ$?3^gIi0jV|28IA2&t7li zF}-cvvu4h;gW}2mx2bX)8ynk0@nrq&nkoVe3|vhN0u0PREpAK#4D3Lf$$^1k{;E}W zFg$t7MwNP)LKdI`kU~}<&E&wqaA9+#U8K0V{fxVlZGl2SqaX%?raB7+ z26m9eY(RM{APq8?5vY!V;e?Y314Ira29+}dONwv5Xu$`RECOoa1WLjj@{J#208k?r zvK;5+hnwX&VJbN%7uJY7TA=9%$%6EQ91M~JISOVmC{!ShVz6gWVBi4DO};2AJh?!Q zW%3*mo_b`b&zdP|k8T3YB#<|OfCI&KKmni+8XQ3qKy1XozzLEEv0**}`4HxQkT}qM Rt|A3sAOitVZgTo|R{(l`T#x_& diff --git a/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm index 8b104c4ff5..6da5862a3e 100644 --- a/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm @@ -1520,60 +1520,23 @@ if_z cb13[12].y ret endif -// === Custom Hue-Preserving Fog Blend === -// FOG_INTENSITY = 0.7, HUE_PRESERVATION = 0.6 +// === Simplified Fog Modification (Anti-Banding) === // r1.xyz = scene color (0-255), r2.xyw = transmittance, r0.xyz = fog inscatter (0-255) // Normalize colors to 0-1 range mul r5.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r1/255 mul r6.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 -// Reduce fog intensity: transmittance = lerp(transmittance, 1, 0.3) +// Boost transmittance: transmittance = lerp(transmittance, 1, 0.35) to reduce fog density add r7.xyz, -r2.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r7.xyz, r7.xyzx, l(0.300000, 0.300000, 0.300000, 0.000000), r2.xywx // adjusted transmittance +mad r7.xyz, r7.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r2.xywx -// fogColor *= FOG_INTENSITY (0.7) -mul r6.xyz, r6.xyzx, l(0.700000, 0.700000, 0.700000, 0.000000) +// Reduce fog inscatter intensity +mul r6.xyz, r6.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) -// Standard fog blend: foggedScene = sceneColor * transmittance + fogColor +// Standard fog blend with reduced intensity mad r8.xyz, r5.xyzx, r7.xyzx, r6.xyzx -// Calculate fog amount: fogAmount = 1 - avg(transmittance) -dp3 r3.w, r7.xyzx, l(0.333333, 0.333333, 0.333333, 0.000000) -add r3.w, -r3.w, l(1.000000) - -// Scene luminance (BT.709) -dp3 r4.w, r5.xyzx, l(0.2126, 0.7152, 0.0722, 0.000000) - -// Fogged luminance -dp3 r5.w, r8.xyzx, l(0.2126, 0.7152, 0.0722, 0.000000) - -// lumaWeight = saturate(sceneLuma * 100) for smooth falloff -mul_sat r6.w, r4.w, l(100.000000) - -// Safe luma for division -max r4.w, r4.w, l(0.0001) - -// sceneRatios = sceneColor / safeLuma -div r9.xyz, r5.xyzx, r4.wwww - -// Clamp ratios to prevent artifacts -max r9.xyz, r9.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r9.xyz, r9.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000) - -// huePreserved = sceneRatios * foggedLuma -mul r9.xyz, r9.xyzx, r5.wwww - -// preserveAmount = HUE_PRESERVATION * saturate(1 - fogAmount*0.5) * lumaWeight -mul r4.w, r3.w, l(0.500000) -add_sat r4.w, -r4.w, l(1.000000) -mul r4.w, r4.w, l(0.600000) // HUE_PRESERVATION -mul r4.w, r4.w, r6.w - -// foggedScene = lerp(foggedScene, huePreserved, preserveAmount) -add r9.xyz, r9.xyzx, -r8.xyzx -mad r8.xyz, r4.wwww, r9.xyzx, r8.xyzx - // Output: scale back to 0-255 range mul o0.xyz, r8.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) dp3 o0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) diff --git a/src/games/endfield/deferred-lighting/0x37837806.cso b/src/games/endfield/deferred-lighting/0x37837806.cso index bc6299824345153ae288078906f00e56d55a09c5..a4ba6bd372d7f7a6939cb945ff4fb6dd32114959 100644 GIT binary patch delta 86 zcmdmTjd95(Mk$vFC+F31yNcv~Y*ugxvM`YO{a^unE f>DPcF|;;x>$k2AYCAu$$^34!sbZ3NO5!f8Fwe!0)>F)LQH1^vO(%NfHac> zraB7+26m9?Alt2gG{`(gpgIPI6HX=!5IK+-RL%@6DZc%p1s_nd2&jP*C<$}OH-3l# zK#g3;a-5SdvWQPENaf&!spg!#QCr-~0?iDNEXWLyqd{^Yhruid1rx+!4E78PllMi- zO^y-dsE0|z+&yciq&>P;m>Q5Dfq(^BWvN5?A@S62W4 diff --git a/src/games/endfield/deferred-lighting/0x37837806.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x37837806.ps_5_0.asm index 7a5838d00e..6861c253ad 100644 --- a/src/games/endfield/deferred-lighting/0x37837806.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0x37837806.ps_5_0.asm @@ -888,60 +888,23 @@ if_z cb13[12].y ret endif -// === Custom Hue-Preserving Fog Blend === -// FOG_INTENSITY = 0.7, HUE_PRESERVATION = 0.6 +// === Simplified Fog Modification (Anti-Banding) === // r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter (0-255) // Normalize colors to 0-1 range mul r5.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r1/255 mul r6.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 -// Reduce fog intensity: transmittance = lerp(transmittance, 1, 0.3) +// Boost transmittance: transmittance = lerp(transmittance, 1, 0.35) to reduce fog density add r7.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r7.xyz, r7.xyzx, l(0.300000, 0.300000, 0.300000, 0.000000), r4.xyzx // adjusted transmittance +mad r7.xyz, r7.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx -// fogColor *= FOG_INTENSITY (0.7) -mul r6.xyz, r6.xyzx, l(0.700000, 0.700000, 0.700000, 0.000000) +// Reduce fog inscatter intensity +mul r6.xyz, r6.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) -// Standard fog blend: foggedScene = sceneColor * transmittance + fogColor +// Standard fog blend with reduced intensity mad r8.xyz, r5.xyzx, r7.xyzx, r6.xyzx -// Calculate fog amount: fogAmount = 1 - avg(transmittance) -dp3 r3.w, r7.xyzx, l(0.333333, 0.333333, 0.333333, 0.000000) -add r3.w, -r3.w, l(1.000000) - -// Scene luminance (BT.709) -dp3 r5.w, r5.xyzx, l(0.2126, 0.7152, 0.0722, 0.000000) - -// Fogged luminance -dp3 r6.w, r8.xyzx, l(0.2126, 0.7152, 0.0722, 0.000000) - -// lumaWeight = saturate(sceneLuma * 100) for smooth falloff -mul_sat r7.w, r5.w, l(100.000000) - -// Safe luma for division -max r5.w, r5.w, l(0.0001) - -// sceneRatios = sceneColor / safeLuma -div r9.xyz, r5.xyzx, r5.wwww - -// Clamp ratios to prevent artifacts -max r9.xyz, r9.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r9.xyz, r9.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000) - -// huePreserved = sceneRatios * foggedLuma -mul r9.xyz, r9.xyzx, r6.wwww - -// preserveAmount = HUE_PRESERVATION * saturate(1 - fogAmount*0.5) * lumaWeight -mul r5.w, r3.w, l(0.500000) -add_sat r5.w, -r5.w, l(1.000000) -mul r5.w, r5.w, l(0.600000) // HUE_PRESERVATION -mul r5.w, r5.w, r7.w - -// foggedScene = lerp(foggedScene, huePreserved, preserveAmount) -add r9.xyz, r9.xyzx, -r8.xyzx -mad r8.xyz, r5.wwww, r9.xyzx, r8.xyzx - // Output: scale back to 0-255 range mul o0.xyz, r8.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) diff --git a/src/games/endfield/deferred-lighting/0x518D3855.cso b/src/games/endfield/deferred-lighting/0x518D3855.cso new file mode 100644 index 0000000000000000000000000000000000000000..626d32c359c18db20145093358465f5af3ce0d17 GIT binary patch literal 51720 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®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 Hl!pHY!>qb; literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x5468822B.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x5468822B.ps_5_0.asm new file mode 100644 index 0000000000..b7bda33731 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x5468822B.ps_5_0.asm @@ -0,0 +1,1860 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 13:55:07 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy w +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 xyz 2 NONE float xyz +// TEXCOORD 2 xyz 3 NONE float xyz +// TEXCOORD 3 xyzw 4 NONE float xyzw +// TEXCOORD 4 xyz 5 NONE float xyz +// TEXCOORD 5 xyz 6 NONE float xyz +// TEXCOORD 6 xyz 7 NONE float xyz +// TEXCOORD 7 xyz 8 NONE float xyz +// TEXCOORD 8 x 9 NONE uint x +// SV_IsFrontFace 0 x 10 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[216], immediateIndexed +dcl_constantbuffer CB1[4093], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[9], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_comparison +dcl_sampler s3, mode_default +dcl_sampler s4, mode_default +dcl_sampler s5, mode_default +dcl_resource_structured t0, 4 +dcl_resource_structured t1, 16 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture3d (float,float,float,float) t4 +dcl_resource_texture3d (float,float,float,float) t5 +dcl_resource_texture3d (float,float,float,float) t6 +dcl_resource_texture3d (float,float,float,float) t7 +dcl_resource_texture3d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texturecube (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_input_ps_siv linear noperspective v0.xyw, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyz +dcl_input_ps linear v4.xyzw +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps linear v7.xyz +dcl_input_ps linear v8.xyz +dcl_input_ps constant v9.x +dcl_input_ps_sgv constant v10.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 32 +add r0.xyz, -v2.xyzx, cb0[44].xyzx +mov r1.x, cb0[0].z +mov r1.y, cb0[1].z +mov r1.z, cb0[2].z +add r2.xyz, -r0.xyzx, r1.xyzx +mad r0.xyz, cb0[86].wwww, r2.xyzx, r0.xyzx +dp3 r0.w, r0.xyzx, r0.xyzx +max r1.w, r0.w, l(9.999999939E-09) +rsq r1.w, r1.w +mul r2.xyz, r0.xyzx, r1.wwww +ishl r2.w, v9.x, l(4) +and r3.x, l(16), cb1[r2.w + 4].w +if_nz r3.x + iadd r3.x, l(2), cb1[r2.w + 5].x + ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r3.x, l(12), t1.xxxx + ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.y, cb1[r2.w + 5].x, l(12), t1.xxxx +else + mov r3.xy, cb1[r2.w + 3].zxzz +endif +sample_b_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t12.xyzw, s3, cb0[108].x +sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t13.xyzw, s4, cb0[108].x +add r3.z, -r5.w, l(1.000000) +mul r4.xyzw, r4.xyzw, cb5[5].xyzw +mul r6.xyz, r4.xyzx, cb5[4].zzzz +dp3 r3.w, r6.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r6.xyz, r4.xyzx, cb5[4].zzzz, -r3.wwww +mad r6.xyz, cb5[4].wwww, r6.xyzx, r3.wwww +sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, v1.xyxx, t14.xywz, s5, cb0[108].x +mul r7.x, r7.x, r7.z +mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r3.w, r7.xyxx, r7.xyxx +min r3.w, r3.w, l(1.000000) +add r3.w, -r3.w, l(1.000000) +sqrt r3.w, r3.w +max r3.w, r3.w, l(1.000000017E-16) +mul r7.xy, r7.xyxx, cb5[0].wwww +add r8.xz, -r3.yyxy, v2.xxzx +mov r8.y, l(0.0000610351562) +dp3 r3.x, r8.xyzx, r8.xyzx +rsq r3.x, r3.x +mul r8.xyz, r3.xxxx, r8.xyzx +mul r9.xyz, v3.zxyz, v4.yzxy +mad r9.xyz, v3.yzxy, v4.zxyz, -r9.xyzx +mul r9.xyz, r9.xyzx, v4.wwww +mul r7.yzw, r7.yyyy, r9.xxyz +mad r7.xyz, r7.xxxx, v4.xyzx, r7.yzwy +mad r3.xyw, r3.wwww, v3.xyxz, r7.xyxz +mad r6.w, cb5[1].y, l(2.000000), l(-1.000000) +movc r6.w, v10.x, l(1.000000), r6.w +dp3 r7.x, r3.xywx, r3.xywx +max r7.x, r7.x, l(1.175494351E-38) +rsq r7.x, r7.x +mul r3.xyw, r3.xyxw, r7.xxxx +mul r7.xyz, r6.wwww, r3.xywx +dp3 r8.w, v3.xyzx, v3.xyzx +rsq r8.w, r8.w +mul r9.xyz, r8.wwww, v3.xyzx +mul r9.xyz, r6.wwww, r9.xyzx +ftou r10.xy, v0.xyxx +add r8.w, l(1.000000), -cb0[111].x +mad r8.w, cb0[198].w, r8.w, cb0[111].x +mul r8.w, r8.w, cb0[109].x +lt r9.w, cb0[187].y, l(0.500000) +if_nz r9.w + mad r11.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx + add r11.xyz, -r11.xyzx, v2.xzyx + max r9.w, |r11.y|, |r11.x| + add r9.w, r9.w, l(-464.000000) + mul_sat r9.w, r9.w, l(0.031250) + add r11.x, |r11.z|, l(-208.000000) + mul_sat r11.x, r11.x, l(0.031250) + max r9.w, r9.w, r11.x + ne r11.x, l(0.000000), cb0[210].w + lt r11.y, r9.w, l(1.000000) + and r11.x, r11.y, r11.x + if_nz r11.x + mad r11.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r11.xyz, -r11.xyzx, v2.xzyx + max r11.x, |r11.y|, |r11.x| + add r11.x, r11.x, l(-29.000000) + add r11.y, |r11.z|, l(-13.000000) + mul_sat r11.xy, r11.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + max r11.x, r11.y, r11.x + lt r11.y, r11.x, l(1.000000) + if_nz r11.y + mad r11.yzw, v2.xxyz, l(0.000000, 2.000000, 2.000000, 2.000000), l(0.000000, 0.500000, 0.500000, 0.500000) + mul r12.xyz, r11.yzwy, cb0[211].xyzx + round_ni r12.xyz, r12.xyzx + mad r12.xyz, r11.yzwy, cb0[211].xyzx, -r12.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r13.xyw, r12.xyzx, t4.yzwx, s1, l(0.000000) + add r11.y, -r11.x, l(1.000000) + mul r11.z, l(0.500000), cb0[211].y + mad r11.w, -cb0[211].y, l(0.500000), l(1.000000) + max r11.z, r11.z, r12.y + min r11.z, r11.w, r11.z + mul r12.w, r11.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyzw, r12.xwzx, t5.xyzw, s0, l(0.000000) + mad r11.z, r14.w, r11.y, r9.w + add r15.xyz, r12.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s0, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r13.yyyy, r15.xyzx + mov r15.w, r13.y + mul r15.xyzw, r11.yyyy, r15.xyzw + add r12.xyz, r12.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r12.xyzx, t5.xyzw, s0, l(0.000000) + mad r12.xyz, r12.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r12.xyz, r13.xxxx, r12.xyzx + mov r12.w, r13.x + mul r12.xyzw, r11.yyyy, r12.xyzw + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r13.xyz, r13.wwww, r14.xyzx + mul r13.xyzw, r11.yyyy, r13.xyzw + else + mov r15.xyzw, l(0,0,0,0) + mov r12.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r11.z, r9.w + endif + mad r14.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r14.xyz, -r14.xyzx, v2.xzyx + max r11.y, |r14.y|, |r14.x| + add r11.y, r11.y, l(-116.000000) + add r11.w, |r14.z|, l(-52.000000) + mul_sat r11.yw, r11.yyyw, l(0.000000, 0.125000, 0.000000, 0.125000) + max r11.y, r11.w, r11.y + lt r11.w, r11.y, l(1.000000) + if_nz r11.w + mad r14.xyz, v2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r16.xyz, r14.xyzx, cb0[211].xyzx + round_ni r16.xyz, r16.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r16.xyw, r14.xyzx, t6.yzwx, s1, l(0.000000) + add r11.w, -r11.y, l(1.000000) + mul r11.x, r11.w, r11.x + mul r11.w, l(0.500000), cb0[211].y + mad r17.x, -cb0[211].y, l(0.500000), l(1.000000) + max r11.w, r11.w, r14.y + min r11.w, r17.x, r11.w + mul r14.w, r11.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r14.xwzx, t7.xyzw, s0, l(0.000000) + mad r11.z, r17.w, r11.x, r11.z + add r18.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t7.xyzw, s0, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r16.yyyy, r18.xyzx + mov r18.w, r16.y + mad r15.xyzw, r18.xyzw, r11.xxxx, r15.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t7.xyzw, s0, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r16.xxxx, r14.xyzx + mov r14.w, r16.x + mad r12.xyzw, r14.xyzw, r11.xxxx, r12.xyzw + mad r14.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r16.wwww, r14.xyzx + mad r13.xyzw, r16.xyzw, r11.xxxx, r13.xyzw + endif + lt r11.x, l(0.000000), r11.y + if_nz r11.x + mad r14.xyz, v2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r16.xyz, r14.xyzx, cb0[211].xyzx + mul r17.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r16.xyz, r16.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r16.xyzx + mad r16.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r14.xyz, r17.xyzx, r14.xyzx + min r14.xyz, r16.xyzx, r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r14.xyzx, t8.yzwx, s1, l(0.000000) + add r11.x, -r9.w, l(1.000000) + mul r11.x, r11.x, r11.y + max r11.y, r17.y, r14.y + min r11.y, r16.y, r11.y + mul r14.w, r11.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t9.xyzw, s0, l(0.000000) + add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t9.xyzw, s0, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.yyyy, r17.xyzx + mov r17.w, r18.y + mad r15.xyzw, r17.xyzw, r11.xxxx, r15.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t9.xyzw, s0, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r18.xxxx, r14.xyzx + mov r14.w, r18.x + mad r12.xyzw, r14.xyzw, r11.xxxx, r12.xyzw + mad r14.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r14.xyzx + mad r13.xyzw, r18.xyzw, r11.xxxx, r13.xyzw + mad r11.z, r16.w, r11.x, r11.z + endif + mad_sat r11.x, r11.z, l(2.000000), l(-1.000000) + add r14.x, -r9.w, r11.x + add r9.w, r9.w, r11.x + mul r14.y, r9.w, l(0.500000) + else + mov r15.xyzw, l(0,0,0,0) + mov r12.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r14.xy, l(0,1.000000,0,0) + endif + mul r11.xyzw, r14.yyyx, cb0[213].xyzw + mad r11.y, r11.w, l(0.500000), r11.y + mul r14.zw, r14.yyyx, cb0[213].wwwy + mad r11.w, r14.w, l(0.375000), r14.z + add r11.xyzw, r11.xyzw, r13.xyzw + mul r13.xyzw, r14.yyyx, cb0[214].xyzw + mad r13.y, r13.w, l(0.500000), r13.y + mul r14.zw, r14.yyyx, cb0[214].wwwy + mad r13.w, r14.w, l(0.375000), r14.z + add r12.xyzw, r12.xyzw, r13.xyzw + mul r13.xyzw, r14.yyyx, cb0[215].xyzw + mad r13.y, r13.w, l(0.500000), r13.y + mul r14.xy, r14.yxyy, cb0[215].wyww + mad r13.w, r14.y, l(0.375000), r14.x + add r13.xyzw, r13.xyzw, r15.xyzw + mov r7.w, l(1.000000) + dp4 r14.x, r11.xyzw, r7.xyzw + dp4 r14.y, r12.xyzw, r7.xyzw + dp4 r14.z, r13.xyzw, r7.xyzw + max r14.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r15.xyz, r8.wwww, r14.xyzx + mul r16.xyz, r12.xyzx, l(0.715200, 0.715200, 0.715200, 0.000000) + mad r16.xyz, r11.xyzx, l(0.212600, 0.212600, 0.212600, 0.000000), r16.xyzx + mad r16.xyz, r13.xyzx, l(0.072200, 0.072200, 0.072200, 0.000000), r16.xyzx + dp3 r7.w, r16.xyzx, r16.xyzx + max r7.w, r7.w, l(1.175494351E-38) + rsq r7.w, r7.w + mul r16.xyz, r7.wwww, r16.xyzx + mov r16.y, |r16.y| + mov r16.w, l(1.000000) + dp4 r11.x, r11.xyzw, r16.xyzw + dp4 r11.y, r12.xyzw, r16.xyzw + dp4 r11.z, r13.xyzw, r16.xyzw + max r11.xyz, r11.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + ge r7.w, r15.y, r15.z + and r7.w, r7.w, l(0x3f800000) + mov r12.xy, r15.zyzz + mov r12.zw, l(0,0,-1.000000,0.666666687) + mad r13.xy, r14.yzyy, r8.wwww, -r12.xyxx + mov r13.zw, l(0,0,1.000000,-1.000000) + mad r12.xyzw, r7.wwww, r13.xyzw, r12.xyzw + ge r7.w, r15.x, r12.x + and r7.w, r7.w, l(0x3f800000) + mov r13.xyz, r12.xywx + mov r13.w, r15.x + mov r12.xyw, r13.wywx + add r12.xyzw, -r13.xyzw, r12.xyzw + mad r12.xyzw, r7.wwww, r12.xyzw, r13.xyzw + min r7.w, r12.y, r12.w + add r7.w, -r7.w, r12.x + add r9.w, -r12.y, r12.w + mad r11.w, r7.w, l(6.000000), l(0.000100) + div r9.w, r9.w, r11.w + add r9.w, r9.w, r12.z + frc r9.w, |r9.w| + add r11.w, r12.x, l(0.000100) + div r7.w, r7.w, r11.w + add r13.xyzw, r9.wwww, l(-0.500000, 1.000000, 0.666666687, 0.333333343) + add r9.w, |r13.x|, l(-0.450000) + mul_sat r9.w, r9.w, l(-10.000001) + mad r11.w, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r11.w + mad r9.w, r9.w, l(-0.350000), l(0.700000) + mov_sat r12.x, r12.x + mul r9.w, r9.w, r12.x + min r7.w, r7.w, r9.w + add r9.w, -r7.w, l(2.000000) + div r9.w, l(2.000000), r9.w + frc r12.xyz, r13.yzwy + mad r12.xyz, r12.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) + add_sat r12.xyz, |r12.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) + add r12.xyz, r12.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) + mad r12.xyz, r7.wwww, r12.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r12.xyz, r9.wwww, r12.xyzx + max r7.w, r11.y, r11.x + max r7.w, r11.z, r7.w + mul r8.w, r8.w, r7.w + mov r7.w, l(1.000000) +else + mov r16.xyz, l(0,0,0,0) + mov r15.xyz, l(1.000000,1.000000,1.000000,0) + mov r12.xyz, cb0[188].xyzx + mov r7.w, l(0) +endif +add r9.w, -v2.y, cb1[r2.w + 12].z +add r9.w, r9.w, l(0.200000) +mul_sat r9.w, r9.w, l(2.85714269) +mad r11.x, r9.w, l(-2.000000), l(3.000000) +mul r9.w, r9.w, r9.w +mul r9.w, r9.w, r11.x +mul r9.w, r9.w, cb1[r2.w + 12].y +max r9.w, r9.w, cb1[r2.w + 12].w +add r11.x, r9.w, cb1[r2.w + 12].x +lt r11.x, l(0.010000), r11.x +if_nz r11.x + add r11.x, -r5.x, l(1.000000) + mul r11.yzw, r4.xxyz, r11.xxxx + dp3 r11.y, r11.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r11.y, r11.y, l(-0.350000) + mul_sat r11.y, r11.y, l(-4.000000) + mad r11.z, r11.y, l(-2.000000), l(3.000000) + mul r11.y, r11.y, r11.y + mul r11.w, r11.y, r11.z + mul r13.xyzw, v8.xyxz, l(1.000000, -1.000000, 1.000000, 1.000000) + movc r13.xyzw, cb1[r2.w + 4].wwww, r13.xyzw, v8.xzxy + mul r14.xyzw, r13.xyzw, cb0[196].zzzz + movc r17.yz, cb1[r2.w + 4].wwww, v7.zzyz, v7.yyzy + mov r17.x, v7.x + add r18.xyz, |r17.xyzx|, l(-0.200000, -0.200000, -0.200000, 0.000000) + mul r19.xyz, r18.xyzx, r18.xyzx + mul r18.xyz, r18.xyzx, r19.xyzx + max r18.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + dp3 r12.w, r18.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + div r18.xyz, r18.xyzx, r12.wwww + sample_b_indexable(texture2d)(float,float,float,float) r20.xyzw, r14.zyzz, t10.xyzw, s3, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r14.zwzz, t10.xyzw, s3, cb0[108].x + mul r21.xyzw, r18.zzzz, r21.xyzw + mad r20.xyzw, r20.xyzw, r18.yyyy, r21.xyzw + sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r14.ywyy, t10.xyzw, s3, cb0[108].x + mad r18.xyzw, r21.xyzw, r18.xxxx, r20.xyzw + add r17.yw, -r18.wwww, l(0.000000, 0.800000, 0.000000, 0.450000) + mul r20.xyz, r7.yyxy, l(0.200000, 0.000000, 1.000000, 0.000000) + mad_sat r12.w, cb1[r2.w + 12].x, r11.x, r20.x + add r12.w, -r17.y, r12.w + mul_sat r12.w, r12.w, l(3.33333325) + mad r13.x, r12.w, l(-2.000000), l(3.000000) + mul r12.w, r12.w, r12.w + mul r12.w, r12.w, r13.x + mul_sat r11.x, r9.w, r11.x + add r11.x, -r17.w, r11.x + mul_sat r11.x, r11.x, l(1.53846145) + mad r13.x, r11.x, l(-2.000000), l(3.000000) + mul r11.x, r11.x, r11.x + mul r11.x, r11.x, r13.x + max r11.x, r11.x, r12.w + add r12.w, r5.x, l(-0.500000) + mul_sat r12.w, r12.w, l(4.000000) + mad r13.x, r12.w, l(-2.000000), l(3.000000) + mul r12.w, r12.w, r12.w + mul r12.w, r12.w, r13.x + add r5.w, -r5.w, l(0.199999988) + mul_sat r5.w, r5.w, l(-5.00000048) + mad r13.x, r5.w, l(-2.000000), l(3.000000) + mul r5.w, r5.w, r5.w + mul r5.w, r5.w, r13.x + mad r13.x, r5.w, r11.w, r12.w + min r13.x, r13.x, l(1.000000) + max r9.w, r9.w, cb1[r2.w + 12].x + mad r17.yw, r18.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mul r18.xyw, r14.yzyw, l(20.000000, 20.000000, 0.000000, 20.000000) + mul r21.xyz, r14.yzwy, l(34.345600, 34.345600, 34.345600, 0.000000) + mul r22.xyz, r19.xyzx, r19.xyzx + mul r22.xyz, r22.xyzx, r22.xyzx + mul r19.xyz, r19.xyzx, r22.xyzx + dp3 r15.w, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + div r19.xyz, r19.xyzx, r15.wwww + round_ni r22.xyzw, r18.yxyw + mul r23.xyzw, r22.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r23.xyzw, r23.xyzw + add r24.xyzw, r23.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r15.w, r23.xyxx, r24.xyxx + add r20.xw, r15.wwww, r23.xxxy + mul r15.w, r20.w, r20.x + add r16.w, r20.w, r20.x + frc r15.w, r15.w + frc r25.w, r16.w + add r26.xyzw, r22.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) + mul r26.xyzw, r26.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r26.xyzw, r26.xyzw + add r27.xyzw, r26.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r16.w, r26.xyxx, r27.xyxx + add r20.xw, r16.wwww, r26.xxxy + mul r16.w, r20.w, r20.x + add r18.y, r20.w, r20.x + frc r23.x, r16.w + frc r23.y, r18.y + mad r16.w, r15.w, l(0.399999976), l(0.600000) + mul r18.y, r16.w, l(0.250000) + mad r22.xyzw, r14.zyzw, l(20.000000, 20.000000, 20.000000, 20.000000), -r22.xyzw + mad r20.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r20.xw, r20.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r22.xxxy + add r20.xw, r20.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) + mul r22.x, r20.x, l(1.250000) + lt r19.w, r20.w, l(0.000000) + movc r19.w, r19.w, l(1.250000), l(0.750000) + mul r22.y, r19.w, r20.w + mad r15.w, cb0[102].x, l(3.000000), r15.w + frc r15.w, r15.w + add r20.xw, r15.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) + mul_sat r20.xw, r20.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) + mad r24.xy, r20.xwxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r20.xw, r20.xxxw, r20.xxxw + mul r20.xw, r20.xxxw, r24.xxxy + mul r15.w, r20.w, r20.x + dp2 r19.w, r22.xyxx, r22.xyxx + sqrt r19.w, r19.w + mad r16.w, -r16.w, l(0.250000), r19.w + div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.y + mul_sat r16.w, r16.w, r19.w + mad r19.w, r16.w, l(-2.000000), l(3.000000) + mul r16.w, r16.w, r16.w + mul r16.w, r16.w, r19.w + ge r16.w, r16.w, l(0.001000) + and r16.w, r16.w, l(0x3f800000) + mul r25.z, r15.w, r16.w + div r20.xw, r22.xxxy, r18.yyyy + max r20.xw, r20.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) + min r20.xw, r20.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + ge r15.w, r25.z, l(0.001000) + and r15.w, r15.w, l(0x3f800000) + mul r20.xw, r15.wwww, r20.xxxw + mad r15.w, r23.x, l(0.250000), l(0.250000) + mul r25.xy, r15.wwww, r20.xwxx + dp2 r15.w, r23.zwzz, r24.zwzz + add r20.xw, r15.wwww, r23.zzzw + mul r15.w, r20.w, r20.x + add r16.w, r20.w, r20.x + frc r15.w, r15.w + frc r23.w, r16.w + dp2 r16.w, r26.zwzz, r27.zwzz + add r20.xw, r16.wwww, r26.zzzw + mul r16.w, r20.w, r20.x + add r18.y, r20.w, r20.x + frc r22.x, r16.w + frc r22.y, r18.y + mad r16.w, r15.w, l(0.399999976), l(0.600000) + mul r18.y, r16.w, l(0.250000) + mad r20.xw, r22.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r20.xw, r20.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r22.zzzw + add r20.xw, r20.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) + mul r24.x, r20.x, l(1.250000) + lt r19.w, r20.w, l(0.000000) + movc r19.w, r19.w, l(1.250000), l(0.750000) + mul r24.y, r19.w, r20.w + mad r15.w, cb0[102].x, l(3.000000), r15.w + frc r15.w, r15.w + add r20.xw, r15.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) + mul_sat r20.xw, r20.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) + mad r22.yz, r20.xxwx, l(0.000000, -2.000000, -2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000) + mul r20.xw, r20.xxxw, r20.xxxw + mul r20.xw, r20.xxxw, r22.yyyz + mul r15.w, r20.w, r20.x + dp2 r19.w, r24.xyxx, r24.xyxx + sqrt r19.w, r19.w + mad r16.w, -r16.w, l(0.250000), r19.w + div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.y + mul_sat r16.w, r16.w, r19.w + mad r19.w, r16.w, l(-2.000000), l(3.000000) + mul r16.w, r16.w, r16.w + mul r16.w, r16.w, r19.w + ge r16.w, r16.w, l(0.001000) + and r16.w, r16.w, l(0x3f800000) + mul r23.z, r15.w, r16.w + div r20.xw, r24.xxxy, r18.yyyy + max r20.xw, r20.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) + min r20.xw, r20.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + ge r15.w, r23.z, l(0.001000) + and r15.w, r15.w, l(0x3f800000) + mul r20.xw, r15.wwww, r20.xxxw + mad r15.w, r22.x, l(0.250000), l(0.250000) + mul r23.xy, r15.wwww, r20.xwxx + round_ni r18.xy, r18.xwxx + mul r20.xw, r18.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r20.xw, r20.xxxw + add r22.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r15.w, r20.xwxx, r22.xyxx + add r20.xw, r15.wwww, r20.xxxw + mul r15.w, r20.w, r20.x + add r16.w, r20.w, r20.x + frc r15.w, r15.w + frc r22.w, r16.w + add r20.xw, r18.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) + mul r20.xw, r20.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r20.xw, r20.xxxw + add r24.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r16.w, r20.xwxx, r24.xyxx + add r20.xw, r16.wwww, r20.xxxw + mul r16.w, r20.w, r20.x + add r18.w, r20.w, r20.x + frc r24.x, r16.w + frc r24.y, r18.w + mad r16.w, r15.w, l(0.399999976), l(0.600000) + mul r18.w, r16.w, l(0.250000) + mad r18.xy, r14.ywyy, l(20.000000, 20.000000, 0.000000, 0.000000), -r18.xyxx + mad r20.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r18.xy, r20.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r18.xyxx + add r18.xy, r18.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) + mul r26.x, r18.x, l(1.250000) + lt r18.x, r18.y, l(0.000000) + movc r18.x, r18.x, l(1.250000), l(0.750000) + mul r26.y, r18.x, r18.y + mad r15.w, cb0[102].x, l(3.000000), r15.w + frc r15.w, r15.w + add r18.xy, r15.wwww, l(-0.200000, -0.850000, 0.000000, 0.000000) + mul_sat r18.xy, r18.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) + mad r20.xw, r18.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r18.xy, r18.xyxx, r18.xyxx + mul r18.xy, r18.xyxx, r20.xwxx + mul r15.w, r18.y, r18.x + dp2 r18.x, r26.xyxx, r26.xyxx + sqrt r18.x, r18.x + mad r16.w, -r16.w, l(0.250000), r18.x + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w + mul_sat r16.w, r16.w, r18.x + mad r18.x, r16.w, l(-2.000000), l(3.000000) + mul r16.w, r16.w, r16.w + mul r16.w, r16.w, r18.x + ge r16.w, r16.w, l(0.001000) + and r16.w, r16.w, l(0x3f800000) + mul r22.z, r15.w, r16.w + div r18.xy, r26.xyxx, r18.wwww + max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r15.w, r22.z, l(0.001000) + and r15.w, r15.w, l(0x3f800000) + mul r18.xy, r15.wwww, r18.xyxx + mad r15.w, r24.x, l(0.250000), l(0.250000) + mul r22.xy, r15.wwww, r18.xyxx + mul r23.xyzw, r19.zzzz, r23.xyzw + mad r23.xyzw, r25.xyzw, r19.yyyy, r23.xyzw + mad r22.xyzw, r22.xyzw, r19.xxxx, r23.xyzw + round_ni r23.xyzw, r21.yxyz + mul r24.xyzw, r23.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r24.xyzw, r24.xyzw + add r25.xyzw, r24.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r15.w, r24.xyxx, r25.xyxx + add r18.xy, r15.wwww, r24.xyxx + mul r15.w, r18.y, r18.x + add r16.w, r18.y, r18.x + frc r15.w, r15.w + frc r26.w, r16.w + add r27.xyzw, r23.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) + mul r27.xyzw, r27.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r27.xyzw, r27.xyzw + add r28.xyzw, r27.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r16.w, r27.xyxx, r28.xyxx + add r18.xy, r16.wwww, r27.xyxx + mul r16.w, r18.y, r18.x + add r18.x, r18.y, r18.x + frc r24.x, r16.w + frc r24.y, r18.x + mad r16.w, r15.w, l(0.399999976), l(0.600000) + mul r18.x, r16.w, l(0.250000) + mad r23.xyzw, r14.xyzw, l(34.345600, 34.345600, 34.345600, 34.345600), -r23.xyzw + mad r18.yw, r24.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r18.yw, r18.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r23.xxxy + add r18.yw, r18.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) + mul r23.x, r18.y, l(1.250000) + lt r14.x, r18.w, l(0.000000) + movc r14.x, r14.x, l(1.250000), l(0.750000) + mul r23.y, r14.x, r18.w + mad r14.x, cb0[102].x, l(4.345600), r15.w + frc r14.x, r14.x + add r18.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) + mul_sat r18.yw, r18.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) + mad r20.xw, r18.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r18.yw, r18.yyyw, r18.yyyw + mul r18.yw, r18.yyyw, r20.xxxw + mul r14.x, r18.w, r18.y + dp2 r15.w, r23.xyxx, r23.xyxx + sqrt r15.w, r15.w + mad r15.w, -r16.w, l(0.250000), r15.w + div r16.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.x + mul_sat r15.w, r15.w, r16.w + mad r16.w, r15.w, l(-2.000000), l(3.000000) + mul r15.w, r15.w, r15.w + mul r15.w, r15.w, r16.w + ge r15.w, r15.w, l(0.001000) + and r15.w, r15.w, l(0x3f800000) + mul r26.z, r14.x, r15.w + div r18.xy, r23.xyxx, r18.xxxx + max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r14.x, r26.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r18.xy, r14.xxxx, r18.xyxx + mad r14.x, r24.x, l(0.250000), l(0.250000) + mul r26.xy, r14.xxxx, r18.xyxx + dp2 r14.x, r24.zwzz, r25.zwzz + add r18.xy, r14.xxxx, r24.zwzz + mul r14.x, r18.y, r18.x + add r15.w, r18.y, r18.x + frc r14.x, r14.x + frc r24.w, r15.w + dp2 r15.w, r27.zwzz, r28.zwzz + add r18.xy, r15.wwww, r27.zwzz + mul r15.w, r18.y, r18.x + add r16.w, r18.y, r18.x + frc r18.x, r15.w + frc r18.y, r16.w + mad r15.w, r14.x, l(0.399999976), l(0.600000) + mul r16.w, r15.w, l(0.250000) + mad r18.yw, r18.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r18.yw, r18.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r23.zzzw + add r18.yw, r18.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) + mul r23.x, r18.y, l(1.250000) + lt r18.y, r18.w, l(0.000000) + movc r18.y, r18.y, l(1.250000), l(0.750000) + mul r23.y, r18.y, r18.w + mad r14.x, cb0[102].x, l(4.345600), r14.x + frc r14.x, r14.x + add r18.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) + mul_sat r18.yw, r18.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) + mad r20.xw, r18.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r18.yw, r18.yyyw, r18.yyyw + mul r18.yw, r18.yyyw, r20.xxxw + mul r14.x, r18.w, r18.y + dp2 r18.y, r23.xyxx, r23.xyxx + sqrt r18.y, r18.y + mad r15.w, -r15.w, l(0.250000), r18.y + div r18.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w + mul_sat r15.w, r15.w, r18.y + mad r18.y, r15.w, l(-2.000000), l(3.000000) + mul r15.w, r15.w, r15.w + mul r15.w, r15.w, r18.y + ge r15.w, r15.w, l(0.001000) + and r15.w, r15.w, l(0x3f800000) + mul r24.z, r14.x, r15.w + div r18.yw, r23.xxxy, r16.wwww + max r18.yw, r18.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) + min r18.yw, r18.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) + ge r14.x, r24.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r18.yw, r14.xxxx, r18.yyyw + mad r14.x, r18.x, l(0.250000), l(0.250000) + mul r24.xy, r14.xxxx, r18.ywyy + round_ni r18.xy, r21.xzxx + mul r20.xw, r18.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r20.xw, r20.xxxw + add r21.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r14.x, r20.xwxx, r21.xyxx + add r20.xw, r14.xxxx, r20.xxxw + mul r14.x, r20.w, r20.x + add r15.w, r20.w, r20.x + frc r14.x, r14.x + frc r21.w, r15.w + add r20.xw, r18.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) + mul r20.xw, r20.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r20.xw, r20.xxxw + add r23.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r15.w, r20.xwxx, r23.xyxx + add r20.xw, r15.wwww, r20.xxxw + mul r15.w, r20.w, r20.x + add r16.w, r20.w, r20.x + frc r23.x, r15.w + frc r23.y, r16.w + mad r15.w, r14.x, l(0.399999976), l(0.600000) + mul r16.w, r15.w, l(0.250000) + mad r18.xy, r14.ywyy, l(34.345600, 34.345600, 0.000000, 0.000000), -r18.xyxx + mad r20.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r18.xy, r20.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r18.xyxx + add r18.xy, r18.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) + mul r25.x, r18.x, l(1.250000) + lt r18.x, r18.y, l(0.000000) + movc r18.x, r18.x, l(1.250000), l(0.750000) + mul r25.y, r18.x, r18.y + mad r14.x, cb0[102].x, l(4.345600), r14.x + frc r14.x, r14.x + add r18.xy, r14.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) + mul_sat r18.xy, r18.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) + mad r20.xw, r18.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r18.xy, r18.xyxx, r18.xyxx + mul r18.xy, r18.xyxx, r20.xwxx + mul r14.x, r18.y, r18.x + dp2 r18.x, r25.xyxx, r25.xyxx + sqrt r18.x, r18.x + mad r15.w, -r15.w, l(0.250000), r18.x + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w + mul_sat r15.w, r15.w, r18.x + mad r18.x, r15.w, l(-2.000000), l(3.000000) + mul r15.w, r15.w, r15.w + mul r15.w, r15.w, r18.x + ge r15.w, r15.w, l(0.001000) + and r15.w, r15.w, l(0x3f800000) + mul r21.z, r14.x, r15.w + div r18.xy, r25.xyxx, r16.wwww + max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r14.x, r21.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r18.xy, r14.xxxx, r18.xyxx + mad r14.x, r23.x, l(0.250000), l(0.250000) + mul r21.xy, r14.xxxx, r18.xyxx + mul r23.xyzw, r19.zzzz, r24.xyzw + mad r23.xyzw, r26.xyzw, r19.yyyy, r23.xyzw + mad r19.xyzw, r21.xyzw, r19.xxxx, r23.xyzw + max r18.xy, r19.zwzz, r22.zwzz + mad r19.zw, -r13.xxxx, r9.wwww, l(0.000000, 0.000000, 1.000000, 1.010000) + add r14.x, r18.y, l(-0.100000) + ge r14.x, r14.x, r19.z + and r14.x, r14.x, l(0x3f800000) + mul r14.x, r14.x, r18.x + ge r2.w, cb1[r2.w + 12].x, l(0.010000) + and r2.w, r2.w, l(0x3f800000) + mul r2.w, r2.w, r14.x + lt r14.x, l(0.001000), r2.w + add r18.xy, r19.xyxx, r22.xyxx + mul r15.w, cb0[102].x, cb0[196].z + mul r19.y, r15.w, l(0.750000) + dp2 r15.w, r17.xzxx, r17.xzxx + max r15.w, r15.w, l(1.175494351E-38) + rsq r15.w, r15.w + mul r17.xz, r15.wwww, r17.xxzx + add r17.xz, |r17.xxzx|, l(-0.200000, 0.000000, -0.200000, 0.000000) + mul r20.xw, r17.xxxz, r17.xxxz + mul r17.xz, r17.xxzx, r20.xxwx + max r17.xz, r17.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + dp2 r15.w, r17.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) + div r17.xz, r17.xxzx, r15.wwww + sample_b_indexable(texture2d)(float,float,float,float) r21.xyz, r14.zwzz, t11.xyzw, s3, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r14.yzw, r14.ywyy, t11.wxyz, s3, cb0[108].x + mul r14.yzw, r17.xxxx, r14.yyzw + mad r14.yzw, r21.xxyz, r17.zzzz, r14.yyzw + movc r17.yw, r14.xxxx, r18.xxxy, r17.yyyw + mad r14.xy, r14.yzyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mov r19.x, l(0) + mad r21.xyzw, r13.zwyw, cb0[196].zzzz, r19.xyxy + sample_b_indexable(texture2d)(float,float,float,float) r13.y, r21.xyxx, t11.xwyz, s3, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r13.z, r21.zwzz, t11.xywz, s3, cb0[108].x + mul r13.z, r17.x, r13.z + mad r13.y, r13.y, r17.z, r13.z + mad r13.yz, r14.xxyx, r13.yyyy, r17.yywy + ge r13.w, r18.z, r19.w + and r13.w, r13.w, l(0x3f800000) + max r2.w, r2.w, r13.w + add r13.w, -r14.w, l(1.000000) + mad r9.w, r13.x, r9.w, -r13.w + mul_sat r9.w, r9.w, l(9.999998) + mad r13.x, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r13.x + max r2.w, r2.w, r9.w + mad r13.xw, -r7.zzzy, l(1.000000, 0.000000, 0.000000, 0.000000), r20.yyyz + dp2 r9.w, r13.xwxx, r13.xwxx + lt r14.x, l(0.0000610351562), r9.w + rsq r9.w, r9.w + mul r13.xw, r9.wwww, r13.xxxw + mov r13.xw, -r13.xxxw + movc r17.z, r14.x, r13.x, l(-1.000000) + and r17.y, r13.w, r14.x + min r9.w, r3.z, l(0.050000) + add r13.x, -r3.z, r9.w + mad r13.x, r2.w, r13.x, r3.z + mad r11.y, -r11.z, r11.y, l(1.000000) + mul r11.y, r11.y, r11.x + mad r5.w, -r5.w, r11.w, l(1.000000) + mul r5.w, r5.w, r11.y + mad r5.w, r5.w, l(-0.500000), l(1.000000) + mov r17.x, l(0) + mad r3.xyw, -r3.xyxw, r6.wwww, r17.zxzy + mad r3.xyw, r13.yyyy, r3.xyxw, r7.xyxz + mul r14.xyz, r7.zxyz, r17.xyzx + mad r14.xyz, r7.yzxy, r17.yzxy, -r14.xyzx + add r14.xyz, -r3.xywx, r14.xyzx + mad r3.xyw, r13.zzzz, r14.xyxz, r3.xyxw + dp3 r6.w, r3.xywx, r3.xywx + rsq r6.w, r6.w + mad r3.xyw, r3.xyxw, r6.wwww, -r7.xyxz + mad r3.xyw, r2.wwww, r3.xyxw, r7.xyxz + dp3 r6.w, r3.xywx, r3.xywx + rsq r6.w, r6.w + mul r3.xyw, r3.xyxw, r6.wwww + mul r6.w, r11.w, r11.x + mad r6.w, -r6.w, l(0.200000), r13.x + min r11.x, r13.x, l(0.200000) + max r3.z, r6.w, r11.x + mul r6.xyz, r5.wwww, r6.xyzx + dp3 r6.w, r4.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r6.w, r6.w, l(-0.700000) + mul_sat r6.w, r6.w, l(-2.50000024) + mad r11.x, r6.w, l(-2.000000), l(3.000000) + mul r6.w, r6.w, r6.w + mul r6.w, r6.w, r11.x + mad r6.w, r6.w, l(0.500000), l(1.000000) + mul r11.x, r12.w, r2.w + mad r11.yzw, r4.xxyz, r6.wwww, -r4.xxyz + mad r11.xyz, r11.xxxx, r11.yzwy, r4.xyzx + mul r4.xyz, r5.wwww, r11.xyzx +else + mov r3.xyw, r7.xyxz + mov r9.w, l(0.010000) + mov r2.w, l(0) +endif +mul r5.w, r5.y, l(0.040000) +mad r6.w, -r5.x, l(0.960000), l(0.960000) +mul r11.xyz, r4.xyzx, r6.wwww +mad r13.xyz, -r5.yyyy, l(0.040000, 0.040000, 0.040000, 0.000000), r4.xyzx +mad r13.xyz, r5.xxxx, r13.xyzx, r5.wwww +mul r6.xyz, r6.wwww, r6.xyzx +mul r5.y, r3.z, r3.z +max r5.y, r5.y, l(0.00781250000) +max r5.w, v5.z, l(9.999999939E-09) +div r14.xy, v5.xyxx, r5.wwww +max r5.w, v6.z, l(9.999999939E-09) +div r14.zw, v6.xxxy, r5.wwww +add r14.xy, -r14.zwzz, r14.xyxx +mul r17.xy, r14.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r17.xy, |r17.xyxx| +sqrt r17.xy, r17.xyxx +mov r14.z, -r14.y +lt r14.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r14.xxxz +lt r14.xz, r14.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r14.xy, -r14.ywyy, r14.xzxx +itof r14.xy, r14.xyxx +mul r14.xy, r14.xyxx, r17.xyxx +mad o1.xy, r14.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +lt r5.w, l(0.500000), r2.w +movc o1.w, r5.w, l(0.700000), l(0.400000) +add r14.xyz, cb0[197].xyzx, cb3[0].xyzx +mad r14.xyz, cb0[187].wwww, r14.xyzx, -cb3[0].xyzx +mov r14.w, l(0.0000610351562) +dp3 r5.w, r14.xzwx, r14.xzwx +rsq r5.w, r5.w +mul r17.xyz, r5.wwww, r14.xwzx +add r18.xyz, cb0[191].xyzx, -cb3[3].xyzx +mad r18.xyz, cb0[198].yyyy, r18.xyzx, cb3[3].xyzx +add r5.w, l(1.000000), -cb3[3].w +mad r5.w, cb0[198].w, r5.w, cb3[3].w +mul r19.xyz, r5.wwww, r18.xyzx +mov r10.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r20.xy, r10.xyzz, t3.xyzw +add r10.z, r20.x, l(-1.000000) +mad r10.z, cb4[34].x, r10.z, l(1.000000) +add r11.w, -r10.z, l(1.000000) +mad r10.z, cb0[187].z, r11.w, r10.z +dp3 r11.w, r7.xyzx, r14.xyzx +mul r20.xzw, r6.xxyz, cb0[186].zzzz +mul r21.xyz, r20.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000) +dp3 r12.w, r11.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +dp2 r13.w, cb0[6].xzxx, cb0[6].xzxx +rsq r13.w, r13.w +mul r22.xy, r13.wwww, cb0[6].xzxx +dp2 r13.w, r17.xzxx, r22.xyxx +mov_sat r13.w, -r13.w +add r22.xy, l(1.000000, 1.000000, 0.000000, 0.000000), -cb0[198].xyxx +mad r14.w, r11.w, l(0.500000), l(-1.000000) +mad r14.w, -r11.w, r14.w, -r11.w +add r15.w, l(0.750000), -|cb0[6].y| +add_sat r15.w, r15.w, r15.w +mad r16.w, r15.w, l(-2.000000), l(3.000000) +mul r15.w, r15.w, r15.w +mul r15.w, r15.w, r16.w +mul r15.w, r13.w, r15.w +mul r15.w, r22.x, r15.w +add r14.w, r14.w, l(0.500000) +mad r11.w, r15.w, r14.w, r11.w +mad r11.w, cb0[197].w, cb0[198].x, r11.w +max r11.w, r11.w, l(-1.000000) +min r11.w, r11.w, l(1.000000) +add r11.w, r11.w, l(-0.250000) +mul r11.w, r11.w, l(1.33333337) +max r11.w, r11.w, l(0.000000) +mad r14.w, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r14.w +dp3 r14.w, r7.xyzx, cb0[6].xyzx +add r14.w, r14.w, l(-0.250000) +mul_sat r14.w, r14.w, l(1.33333337) +mad r15.w, r14.w, l(-2.000000), l(3.000000) +mul r14.w, r14.w, r14.w +mul r14.w, r14.w, r15.w +mul r15.w, r5.z, r20.y +min r16.w, r5.z, r20.y +min r17.w, r11.w, r16.w +mul r18.w, r14.w, r15.w +dp3 r19.w, r7.xyzx, cb0[192].xyzx +add_sat r19.w, r19.w, cb0[193].x +mad r19.w, r19.w, cb0[193].y, cb0[193].z +mul r21.w, r17.w, cb0[187].y +add r23.xyz, -r12.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r23.xyz, r21.wwww, r23.xyzx, r12.xyzx +mul r23.xyz, r19.wwww, r23.xyzx +mad r19.w, r8.w, l(0.350000024), l(0.650000) +min r19.w, r19.w, l(1.500000) +max r24.xyz, r8.wwww, l(1.250000, 0.000000, 0.500000, 0.000000) +min r24.xyz, r24.xyzx, l(1.750000, 1.500000, 1.500000, 0.000000) +add r8.w, -r19.w, r24.x +mad r8.w, cb0[187].x, r8.w, r19.w +mul r25.xyz, r8.wwww, r23.xyzx +mul r25.xyz, r25.xyzx, cb0[186].wwww +dp3 r8.w, r19.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r19.xyz, r18.xyzx, r5.wwww, -r8.wwww +mad r19.xyz, r17.wwww, r19.xyzx, r8.wwww +mul r23.xyz, r23.xyzx, r24.yyyy +mad r22.yzw, r18.xxyz, cb0[198].yyyy, r22.yyyy +mad r19.xyz, r23.xyzx, r22.yzwy, r19.xyzx +mad r19.xyz, r19.xyzx, cb0[186].yyyy, -r25.xyzx +mad r19.xyz, r10.zzzz, r19.xyzx, r25.xyzx +dp3 r8.w, r21.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r21.xyz, r20.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000), -r8.wwww +mad r21.xyz, r21.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r8.wwww +mad_sat r8.w, r14.w, r15.w, r11.w +mad r22.yzw, r6.xxyz, cb0[186].zzzz, -r21.xxyz +mad r21.xyz, r8.wwww, r22.yzwy, r21.xyzx +mad r22.yzw, r4.xxyz, r6.wwww, -r21.xxyz +mad r21.xyz, r17.wwww, r22.yzwy, r21.xyzx +mad r22.yzw, r4.xxyz, r6.wwww, -r12.wwww +mad r22.yzw, r22.yyzw, l(0.000000, 1.200000, 1.200000, 1.200000), r12.wwww +mad r22.yzw, -r6.xxyz, cb0[186].zzzz, r22.yyzw +mad r20.xzw, r18.wwww, r22.yyzw, r20.xxzw +dp3 r8.w, r21.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +max r11.w, r8.w, l(0.001000) +div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w +mul r8.w, r8.w, r11.w +max r8.w, r8.w, l(0.000000) +min r8.w, r8.w, l(1.500000) +mad r21.xyz, r21.xyzx, r8.wwww, -r20.xzwx +mad r20.xzw, r10.zzzz, r21.xxyz, r20.xxzw +mad r8.w, -r14.w, r15.w, r17.w +mad r8.w, r10.z, r8.w, r18.w +add r11.w, l(1.000000), -cb0[186].z +mad r11.w, r8.w, r11.w, cb0[186].z +add r14.w, r14.y, l(-0.500000) +mad r21.y, r10.z, r14.w, l(0.500000) +dp3_sat r23.x, r3.xywx, r2.xyzx +mov r21.xz, cb0[6].xxzx +dp3 r14.w, r21.xyzx, r21.xyzx +max r14.w, r14.w, l(1.175494351E-38) +rsq r14.w, r14.w +mul r21.xyz, r14.wwww, r21.xyzx +add r21.xyz, r21.xyzx, r21.xyzx +mad r14.xyz, r14.xyzx, r10.zzzz, r21.xyzx +add r14.w, r10.z, l(2.000000) +mad r14.xyz, r2.xyzx, r14.wwww, r14.xyzx +dp3 r14.w, r14.xyzx, r14.xyzx +rsq r14.w, r14.w +mul r14.xyz, r14.wwww, r14.xyzx +dp3 r14.x, r3.xywx, r14.xyzx +mul r14.y, r5.y, r5.y +mad r14.z, r14.x, r14.y, -r14.x +mad r14.x, r14.z, r14.x, l(1.000000) +mul r14.x, r14.x, r14.x +add r14.z, l(1.000000), -cb5[1].z +mad r14.z, r4.w, cb5[1].z, r14.z +mul r21.xyz, r19.xyzx, r20.xzwx +ne r14.w, r14.x, r14.y +div r14.x, r14.y, r14.x +movc r14.x, r14.w, r14.x, l(1.000000) +mad r14.y, r23.x, l(2.000000), r5.y +add r14.y, r14.y, l(0.000100) +div r14.y, l(0.500000), r14.y +mad r14.x, r14.x, r14.y, l(-0.0000610351562) +max r14.x, r14.x, l(0.000000) +min r14.x, r14.x, l(20.000000) +mul r14.xyw, r13.xyxz, r14.xxxx +mad r8.w, r8.w, l(0.500000), l(0.500000) +mul r8.w, r11.w, r8.w +mul r19.xyz, r8.wwww, r19.xyzx +mul r14.xyw, r14.xyxw, r19.xyxz +mul r14.xyw, r14.xyxw, cb0[199].wwww +mad r14.xyw, r21.xyxz, r14.zzzz, r14.xyxw +dp3 r8.w, r14.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r15.w, r8.w, l(-0.500000) +max r15.w, r15.w, l(0.000000) +min r15.w, r15.w, l(0.500000) +mov r19.y, l(0) +mov r19.xz, cb0[195].yyxy +mul r21.xyz, r19.xyzx, cb0[6].zxyz +mad r19.xyz, cb0[6].yzxy, r19.yzxy, -r21.xyzx +dp3 r17.w, r19.xyzx, r19.xyzx +rsq r17.w, r17.w +mul r19.xyz, r17.wwww, r19.xyzx +dp3 r17.w, r2.xyzx, r7.xyzx +add r21.xy, -|r17.wwww|, l(1.000000, 0.399999976, 0.000000, 0.000000) +dp3 r17.x, r17.xyzx, r7.xyzx +add r17.y, -r10.z, l(1.000000) +add r9.w, -r3.z, r9.w +mad r2.w, r2.w, r9.w, r3.z +mul r25.y, r2.w, r2.w +mul r26.x, r23.x, r23.x +mul r26.z, r23.x, r26.x +mul r9.w, r25.y, r25.y +mul r25.z, r25.y, r9.w +mov r23.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r24.x, l(3.327070, 1.000000, 0.000000, 0.000000), r23.xyxx +dp2 r24.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r23.xzxx +mov r25.x, l(1.000000) +dp2 r9.w, r24.xyxx, r25.xyxx +mov r26.yw, l(0,9.044010,0,1.000000) +dp3 r27.x, l(3.596850, -1.367720, 1.000000, 0.000000), r26.xzwx +dp3 r27.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r26.xyzx +mov r28.x, l(5.565890) +mov r28.yz, r26.xxzx +dp3 r27.z, l(1.000000, 19.788601, -20.212299, 0.000000), r28.xyzx +dp3 r17.z, r27.xyzx, r25.xyzx +div r9.w, r9.w, r17.z +dp2 r24.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r23.xwxx +mov r26.x, l(1.296780) +mov r26.y, r23.x +dp2 r24.y, l(1.000000, -0.755907, 0.000000, 0.000000), r26.xyxx +dp2 r17.z, r24.xyxx, r25.xyxx +dp3 r27.x, l(2.923380, 59.418800, 1.000000, 0.000000), r26.yzwy +mov r26.xw, l(20.322500,0,0,121.563004) +dp3 r27.y, l(1.000000, -27.030199, 222.591995, 0.000000), r26.xyzx +dp3 r27.z, l(626.130005, 316.627014, 1.000000, 0.000000), r26.yzwy +dp3 r18.w, r27.xyzx, r25.xyzx +div r17.z, r17.z, r18.w +mad r22.yzw, r13.xxyz, r9.wwww, r17.zzzz +add r9.w, r9.w, r17.z +mad r15.w, r15.w, r15.w, l(1.000000) +add r14.xyw, -r8.wwww, r14.xyxw +mad r14.xyw, r15.wwww, r14.xyxw, r8.wwww +mad r21.zw, cb0[195].wwww, l(0.000000, 0.000000, -0.600000, -0.399999976), l(0.000000, 0.000000, 0.800000, 0.900000) +add r8.w, -r21.z, r21.w +add r15.w, -r21.z, r21.x +div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w +mul_sat r8.w, r8.w, r15.w +mad r15.w, r8.w, l(-2.000000), l(3.000000) +mul r8.w, r8.w, r8.w +mul r8.w, r8.w, r15.w +mul r23.yzw, r8.wwww, cb0[194].xxyz +mul r23.yzw, r23.yyzw, cb0[194].wwww +dp3 r8.w, r8.xyzx, r19.xyzx +add_sat r8.w, r8.w, l(1.000000) +min r5.z, r5.z, r8.w +min r5.z, r20.y, r5.z +mul r23.yzw, r5.zzzz, r23.yyzw +mad r24.xyw, r4.xyxz, r6.wwww, l(-0.250000, -0.250000, 0.000000, -0.250000) +mad r24.xyw, cb0[195].zzzz, r24.xyxw, l(0.250000, 0.250000, 0.000000, 0.250000) +dp3_sat r5.z, r19.xyzx, r7.xyzx +mul r19.xyz, r5.zzzz, r24.xywx +max r5.z, r15.y, r15.x +max r5.z, r15.z, r5.z +mul r5.z, r5.z, l(0.500000) +max r5.z, r5.z, l(1.000000) +div r5.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z +mul r15.xyz, r5.zzzz, r15.xyzx +mad r18.xyz, r18.xyzx, r5.wwww, -r15.xyzx +mad r15.xyz, r10.zzzz, r18.xyzx, r15.xyzx +dp3 r5.z, r16.xyzx, r7.xyzx +mul r5.w, r7.w, r5.z +mad r8.w, r17.x, l(0.500000), l(-1.000000) +mad r8.w, -r17.x, r8.w, l(0.500000) +mad r5.z, -r5.z, r7.w, r8.w +mad_sat r5.z, r10.z, r5.z, r5.w +mul r15.xyz, r5.zzzz, r15.xyzx +mad r5.z, r13.w, r10.z, r17.y +mul r5.z, r22.x, r5.z +mul r15.xyz, r5.zzzz, r15.xyzx +mul_sat r5.z, r21.y, l(5.00000048) +mad r5.w, r5.z, l(-2.000000), l(3.000000) +mul r5.z, r5.z, r5.z +mul r5.z, r5.z, r5.w +mul r15.xyz, r5.zzzz, r15.xyzx +mul r15.xyz, r16.wwww, r15.xyzx +add r5.z, r12.w, l(-0.100000) +mul_sat r5.z, r5.z, l(-16.666666) +mad r5.w, r5.z, l(-2.000000), l(3.000000) +mul r5.z, r5.z, r5.z +mul r5.z, r5.z, r5.w +mad r5.z, r5.z, r10.z, r17.y +mul r15.xyz, r5.zzzz, r15.xyzx +max r16.xyz, r11.xyzx, l(0.150000, 0.150000, 0.150000, 0.000000) +mul r15.xyz, r15.xyzx, r16.xyzx +mad r15.xyz, r23.yzwy, r19.xyzx, r15.xyzx +add r14.xyw, r14.xyxw, r15.xyxz +utof r5.zw, r10.xxxy +mul r15.xy, r5.zwzz, l(0.031250, 0.031250, 0.000000, 0.000000) +round_ni r15.xy, r15.xyxx +mad r7.w, r15.y, cb2[1].y, r15.x +mul r7.w, r7.w, l(8.000000) +ftoi r7.w, r7.w +mad r8.w, -cb0[85].y, cb2[2].w, v0.w +round_ni r8.w, r8.w +add r10.z, l(-1.000000), cb2[1].w +max r12.w, r8.w, l(0.000000) +min r10.z, r10.z, r12.w +mul r12.w, r10.z, l(8.000000) +ftoi r12.w, r12.w +dp3 r13.w, -r2.xyzx, r3.xywx +add r13.w, r13.w, r13.w +mad r15.xyz, r3.xywx, -r13.wwww, -r2.xyzx +max r2.w, r2.w, l(0.001000) +log r2.w, r2.w +mad r2.w, r2.w, l(1.200000), l(5.000000) +sample_l_indexable(texturecube)(float,float,float,float) r15.xyz, r15.xyzx, t15.xyzw, s0, r2.w +add r2.w, -r9.w, l(1.000000) +div r2.w, r2.w, r9.w +mul r16.xyz, r2.wwww, r13.xyzx +mad r16.xyz, r16.xyzx, r22.yzwy, r22.yzwy +mul r15.xyz, r15.xyzx, r16.xyzx +mul r2.w, r24.z, cb0[186].w +mul r2.w, r11.w, r2.w +mul r15.xyz, r2.wwww, r15.xyzx +mad r12.xyz, r15.xyzx, r12.xyzx, r14.xywx +ge r2.w, r10.z, r8.w +iadd r8.w, r12.w, cb0[110].y +mad r9.w, r17.y, l(-0.250000), l(0.750000) +mad r4.xyz, r4.xyzx, r6.wwww, l(-0.500000, -0.500000, -0.500000, 0.000000) +add r6.w, -r5.y, l(0.010000) +ge r5.x, r5.x, l(0.500000) +and r5.x, r5.x, l(0x3f800000) +mov r15.w, l(1.000000) +mov r14.xyw, r12.xyxz +mov r10.z, l(0) +loop + ilt r11.w, l(7), r10.z + breakc_nz r11.w + iadd r11.w, r7.w, r10.z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx + iadd r12.w, r8.w, r10.z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx + and r11.w, r11.w, r12.w + and r11.w, r2.w, r11.w + ishl r12.w, r10.z, l(5) + mov r16.xyz, r14.xywx + mov r13.w, r11.w + loop + breakc_z r13.w + firstbit_lo r16.w, r13.w + ishl r17.x, l(1), r16.w + xor r17.x, r13.w, r17.x + iadd r16.w, r12.w, r16.w + bfi r18.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 5, 6, 7) + ftou r17.y, cb3[r18.y + 6].w + ieq r17.y, r17.y, l(1) + if_nz r17.y + add r15.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx + and r19.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r18.y + 6].xzyx + and r21.yzw, l(0, 0x0000ffff, 0x0000ffff, 0x0000ffff), cb3[r18.z + 6].yyxz + ushr r22.xyz, cb3[r18.y + 6].xzyx, l(16, 16, 16, 0) + ushr r23.yzw, cb3[r18.z + 6].yyxz, l(0, 16, 16, 16) + f16tof32 r19.xyz, r19.xyzx + f16tof32 r21.yzw, r21.yyzw + f16tof32 r22.xyz, r22.xyzx + f16tof32 r24.xyw, r23.zyzw + mov r25.xz, r19.xxzx + mov r25.yw, r22.xxxz + dp4 r17.y, r15.xyzw, r25.xyzw + mov r22.x, r19.y + mov r22.z, r21.z + mov r22.w, r24.x + dp4 r17.z, r15.xyzw, r22.xyzw + mov r24.xz, r21.yywy + dp4 r15.x, r15.xyzw, r24.xyzw + max r15.y, |r17.z|, |r17.y| + max r15.x, |r15.x|, r15.y + mad r15.y, cb3[r18.w + 6].x, l(0.500000), l(0.500000) + add r15.x, -r15.y, r15.x + mad r15.y, -cb3[r18.w + 6].x, l(0.500000), l(0.500000) + div_sat r15.x, r15.x, r15.y + add r15.x, -r15.x, l(1.000000) + mul r15.x, r15.x, r15.x + else + mov r15.x, l(1.000000) + endif + lt r15.y, r15.x, l(0.001000) + if_nz r15.y + mov r13.w, r17.x + continue + endif + ishl r15.y, r16.w, l(3) + lt r15.z, cb3[r15.y + 6].w, l(1.500000) + if_nz r15.z + bfi r15.z, l(29), l(3), r16.w, l(3) + ieq r17.y, l(16), cb3[r15.z + 6].w + add r17.z, cb0[198].z, cb3[r15.z + 6].z + lt r17.z, r17.z, l(0.500000) + or r17.y, r17.z, r17.y + if_z r17.y + bfi r17.yz, l(0, 29, 29, 0), l(0, 3, 3, 0), r16.wwww, l(0, 2, 4, 0) + ftou r16.w, cb3[r15.y + 6].w + and r16.w, r16.w, l(1) + ieq r18.y, r16.w, l(0) + not r18.y, r18.y + lt r19.x, l(0.000000), cb3[r17.y + 6].z + and r18.y, r18.y, r19.x + ieq r19.x, l(4), cb3[r15.z + 6].w + movc r19.y, r16.w, l(0), l(1.000000) + mad r19.z, cb3[r17.y + 6].y, l(0.500000), l(0.500000) + add r22.z, r19.z, -|cb3[r17.y + 6].x| + add r22.x, -r22.z, cb3[r17.y + 6].y + add r19.z, -|r22.z|, l(1.000000) + add r19.z, -|r22.x|, r19.z + max r19.z, r19.z, l(0.000488281250) + ge r19.w, cb3[r17.y + 6].x, l(0.000000) + movc r22.y, r19.w, r19.z, -r19.z + dp3 r19.z, r22.xyzx, r22.xyzx + rsq r19.z, r19.z + mul r21.yzw, r19.zzzz, r22.xxyz + add r19.z, cb3[r17.z + 6].y, cb3[r17.z + 6].y + max r19.z, r19.z, l(0.100000) + and r19.w, r19.x, l(0x3f800000) + add r19.z, r19.z, -cb3[r18.z + 6].w + mad r18.z, r19.w, r19.z, cb3[r18.z + 6].w + add r22.xyz, -v2.xyzx, cb3[r18.x + 6].xyzx + dp3 r19.z, r22.yzxy, -r21.yzwy + lt r19.w, l(0.500000), cb3[r17.z + 6].z + and r19.w, r19.w, r19.x + and r19.w, r19.w, l(0x3f800000) + mul r19.w, r19.y, r19.w + mad r23.yzw, -r21.wwyz, r19.zzzz, -r22.xxyz + mad r22.xyz, r19.wwww, r23.yzwy, r22.xyzx + dp3 r19.z, r22.xyzx, r22.xyzx + rsq r19.w, r19.z + mul r23.yzw, r19.wwww, r22.xxyz + if_nz r18.y + mul r24.xyz, r21.wyzw, cb3[r17.y + 6].zzzz + mad r25.xyz, -r24.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r22.xyzx + mad r24.xyz, r24.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r22.xyzx + dp3 r19.w, r25.xyzx, r25.xyzx + sqrt r19.w, r19.w + dp3 r20.y, r24.xyzx, r24.xyzx + sqrt r20.y, r20.y + mul r26.xyz, r21.yzwy, r23.yzwy + mad r26.xyz, r21.wyzw, r23.zwyz, -r26.xyzx + mul r27.xyz, r21.yzwy, r26.xyzx + mad r26.xyz, r26.zxyz, r21.zwyz, -r27.xyzx + dp3 r22.w, r26.xyzx, r26.xyzx + rsq r22.w, r22.w + mul r23.yzw, r22.wwww, r26.xxyz + dp3 r22.w, r25.xyzx, r24.xyzx + mad r22.w, r19.w, r20.y, r22.w + mad r22.w, r22.w, l(0.500000), l(1.000000) + div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w + dp3 r24.w, r23.yzwy, r25.xyzx + div r19.w, r24.w, r19.w + dp3 r24.x, r23.yzwy, r24.xyzx + div r20.y, r24.x, r20.y + add r19.w, r19.w, r20.y + mul_sat r19.w, r19.w, l(0.500000) + mul r19.w, r19.w, r22.w + else + mov r19.w, l(1.000000) + endif + lt r20.y, r18.z, l(0.000000) + if_nz r20.y + mul r20.y, cb3[r18.x + 6].w, cb3[r18.x + 6].w + mul r20.y, r19.z, r20.y + mad r20.y, -r20.y, r20.y, l(1.000000) + max r20.y, r20.y, l(0.000000) + add r19.z, r19.z, l(1.000000) + div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z + and r22.w, r18.y, l(0x3f800000) + add r24.x, -r19.z, r19.w + mad r19.z, r22.w, r24.x, r19.z + mul r20.y, r20.y, r20.y + mul r19.z, r19.z, r20.y + else + mul r24.xyz, r22.xyzx, cb3[r18.x + 6].wwww + dp3 r20.y, r24.xyzx, r24.xyzx + min r20.y, r20.y, l(1.000000) + add r20.y, -r20.y, l(1.000000) + log r20.y, r20.y + mul r18.z, r18.z, r20.y + exp r18.z, r18.z + mul r19.z, r18.z, r19.w + endif + dp3 r18.z, r23.zwyz, -r21.yzwy + add r18.z, r18.z, -cb3[r17.y + 6].z + mul_sat r18.z, r18.z, cb3[r17.y + 6].w + mad r18.z, r18.z, r18.z, l(-1.000000) + mad r18.z, r19.y, r18.z, l(1.000000) + mul r18.z, r18.z, r19.z + ftoi r19.y, cb3[r18.w + 6].w + not r18.y, r18.y + ige r19.z, r19.y, l(0) + and r18.y, r18.y, r19.z + if_nz r18.y + if_z r16.w + ishl r18.y, r19.y, l(2) + mul r21.yzw, v2.yyyy, cb6[r18.y + 33].xxyw + mad r21.yzw, cb6[r18.y + 32].xxyw, v2.xxxx, r21.yyzw + mad r21.yzw, cb6[r18.y + 34].xxyw, v2.zzzz, r21.yyzw + add r21.yzw, r21.yyzw, cb6[r18.y + 35].xxyw + div_sat r19.zw, r21.yyyz, r21.wwww + mad r19.zw, r19.zzzw, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy + else + ishl r18.y, r19.y, l(2) + dp3 r24.x, -r22.xyzx, cb6[r18.y + 32].xyzx + dp3 r24.y, -r22.xyzx, cb6[r18.y + 33].xyzx + dp3 r24.z, -r22.xyzx, cb6[r18.y + 34].xyzx + lt r18.y, |r24.x|, |r24.y| + and r18.y, r18.y, l(1) + dp2 r20.y, |r24.xyxx|, icb[r18.y + 0].xyxx + lt r20.y, r20.y, |r24.z| + movc r18.y, r20.y, l(2), r18.y + dp3 r20.y, r24.xyzx, icb[r18.y + 0].xyzx + lt r20.y, r20.y, l(0.000000) + bfi r18.y, l(31), l(1), r18.y, r20.y + ushr r20.y, r18.y, l(1) + dp3 r20.y, r24.xyzx, icb[r20.y + 0].xyzx + div r21.y, l(0.000244140625), cb6[r19.y + 0].w + add r21.y, -r21.y, l(0.500000) + utof r21.z, r18.y + ult r21.w, r18.y, l(2) + and r21.w, r21.w, l(2) + dp2 r21.w, r24.xzxx, icb[r21.w + 0].xzxx + mul r21.w, r21.w, icb[r18.y + 4].z + div r21.w, r21.w, |r20.y| + mad r21.z, r21.w, r21.y, r21.z + add r21.z, r21.z, l(0.500000) + mul_sat r22.x, r21.z, l(0.166666672) + iadd r21.z, l(-1), icb[r18.y + 4].y + dp2 r21.z, r24.yzyy, icb[r21.z + 0].xyxx + mul r18.y, r21.z, icb[r18.y + 4].w + div r18.y, r18.y, |r20.y| + mad_sat r22.y, -r18.y, r21.y, l(0.500000) + mad r19.zw, r22.xxxy, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy + endif + sample_l_indexable(texture2d)(float,float,float,float) r18.y, r19.zwzz, t16.yxzw, s0, l(0.000000) + mul r18.z, r18.y, r18.z + endif + mul r15.x, r15.x, r18.z + lt r18.y, l(0.000100), r15.x + if_nz r18.y + if_nz r19.x + add r18.y, l(1.000000), -cb3[r17.z + 6].w + dp3 r18.z, r9.xyzx, r23.yzwy + add_sat r18.z, r18.z, l(0.500000) + mad r19.y, r18.z, l(-2.000000), l(3.000000) + mul r18.z, r18.z, r18.z + mul r18.z, r18.z, r19.y + mad r18.y, r18.z, cb3[r17.z + 6].w, r18.y + mul r18.y, r18.y, cb3[r17.z + 6].x + mul r18.y, r15.x, r18.y + add r19.yzw, -r16.xxyz, cb3[r15.y + 6].xxyz + mad r19.yzw, r18.yyyy, r19.yyzw, r16.xxyz + endif + if_z r19.x + dp3 r18.y, r7.xyzx, r23.yzwy + mov_sat r18.z, r18.y + if_nz cb3[r15.z + 6].w + if_z r16.w + ftoi r16.w, cb3[r15.z + 6].x + else + add r21.yzw, v2.xxyz, -cb3[r18.x + 6].xxyz + lt r22.xyz, |r21.zwwz|, |r21.yyzy| + and r20.y, r22.y, r22.x + lt r21.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r21.yyzw + ushr r22.x, cb3[r17.y + 6].w, l(24) + ubfe r22.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb3[r17.y + 6].wwww + movc r21.y, r21.y, r22.x, r22.y + and r17.y, l(255), cb3[r17.y + 6].w + movc r17.y, r21.z, r22.w, r17.y + ubfe r21.z, l(8), l(8), cb3[r15.z + 6].x + and r22.x, l(255), cb3[r15.z + 6].x + movc r21.z, r21.w, r21.z, r22.x + movc r17.y, r22.z, r17.y, r21.z + movc r17.y, r20.y, r21.y, r17.y + ilt r20.y, r17.y, l(80) + movc r16.w, r20.y, r17.y, l(-1) + endif + ige r17.y, r16.w, l(0) + if_nz r17.y + add r21.yzw, v2.xxyz, -cb3[r18.x + 6].xxyz + ishl r17.y, r16.w, l(2) + dp3 r18.x, r21.yzwy, r21.yzwy + max r18.x, r18.x, l(1.175494351E-38) + rsq r18.x, r18.x + mul r21.yzw, r18.xxxx, r21.yyzw + mad r21.yzw, -r21.yyzw, cb4[r16.w + 288].xxxx, v2.xxyz + mul r18.x, l(5.000000), cb4[r16.w + 288].y + mad r21.yzw, r9.xxyz, r18.xxxx, r21.yyzw + mul r22.xyzw, r21.zzzz, cb4[r17.y + 65].xyzw + mad r22.xyzw, cb4[r17.y + 64].xyzw, r21.yyyy, r22.xyzw + mad r22.xyzw, cb4[r17.y + 66].xyzw, r21.wwww, r22.xyzw + add r22.xyzw, r22.xyzw, cb4[r17.y + 67].xyzw + div r21.yzw, r22.xxyz, r22.wwww + ge r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.yzwy + ge r24.xyz, r21.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) + add r25.xy, -cb4[r16.w + 344].xyxx, cb4[r16.w + 344].zwzz + mad r21.yz, r21.yyzy, r25.xxyx, cb4[r16.w + 344].xxyx + mad r25.xy, r21.yzyy, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r25.xy, r25.xyxx + mad r21.yz, r21.yyzy, cb4[400].zzwz, -r25.xxyx + add r26.xyzw, r21.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r25.zw, -r21.yyyz, l(0.000000, 0.000000, 1.000000, 1.000000) + min r26.xz, r21.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r21.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r21.yz, r27.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r21.yyzy + mul r30.xy, r21.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r21.yz, -r26.xxzx, r26.xxzx, r25.zzwz + add r21.yz, r21.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r31.xy, r21.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r21.yz, r26.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r30.z, r31.x + mov r30.w, r21.y + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r21.z + mov r28.z, r29.y + mov r28.w, r27.z + add r27.xyz, r28.zywz, r31.zywz + div r29.xyz, r29.xzwx, r26.zwyz + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.yxzy, cb4[400].xxxx + div r28.xyz, r28.zywz, r27.xyzx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb4[400].yyyy + mov r29.w, r28.x + mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r29.ywxw + mad r21.yz, r25.xxyx, cb4[400].xxyx, r29.zzwz + mov r28.w, r29.y + mov r29.yw, r28.yyyz + mad r31.xyzw, r25.xyxy, cb4[400].xyxy, r29.xyzy + mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz + mad r25.xyzw, r25.xyxy, cb4[400].xyxy, r29.xwzw + mul r29.xyzw, r26.zwyz, r27.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r30.xyxx, t2.xxxx, s2, r21.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.zwzz, t2.xxxx, s2, r21.w + mul r18.x, r18.x, r29.y + mad r17.y, r29.x, r17.y, r18.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r21.yzyy, t2.xxxx, s2, r21.w + mad r17.y, r29.z, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.xyxx, t2.xxxx, s2, r21.w + mad r17.y, r29.w, r18.x, r17.y + mul r29.xyzw, r26.xyzw, r27.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r31.xyxx, t2.xxxx, s2, r21.w + mad r17.y, r29.x, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r31.zwzz, t2.xxxx, s2, r21.w + mad r17.y, r29.y, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.zwzz, t2.xxxx, s2, r21.w + mad r17.y, r29.z, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r25.xyxx, t2.xxxx, s2, r21.w + mad r17.y, r29.w, r18.x, r17.y + or r22.xyz, r22.xyzx, r24.xyzx + or r18.x, r22.y, r22.x + or r18.x, r22.z, r18.x + and r20.y, r21.w, l(0x7fffffff) + ult r20.y, l(0x7f800000), r20.y + or r18.x, r18.x, r20.y + mul r20.y, r26.y, r27.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.y, r25.zwzz, t2.xxxx, s2, r21.w + mad r17.y, r20.y, r21.y, r17.y + add r17.y, r17.y, l(-1.000000) + mad r16.w, cb4[r16.w + 288].w, r17.y, l(1.000000) + movc r16.w, r18.x, l(1.000000), r16.w + else + dp3 r17.y, r8.xyzx, r23.yzwy + add_sat r16.w, r17.y, l(1.000000) + endif + else + mov r16.w, l(1.000000) + endif + if_z cb3[r15.z + 6].w + mul r21.yzw, r15.xxxx, cb3[r15.y + 6].xxyz + add r17.y, l(1.000000), -cb3[r17.z + 6].y + max r18.x, r21.z, r21.y + max r18.x, r21.w, r18.x + mul r18.x, r9.w, r18.x + max r18.x, r18.x, l(1.000000) + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x + mad r17.y, r18.x, cb3[r17.z + 6].y, r17.y + mul r21.yzw, r17.yyyy, cb3[r15.y + 6].xxyz + mul r17.y, l(0.250000), cb3[r17.z + 6].x + add_sat r18.x, r18.y, l(0.500000) + mad r20.y, -cb3[r17.z + 6].x, l(0.250000), l(1.000000) + mad r17.y, r18.x, r20.y, r17.y + mul r21.yzw, r17.yyyy, r21.yyzw + mov r22.xyz, r20.xzwx + mov r24.xyz, r20.xzwx + mov r17.y, l(1.000000) + mov r18.x, l(0) + else + ieq r20.y, l(3), cb3[r15.z + 6].w + if_nz r20.y + mad r25.xy, cb3[r17.z + 6].xxxx, l(-0.600000, -0.399999976, 0.000000, 0.000000), l(0.800000, 0.900000, 0.000000, 0.000000) + add r20.y, -r25.x, r25.y + add r22.w, r21.x, -r25.x + div r20.y, l(1.000000, 1.000000, 1.000000, 1.000000), r20.y + mul_sat r20.y, r20.y, r22.w + mad r22.w, r20.y, l(-2.000000), l(3.000000) + mul r20.y, r20.y, r20.y + mul r20.y, r20.y, r22.w + mul r20.y, r16.w, r20.y + mul r15.x, r15.x, r20.y + mul r25.xyz, r23.wyzw, cb0[6].xyzx + mad r25.xyz, cb0[6].zxyz, r23.yzwy, -r25.xyzx + mul r26.xyz, r25.xyzx, cb0[6].zxyz + mad r25.xyz, cb0[6].yzxy, r25.yzxy, -r26.xyzx + dp3 r20.y, r25.xyzx, r25.xyzx + rsq r20.y, r20.y + mul r25.xyz, r20.yyyy, r25.xyzx + dp3_sat r18.z, r7.xyzx, -r25.xyzx + mad r22.xyz, cb3[r17.z + 6].yyyy, r4.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mov r24.xyz, l(0,0,0,0) + mov r17.y, l(1.000000) + mov r18.x, l(0) + else + ieq r20.y, l(1), cb3[r15.z + 6].w + if_nz r20.y + add r18.y, r18.y, cb3[r17.z + 6].x + max_sat r18.y, r18.y, l(-1.000000) + mul r18.z, r16.w, r18.y + mul r24.xyz, r6.xyzx, cb3[r17.z + 6].yyyy + mov r17.y, l(1.000000) + mov r18.x, l(0) + else + ieq r16.w, l(2), cb3[r15.z + 6].w + if_nz r16.w + add r18.y, l(0.050000), cb3[r17.z + 6].x + add r18.y, r3.z, -r18.y + mul_sat r18.y, r18.y, l(-10.000000) + mad r22.w, r18.y, l(-2.000000), l(3.000000) + mul r18.y, r18.y, r18.y + mul r18.y, r18.y, r22.w + add r22.w, l(1.000000), -cb3[r17.z + 6].z + mad r22.w, r5.x, cb3[r17.z + 6].z, r22.w + mul r17.y, r18.y, r22.w + else + mov r17.y, l(1.000000) + endif + and r18.x, r16.w, cb3[r17.z + 6].y + mov r24.xyz, l(0,0,0,0) + endif + and r22.xyz, r11.xyzx, r20.yyyy + endif + mov r21.yzw, cb3[r15.y + 6].xxyz + endif + ine r15.y, l(3), cb3[r15.z + 6].w + if_nz r15.y + mad r15.y, r18.x, r6.w, r5.y + mad r23.yzw, r0.xxyz, r1.wwww, r23.yyzw + dp3 r15.z, r23.yzwy, r23.yzwy + rsq r15.z, r15.z + mul r23.yzw, r15.zzzz, r23.yyzw + dp3 r15.z, r3.xywx, r23.yzwy + mul r16.w, r15.y, r15.y + mad r17.z, r15.z, r16.w, -r15.z + mad r15.z, r17.z, r15.z, l(1.000000) + mul r15.z, r15.z, r15.z + ne r17.z, r15.z, r16.w + div r15.z, r16.w, r15.z + movc r15.z, r17.z, r15.z, l(1.000000) + mad r15.y, r23.x, l(2.000000), r15.y + add r15.y, r15.y, l(0.000100) + div r15.y, l(0.500000), r15.y + mad r15.y, r15.z, r15.y, l(-0.0000610351562) + max r15.y, r15.y, l(0.000000) + min r15.y, r15.y, l(20.000000) + mul r23.yzw, r13.xxyz, r15.yyyy + mul r23.yzw, r17.yyyy, r23.yyzw + mul r18.xyw, r23.yzyw, cb3[r18.w + 6].zzzz + else + mov r18.xyw, l(0,0,0,0) + endif + mul r15.xyz, r15.xxxx, r21.yzwy + add r21.yzw, r22.xxyz, -r24.xxyz + mad r21.yzw, r18.zzzz, r21.yyzw, r24.xxyz + mul r21.yzw, r15.xxyz, r21.yyzw + mul r15.xyz, r18.xywx, r15.xyzx + mul r15.xyz, r18.zzzz, r15.xyzx + mad r15.xyz, r21.yzwy, r14.zzzz, r15.xyzx + add r16.xyz, r15.xyzx, r16.xyzx + endif + else + mov r19.x, l(0) + endif + movc r16.xyz, r19.xxxx, r19.yzwy, r16.xyzx + endif + endif + mov r13.w, r17.x + endloop + mov r14.xyw, r16.xyxz + iadd r10.z, r10.z, l(1) +endloop +lt r0.x, l(0.500000), cb5[3].x +if_nz r0.x + dp3 r0.x, r14.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r3.xyz, -r0.xxxx, r14.xywx + mad r0.xyz, cb5[3].zzzz, r3.xyzx, r0.xxxx + add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) + mad r0.xyz, cb5[3].wwww, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mul r3.xyz, r0.xyzx, cb5[3].yyyy + mad r0.xyz, -r0.xyzx, cb5[3].yyyy, cb5[7].xyzx + mad r0.xyz, cb5[7].wwww, r0.xyzx, r3.xyzx + add r2.w, l(1.000000), -cb5[4].x + mov_sat r17.w, r17.w + add r3.x, -r17.w, l(1.000000) + add r3.y, -r2.w, l(1.000000) + add r2.w, -r2.w, r3.x + div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y + mul_sat r2.w, r2.w, r3.x + mad r3.x, r2.w, l(-2.000000), l(3.000000) + mul r2.w, r2.w, r2.w + mul r2.w, r2.w, r3.x + mul r3.xyz, r2.wwww, cb5[8].xyzx + mad r14.xyw, r3.xyxz, cb5[4].yyyy, r0.xyxz +endif +div r0.xyz, r14.xywx, cb0[109].xxxx +eq r2.w, l(1.000000), cb5[2].x +movc o0.w, r2.w, r4.w, l(1.000000) +lt r2.w, cb0[198].w, l(0.500000) +if_nz r2.w + mul r0.w, r0.w, r1.w + mad r1.w, v2.y, cb0[156].w, cb0[157].w + max r1.w, r1.w, l(0.010000) + mad r2.w, r0.w, cb0[154].w, -cb0[153].w + max r2.w, r2.w, l(0.000000) + mul r3.x, r1.w, l(-1.442695) + exp r3.x, r3.x + add r3.x, -r3.x, l(1.000000) + div r1.w, r3.x, r1.w + mad r3.x, v2.y, cb0[156].w, cb0[158].w + mul r3.x, r3.x, l(1.442695) + exp r3.x, r3.x + mul r1.w, r1.w, r3.x + mul r1.w, r1.w, -r2.w + mul r3.xyz, r1.wwww, cb0[155].xyzx + mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) + exp r3.xyz, r3.xyzx + dp3 r1.w, -r2.xyzx, cb0[154].xyzx + mad r2.w, cb0[155].w, cb0[155].w, l(1.000000) + dp2 r3.w, r1.wwww, cb0[155].wwww + add r2.w, r2.w, -r3.w + lt r3.w, l(0.000000), cb0[163].z + if_nz r3.w + and r10.w, l(7), cb0[108].w + imad r4.xyz, r10.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r3.w, r4.y, r4.z, r4.x + imad r4.x, r4.z, r3.w, r4.y + imad r4.y, r3.w, r4.x, r4.z + imad r5.x, r4.x, r4.y, r3.w + dp3 r1.x, -r2.xyzx, -r1.xyzx + add r1.y, v2.y, -cb0[44].y + lt r1.z, l(5.960464478E-08), r1.x + div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x + and r1.x, r1.x, r1.z + mul r1.x, r1.x, cb0[163].w + div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w + mul r2.x, r1.z, r1.x + mad r2.y, r2.x, r1.y, cb0[44].y + mad r1.y, -r2.x, r1.y, r1.y + mul r2.x, r1.y, cb0[159].z + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r2.z, r2.y, -cb0[159].x + mul r2.z, r2.z, cb0[159].z + max r2.xz, r2.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + exp r2.z, -r2.z + mul r2.z, r2.z, cb0[159].y + lt r3.w, l(5.960464478E-08), |r2.x| + exp r4.z, -r2.x + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r2.x + mad r2.x, -r2.x, l(0.240226507), l(0.693147182) + movc r2.x, r3.w, r4.z, r2.x + add r2.y, r2.y, -cb0[162].z + mul r2.y, r2.y, cb0[162].x + max r2.y, r2.y, l(-127.000000) + exp r2.y, -r2.y + mul r2.y, r2.y, cb0[162].y + lt r3.w, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r3.w, r4.z, r1.y + mul r1.y, r1.y, r2.y + mad r1.y, r2.z, r2.x, r1.y + mad r1.x, -r1.x, r1.z, l(1.000000) + mul r1.x, r0.w, r1.x + mul r1.x, r1.x, r1.y + exp r1.x, -r1.x + min r1.x, r1.x, l(1.000000) + max r1.x, r1.x, cb0[161].w + mad_sat r1.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx + add r1.x, r1.y, r1.x + add r1.x, r1.z, r1.x + min r1.x, r1.x, l(1.000000) + imad r5.y, r4.y, r5.x, r4.x + ushr r1.yz, r5.xxyx, l(0, 16, 16, 0) + utof r1.yz, r1.yyzy + mad r1.yz, r1.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + mad r1.yz, r1.yyzy, cb0[167].wwww, r5.zzwz + mul r2.xy, r1.yzyy, cb0[165].xyxx + mad r1.y, v0.w, cb0[164].x, cb0[164].y + log r1.y, r1.y + mul r1.y, r1.y, cb0[164].z + div r2.z, r1.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t17.xyzw, s0, l(0.000000) + add r1.y, v0.w, -cb0[166].z + mul_sat r1.y, r1.y, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r1.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.xyz, r1.yyyy, cb0[161].xyzx + mad r2.xyz, r2.xyzx, r4.wwww, r4.xyzx + mul r1.x, r1.x, r4.w + else + add r1.y, v2.y, -cb0[44].y + mul r1.z, r1.y, cb0[159].z + mul r1.y, r1.y, cb0[162].x + max r1.yz, r1.yyzy, l(0.000000, -127.000000, -127.000000, 0.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r1.z| + exp r4.y, -r1.z + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r1.z + mad r1.z, -r1.z, l(0.240226507), l(0.693147182) + movc r1.z, r4.x, r4.y, r1.z + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.y, r4.z, r1.y + mul r1.y, r1.y, r4.x + mad r1.y, r3.w, r1.z, r1.y + mul r1.y, r0.w, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.w, r1.y, r4.x + add r0.w, r4.y, r0.w + min r1.x, r0.w, l(1.000000) + add r0.w, -r1.x, l(1.000000) + mul r2.xyz, r0.wwww, cb0[161].xyzx + endif + mul r4.xyz, r1.xxxx, r3.xyzx + mad r0.w, r1.w, r1.w, l(1.000000) + mul r0.w, r0.w, l(0.0596831031) + mad r1.yzw, cb0[156].xxyz, r0.wwww, cb0[158].xxyz + mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) + mul r3.w, r2.w, l(12.566371) + sqrt r2.w, r2.w + mul r2.w, r2.w, r3.w + max r2.w, r2.w, l(0.001000) + div r0.w, r0.w, r2.w + mad_sat r1.yzw, cb0[157].xxyz, r0.wwww, r1.yyzw + mul r1.yzw, r1.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) + add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r1.yzw, r1.yyzw, r3.xxyz + mad r1.xyz, r1.yzwy, r1.xxxx, r2.xyzx + +// === Simplified Fog Modification (Anti-Banding) === +// Check if fog modification is enabled via cb13[12].y +lt r15.x, l(0.500000), cb13[12].y +if_nz r15.x + // r0.xyz = scene color (normalized), r4.xyz = transmittance, r1.xyz = fog inscatter (0-255 range mixed) + // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density + add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + + // Reduce fog inscatter intensity (r1 already in 0-255 mixed range, scale down) + mul r16.xyz, r1.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + + // Modified fog blend: scene * boostedTrans + reducedInscatter + mad o0.xyz, r0.xyzx, r15.xyzx, r16.xyzx +else + // Original fog blend + mad o0.xyz, r0.xyzx, r4.xyzx, r1.xyzx +endif +// === End Fog Modification === +else + mov o0.xyz, r0.xyzx +endif +mov o1.z, l(1.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x5468822B.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x5468822B.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..670f707814 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x5468822B.ps_5_0_original_backup.asm @@ -0,0 +1,1840 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 13:55:07 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy w +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 xyz 2 NONE float xyz +// TEXCOORD 2 xyz 3 NONE float xyz +// TEXCOORD 3 xyzw 4 NONE float xyzw +// TEXCOORD 4 xyz 5 NONE float xyz +// TEXCOORD 5 xyz 6 NONE float xyz +// TEXCOORD 6 xyz 7 NONE float xyz +// TEXCOORD 7 xyz 8 NONE float xyz +// TEXCOORD 8 x 9 NONE uint x +// SV_IsFrontFace 0 x 10 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[216], immediateIndexed +dcl_constantbuffer CB1[4093], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[9], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_comparison +dcl_sampler s3, mode_default +dcl_sampler s4, mode_default +dcl_sampler s5, mode_default +dcl_resource_structured t0, 4 +dcl_resource_structured t1, 16 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture3d (float,float,float,float) t4 +dcl_resource_texture3d (float,float,float,float) t5 +dcl_resource_texture3d (float,float,float,float) t6 +dcl_resource_texture3d (float,float,float,float) t7 +dcl_resource_texture3d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texturecube (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_input_ps_siv linear noperspective v0.xyw, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyz +dcl_input_ps linear v4.xyzw +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps linear v7.xyz +dcl_input_ps linear v8.xyz +dcl_input_ps constant v9.x +dcl_input_ps_sgv constant v10.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 32 +add r0.xyz, -v2.xyzx, cb0[44].xyzx +mov r1.x, cb0[0].z +mov r1.y, cb0[1].z +mov r1.z, cb0[2].z +add r2.xyz, -r0.xyzx, r1.xyzx +mad r0.xyz, cb0[86].wwww, r2.xyzx, r0.xyzx +dp3 r0.w, r0.xyzx, r0.xyzx +max r1.w, r0.w, l(9.999999939E-09) +rsq r1.w, r1.w +mul r2.xyz, r0.xyzx, r1.wwww +ishl r2.w, v9.x, l(4) +and r3.x, l(16), cb1[r2.w + 4].w +if_nz r3.x + iadd r3.x, l(2), cb1[r2.w + 5].x + ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r3.x, l(12), t1.xxxx + ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.y, cb1[r2.w + 5].x, l(12), t1.xxxx +else + mov r3.xy, cb1[r2.w + 3].zxzz +endif +sample_b_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t12.xyzw, s3, cb0[108].x +sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t13.xyzw, s4, cb0[108].x +add r3.z, -r5.w, l(1.000000) +mul r4.xyzw, r4.xyzw, cb5[5].xyzw +mul r6.xyz, r4.xyzx, cb5[4].zzzz +dp3 r3.w, r6.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r6.xyz, r4.xyzx, cb5[4].zzzz, -r3.wwww +mad r6.xyz, cb5[4].wwww, r6.xyzx, r3.wwww +sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, v1.xyxx, t14.xywz, s5, cb0[108].x +mul r7.x, r7.x, r7.z +mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r3.w, r7.xyxx, r7.xyxx +min r3.w, r3.w, l(1.000000) +add r3.w, -r3.w, l(1.000000) +sqrt r3.w, r3.w +max r3.w, r3.w, l(1.000000017E-16) +mul r7.xy, r7.xyxx, cb5[0].wwww +add r8.xz, -r3.yyxy, v2.xxzx +mov r8.y, l(0.0000610351562) +dp3 r3.x, r8.xyzx, r8.xyzx +rsq r3.x, r3.x +mul r8.xyz, r3.xxxx, r8.xyzx +mul r9.xyz, v3.zxyz, v4.yzxy +mad r9.xyz, v3.yzxy, v4.zxyz, -r9.xyzx +mul r9.xyz, r9.xyzx, v4.wwww +mul r7.yzw, r7.yyyy, r9.xxyz +mad r7.xyz, r7.xxxx, v4.xyzx, r7.yzwy +mad r3.xyw, r3.wwww, v3.xyxz, r7.xyxz +mad r6.w, cb5[1].y, l(2.000000), l(-1.000000) +movc r6.w, v10.x, l(1.000000), r6.w +dp3 r7.x, r3.xywx, r3.xywx +max r7.x, r7.x, l(1.175494351E-38) +rsq r7.x, r7.x +mul r3.xyw, r3.xyxw, r7.xxxx +mul r7.xyz, r6.wwww, r3.xywx +dp3 r8.w, v3.xyzx, v3.xyzx +rsq r8.w, r8.w +mul r9.xyz, r8.wwww, v3.xyzx +mul r9.xyz, r6.wwww, r9.xyzx +ftou r10.xy, v0.xyxx +add r8.w, l(1.000000), -cb0[111].x +mad r8.w, cb0[198].w, r8.w, cb0[111].x +mul r8.w, r8.w, cb0[109].x +lt r9.w, cb0[187].y, l(0.500000) +if_nz r9.w + mad r11.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx + add r11.xyz, -r11.xyzx, v2.xzyx + max r9.w, |r11.y|, |r11.x| + add r9.w, r9.w, l(-464.000000) + mul_sat r9.w, r9.w, l(0.031250) + add r11.x, |r11.z|, l(-208.000000) + mul_sat r11.x, r11.x, l(0.031250) + max r9.w, r9.w, r11.x + ne r11.x, l(0.000000), cb0[210].w + lt r11.y, r9.w, l(1.000000) + and r11.x, r11.y, r11.x + if_nz r11.x + mad r11.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r11.xyz, -r11.xyzx, v2.xzyx + max r11.x, |r11.y|, |r11.x| + add r11.x, r11.x, l(-29.000000) + add r11.y, |r11.z|, l(-13.000000) + mul_sat r11.xy, r11.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + max r11.x, r11.y, r11.x + lt r11.y, r11.x, l(1.000000) + if_nz r11.y + mad r11.yzw, v2.xxyz, l(0.000000, 2.000000, 2.000000, 2.000000), l(0.000000, 0.500000, 0.500000, 0.500000) + mul r12.xyz, r11.yzwy, cb0[211].xyzx + round_ni r12.xyz, r12.xyzx + mad r12.xyz, r11.yzwy, cb0[211].xyzx, -r12.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r13.xyw, r12.xyzx, t4.yzwx, s1, l(0.000000) + add r11.y, -r11.x, l(1.000000) + mul r11.z, l(0.500000), cb0[211].y + mad r11.w, -cb0[211].y, l(0.500000), l(1.000000) + max r11.z, r11.z, r12.y + min r11.z, r11.w, r11.z + mul r12.w, r11.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyzw, r12.xwzx, t5.xyzw, s0, l(0.000000) + mad r11.z, r14.w, r11.y, r9.w + add r15.xyz, r12.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s0, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r13.yyyy, r15.xyzx + mov r15.w, r13.y + mul r15.xyzw, r11.yyyy, r15.xyzw + add r12.xyz, r12.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r12.xyzx, t5.xyzw, s0, l(0.000000) + mad r12.xyz, r12.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r12.xyz, r13.xxxx, r12.xyzx + mov r12.w, r13.x + mul r12.xyzw, r11.yyyy, r12.xyzw + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r13.xyz, r13.wwww, r14.xyzx + mul r13.xyzw, r11.yyyy, r13.xyzw + else + mov r15.xyzw, l(0,0,0,0) + mov r12.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r11.z, r9.w + endif + mad r14.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r14.xyz, -r14.xyzx, v2.xzyx + max r11.y, |r14.y|, |r14.x| + add r11.y, r11.y, l(-116.000000) + add r11.w, |r14.z|, l(-52.000000) + mul_sat r11.yw, r11.yyyw, l(0.000000, 0.125000, 0.000000, 0.125000) + max r11.y, r11.w, r11.y + lt r11.w, r11.y, l(1.000000) + if_nz r11.w + mad r14.xyz, v2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r16.xyz, r14.xyzx, cb0[211].xyzx + round_ni r16.xyz, r16.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r16.xyw, r14.xyzx, t6.yzwx, s1, l(0.000000) + add r11.w, -r11.y, l(1.000000) + mul r11.x, r11.w, r11.x + mul r11.w, l(0.500000), cb0[211].y + mad r17.x, -cb0[211].y, l(0.500000), l(1.000000) + max r11.w, r11.w, r14.y + min r11.w, r17.x, r11.w + mul r14.w, r11.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r14.xwzx, t7.xyzw, s0, l(0.000000) + mad r11.z, r17.w, r11.x, r11.z + add r18.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t7.xyzw, s0, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r16.yyyy, r18.xyzx + mov r18.w, r16.y + mad r15.xyzw, r18.xyzw, r11.xxxx, r15.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t7.xyzw, s0, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r16.xxxx, r14.xyzx + mov r14.w, r16.x + mad r12.xyzw, r14.xyzw, r11.xxxx, r12.xyzw + mad r14.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r16.wwww, r14.xyzx + mad r13.xyzw, r16.xyzw, r11.xxxx, r13.xyzw + endif + lt r11.x, l(0.000000), r11.y + if_nz r11.x + mad r14.xyz, v2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r16.xyz, r14.xyzx, cb0[211].xyzx + mul r17.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r16.xyz, r16.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r16.xyzx + mad r16.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r14.xyz, r17.xyzx, r14.xyzx + min r14.xyz, r16.xyzx, r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r14.xyzx, t8.yzwx, s1, l(0.000000) + add r11.x, -r9.w, l(1.000000) + mul r11.x, r11.x, r11.y + max r11.y, r17.y, r14.y + min r11.y, r16.y, r11.y + mul r14.w, r11.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t9.xyzw, s0, l(0.000000) + add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t9.xyzw, s0, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.yyyy, r17.xyzx + mov r17.w, r18.y + mad r15.xyzw, r17.xyzw, r11.xxxx, r15.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t9.xyzw, s0, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r18.xxxx, r14.xyzx + mov r14.w, r18.x + mad r12.xyzw, r14.xyzw, r11.xxxx, r12.xyzw + mad r14.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r14.xyzx + mad r13.xyzw, r18.xyzw, r11.xxxx, r13.xyzw + mad r11.z, r16.w, r11.x, r11.z + endif + mad_sat r11.x, r11.z, l(2.000000), l(-1.000000) + add r14.x, -r9.w, r11.x + add r9.w, r9.w, r11.x + mul r14.y, r9.w, l(0.500000) + else + mov r15.xyzw, l(0,0,0,0) + mov r12.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r14.xy, l(0,1.000000,0,0) + endif + mul r11.xyzw, r14.yyyx, cb0[213].xyzw + mad r11.y, r11.w, l(0.500000), r11.y + mul r14.zw, r14.yyyx, cb0[213].wwwy + mad r11.w, r14.w, l(0.375000), r14.z + add r11.xyzw, r11.xyzw, r13.xyzw + mul r13.xyzw, r14.yyyx, cb0[214].xyzw + mad r13.y, r13.w, l(0.500000), r13.y + mul r14.zw, r14.yyyx, cb0[214].wwwy + mad r13.w, r14.w, l(0.375000), r14.z + add r12.xyzw, r12.xyzw, r13.xyzw + mul r13.xyzw, r14.yyyx, cb0[215].xyzw + mad r13.y, r13.w, l(0.500000), r13.y + mul r14.xy, r14.yxyy, cb0[215].wyww + mad r13.w, r14.y, l(0.375000), r14.x + add r13.xyzw, r13.xyzw, r15.xyzw + mov r7.w, l(1.000000) + dp4 r14.x, r11.xyzw, r7.xyzw + dp4 r14.y, r12.xyzw, r7.xyzw + dp4 r14.z, r13.xyzw, r7.xyzw + max r14.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r15.xyz, r8.wwww, r14.xyzx + mul r16.xyz, r12.xyzx, l(0.715200, 0.715200, 0.715200, 0.000000) + mad r16.xyz, r11.xyzx, l(0.212600, 0.212600, 0.212600, 0.000000), r16.xyzx + mad r16.xyz, r13.xyzx, l(0.072200, 0.072200, 0.072200, 0.000000), r16.xyzx + dp3 r7.w, r16.xyzx, r16.xyzx + max r7.w, r7.w, l(1.175494351E-38) + rsq r7.w, r7.w + mul r16.xyz, r7.wwww, r16.xyzx + mov r16.y, |r16.y| + mov r16.w, l(1.000000) + dp4 r11.x, r11.xyzw, r16.xyzw + dp4 r11.y, r12.xyzw, r16.xyzw + dp4 r11.z, r13.xyzw, r16.xyzw + max r11.xyz, r11.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + ge r7.w, r15.y, r15.z + and r7.w, r7.w, l(0x3f800000) + mov r12.xy, r15.zyzz + mov r12.zw, l(0,0,-1.000000,0.666666687) + mad r13.xy, r14.yzyy, r8.wwww, -r12.xyxx + mov r13.zw, l(0,0,1.000000,-1.000000) + mad r12.xyzw, r7.wwww, r13.xyzw, r12.xyzw + ge r7.w, r15.x, r12.x + and r7.w, r7.w, l(0x3f800000) + mov r13.xyz, r12.xywx + mov r13.w, r15.x + mov r12.xyw, r13.wywx + add r12.xyzw, -r13.xyzw, r12.xyzw + mad r12.xyzw, r7.wwww, r12.xyzw, r13.xyzw + min r7.w, r12.y, r12.w + add r7.w, -r7.w, r12.x + add r9.w, -r12.y, r12.w + mad r11.w, r7.w, l(6.000000), l(0.000100) + div r9.w, r9.w, r11.w + add r9.w, r9.w, r12.z + frc r9.w, |r9.w| + add r11.w, r12.x, l(0.000100) + div r7.w, r7.w, r11.w + add r13.xyzw, r9.wwww, l(-0.500000, 1.000000, 0.666666687, 0.333333343) + add r9.w, |r13.x|, l(-0.450000) + mul_sat r9.w, r9.w, l(-10.000001) + mad r11.w, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r11.w + mad r9.w, r9.w, l(-0.350000), l(0.700000) + mov_sat r12.x, r12.x + mul r9.w, r9.w, r12.x + min r7.w, r7.w, r9.w + add r9.w, -r7.w, l(2.000000) + div r9.w, l(2.000000), r9.w + frc r12.xyz, r13.yzwy + mad r12.xyz, r12.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) + add_sat r12.xyz, |r12.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) + add r12.xyz, r12.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) + mad r12.xyz, r7.wwww, r12.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r12.xyz, r9.wwww, r12.xyzx + max r7.w, r11.y, r11.x + max r7.w, r11.z, r7.w + mul r8.w, r8.w, r7.w + mov r7.w, l(1.000000) +else + mov r16.xyz, l(0,0,0,0) + mov r15.xyz, l(1.000000,1.000000,1.000000,0) + mov r12.xyz, cb0[188].xyzx + mov r7.w, l(0) +endif +add r9.w, -v2.y, cb1[r2.w + 12].z +add r9.w, r9.w, l(0.200000) +mul_sat r9.w, r9.w, l(2.85714269) +mad r11.x, r9.w, l(-2.000000), l(3.000000) +mul r9.w, r9.w, r9.w +mul r9.w, r9.w, r11.x +mul r9.w, r9.w, cb1[r2.w + 12].y +max r9.w, r9.w, cb1[r2.w + 12].w +add r11.x, r9.w, cb1[r2.w + 12].x +lt r11.x, l(0.010000), r11.x +if_nz r11.x + add r11.x, -r5.x, l(1.000000) + mul r11.yzw, r4.xxyz, r11.xxxx + dp3 r11.y, r11.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r11.y, r11.y, l(-0.350000) + mul_sat r11.y, r11.y, l(-4.000000) + mad r11.z, r11.y, l(-2.000000), l(3.000000) + mul r11.y, r11.y, r11.y + mul r11.w, r11.y, r11.z + mul r13.xyzw, v8.xyxz, l(1.000000, -1.000000, 1.000000, 1.000000) + movc r13.xyzw, cb1[r2.w + 4].wwww, r13.xyzw, v8.xzxy + mul r14.xyzw, r13.xyzw, cb0[196].zzzz + movc r17.yz, cb1[r2.w + 4].wwww, v7.zzyz, v7.yyzy + mov r17.x, v7.x + add r18.xyz, |r17.xyzx|, l(-0.200000, -0.200000, -0.200000, 0.000000) + mul r19.xyz, r18.xyzx, r18.xyzx + mul r18.xyz, r18.xyzx, r19.xyzx + max r18.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + dp3 r12.w, r18.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + div r18.xyz, r18.xyzx, r12.wwww + sample_b_indexable(texture2d)(float,float,float,float) r20.xyzw, r14.zyzz, t10.xyzw, s3, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r14.zwzz, t10.xyzw, s3, cb0[108].x + mul r21.xyzw, r18.zzzz, r21.xyzw + mad r20.xyzw, r20.xyzw, r18.yyyy, r21.xyzw + sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r14.ywyy, t10.xyzw, s3, cb0[108].x + mad r18.xyzw, r21.xyzw, r18.xxxx, r20.xyzw + add r17.yw, -r18.wwww, l(0.000000, 0.800000, 0.000000, 0.450000) + mul r20.xyz, r7.yyxy, l(0.200000, 0.000000, 1.000000, 0.000000) + mad_sat r12.w, cb1[r2.w + 12].x, r11.x, r20.x + add r12.w, -r17.y, r12.w + mul_sat r12.w, r12.w, l(3.33333325) + mad r13.x, r12.w, l(-2.000000), l(3.000000) + mul r12.w, r12.w, r12.w + mul r12.w, r12.w, r13.x + mul_sat r11.x, r9.w, r11.x + add r11.x, -r17.w, r11.x + mul_sat r11.x, r11.x, l(1.53846145) + mad r13.x, r11.x, l(-2.000000), l(3.000000) + mul r11.x, r11.x, r11.x + mul r11.x, r11.x, r13.x + max r11.x, r11.x, r12.w + add r12.w, r5.x, l(-0.500000) + mul_sat r12.w, r12.w, l(4.000000) + mad r13.x, r12.w, l(-2.000000), l(3.000000) + mul r12.w, r12.w, r12.w + mul r12.w, r12.w, r13.x + add r5.w, -r5.w, l(0.199999988) + mul_sat r5.w, r5.w, l(-5.00000048) + mad r13.x, r5.w, l(-2.000000), l(3.000000) + mul r5.w, r5.w, r5.w + mul r5.w, r5.w, r13.x + mad r13.x, r5.w, r11.w, r12.w + min r13.x, r13.x, l(1.000000) + max r9.w, r9.w, cb1[r2.w + 12].x + mad r17.yw, r18.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mul r18.xyw, r14.yzyw, l(20.000000, 20.000000, 0.000000, 20.000000) + mul r21.xyz, r14.yzwy, l(34.345600, 34.345600, 34.345600, 0.000000) + mul r22.xyz, r19.xyzx, r19.xyzx + mul r22.xyz, r22.xyzx, r22.xyzx + mul r19.xyz, r19.xyzx, r22.xyzx + dp3 r15.w, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + div r19.xyz, r19.xyzx, r15.wwww + round_ni r22.xyzw, r18.yxyw + mul r23.xyzw, r22.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r23.xyzw, r23.xyzw + add r24.xyzw, r23.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r15.w, r23.xyxx, r24.xyxx + add r20.xw, r15.wwww, r23.xxxy + mul r15.w, r20.w, r20.x + add r16.w, r20.w, r20.x + frc r15.w, r15.w + frc r25.w, r16.w + add r26.xyzw, r22.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) + mul r26.xyzw, r26.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r26.xyzw, r26.xyzw + add r27.xyzw, r26.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r16.w, r26.xyxx, r27.xyxx + add r20.xw, r16.wwww, r26.xxxy + mul r16.w, r20.w, r20.x + add r18.y, r20.w, r20.x + frc r23.x, r16.w + frc r23.y, r18.y + mad r16.w, r15.w, l(0.399999976), l(0.600000) + mul r18.y, r16.w, l(0.250000) + mad r22.xyzw, r14.zyzw, l(20.000000, 20.000000, 20.000000, 20.000000), -r22.xyzw + mad r20.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r20.xw, r20.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r22.xxxy + add r20.xw, r20.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) + mul r22.x, r20.x, l(1.250000) + lt r19.w, r20.w, l(0.000000) + movc r19.w, r19.w, l(1.250000), l(0.750000) + mul r22.y, r19.w, r20.w + mad r15.w, cb0[102].x, l(3.000000), r15.w + frc r15.w, r15.w + add r20.xw, r15.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) + mul_sat r20.xw, r20.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) + mad r24.xy, r20.xwxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r20.xw, r20.xxxw, r20.xxxw + mul r20.xw, r20.xxxw, r24.xxxy + mul r15.w, r20.w, r20.x + dp2 r19.w, r22.xyxx, r22.xyxx + sqrt r19.w, r19.w + mad r16.w, -r16.w, l(0.250000), r19.w + div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.y + mul_sat r16.w, r16.w, r19.w + mad r19.w, r16.w, l(-2.000000), l(3.000000) + mul r16.w, r16.w, r16.w + mul r16.w, r16.w, r19.w + ge r16.w, r16.w, l(0.001000) + and r16.w, r16.w, l(0x3f800000) + mul r25.z, r15.w, r16.w + div r20.xw, r22.xxxy, r18.yyyy + max r20.xw, r20.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) + min r20.xw, r20.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + ge r15.w, r25.z, l(0.001000) + and r15.w, r15.w, l(0x3f800000) + mul r20.xw, r15.wwww, r20.xxxw + mad r15.w, r23.x, l(0.250000), l(0.250000) + mul r25.xy, r15.wwww, r20.xwxx + dp2 r15.w, r23.zwzz, r24.zwzz + add r20.xw, r15.wwww, r23.zzzw + mul r15.w, r20.w, r20.x + add r16.w, r20.w, r20.x + frc r15.w, r15.w + frc r23.w, r16.w + dp2 r16.w, r26.zwzz, r27.zwzz + add r20.xw, r16.wwww, r26.zzzw + mul r16.w, r20.w, r20.x + add r18.y, r20.w, r20.x + frc r22.x, r16.w + frc r22.y, r18.y + mad r16.w, r15.w, l(0.399999976), l(0.600000) + mul r18.y, r16.w, l(0.250000) + mad r20.xw, r22.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r20.xw, r20.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r22.zzzw + add r20.xw, r20.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) + mul r24.x, r20.x, l(1.250000) + lt r19.w, r20.w, l(0.000000) + movc r19.w, r19.w, l(1.250000), l(0.750000) + mul r24.y, r19.w, r20.w + mad r15.w, cb0[102].x, l(3.000000), r15.w + frc r15.w, r15.w + add r20.xw, r15.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) + mul_sat r20.xw, r20.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) + mad r22.yz, r20.xxwx, l(0.000000, -2.000000, -2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000) + mul r20.xw, r20.xxxw, r20.xxxw + mul r20.xw, r20.xxxw, r22.yyyz + mul r15.w, r20.w, r20.x + dp2 r19.w, r24.xyxx, r24.xyxx + sqrt r19.w, r19.w + mad r16.w, -r16.w, l(0.250000), r19.w + div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.y + mul_sat r16.w, r16.w, r19.w + mad r19.w, r16.w, l(-2.000000), l(3.000000) + mul r16.w, r16.w, r16.w + mul r16.w, r16.w, r19.w + ge r16.w, r16.w, l(0.001000) + and r16.w, r16.w, l(0x3f800000) + mul r23.z, r15.w, r16.w + div r20.xw, r24.xxxy, r18.yyyy + max r20.xw, r20.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) + min r20.xw, r20.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + ge r15.w, r23.z, l(0.001000) + and r15.w, r15.w, l(0x3f800000) + mul r20.xw, r15.wwww, r20.xxxw + mad r15.w, r22.x, l(0.250000), l(0.250000) + mul r23.xy, r15.wwww, r20.xwxx + round_ni r18.xy, r18.xwxx + mul r20.xw, r18.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r20.xw, r20.xxxw + add r22.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r15.w, r20.xwxx, r22.xyxx + add r20.xw, r15.wwww, r20.xxxw + mul r15.w, r20.w, r20.x + add r16.w, r20.w, r20.x + frc r15.w, r15.w + frc r22.w, r16.w + add r20.xw, r18.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) + mul r20.xw, r20.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r20.xw, r20.xxxw + add r24.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r16.w, r20.xwxx, r24.xyxx + add r20.xw, r16.wwww, r20.xxxw + mul r16.w, r20.w, r20.x + add r18.w, r20.w, r20.x + frc r24.x, r16.w + frc r24.y, r18.w + mad r16.w, r15.w, l(0.399999976), l(0.600000) + mul r18.w, r16.w, l(0.250000) + mad r18.xy, r14.ywyy, l(20.000000, 20.000000, 0.000000, 0.000000), -r18.xyxx + mad r20.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r18.xy, r20.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r18.xyxx + add r18.xy, r18.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) + mul r26.x, r18.x, l(1.250000) + lt r18.x, r18.y, l(0.000000) + movc r18.x, r18.x, l(1.250000), l(0.750000) + mul r26.y, r18.x, r18.y + mad r15.w, cb0[102].x, l(3.000000), r15.w + frc r15.w, r15.w + add r18.xy, r15.wwww, l(-0.200000, -0.850000, 0.000000, 0.000000) + mul_sat r18.xy, r18.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) + mad r20.xw, r18.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r18.xy, r18.xyxx, r18.xyxx + mul r18.xy, r18.xyxx, r20.xwxx + mul r15.w, r18.y, r18.x + dp2 r18.x, r26.xyxx, r26.xyxx + sqrt r18.x, r18.x + mad r16.w, -r16.w, l(0.250000), r18.x + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w + mul_sat r16.w, r16.w, r18.x + mad r18.x, r16.w, l(-2.000000), l(3.000000) + mul r16.w, r16.w, r16.w + mul r16.w, r16.w, r18.x + ge r16.w, r16.w, l(0.001000) + and r16.w, r16.w, l(0x3f800000) + mul r22.z, r15.w, r16.w + div r18.xy, r26.xyxx, r18.wwww + max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r15.w, r22.z, l(0.001000) + and r15.w, r15.w, l(0x3f800000) + mul r18.xy, r15.wwww, r18.xyxx + mad r15.w, r24.x, l(0.250000), l(0.250000) + mul r22.xy, r15.wwww, r18.xyxx + mul r23.xyzw, r19.zzzz, r23.xyzw + mad r23.xyzw, r25.xyzw, r19.yyyy, r23.xyzw + mad r22.xyzw, r22.xyzw, r19.xxxx, r23.xyzw + round_ni r23.xyzw, r21.yxyz + mul r24.xyzw, r23.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r24.xyzw, r24.xyzw + add r25.xyzw, r24.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r15.w, r24.xyxx, r25.xyxx + add r18.xy, r15.wwww, r24.xyxx + mul r15.w, r18.y, r18.x + add r16.w, r18.y, r18.x + frc r15.w, r15.w + frc r26.w, r16.w + add r27.xyzw, r23.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) + mul r27.xyzw, r27.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r27.xyzw, r27.xyzw + add r28.xyzw, r27.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r16.w, r27.xyxx, r28.xyxx + add r18.xy, r16.wwww, r27.xyxx + mul r16.w, r18.y, r18.x + add r18.x, r18.y, r18.x + frc r24.x, r16.w + frc r24.y, r18.x + mad r16.w, r15.w, l(0.399999976), l(0.600000) + mul r18.x, r16.w, l(0.250000) + mad r23.xyzw, r14.xyzw, l(34.345600, 34.345600, 34.345600, 34.345600), -r23.xyzw + mad r18.yw, r24.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r18.yw, r18.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r23.xxxy + add r18.yw, r18.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) + mul r23.x, r18.y, l(1.250000) + lt r14.x, r18.w, l(0.000000) + movc r14.x, r14.x, l(1.250000), l(0.750000) + mul r23.y, r14.x, r18.w + mad r14.x, cb0[102].x, l(4.345600), r15.w + frc r14.x, r14.x + add r18.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) + mul_sat r18.yw, r18.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) + mad r20.xw, r18.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r18.yw, r18.yyyw, r18.yyyw + mul r18.yw, r18.yyyw, r20.xxxw + mul r14.x, r18.w, r18.y + dp2 r15.w, r23.xyxx, r23.xyxx + sqrt r15.w, r15.w + mad r15.w, -r16.w, l(0.250000), r15.w + div r16.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.x + mul_sat r15.w, r15.w, r16.w + mad r16.w, r15.w, l(-2.000000), l(3.000000) + mul r15.w, r15.w, r15.w + mul r15.w, r15.w, r16.w + ge r15.w, r15.w, l(0.001000) + and r15.w, r15.w, l(0x3f800000) + mul r26.z, r14.x, r15.w + div r18.xy, r23.xyxx, r18.xxxx + max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r14.x, r26.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r18.xy, r14.xxxx, r18.xyxx + mad r14.x, r24.x, l(0.250000), l(0.250000) + mul r26.xy, r14.xxxx, r18.xyxx + dp2 r14.x, r24.zwzz, r25.zwzz + add r18.xy, r14.xxxx, r24.zwzz + mul r14.x, r18.y, r18.x + add r15.w, r18.y, r18.x + frc r14.x, r14.x + frc r24.w, r15.w + dp2 r15.w, r27.zwzz, r28.zwzz + add r18.xy, r15.wwww, r27.zwzz + mul r15.w, r18.y, r18.x + add r16.w, r18.y, r18.x + frc r18.x, r15.w + frc r18.y, r16.w + mad r15.w, r14.x, l(0.399999976), l(0.600000) + mul r16.w, r15.w, l(0.250000) + mad r18.yw, r18.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r18.yw, r18.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r23.zzzw + add r18.yw, r18.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) + mul r23.x, r18.y, l(1.250000) + lt r18.y, r18.w, l(0.000000) + movc r18.y, r18.y, l(1.250000), l(0.750000) + mul r23.y, r18.y, r18.w + mad r14.x, cb0[102].x, l(4.345600), r14.x + frc r14.x, r14.x + add r18.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) + mul_sat r18.yw, r18.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) + mad r20.xw, r18.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r18.yw, r18.yyyw, r18.yyyw + mul r18.yw, r18.yyyw, r20.xxxw + mul r14.x, r18.w, r18.y + dp2 r18.y, r23.xyxx, r23.xyxx + sqrt r18.y, r18.y + mad r15.w, -r15.w, l(0.250000), r18.y + div r18.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w + mul_sat r15.w, r15.w, r18.y + mad r18.y, r15.w, l(-2.000000), l(3.000000) + mul r15.w, r15.w, r15.w + mul r15.w, r15.w, r18.y + ge r15.w, r15.w, l(0.001000) + and r15.w, r15.w, l(0x3f800000) + mul r24.z, r14.x, r15.w + div r18.yw, r23.xxxy, r16.wwww + max r18.yw, r18.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) + min r18.yw, r18.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) + ge r14.x, r24.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r18.yw, r14.xxxx, r18.yyyw + mad r14.x, r18.x, l(0.250000), l(0.250000) + mul r24.xy, r14.xxxx, r18.ywyy + round_ni r18.xy, r21.xzxx + mul r20.xw, r18.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r20.xw, r20.xxxw + add r21.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r14.x, r20.xwxx, r21.xyxx + add r20.xw, r14.xxxx, r20.xxxw + mul r14.x, r20.w, r20.x + add r15.w, r20.w, r20.x + frc r14.x, r14.x + frc r21.w, r15.w + add r20.xw, r18.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) + mul r20.xw, r20.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r20.xw, r20.xxxw + add r23.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r15.w, r20.xwxx, r23.xyxx + add r20.xw, r15.wwww, r20.xxxw + mul r15.w, r20.w, r20.x + add r16.w, r20.w, r20.x + frc r23.x, r15.w + frc r23.y, r16.w + mad r15.w, r14.x, l(0.399999976), l(0.600000) + mul r16.w, r15.w, l(0.250000) + mad r18.xy, r14.ywyy, l(34.345600, 34.345600, 0.000000, 0.000000), -r18.xyxx + mad r20.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r18.xy, r20.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r18.xyxx + add r18.xy, r18.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) + mul r25.x, r18.x, l(1.250000) + lt r18.x, r18.y, l(0.000000) + movc r18.x, r18.x, l(1.250000), l(0.750000) + mul r25.y, r18.x, r18.y + mad r14.x, cb0[102].x, l(4.345600), r14.x + frc r14.x, r14.x + add r18.xy, r14.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) + mul_sat r18.xy, r18.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) + mad r20.xw, r18.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r18.xy, r18.xyxx, r18.xyxx + mul r18.xy, r18.xyxx, r20.xwxx + mul r14.x, r18.y, r18.x + dp2 r18.x, r25.xyxx, r25.xyxx + sqrt r18.x, r18.x + mad r15.w, -r15.w, l(0.250000), r18.x + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w + mul_sat r15.w, r15.w, r18.x + mad r18.x, r15.w, l(-2.000000), l(3.000000) + mul r15.w, r15.w, r15.w + mul r15.w, r15.w, r18.x + ge r15.w, r15.w, l(0.001000) + and r15.w, r15.w, l(0x3f800000) + mul r21.z, r14.x, r15.w + div r18.xy, r25.xyxx, r16.wwww + max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r14.x, r21.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r18.xy, r14.xxxx, r18.xyxx + mad r14.x, r23.x, l(0.250000), l(0.250000) + mul r21.xy, r14.xxxx, r18.xyxx + mul r23.xyzw, r19.zzzz, r24.xyzw + mad r23.xyzw, r26.xyzw, r19.yyyy, r23.xyzw + mad r19.xyzw, r21.xyzw, r19.xxxx, r23.xyzw + max r18.xy, r19.zwzz, r22.zwzz + mad r19.zw, -r13.xxxx, r9.wwww, l(0.000000, 0.000000, 1.000000, 1.010000) + add r14.x, r18.y, l(-0.100000) + ge r14.x, r14.x, r19.z + and r14.x, r14.x, l(0x3f800000) + mul r14.x, r14.x, r18.x + ge r2.w, cb1[r2.w + 12].x, l(0.010000) + and r2.w, r2.w, l(0x3f800000) + mul r2.w, r2.w, r14.x + lt r14.x, l(0.001000), r2.w + add r18.xy, r19.xyxx, r22.xyxx + mul r15.w, cb0[102].x, cb0[196].z + mul r19.y, r15.w, l(0.750000) + dp2 r15.w, r17.xzxx, r17.xzxx + max r15.w, r15.w, l(1.175494351E-38) + rsq r15.w, r15.w + mul r17.xz, r15.wwww, r17.xxzx + add r17.xz, |r17.xxzx|, l(-0.200000, 0.000000, -0.200000, 0.000000) + mul r20.xw, r17.xxxz, r17.xxxz + mul r17.xz, r17.xxzx, r20.xxwx + max r17.xz, r17.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + dp2 r15.w, r17.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) + div r17.xz, r17.xxzx, r15.wwww + sample_b_indexable(texture2d)(float,float,float,float) r21.xyz, r14.zwzz, t11.xyzw, s3, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r14.yzw, r14.ywyy, t11.wxyz, s3, cb0[108].x + mul r14.yzw, r17.xxxx, r14.yyzw + mad r14.yzw, r21.xxyz, r17.zzzz, r14.yyzw + movc r17.yw, r14.xxxx, r18.xxxy, r17.yyyw + mad r14.xy, r14.yzyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mov r19.x, l(0) + mad r21.xyzw, r13.zwyw, cb0[196].zzzz, r19.xyxy + sample_b_indexable(texture2d)(float,float,float,float) r13.y, r21.xyxx, t11.xwyz, s3, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r13.z, r21.zwzz, t11.xywz, s3, cb0[108].x + mul r13.z, r17.x, r13.z + mad r13.y, r13.y, r17.z, r13.z + mad r13.yz, r14.xxyx, r13.yyyy, r17.yywy + ge r13.w, r18.z, r19.w + and r13.w, r13.w, l(0x3f800000) + max r2.w, r2.w, r13.w + add r13.w, -r14.w, l(1.000000) + mad r9.w, r13.x, r9.w, -r13.w + mul_sat r9.w, r9.w, l(9.999998) + mad r13.x, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r13.x + max r2.w, r2.w, r9.w + mad r13.xw, -r7.zzzy, l(1.000000, 0.000000, 0.000000, 0.000000), r20.yyyz + dp2 r9.w, r13.xwxx, r13.xwxx + lt r14.x, l(0.0000610351562), r9.w + rsq r9.w, r9.w + mul r13.xw, r9.wwww, r13.xxxw + mov r13.xw, -r13.xxxw + movc r17.z, r14.x, r13.x, l(-1.000000) + and r17.y, r13.w, r14.x + min r9.w, r3.z, l(0.050000) + add r13.x, -r3.z, r9.w + mad r13.x, r2.w, r13.x, r3.z + mad r11.y, -r11.z, r11.y, l(1.000000) + mul r11.y, r11.y, r11.x + mad r5.w, -r5.w, r11.w, l(1.000000) + mul r5.w, r5.w, r11.y + mad r5.w, r5.w, l(-0.500000), l(1.000000) + mov r17.x, l(0) + mad r3.xyw, -r3.xyxw, r6.wwww, r17.zxzy + mad r3.xyw, r13.yyyy, r3.xyxw, r7.xyxz + mul r14.xyz, r7.zxyz, r17.xyzx + mad r14.xyz, r7.yzxy, r17.yzxy, -r14.xyzx + add r14.xyz, -r3.xywx, r14.xyzx + mad r3.xyw, r13.zzzz, r14.xyxz, r3.xyxw + dp3 r6.w, r3.xywx, r3.xywx + rsq r6.w, r6.w + mad r3.xyw, r3.xyxw, r6.wwww, -r7.xyxz + mad r3.xyw, r2.wwww, r3.xyxw, r7.xyxz + dp3 r6.w, r3.xywx, r3.xywx + rsq r6.w, r6.w + mul r3.xyw, r3.xyxw, r6.wwww + mul r6.w, r11.w, r11.x + mad r6.w, -r6.w, l(0.200000), r13.x + min r11.x, r13.x, l(0.200000) + max r3.z, r6.w, r11.x + mul r6.xyz, r5.wwww, r6.xyzx + dp3 r6.w, r4.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r6.w, r6.w, l(-0.700000) + mul_sat r6.w, r6.w, l(-2.50000024) + mad r11.x, r6.w, l(-2.000000), l(3.000000) + mul r6.w, r6.w, r6.w + mul r6.w, r6.w, r11.x + mad r6.w, r6.w, l(0.500000), l(1.000000) + mul r11.x, r12.w, r2.w + mad r11.yzw, r4.xxyz, r6.wwww, -r4.xxyz + mad r11.xyz, r11.xxxx, r11.yzwy, r4.xyzx + mul r4.xyz, r5.wwww, r11.xyzx +else + mov r3.xyw, r7.xyxz + mov r9.w, l(0.010000) + mov r2.w, l(0) +endif +mul r5.w, r5.y, l(0.040000) +mad r6.w, -r5.x, l(0.960000), l(0.960000) +mul r11.xyz, r4.xyzx, r6.wwww +mad r13.xyz, -r5.yyyy, l(0.040000, 0.040000, 0.040000, 0.000000), r4.xyzx +mad r13.xyz, r5.xxxx, r13.xyzx, r5.wwww +mul r6.xyz, r6.wwww, r6.xyzx +mul r5.y, r3.z, r3.z +max r5.y, r5.y, l(0.00781250000) +max r5.w, v5.z, l(9.999999939E-09) +div r14.xy, v5.xyxx, r5.wwww +max r5.w, v6.z, l(9.999999939E-09) +div r14.zw, v6.xxxy, r5.wwww +add r14.xy, -r14.zwzz, r14.xyxx +mul r17.xy, r14.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r17.xy, |r17.xyxx| +sqrt r17.xy, r17.xyxx +mov r14.z, -r14.y +lt r14.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r14.xxxz +lt r14.xz, r14.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r14.xy, -r14.ywyy, r14.xzxx +itof r14.xy, r14.xyxx +mul r14.xy, r14.xyxx, r17.xyxx +mad o1.xy, r14.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +lt r5.w, l(0.500000), r2.w +movc o1.w, r5.w, l(0.700000), l(0.400000) +add r14.xyz, cb0[197].xyzx, cb3[0].xyzx +mad r14.xyz, cb0[187].wwww, r14.xyzx, -cb3[0].xyzx +mov r14.w, l(0.0000610351562) +dp3 r5.w, r14.xzwx, r14.xzwx +rsq r5.w, r5.w +mul r17.xyz, r5.wwww, r14.xwzx +add r18.xyz, cb0[191].xyzx, -cb3[3].xyzx +mad r18.xyz, cb0[198].yyyy, r18.xyzx, cb3[3].xyzx +add r5.w, l(1.000000), -cb3[3].w +mad r5.w, cb0[198].w, r5.w, cb3[3].w +mul r19.xyz, r5.wwww, r18.xyzx +mov r10.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r20.xy, r10.xyzz, t3.xyzw +add r10.z, r20.x, l(-1.000000) +mad r10.z, cb4[34].x, r10.z, l(1.000000) +add r11.w, -r10.z, l(1.000000) +mad r10.z, cb0[187].z, r11.w, r10.z +dp3 r11.w, r7.xyzx, r14.xyzx +mul r20.xzw, r6.xxyz, cb0[186].zzzz +mul r21.xyz, r20.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000) +dp3 r12.w, r11.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +dp2 r13.w, cb0[6].xzxx, cb0[6].xzxx +rsq r13.w, r13.w +mul r22.xy, r13.wwww, cb0[6].xzxx +dp2 r13.w, r17.xzxx, r22.xyxx +mov_sat r13.w, -r13.w +add r22.xy, l(1.000000, 1.000000, 0.000000, 0.000000), -cb0[198].xyxx +mad r14.w, r11.w, l(0.500000), l(-1.000000) +mad r14.w, -r11.w, r14.w, -r11.w +add r15.w, l(0.750000), -|cb0[6].y| +add_sat r15.w, r15.w, r15.w +mad r16.w, r15.w, l(-2.000000), l(3.000000) +mul r15.w, r15.w, r15.w +mul r15.w, r15.w, r16.w +mul r15.w, r13.w, r15.w +mul r15.w, r22.x, r15.w +add r14.w, r14.w, l(0.500000) +mad r11.w, r15.w, r14.w, r11.w +mad r11.w, cb0[197].w, cb0[198].x, r11.w +max r11.w, r11.w, l(-1.000000) +min r11.w, r11.w, l(1.000000) +add r11.w, r11.w, l(-0.250000) +mul r11.w, r11.w, l(1.33333337) +max r11.w, r11.w, l(0.000000) +mad r14.w, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r14.w +dp3 r14.w, r7.xyzx, cb0[6].xyzx +add r14.w, r14.w, l(-0.250000) +mul_sat r14.w, r14.w, l(1.33333337) +mad r15.w, r14.w, l(-2.000000), l(3.000000) +mul r14.w, r14.w, r14.w +mul r14.w, r14.w, r15.w +mul r15.w, r5.z, r20.y +min r16.w, r5.z, r20.y +min r17.w, r11.w, r16.w +mul r18.w, r14.w, r15.w +dp3 r19.w, r7.xyzx, cb0[192].xyzx +add_sat r19.w, r19.w, cb0[193].x +mad r19.w, r19.w, cb0[193].y, cb0[193].z +mul r21.w, r17.w, cb0[187].y +add r23.xyz, -r12.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r23.xyz, r21.wwww, r23.xyzx, r12.xyzx +mul r23.xyz, r19.wwww, r23.xyzx +mad r19.w, r8.w, l(0.350000024), l(0.650000) +min r19.w, r19.w, l(1.500000) +max r24.xyz, r8.wwww, l(1.250000, 0.000000, 0.500000, 0.000000) +min r24.xyz, r24.xyzx, l(1.750000, 1.500000, 1.500000, 0.000000) +add r8.w, -r19.w, r24.x +mad r8.w, cb0[187].x, r8.w, r19.w +mul r25.xyz, r8.wwww, r23.xyzx +mul r25.xyz, r25.xyzx, cb0[186].wwww +dp3 r8.w, r19.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r19.xyz, r18.xyzx, r5.wwww, -r8.wwww +mad r19.xyz, r17.wwww, r19.xyzx, r8.wwww +mul r23.xyz, r23.xyzx, r24.yyyy +mad r22.yzw, r18.xxyz, cb0[198].yyyy, r22.yyyy +mad r19.xyz, r23.xyzx, r22.yzwy, r19.xyzx +mad r19.xyz, r19.xyzx, cb0[186].yyyy, -r25.xyzx +mad r19.xyz, r10.zzzz, r19.xyzx, r25.xyzx +dp3 r8.w, r21.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r21.xyz, r20.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000), -r8.wwww +mad r21.xyz, r21.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r8.wwww +mad_sat r8.w, r14.w, r15.w, r11.w +mad r22.yzw, r6.xxyz, cb0[186].zzzz, -r21.xxyz +mad r21.xyz, r8.wwww, r22.yzwy, r21.xyzx +mad r22.yzw, r4.xxyz, r6.wwww, -r21.xxyz +mad r21.xyz, r17.wwww, r22.yzwy, r21.xyzx +mad r22.yzw, r4.xxyz, r6.wwww, -r12.wwww +mad r22.yzw, r22.yyzw, l(0.000000, 1.200000, 1.200000, 1.200000), r12.wwww +mad r22.yzw, -r6.xxyz, cb0[186].zzzz, r22.yyzw +mad r20.xzw, r18.wwww, r22.yyzw, r20.xxzw +dp3 r8.w, r21.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +max r11.w, r8.w, l(0.001000) +div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w +mul r8.w, r8.w, r11.w +max r8.w, r8.w, l(0.000000) +min r8.w, r8.w, l(1.500000) +mad r21.xyz, r21.xyzx, r8.wwww, -r20.xzwx +mad r20.xzw, r10.zzzz, r21.xxyz, r20.xxzw +mad r8.w, -r14.w, r15.w, r17.w +mad r8.w, r10.z, r8.w, r18.w +add r11.w, l(1.000000), -cb0[186].z +mad r11.w, r8.w, r11.w, cb0[186].z +add r14.w, r14.y, l(-0.500000) +mad r21.y, r10.z, r14.w, l(0.500000) +dp3_sat r23.x, r3.xywx, r2.xyzx +mov r21.xz, cb0[6].xxzx +dp3 r14.w, r21.xyzx, r21.xyzx +max r14.w, r14.w, l(1.175494351E-38) +rsq r14.w, r14.w +mul r21.xyz, r14.wwww, r21.xyzx +add r21.xyz, r21.xyzx, r21.xyzx +mad r14.xyz, r14.xyzx, r10.zzzz, r21.xyzx +add r14.w, r10.z, l(2.000000) +mad r14.xyz, r2.xyzx, r14.wwww, r14.xyzx +dp3 r14.w, r14.xyzx, r14.xyzx +rsq r14.w, r14.w +mul r14.xyz, r14.wwww, r14.xyzx +dp3 r14.x, r3.xywx, r14.xyzx +mul r14.y, r5.y, r5.y +mad r14.z, r14.x, r14.y, -r14.x +mad r14.x, r14.z, r14.x, l(1.000000) +mul r14.x, r14.x, r14.x +add r14.z, l(1.000000), -cb5[1].z +mad r14.z, r4.w, cb5[1].z, r14.z +mul r21.xyz, r19.xyzx, r20.xzwx +ne r14.w, r14.x, r14.y +div r14.x, r14.y, r14.x +movc r14.x, r14.w, r14.x, l(1.000000) +mad r14.y, r23.x, l(2.000000), r5.y +add r14.y, r14.y, l(0.000100) +div r14.y, l(0.500000), r14.y +mad r14.x, r14.x, r14.y, l(-0.0000610351562) +max r14.x, r14.x, l(0.000000) +min r14.x, r14.x, l(20.000000) +mul r14.xyw, r13.xyxz, r14.xxxx +mad r8.w, r8.w, l(0.500000), l(0.500000) +mul r8.w, r11.w, r8.w +mul r19.xyz, r8.wwww, r19.xyzx +mul r14.xyw, r14.xyxw, r19.xyxz +mul r14.xyw, r14.xyxw, cb0[199].wwww +mad r14.xyw, r21.xyxz, r14.zzzz, r14.xyxw +dp3 r8.w, r14.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r15.w, r8.w, l(-0.500000) +max r15.w, r15.w, l(0.000000) +min r15.w, r15.w, l(0.500000) +mov r19.y, l(0) +mov r19.xz, cb0[195].yyxy +mul r21.xyz, r19.xyzx, cb0[6].zxyz +mad r19.xyz, cb0[6].yzxy, r19.yzxy, -r21.xyzx +dp3 r17.w, r19.xyzx, r19.xyzx +rsq r17.w, r17.w +mul r19.xyz, r17.wwww, r19.xyzx +dp3 r17.w, r2.xyzx, r7.xyzx +add r21.xy, -|r17.wwww|, l(1.000000, 0.399999976, 0.000000, 0.000000) +dp3 r17.x, r17.xyzx, r7.xyzx +add r17.y, -r10.z, l(1.000000) +add r9.w, -r3.z, r9.w +mad r2.w, r2.w, r9.w, r3.z +mul r25.y, r2.w, r2.w +mul r26.x, r23.x, r23.x +mul r26.z, r23.x, r26.x +mul r9.w, r25.y, r25.y +mul r25.z, r25.y, r9.w +mov r23.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r24.x, l(3.327070, 1.000000, 0.000000, 0.000000), r23.xyxx +dp2 r24.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r23.xzxx +mov r25.x, l(1.000000) +dp2 r9.w, r24.xyxx, r25.xyxx +mov r26.yw, l(0,9.044010,0,1.000000) +dp3 r27.x, l(3.596850, -1.367720, 1.000000, 0.000000), r26.xzwx +dp3 r27.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r26.xyzx +mov r28.x, l(5.565890) +mov r28.yz, r26.xxzx +dp3 r27.z, l(1.000000, 19.788601, -20.212299, 0.000000), r28.xyzx +dp3 r17.z, r27.xyzx, r25.xyzx +div r9.w, r9.w, r17.z +dp2 r24.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r23.xwxx +mov r26.x, l(1.296780) +mov r26.y, r23.x +dp2 r24.y, l(1.000000, -0.755907, 0.000000, 0.000000), r26.xyxx +dp2 r17.z, r24.xyxx, r25.xyxx +dp3 r27.x, l(2.923380, 59.418800, 1.000000, 0.000000), r26.yzwy +mov r26.xw, l(20.322500,0,0,121.563004) +dp3 r27.y, l(1.000000, -27.030199, 222.591995, 0.000000), r26.xyzx +dp3 r27.z, l(626.130005, 316.627014, 1.000000, 0.000000), r26.yzwy +dp3 r18.w, r27.xyzx, r25.xyzx +div r17.z, r17.z, r18.w +mad r22.yzw, r13.xxyz, r9.wwww, r17.zzzz +add r9.w, r9.w, r17.z +mad r15.w, r15.w, r15.w, l(1.000000) +add r14.xyw, -r8.wwww, r14.xyxw +mad r14.xyw, r15.wwww, r14.xyxw, r8.wwww +mad r21.zw, cb0[195].wwww, l(0.000000, 0.000000, -0.600000, -0.399999976), l(0.000000, 0.000000, 0.800000, 0.900000) +add r8.w, -r21.z, r21.w +add r15.w, -r21.z, r21.x +div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w +mul_sat r8.w, r8.w, r15.w +mad r15.w, r8.w, l(-2.000000), l(3.000000) +mul r8.w, r8.w, r8.w +mul r8.w, r8.w, r15.w +mul r23.yzw, r8.wwww, cb0[194].xxyz +mul r23.yzw, r23.yyzw, cb0[194].wwww +dp3 r8.w, r8.xyzx, r19.xyzx +add_sat r8.w, r8.w, l(1.000000) +min r5.z, r5.z, r8.w +min r5.z, r20.y, r5.z +mul r23.yzw, r5.zzzz, r23.yyzw +mad r24.xyw, r4.xyxz, r6.wwww, l(-0.250000, -0.250000, 0.000000, -0.250000) +mad r24.xyw, cb0[195].zzzz, r24.xyxw, l(0.250000, 0.250000, 0.000000, 0.250000) +dp3_sat r5.z, r19.xyzx, r7.xyzx +mul r19.xyz, r5.zzzz, r24.xywx +max r5.z, r15.y, r15.x +max r5.z, r15.z, r5.z +mul r5.z, r5.z, l(0.500000) +max r5.z, r5.z, l(1.000000) +div r5.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z +mul r15.xyz, r5.zzzz, r15.xyzx +mad r18.xyz, r18.xyzx, r5.wwww, -r15.xyzx +mad r15.xyz, r10.zzzz, r18.xyzx, r15.xyzx +dp3 r5.z, r16.xyzx, r7.xyzx +mul r5.w, r7.w, r5.z +mad r8.w, r17.x, l(0.500000), l(-1.000000) +mad r8.w, -r17.x, r8.w, l(0.500000) +mad r5.z, -r5.z, r7.w, r8.w +mad_sat r5.z, r10.z, r5.z, r5.w +mul r15.xyz, r5.zzzz, r15.xyzx +mad r5.z, r13.w, r10.z, r17.y +mul r5.z, r22.x, r5.z +mul r15.xyz, r5.zzzz, r15.xyzx +mul_sat r5.z, r21.y, l(5.00000048) +mad r5.w, r5.z, l(-2.000000), l(3.000000) +mul r5.z, r5.z, r5.z +mul r5.z, r5.z, r5.w +mul r15.xyz, r5.zzzz, r15.xyzx +mul r15.xyz, r16.wwww, r15.xyzx +add r5.z, r12.w, l(-0.100000) +mul_sat r5.z, r5.z, l(-16.666666) +mad r5.w, r5.z, l(-2.000000), l(3.000000) +mul r5.z, r5.z, r5.z +mul r5.z, r5.z, r5.w +mad r5.z, r5.z, r10.z, r17.y +mul r15.xyz, r5.zzzz, r15.xyzx +max r16.xyz, r11.xyzx, l(0.150000, 0.150000, 0.150000, 0.000000) +mul r15.xyz, r15.xyzx, r16.xyzx +mad r15.xyz, r23.yzwy, r19.xyzx, r15.xyzx +add r14.xyw, r14.xyxw, r15.xyxz +utof r5.zw, r10.xxxy +mul r15.xy, r5.zwzz, l(0.031250, 0.031250, 0.000000, 0.000000) +round_ni r15.xy, r15.xyxx +mad r7.w, r15.y, cb2[1].y, r15.x +mul r7.w, r7.w, l(8.000000) +ftoi r7.w, r7.w +mad r8.w, -cb0[85].y, cb2[2].w, v0.w +round_ni r8.w, r8.w +add r10.z, l(-1.000000), cb2[1].w +max r12.w, r8.w, l(0.000000) +min r10.z, r10.z, r12.w +mul r12.w, r10.z, l(8.000000) +ftoi r12.w, r12.w +dp3 r13.w, -r2.xyzx, r3.xywx +add r13.w, r13.w, r13.w +mad r15.xyz, r3.xywx, -r13.wwww, -r2.xyzx +max r2.w, r2.w, l(0.001000) +log r2.w, r2.w +mad r2.w, r2.w, l(1.200000), l(5.000000) +sample_l_indexable(texturecube)(float,float,float,float) r15.xyz, r15.xyzx, t15.xyzw, s0, r2.w +add r2.w, -r9.w, l(1.000000) +div r2.w, r2.w, r9.w +mul r16.xyz, r2.wwww, r13.xyzx +mad r16.xyz, r16.xyzx, r22.yzwy, r22.yzwy +mul r15.xyz, r15.xyzx, r16.xyzx +mul r2.w, r24.z, cb0[186].w +mul r2.w, r11.w, r2.w +mul r15.xyz, r2.wwww, r15.xyzx +mad r12.xyz, r15.xyzx, r12.xyzx, r14.xywx +ge r2.w, r10.z, r8.w +iadd r8.w, r12.w, cb0[110].y +mad r9.w, r17.y, l(-0.250000), l(0.750000) +mad r4.xyz, r4.xyzx, r6.wwww, l(-0.500000, -0.500000, -0.500000, 0.000000) +add r6.w, -r5.y, l(0.010000) +ge r5.x, r5.x, l(0.500000) +and r5.x, r5.x, l(0x3f800000) +mov r15.w, l(1.000000) +mov r14.xyw, r12.xyxz +mov r10.z, l(0) +loop + ilt r11.w, l(7), r10.z + breakc_nz r11.w + iadd r11.w, r7.w, r10.z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx + iadd r12.w, r8.w, r10.z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx + and r11.w, r11.w, r12.w + and r11.w, r2.w, r11.w + ishl r12.w, r10.z, l(5) + mov r16.xyz, r14.xywx + mov r13.w, r11.w + loop + breakc_z r13.w + firstbit_lo r16.w, r13.w + ishl r17.x, l(1), r16.w + xor r17.x, r13.w, r17.x + iadd r16.w, r12.w, r16.w + bfi r18.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 5, 6, 7) + ftou r17.y, cb3[r18.y + 6].w + ieq r17.y, r17.y, l(1) + if_nz r17.y + add r15.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx + and r19.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r18.y + 6].xzyx + and r21.yzw, l(0, 0x0000ffff, 0x0000ffff, 0x0000ffff), cb3[r18.z + 6].yyxz + ushr r22.xyz, cb3[r18.y + 6].xzyx, l(16, 16, 16, 0) + ushr r23.yzw, cb3[r18.z + 6].yyxz, l(0, 16, 16, 16) + f16tof32 r19.xyz, r19.xyzx + f16tof32 r21.yzw, r21.yyzw + f16tof32 r22.xyz, r22.xyzx + f16tof32 r24.xyw, r23.zyzw + mov r25.xz, r19.xxzx + mov r25.yw, r22.xxxz + dp4 r17.y, r15.xyzw, r25.xyzw + mov r22.x, r19.y + mov r22.z, r21.z + mov r22.w, r24.x + dp4 r17.z, r15.xyzw, r22.xyzw + mov r24.xz, r21.yywy + dp4 r15.x, r15.xyzw, r24.xyzw + max r15.y, |r17.z|, |r17.y| + max r15.x, |r15.x|, r15.y + mad r15.y, cb3[r18.w + 6].x, l(0.500000), l(0.500000) + add r15.x, -r15.y, r15.x + mad r15.y, -cb3[r18.w + 6].x, l(0.500000), l(0.500000) + div_sat r15.x, r15.x, r15.y + add r15.x, -r15.x, l(1.000000) + mul r15.x, r15.x, r15.x + else + mov r15.x, l(1.000000) + endif + lt r15.y, r15.x, l(0.001000) + if_nz r15.y + mov r13.w, r17.x + continue + endif + ishl r15.y, r16.w, l(3) + lt r15.z, cb3[r15.y + 6].w, l(1.500000) + if_nz r15.z + bfi r15.z, l(29), l(3), r16.w, l(3) + ieq r17.y, l(16), cb3[r15.z + 6].w + add r17.z, cb0[198].z, cb3[r15.z + 6].z + lt r17.z, r17.z, l(0.500000) + or r17.y, r17.z, r17.y + if_z r17.y + bfi r17.yz, l(0, 29, 29, 0), l(0, 3, 3, 0), r16.wwww, l(0, 2, 4, 0) + ftou r16.w, cb3[r15.y + 6].w + and r16.w, r16.w, l(1) + ieq r18.y, r16.w, l(0) + not r18.y, r18.y + lt r19.x, l(0.000000), cb3[r17.y + 6].z + and r18.y, r18.y, r19.x + ieq r19.x, l(4), cb3[r15.z + 6].w + movc r19.y, r16.w, l(0), l(1.000000) + mad r19.z, cb3[r17.y + 6].y, l(0.500000), l(0.500000) + add r22.z, r19.z, -|cb3[r17.y + 6].x| + add r22.x, -r22.z, cb3[r17.y + 6].y + add r19.z, -|r22.z|, l(1.000000) + add r19.z, -|r22.x|, r19.z + max r19.z, r19.z, l(0.000488281250) + ge r19.w, cb3[r17.y + 6].x, l(0.000000) + movc r22.y, r19.w, r19.z, -r19.z + dp3 r19.z, r22.xyzx, r22.xyzx + rsq r19.z, r19.z + mul r21.yzw, r19.zzzz, r22.xxyz + add r19.z, cb3[r17.z + 6].y, cb3[r17.z + 6].y + max r19.z, r19.z, l(0.100000) + and r19.w, r19.x, l(0x3f800000) + add r19.z, r19.z, -cb3[r18.z + 6].w + mad r18.z, r19.w, r19.z, cb3[r18.z + 6].w + add r22.xyz, -v2.xyzx, cb3[r18.x + 6].xyzx + dp3 r19.z, r22.yzxy, -r21.yzwy + lt r19.w, l(0.500000), cb3[r17.z + 6].z + and r19.w, r19.w, r19.x + and r19.w, r19.w, l(0x3f800000) + mul r19.w, r19.y, r19.w + mad r23.yzw, -r21.wwyz, r19.zzzz, -r22.xxyz + mad r22.xyz, r19.wwww, r23.yzwy, r22.xyzx + dp3 r19.z, r22.xyzx, r22.xyzx + rsq r19.w, r19.z + mul r23.yzw, r19.wwww, r22.xxyz + if_nz r18.y + mul r24.xyz, r21.wyzw, cb3[r17.y + 6].zzzz + mad r25.xyz, -r24.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r22.xyzx + mad r24.xyz, r24.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r22.xyzx + dp3 r19.w, r25.xyzx, r25.xyzx + sqrt r19.w, r19.w + dp3 r20.y, r24.xyzx, r24.xyzx + sqrt r20.y, r20.y + mul r26.xyz, r21.yzwy, r23.yzwy + mad r26.xyz, r21.wyzw, r23.zwyz, -r26.xyzx + mul r27.xyz, r21.yzwy, r26.xyzx + mad r26.xyz, r26.zxyz, r21.zwyz, -r27.xyzx + dp3 r22.w, r26.xyzx, r26.xyzx + rsq r22.w, r22.w + mul r23.yzw, r22.wwww, r26.xxyz + dp3 r22.w, r25.xyzx, r24.xyzx + mad r22.w, r19.w, r20.y, r22.w + mad r22.w, r22.w, l(0.500000), l(1.000000) + div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w + dp3 r24.w, r23.yzwy, r25.xyzx + div r19.w, r24.w, r19.w + dp3 r24.x, r23.yzwy, r24.xyzx + div r20.y, r24.x, r20.y + add r19.w, r19.w, r20.y + mul_sat r19.w, r19.w, l(0.500000) + mul r19.w, r19.w, r22.w + else + mov r19.w, l(1.000000) + endif + lt r20.y, r18.z, l(0.000000) + if_nz r20.y + mul r20.y, cb3[r18.x + 6].w, cb3[r18.x + 6].w + mul r20.y, r19.z, r20.y + mad r20.y, -r20.y, r20.y, l(1.000000) + max r20.y, r20.y, l(0.000000) + add r19.z, r19.z, l(1.000000) + div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z + and r22.w, r18.y, l(0x3f800000) + add r24.x, -r19.z, r19.w + mad r19.z, r22.w, r24.x, r19.z + mul r20.y, r20.y, r20.y + mul r19.z, r19.z, r20.y + else + mul r24.xyz, r22.xyzx, cb3[r18.x + 6].wwww + dp3 r20.y, r24.xyzx, r24.xyzx + min r20.y, r20.y, l(1.000000) + add r20.y, -r20.y, l(1.000000) + log r20.y, r20.y + mul r18.z, r18.z, r20.y + exp r18.z, r18.z + mul r19.z, r18.z, r19.w + endif + dp3 r18.z, r23.zwyz, -r21.yzwy + add r18.z, r18.z, -cb3[r17.y + 6].z + mul_sat r18.z, r18.z, cb3[r17.y + 6].w + mad r18.z, r18.z, r18.z, l(-1.000000) + mad r18.z, r19.y, r18.z, l(1.000000) + mul r18.z, r18.z, r19.z + ftoi r19.y, cb3[r18.w + 6].w + not r18.y, r18.y + ige r19.z, r19.y, l(0) + and r18.y, r18.y, r19.z + if_nz r18.y + if_z r16.w + ishl r18.y, r19.y, l(2) + mul r21.yzw, v2.yyyy, cb6[r18.y + 33].xxyw + mad r21.yzw, cb6[r18.y + 32].xxyw, v2.xxxx, r21.yyzw + mad r21.yzw, cb6[r18.y + 34].xxyw, v2.zzzz, r21.yyzw + add r21.yzw, r21.yyzw, cb6[r18.y + 35].xxyw + div_sat r19.zw, r21.yyyz, r21.wwww + mad r19.zw, r19.zzzw, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy + else + ishl r18.y, r19.y, l(2) + dp3 r24.x, -r22.xyzx, cb6[r18.y + 32].xyzx + dp3 r24.y, -r22.xyzx, cb6[r18.y + 33].xyzx + dp3 r24.z, -r22.xyzx, cb6[r18.y + 34].xyzx + lt r18.y, |r24.x|, |r24.y| + and r18.y, r18.y, l(1) + dp2 r20.y, |r24.xyxx|, icb[r18.y + 0].xyxx + lt r20.y, r20.y, |r24.z| + movc r18.y, r20.y, l(2), r18.y + dp3 r20.y, r24.xyzx, icb[r18.y + 0].xyzx + lt r20.y, r20.y, l(0.000000) + bfi r18.y, l(31), l(1), r18.y, r20.y + ushr r20.y, r18.y, l(1) + dp3 r20.y, r24.xyzx, icb[r20.y + 0].xyzx + div r21.y, l(0.000244140625), cb6[r19.y + 0].w + add r21.y, -r21.y, l(0.500000) + utof r21.z, r18.y + ult r21.w, r18.y, l(2) + and r21.w, r21.w, l(2) + dp2 r21.w, r24.xzxx, icb[r21.w + 0].xzxx + mul r21.w, r21.w, icb[r18.y + 4].z + div r21.w, r21.w, |r20.y| + mad r21.z, r21.w, r21.y, r21.z + add r21.z, r21.z, l(0.500000) + mul_sat r22.x, r21.z, l(0.166666672) + iadd r21.z, l(-1), icb[r18.y + 4].y + dp2 r21.z, r24.yzyy, icb[r21.z + 0].xyxx + mul r18.y, r21.z, icb[r18.y + 4].w + div r18.y, r18.y, |r20.y| + mad_sat r22.y, -r18.y, r21.y, l(0.500000) + mad r19.zw, r22.xxxy, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy + endif + sample_l_indexable(texture2d)(float,float,float,float) r18.y, r19.zwzz, t16.yxzw, s0, l(0.000000) + mul r18.z, r18.y, r18.z + endif + mul r15.x, r15.x, r18.z + lt r18.y, l(0.000100), r15.x + if_nz r18.y + if_nz r19.x + add r18.y, l(1.000000), -cb3[r17.z + 6].w + dp3 r18.z, r9.xyzx, r23.yzwy + add_sat r18.z, r18.z, l(0.500000) + mad r19.y, r18.z, l(-2.000000), l(3.000000) + mul r18.z, r18.z, r18.z + mul r18.z, r18.z, r19.y + mad r18.y, r18.z, cb3[r17.z + 6].w, r18.y + mul r18.y, r18.y, cb3[r17.z + 6].x + mul r18.y, r15.x, r18.y + add r19.yzw, -r16.xxyz, cb3[r15.y + 6].xxyz + mad r19.yzw, r18.yyyy, r19.yyzw, r16.xxyz + endif + if_z r19.x + dp3 r18.y, r7.xyzx, r23.yzwy + mov_sat r18.z, r18.y + if_nz cb3[r15.z + 6].w + if_z r16.w + ftoi r16.w, cb3[r15.z + 6].x + else + add r21.yzw, v2.xxyz, -cb3[r18.x + 6].xxyz + lt r22.xyz, |r21.zwwz|, |r21.yyzy| + and r20.y, r22.y, r22.x + lt r21.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r21.yyzw + ushr r22.x, cb3[r17.y + 6].w, l(24) + ubfe r22.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb3[r17.y + 6].wwww + movc r21.y, r21.y, r22.x, r22.y + and r17.y, l(255), cb3[r17.y + 6].w + movc r17.y, r21.z, r22.w, r17.y + ubfe r21.z, l(8), l(8), cb3[r15.z + 6].x + and r22.x, l(255), cb3[r15.z + 6].x + movc r21.z, r21.w, r21.z, r22.x + movc r17.y, r22.z, r17.y, r21.z + movc r17.y, r20.y, r21.y, r17.y + ilt r20.y, r17.y, l(80) + movc r16.w, r20.y, r17.y, l(-1) + endif + ige r17.y, r16.w, l(0) + if_nz r17.y + add r21.yzw, v2.xxyz, -cb3[r18.x + 6].xxyz + ishl r17.y, r16.w, l(2) + dp3 r18.x, r21.yzwy, r21.yzwy + max r18.x, r18.x, l(1.175494351E-38) + rsq r18.x, r18.x + mul r21.yzw, r18.xxxx, r21.yyzw + mad r21.yzw, -r21.yyzw, cb4[r16.w + 288].xxxx, v2.xxyz + mul r18.x, l(5.000000), cb4[r16.w + 288].y + mad r21.yzw, r9.xxyz, r18.xxxx, r21.yyzw + mul r22.xyzw, r21.zzzz, cb4[r17.y + 65].xyzw + mad r22.xyzw, cb4[r17.y + 64].xyzw, r21.yyyy, r22.xyzw + mad r22.xyzw, cb4[r17.y + 66].xyzw, r21.wwww, r22.xyzw + add r22.xyzw, r22.xyzw, cb4[r17.y + 67].xyzw + div r21.yzw, r22.xxyz, r22.wwww + ge r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.yzwy + ge r24.xyz, r21.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) + add r25.xy, -cb4[r16.w + 344].xyxx, cb4[r16.w + 344].zwzz + mad r21.yz, r21.yyzy, r25.xxyx, cb4[r16.w + 344].xxyx + mad r25.xy, r21.yzyy, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r25.xy, r25.xyxx + mad r21.yz, r21.yyzy, cb4[400].zzwz, -r25.xxyx + add r26.xyzw, r21.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r25.zw, -r21.yyyz, l(0.000000, 0.000000, 1.000000, 1.000000) + min r26.xz, r21.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r21.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r21.yz, r27.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r21.yyzy + mul r30.xy, r21.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r21.yz, -r26.xxzx, r26.xxzx, r25.zzwz + add r21.yz, r21.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r31.xy, r21.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r21.yz, r26.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r30.z, r31.x + mov r30.w, r21.y + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r21.z + mov r28.z, r29.y + mov r28.w, r27.z + add r27.xyz, r28.zywz, r31.zywz + div r29.xyz, r29.xzwx, r26.zwyz + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.yxzy, cb4[400].xxxx + div r28.xyz, r28.zywz, r27.xyzx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb4[400].yyyy + mov r29.w, r28.x + mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r29.ywxw + mad r21.yz, r25.xxyx, cb4[400].xxyx, r29.zzwz + mov r28.w, r29.y + mov r29.yw, r28.yyyz + mad r31.xyzw, r25.xyxy, cb4[400].xyxy, r29.xyzy + mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz + mad r25.xyzw, r25.xyxy, cb4[400].xyxy, r29.xwzw + mul r29.xyzw, r26.zwyz, r27.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r30.xyxx, t2.xxxx, s2, r21.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.zwzz, t2.xxxx, s2, r21.w + mul r18.x, r18.x, r29.y + mad r17.y, r29.x, r17.y, r18.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r21.yzyy, t2.xxxx, s2, r21.w + mad r17.y, r29.z, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.xyxx, t2.xxxx, s2, r21.w + mad r17.y, r29.w, r18.x, r17.y + mul r29.xyzw, r26.xyzw, r27.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r31.xyxx, t2.xxxx, s2, r21.w + mad r17.y, r29.x, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r31.zwzz, t2.xxxx, s2, r21.w + mad r17.y, r29.y, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.zwzz, t2.xxxx, s2, r21.w + mad r17.y, r29.z, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r25.xyxx, t2.xxxx, s2, r21.w + mad r17.y, r29.w, r18.x, r17.y + or r22.xyz, r22.xyzx, r24.xyzx + or r18.x, r22.y, r22.x + or r18.x, r22.z, r18.x + and r20.y, r21.w, l(0x7fffffff) + ult r20.y, l(0x7f800000), r20.y + or r18.x, r18.x, r20.y + mul r20.y, r26.y, r27.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.y, r25.zwzz, t2.xxxx, s2, r21.w + mad r17.y, r20.y, r21.y, r17.y + add r17.y, r17.y, l(-1.000000) + mad r16.w, cb4[r16.w + 288].w, r17.y, l(1.000000) + movc r16.w, r18.x, l(1.000000), r16.w + else + dp3 r17.y, r8.xyzx, r23.yzwy + add_sat r16.w, r17.y, l(1.000000) + endif + else + mov r16.w, l(1.000000) + endif + if_z cb3[r15.z + 6].w + mul r21.yzw, r15.xxxx, cb3[r15.y + 6].xxyz + add r17.y, l(1.000000), -cb3[r17.z + 6].y + max r18.x, r21.z, r21.y + max r18.x, r21.w, r18.x + mul r18.x, r9.w, r18.x + max r18.x, r18.x, l(1.000000) + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x + mad r17.y, r18.x, cb3[r17.z + 6].y, r17.y + mul r21.yzw, r17.yyyy, cb3[r15.y + 6].xxyz + mul r17.y, l(0.250000), cb3[r17.z + 6].x + add_sat r18.x, r18.y, l(0.500000) + mad r20.y, -cb3[r17.z + 6].x, l(0.250000), l(1.000000) + mad r17.y, r18.x, r20.y, r17.y + mul r21.yzw, r17.yyyy, r21.yyzw + mov r22.xyz, r20.xzwx + mov r24.xyz, r20.xzwx + mov r17.y, l(1.000000) + mov r18.x, l(0) + else + ieq r20.y, l(3), cb3[r15.z + 6].w + if_nz r20.y + mad r25.xy, cb3[r17.z + 6].xxxx, l(-0.600000, -0.399999976, 0.000000, 0.000000), l(0.800000, 0.900000, 0.000000, 0.000000) + add r20.y, -r25.x, r25.y + add r22.w, r21.x, -r25.x + div r20.y, l(1.000000, 1.000000, 1.000000, 1.000000), r20.y + mul_sat r20.y, r20.y, r22.w + mad r22.w, r20.y, l(-2.000000), l(3.000000) + mul r20.y, r20.y, r20.y + mul r20.y, r20.y, r22.w + mul r20.y, r16.w, r20.y + mul r15.x, r15.x, r20.y + mul r25.xyz, r23.wyzw, cb0[6].xyzx + mad r25.xyz, cb0[6].zxyz, r23.yzwy, -r25.xyzx + mul r26.xyz, r25.xyzx, cb0[6].zxyz + mad r25.xyz, cb0[6].yzxy, r25.yzxy, -r26.xyzx + dp3 r20.y, r25.xyzx, r25.xyzx + rsq r20.y, r20.y + mul r25.xyz, r20.yyyy, r25.xyzx + dp3_sat r18.z, r7.xyzx, -r25.xyzx + mad r22.xyz, cb3[r17.z + 6].yyyy, r4.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mov r24.xyz, l(0,0,0,0) + mov r17.y, l(1.000000) + mov r18.x, l(0) + else + ieq r20.y, l(1), cb3[r15.z + 6].w + if_nz r20.y + add r18.y, r18.y, cb3[r17.z + 6].x + max_sat r18.y, r18.y, l(-1.000000) + mul r18.z, r16.w, r18.y + mul r24.xyz, r6.xyzx, cb3[r17.z + 6].yyyy + mov r17.y, l(1.000000) + mov r18.x, l(0) + else + ieq r16.w, l(2), cb3[r15.z + 6].w + if_nz r16.w + add r18.y, l(0.050000), cb3[r17.z + 6].x + add r18.y, r3.z, -r18.y + mul_sat r18.y, r18.y, l(-10.000000) + mad r22.w, r18.y, l(-2.000000), l(3.000000) + mul r18.y, r18.y, r18.y + mul r18.y, r18.y, r22.w + add r22.w, l(1.000000), -cb3[r17.z + 6].z + mad r22.w, r5.x, cb3[r17.z + 6].z, r22.w + mul r17.y, r18.y, r22.w + else + mov r17.y, l(1.000000) + endif + and r18.x, r16.w, cb3[r17.z + 6].y + mov r24.xyz, l(0,0,0,0) + endif + and r22.xyz, r11.xyzx, r20.yyyy + endif + mov r21.yzw, cb3[r15.y + 6].xxyz + endif + ine r15.y, l(3), cb3[r15.z + 6].w + if_nz r15.y + mad r15.y, r18.x, r6.w, r5.y + mad r23.yzw, r0.xxyz, r1.wwww, r23.yyzw + dp3 r15.z, r23.yzwy, r23.yzwy + rsq r15.z, r15.z + mul r23.yzw, r15.zzzz, r23.yyzw + dp3 r15.z, r3.xywx, r23.yzwy + mul r16.w, r15.y, r15.y + mad r17.z, r15.z, r16.w, -r15.z + mad r15.z, r17.z, r15.z, l(1.000000) + mul r15.z, r15.z, r15.z + ne r17.z, r15.z, r16.w + div r15.z, r16.w, r15.z + movc r15.z, r17.z, r15.z, l(1.000000) + mad r15.y, r23.x, l(2.000000), r15.y + add r15.y, r15.y, l(0.000100) + div r15.y, l(0.500000), r15.y + mad r15.y, r15.z, r15.y, l(-0.0000610351562) + max r15.y, r15.y, l(0.000000) + min r15.y, r15.y, l(20.000000) + mul r23.yzw, r13.xxyz, r15.yyyy + mul r23.yzw, r17.yyyy, r23.yyzw + mul r18.xyw, r23.yzyw, cb3[r18.w + 6].zzzz + else + mov r18.xyw, l(0,0,0,0) + endif + mul r15.xyz, r15.xxxx, r21.yzwy + add r21.yzw, r22.xxyz, -r24.xxyz + mad r21.yzw, r18.zzzz, r21.yyzw, r24.xxyz + mul r21.yzw, r15.xxyz, r21.yyzw + mul r15.xyz, r18.xywx, r15.xyzx + mul r15.xyz, r18.zzzz, r15.xyzx + mad r15.xyz, r21.yzwy, r14.zzzz, r15.xyzx + add r16.xyz, r15.xyzx, r16.xyzx + endif + else + mov r19.x, l(0) + endif + movc r16.xyz, r19.xxxx, r19.yzwy, r16.xyzx + endif + endif + mov r13.w, r17.x + endloop + mov r14.xyw, r16.xyxz + iadd r10.z, r10.z, l(1) +endloop +lt r0.x, l(0.500000), cb5[3].x +if_nz r0.x + dp3 r0.x, r14.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r3.xyz, -r0.xxxx, r14.xywx + mad r0.xyz, cb5[3].zzzz, r3.xyzx, r0.xxxx + add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) + mad r0.xyz, cb5[3].wwww, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mul r3.xyz, r0.xyzx, cb5[3].yyyy + mad r0.xyz, -r0.xyzx, cb5[3].yyyy, cb5[7].xyzx + mad r0.xyz, cb5[7].wwww, r0.xyzx, r3.xyzx + add r2.w, l(1.000000), -cb5[4].x + mov_sat r17.w, r17.w + add r3.x, -r17.w, l(1.000000) + add r3.y, -r2.w, l(1.000000) + add r2.w, -r2.w, r3.x + div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y + mul_sat r2.w, r2.w, r3.x + mad r3.x, r2.w, l(-2.000000), l(3.000000) + mul r2.w, r2.w, r2.w + mul r2.w, r2.w, r3.x + mul r3.xyz, r2.wwww, cb5[8].xyzx + mad r14.xyw, r3.xyxz, cb5[4].yyyy, r0.xyxz +endif +div r0.xyz, r14.xywx, cb0[109].xxxx +eq r2.w, l(1.000000), cb5[2].x +movc o0.w, r2.w, r4.w, l(1.000000) +lt r2.w, cb0[198].w, l(0.500000) +if_nz r2.w + mul r0.w, r0.w, r1.w + mad r1.w, v2.y, cb0[156].w, cb0[157].w + max r1.w, r1.w, l(0.010000) + mad r2.w, r0.w, cb0[154].w, -cb0[153].w + max r2.w, r2.w, l(0.000000) + mul r3.x, r1.w, l(-1.442695) + exp r3.x, r3.x + add r3.x, -r3.x, l(1.000000) + div r1.w, r3.x, r1.w + mad r3.x, v2.y, cb0[156].w, cb0[158].w + mul r3.x, r3.x, l(1.442695) + exp r3.x, r3.x + mul r1.w, r1.w, r3.x + mul r1.w, r1.w, -r2.w + mul r3.xyz, r1.wwww, cb0[155].xyzx + mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) + exp r3.xyz, r3.xyzx + dp3 r1.w, -r2.xyzx, cb0[154].xyzx + mad r2.w, cb0[155].w, cb0[155].w, l(1.000000) + dp2 r3.w, r1.wwww, cb0[155].wwww + add r2.w, r2.w, -r3.w + lt r3.w, l(0.000000), cb0[163].z + if_nz r3.w + and r10.w, l(7), cb0[108].w + imad r4.xyz, r10.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r3.w, r4.y, r4.z, r4.x + imad r4.x, r4.z, r3.w, r4.y + imad r4.y, r3.w, r4.x, r4.z + imad r5.x, r4.x, r4.y, r3.w + dp3 r1.x, -r2.xyzx, -r1.xyzx + add r1.y, v2.y, -cb0[44].y + lt r1.z, l(5.960464478E-08), r1.x + div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x + and r1.x, r1.x, r1.z + mul r1.x, r1.x, cb0[163].w + div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w + mul r2.x, r1.z, r1.x + mad r2.y, r2.x, r1.y, cb0[44].y + mad r1.y, -r2.x, r1.y, r1.y + mul r2.x, r1.y, cb0[159].z + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r2.z, r2.y, -cb0[159].x + mul r2.z, r2.z, cb0[159].z + max r2.xz, r2.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + exp r2.z, -r2.z + mul r2.z, r2.z, cb0[159].y + lt r3.w, l(5.960464478E-08), |r2.x| + exp r4.z, -r2.x + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r2.x + mad r2.x, -r2.x, l(0.240226507), l(0.693147182) + movc r2.x, r3.w, r4.z, r2.x + add r2.y, r2.y, -cb0[162].z + mul r2.y, r2.y, cb0[162].x + max r2.y, r2.y, l(-127.000000) + exp r2.y, -r2.y + mul r2.y, r2.y, cb0[162].y + lt r3.w, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r3.w, r4.z, r1.y + mul r1.y, r1.y, r2.y + mad r1.y, r2.z, r2.x, r1.y + mad r1.x, -r1.x, r1.z, l(1.000000) + mul r1.x, r0.w, r1.x + mul r1.x, r1.x, r1.y + exp r1.x, -r1.x + min r1.x, r1.x, l(1.000000) + max r1.x, r1.x, cb0[161].w + mad_sat r1.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx + add r1.x, r1.y, r1.x + add r1.x, r1.z, r1.x + min r1.x, r1.x, l(1.000000) + imad r5.y, r4.y, r5.x, r4.x + ushr r1.yz, r5.xxyx, l(0, 16, 16, 0) + utof r1.yz, r1.yyzy + mad r1.yz, r1.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + mad r1.yz, r1.yyzy, cb0[167].wwww, r5.zzwz + mul r2.xy, r1.yzyy, cb0[165].xyxx + mad r1.y, v0.w, cb0[164].x, cb0[164].y + log r1.y, r1.y + mul r1.y, r1.y, cb0[164].z + div r2.z, r1.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t17.xyzw, s0, l(0.000000) + add r1.y, v0.w, -cb0[166].z + mul_sat r1.y, r1.y, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r1.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.xyz, r1.yyyy, cb0[161].xyzx + mad r2.xyz, r2.xyzx, r4.wwww, r4.xyzx + mul r1.x, r1.x, r4.w + else + add r1.y, v2.y, -cb0[44].y + mul r1.z, r1.y, cb0[159].z + mul r1.y, r1.y, cb0[162].x + max r1.yz, r1.yyzy, l(0.000000, -127.000000, -127.000000, 0.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r1.z| + exp r4.y, -r1.z + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r1.z + mad r1.z, -r1.z, l(0.240226507), l(0.693147182) + movc r1.z, r4.x, r4.y, r1.z + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.y, r4.z, r1.y + mul r1.y, r1.y, r4.x + mad r1.y, r3.w, r1.z, r1.y + mul r1.y, r0.w, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.w, r1.y, r4.x + add r0.w, r4.y, r0.w + min r1.x, r0.w, l(1.000000) + add r0.w, -r1.x, l(1.000000) + mul r2.xyz, r0.wwww, cb0[161].xyzx + endif + mul r4.xyz, r1.xxxx, r3.xyzx + mad r0.w, r1.w, r1.w, l(1.000000) + mul r0.w, r0.w, l(0.0596831031) + mad r1.yzw, cb0[156].xxyz, r0.wwww, cb0[158].xxyz + mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) + mul r3.w, r2.w, l(12.566371) + sqrt r2.w, r2.w + mul r2.w, r2.w, r3.w + max r2.w, r2.w, l(0.001000) + div r0.w, r0.w, r2.w + mad_sat r1.yzw, cb0[157].xxyz, r0.wwww, r1.yyzw + mul r1.yzw, r1.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) + add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r1.yzw, r1.yyzw, r3.xxyz + mad r1.xyz, r1.yzwy, r1.xxxx, r2.xyzx + mad o0.xyz, r0.xyzx, r4.xyzx, r1.xyzx +else + mov o0.xyz, r0.xyzx +endif +mov o1.z, l(1.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x620A40FD.cso b/src/games/endfield/deferred-lighting/0x620A40FD.cso new file mode 100644 index 0000000000000000000000000000000000000000..d26444eb8ffa22b0792972d5d54443b410f47146 GIT binary patch literal 27940 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 n{<+2b*yn3ter=Z^4?TDw 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0.asm new file mode 100644 index 0000000000..b6581c2559 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0.asm @@ -0,0 +1,945 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Jan 30 20:20:39 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture2d (float,float,float,float) t19 +dcl_resource_texture2d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture3d (float,float,float,float) t23 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 26 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t20.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t21.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t22.xyzw +mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) +ftou r1.xz, r1.xxzx +ubfe r4.x, l(7), l(3), r1.x +utof r4.x, r4.x +round_ne r1.y, r1.y +ftou r1.y, r1.y +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r5.y, -r4.y, l(1.000000) +lt r4.y, r5.y, l(0.000000) +ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) +movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) +mul r4.zw, r4.zzzw, r6.xxxy +movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx +dp3 r2.x, r5.xyzx, r5.xyzx +rsq r2.x, r2.x +mul r5.xyz, r2.xxxx, r5.xyzx +and r2.x, r1.y, l(7) +utof r2.x, r2.x +mad r2.x, r2.x, l(0.107142866), l(0.500000) +utof r4.yz, r0.xxyx +mul r6.xy, v0.xyxx, cb0[82].zwzz +mad r6.zw, r6.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r7.xy, r4.yzyy, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r7.xy, r7.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r2.y, r7.xyxx, t1.yxzw, s0, l(0.000000) +mul r7.xyzw, -r6.wwww, cb0[25].xyzw +mad r7.xyzw, cb0[24].xyzw, r6.zzzz, r7.xyzw +mad r7.xyzw, cb0[26].xyzw, r2.yyyy, r7.xyzw +add r7.xyzw, r7.xyzw, cb0[27].xyzw +div r7.xyz, r7.xyzx, r7.wwww +mul r2.y, r7.y, cb0[1].z +mad r2.y, cb0[0].z, r7.x, r2.y +mad r2.y, cb0[2].z, r7.z, r2.y +add r2.y, r2.y, cb0[3].z +eq r4.w, l(0.000000), cb0[86].w +add r8.xyz, -r7.xyzx, cb0[44].xyzx +mov r9.x, cb0[0].z +mov r9.y, cb0[1].z +mov r9.z, cb0[2].z +movc r10.xyz, r4.wwww, r8.xyzx, r9.xyzx +dp3 r4.w, r10.xyzx, r10.xyzx +max r6.z, r4.w, l(9.999999939E-09) +rsq r6.z, r6.z +mul r11.xyz, r6.zzzz, r10.xyzx +mul r4.w, r4.w, r6.z +lt r6.w, l(0.000488281250), cb0[234].x +if_nz r6.w + sample_b_indexable(texture2d)(float,float,float,float) r6.w, v1.xyxx, t19.yzwx, s1, cb0[108].x +else + mov r6.w, l(1.000000) +endif +add r6.w, -r6.w, l(1.000000) +mad_sat r8.w, r2.z, l(0.300000), l(0.250000) +mul r8.w, r8.w, cb0[222].x +mul r8.w, r6.w, r8.w +mad r8.w, r8.w, l(-0.750000), l(1.000000) +mul r3.xyz, r3.xyzx, r8.wwww +min r8.w, r2.z, l(0.300000) +mul r6.w, r6.w, cb0[222].x +mul r6.w, r6.w, l(0.500000) +add r8.w, -r2.z, r8.w +mad r12.z, r6.w, r8.w, r2.z +mul r2.zw, r2.xxxw, l(0.000000, 0.000000, 0.080000, 3.000000) +dp3 r6.w, r5.xyzx, r11.xyzx +max r8.w, r6.w, l(0.000000) +mad r13.xyzw, r12.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r9.w, r13.x, r13.x +mul r10.w, r8.w, l(-9.280000) +exp r10.w, r10.w +min r9.w, r9.w, r10.w +mad r9.w, r9.w, r13.x, r13.y +mad r13.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz +ld_indexable(texture2d)(float,float,float,float) r13.z, r0.xyzz, t6.zwxy +lt r0.z, l(0.001000), r13.z +if_nz r0.z + bfi r0.z, l(3), l(2), r1.x, l(0) + mul r1.x, r1.w, l(3.000000) + ftou r1.x, r1.x + bfi r0.z, l(2), l(0), r1.x, r0.z + utof r0.z, r0.z + mul r1.x, r0.z, l(0.0322580636) + ubfe r1.y, l(7), l(3), r1.y + utof r1.y, r1.y + mul r1.y, r1.y, l(0.00787401572) + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r6.xyxx, t9.yzwx, s1, l(0.000000) + dp3 r9.w, -r11.xyzx, r5.xyzx + add r9.w, r9.w, r9.w + mad r14.xyz, r5.xyzx, -r9.wwww, -r11.xyzx + dp3 r9.w, -cb2[0].xyzx, r14.xyzx + mad r15.xyz, cb2[0].xyzx, r9.wwww, r14.xyzx + lt r9.w, r9.w, cb2[4].z + dp3 r10.w, r15.xyzx, r15.xyzx + max r10.w, r10.w, l(0.0000610351562) + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + mul r15.xyz, r15.xyzx, cb2[4].yyyy + mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx + dp3 r10.w, r15.xyzx, r15.xyzx + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + movc r14.xyz, r9.wwww, r15.xyzx, r14.xyzx + mad r10.xyz, r10.xyzx, r6.zzzz, r14.xyzx + dp3 r6.z, r10.xyzx, r10.xyzx + max r6.z, r6.z, l(0.0000610351562) + rsq r6.z, r6.z + mul r10.xyz, r6.zzzz, r10.xyzx + dp3 r6.z, r5.xyzx, r14.xyzx + mov_sat r12.x, r6.z + dp3_sat r9.w, r5.xyzx, r10.xyzx + dp3 r10.w, r11.xyzx, r14.xyzx + min r12.y, r8.w, l(1.000000) + mul r11.w, r12.z, r12.z + mul r11.w, r11.w, r11.w + mad r12.w, r9.w, r11.w, -r9.w + mad r9.w, r12.w, r9.w, l(1.000000) + dp3_sat r10.x, r11.xyzx, r10.xyzx + add r10.x, -r10.x, l(1.000000) + mul r10.y, r10.x, r10.x + mul r10.y, r10.y, r10.y + mul r10.z, r10.x, r10.y + add r12.w, -r12.z, l(1.000000) + mad r14.x, -r12.w, l(0.383026), l(-0.0761947036) + mad r14.x, r12.w, r14.x, l(1.049970) + mad r12.w, r12.w, r14.x, l(0.409255) + min r12.w, r12.w, l(0.999000) + add r14.x, -r12.w, l(1.000000) + mad r2.x, -r2.x, l(0.080000), l(1.000000) + mad r2.x, r2.x, l(0.0476190485), r2.z + mov_sat r14.y, -r10.w + mul r14.y, r14.y, r14.y + mad r14.y, r14.y, l(-0.640000), l(1.000000) + mul r14.y, r14.y, r14.y + mad r10.x, -r10.y, r10.x, l(1.000000) + mad r10.x, r2.z, r10.x, r10.z + mul r9.w, r9.w, r9.w + div r9.w, r11.w, r9.w + mad r10.yz, -r12.yyxy, r11.wwww, r12.yyxy + mad r10.yz, r10.yyzy, r12.yyxy, r11.wwww + sqrt r10.yz, r10.yyzy + mul r10.yz, r10.yyzy, r12.xxyx + add r10.y, r10.z, r10.y + add r10.y, r10.y, l(0.000100) + div r10.y, l(0.500000), r10.y + mul r9.w, r9.w, r10.y + mul r9.w, r9.w, r10.x + min r9.w, r9.w, l(2048.000000) + mad r15.xyzw, r12.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r10.x, r15.xyxx, t8.xyzw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r10.y, r15.zwzz, t8.yxzw, s1, l(0.000000) + mul r10.x, r10.y, r10.x + mul r10.x, r12.w, r10.x + div r10.x, r10.x, r14.x + mul r10.y, r2.x, r2.x + mul r10.x, r10.x, r10.y + mad r2.x, -r2.x, r14.x, l(1.000000) + div r2.x, r10.x, r2.x + add r2.x, r2.x, r9.w + add_sat r6.w, r6.w, l(0.200000) + mov_sat r9.w, r10.w + add r9.w, r9.w, l(0.500000) + min r9.w, r9.w, l(1.000000) + mul r10.x, r6.w, r9.w + add_sat r10.y, r10.w, l(1.000000) + mad r6.w, -r6.w, r9.w, l(1.000000) + mad r6.w, r10.y, r6.w, r10.x + mul r2.x, r2.x, r6.w + mul r2.x, r1.y, r2.x + mul r10.xyz, r1.yyyy, r3.xyzx + ubfe r6.w, l(7), l(3), r1.z + utof r6.w, r6.w + mul r6.w, r6.w, l(0.00787401572) + mul r2.x, r2.x, cb2[4].x + max r2.x, r2.x, l(0.000000) + min r2.x, r2.x, l(1000.000000) + mul r2.x, r12.x, r2.x + mad r10.xyz, r10.xyzx, r6.wwww, r2.xxxx + max r2.x, r3.y, r3.x + max r2.x, r3.z, r2.x + max r2.x, r2.x, l(0.010000) + div r14.xzw, r3.xxyz, r2.xxxx + mul r2.x, r4.x, l(0.00393700786) + mul r14.xzw, r2.xxxx, r14.xxzw + add_sat r2.x, -r6.z, l(0.500000) + ne r6.w, r14.y, l(0.360000) + div r9.w, l(0.360000), r14.y + movc r6.w, r6.w, r9.w, l(1.000000) + mul r2.x, r2.x, r6.w + mad_sat r0.z, r0.z, l(0.0322580636), r6.z + add r0.z, -r12.x, r0.z + mul r12.xyw, r0.zzzz, r3.xyxz + mad r12.xyw, r14.xzxw, r2.xxxx, r12.xyxw + mad r10.xyz, r12.xywx, r1.yyyy, r10.xyzx + mul r10.xyz, r10.xyzx, cb2[1].xyzx + mov r13.w, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r12.xyw, r13.zwzz, t7.xywz, s1, cb0[108].x + add r0.z, -r13.z, l(1.000000) + mad r12.xyw, r10.xyxz, r12.xyxw, -r10.xyxz + mad r10.xyz, r0.zzzz, r12.xywx, r10.xyzx + max r0.z, r1.y, r1.w + add r0.z, -r1.w, r0.z + mad r0.z, r1.x, r0.z, r1.w + mul r1.xyw, r0.zzzz, r10.xyxz +else + mov r1.xyw, l(0,0,0,0) +endif +ne r6.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy +if_nz r6.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + mad r0.z, r0.z, l(0.750000), l(0.250000) + min r0.z, r3.w, r0.z + add r2.x, r0.z, r8.w + mad r6.z, r12.z, l(-16.000000), l(-1.000000) + exp r6.z, r6.z + log r2.x, |r2.x| + mul r2.x, r2.x, r6.z + exp r2.x, r2.x + add r2.x, r0.z, r2.x + add r2.x, r2.x, l(-1.000000) + mov_sat r10.xyz, r2.xxxx + mad r12.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) + mul r12.xyw, r0.zzzz, r12.xyxw + mad r12.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r12.xyxw + add r12.xyw, r12.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) + mul r12.xyw, r0.zzzz, r12.xyxw + mad r12.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r12.xyxw + add r12.xyw, r12.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) + mul r12.xyw, r0.zzzz, r12.xyxw + max r12.xyw, r0.zzzz, r12.xyxw +else + mov r10.xyz, r3.wwww + mov r12.xyw, r3.wwww +endif +mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r14.xyz, r7.xzyx, -r14.xyzx +max r0.z, |r14.y|, |r14.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r2.x, |r14.z|, l(-208.000000) +mul_sat r2.x, r2.x, l(0.031250) +max r0.z, r0.z, r2.x +ne r2.x, l(0.000000), cb0[210].w +lt r3.w, r0.z, l(1.000000) +and r2.x, r2.x, r3.w +if_nz r2.x + mad r14.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r14.xyz, r7.xzyx, -r14.xyzx + max r2.x, |r14.y|, |r14.x| + add r2.x, r2.x, l(-29.000000) + mul_sat r2.x, r2.x, l(0.500000) + add r3.w, |r14.z|, l(-13.000000) + mul_sat r3.w, r3.w, l(0.500000) + max r2.x, r2.x, r3.w + lt r3.w, r2.x, l(1.000000) + if_nz r3.w + mad r14.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r15.xyz, r14.xyzx, cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r15.xyw, r14.xyzx, t13.yzwx, s2, l(0.000000) + add r3.w, -r2.x, l(1.000000) + mul r6.z, l(0.500000), cb0[211].y + mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) + max r6.z, r6.z, r14.y + min r6.z, r9.w, r6.z + mul r14.w, r6.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t14.xyzw, s1, l(0.000000) + mad r6.z, r16.w, r3.w, r0.z + add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t14.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r15.yyyy, r17.xyzx + mov r17.w, r15.y + mul r17.xyzw, r3.wwww, r17.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t14.xyzw, s1, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r15.xxxx, r14.xyzx + mov r14.w, r15.x + mul r14.xyzw, r3.wwww, r14.xyzw + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r15.wwww, r16.xyzx + mul r15.xyzw, r3.wwww, r15.xyzw + else + mov r17.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r6.z, r0.z + endif + mad r16.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r16.xyz, r7.xzyx, -r16.xyzx + max r3.w, |r16.y|, |r16.x| + add r3.w, r3.w, l(-116.000000) + mul_sat r3.w, r3.w, l(0.125000) + add r9.w, |r16.z|, l(-52.000000) + mul_sat r9.w, r9.w, l(0.125000) + max r3.w, r3.w, r9.w + lt r9.w, r3.w, l(1.000000) + if_nz r9.w + mad r16.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r16.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r16.xyzx, t15.yzwx, s2, l(0.000000) + add r9.w, -r3.w, l(1.000000) + mul r2.x, r2.x, r9.w + mul r9.w, l(0.500000), cb0[211].y + mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) + max r9.w, r9.w, r16.y + min r9.w, r10.w, r9.w + mul r16.w, r9.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t16.xyzw, s1, l(0.000000) + mad r6.z, r19.w, r2.x, r6.z + add r20.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t16.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.yyyy, r20.xyzx + mov r20.w, r18.y + mad r17.xyzw, r20.xyzw, r2.xxxx, r17.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t16.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r18.xxxx, r16.xyzx + mov r16.w, r18.x + mad r14.xyzw, r16.xyzw, r2.xxxx, r14.xyzw + mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r16.xyzx + mad r15.xyzw, r18.xyzw, r2.xxxx, r15.xyzw + endif + lt r2.x, l(0.000000), r3.w + if_nz r2.x + mad r16.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r16.xyzx, cb0[211].xyzx + mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx + mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r16.xyz, r19.xyzx, r16.xyzx + min r16.xyz, r18.xyzx, r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) + add r2.x, -r0.z, l(1.000000) + mul r2.x, r2.x, r3.w + max r3.w, r19.y, r16.y + min r3.w, r18.y, r3.w + mul r16.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) + add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r20.yyyy, r19.xyzx + mov r19.w, r20.y + mad r17.xyzw, r19.xyzw, r2.xxxx, r17.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r20.xxxx, r16.xyzx + mov r16.w, r20.x + mad r14.xyzw, r16.xyzw, r2.xxxx, r14.xyzw + mad r16.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r16.xyzx + mad r15.xyzw, r20.xyzw, r2.xxxx, r15.xyzw + mad r6.z, r18.w, r2.x, r6.z + endif + mad_sat r2.x, r6.z, l(2.000000), l(-1.000000) + add r16.x, -r0.z, r2.x + add r0.z, r0.z, r2.x + mul r16.y, r0.z, l(0.500000) +else + mov r17.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r16.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r16.yyyx, cb0[213].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r13.zw, r16.yyyx, cb0[213].wwwy +mad r18.w, r13.w, l(0.375000), r13.z +add r15.xyzw, r15.xyzw, r18.xyzw +mul r18.xyzw, r16.yyyx, cb0[214].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r13.zw, r16.yyyx, cb0[214].wwwy +mad r18.w, r13.w, l(0.375000), r13.z +add r14.xyzw, r14.xyzw, r18.xyzw +mul r18.xyzw, r16.yyyx, cb0[215].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r13.zw, r16.yyyx, cb0[215].wwwy +mad r18.w, r13.w, l(0.375000), r13.z +add r16.xyzw, r17.xyzw, r18.xyzw +ge r13.zw, r6.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r13.w, r13.z +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r6.xyxx, t12.xyzw, s1, l(0.000000) + lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| + or r6.xy, r18.zwzz, r18.xyxx + or r0.z, r6.y, r6.x + if_nz r0.z + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mov r6.x, l(1.000000) + mov r6.y, r0.z + mov r2.x, l(0) + loop + ge r3.w, l(4.600000), r6.y + breakc_nz r3.w + iadd r3.w, r2.x, l(1) + mul r13.zw, r6.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) + mov r6.xy, r13.zwzz + mov r2.x, r3.w + continue + endloop + mul r17.xyzw, r6.xxxx, r17.xyzw + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb3[3].x, cb3[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r6.x, r0.z, l(0.00390625000) + mov r6.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r6.xy, r6.xyxx, t11.xyzw, s1, l(0.000000) + mad r6.xy, r6.xyxx, cb3[2].xyxx, cb3[2].zwzz + mul r18.x, r6.x, l(3.54490781) + mul r18.yzw, r6.yyyy, r17.yyzw + mul r0.z, r17.x, l(0.406976730) + exp r0.z, r0.z + mul r17.xyzw, r0.zzzz, r18.xyzw + mov r18.xyzw, r17.xyzw + mov r0.z, l(0) + loop + uge r3.w, r0.z, r2.x + breakc_nz r3.w + mul r19.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r3.w, r19.xyzw, r18.xyzw + dp2 r6.x, r19.yxyy, r18.xyxx + dp2 r6.y, r19.zxzz, r18.xzxx + dp2 r6.z, r19.wxww, r18.xwxx + iadd r9.w, r0.z, l(1) + mov r18.x, r3.w + mov r18.yzw, r6.xxyz + mov r0.z, r9.w + continue + endloop + mul r17.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r18.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r17.xyzw, r18.xyzw + dp2 r2.x, r17.yxyy, r18.xyxx + dp2 r3.w, r17.zxzz, r18.xzxx + dp2 r6.x, r17.wxww, r18.xwxx + mul r18.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r6.y, r17.xyzw, r18.xyzw + dp2 r6.z, r17.yxyy, r18.xyxx + dp2 r9.w, r17.zxzz, r18.xzxx + dp2 r10.w, r17.wxww, r18.xwxx + mul r18.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r11.w, r17.xyzw, r18.xyzw + dp2 r13.z, r17.yxyy, r18.xyxx + dp2 r13.w, r17.zxzz, r18.xzxx + dp2 r17.x, r17.wxww, r18.xwxx + mul r15.w, r0.z, l(0.886226952) + mul r15.x, r6.x, l(-1.02332675) + mul r15.y, r2.x, l(-1.02332675) + mul r15.z, r3.w, l(1.02332675) + mul r14.x, r10.w, l(-1.02332675) + mul r14.yw, r6.zzzy, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r14.z, r9.w, l(1.02332675) + mul r16.w, r11.w, l(0.886226952) + mul r16.x, r17.x, l(-1.02332675) + mul r16.yz, r13.zzwz, l(0.000000, -1.02332675, 1.02332675, 0.000000) + endif +endif +mov r5.w, l(1.000000) +dp4 r6.x, r15.xyzw, r5.xyzw +dp4 r6.y, r14.xyzw, r5.xyzw +dp4 r6.z, r16.xyzw, r5.xyzw +max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +dp3 r0.z, -r11.xyzx, r5.xyzx +add r0.z, r0.z, r0.z +mad r17.xyz, r5.xyzx, -r0.zzzz, -r11.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r2.x, r12.z, l(0.001000) +log r2.x, r2.x +mad r2.x, -r2.x, l(1.200000), l(1.000000) +add r0.z, r0.z, -r2.x +mul r13.zw, r4.yyyz, cb1[0].wwww +round_ni r13.zw, r13.zzzw +add r2.x, |r2.y|, -cb1[2].y +round_ni r2.x, r2.x +add r3.w, l(-1.000000), cb1[1].x +max r9.w, r2.x, l(0.000000) +min r3.w, r3.w, r9.w +ge r2.x, r3.w, r2.x +mad r9.w, r13.w, cb1[0].x, r13.z +ftoi r9.w, r9.w +iadd r9.w, r9.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.w, r9.w, l(0), t0.xxxx +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +and r3.w, r3.w, r9.w +and r2.x, r2.x, r3.w +mul r18.xyz, r6.xyzx, cb0[111].xxxx +dp3 r3.w, r18.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r7.w, l(1.000000) +mov r18.xyz, l(0,0,0,0) +mov r9.w, l(1.000000) +mov r10.w, r2.x +mov r11.w, l(0) +loop + lt r12.z, l(0.010000), r9.w + ine r13.z, r10.w, l(0) + and r13.z, r12.z, r13.z + if_nz r13.z + firstbit_lo r13.z, r10.w + ishl r13.w, l(1), r13.z + xor r10.w, r10.w, r13.w + ishl r13.z, r13.z, l(3) + dp4 r19.x, cb1[r13.z + 6].xyzw, r7.xyzw + dp4 r19.y, cb1[r13.z + 7].xyzw, r7.xyzw + dp4 r19.z, cb1[r13.z + 8].xyzw, r7.xyzw + ge r20.xyz, cb1[r13.z + 5].xyzx, |r19.xyzx| + and r13.w, r20.y, r20.x + and r13.w, r20.z, r13.w + if_nz r13.w + mul r13.w, l(0.100000), cb1[r13.z + 5].x + mul r20.xyz, |r19.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r20.xy, r20.xyxx, r20.xyxx + add r21.xyz, -|r19.xyzx|, cb1[r13.z + 5].xyzx + mul r21.xyz, r21.xyzx, cb1[r13.z + 9].xyzx + eq r17.w, l(1.000000), cb1[r13.z + 10].x + if_nz r17.w + dp3 r22.x, cb1[r13.z + 6].xyzx, r17.xyzx + dp3 r22.y, cb1[r13.z + 7].xyzx, r17.xyzx + dp3 r22.z, cb1[r13.z + 8].xyzx, r17.xyzx + add r23.xyz, -r19.xyzx, cb1[r13.z + 5].xyzx + div r23.xyz, r23.xyzx, r22.xyzx + add r24.xyz, -r19.xyzx, -cb1[r13.z + 5].xyzx + div r24.xyz, r24.xyzx, r22.xyzx + lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx + movc r23.xyz, r25.xyzx, r23.xyzx, r24.xyzx + min r17.w, r23.y, r23.x + min r17.w, r23.z, r17.w + mad r19.xyz, r22.xyzx, r17.wwww, r19.xyzx + else + mov r19.xyz, r17.xyzx + endif + dp3 r17.w, r19.xyzx, r19.xyzx + rsq r17.w, r17.w + mul r19.xyz, r17.wwww, r19.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + lt r23.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r22.xyz, -r22.xyzx, r23.xyzx + itof r22.xyz, r22.xyzx + dp3 r17.w, r19.xyzx, r22.xyzx + div r19.xyz, r19.xyzx, r17.wwww + lt r17.w, r19.z, l(0.000000) + add r19.zw, -|r19.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r19.zw, r19.zzzw, r22.xxxy + movc r19.xy, r17.wwww, r19.zwzz, r19.xyxx + dp4 r17.w, cb1[r13.z + 4].xyzw, r5.xyzw + max r17.w, r17.w, l(0.000000) + max r17.w, r17.w, l(0.000100) + min r18.w, r21.z, r21.y + min r18.w, r18.w, r21.x + add r19.z, r20.y, r20.x + mad r19.z, r20.z, r20.z, r19.z + mad r13.w, r13.w, r13.w, -r19.z + mul r13.w, r13.w, cb1[r13.z + 9].x + mul r13.w, r13.w, cb1[r13.z + 9].x + add r19.z, l(1.000000), -cb1[r13.z + 10].y + mul r13.w, r13.w, r19.z + mul r13.w, r13.w, l(100.000000) + mad_sat r13.w, r18.w, cb1[r13.z + 10].y, r13.w + mul r18.w, r13.w, cb1[r13.z + 10].w + mad r19.xy, r19.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r19.xy, r19.xyxx, cb1[1].wwww, cb1[2].wwww + mov r19.z, cb1[r13.z + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r19.xyz, r19.xyzx, t5.xyzw, s3, r0.z + mul r19.xyz, r19.xyzx, cb1[r13.z + 9].wwww + div r19.w, r3.w, r17.w + min r19.w, |r19.w|, l(1.000000) + mad r19.w, r19.w, l(2.000000), r3.w + add r17.w, r17.w, l(2.000000) + div r17.w, r19.w, r17.w + add r17.w, r17.w, l(-1.000000) + mad r17.w, r17.w, cb0[112].w, l(1.000000) + mul r19.xyz, r17.wwww, r19.xyzx + mul r19.xyz, r18.wwww, r19.xyzx + mad r18.xyz, r19.xyzx, r9.wwww, r18.xyzx + mad r13.z, -r13.w, cb1[r13.z + 10].w, l(1.000000) + mul r9.w, r9.w, r13.z + endif + mov r11.w, l(-1) + continue + else + mov r11.w, r12.z + break + endif + mov r11.w, r12.z +endloop +if_nz r11.w + dp3 r2.x, r17.xyzx, r17.xyzx + rsq r2.x, r2.x + mul r17.xyz, r2.xxxx, r17.xyzx + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r20.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r19.xyz, -r19.xyzx, r20.xyzx + itof r19.xyz, r19.xyzx + dp3 r2.x, r17.xyzx, r19.xyzx + div r17.xyz, r17.xyzx, r2.xxxx + lt r2.x, r17.z, l(0.000000) + add r13.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r13.zw, r13.zzzw, r19.xxxy + movc r13.zw, r2.xxxx, r13.zzzw, r17.xxxy + dp4 r2.x, cb1[3].xyzw, r5.xyzw + max r2.x, r2.x, l(0.000000) + max r2.x, r2.x, l(0.000100) + mad r13.zw, r13.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r17.xy, r13.zwzz, cb1[1].wwww, cb1[2].wwww + mov r17.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t5.xyzw, s3, r0.z + div r0.z, r3.w, r2.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r3.w + add r2.x, r2.x, l(2.000000) + div r0.z, r0.z, r2.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r17.xyz, r0.zzzz, r17.xyzx + mad r18.xyz, r17.xyzx, r9.wwww, r18.xyzx +endif +mul r17.xyz, r18.xyzx, cb0[112].zzzz +mul r17.xyz, r17.xyzx, cb0[111].yyyy +if_nz r6.w + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r18.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r2.x, -r0.z, l(1.000000) + mul r19.xyz, r2.xxxx, r17.xyzx + mad r17.xyz, r18.xyzx, r0.zzzz, r19.xyzx +endif +mul r6.xyz, r3.xyzx, r6.xyzx +mul r6.xyz, r6.xyzx, cb0[111].xxxx +mad r0.z, r2.z, r13.x, r13.y +mul r13.xyz, r0.zzzz, r17.xyzx +mul r10.xyz, r10.xyzx, r13.xyzx +mad r6.xyz, r6.xyzx, r12.xywx, r10.xyzx +mul r5.xyzw, r5.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) +dp4 r10.x, r15.xyzw, r5.xyzw +dp4 r10.y, r14.xyzw, r5.xyzw +dp4 r10.z, r16.xyzw, r5.xyzw +max r5.xyz, r10.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +mul r5.xyz, r5.xyzx, cb0[111].xxxx +mul r5.xyz, r12.xywx, r5.xyzx +max r0.z, r3.y, r3.x +max r0.z, r3.z, r0.z +max r0.z, r0.z, l(0.010000) +div r3.xyz, r3.xyzx, r0.zzzz +mul r3.xyz, r3.xyzx, r5.xyzx +mul r0.z, r4.x, l(0.00787401572) +min r2.x, r8.w, l(1.000000) +bfi r1.z, l(3), l(2), r1.z, l(0) +ftou r2.z, r2.w +bfi r1.z, l(2), l(0), r2.z, r1.z +utof r1.z, r1.z +mul r1.z, r1.z, l(0.0322580636) +mad r0.z, r0.z, r2.x, r1.z +mul r2.xzw, r0.zzzz, r3.xxyz +mad r2.xzw, r2.xxzw, l(0.318309873, 0.000000, 0.318309873, 0.318309873), r6.xxyz +add r1.xyz, r1.xywx, r2.xzwx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r7.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r4.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r7.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xzw, r0.zzzz, cb0[155].xxyz +mul r2.xzw, r2.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r2.xzw, r2.xxzw +dp3 r0.z, -r11.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r3.x, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r3.x +lt r3.x, l(0.000000), cb0[163].z +if_nz r3.x + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r11.xyzx, -r9.xyzx + add r3.z, r7.y, -cb0[44].y + lt r3.w, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.w + mul r0.x, r0.x, cb0[163].w + div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul r4.x, r0.x, r3.w + mad r5.x, r4.x, r3.z, cb0[44].y + mad r3.z, -r4.x, r3.z, r3.z + mul r4.x, r3.z, cb0[159].z + max r4.x, r4.x, l(-127.000000) + mul r3.z, r3.z, cb0[162].x + max r3.z, r3.z, l(-127.000000) + add r5.y, r5.x, -cb0[159].x + mul r5.y, r5.y, cb0[159].z + max r5.y, r5.y, l(-127.000000) + exp r5.y, -r5.y + mul r5.y, r5.y, cb0[159].y + lt r5.z, l(5.960464478E-08), |r4.x| + exp r5.w, -r4.x + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.x + mad r4.x, -r4.x, l(0.240226507), l(0.693147182) + movc r4.x, r5.z, r5.w, r4.x + add r5.x, r5.x, -cb0[162].z + mul r5.x, r5.x, cb0[162].x + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[162].y + lt r5.z, l(5.960464478E-08), |r3.z| + exp r5.w, -r3.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r3.z + mad r3.z, -r3.z, l(0.240226507), l(0.693147182) + movc r3.z, r5.z, r5.w, r3.z + mul r3.z, r3.z, r5.x + mad r3.z, r5.y, r4.x, r3.z + mad r0.x, -r0.x, r3.w, l(1.000000) + mul r0.x, r4.w, r0.x + mul r0.x, r0.x, r3.z + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r3.zw, r4.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r3.z + add r0.x, r3.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r2.y|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t10.xyzw, s1, l(0.000000) + add r0.y, |r2.y|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r7.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.y, cb0[44].y, -cb0[159].x + mul r2.y, r2.y, cb0[159].z + max r2.y, r2.y, l(-127.000000) + exp r2.y, -r2.y + mul r2.y, r2.y, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.y, r0.w, r0.y + mul r0.y, r4.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r4.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xzwx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.y, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.y, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx +// Check fog modification toggle (cb13[12].y) +// If 0 (Original), skip fog modification and output original +if_z cb13[12].y + mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx + dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) + dp3 r1.w, r8.xyzx, r8.xyzx + sqrt r1.w, r1.w + mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) + mul r2.x, r1.w, cb0[169].x + mad r1.w, -cb0[169].x, r1.w, l(1.000000) + mul r2.yzw, cb0[168].xxyz, cb0[183].wwww + mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw + sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t23.xwyz, s2, l(0.000000) + dp2 r2.x, r2.yyyy, r2.xxxx + add r1.w, r1.w, r2.x + add r2.x, r0.w, l(1.000000) + min r1.w, r1.w, r2.x + add r0.xyz, -r1.xyzx, r0.xyzx + mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx + mov o0.w, r0.w + ret +endif + +// === Simplified Fog Modification (Anti-Banding) === +// r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter (0-255) + +// Normalize colors to 0-1 range +mul r9.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r1/255 +mul r10.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 + +// Boost transmittance: transmittance = lerp(transmittance, 1, 0.35) to reduce fog density +add r11.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r11.xyz, r11.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + +// Reduce fog inscatter intensity +mul r10.xyz, r10.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + +// Standard fog blend with reduced intensity +mad r12.xyz, r9.xyzx, r11.xyzx, r10.xyzx + +// Scale back to 0-255 +mul r0.xyz, r12.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) + +// Continue with original post-fog processing +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r8.xyzx, r8.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t23.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..9cdfeebe71 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0_original_backup.asm @@ -0,0 +1,901 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Jan 30 20:20:39 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture2d (float,float,float,float) t19 +dcl_resource_texture2d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture3d (float,float,float,float) t23 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 26 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t20.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t21.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t22.xyzw +mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) +ftou r1.xz, r1.xxzx +ubfe r4.x, l(7), l(3), r1.x +utof r4.x, r4.x +round_ne r1.y, r1.y +ftou r1.y, r1.y +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r5.y, -r4.y, l(1.000000) +lt r4.y, r5.y, l(0.000000) +ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) +movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) +mul r4.zw, r4.zzzw, r6.xxxy +movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx +dp3 r2.x, r5.xyzx, r5.xyzx +rsq r2.x, r2.x +mul r5.xyz, r2.xxxx, r5.xyzx +and r2.x, r1.y, l(7) +utof r2.x, r2.x +mad r2.x, r2.x, l(0.107142866), l(0.500000) +utof r4.yz, r0.xxyx +mul r6.xy, v0.xyxx, cb0[82].zwzz +mad r6.zw, r6.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r7.xy, r4.yzyy, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r7.xy, r7.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r2.y, r7.xyxx, t1.yxzw, s0, l(0.000000) +mul r7.xyzw, -r6.wwww, cb0[25].xyzw +mad r7.xyzw, cb0[24].xyzw, r6.zzzz, r7.xyzw +mad r7.xyzw, cb0[26].xyzw, r2.yyyy, r7.xyzw +add r7.xyzw, r7.xyzw, cb0[27].xyzw +div r7.xyz, r7.xyzx, r7.wwww +mul r2.y, r7.y, cb0[1].z +mad r2.y, cb0[0].z, r7.x, r2.y +mad r2.y, cb0[2].z, r7.z, r2.y +add r2.y, r2.y, cb0[3].z +eq r4.w, l(0.000000), cb0[86].w +add r8.xyz, -r7.xyzx, cb0[44].xyzx +mov r9.x, cb0[0].z +mov r9.y, cb0[1].z +mov r9.z, cb0[2].z +movc r10.xyz, r4.wwww, r8.xyzx, r9.xyzx +dp3 r4.w, r10.xyzx, r10.xyzx +max r6.z, r4.w, l(9.999999939E-09) +rsq r6.z, r6.z +mul r11.xyz, r6.zzzz, r10.xyzx +mul r4.w, r4.w, r6.z +lt r6.w, l(0.000488281250), cb0[234].x +if_nz r6.w + sample_b_indexable(texture2d)(float,float,float,float) r6.w, v1.xyxx, t19.yzwx, s1, cb0[108].x +else + mov r6.w, l(1.000000) +endif +add r6.w, -r6.w, l(1.000000) +mad_sat r8.w, r2.z, l(0.300000), l(0.250000) +mul r8.w, r8.w, cb0[222].x +mul r8.w, r6.w, r8.w +mad r8.w, r8.w, l(-0.750000), l(1.000000) +mul r3.xyz, r3.xyzx, r8.wwww +min r8.w, r2.z, l(0.300000) +mul r6.w, r6.w, cb0[222].x +mul r6.w, r6.w, l(0.500000) +add r8.w, -r2.z, r8.w +mad r12.z, r6.w, r8.w, r2.z +mul r2.zw, r2.xxxw, l(0.000000, 0.000000, 0.080000, 3.000000) +dp3 r6.w, r5.xyzx, r11.xyzx +max r8.w, r6.w, l(0.000000) +mad r13.xyzw, r12.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r9.w, r13.x, r13.x +mul r10.w, r8.w, l(-9.280000) +exp r10.w, r10.w +min r9.w, r9.w, r10.w +mad r9.w, r9.w, r13.x, r13.y +mad r13.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz +ld_indexable(texture2d)(float,float,float,float) r13.z, r0.xyzz, t6.zwxy +lt r0.z, l(0.001000), r13.z +if_nz r0.z + bfi r0.z, l(3), l(2), r1.x, l(0) + mul r1.x, r1.w, l(3.000000) + ftou r1.x, r1.x + bfi r0.z, l(2), l(0), r1.x, r0.z + utof r0.z, r0.z + mul r1.x, r0.z, l(0.0322580636) + ubfe r1.y, l(7), l(3), r1.y + utof r1.y, r1.y + mul r1.y, r1.y, l(0.00787401572) + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r6.xyxx, t9.yzwx, s1, l(0.000000) + dp3 r9.w, -r11.xyzx, r5.xyzx + add r9.w, r9.w, r9.w + mad r14.xyz, r5.xyzx, -r9.wwww, -r11.xyzx + dp3 r9.w, -cb2[0].xyzx, r14.xyzx + mad r15.xyz, cb2[0].xyzx, r9.wwww, r14.xyzx + lt r9.w, r9.w, cb2[4].z + dp3 r10.w, r15.xyzx, r15.xyzx + max r10.w, r10.w, l(0.0000610351562) + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + mul r15.xyz, r15.xyzx, cb2[4].yyyy + mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx + dp3 r10.w, r15.xyzx, r15.xyzx + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + movc r14.xyz, r9.wwww, r15.xyzx, r14.xyzx + mad r10.xyz, r10.xyzx, r6.zzzz, r14.xyzx + dp3 r6.z, r10.xyzx, r10.xyzx + max r6.z, r6.z, l(0.0000610351562) + rsq r6.z, r6.z + mul r10.xyz, r6.zzzz, r10.xyzx + dp3 r6.z, r5.xyzx, r14.xyzx + mov_sat r12.x, r6.z + dp3_sat r9.w, r5.xyzx, r10.xyzx + dp3 r10.w, r11.xyzx, r14.xyzx + min r12.y, r8.w, l(1.000000) + mul r11.w, r12.z, r12.z + mul r11.w, r11.w, r11.w + mad r12.w, r9.w, r11.w, -r9.w + mad r9.w, r12.w, r9.w, l(1.000000) + dp3_sat r10.x, r11.xyzx, r10.xyzx + add r10.x, -r10.x, l(1.000000) + mul r10.y, r10.x, r10.x + mul r10.y, r10.y, r10.y + mul r10.z, r10.x, r10.y + add r12.w, -r12.z, l(1.000000) + mad r14.x, -r12.w, l(0.383026), l(-0.0761947036) + mad r14.x, r12.w, r14.x, l(1.049970) + mad r12.w, r12.w, r14.x, l(0.409255) + min r12.w, r12.w, l(0.999000) + add r14.x, -r12.w, l(1.000000) + mad r2.x, -r2.x, l(0.080000), l(1.000000) + mad r2.x, r2.x, l(0.0476190485), r2.z + mov_sat r14.y, -r10.w + mul r14.y, r14.y, r14.y + mad r14.y, r14.y, l(-0.640000), l(1.000000) + mul r14.y, r14.y, r14.y + mad r10.x, -r10.y, r10.x, l(1.000000) + mad r10.x, r2.z, r10.x, r10.z + mul r9.w, r9.w, r9.w + div r9.w, r11.w, r9.w + mad r10.yz, -r12.yyxy, r11.wwww, r12.yyxy + mad r10.yz, r10.yyzy, r12.yyxy, r11.wwww + sqrt r10.yz, r10.yyzy + mul r10.yz, r10.yyzy, r12.xxyx + add r10.y, r10.z, r10.y + add r10.y, r10.y, l(0.000100) + div r10.y, l(0.500000), r10.y + mul r9.w, r9.w, r10.y + mul r9.w, r9.w, r10.x + min r9.w, r9.w, l(2048.000000) + mad r15.xyzw, r12.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r10.x, r15.xyxx, t8.xyzw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r10.y, r15.zwzz, t8.yxzw, s1, l(0.000000) + mul r10.x, r10.y, r10.x + mul r10.x, r12.w, r10.x + div r10.x, r10.x, r14.x + mul r10.y, r2.x, r2.x + mul r10.x, r10.x, r10.y + mad r2.x, -r2.x, r14.x, l(1.000000) + div r2.x, r10.x, r2.x + add r2.x, r2.x, r9.w + add_sat r6.w, r6.w, l(0.200000) + mov_sat r9.w, r10.w + add r9.w, r9.w, l(0.500000) + min r9.w, r9.w, l(1.000000) + mul r10.x, r6.w, r9.w + add_sat r10.y, r10.w, l(1.000000) + mad r6.w, -r6.w, r9.w, l(1.000000) + mad r6.w, r10.y, r6.w, r10.x + mul r2.x, r2.x, r6.w + mul r2.x, r1.y, r2.x + mul r10.xyz, r1.yyyy, r3.xyzx + ubfe r6.w, l(7), l(3), r1.z + utof r6.w, r6.w + mul r6.w, r6.w, l(0.00787401572) + mul r2.x, r2.x, cb2[4].x + max r2.x, r2.x, l(0.000000) + min r2.x, r2.x, l(1000.000000) + mul r2.x, r12.x, r2.x + mad r10.xyz, r10.xyzx, r6.wwww, r2.xxxx + max r2.x, r3.y, r3.x + max r2.x, r3.z, r2.x + max r2.x, r2.x, l(0.010000) + div r14.xzw, r3.xxyz, r2.xxxx + mul r2.x, r4.x, l(0.00393700786) + mul r14.xzw, r2.xxxx, r14.xxzw + add_sat r2.x, -r6.z, l(0.500000) + ne r6.w, r14.y, l(0.360000) + div r9.w, l(0.360000), r14.y + movc r6.w, r6.w, r9.w, l(1.000000) + mul r2.x, r2.x, r6.w + mad_sat r0.z, r0.z, l(0.0322580636), r6.z + add r0.z, -r12.x, r0.z + mul r12.xyw, r0.zzzz, r3.xyxz + mad r12.xyw, r14.xzxw, r2.xxxx, r12.xyxw + mad r10.xyz, r12.xywx, r1.yyyy, r10.xyzx + mul r10.xyz, r10.xyzx, cb2[1].xyzx + mov r13.w, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r12.xyw, r13.zwzz, t7.xywz, s1, cb0[108].x + add r0.z, -r13.z, l(1.000000) + mad r12.xyw, r10.xyxz, r12.xyxw, -r10.xyxz + mad r10.xyz, r0.zzzz, r12.xywx, r10.xyzx + max r0.z, r1.y, r1.w + add r0.z, -r1.w, r0.z + mad r0.z, r1.x, r0.z, r1.w + mul r1.xyw, r0.zzzz, r10.xyxz +else + mov r1.xyw, l(0,0,0,0) +endif +ne r6.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy +if_nz r6.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + mad r0.z, r0.z, l(0.750000), l(0.250000) + min r0.z, r3.w, r0.z + add r2.x, r0.z, r8.w + mad r6.z, r12.z, l(-16.000000), l(-1.000000) + exp r6.z, r6.z + log r2.x, |r2.x| + mul r2.x, r2.x, r6.z + exp r2.x, r2.x + add r2.x, r0.z, r2.x + add r2.x, r2.x, l(-1.000000) + mov_sat r10.xyz, r2.xxxx + mad r12.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) + mul r12.xyw, r0.zzzz, r12.xyxw + mad r12.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r12.xyxw + add r12.xyw, r12.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) + mul r12.xyw, r0.zzzz, r12.xyxw + mad r12.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r12.xyxw + add r12.xyw, r12.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) + mul r12.xyw, r0.zzzz, r12.xyxw + max r12.xyw, r0.zzzz, r12.xyxw +else + mov r10.xyz, r3.wwww + mov r12.xyw, r3.wwww +endif +mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r14.xyz, r7.xzyx, -r14.xyzx +max r0.z, |r14.y|, |r14.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r2.x, |r14.z|, l(-208.000000) +mul_sat r2.x, r2.x, l(0.031250) +max r0.z, r0.z, r2.x +ne r2.x, l(0.000000), cb0[210].w +lt r3.w, r0.z, l(1.000000) +and r2.x, r2.x, r3.w +if_nz r2.x + mad r14.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r14.xyz, r7.xzyx, -r14.xyzx + max r2.x, |r14.y|, |r14.x| + add r2.x, r2.x, l(-29.000000) + mul_sat r2.x, r2.x, l(0.500000) + add r3.w, |r14.z|, l(-13.000000) + mul_sat r3.w, r3.w, l(0.500000) + max r2.x, r2.x, r3.w + lt r3.w, r2.x, l(1.000000) + if_nz r3.w + mad r14.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r15.xyz, r14.xyzx, cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r15.xyw, r14.xyzx, t13.yzwx, s2, l(0.000000) + add r3.w, -r2.x, l(1.000000) + mul r6.z, l(0.500000), cb0[211].y + mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) + max r6.z, r6.z, r14.y + min r6.z, r9.w, r6.z + mul r14.w, r6.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t14.xyzw, s1, l(0.000000) + mad r6.z, r16.w, r3.w, r0.z + add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t14.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r15.yyyy, r17.xyzx + mov r17.w, r15.y + mul r17.xyzw, r3.wwww, r17.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t14.xyzw, s1, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r15.xxxx, r14.xyzx + mov r14.w, r15.x + mul r14.xyzw, r3.wwww, r14.xyzw + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r15.wwww, r16.xyzx + mul r15.xyzw, r3.wwww, r15.xyzw + else + mov r17.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r6.z, r0.z + endif + mad r16.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r16.xyz, r7.xzyx, -r16.xyzx + max r3.w, |r16.y|, |r16.x| + add r3.w, r3.w, l(-116.000000) + mul_sat r3.w, r3.w, l(0.125000) + add r9.w, |r16.z|, l(-52.000000) + mul_sat r9.w, r9.w, l(0.125000) + max r3.w, r3.w, r9.w + lt r9.w, r3.w, l(1.000000) + if_nz r9.w + mad r16.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r16.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r16.xyzx, t15.yzwx, s2, l(0.000000) + add r9.w, -r3.w, l(1.000000) + mul r2.x, r2.x, r9.w + mul r9.w, l(0.500000), cb0[211].y + mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) + max r9.w, r9.w, r16.y + min r9.w, r10.w, r9.w + mul r16.w, r9.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t16.xyzw, s1, l(0.000000) + mad r6.z, r19.w, r2.x, r6.z + add r20.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t16.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.yyyy, r20.xyzx + mov r20.w, r18.y + mad r17.xyzw, r20.xyzw, r2.xxxx, r17.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t16.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r18.xxxx, r16.xyzx + mov r16.w, r18.x + mad r14.xyzw, r16.xyzw, r2.xxxx, r14.xyzw + mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r16.xyzx + mad r15.xyzw, r18.xyzw, r2.xxxx, r15.xyzw + endif + lt r2.x, l(0.000000), r3.w + if_nz r2.x + mad r16.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r16.xyzx, cb0[211].xyzx + mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx + mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r16.xyz, r19.xyzx, r16.xyzx + min r16.xyz, r18.xyzx, r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) + add r2.x, -r0.z, l(1.000000) + mul r2.x, r2.x, r3.w + max r3.w, r19.y, r16.y + min r3.w, r18.y, r3.w + mul r16.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) + add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r20.yyyy, r19.xyzx + mov r19.w, r20.y + mad r17.xyzw, r19.xyzw, r2.xxxx, r17.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r20.xxxx, r16.xyzx + mov r16.w, r20.x + mad r14.xyzw, r16.xyzw, r2.xxxx, r14.xyzw + mad r16.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r16.xyzx + mad r15.xyzw, r20.xyzw, r2.xxxx, r15.xyzw + mad r6.z, r18.w, r2.x, r6.z + endif + mad_sat r2.x, r6.z, l(2.000000), l(-1.000000) + add r16.x, -r0.z, r2.x + add r0.z, r0.z, r2.x + mul r16.y, r0.z, l(0.500000) +else + mov r17.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r16.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r16.yyyx, cb0[213].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r13.zw, r16.yyyx, cb0[213].wwwy +mad r18.w, r13.w, l(0.375000), r13.z +add r15.xyzw, r15.xyzw, r18.xyzw +mul r18.xyzw, r16.yyyx, cb0[214].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r13.zw, r16.yyyx, cb0[214].wwwy +mad r18.w, r13.w, l(0.375000), r13.z +add r14.xyzw, r14.xyzw, r18.xyzw +mul r18.xyzw, r16.yyyx, cb0[215].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r13.zw, r16.yyyx, cb0[215].wwwy +mad r18.w, r13.w, l(0.375000), r13.z +add r16.xyzw, r17.xyzw, r18.xyzw +ge r13.zw, r6.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r13.w, r13.z +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r6.xyxx, t12.xyzw, s1, l(0.000000) + lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| + or r6.xy, r18.zwzz, r18.xyxx + or r0.z, r6.y, r6.x + if_nz r0.z + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mov r6.x, l(1.000000) + mov r6.y, r0.z + mov r2.x, l(0) + loop + ge r3.w, l(4.600000), r6.y + breakc_nz r3.w + iadd r3.w, r2.x, l(1) + mul r13.zw, r6.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) + mov r6.xy, r13.zwzz + mov r2.x, r3.w + continue + endloop + mul r17.xyzw, r6.xxxx, r17.xyzw + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb3[3].x, cb3[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r6.x, r0.z, l(0.00390625000) + mov r6.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r6.xy, r6.xyxx, t11.xyzw, s1, l(0.000000) + mad r6.xy, r6.xyxx, cb3[2].xyxx, cb3[2].zwzz + mul r18.x, r6.x, l(3.54490781) + mul r18.yzw, r6.yyyy, r17.yyzw + mul r0.z, r17.x, l(0.406976730) + exp r0.z, r0.z + mul r17.xyzw, r0.zzzz, r18.xyzw + mov r18.xyzw, r17.xyzw + mov r0.z, l(0) + loop + uge r3.w, r0.z, r2.x + breakc_nz r3.w + mul r19.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r3.w, r19.xyzw, r18.xyzw + dp2 r6.x, r19.yxyy, r18.xyxx + dp2 r6.y, r19.zxzz, r18.xzxx + dp2 r6.z, r19.wxww, r18.xwxx + iadd r9.w, r0.z, l(1) + mov r18.x, r3.w + mov r18.yzw, r6.xxyz + mov r0.z, r9.w + continue + endloop + mul r17.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r18.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r17.xyzw, r18.xyzw + dp2 r2.x, r17.yxyy, r18.xyxx + dp2 r3.w, r17.zxzz, r18.xzxx + dp2 r6.x, r17.wxww, r18.xwxx + mul r18.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r6.y, r17.xyzw, r18.xyzw + dp2 r6.z, r17.yxyy, r18.xyxx + dp2 r9.w, r17.zxzz, r18.xzxx + dp2 r10.w, r17.wxww, r18.xwxx + mul r18.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r11.w, r17.xyzw, r18.xyzw + dp2 r13.z, r17.yxyy, r18.xyxx + dp2 r13.w, r17.zxzz, r18.xzxx + dp2 r17.x, r17.wxww, r18.xwxx + mul r15.w, r0.z, l(0.886226952) + mul r15.x, r6.x, l(-1.02332675) + mul r15.y, r2.x, l(-1.02332675) + mul r15.z, r3.w, l(1.02332675) + mul r14.x, r10.w, l(-1.02332675) + mul r14.yw, r6.zzzy, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r14.z, r9.w, l(1.02332675) + mul r16.w, r11.w, l(0.886226952) + mul r16.x, r17.x, l(-1.02332675) + mul r16.yz, r13.zzwz, l(0.000000, -1.02332675, 1.02332675, 0.000000) + endif +endif +mov r5.w, l(1.000000) +dp4 r6.x, r15.xyzw, r5.xyzw +dp4 r6.y, r14.xyzw, r5.xyzw +dp4 r6.z, r16.xyzw, r5.xyzw +max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +dp3 r0.z, -r11.xyzx, r5.xyzx +add r0.z, r0.z, r0.z +mad r17.xyz, r5.xyzx, -r0.zzzz, -r11.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r2.x, r12.z, l(0.001000) +log r2.x, r2.x +mad r2.x, -r2.x, l(1.200000), l(1.000000) +add r0.z, r0.z, -r2.x +mul r13.zw, r4.yyyz, cb1[0].wwww +round_ni r13.zw, r13.zzzw +add r2.x, |r2.y|, -cb1[2].y +round_ni r2.x, r2.x +add r3.w, l(-1.000000), cb1[1].x +max r9.w, r2.x, l(0.000000) +min r3.w, r3.w, r9.w +ge r2.x, r3.w, r2.x +mad r9.w, r13.w, cb1[0].x, r13.z +ftoi r9.w, r9.w +iadd r9.w, r9.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.w, r9.w, l(0), t0.xxxx +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +and r3.w, r3.w, r9.w +and r2.x, r2.x, r3.w +mul r18.xyz, r6.xyzx, cb0[111].xxxx +dp3 r3.w, r18.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r7.w, l(1.000000) +mov r18.xyz, l(0,0,0,0) +mov r9.w, l(1.000000) +mov r10.w, r2.x +mov r11.w, l(0) +loop + lt r12.z, l(0.010000), r9.w + ine r13.z, r10.w, l(0) + and r13.z, r12.z, r13.z + if_nz r13.z + firstbit_lo r13.z, r10.w + ishl r13.w, l(1), r13.z + xor r10.w, r10.w, r13.w + ishl r13.z, r13.z, l(3) + dp4 r19.x, cb1[r13.z + 6].xyzw, r7.xyzw + dp4 r19.y, cb1[r13.z + 7].xyzw, r7.xyzw + dp4 r19.z, cb1[r13.z + 8].xyzw, r7.xyzw + ge r20.xyz, cb1[r13.z + 5].xyzx, |r19.xyzx| + and r13.w, r20.y, r20.x + and r13.w, r20.z, r13.w + if_nz r13.w + mul r13.w, l(0.100000), cb1[r13.z + 5].x + mul r20.xyz, |r19.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r20.xy, r20.xyxx, r20.xyxx + add r21.xyz, -|r19.xyzx|, cb1[r13.z + 5].xyzx + mul r21.xyz, r21.xyzx, cb1[r13.z + 9].xyzx + eq r17.w, l(1.000000), cb1[r13.z + 10].x + if_nz r17.w + dp3 r22.x, cb1[r13.z + 6].xyzx, r17.xyzx + dp3 r22.y, cb1[r13.z + 7].xyzx, r17.xyzx + dp3 r22.z, cb1[r13.z + 8].xyzx, r17.xyzx + add r23.xyz, -r19.xyzx, cb1[r13.z + 5].xyzx + div r23.xyz, r23.xyzx, r22.xyzx + add r24.xyz, -r19.xyzx, -cb1[r13.z + 5].xyzx + div r24.xyz, r24.xyzx, r22.xyzx + lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx + movc r23.xyz, r25.xyzx, r23.xyzx, r24.xyzx + min r17.w, r23.y, r23.x + min r17.w, r23.z, r17.w + mad r19.xyz, r22.xyzx, r17.wwww, r19.xyzx + else + mov r19.xyz, r17.xyzx + endif + dp3 r17.w, r19.xyzx, r19.xyzx + rsq r17.w, r17.w + mul r19.xyz, r17.wwww, r19.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + lt r23.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r22.xyz, -r22.xyzx, r23.xyzx + itof r22.xyz, r22.xyzx + dp3 r17.w, r19.xyzx, r22.xyzx + div r19.xyz, r19.xyzx, r17.wwww + lt r17.w, r19.z, l(0.000000) + add r19.zw, -|r19.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r19.zw, r19.zzzw, r22.xxxy + movc r19.xy, r17.wwww, r19.zwzz, r19.xyxx + dp4 r17.w, cb1[r13.z + 4].xyzw, r5.xyzw + max r17.w, r17.w, l(0.000000) + max r17.w, r17.w, l(0.000100) + min r18.w, r21.z, r21.y + min r18.w, r18.w, r21.x + add r19.z, r20.y, r20.x + mad r19.z, r20.z, r20.z, r19.z + mad r13.w, r13.w, r13.w, -r19.z + mul r13.w, r13.w, cb1[r13.z + 9].x + mul r13.w, r13.w, cb1[r13.z + 9].x + add r19.z, l(1.000000), -cb1[r13.z + 10].y + mul r13.w, r13.w, r19.z + mul r13.w, r13.w, l(100.000000) + mad_sat r13.w, r18.w, cb1[r13.z + 10].y, r13.w + mul r18.w, r13.w, cb1[r13.z + 10].w + mad r19.xy, r19.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r19.xy, r19.xyxx, cb1[1].wwww, cb1[2].wwww + mov r19.z, cb1[r13.z + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r19.xyz, r19.xyzx, t5.xyzw, s3, r0.z + mul r19.xyz, r19.xyzx, cb1[r13.z + 9].wwww + div r19.w, r3.w, r17.w + min r19.w, |r19.w|, l(1.000000) + mad r19.w, r19.w, l(2.000000), r3.w + add r17.w, r17.w, l(2.000000) + div r17.w, r19.w, r17.w + add r17.w, r17.w, l(-1.000000) + mad r17.w, r17.w, cb0[112].w, l(1.000000) + mul r19.xyz, r17.wwww, r19.xyzx + mul r19.xyz, r18.wwww, r19.xyzx + mad r18.xyz, r19.xyzx, r9.wwww, r18.xyzx + mad r13.z, -r13.w, cb1[r13.z + 10].w, l(1.000000) + mul r9.w, r9.w, r13.z + endif + mov r11.w, l(-1) + continue + else + mov r11.w, r12.z + break + endif + mov r11.w, r12.z +endloop +if_nz r11.w + dp3 r2.x, r17.xyzx, r17.xyzx + rsq r2.x, r2.x + mul r17.xyz, r2.xxxx, r17.xyzx + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r20.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r19.xyz, -r19.xyzx, r20.xyzx + itof r19.xyz, r19.xyzx + dp3 r2.x, r17.xyzx, r19.xyzx + div r17.xyz, r17.xyzx, r2.xxxx + lt r2.x, r17.z, l(0.000000) + add r13.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r13.zw, r13.zzzw, r19.xxxy + movc r13.zw, r2.xxxx, r13.zzzw, r17.xxxy + dp4 r2.x, cb1[3].xyzw, r5.xyzw + max r2.x, r2.x, l(0.000000) + max r2.x, r2.x, l(0.000100) + mad r13.zw, r13.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r17.xy, r13.zwzz, cb1[1].wwww, cb1[2].wwww + mov r17.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t5.xyzw, s3, r0.z + div r0.z, r3.w, r2.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r3.w + add r2.x, r2.x, l(2.000000) + div r0.z, r0.z, r2.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r17.xyz, r0.zzzz, r17.xyzx + mad r18.xyz, r17.xyzx, r9.wwww, r18.xyzx +endif +mul r17.xyz, r18.xyzx, cb0[112].zzzz +mul r17.xyz, r17.xyzx, cb0[111].yyyy +if_nz r6.w + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r18.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r2.x, -r0.z, l(1.000000) + mul r19.xyz, r2.xxxx, r17.xyzx + mad r17.xyz, r18.xyzx, r0.zzzz, r19.xyzx +endif +mul r6.xyz, r3.xyzx, r6.xyzx +mul r6.xyz, r6.xyzx, cb0[111].xxxx +mad r0.z, r2.z, r13.x, r13.y +mul r13.xyz, r0.zzzz, r17.xyzx +mul r10.xyz, r10.xyzx, r13.xyzx +mad r6.xyz, r6.xyzx, r12.xywx, r10.xyzx +mul r5.xyzw, r5.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) +dp4 r10.x, r15.xyzw, r5.xyzw +dp4 r10.y, r14.xyzw, r5.xyzw +dp4 r10.z, r16.xyzw, r5.xyzw +max r5.xyz, r10.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +mul r5.xyz, r5.xyzx, cb0[111].xxxx +mul r5.xyz, r12.xywx, r5.xyzx +max r0.z, r3.y, r3.x +max r0.z, r3.z, r0.z +max r0.z, r0.z, l(0.010000) +div r3.xyz, r3.xyzx, r0.zzzz +mul r3.xyz, r3.xyzx, r5.xyzx +mul r0.z, r4.x, l(0.00787401572) +min r2.x, r8.w, l(1.000000) +bfi r1.z, l(3), l(2), r1.z, l(0) +ftou r2.z, r2.w +bfi r1.z, l(2), l(0), r2.z, r1.z +utof r1.z, r1.z +mul r1.z, r1.z, l(0.0322580636) +mad r0.z, r0.z, r2.x, r1.z +mul r2.xzw, r0.zzzz, r3.xxyz +mad r2.xzw, r2.xxzw, l(0.318309873, 0.000000, 0.318309873, 0.318309873), r6.xxyz +add r1.xyz, r1.xywx, r2.xzwx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r7.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r4.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r7.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xzw, r0.zzzz, cb0[155].xxyz +mul r2.xzw, r2.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r2.xzw, r2.xxzw +dp3 r0.z, -r11.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r3.x, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r3.x +lt r3.x, l(0.000000), cb0[163].z +if_nz r3.x + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r11.xyzx, -r9.xyzx + add r3.z, r7.y, -cb0[44].y + lt r3.w, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.w + mul r0.x, r0.x, cb0[163].w + div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul r4.x, r0.x, r3.w + mad r5.x, r4.x, r3.z, cb0[44].y + mad r3.z, -r4.x, r3.z, r3.z + mul r4.x, r3.z, cb0[159].z + max r4.x, r4.x, l(-127.000000) + mul r3.z, r3.z, cb0[162].x + max r3.z, r3.z, l(-127.000000) + add r5.y, r5.x, -cb0[159].x + mul r5.y, r5.y, cb0[159].z + max r5.y, r5.y, l(-127.000000) + exp r5.y, -r5.y + mul r5.y, r5.y, cb0[159].y + lt r5.z, l(5.960464478E-08), |r4.x| + exp r5.w, -r4.x + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.x + mad r4.x, -r4.x, l(0.240226507), l(0.693147182) + movc r4.x, r5.z, r5.w, r4.x + add r5.x, r5.x, -cb0[162].z + mul r5.x, r5.x, cb0[162].x + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[162].y + lt r5.z, l(5.960464478E-08), |r3.z| + exp r5.w, -r3.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r3.z + mad r3.z, -r3.z, l(0.240226507), l(0.693147182) + movc r3.z, r5.z, r5.w, r3.z + mul r3.z, r3.z, r5.x + mad r3.z, r5.y, r4.x, r3.z + mad r0.x, -r0.x, r3.w, l(1.000000) + mul r0.x, r4.w, r0.x + mul r0.x, r0.x, r3.z + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r3.zw, r4.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r3.z + add r0.x, r3.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r2.y|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t10.xyzw, s1, l(0.000000) + add r0.y, |r2.y|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r7.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.y, cb0[44].y, -cb0[159].x + mul r2.y, r2.y, cb0[159].z + max r2.y, r2.y, l(-127.000000) + exp r2.y, -r2.y + mul r2.y, r2.y, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.y, r0.w, r0.y + mul r0.y, r4.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r4.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xzwx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.y, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.y, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx +mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r8.xyzx, r8.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t23.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x7010AF4B.cso b/src/games/endfield/deferred-lighting/0x7010AF4B.cso new file mode 100644 index 0000000000000000000000000000000000000000..849917eb70e6f4148116f248d1ba84b739d24fdc GIT binary patch literal 27140 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 bg9C2U>NdKziPVqQkG%4u_0z4fdj0$_w=w^X literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm new file mode 100644 index 0000000000..284197b742 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm @@ -0,0 +1,913 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Jan 30 20:24:58 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture2d (float,float,float,float) t19 +dcl_resource_texture2d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture3d (float,float,float,float) t23 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 24 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t20.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t21.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r3.xyz, r1.wwww, r3.xyzx +utof r2.xy, r0.xyxx +mul r4.xy, v0.xyxx, cb0[82].zwzz +mad r4.zw, r4.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r5.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r5.xy, r5.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xyxx, t1.yzwx, s0, l(0.000000) +mul r5.xyzw, -r4.wwww, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r4.zzzz, r5.xyzw +mad r5.xyzw, cb0[26].xyzw, r1.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r1.w, r5.y, cb0[1].z +mad r1.w, cb0[0].z, r5.x, r1.w +mad r1.w, cb0[2].z, r5.z, r1.w +add r1.w, r1.w, cb0[3].z +eq r2.w, l(0.000000), cb0[86].w +add r6.xyz, -r5.xyzx, cb0[44].xyzx +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r8.xyz, r2.wwww, r6.xyzx, r7.xyzx +dp3 r2.w, r8.xyzx, r8.xyzx +max r4.z, r2.w, l(9.999999939E-09) +rsq r4.z, r4.z +mul r9.xyz, r4.zzzz, r8.xyzx +mul r2.w, r2.w, r4.z +lt r4.w, l(0.000488281250), cb0[234].x +if_nz r4.w + sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t19.xyzw, s1, cb0[108].x +else + mov r10.xy, l(1.000000,1.000000,0,0) +endif +min r6.w, r10.y, r10.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r7.w, r10.y, l(-1.000000) +mad r11.x, r1.z, r7.w, l(1.000000) +add r11.y, -r1.z, l(1.000000) +movc r10.yz, r4.wwww, r11.xxyx, l(0,1.000000,1.000000,0) +min r1.z, r2.z, r10.y +add r4.w, -r1.z, r2.z +mad r1.z, r6.w, r4.w, r1.z +add r2.z, -r1.z, r2.z +mad r11.z, r10.x, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xyzz, t22.xyzw +add r1.z, -r10.z, l(1.000000) +mad r1.z, r6.w, r1.z, r10.z +add r2.z, -r1.z, l(1.000000) +mad r1.z, r10.x, r2.z, r1.z +mul r10.xyz, r1.zzzz, r12.xyzx +mul r13.xyz, r1.xxxx, r10.xyzx +mad r12.xyz, r12.xyzx, r1.zzzz, -r13.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r10.xyz, r10.xyzx, r1.xxxx, r1.zzzz +dp3 r1.x, r3.xyzx, r9.xyzx +max r13.x, r1.x, l(0.000000) +mul r14.y, r11.z, r11.z +mul r15.x, r13.x, r13.x +mul r15.z, r13.x, r15.x +mul r1.x, r14.y, r14.y +mul r14.z, r14.y, r1.x +mov r13.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r16.x, l(3.327070, 1.000000, 0.000000, 0.000000), r13.xyxx +dp2 r16.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r13.xzxx +mov r14.x, l(1.000000) +dp2 r1.z, r16.xyxx, r14.xyxx +mov r15.yw, l(0,9.044010,0,1.000000) +dp3 r16.x, l(3.596850, -1.367720, 1.000000, 0.000000), r15.xzwx +dp3 r16.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r15.xyzx +mov r17.x, l(5.565890) +mov r17.yz, r15.xxzx +dp3 r16.z, l(1.000000, 19.788601, -20.212299, 0.000000), r17.xyzx +dp3 r2.z, r16.xyzx, r14.xyzx +div r1.z, r1.z, r2.z +dp2 r16.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r13.xwxx +mov r15.x, l(1.296780) +mov r15.y, r13.x +dp2 r16.y, l(1.000000, -0.755907, 0.000000, 0.000000), r15.xyxx +dp2 r2.z, r16.xyxx, r14.xyxx +dp3 r16.x, l(2.923380, 59.418800, 1.000000, 0.000000), r15.yzwy +mov r15.xw, l(20.322500,0,0,121.563004) +dp3 r16.y, l(1.000000, -27.030199, 222.591995, 0.000000), r15.xyzx +dp3 r16.z, l(626.130005, 316.627014, 1.000000, 0.000000), r15.yzwy +dp3 r4.w, r16.xyzx, r14.xyzx +div r2.z, r2.z, r4.w +mad r13.yzw, r10.xxyz, r1.zzzz, r2.zzzz +add r1.z, r1.z, r2.z +ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t6.xyzw +lt r0.z, l(0.001000), r14.x +if_nz r0.z + dp3 r0.z, -r9.xyzx, r3.xyzx + add r0.z, r0.z, r0.z + mad r15.xyz, r3.xyzx, -r0.zzzz, -r9.xyzx + dp3 r0.z, -cb2[0].xyzx, r15.xyzx + mad r16.xyz, cb2[0].xyzx, r0.zzzz, r15.xyzx + lt r0.z, r0.z, cb2[4].z + dp3 r2.z, r16.xyzx, r16.xyzx + max r2.z, r2.z, l(0.0000610351562) + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + mul r16.xyz, r16.xyzx, cb2[4].yyyy + mad r16.xyz, -cb2[0].xyzx, cb2[4].zzzz, r16.xyzx + dp3 r2.z, r16.xyzx, r16.xyzx + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + movc r15.xyz, r0.zzzz, r16.xyzx, r15.xyzx + mad r8.xyz, r8.xyzx, r4.zzzz, r15.xyzx + dp3 r0.z, r8.xyzx, r8.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r8.xyz, r0.zzzz, r8.xyzx + dp3_sat r11.x, r15.xyzx, r3.xyzx + dp3_sat r0.z, r3.xyzx, r8.xyzx + min r11.y, r13.x, l(1.000000) + mad r2.z, r0.z, r1.x, -r0.z + mad r0.z, r2.z, r0.z, l(1.000000) + dp3_sat r2.z, r9.xyzx, r8.xyzx + add r2.z, -r2.z, l(1.000000) + mul r4.z, r2.z, r2.z + mul r4.z, r4.z, r4.z + mul r4.w, r2.z, r4.z + add r6.w, -r11.z, l(1.000000) + mad r7.w, -r6.w, l(0.383026), l(-0.0761947036) + mad r7.w, r6.w, r7.w, l(1.049970) + mad r6.w, r6.w, r7.w, l(0.409255) + min r6.w, r6.w, l(0.999000) + add r7.w, -r6.w, l(1.000000) + add r8.xyz, -r10.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r8.xyz, r8.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r10.xyzx + mad r2.z, -r4.z, r2.z, l(1.000000) + mad r15.xyz, r10.xyzx, r2.zzzz, r4.wwww + mul r0.z, r0.z, r0.z + div r0.z, r1.x, r0.z + mad r4.zw, -r11.yyyx, r1.xxxx, r11.yyyx + mad r4.zw, r4.zzzw, r11.yyyx, r1.xxxx + sqrt r4.zw, r4.zzzw + mul r4.zw, r4.zzzw, r11.xxxy + add r1.x, r4.w, r4.z + add r1.x, r1.x, l(0.000100) + div r1.x, l(0.500000), r1.x + mul r0.z, r0.z, r1.x + mul r15.xyz, r0.zzzz, r15.xyzx + min r15.xyz, r15.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r16.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r16.xyxx, t8.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r1.x, r16.zwzz, t8.xyzw, s1, l(0.000000) + mul r0.z, r0.z, r1.x + mul r0.z, r6.w, r0.z + div r0.z, r0.z, r7.w + mul r16.xyz, r8.xyzx, r8.xyzx + mul r16.xyz, r0.zzzz, r16.xyzx + mad r8.xyz, -r8.xyzx, r7.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r8.xyz, r16.xyzx, r8.xyzx + add r8.xyz, r8.xyzx, r15.xyzx + mul r8.xyz, r8.xyzx, cb2[4].xxxx + max r8.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r8.xyz, r8.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r15.xyz, r11.xxxx, r12.xyzx + mad r8.xyz, r8.xyzx, r11.xxxx, r15.xyzx + mul r8.xyz, r8.xyzx, cb2[1].xyzx + mov r14.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r14.xyxx, t7.xywz, s1, cb0[108].x + add r0.z, -r14.x, l(1.000000) + mad r11.xyw, r8.xyxz, r11.xyxw, -r8.xyxz + mad r8.xyz, r0.zzzz, r11.xywx, r8.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t9.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r8.xyz, r0.zzzz, r8.xyzx +else + mov r8.xyz, l(0,0,0,0) +endif +ne r4.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy +if_nz r4.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + add r1.x, r0.z, r13.x + mad r2.z, r11.z, l(-16.000000), l(-1.000000) + exp r2.z, r2.z + log r1.x, |r1.x| + mul r1.x, r1.x, r2.z + exp r1.x, r1.x + add r1.x, r0.z, r1.x + add r1.x, r1.x, l(-1.000000) + mov_sat r11.xyw, r1.xxxx + mad r14.xyz, r12.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r12.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r12.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r11.xyw, r1.yyyy + mov r14.xyz, r1.yyyy +endif +mad r15.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[212].x +mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx +dp2 r0.z, r1.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx +mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r16.xyz, r15.xzyx, -r16.xyzx +max r0.z, |r16.y|, |r16.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.x, |r16.z|, l(-208.000000) +mul_sat r1.x, r1.x, l(0.031250) +max r0.z, r0.z, r1.x +ne r1.x, l(0.000000), cb0[210].w +lt r1.y, r0.z, l(1.000000) +and r1.x, r1.y, r1.x +if_nz r1.x + mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r16.xyz, r15.xzyx, -r16.xyzx + max r1.x, |r16.y|, |r16.x| + add r1.x, r1.x, l(-29.000000) + add r1.y, |r16.z|, l(-13.000000) + mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + max r1.x, r1.y, r1.x + lt r1.y, r1.x, l(1.000000) + if_nz r1.y + mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r16.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t13.yzwx, s2, l(0.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.z, l(0.500000), cb0[211].y + mad r4.z, -cb0[211].y, l(0.500000), l(1.000000) + max r2.z, r2.z, r16.y + min r2.z, r4.z, r2.z + mul r16.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t14.xyzw, s1, l(0.000000) + mad r2.z, r18.w, r1.y, r0.z + add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t14.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mul r19.xyzw, r1.yyyy, r19.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t14.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r17.xxxx, r16.xyzx + mov r16.w, r17.x + mul r16.xyzw, r1.yyyy, r16.xyzw + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r18.xyzx + mul r17.xyzw, r1.yyyy, r17.xyzw + else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r2.z, r0.z + endif + mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r18.xyz, r15.xzyx, -r18.xyzx + max r1.y, |r18.y|, |r18.x| + add r1.y, r1.y, l(-116.000000) + mul_sat r1.y, r1.y, l(0.125000) + add r4.z, |r18.z|, l(-52.000000) + mul_sat r4.z, r4.z, l(0.125000) + max r1.y, r1.y, r4.z + lt r4.z, r1.y, l(1.000000) + if_nz r4.z + mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r18.xyzx, cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t15.yzwx, s2, l(0.000000) + add r4.z, -r1.y, l(1.000000) + mul r1.x, r1.x, r4.z + mul r4.z, l(0.500000), cb0[211].y + mad r6.w, -cb0[211].y, l(0.500000), l(1.000000) + max r4.z, r4.z, r18.y + min r4.z, r6.w, r4.z + mul r18.w, r4.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t16.xyzw, s1, l(0.000000) + mad r2.z, r21.w, r1.x, r2.z + add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t16.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r20.yyyy, r22.xyzx + mov r22.w, r20.y + mad r19.xyzw, r22.xyzw, r1.xxxx, r19.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t16.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.xxxx, r18.xyzx + mov r18.w, r20.x + mad r16.xyzw, r18.xyzw, r1.xxxx, r16.xyzw + mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r18.xyzx + mad r17.xyzw, r20.xyzw, r1.xxxx, r17.xyzw + endif + lt r1.x, l(0.000000), r1.y + if_nz r1.x + mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r15.xyzx, cb0[211].xyzx + mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r18.xyzx + mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r20.xyzx, r15.xyzx + min r15.xyz, r18.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) + add r1.x, -r0.z, l(1.000000) + mul r1.x, r1.x, r1.y + max r1.y, r20.y, r15.y + min r1.y, r18.y, r1.y + mul r15.w, r1.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) + add r20.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t18.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r21.yyyy, r20.xyzx + mov r20.w, r21.y + mad r19.xyzw, r20.xyzw, r1.xxxx, r19.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r21.xxxx, r15.xyzx + mov r15.w, r21.x + mad r16.xyzw, r15.xyzw, r1.xxxx, r16.xyzw + mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r15.xyzx + mad r17.xyzw, r21.xyzw, r1.xxxx, r17.xyzw + mad r2.z, r18.w, r1.x, r2.z + endif + mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r1.x + add r0.z, r0.z, r1.x + mul r15.y, r0.z, l(0.500000) +else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r15.yxyy, cb0[213].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r1.xy, r15.yxyy, cb0[213].wyww +mad r18.x, r1.y, l(0.375000), r1.x +add r17.xyzw, r17.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[214].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r1.xy, r15.yxyy, cb0[214].wyww +mad r18.x, r1.y, l(0.375000), r1.x +add r16.xyzw, r16.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[215].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r1.xy, r15.yxyy, cb0[215].wyww +mad r18.x, r1.y, l(0.375000), r1.x +add r15.xyzw, r18.wyzx, r19.xyzw +ge r1.xy, r4.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r1.y, r1.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.xyxx, t12.xyzw, s1, l(0.000000) + lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| + or r1.xy, r19.zwzz, r19.xyxx + or r0.z, r1.y, r1.x + if_nz r0.z + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mov r1.x, l(1.000000) + mov r1.y, r0.z + mov r2.z, l(0) + loop + ge r4.x, l(4.600000), r1.y + breakc_nz r4.x + iadd r4.x, r2.z, l(1) + mul r4.yz, r1.xxyx, l(0.000000, 0.500000, 0.500000, 0.000000) + mov r1.xy, r4.yzyy + mov r2.z, r4.x + continue + endloop + mul r18.xyzw, r1.xxxx, r18.xyzw + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb3[3].x, cb3[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r1.x, r0.z, l(0.00390625000) + mov r1.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t11.xyzw, s1, l(0.000000) + mad r1.xy, r1.xyxx, cb3[2].xyxx, cb3[2].zwzz + mul r19.x, r1.x, l(3.54490781) + mul r19.yzw, r1.yyyy, r18.yyzw + mul r0.z, r18.x, l(0.406976730) + exp r0.z, r0.z + mul r18.xyzw, r0.zzzz, r19.xyzw + mov r19.xyzw, r18.xyzw + mov r0.z, l(0) + loop + uge r1.x, r0.z, r2.z + breakc_nz r1.x + mul r20.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r1.x, r20.xyzw, r19.xyzw + dp2 r1.y, r20.yxyy, r19.xyxx + dp2 r4.x, r20.zxzz, r19.xzxx + dp2 r4.y, r20.wxww, r19.xwxx + iadd r4.z, r0.z, l(1) + mov r19.xy, r1.xyxx + mov r19.zw, r4.xxxy + mov r0.z, r4.z + continue + endloop + mul r18.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r19.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r18.xyzw, r19.xyzw + dp2 r1.x, r18.yxyy, r19.xyxx + dp2 r1.y, r18.zxzz, r19.xzxx + dp2 r2.z, r18.wxww, r19.xwxx + mul r19.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.x, r18.xyzw, r19.xyzw + dp2 r4.y, r18.yxyy, r19.xyxx + dp2 r4.z, r18.zxzz, r19.xzxx + dp2 r6.w, r18.wxww, r19.xwxx + mul r19.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r7.w, r18.xyzw, r19.xyzw + dp2 r8.w, r18.yxyy, r19.xyxx + dp2 r9.w, r18.zxzz, r19.xzxx + dp2 r10.w, r18.wxww, r19.xwxx + mul r17.w, r0.z, l(0.886226952) + mul r17.x, r2.z, l(-1.02332675) + mul r17.yz, r1.xxyx, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r16.x, r6.w, l(-1.02332675) + mul r16.yzw, r4.yyzx, l(0.000000, -1.02332675, 1.02332675, 0.886226952) + mul r15.w, r7.w, l(0.886226952) + mul r15.x, r10.w, l(-1.02332675) + mul r15.y, r8.w, l(-1.02332675) + mul r15.z, r9.w, l(1.02332675) + endif +endif +dp3 r0.z, r17.xyzx, r3.xyzx +add r0.z, r17.w, r0.z +max r4.x, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r3.xyzx +add r0.z, r16.w, r0.z +max r4.y, r0.z, l(0.000000) +dp3 r0.z, r15.xyzx, r3.xyzx +add r0.z, r15.w, r0.z +max r4.z, r0.z, l(0.000000) +dp3 r0.z, -r9.xyzx, r3.xyzx +add r0.z, r0.z, r0.z +mad r15.xyz, r3.xyzx, -r0.zzzz, -r9.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r1.x, r11.z, l(0.001000) +log r1.x, r1.x +mad r1.x, -r1.x, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.x +mul r1.xy, r2.xyxx, cb1[0].wwww +round_ni r1.xy, r1.xyxx +add r2.z, |r1.w|, -cb1[2].y +round_ni r2.z, r2.z +add r6.w, l(-1.000000), cb1[1].x +max r7.w, r2.z, l(0.000000) +min r6.w, r6.w, r7.w +ge r2.z, r6.w, r2.z +mad r1.x, r1.y, cb1[0].x, r1.x +ftoi r1.x, r1.x +iadd r1.x, r1.x, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx +ftoi r1.y, r6.w +iadd r1.y, r1.y, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx +and r1.x, r1.y, r1.x +and r1.x, r1.x, r2.z +mul r16.xyz, r4.xyzx, cb0[111].xxxx +dp3 r1.y, r16.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r5.w, l(1.000000) +mov r3.w, l(1.000000) +mov r16.xyz, l(0,0,0,0) +mov r2.z, l(1.000000) +mov r6.w, r1.x +mov r7.w, l(0) +loop + lt r8.w, l(0.010000), r2.z + ine r9.w, r6.w, l(0) + and r9.w, r8.w, r9.w + if_nz r9.w + firstbit_lo r9.w, r6.w + ishl r10.w, l(1), r9.w + xor r6.w, r6.w, r10.w + ishl r9.w, r9.w, l(3) + dp4 r17.x, cb1[r9.w + 6].xyzw, r5.xyzw + dp4 r17.y, cb1[r9.w + 7].xyzw, r5.xyzw + dp4 r17.z, cb1[r9.w + 8].xyzw, r5.xyzw + ge r18.xyz, cb1[r9.w + 5].xyzx, |r17.xyzx| + and r10.w, r18.y, r18.x + and r10.w, r18.z, r10.w + if_nz r10.w + mul r10.w, l(0.100000), cb1[r9.w + 5].x + mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r17.xyzx|, cb1[r9.w + 5].xyzx + mul r19.xyz, r19.xyzx, cb1[r9.w + 9].xyzx + eq r11.z, l(1.000000), cb1[r9.w + 10].x + if_nz r11.z + dp3 r20.x, cb1[r9.w + 6].xyzx, r15.xyzx + dp3 r20.y, cb1[r9.w + 7].xyzx, r15.xyzx + dp3 r20.z, cb1[r9.w + 8].xyzx, r15.xyzx + add r21.xyz, -r17.xyzx, cb1[r9.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r17.xyzx, -cb1[r9.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r11.z, r21.y, r21.x + min r11.z, r21.z, r11.z + mad r17.xyz, r20.xyzx, r11.zzzz, r17.xyzx + else + mov r17.xyz, r15.xyzx + endif + dp3 r11.z, r17.xyzx, r17.xyzx + rsq r11.z, r11.z + mul r17.xyz, r11.zzzz, r17.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r21.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r11.z, r17.xyzx, r20.xyzx + div r17.xyz, r17.xyzx, r11.zzzz + lt r11.z, r17.z, l(0.000000) + add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r17.zw, r17.zzzw, r20.xxxy + movc r17.xy, r11.zzzz, r17.zwzz, r17.xyxx + dp4 r11.z, cb1[r9.w + 4].xyzw, r3.xyzw + max r11.z, r11.z, l(0.000000) + max r11.z, r11.z, l(0.000100) + min r12.w, r19.z, r19.y + min r12.w, r12.w, r19.x + add r13.x, r18.y, r18.x + mad r13.x, r18.z, r18.z, r13.x + mad r10.w, r10.w, r10.w, -r13.x + mul r10.w, r10.w, cb1[r9.w + 9].x + mul r10.w, r10.w, cb1[r9.w + 9].x + add r13.x, l(1.000000), -cb1[r9.w + 10].y + mul r10.w, r10.w, r13.x + mul r10.w, r10.w, l(100.000000) + mad_sat r10.w, r12.w, cb1[r9.w + 10].y, r10.w + mul r12.w, r10.w, cb1[r9.w + 10].w + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r17.xy, r17.xyxx, cb1[1].wwww, cb1[2].wwww + mov r17.z, cb1[r9.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t5.xyzw, s3, r0.z + mul r17.xyz, r17.xyzx, cb1[r9.w + 9].wwww + div r13.x, r1.y, r11.z + min r13.x, |r13.x|, l(1.000000) + mad r13.x, r13.x, l(2.000000), r1.y + add r11.z, r11.z, l(2.000000) + div r11.z, r13.x, r11.z + add r11.z, r11.z, l(-1.000000) + mad r11.z, r11.z, cb0[112].w, l(1.000000) + mul r17.xyz, r11.zzzz, r17.xyzx + mul r17.xyz, r12.wwww, r17.xyzx + mad r16.xyz, r17.xyzx, r2.zzzz, r16.xyzx + mad r9.w, -r10.w, cb1[r9.w + 10].w, l(1.000000) + mul r2.z, r2.z, r9.w + endif + mov r7.w, l(-1) + continue + else + mov r7.w, r8.w + break + endif + mov r7.w, r8.w +endloop +if_nz r7.w + dp3 r1.x, r15.xyzx, r15.xyzx + rsq r1.x, r1.x + mul r15.xyz, r1.xxxx, r15.xyzx + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r18.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r18.xyzx + itof r17.xyz, r17.xyzx + dp3 r1.x, r15.xyzx, r17.xyzx + div r15.xyz, r15.xyzx, r1.xxxx + lt r1.x, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r17.xxxy + movc r15.xy, r1.xxxx, r15.zwzz, r15.xyxx + mov r3.w, l(1.000000) + dp4 r1.x, cb1[3].xyzw, r3.xyzw + max r1.x, r1.x, l(0.000000) + max r1.x, r1.x, l(0.000100) + mad r3.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb1[1].wwww, cb1[2].wwww + mov r3.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s3, r0.z + div r0.z, r1.y, r1.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r1.y + add r1.x, r1.x, l(2.000000) + div r0.z, r0.z, r1.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r3.xyz, r0.zzzz, r3.xyzx + mad r16.xyz, r3.xyzx, r2.zzzz, r16.xyzx +endif +mul r3.xyz, r16.xyzx, cb0[112].zzzz +mul r3.xyz, r3.xyzx, cb0[111].yyyy +if_nz r4.w + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.x, -r0.z, l(1.000000) + mul r16.xyz, r1.xxxx, r3.xyzx + mad r3.xyz, r15.xyzx, r0.zzzz, r16.xyzx +endif +mul r4.xyz, r12.xyzx, r4.xyzx +mul r4.xyz, r4.xyzx, cb0[111].xxxx +add r0.z, -r1.z, l(1.000000) +div r0.z, r0.z, r1.z +mul r1.xyz, r0.zzzz, r10.xyzx +mad r1.xyz, r1.xyzx, r13.yzwy, r13.yzwy +mul r1.xyz, r1.xyzx, r3.xyzx +mul r1.xyz, r11.xywx, r1.xyzx +mad r1.xyz, r4.xyzx, r14.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r8.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r2.z, r2.w, cb0[154].w, -cb0[153].w +max r2.z, r2.z, l(0.000000) +mul r3.x, r0.z, l(-1.442695) +exp r3.x, r3.x +add r3.x, -r3.x, l(1.000000) +div r0.z, r3.x, r0.z +mad r3.x, r5.y, cb0[156].w, cb0[158].w +mul r3.x, r3.x, l(1.442695) +exp r3.x, r3.x +mul r0.z, r0.z, r3.x +mul r0.z, r0.z, -r2.z +mul r3.xyz, r0.zzzz, cb0[155].xyzx +mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r3.xyz, r3.xyzx +dp3 r0.z, -r9.xyzx, cb0[154].xyzx +mad r2.z, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r3.w, r0.zzzz, cb0[155].wwww +add r2.z, r2.z, -r3.w +lt r3.w, l(0.000000), cb0[163].z +if_nz r3.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r4.x, r0.y, r0.w, r0.x + dp3 r0.x, -r9.xyzx, -r7.xyzx + add r3.w, r5.y, -cb0[44].y + lt r4.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r4.z + mul r0.x, r0.x, cb0[163].w + div r4.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w + mul r4.w, r0.x, r4.z + mad r5.w, r4.w, r3.w, cb0[44].y + mad r3.w, -r4.w, r3.w, r3.w + mul r4.w, r3.w, cb0[159].z + max r4.w, r4.w, l(-127.000000) + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + add r6.w, r5.w, -cb0[159].x + mul r6.w, r6.w, cb0[159].z + max r6.w, r6.w, l(-127.000000) + exp r6.w, -r6.w + mul r6.w, r6.w, cb0[159].y + lt r7.x, l(5.960464478E-08), |r4.w| + exp r7.y, -r4.w + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r4.w + mad r4.w, -r4.w, l(0.240226507), l(0.693147182) + movc r4.w, r7.x, r7.y, r4.w + add r5.w, r5.w, -cb0[162].z + mul r5.w, r5.w, cb0[162].x + max r5.w, r5.w, l(-127.000000) + exp r5.w, -r5.w + mul r5.w, r5.w, cb0[162].y + lt r7.x, l(5.960464478E-08), |r3.w| + exp r7.y, -r3.w + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r7.x, r7.y, r3.w + mul r3.w, r3.w, r5.w + mad r3.w, r6.w, r4.w, r3.w + mad r0.x, -r0.x, r4.z, l(1.000000) + mul r0.x, r2.w, r0.x + mul r0.x, r0.x, r3.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r2.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r4.y, r0.w, r4.x, r0.y + ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r2.xxxy + mul r4.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r1.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r4.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t10.xyzw, s1, l(0.000000) + add r0.y, |r1.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r0.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r7.xyz, r0.yyyy, cb0[161].xyzx + mad r4.xyz, r7.xyzx, r4.wwww, r4.xyzx + mul r0.x, r0.x, r4.w +else + add r0.y, r5.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r1.w, cb0[44].y, -cb0[159].x + mul r1.w, r1.w, cb0[159].z + max r1.w, r1.w, l(-127.000000) + exp r1.w, -r1.w + mul r1.w, r1.w, cb0[159].y + lt r2.x, l(5.960464478E-08), |r0.w| + exp r2.y, -r0.w + add r2.y, -r2.y, l(1.000000) + div r2.y, r2.y, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r2.x, r2.y, r0.w + add r2.x, cb0[44].y, -cb0[162].z + mul r2.x, r2.x, cb0[162].x + max r2.x, r2.x, l(-127.000000) + exp r2.x, -r2.x + mul r2.x, r2.x, cb0[162].y + lt r2.y, l(5.960464478E-08), |r0.y| + exp r3.w, -r0.y + add r3.w, -r3.w, l(1.000000) + div r3.w, r3.w, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r2.y, r3.w, r0.y + mul r0.y, r0.y, r2.x + mad r0.y, r1.w, r0.w, r0.y + mul r0.y, r2.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r2.xy, r2.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r2.x + add r0.y, r2.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r2.xyw, r0.xxxx, r3.xyxz +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r1.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r2.z, l(12.566371) +sqrt r2.z, r2.z +mul r2.z, r2.z, r3.w +max r2.z, r2.z, l(0.001000) +div r1.w, r1.w, r2.z +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r3.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r4.xyzx +// Check fog modification toggle (cb13[12].y) +// If 0 (Original), skip fog modification and output original +if_z cb13[12].y + mad r0.xyz, r1.xyzx, r2.xywx, r0.xyzx + dp3 r0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) + dp3 r1.w, r6.xyzx, r6.xyzx + sqrt r1.w, r1.w + mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) + mul r2.x, r1.w, cb0[169].x + mad r1.w, -cb0[169].x, r1.w, l(1.000000) + mul r2.yzw, cb0[168].xxyz, cb0[183].wwww + mad r2.yzw, r5.xxyz, cb0[169].yyyy, r2.yyzw + sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t23.xwyz, s2, l(0.000000) + dp2 r2.x, r2.yyyy, r2.xxxx + add r1.w, r1.w, r2.x + add r2.x, r0.w, l(1.000000) + min r1.w, r1.w, r2.x + add r0.xyz, -r1.xyzx, r0.xyzx + mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx + mov o0.w, r0.w + ret +endif + +// === Simplified Fog Modification (Anti-Banding) === +// r1.xyz = scene color (0-255), r2.xyw = transmittance, r0.xyz = fog inscatter (0-255) + +// Normalize colors to 0-1 range +mul r7.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r1/255 +mul r8.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 + +// Boost transmittance: transmittance = lerp(transmittance, 1, 0.35) to reduce fog density +add r9.xyz, -r2.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r9.xyz, r9.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r2.xywx + +// Reduce fog inscatter intensity +mul r8.xyz, r8.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + +// Standard fog blend with reduced intensity +mad r10.xyz, r7.xyzx, r9.xyzx, r8.xyzx + +// Scale back to 0-255 +mul r0.xyz, r10.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) + +// Continue with original post-fog processing +dp3 r0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r6.xyzx, r6.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r5.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t23.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..03f090d638 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0_original_backup.asm @@ -0,0 +1,869 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Jan 30 20:24:58 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture2d (float,float,float,float) t19 +dcl_resource_texture2d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture3d (float,float,float,float) t23 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 24 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t20.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t21.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r3.xyz, r1.wwww, r3.xyzx +utof r2.xy, r0.xyxx +mul r4.xy, v0.xyxx, cb0[82].zwzz +mad r4.zw, r4.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r5.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r5.xy, r5.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xyxx, t1.yzwx, s0, l(0.000000) +mul r5.xyzw, -r4.wwww, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r4.zzzz, r5.xyzw +mad r5.xyzw, cb0[26].xyzw, r1.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r1.w, r5.y, cb0[1].z +mad r1.w, cb0[0].z, r5.x, r1.w +mad r1.w, cb0[2].z, r5.z, r1.w +add r1.w, r1.w, cb0[3].z +eq r2.w, l(0.000000), cb0[86].w +add r6.xyz, -r5.xyzx, cb0[44].xyzx +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r8.xyz, r2.wwww, r6.xyzx, r7.xyzx +dp3 r2.w, r8.xyzx, r8.xyzx +max r4.z, r2.w, l(9.999999939E-09) +rsq r4.z, r4.z +mul r9.xyz, r4.zzzz, r8.xyzx +mul r2.w, r2.w, r4.z +lt r4.w, l(0.000488281250), cb0[234].x +if_nz r4.w + sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t19.xyzw, s1, cb0[108].x +else + mov r10.xy, l(1.000000,1.000000,0,0) +endif +min r6.w, r10.y, r10.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r7.w, r10.y, l(-1.000000) +mad r11.x, r1.z, r7.w, l(1.000000) +add r11.y, -r1.z, l(1.000000) +movc r10.yz, r4.wwww, r11.xxyx, l(0,1.000000,1.000000,0) +min r1.z, r2.z, r10.y +add r4.w, -r1.z, r2.z +mad r1.z, r6.w, r4.w, r1.z +add r2.z, -r1.z, r2.z +mad r11.z, r10.x, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xyzz, t22.xyzw +add r1.z, -r10.z, l(1.000000) +mad r1.z, r6.w, r1.z, r10.z +add r2.z, -r1.z, l(1.000000) +mad r1.z, r10.x, r2.z, r1.z +mul r10.xyz, r1.zzzz, r12.xyzx +mul r13.xyz, r1.xxxx, r10.xyzx +mad r12.xyz, r12.xyzx, r1.zzzz, -r13.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r10.xyz, r10.xyzx, r1.xxxx, r1.zzzz +dp3 r1.x, r3.xyzx, r9.xyzx +max r13.x, r1.x, l(0.000000) +mul r14.y, r11.z, r11.z +mul r15.x, r13.x, r13.x +mul r15.z, r13.x, r15.x +mul r1.x, r14.y, r14.y +mul r14.z, r14.y, r1.x +mov r13.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r16.x, l(3.327070, 1.000000, 0.000000, 0.000000), r13.xyxx +dp2 r16.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r13.xzxx +mov r14.x, l(1.000000) +dp2 r1.z, r16.xyxx, r14.xyxx +mov r15.yw, l(0,9.044010,0,1.000000) +dp3 r16.x, l(3.596850, -1.367720, 1.000000, 0.000000), r15.xzwx +dp3 r16.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r15.xyzx +mov r17.x, l(5.565890) +mov r17.yz, r15.xxzx +dp3 r16.z, l(1.000000, 19.788601, -20.212299, 0.000000), r17.xyzx +dp3 r2.z, r16.xyzx, r14.xyzx +div r1.z, r1.z, r2.z +dp2 r16.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r13.xwxx +mov r15.x, l(1.296780) +mov r15.y, r13.x +dp2 r16.y, l(1.000000, -0.755907, 0.000000, 0.000000), r15.xyxx +dp2 r2.z, r16.xyxx, r14.xyxx +dp3 r16.x, l(2.923380, 59.418800, 1.000000, 0.000000), r15.yzwy +mov r15.xw, l(20.322500,0,0,121.563004) +dp3 r16.y, l(1.000000, -27.030199, 222.591995, 0.000000), r15.xyzx +dp3 r16.z, l(626.130005, 316.627014, 1.000000, 0.000000), r15.yzwy +dp3 r4.w, r16.xyzx, r14.xyzx +div r2.z, r2.z, r4.w +mad r13.yzw, r10.xxyz, r1.zzzz, r2.zzzz +add r1.z, r1.z, r2.z +ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t6.xyzw +lt r0.z, l(0.001000), r14.x +if_nz r0.z + dp3 r0.z, -r9.xyzx, r3.xyzx + add r0.z, r0.z, r0.z + mad r15.xyz, r3.xyzx, -r0.zzzz, -r9.xyzx + dp3 r0.z, -cb2[0].xyzx, r15.xyzx + mad r16.xyz, cb2[0].xyzx, r0.zzzz, r15.xyzx + lt r0.z, r0.z, cb2[4].z + dp3 r2.z, r16.xyzx, r16.xyzx + max r2.z, r2.z, l(0.0000610351562) + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + mul r16.xyz, r16.xyzx, cb2[4].yyyy + mad r16.xyz, -cb2[0].xyzx, cb2[4].zzzz, r16.xyzx + dp3 r2.z, r16.xyzx, r16.xyzx + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + movc r15.xyz, r0.zzzz, r16.xyzx, r15.xyzx + mad r8.xyz, r8.xyzx, r4.zzzz, r15.xyzx + dp3 r0.z, r8.xyzx, r8.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r8.xyz, r0.zzzz, r8.xyzx + dp3_sat r11.x, r15.xyzx, r3.xyzx + dp3_sat r0.z, r3.xyzx, r8.xyzx + min r11.y, r13.x, l(1.000000) + mad r2.z, r0.z, r1.x, -r0.z + mad r0.z, r2.z, r0.z, l(1.000000) + dp3_sat r2.z, r9.xyzx, r8.xyzx + add r2.z, -r2.z, l(1.000000) + mul r4.z, r2.z, r2.z + mul r4.z, r4.z, r4.z + mul r4.w, r2.z, r4.z + add r6.w, -r11.z, l(1.000000) + mad r7.w, -r6.w, l(0.383026), l(-0.0761947036) + mad r7.w, r6.w, r7.w, l(1.049970) + mad r6.w, r6.w, r7.w, l(0.409255) + min r6.w, r6.w, l(0.999000) + add r7.w, -r6.w, l(1.000000) + add r8.xyz, -r10.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r8.xyz, r8.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r10.xyzx + mad r2.z, -r4.z, r2.z, l(1.000000) + mad r15.xyz, r10.xyzx, r2.zzzz, r4.wwww + mul r0.z, r0.z, r0.z + div r0.z, r1.x, r0.z + mad r4.zw, -r11.yyyx, r1.xxxx, r11.yyyx + mad r4.zw, r4.zzzw, r11.yyyx, r1.xxxx + sqrt r4.zw, r4.zzzw + mul r4.zw, r4.zzzw, r11.xxxy + add r1.x, r4.w, r4.z + add r1.x, r1.x, l(0.000100) + div r1.x, l(0.500000), r1.x + mul r0.z, r0.z, r1.x + mul r15.xyz, r0.zzzz, r15.xyzx + min r15.xyz, r15.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r16.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r16.xyxx, t8.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r1.x, r16.zwzz, t8.xyzw, s1, l(0.000000) + mul r0.z, r0.z, r1.x + mul r0.z, r6.w, r0.z + div r0.z, r0.z, r7.w + mul r16.xyz, r8.xyzx, r8.xyzx + mul r16.xyz, r0.zzzz, r16.xyzx + mad r8.xyz, -r8.xyzx, r7.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r8.xyz, r16.xyzx, r8.xyzx + add r8.xyz, r8.xyzx, r15.xyzx + mul r8.xyz, r8.xyzx, cb2[4].xxxx + max r8.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r8.xyz, r8.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r15.xyz, r11.xxxx, r12.xyzx + mad r8.xyz, r8.xyzx, r11.xxxx, r15.xyzx + mul r8.xyz, r8.xyzx, cb2[1].xyzx + mov r14.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r14.xyxx, t7.xywz, s1, cb0[108].x + add r0.z, -r14.x, l(1.000000) + mad r11.xyw, r8.xyxz, r11.xyxw, -r8.xyxz + mad r8.xyz, r0.zzzz, r11.xywx, r8.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t9.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r8.xyz, r0.zzzz, r8.xyzx +else + mov r8.xyz, l(0,0,0,0) +endif +ne r4.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy +if_nz r4.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + add r1.x, r0.z, r13.x + mad r2.z, r11.z, l(-16.000000), l(-1.000000) + exp r2.z, r2.z + log r1.x, |r1.x| + mul r1.x, r1.x, r2.z + exp r1.x, r1.x + add r1.x, r0.z, r1.x + add r1.x, r1.x, l(-1.000000) + mov_sat r11.xyw, r1.xxxx + mad r14.xyz, r12.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r12.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r12.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r11.xyw, r1.yyyy + mov r14.xyz, r1.yyyy +endif +mad r15.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[212].x +mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx +dp2 r0.z, r1.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx +mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r16.xyz, r15.xzyx, -r16.xyzx +max r0.z, |r16.y|, |r16.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.x, |r16.z|, l(-208.000000) +mul_sat r1.x, r1.x, l(0.031250) +max r0.z, r0.z, r1.x +ne r1.x, l(0.000000), cb0[210].w +lt r1.y, r0.z, l(1.000000) +and r1.x, r1.y, r1.x +if_nz r1.x + mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r16.xyz, r15.xzyx, -r16.xyzx + max r1.x, |r16.y|, |r16.x| + add r1.x, r1.x, l(-29.000000) + add r1.y, |r16.z|, l(-13.000000) + mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + max r1.x, r1.y, r1.x + lt r1.y, r1.x, l(1.000000) + if_nz r1.y + mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r16.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t13.yzwx, s2, l(0.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.z, l(0.500000), cb0[211].y + mad r4.z, -cb0[211].y, l(0.500000), l(1.000000) + max r2.z, r2.z, r16.y + min r2.z, r4.z, r2.z + mul r16.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t14.xyzw, s1, l(0.000000) + mad r2.z, r18.w, r1.y, r0.z + add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t14.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mul r19.xyzw, r1.yyyy, r19.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t14.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r17.xxxx, r16.xyzx + mov r16.w, r17.x + mul r16.xyzw, r1.yyyy, r16.xyzw + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r18.xyzx + mul r17.xyzw, r1.yyyy, r17.xyzw + else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r2.z, r0.z + endif + mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r18.xyz, r15.xzyx, -r18.xyzx + max r1.y, |r18.y|, |r18.x| + add r1.y, r1.y, l(-116.000000) + mul_sat r1.y, r1.y, l(0.125000) + add r4.z, |r18.z|, l(-52.000000) + mul_sat r4.z, r4.z, l(0.125000) + max r1.y, r1.y, r4.z + lt r4.z, r1.y, l(1.000000) + if_nz r4.z + mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r18.xyzx, cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t15.yzwx, s2, l(0.000000) + add r4.z, -r1.y, l(1.000000) + mul r1.x, r1.x, r4.z + mul r4.z, l(0.500000), cb0[211].y + mad r6.w, -cb0[211].y, l(0.500000), l(1.000000) + max r4.z, r4.z, r18.y + min r4.z, r6.w, r4.z + mul r18.w, r4.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t16.xyzw, s1, l(0.000000) + mad r2.z, r21.w, r1.x, r2.z + add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t16.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r20.yyyy, r22.xyzx + mov r22.w, r20.y + mad r19.xyzw, r22.xyzw, r1.xxxx, r19.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t16.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.xxxx, r18.xyzx + mov r18.w, r20.x + mad r16.xyzw, r18.xyzw, r1.xxxx, r16.xyzw + mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r18.xyzx + mad r17.xyzw, r20.xyzw, r1.xxxx, r17.xyzw + endif + lt r1.x, l(0.000000), r1.y + if_nz r1.x + mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r15.xyzx, cb0[211].xyzx + mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r18.xyzx + mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r20.xyzx, r15.xyzx + min r15.xyz, r18.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) + add r1.x, -r0.z, l(1.000000) + mul r1.x, r1.x, r1.y + max r1.y, r20.y, r15.y + min r1.y, r18.y, r1.y + mul r15.w, r1.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) + add r20.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t18.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r21.yyyy, r20.xyzx + mov r20.w, r21.y + mad r19.xyzw, r20.xyzw, r1.xxxx, r19.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r21.xxxx, r15.xyzx + mov r15.w, r21.x + mad r16.xyzw, r15.xyzw, r1.xxxx, r16.xyzw + mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r15.xyzx + mad r17.xyzw, r21.xyzw, r1.xxxx, r17.xyzw + mad r2.z, r18.w, r1.x, r2.z + endif + mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r1.x + add r0.z, r0.z, r1.x + mul r15.y, r0.z, l(0.500000) +else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r15.yxyy, cb0[213].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r1.xy, r15.yxyy, cb0[213].wyww +mad r18.x, r1.y, l(0.375000), r1.x +add r17.xyzw, r17.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[214].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r1.xy, r15.yxyy, cb0[214].wyww +mad r18.x, r1.y, l(0.375000), r1.x +add r16.xyzw, r16.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[215].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r1.xy, r15.yxyy, cb0[215].wyww +mad r18.x, r1.y, l(0.375000), r1.x +add r15.xyzw, r18.wyzx, r19.xyzw +ge r1.xy, r4.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r1.y, r1.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.xyxx, t12.xyzw, s1, l(0.000000) + lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| + or r1.xy, r19.zwzz, r19.xyxx + or r0.z, r1.y, r1.x + if_nz r0.z + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mov r1.x, l(1.000000) + mov r1.y, r0.z + mov r2.z, l(0) + loop + ge r4.x, l(4.600000), r1.y + breakc_nz r4.x + iadd r4.x, r2.z, l(1) + mul r4.yz, r1.xxyx, l(0.000000, 0.500000, 0.500000, 0.000000) + mov r1.xy, r4.yzyy + mov r2.z, r4.x + continue + endloop + mul r18.xyzw, r1.xxxx, r18.xyzw + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb3[3].x, cb3[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r1.x, r0.z, l(0.00390625000) + mov r1.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t11.xyzw, s1, l(0.000000) + mad r1.xy, r1.xyxx, cb3[2].xyxx, cb3[2].zwzz + mul r19.x, r1.x, l(3.54490781) + mul r19.yzw, r1.yyyy, r18.yyzw + mul r0.z, r18.x, l(0.406976730) + exp r0.z, r0.z + mul r18.xyzw, r0.zzzz, r19.xyzw + mov r19.xyzw, r18.xyzw + mov r0.z, l(0) + loop + uge r1.x, r0.z, r2.z + breakc_nz r1.x + mul r20.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r1.x, r20.xyzw, r19.xyzw + dp2 r1.y, r20.yxyy, r19.xyxx + dp2 r4.x, r20.zxzz, r19.xzxx + dp2 r4.y, r20.wxww, r19.xwxx + iadd r4.z, r0.z, l(1) + mov r19.xy, r1.xyxx + mov r19.zw, r4.xxxy + mov r0.z, r4.z + continue + endloop + mul r18.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r19.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r18.xyzw, r19.xyzw + dp2 r1.x, r18.yxyy, r19.xyxx + dp2 r1.y, r18.zxzz, r19.xzxx + dp2 r2.z, r18.wxww, r19.xwxx + mul r19.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.x, r18.xyzw, r19.xyzw + dp2 r4.y, r18.yxyy, r19.xyxx + dp2 r4.z, r18.zxzz, r19.xzxx + dp2 r6.w, r18.wxww, r19.xwxx + mul r19.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r7.w, r18.xyzw, r19.xyzw + dp2 r8.w, r18.yxyy, r19.xyxx + dp2 r9.w, r18.zxzz, r19.xzxx + dp2 r10.w, r18.wxww, r19.xwxx + mul r17.w, r0.z, l(0.886226952) + mul r17.x, r2.z, l(-1.02332675) + mul r17.yz, r1.xxyx, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r16.x, r6.w, l(-1.02332675) + mul r16.yzw, r4.yyzx, l(0.000000, -1.02332675, 1.02332675, 0.886226952) + mul r15.w, r7.w, l(0.886226952) + mul r15.x, r10.w, l(-1.02332675) + mul r15.y, r8.w, l(-1.02332675) + mul r15.z, r9.w, l(1.02332675) + endif +endif +dp3 r0.z, r17.xyzx, r3.xyzx +add r0.z, r17.w, r0.z +max r4.x, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r3.xyzx +add r0.z, r16.w, r0.z +max r4.y, r0.z, l(0.000000) +dp3 r0.z, r15.xyzx, r3.xyzx +add r0.z, r15.w, r0.z +max r4.z, r0.z, l(0.000000) +dp3 r0.z, -r9.xyzx, r3.xyzx +add r0.z, r0.z, r0.z +mad r15.xyz, r3.xyzx, -r0.zzzz, -r9.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r1.x, r11.z, l(0.001000) +log r1.x, r1.x +mad r1.x, -r1.x, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.x +mul r1.xy, r2.xyxx, cb1[0].wwww +round_ni r1.xy, r1.xyxx +add r2.z, |r1.w|, -cb1[2].y +round_ni r2.z, r2.z +add r6.w, l(-1.000000), cb1[1].x +max r7.w, r2.z, l(0.000000) +min r6.w, r6.w, r7.w +ge r2.z, r6.w, r2.z +mad r1.x, r1.y, cb1[0].x, r1.x +ftoi r1.x, r1.x +iadd r1.x, r1.x, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx +ftoi r1.y, r6.w +iadd r1.y, r1.y, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx +and r1.x, r1.y, r1.x +and r1.x, r1.x, r2.z +mul r16.xyz, r4.xyzx, cb0[111].xxxx +dp3 r1.y, r16.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r5.w, l(1.000000) +mov r3.w, l(1.000000) +mov r16.xyz, l(0,0,0,0) +mov r2.z, l(1.000000) +mov r6.w, r1.x +mov r7.w, l(0) +loop + lt r8.w, l(0.010000), r2.z + ine r9.w, r6.w, l(0) + and r9.w, r8.w, r9.w + if_nz r9.w + firstbit_lo r9.w, r6.w + ishl r10.w, l(1), r9.w + xor r6.w, r6.w, r10.w + ishl r9.w, r9.w, l(3) + dp4 r17.x, cb1[r9.w + 6].xyzw, r5.xyzw + dp4 r17.y, cb1[r9.w + 7].xyzw, r5.xyzw + dp4 r17.z, cb1[r9.w + 8].xyzw, r5.xyzw + ge r18.xyz, cb1[r9.w + 5].xyzx, |r17.xyzx| + and r10.w, r18.y, r18.x + and r10.w, r18.z, r10.w + if_nz r10.w + mul r10.w, l(0.100000), cb1[r9.w + 5].x + mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r17.xyzx|, cb1[r9.w + 5].xyzx + mul r19.xyz, r19.xyzx, cb1[r9.w + 9].xyzx + eq r11.z, l(1.000000), cb1[r9.w + 10].x + if_nz r11.z + dp3 r20.x, cb1[r9.w + 6].xyzx, r15.xyzx + dp3 r20.y, cb1[r9.w + 7].xyzx, r15.xyzx + dp3 r20.z, cb1[r9.w + 8].xyzx, r15.xyzx + add r21.xyz, -r17.xyzx, cb1[r9.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r17.xyzx, -cb1[r9.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r11.z, r21.y, r21.x + min r11.z, r21.z, r11.z + mad r17.xyz, r20.xyzx, r11.zzzz, r17.xyzx + else + mov r17.xyz, r15.xyzx + endif + dp3 r11.z, r17.xyzx, r17.xyzx + rsq r11.z, r11.z + mul r17.xyz, r11.zzzz, r17.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r21.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r11.z, r17.xyzx, r20.xyzx + div r17.xyz, r17.xyzx, r11.zzzz + lt r11.z, r17.z, l(0.000000) + add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r17.zw, r17.zzzw, r20.xxxy + movc r17.xy, r11.zzzz, r17.zwzz, r17.xyxx + dp4 r11.z, cb1[r9.w + 4].xyzw, r3.xyzw + max r11.z, r11.z, l(0.000000) + max r11.z, r11.z, l(0.000100) + min r12.w, r19.z, r19.y + min r12.w, r12.w, r19.x + add r13.x, r18.y, r18.x + mad r13.x, r18.z, r18.z, r13.x + mad r10.w, r10.w, r10.w, -r13.x + mul r10.w, r10.w, cb1[r9.w + 9].x + mul r10.w, r10.w, cb1[r9.w + 9].x + add r13.x, l(1.000000), -cb1[r9.w + 10].y + mul r10.w, r10.w, r13.x + mul r10.w, r10.w, l(100.000000) + mad_sat r10.w, r12.w, cb1[r9.w + 10].y, r10.w + mul r12.w, r10.w, cb1[r9.w + 10].w + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r17.xy, r17.xyxx, cb1[1].wwww, cb1[2].wwww + mov r17.z, cb1[r9.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t5.xyzw, s3, r0.z + mul r17.xyz, r17.xyzx, cb1[r9.w + 9].wwww + div r13.x, r1.y, r11.z + min r13.x, |r13.x|, l(1.000000) + mad r13.x, r13.x, l(2.000000), r1.y + add r11.z, r11.z, l(2.000000) + div r11.z, r13.x, r11.z + add r11.z, r11.z, l(-1.000000) + mad r11.z, r11.z, cb0[112].w, l(1.000000) + mul r17.xyz, r11.zzzz, r17.xyzx + mul r17.xyz, r12.wwww, r17.xyzx + mad r16.xyz, r17.xyzx, r2.zzzz, r16.xyzx + mad r9.w, -r10.w, cb1[r9.w + 10].w, l(1.000000) + mul r2.z, r2.z, r9.w + endif + mov r7.w, l(-1) + continue + else + mov r7.w, r8.w + break + endif + mov r7.w, r8.w +endloop +if_nz r7.w + dp3 r1.x, r15.xyzx, r15.xyzx + rsq r1.x, r1.x + mul r15.xyz, r1.xxxx, r15.xyzx + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r18.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r18.xyzx + itof r17.xyz, r17.xyzx + dp3 r1.x, r15.xyzx, r17.xyzx + div r15.xyz, r15.xyzx, r1.xxxx + lt r1.x, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r17.xxxy + movc r15.xy, r1.xxxx, r15.zwzz, r15.xyxx + mov r3.w, l(1.000000) + dp4 r1.x, cb1[3].xyzw, r3.xyzw + max r1.x, r1.x, l(0.000000) + max r1.x, r1.x, l(0.000100) + mad r3.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb1[1].wwww, cb1[2].wwww + mov r3.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s3, r0.z + div r0.z, r1.y, r1.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r1.y + add r1.x, r1.x, l(2.000000) + div r0.z, r0.z, r1.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r3.xyz, r0.zzzz, r3.xyzx + mad r16.xyz, r3.xyzx, r2.zzzz, r16.xyzx +endif +mul r3.xyz, r16.xyzx, cb0[112].zzzz +mul r3.xyz, r3.xyzx, cb0[111].yyyy +if_nz r4.w + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.x, -r0.z, l(1.000000) + mul r16.xyz, r1.xxxx, r3.xyzx + mad r3.xyz, r15.xyzx, r0.zzzz, r16.xyzx +endif +mul r4.xyz, r12.xyzx, r4.xyzx +mul r4.xyz, r4.xyzx, cb0[111].xxxx +add r0.z, -r1.z, l(1.000000) +div r0.z, r0.z, r1.z +mul r1.xyz, r0.zzzz, r10.xyzx +mad r1.xyz, r1.xyzx, r13.yzwy, r13.yzwy +mul r1.xyz, r1.xyzx, r3.xyzx +mul r1.xyz, r11.xywx, r1.xyzx +mad r1.xyz, r4.xyzx, r14.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r8.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r2.z, r2.w, cb0[154].w, -cb0[153].w +max r2.z, r2.z, l(0.000000) +mul r3.x, r0.z, l(-1.442695) +exp r3.x, r3.x +add r3.x, -r3.x, l(1.000000) +div r0.z, r3.x, r0.z +mad r3.x, r5.y, cb0[156].w, cb0[158].w +mul r3.x, r3.x, l(1.442695) +exp r3.x, r3.x +mul r0.z, r0.z, r3.x +mul r0.z, r0.z, -r2.z +mul r3.xyz, r0.zzzz, cb0[155].xyzx +mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r3.xyz, r3.xyzx +dp3 r0.z, -r9.xyzx, cb0[154].xyzx +mad r2.z, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r3.w, r0.zzzz, cb0[155].wwww +add r2.z, r2.z, -r3.w +lt r3.w, l(0.000000), cb0[163].z +if_nz r3.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r4.x, r0.y, r0.w, r0.x + dp3 r0.x, -r9.xyzx, -r7.xyzx + add r3.w, r5.y, -cb0[44].y + lt r4.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r4.z + mul r0.x, r0.x, cb0[163].w + div r4.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w + mul r4.w, r0.x, r4.z + mad r5.w, r4.w, r3.w, cb0[44].y + mad r3.w, -r4.w, r3.w, r3.w + mul r4.w, r3.w, cb0[159].z + max r4.w, r4.w, l(-127.000000) + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + add r6.w, r5.w, -cb0[159].x + mul r6.w, r6.w, cb0[159].z + max r6.w, r6.w, l(-127.000000) + exp r6.w, -r6.w + mul r6.w, r6.w, cb0[159].y + lt r7.x, l(5.960464478E-08), |r4.w| + exp r7.y, -r4.w + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r4.w + mad r4.w, -r4.w, l(0.240226507), l(0.693147182) + movc r4.w, r7.x, r7.y, r4.w + add r5.w, r5.w, -cb0[162].z + mul r5.w, r5.w, cb0[162].x + max r5.w, r5.w, l(-127.000000) + exp r5.w, -r5.w + mul r5.w, r5.w, cb0[162].y + lt r7.x, l(5.960464478E-08), |r3.w| + exp r7.y, -r3.w + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r7.x, r7.y, r3.w + mul r3.w, r3.w, r5.w + mad r3.w, r6.w, r4.w, r3.w + mad r0.x, -r0.x, r4.z, l(1.000000) + mul r0.x, r2.w, r0.x + mul r0.x, r0.x, r3.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r2.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r4.y, r0.w, r4.x, r0.y + ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r2.xxxy + mul r4.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r1.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r4.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t10.xyzw, s1, l(0.000000) + add r0.y, |r1.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r0.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r7.xyz, r0.yyyy, cb0[161].xyzx + mad r4.xyz, r7.xyzx, r4.wwww, r4.xyzx + mul r0.x, r0.x, r4.w +else + add r0.y, r5.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r1.w, cb0[44].y, -cb0[159].x + mul r1.w, r1.w, cb0[159].z + max r1.w, r1.w, l(-127.000000) + exp r1.w, -r1.w + mul r1.w, r1.w, cb0[159].y + lt r2.x, l(5.960464478E-08), |r0.w| + exp r2.y, -r0.w + add r2.y, -r2.y, l(1.000000) + div r2.y, r2.y, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r2.x, r2.y, r0.w + add r2.x, cb0[44].y, -cb0[162].z + mul r2.x, r2.x, cb0[162].x + max r2.x, r2.x, l(-127.000000) + exp r2.x, -r2.x + mul r2.x, r2.x, cb0[162].y + lt r2.y, l(5.960464478E-08), |r0.y| + exp r3.w, -r0.y + add r3.w, -r3.w, l(1.000000) + div r3.w, r3.w, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r2.y, r3.w, r0.y + mul r0.y, r0.y, r2.x + mad r0.y, r1.w, r0.w, r0.y + mul r0.y, r2.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r2.xy, r2.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r2.x + add r0.y, r2.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r2.xyw, r0.xxxx, r3.xyxz +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r1.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r2.z, l(12.566371) +sqrt r2.z, r2.z +mul r2.z, r2.z, r3.w +max r2.z, r2.z, l(0.001000) +div r1.w, r1.w, r2.z +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r3.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r4.xyzx +mad r0.xyz, r1.xyzx, r2.xywx, r0.xyzx +dp3 r0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r6.xyzx, r6.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r5.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t23.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x8BA3C806.cso b/src/games/endfield/deferred-lighting/0x8BA3C806.cso new file mode 100644 index 0000000000000000000000000000000000000000..774ea32576bbc9beb0f737791fa4892fdc2d076f GIT binary patch literal 48028 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0.asm new file mode 100644 index 0000000000..1cfe304dcc --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0.asm @@ -0,0 +1,1576 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Jan 30 20:09:21 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[160], dynamicIndexed +dcl_constantbuffer CB6[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture3d (float,float,float,float) t25 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 37 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t22.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t23.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r3.xyz, r1.wwww, r3.xyzx +utof r2.xy, r0.xyxx +mul r4.xy, v0.xyxx, cb0[82].zwzz +mad r4.zw, r4.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r5.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r5.xy, r5.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xyxx, t1.yzwx, s0, l(0.000000) +mul r5.xyzw, -r4.wwww, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r4.zzzz, r5.xyzw +mad r5.xyzw, cb0[26].xyzw, r1.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r1.w, r5.y, cb0[1].z +mad r1.w, cb0[0].z, r5.x, r1.w +mad r1.w, cb0[2].z, r5.z, r1.w +add r1.w, r1.w, cb0[3].z +eq r2.w, l(0.000000), cb0[86].w +add r6.xyz, -r5.xyzx, cb0[44].xyzx +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r8.xyz, r2.wwww, r6.xyzx, r7.xyzx +dp3 r2.w, r8.xyzx, r8.xyzx +max r4.z, r2.w, l(9.999999939E-09) +rsq r4.z, r4.z +mul r9.xyz, r4.zzzz, r8.xyzx +mul r2.w, r2.w, r4.z +lt r4.w, l(0.000488281250), cb0[234].x +if_nz r4.w + sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t21.xyzw, s1, cb0[108].x +else + mov r10.xy, l(1.000000,1.000000,0,0) +endif +min r6.w, r10.y, r10.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r7.w, r10.y, l(-1.000000) +mad r11.x, r1.z, r7.w, l(1.000000) +add r11.y, -r1.z, l(1.000000) +movc r10.yz, r4.wwww, r11.xxyx, l(0,1.000000,1.000000,0) +min r1.z, r2.z, r10.y +add r4.w, -r1.z, r2.z +mad r1.z, r6.w, r4.w, r1.z +add r2.z, -r1.z, r2.z +mad r11.w, r10.x, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xyzz, t24.xyzw +add r1.z, -r10.z, l(1.000000) +mad r1.z, r6.w, r1.z, r10.z +add r2.z, -r1.z, l(1.000000) +mad r1.z, r10.x, r2.z, r1.z +mul r10.xyz, r1.zzzz, r12.xyzx +mul r13.xyz, r1.xxxx, r10.xyzx +mad r12.xyz, r12.xyzx, r1.zzzz, -r13.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r10.xyz, r10.xyzx, r1.xxxx, r1.zzzz +dp3 r1.x, r3.xyzx, r9.xyzx +max r13.x, r1.x, l(0.000000) +mul r14.y, r11.w, r11.w +mul r15.x, r13.x, r13.x +mul r15.z, r13.x, r15.x +mul r1.x, r14.y, r14.y +mul r14.z, r14.y, r1.x +mov r13.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r16.x, l(3.327070, 1.000000, 0.000000, 0.000000), r13.xyxx +dp2 r16.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r13.xzxx +mov r14.x, l(1.000000) +dp2 r1.z, r16.xyxx, r14.xyxx +mov r15.yw, l(0,9.044010,0,1.000000) +dp3 r16.x, l(3.596850, -1.367720, 1.000000, 0.000000), r15.xzwx +dp3 r16.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r15.xyzx +mov r17.x, l(5.565890) +mov r17.yz, r15.xxzx +dp3 r16.z, l(1.000000, 19.788601, -20.212299, 0.000000), r17.xyzx +dp3 r2.z, r16.xyzx, r14.xyzx +div r1.z, r1.z, r2.z +dp2 r16.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r13.xwxx +mov r15.x, l(1.296780) +mov r15.y, r13.x +dp2 r16.y, l(1.000000, -0.755907, 0.000000, 0.000000), r15.xyxx +dp2 r2.z, r16.xyxx, r14.xyxx +dp3 r16.x, l(2.923380, 59.418800, 1.000000, 0.000000), r15.yzwy +mov r15.xw, l(20.322500,0,0,121.563004) +dp3 r16.y, l(1.000000, -27.030199, 222.591995, 0.000000), r15.xyzx +dp3 r16.z, l(626.130005, 316.627014, 1.000000, 0.000000), r15.yzwy +dp3 r4.w, r16.xyzx, r14.xyzx +div r2.z, r2.z, r4.w +mad r13.yzw, r10.xxyz, r1.zzzz, r2.zzzz +add r1.z, r1.z, r2.z +ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t7.xzyw +lt r0.z, l(0.001000), r14.x +if_nz r0.z + dp3 r0.z, -r9.xyzx, r3.xyzx + add r0.z, r0.z, r0.z + mad r15.xyz, r3.xyzx, -r0.zzzz, -r9.xyzx + dp3 r0.z, -cb3[0].xyzx, r15.xyzx + mad r16.xyz, cb3[0].xyzx, r0.zzzz, r15.xyzx + lt r0.z, r0.z, cb3[4].z + dp3 r2.z, r16.xyzx, r16.xyzx + max r2.z, r2.z, l(0.0000610351562) + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + mul r16.xyz, r16.xyzx, cb3[4].yyyy + mad r16.xyz, -cb3[0].xyzx, cb3[4].zzzz, r16.xyzx + dp3 r2.z, r16.xyzx, r16.xyzx + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + movc r15.xyz, r0.zzzz, r16.xyzx, r15.xyzx + mad r16.xyz, r8.xyzx, r4.zzzz, r15.xyzx + dp3 r0.z, r16.xyzx, r16.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r16.xyz, r0.zzzz, r16.xyzx + dp3_sat r11.y, r15.xyzx, r3.xyzx + dp3_sat r0.z, r3.xyzx, r16.xyzx + min r11.z, r13.x, l(1.000000) + mad r2.z, r0.z, r1.x, -r0.z + mad r0.z, r2.z, r0.z, l(1.000000) + dp3_sat r2.z, r9.xyzx, r16.xyzx + add r2.z, -r2.z, l(1.000000) + mul r4.w, r2.z, r2.z + mul r4.w, r4.w, r4.w + mul r6.w, r2.z, r4.w + add r7.w, -r11.w, l(1.000000) + mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) + mad r8.w, r7.w, r8.w, l(1.049970) + mad r7.w, r7.w, r8.w, l(0.409255) + min r7.w, r7.w, l(0.999000) + add r8.w, -r7.w, l(1.000000) + add r15.xyz, -r10.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r10.xyzx + mad r2.z, -r4.w, r2.z, l(1.000000) + mad r16.xyz, r10.xyzx, r2.zzzz, r6.wwww + mul r0.z, r0.z, r0.z + div r0.z, r1.x, r0.z + mad r17.xy, -r11.zyzz, r1.xxxx, r11.zyzz + mad r17.xy, r17.xyxx, r11.zyzz, r1.xxxx + sqrt r17.xy, r17.xyxx + mul r17.xy, r11.yzyy, r17.xyxx + add r1.x, r17.y, r17.x + add r1.x, r1.x, l(0.000100) + div r1.x, l(0.500000), r1.x + mul r0.z, r0.z, r1.x + mul r16.xyz, r0.zzzz, r16.xyzx + min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r17.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r17.xyxx, t9.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r1.x, r17.zwzz, t9.xyzw, s1, l(0.000000) + mul r0.z, r0.z, r1.x + mul r0.z, r7.w, r0.z + div r0.z, r0.z, r8.w + mul r17.xyz, r15.xyzx, r15.xyzx + mul r17.xyz, r0.zzzz, r17.xyzx + mad r15.xyz, -r15.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r15.xyz, r17.xyzx, r15.xyzx + add r15.xyz, r15.xyzx, r16.xyzx + mul r15.xyz, r15.xyzx, cb3[4].xxxx + max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r15.xyz, r15.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r16.xyz, r11.yyyy, r12.xyzx + mad r15.xyz, r15.xyzx, r11.yyyy, r16.xyzx + mul r15.xyz, r15.xyzx, cb3[1].xyzx + mov r14.z, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r16.xyz, r14.xzxx, t8.xyzw, s1, cb0[108].x + add r0.z, -r14.x, l(1.000000) + mad r14.xzw, r15.xxyz, r16.xxyz, -r15.xxyz + mad r14.xzw, r0.zzzz, r14.xxzw, r15.xxyz + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t10.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r14.xzw, r0.zzzz, r14.xxzw +else + mov r14.xzw, l(0,0,0,0) +endif +mul r11.yz, r2.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r11.yz, r11.yyzy +mad r0.z, r11.z, cb2[1].y, r11.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r1.x, -cb0[85].y, cb2[2].w, |r1.w| +round_ni r1.x, r1.x +add r2.z, l(-1.000000), cb2[1].w +max r4.w, r1.x, l(0.000000) +min r2.z, r2.z, r4.w +mul r4.w, r2.z, l(8.000000) +ftoi r4.w, r4.w +ge r1.x, r2.z, r1.x +iadd r2.z, r4.w, cb0[110].y +dp3 r4.w, -r9.xyzx, r3.xyzx +add r4.w, r4.w, r4.w +mad r15.xyz, r3.xyzx, -r4.wwww, -r9.xyzx +min r11.x, r13.x, l(1.000000) +add r4.w, -r11.w, l(1.000000) +mad r6.w, -r4.w, l(0.383026), l(-0.0761947036) +mad r6.w, r4.w, r6.w, l(1.049970) +mad r4.w, r4.w, r6.w, l(0.409255) +min r4.w, r4.w, l(0.999000) +add r6.w, -r4.w, l(1.000000) +add r16.xyz, -r10.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r10.xyzx +mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r7.w, r11.yzyy, t9.yzwx, s1, l(0.000000) +mad r17.xyz, -r16.xyzx, r6.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r16.xyz, r16.xyzx, r16.xyzx +mov r18.w, l(1.000000) +mov r19.y, l(1.000000) +mov r20.z, r11.w +mov r21.xyz, l(0,0,0,0) +mov r8.w, l(1.000000) +mov r9.w, l(0) +loop + ilt r10.w, l(7), r9.w + breakc_nz r10.w + iadd r10.w, r0.z, r9.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.w, r10.w, l(0), t0.xxxx + iadd r11.y, r2.z, r9.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.y, r11.y, l(0), t0.xxxx + and r10.w, r10.w, r11.y + and r10.w, r1.x, r10.w + ishl r11.y, r9.w, l(5) + mov r22.xyz, l(0,0,0,0) + mov r11.z, r8.w + mov r12.w, r10.w + loop + breakc_z r12.w + firstbit_lo r15.w, r12.w + ishl r16.w, l(1), r15.w + xor r16.w, r12.w, r16.w + iadd r15.w, r11.y, r15.w + bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r15.wwww, l(1, 3, 5, 6) + bfi r17.w, l(29), l(3), r15.w, l(7) + ftou r19.z, cb3[r23.z + 6].w + ieq r19.z, r19.z, l(1) + if_nz r19.z + add r18.xyz, r5.xyzx, -cb3[r23.x + 6].xyzx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.z + 6].xzyx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.w + 6].yxzy + ushr r26.xyz, cb3[r23.z + 6].xzyx, l(16, 16, 16, 0) + ushr r27.xyz, cb3[r23.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyw, r27.yxyz + mov r28.xz, r24.xxzx + mov r28.yw, r26.xxxz + dp4 r19.z, r18.xyzw, r28.xyzw + mov r26.x, r24.y + mov r26.z, r25.y + mov r26.w, r27.x + dp4 r19.w, r18.xyzw, r26.xyzw + mov r27.xz, r25.xxzx + dp4 r18.x, r18.xyzw, r27.xyzw + max r18.y, |r19.w|, |r19.z| + max r18.x, |r18.x|, r18.y + mad r18.y, cb3[r17.w + 6].x, l(0.500000), l(0.500000) + add r18.x, -r18.y, r18.x + mad r18.y, -cb3[r17.w + 6].x, l(0.500000), l(0.500000) + div_sat r18.x, r18.x, r18.y + add r18.x, -r18.x, l(1.000000) + mul r18.x, r18.x, r18.x + else + mov r18.x, l(1.000000) + endif + lt r18.y, l(0.500000), cb3[r23.y + 6].z + lt r18.z, r18.x, l(0.001000) + or r18.z, r18.y, r18.z + if_nz r18.z + mov r12.w, r16.w + continue + endif + ishl r18.z, r15.w, l(3) + bfi r15.w, l(29), l(3), r15.w, l(2) + lt r19.z, cb3[r18.z + 6].w, l(1.500000) + if_nz r19.z + mad r19.z, cb3[r15.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r19.z, -|cb3[r15.w + 6].x| + add r24.y, -r24.x, cb3[r15.w + 6].y + add r19.z, -|r24.x|, l(1.000000) + add r19.z, -|r24.y|, r19.z + max r19.z, r19.z, l(0.000488281250) + ge r19.w, cb3[r15.w + 6].x, l(0.000000) + movc r24.z, r19.w, r19.z, -r19.z + dp3 r19.z, r24.xyzx, r24.xyzx + rsq r19.z, r19.z + mul r24.xyz, r19.zzzz, r24.xyzx + add r25.xyz, -r5.xyzx, cb3[r23.x + 6].xyzx + dp3 r19.z, r25.xyzx, r25.xyzx + rsq r19.w, r19.z + mul r26.xyz, r19.wwww, r25.xyzx + ftoi r20.w, cb3[r17.w + 6].w + mul r27.xyz, r24.xyzx, cb3[r15.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r21.w, cb3[r18.z + 6].w + and r21.w, r21.w, l(1) + ieq r22.w, r21.w, l(0) + not r22.w, r22.w + lt r23.z, l(0.000000), cb3[r15.w + 6].z + and r22.w, r22.w, r23.z + dp3 r23.z, r28.xyzx, r28.xyzx + sqrt r23.z, r23.z + dp3 r24.w, r29.xyzx, r29.xyzx + sqrt r24.w, r24.w + dp3 r25.w, r3.xyzx, r28.xyzx + div r25.w, r25.w, r23.z + dp3 r26.w, r3.xyzx, r29.xyzx + div r26.w, r26.w, r24.w + add r25.w, r25.w, r26.w + mul_sat r30.x, r25.w, l(0.500000) + dp3 r25.w, r28.xyzx, r29.xyzx + mad r23.z, r23.z, r24.w, r25.w + mad r23.z, r23.z, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r23.z + dp3_sat r19.x, r3.xyzx, r26.xyzx + movc r20.xy, r22.wwww, r30.xyxx, r19.xyxx + lt r19.x, cb3[r23.w + 6].w, l(0.000000) + if_nz r19.x + mul r19.x, cb3[r23.x + 6].w, cb3[r23.x + 6].w + mul r19.x, r19.x, r19.z + mad r19.x, -r19.x, r19.x, l(1.000000) + max r19.x, r19.x, l(0.000000) + add r19.z, r19.z, l(1.000000) + div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z + and r23.z, r22.w, l(0x3f800000) + add r24.w, -r19.z, r20.y + mad r19.z, r23.z, r24.w, r19.z + mul r19.x, r19.x, r19.x + mul r19.x, r19.x, r19.z + else + mul r29.xyz, r25.xyzx, cb3[r23.x + 6].wwww + dp3 r19.z, r29.xyzx, r29.xyzx + min r19.z, r19.z, l(1.000000) + add r19.z, -r19.z, l(1.000000) + log r19.z, r19.z + mul r19.z, r19.z, cb3[r23.w + 6].w + exp r19.z, r19.z + mul r19.x, r19.z, r20.y + endif + dp3 r19.z, r26.xyzx, -r24.xyzx + add r19.z, r19.z, -cb3[r15.w + 6].z + mul_sat r19.z, r19.z, cb3[r15.w + 6].w + mul r19.z, r19.z, r19.z + movc r19.z, r21.w, l(1.000000), r19.z + mul r19.x, r19.z, r19.x + not r19.z, r22.w + ige r20.y, r20.w, l(0) + and r19.z, r19.z, r20.y + if_nz r19.z + if_z r21.w + ishl r19.z, r20.w, l(2) + mul r24.xyz, r5.yyyy, cb5[r19.z + 33].xywx + mad r24.xyz, cb5[r19.z + 32].xywx, r5.xxxx, r24.xyzx + mad r24.xyz, cb5[r19.z + 34].xywx, r5.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb5[r19.z + 35].xywx + div_sat r24.xy, r24.xyxx, r24.zzzz + mad r24.xy, r24.xyxx, cb5[r20.w + 0].zwzz, cb5[r20.w + 0].xyxx + else + ishl r19.z, r20.w, l(2) + dp3 r29.x, -r25.xyzx, cb5[r19.z + 32].xyzx + dp3 r29.y, -r25.xyzx, cb5[r19.z + 33].xyzx + dp3 r29.z, -r25.xyzx, cb5[r19.z + 34].xyzx + lt r19.z, |r29.x|, |r29.y| + and r19.z, r19.z, l(1) + dp2 r20.y, |r29.xyxx|, icb[r19.z + 0].xyxx + lt r20.y, r20.y, |r29.z| + movc r19.z, r20.y, l(2), r19.z + dp3 r20.y, r29.xyzx, icb[r19.z + 0].xyzx + lt r20.y, r20.y, l(0.000000) + bfi r19.z, l(31), l(1), r19.z, r20.y + ushr r20.y, r19.z, l(1) + dp3 r20.y, r29.xyzx, icb[r20.y + 0].xyzx + div r23.z, l(0.000244140625), cb5[r20.w + 0].w + add r23.z, -r23.z, l(0.500000) + utof r24.z, r19.z + ult r24.w, r19.z, l(2) + and r24.w, r24.w, l(2) + dp2 r24.w, r29.xzxx, icb[r24.w + 0].xzxx + mul r24.w, r24.w, icb[r19.z + 4].z + div r24.w, r24.w, |r20.y| + mad r24.z, r24.w, r23.z, r24.z + add r24.z, r24.z, l(0.500000) + mul_sat r25.x, r24.z, l(0.166666672) + iadd r24.z, l(-1), icb[r19.z + 4].y + dp2 r24.z, r29.yzyy, icb[r24.z + 0].xyxx + mul r19.z, r24.z, icb[r19.z + 4].w + div r19.z, r19.z, |r20.y| + mad_sat r25.y, -r19.z, r23.z, l(0.500000) + mad r24.xy, r25.xyxx, cb5[r20.w + 0].zwzz, cb5[r20.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r19.z, r24.xyxx, t11.yzxw, s1, l(0.000000) + mul r19.x, r19.z, r19.x + endif + lt r19.z, l(0.000000), r19.x + if_nz r19.z + if_z r21.w + ftoi r20.y, cb3[r23.y + 6].x + else + add r24.xyz, r5.xyzx, -cb3[r23.x + 6].xyzx + lt r25.xyz, |r24.yzzy|, |r24.xxyx| + and r20.w, r25.y, r25.x + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ushr r21.w, cb3[r15.w + 6].w, l(24) + ubfe r25.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r15.w + 6].wwww + movc r21.w, r24.x, r21.w, r25.x + and r23.z, l(255), cb3[r15.w + 6].w + movc r23.z, r24.y, r25.y, r23.z + ubfe r24.x, l(8), l(8), cb3[r23.y + 6].x + and r24.y, l(255), cb3[r23.y + 6].x + movc r24.x, r24.z, r24.x, r24.y + movc r23.z, r25.z, r23.z, r24.x + movc r20.w, r20.w, r21.w, r23.z + ilt r21.w, r20.w, l(80) + movc r20.y, r21.w, r20.w, l(-1) + endif + ishl r20.w, r20.y, l(2) + mad r24.xyz, r26.xyzx, cb4[r20.y + 288].xxxx, r5.xyzx + mul r21.w, l(5.000000), cb4[r20.y + 288].y + mad r24.xyz, r3.xyzx, r21.wwww, r24.xyzx + mul r25.xyzw, r24.yyyy, cb4[r20.w + 65].xyzw + mad r25.xyzw, cb4[r20.w + 64].xyzw, r24.xxxx, r25.xyzw + mad r24.xyzw, cb4[r20.w + 66].xyzw, r24.zzzz, r25.xyzw + add r24.xyzw, r24.xyzw, cb4[r20.w + 67].xyzw + div r24.xyz, r24.xyzx, r24.wwww + ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ge r29.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r30.xy, -cb4[r20.y + 344].xyxx, cb4[r20.y + 344].zwzz + mad r24.xy, r24.xyxx, r30.xyxx, cb4[r20.y + 344].xyxx + mad r30.xy, r24.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r30.xy, r30.xyxx + mad r24.xy, r24.xyxx, cb4[400].zwzz, -r30.xyxx + add r31.xyzw, r24.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r32.xyzw, r31.xxzz, r31.xxzz + add r30.zw, -r24.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r31.xz, r24.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r33.xy, r24.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r34.xy, r30.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy + add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r24.xy, r32.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r24.xyxx + mul r35.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r24.xy, -r31.xzxx, r31.xzxx, r30.zwzz + add r24.xy, r24.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r36.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r24.xy, r31.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r35.z, r36.x + mov r35.w, r24.x + mov r34.z, r33.x + mov r34.w, r32.x + add r31.xyzw, r34.zwxz, r35.zwxz + mov r36.z, r35.y + mov r36.w, r24.y + mov r33.z, r34.y + mov r33.w, r32.z + add r24.xyw, r33.zyzw, r36.zyzw + div r32.xyz, r34.xzwx, r31.zwyz + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyz, r32.yxzy, cb4[400].xxxx + div r33.xyz, r33.zywz, r24.xywx + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyz, r33.xyzx, cb4[400].yyyy + mov r32.w, r33.x + mad r34.xyzw, r30.xyxy, cb4[400].xyxy, r32.ywxw + mad r30.zw, r30.xxxy, cb4[400].xxxy, r32.zzzw + mov r33.w, r32.y + mov r32.yw, r33.yyyz + mad r35.xyzw, r30.xyxy, cb4[400].xyxy, r32.xyzy + mad r33.xyzw, r30.xyxy, cb4[400].xyxy, r33.wywz + mad r32.xyzw, r30.xyxy, cb4[400].xyxy, r32.xwzw + mul r36.xyzw, r24.xxxy, r31.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r34.xyxx, t6.xxxx, s4, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r34.zwzz, t6.xxxx, s4, r24.z + mul r21.w, r21.w, r36.y + mad r20.w, r36.x, r20.w, r21.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r30.zwzz, t6.xxxx, s4, r24.z + mad r20.w, r36.z, r21.w, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r33.xyxx, t6.xxxx, s4, r24.z + mad r20.w, r36.w, r21.w, r20.w + mul r30.xyzw, r24.yyww, r31.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r35.xyxx, t6.xxxx, s4, r24.z + mad r20.w, r30.x, r21.w, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r35.zwzz, t6.xxxx, s4, r24.z + mad r20.w, r30.y, r21.w, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r33.zwzz, t6.xxxx, s4, r24.z + mad r20.w, r30.z, r21.w, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r32.xyxx, t6.xxxx, s4, r24.z + mad r20.w, r30.w, r21.w, r20.w + ige r21.w, r20.y, l(0) + or r25.xyz, r25.xyzx, r29.xyzx + or r23.z, r25.y, r25.x + or r23.z, r25.z, r23.z + and r24.x, r24.z, l(0x7fffffff) + ult r24.x, l(0x7f800000), r24.x + or r23.z, r23.z, r24.x + mul r24.x, r24.w, r31.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r32.zwzz, t6.xxxx, s4, r24.z + mad r20.w, r24.x, r24.y, r20.w + add r20.w, r20.w, l(-1.000000) + mad r20.y, cb4[r20.y + 288].w, r20.w, l(1.000000) + movc r20.y, r23.z, l(1.000000), r20.y + movc r20.y, r21.w, r20.y, l(1.000000) + else + mov r20.y, l(1.000000) + endif + if_nz r22.w + dp3 r20.w, r15.xyzx, r27.xyzx + mul_sat r21.w, r19.w, cb3[r15.w + 6].z + mad r21.w, r21.w, l(0.500000), r14.y + min r21.w, r21.w, l(1.000000) + div r21.w, r14.y, r21.w + mad r24.xyz, r15.xyzx, r20.wwww, -r27.xyzx + dp3 r22.w, r28.xyzx, r24.xyzx + mul r20.w, r20.w, r20.w + mad r20.w, cb3[r15.w + 6].z, cb3[r15.w + 6].z, -r20.w + div_sat r20.w, r22.w, r20.w + mad r24.xyz, r27.xyzx, r20.wwww, r28.xyzx + dp3 r20.w, r24.xyzx, r24.xyzx + rsq r20.w, r20.w + mul r26.xyz, r20.wwww, r24.xyzx + else + mov r21.w, l(1.000000) + endif + if_nz r19.z + mul_sat r19.z, r19.w, cb3[r17.w + 6].y + mad r24.xyz, r8.xyzx, r4.zzzz, r26.xyzx + dp3 r19.w, r24.xyzx, r24.xyzx + max r19.w, r19.w, l(0.0000610351562) + rsq r19.w, r19.w + mul r24.xyz, r19.wwww, r24.xyzx + dp3_sat r19.w, r3.xyzx, r24.xyzx + dp3_sat r20.w, r9.xyzx, r24.xyzx + lt r22.w, l(0.000000), r19.z + mul r19.z, r19.z, r19.z + mad r23.z, r20.w, l(3.600000), l(0.400000) + div r19.z, r19.z, r23.z + mad r19.z, r11.w, r11.w, r19.z + min r19.z, r19.z, l(1.000000) + movc r19.z, r22.w, r19.z, r14.y + mul r19.z, r19.z, r19.z + mad r22.w, r19.w, r19.z, -r19.w + mad r19.w, r22.w, r19.w, l(1.000000) + add r20.w, -r20.w, l(1.000000) + mul r22.w, r20.w, r20.w + mul r22.w, r22.w, r22.w + mul r23.z, r20.w, r22.w + mad r20.w, -r22.w, r20.w, l(1.000000) + mad r24.xyz, r10.xyzx, r20.wwww, r23.zzzz + mul r19.w, r19.w, r19.w + div r19.w, r19.z, r19.w + mul r19.w, r21.w, r19.w + mad r20.w, -r11.x, r19.z, r11.x + mad r20.w, r20.w, r11.x, r19.z + sqrt r20.w, r20.w + mad r21.w, -r20.x, r19.z, r20.x + mad r19.z, r21.w, r20.x, r19.z + sqrt r19.z, r19.z + mul r19.z, r11.x, r19.z + mad r19.z, r20.x, r20.w, r19.z + add r19.z, r19.z, l(0.000100) + div r19.z, l(0.500000), r19.z + mul r19.z, r19.z, r19.w + mul r24.xyz, r19.zzzz, r24.xyzx + min r24.xyz, r24.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r19.zw, r20.xxxz, l(0.000000, 0.000000, 0.968750, 0.968750), l(0.000000, 0.000000, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r19.z, r19.zwzz, t9.yzxw, s1, l(0.000000) + mul r19.z, r7.w, r19.z + mul r19.z, r4.w, r19.z + div r19.z, r19.z, r6.w + mul r25.xyz, r16.xyzx, r19.zzzz + div r25.xyz, r25.xyzx, r17.xyzx + add r24.xyz, r24.xyzx, r25.xyzx + mul r24.xyz, r24.xyzx, cb3[r17.w + 6].zzzz + max r24.xyz, r24.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r24.xyz, r24.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r25.xyz, r12.xyzx, r20.xxxx + mad r24.xyz, r24.xyzx, r20.xxxx, r25.xyzx + mul r19.xzw, r19.xxxx, cb3[r18.z + 6].xxyz + mul r19.xzw, r20.yyyy, r19.xxzw + mul r19.xzw, r18.xxxx, r19.xxzw + mul r19.xzw, r19.xxzw, r24.xxyz + else + mov r19.xzw, l(0,0,0,0) + endif + else + if_z r18.y + mad r18.x, cb3[r15.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r18.x, -|cb3[r15.w + 6].x| + add r24.y, -r24.x, cb3[r15.w + 6].y + add r18.x, -|r24.x|, l(1.000000) + add r18.x, -|r24.y|, r18.x + max r18.x, r18.x, l(0.000488281250) + ge r18.y, cb3[r15.w + 6].x, l(0.000000) + movc r24.z, r18.y, r18.x, -r18.x + dp3 r18.x, r24.xyzx, r24.xyzx + rsq r18.x, r18.x + mul r20.xyw, r18.xxxx, r24.xyxz + add r24.xyz, -r5.xyzx, cb3[r23.x + 6].xyzx + dp3 r18.x, r24.xyzx, r24.xyzx + rsq r18.y, r18.x + mul r25.xyz, r18.yyyy, r24.xyzx + ftoi r17.w, cb3[r17.w + 6].w + mul r26.xyz, r20.xywx, cb3[r15.w + 6].zzzz + mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx + mad r26.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx + ftou r18.y, cb3[r18.z + 6].w + and r18.y, r18.y, l(1) + ieq r18.z, r18.y, l(0) + not r18.z, r18.z + lt r21.w, l(0.000000), cb3[r15.w + 6].z + and r18.z, r18.z, r21.w + dp3 r21.w, r27.xyzx, r27.xyzx + sqrt r21.w, r21.w + dp3 r22.w, r26.xyzx, r26.xyzx + sqrt r22.w, r22.w + dp3 r23.z, r27.xyzx, r26.xyzx + mad r21.w, r21.w, r22.w, r23.z + mad r21.w, r21.w, l(0.500000), l(1.000000) + div r21.w, l(1.000000, 1.000000, 1.000000, 1.000000), r21.w + movc r21.w, r18.z, r21.w, l(1.000000) + lt r22.w, cb3[r23.w + 6].w, l(0.000000) + if_nz r22.w + mul r22.w, cb3[r23.x + 6].w, cb3[r23.x + 6].w + mul r22.w, r18.x, r22.w + mad r22.w, -r22.w, r22.w, l(1.000000) + max r22.w, r22.w, l(0.000000) + add r18.x, r18.x, l(1.000000) + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x + and r23.z, r18.z, l(0x3f800000) + add r24.w, -r18.x, r21.w + mad r18.x, r23.z, r24.w, r18.x + mul r22.w, r22.w, r22.w + mul r18.x, r18.x, r22.w + else + mul r26.xyz, r24.xyzx, cb3[r23.x + 6].wwww + dp3 r22.w, r26.xyzx, r26.xyzx + min r22.w, r22.w, l(1.000000) + add r22.w, -r22.w, l(1.000000) + log r22.w, r22.w + mul r22.w, r22.w, cb3[r23.w + 6].w + exp r22.w, r22.w + mul r18.x, r21.w, r22.w + endif + dp3 r20.x, r25.xyzx, -r20.xywx + add r20.x, r20.x, -cb3[r15.w + 6].z + mul_sat r20.x, r20.x, cb3[r15.w + 6].w + mul r20.x, r20.x, r20.x + movc r20.x, r18.y, l(1.000000), r20.x + mul r18.x, r18.x, r20.x + not r18.z, r18.z + ige r20.x, r17.w, l(0) + and r18.z, r18.z, r20.x + if_nz r18.z + if_z r18.y + ishl r18.z, r17.w, l(2) + mul r20.xyw, r5.yyyy, cb5[r18.z + 33].xyxw + mad r20.xyw, cb5[r18.z + 32].xyxw, r5.xxxx, r20.xyxw + mad r20.xyw, cb5[r18.z + 34].xyxw, r5.zzzz, r20.xyxw + add r20.xyw, r20.xyxw, cb5[r18.z + 35].xyxw + div_sat r20.xy, r20.xyxx, r20.wwww + mad r20.xy, r20.xyxx, cb5[r17.w + 0].zwzz, cb5[r17.w + 0].xyxx + else + ishl r18.z, r17.w, l(2) + dp3 r26.x, -r24.xyzx, cb5[r18.z + 32].xyzx + dp3 r26.y, -r24.xyzx, cb5[r18.z + 33].xyzx + dp3 r26.z, -r24.xyzx, cb5[r18.z + 34].xyzx + lt r18.z, |r26.x|, |r26.y| + and r18.z, r18.z, l(1) + dp2 r20.w, |r26.xyxx|, icb[r18.z + 0].xyxx + lt r20.w, r20.w, |r26.z| + movc r18.z, r20.w, l(2), r18.z + dp3 r20.w, r26.xyzx, icb[r18.z + 0].xyzx + lt r20.w, r20.w, l(0.000000) + bfi r18.z, l(31), l(1), r18.z, r20.w + ushr r20.w, r18.z, l(1) + dp3 r20.w, r26.xyzx, icb[r20.w + 0].xyzx + div r21.w, l(0.000244140625), cb5[r17.w + 0].w + add r21.w, -r21.w, l(0.500000) + utof r22.w, r18.z + ult r23.z, r18.z, l(2) + and r23.z, r23.z, l(2) + dp2 r23.z, r26.xzxx, icb[r23.z + 0].xzxx + mul r23.z, r23.z, icb[r18.z + 4].z + div r23.z, r23.z, |r20.w| + mad r22.w, r23.z, r21.w, r22.w + add r22.w, r22.w, l(0.500000) + mul_sat r24.x, r22.w, l(0.166666672) + iadd r22.w, l(-1), icb[r18.z + 4].y + dp2 r22.w, r26.yzyy, icb[r22.w + 0].xyxx + mul r18.z, r22.w, icb[r18.z + 4].w + div r18.z, r18.z, |r20.w| + mad_sat r24.y, -r18.z, r21.w, l(0.500000) + mad r20.xy, r24.xyxx, cb5[r17.w + 0].zwzz, cb5[r17.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r17.w, r20.xyxx, t11.yzwx, s1, l(0.000000) + mul r18.x, r17.w, r18.x + endif + lt r17.w, l(0.000000), r18.x + if_nz r17.w + if_z r18.y + ftoi r17.w, cb3[r23.y + 6].x + else + add r18.xyz, r5.xyzx, -cb3[r23.x + 6].xyzx + lt r20.xyw, |r18.yzyz|, |r18.xxxy| + and r20.x, r20.y, r20.x + lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyzx + ushr r20.y, cb3[r15.w + 6].w, l(24) + ubfe r23.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r15.w + 6].wwww + movc r18.x, r18.x, r20.y, r23.x + and r15.w, l(255), cb3[r15.w + 6].w + movc r15.w, r18.y, r23.z, r15.w + ubfe r18.y, l(8), l(8), cb3[r23.y + 6].x + and r20.y, l(255), cb3[r23.y + 6].x + movc r18.y, r18.z, r18.y, r20.y + movc r15.w, r20.w, r15.w, r18.y + movc r15.w, r20.x, r18.x, r15.w + ilt r18.x, r15.w, l(80) + movc r17.w, r18.x, r15.w, l(-1) + endif + ishl r15.w, r17.w, l(2) + mad r18.xyz, r25.xyzx, cb4[r17.w + 288].xxxx, r5.xyzx + mul r20.x, l(5.000000), cb4[r17.w + 288].y + mad r18.xyz, r3.xyzx, r20.xxxx, r18.xyzx + mul r23.xyzw, r18.yyyy, cb4[r15.w + 65].xyzw + mad r23.xyzw, cb4[r15.w + 64].xyzw, r18.xxxx, r23.xyzw + mad r23.xyzw, cb4[r15.w + 66].xyzw, r18.zzzz, r23.xyzw + add r23.xyzw, r23.xyzw, cb4[r15.w + 67].xyzw + div r18.xyz, r23.xyzx, r23.wwww + ge r20.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyxz + ge r23.xyz, r18.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r24.xy, -cb4[r17.w + 344].xyxx, cb4[r17.w + 344].zwzz + mad r18.xy, r18.xyxx, r24.xyxx, cb4[r17.w + 344].xyxx + mad r24.xy, r18.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r24.xy, r24.xyxx + mad r18.xy, r18.xyxx, cb4[400].zwzz, -r24.xyxx + add r25.xyzw, r18.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r26.xyzw, r25.xxzz, r25.xxzz + add r24.zw, -r18.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r25.xz, r18.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r27.xy, r18.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r28.xy, r24.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r27.xy, -r27.xyxx, r27.xyxx, r25.ywyy + add r27.xy, r27.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r27.xy, r27.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r26.xz, r26.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r18.xy, r26.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r18.xyxx + mul r29.xy, r18.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r18.xy, -r25.xzxx, r25.xzxx, r24.zwzz + add r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r30.xy, r18.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r18.xy, r25.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r29.z, r30.x + mov r29.w, r18.x + mov r28.z, r27.x + mov r28.w, r26.x + add r25.xyzw, r28.zwxz, r29.zwxz + mov r30.z, r29.y + mov r30.w, r18.y + mov r27.z, r28.y + mov r27.w, r26.z + add r26.xyz, r27.zywz, r30.zywz + div r28.xyz, r28.xzwx, r25.zwyz + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.yxzy, cb4[400].xxxx + div r27.xyz, r27.zywz, r26.xyzx + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyz, r27.xyzx, cb4[400].yyyy + mov r28.w, r27.x + mad r29.xyzw, r24.xyxy, cb4[400].xyxy, r28.ywxw + mad r18.xy, r24.xyxx, cb4[400].xyxx, r28.zwzz + mov r27.w, r28.y + mov r28.yw, r27.yyyz + mad r30.xyzw, r24.xyxy, cb4[400].xyxy, r28.xyzy + mad r27.xyzw, r24.xyxy, cb4[400].xyxy, r27.wywz + mad r24.xyzw, r24.xyxy, cb4[400].xyxy, r28.xwzw + mul r28.xyzw, r25.zwyz, r26.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r29.xyxx, t6.xxxx, s4, r18.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r29.zwzz, t6.xxxx, s4, r18.z + mul r21.w, r21.w, r28.y + mad r15.w, r28.x, r15.w, r21.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r18.xyxx, t6.xxxx, s4, r18.z + mad r15.w, r28.z, r18.x, r15.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r27.xyxx, t6.xxxx, s4, r18.z + mad r15.w, r28.w, r18.x, r15.w + mul r28.xyzw, r25.xyzw, r26.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.xyxx, t6.xxxx, s4, r18.z + mad r15.w, r28.x, r18.x, r15.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.zwzz, t6.xxxx, s4, r18.z + mad r15.w, r28.y, r18.x, r15.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r27.zwzz, t6.xxxx, s4, r18.z + mad r15.w, r28.z, r18.x, r15.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r24.xyxx, t6.xxxx, s4, r18.z + mad r15.w, r28.w, r18.x, r15.w + ige r18.x, r17.w, l(0) + or r20.xyw, r20.xyxw, r23.xyxz + or r18.y, r20.y, r20.x + or r18.y, r20.w, r18.y + and r20.x, r18.z, l(0x7fffffff) + ult r20.x, l(0x7f800000), r20.x + or r18.y, r18.y, r20.x + mul r20.x, r25.y, r26.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r24.zwzz, t6.xxxx, s4, r18.z + mad r15.w, r20.x, r18.z, r15.w + add r15.w, r15.w, l(-1.000000) + mad r15.w, cb4[r17.w + 288].w, r15.w, l(1.000000) + movc r15.w, r18.y, l(1.000000), r15.w + movc r15.w, r18.x, r15.w, l(1.000000) + else + mov r15.w, l(1.000000) + endif + else + mov r15.w, l(1.000000) + endif + mul r11.z, r11.z, r15.w + mov r19.xzw, l(0,0,0,0) + endif + add r22.xyz, r19.xzwx, r22.xyzx + mov r12.w, r16.w + endloop + mov r8.w, r11.z + add r21.xyz, r21.xyzx, r22.xyzx + iadd r9.w, r9.w, l(1) +endloop +mad r8.xyz, r21.xyzx, r8.wwww, r14.xzwx +ne r4.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy +if_nz r4.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + add r1.x, r0.z, r13.x + mad r2.z, r11.w, l(-16.000000), l(-1.000000) + exp r2.z, r2.z + log r1.x, |r1.x| + mul r1.x, r1.x, r2.z + exp r1.x, r1.x + add r1.x, r0.z, r1.x + add r1.x, r1.x, l(-1.000000) + mov_sat r11.xyz, r1.xxxx + mad r14.xyz, r12.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r12.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r12.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r11.xyz, r1.yyyy + mov r14.xyz, r1.yyyy +endif +mad r16.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[212].x +mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx +dp2 r0.z, r1.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r16.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r16.xyzx +mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r17.xyz, r16.xzyx, -r17.xyzx +max r0.z, |r17.y|, |r17.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.x, |r17.z|, l(-208.000000) +mul_sat r1.x, r1.x, l(0.031250) +max r0.z, r0.z, r1.x +ne r1.x, l(0.000000), cb0[210].w +lt r1.y, r0.z, l(1.000000) +and r1.x, r1.y, r1.x +if_nz r1.x + mad r17.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r17.xyz, r16.xzyx, -r17.xyzx + max r1.x, |r17.y|, |r17.x| + add r1.x, r1.x, l(-29.000000) + add r1.y, |r17.z|, l(-13.000000) + mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + max r1.x, r1.y, r1.x + lt r1.y, r1.x, l(1.000000) + if_nz r1.y + mad r17.xyz, r16.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t15.yzwx, s2, l(0.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.z, l(0.500000), cb0[211].y + mad r4.z, -cb0[211].y, l(0.500000), l(1.000000) + max r2.z, r2.z, r17.y + min r2.z, r4.z, r2.z + mul r17.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t16.xyzw, s1, l(0.000000) + mad r2.z, r19.w, r1.y, r0.z + add r20.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t16.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.yyyy, r20.xyzx + mov r20.w, r18.y + mul r20.xyzw, r1.yyyy, r20.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.xxxx, r17.xyzx + mov r17.w, r18.x + mul r17.xyzw, r1.yyyy, r17.xyzw + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r19.xyzx + mul r18.xyzw, r1.yyyy, r18.xyzw + else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r2.z, r0.z + endif + mad r19.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r19.xyz, r16.xzyx, -r19.xyzx + max r1.y, |r19.y|, |r19.x| + add r1.y, r1.y, l(-116.000000) + mul_sat r1.y, r1.y, l(0.125000) + add r4.z, |r19.z|, l(-52.000000) + mul_sat r4.z, r4.z, l(0.125000) + max r1.y, r1.y, r4.z + lt r4.z, r1.y, l(1.000000) + if_nz r4.z + mad r19.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r21.xyz, r19.xyzx, cb0[211].xyzx + round_ni r21.xyz, r21.xyzx + mad r19.xyz, r19.xyzx, cb0[211].xyzx, -r21.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r19.xyzx, t17.yzwx, s2, l(0.000000) + add r4.z, -r1.y, l(1.000000) + mul r1.x, r1.x, r4.z + mul r4.z, l(0.500000), cb0[211].y + mad r6.w, -cb0[211].y, l(0.500000), l(1.000000) + max r4.z, r4.z, r19.y + min r4.z, r6.w, r4.z + mul r19.w, r4.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyzw, r19.xwzx, t18.xyzw, s1, l(0.000000) + mad r2.z, r22.w, r1.x, r2.z + add r23.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyz, r23.xyzx, t18.xyzw, s1, l(0.000000) + mad r23.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r21.yyyy, r23.xyzx + mov r23.w, r21.y + mad r20.xyzw, r23.xyzw, r1.xxxx, r20.xyzw + add r19.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r21.xxxx, r19.xyzx + mov r19.w, r21.x + mad r17.xyzw, r19.xyzw, r1.xxxx, r17.xyzw + mad r19.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r19.xyzx + mad r18.xyzw, r21.xyzw, r1.xxxx, r18.xyzw + endif + lt r1.x, l(0.000000), r1.y + if_nz r1.x + mad r16.xyz, r16.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r16.xyzx, cb0[211].xyzx + mul r21.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r19.xyzx + mad r19.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r16.xyz, r21.xyzx, r16.xyzx + min r16.xyz, r19.xyzx, r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r16.xyzx, t19.yzwx, s2, l(0.000000) + add r1.x, -r0.z, l(1.000000) + mul r1.x, r1.x, r1.y + max r1.y, r21.y, r16.y + min r1.y, r19.y, r1.y + mul r16.w, r1.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t20.xyzw, s1, l(0.000000) + add r21.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t20.xyzw, s1, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r22.yyyy, r21.xyzx + mov r21.w, r22.y + mad r20.xyzw, r21.xyzw, r1.xxxx, r20.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t20.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r22.xxxx, r16.xyzx + mov r16.w, r22.x + mad r17.xyzw, r16.xyzw, r1.xxxx, r17.xyzw + mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r16.xyzx + mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw + mad r2.z, r19.w, r1.x, r2.z + endif + mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) + add r16.x, -r0.z, r1.x + add r0.z, r0.z, r1.x + mul r16.y, r0.z, l(0.500000) +else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r16.xy, l(0,1.000000,0,0) +endif +mul r19.xyzw, r16.yxyy, cb0[213].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r1.xy, r16.yxyy, cb0[213].wyww +mad r19.x, r1.y, l(0.375000), r1.x +add r18.xyzw, r18.xyzw, r19.wyzx +mul r19.xyzw, r16.yxyy, cb0[214].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r1.xy, r16.yxyy, cb0[214].wyww +mad r19.x, r1.y, l(0.375000), r1.x +add r17.xyzw, r17.xyzw, r19.wyzx +mul r19.xyzw, r16.yxyy, cb0[215].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r1.xy, r16.yxyy, cb0[215].wyww +mad r19.x, r1.y, l(0.375000), r1.x +add r16.xyzw, r19.wyzx, r20.xyzw +ge r1.xy, r4.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r1.y, r1.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r19.xyzw, r4.xyxx, t14.xyzw, s1, l(0.000000) + lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r19.xyzw| + or r1.xy, r20.zwzz, r20.xyxx + or r0.z, r1.y, r1.x + if_nz r0.z + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mov r1.x, l(1.000000) + mov r1.y, r0.z + mov r2.z, l(0) + loop + ge r4.x, l(4.600000), r1.y + breakc_nz r4.x + iadd r4.x, r2.z, l(1) + mul r4.yz, r1.xxyx, l(0.000000, 0.500000, 0.500000, 0.000000) + mov r1.xy, r4.yzyy + mov r2.z, r4.x + continue + endloop + mul r19.xyzw, r1.xxxx, r19.xyzw + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb6[3].x, cb6[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r1.x, r0.z, l(0.00390625000) + mov r1.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t13.xyzw, s1, l(0.000000) + mad r1.xy, r1.xyxx, cb6[2].xyxx, cb6[2].zwzz + mul r20.x, r1.x, l(3.54490781) + mul r20.yzw, r1.yyyy, r19.yyzw + mul r0.z, r19.x, l(0.406976730) + exp r0.z, r0.z + mul r19.xyzw, r0.zzzz, r20.xyzw + mov r20.xyzw, r19.xyzw + mov r0.z, l(0) + loop + uge r1.x, r0.z, r2.z + breakc_nz r1.x + mul r21.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r1.x, r21.xyzw, r20.xyzw + dp2 r1.y, r21.yxyy, r20.xyxx + dp2 r4.x, r21.zxzz, r20.xzxx + dp2 r4.y, r21.wxww, r20.xwxx + iadd r4.z, r0.z, l(1) + mov r20.xy, r1.xyxx + mov r20.zw, r4.xxxy + mov r0.z, r4.z + continue + endloop + mul r19.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r20.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r19.xyzw, r20.xyzw + dp2 r1.x, r19.yxyy, r20.xyxx + dp2 r1.y, r19.zxzz, r20.xzxx + dp2 r2.z, r19.wxww, r20.xwxx + mul r20.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.x, r19.xyzw, r20.xyzw + dp2 r4.y, r19.yxyy, r20.xyxx + dp2 r4.z, r19.zxzz, r20.xzxx + dp2 r6.w, r19.wxww, r20.xwxx + mul r20.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r7.w, r19.xyzw, r20.xyzw + dp2 r8.w, r19.yxyy, r20.xyxx + dp2 r9.w, r19.zxzz, r20.xzxx + dp2 r10.w, r19.wxww, r20.xwxx + mul r18.w, r0.z, l(0.886226952) + mul r18.x, r2.z, l(-1.02332675) + mul r18.yz, r1.xxyx, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r17.x, r6.w, l(-1.02332675) + mul r17.yzw, r4.yyzx, l(0.000000, -1.02332675, 1.02332675, 0.886226952) + mul r16.w, r7.w, l(0.886226952) + mul r16.x, r10.w, l(-1.02332675) + mul r16.y, r8.w, l(-1.02332675) + mul r16.z, r9.w, l(1.02332675) + endif +endif +dp3 r0.z, r18.xyzx, r3.xyzx +add r0.z, r18.w, r0.z +max r4.x, r0.z, l(0.000000) +dp3 r0.z, r17.xyzx, r3.xyzx +add r0.z, r17.w, r0.z +max r4.y, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r3.xyzx +add r0.z, r16.w, r0.z +max r4.z, r0.z, l(0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.x, r11.w, l(0.001000) +log r1.x, r1.x +mad r1.x, -r1.x, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.x +mul r1.xy, r2.xyxx, cb1[0].wwww +round_ni r1.xy, r1.xyxx +add r2.z, |r1.w|, -cb1[2].y +round_ni r2.z, r2.z +add r6.w, l(-1.000000), cb1[1].x +max r7.w, r2.z, l(0.000000) +min r6.w, r6.w, r7.w +ge r2.z, r6.w, r2.z +mad r1.x, r1.y, cb1[0].x, r1.x +ftoi r1.x, r1.x +iadd r1.x, r1.x, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx +ftoi r1.y, r6.w +iadd r1.y, r1.y, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx +and r1.x, r1.y, r1.x +and r1.x, r1.x, r2.z +mul r16.xyz, r4.xyzx, cb0[111].xxxx +dp3 r1.y, r16.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r5.w, l(1.000000) +mov r3.w, l(1.000000) +mov r16.xyz, l(0,0,0,0) +mov r2.z, l(1.000000) +mov r6.w, r1.x +mov r7.w, l(0) +loop + lt r8.w, l(0.010000), r2.z + ine r9.w, r6.w, l(0) + and r9.w, r8.w, r9.w + if_nz r9.w + firstbit_lo r9.w, r6.w + ishl r10.w, l(1), r9.w + xor r6.w, r6.w, r10.w + ishl r9.w, r9.w, l(3) + dp4 r17.x, cb1[r9.w + 6].xyzw, r5.xyzw + dp4 r17.y, cb1[r9.w + 7].xyzw, r5.xyzw + dp4 r17.z, cb1[r9.w + 8].xyzw, r5.xyzw + ge r18.xyz, cb1[r9.w + 5].xyzx, |r17.xyzx| + and r10.w, r18.y, r18.x + and r10.w, r18.z, r10.w + if_nz r10.w + mul r10.w, l(0.100000), cb1[r9.w + 5].x + mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r17.xyzx|, cb1[r9.w + 5].xyzx + mul r19.xyz, r19.xyzx, cb1[r9.w + 9].xyzx + eq r11.w, l(1.000000), cb1[r9.w + 10].x + if_nz r11.w + dp3 r20.x, cb1[r9.w + 6].xyzx, r15.xyzx + dp3 r20.y, cb1[r9.w + 7].xyzx, r15.xyzx + dp3 r20.z, cb1[r9.w + 8].xyzx, r15.xyzx + add r21.xyz, -r17.xyzx, cb1[r9.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r17.xyzx, -cb1[r9.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r11.w, r21.y, r21.x + min r11.w, r21.z, r11.w + mad r17.xyz, r20.xyzx, r11.wwww, r17.xyzx + else + mov r17.xyz, r15.xyzx + endif + dp3 r11.w, r17.xyzx, r17.xyzx + rsq r11.w, r11.w + mul r17.xyz, r11.wwww, r17.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r21.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r11.w, r17.xyzx, r20.xyzx + div r17.xyz, r17.xyzx, r11.wwww + lt r11.w, r17.z, l(0.000000) + add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r17.zw, r17.zzzw, r20.xxxy + movc r17.xy, r11.wwww, r17.zwzz, r17.xyxx + dp4 r11.w, cb1[r9.w + 4].xyzw, r3.xyzw + max r11.w, r11.w, l(0.000000) + max r11.w, r11.w, l(0.000100) + min r12.w, r19.z, r19.y + min r12.w, r12.w, r19.x + add r13.x, r18.y, r18.x + mad r13.x, r18.z, r18.z, r13.x + mad r10.w, r10.w, r10.w, -r13.x + mul r10.w, r10.w, cb1[r9.w + 9].x + mul r10.w, r10.w, cb1[r9.w + 9].x + add r13.x, l(1.000000), -cb1[r9.w + 10].y + mul r10.w, r10.w, r13.x + mul r10.w, r10.w, l(100.000000) + mad_sat r10.w, r12.w, cb1[r9.w + 10].y, r10.w + mul r12.w, r10.w, cb1[r9.w + 10].w + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r17.xy, r17.xyxx, cb1[1].wwww, cb1[2].wwww + mov r17.z, cb1[r9.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t5.xyzw, s3, r0.z + mul r17.xyz, r17.xyzx, cb1[r9.w + 9].wwww + div r13.x, r1.y, r11.w + min r13.x, |r13.x|, l(1.000000) + mad r13.x, r13.x, l(2.000000), r1.y + add r11.w, r11.w, l(2.000000) + div r11.w, r13.x, r11.w + add r11.w, r11.w, l(-1.000000) + mad r11.w, r11.w, cb0[112].w, l(1.000000) + mul r17.xyz, r11.wwww, r17.xyzx + mul r17.xyz, r12.wwww, r17.xyzx + mad r16.xyz, r17.xyzx, r2.zzzz, r16.xyzx + mad r9.w, -r10.w, cb1[r9.w + 10].w, l(1.000000) + mul r2.z, r2.z, r9.w + endif + mov r7.w, l(-1) + continue + else + mov r7.w, r8.w + break + endif + mov r7.w, r8.w +endloop +if_nz r7.w + dp3 r1.x, r15.xyzx, r15.xyzx + rsq r1.x, r1.x + mul r15.xyz, r1.xxxx, r15.xyzx + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r18.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r18.xyzx + itof r17.xyz, r17.xyzx + dp3 r1.x, r15.xyzx, r17.xyzx + div r15.xyz, r15.xyzx, r1.xxxx + lt r1.x, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r17.xxxy + movc r15.xy, r1.xxxx, r15.zwzz, r15.xyxx + mov r3.w, l(1.000000) + dp4 r1.x, cb1[3].xyzw, r3.xyzw + max r1.x, r1.x, l(0.000000) + max r1.x, r1.x, l(0.000100) + mad r3.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb1[1].wwww, cb1[2].wwww + mov r3.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s3, r0.z + div r0.z, r1.y, r1.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r1.y + add r1.x, r1.x, l(2.000000) + div r0.z, r0.z, r1.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r3.xyz, r0.zzzz, r3.xyzx + mad r16.xyz, r3.xyzx, r2.zzzz, r16.xyzx +endif +mul r3.xyz, r16.xyzx, cb0[112].zzzz +mul r3.xyz, r3.xyzx, cb0[111].yyyy +if_nz r4.w + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.x, -r0.z, l(1.000000) + mul r16.xyz, r1.xxxx, r3.xyzx + mad r3.xyz, r15.xyzx, r0.zzzz, r16.xyzx +endif +mul r4.xyz, r12.xyzx, r4.xyzx +mul r4.xyz, r4.xyzx, cb0[111].xxxx +add r0.z, -r1.z, l(1.000000) +div r0.z, r0.z, r1.z +mul r1.xyz, r0.zzzz, r10.xyzx +mad r1.xyz, r1.xyzx, r13.yzwy, r13.yzwy +mul r1.xyz, r1.xyzx, r3.xyzx +mul r1.xyz, r11.xyzx, r1.xyzx +mad r1.xyz, r4.xyzx, r14.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r8.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r2.z, r2.w, cb0[154].w, -cb0[153].w +max r2.z, r2.z, l(0.000000) +mul r3.x, r0.z, l(-1.442695) +exp r3.x, r3.x +add r3.x, -r3.x, l(1.000000) +div r0.z, r3.x, r0.z +mad r3.x, r5.y, cb0[156].w, cb0[158].w +mul r3.x, r3.x, l(1.442695) +exp r3.x, r3.x +mul r0.z, r0.z, r3.x +mul r0.z, r0.z, -r2.z +mul r3.xyz, r0.zzzz, cb0[155].xyzx +mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r3.xyz, r3.xyzx +dp3 r0.z, -r9.xyzx, cb0[154].xyzx +mad r2.z, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r3.w, r0.zzzz, cb0[155].wwww +add r2.z, r2.z, -r3.w +lt r3.w, l(0.000000), cb0[163].z +if_nz r3.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r4.x, r0.y, r0.w, r0.x + dp3 r0.x, -r9.xyzx, -r7.xyzx + add r3.w, r5.y, -cb0[44].y + lt r4.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r4.z + mul r0.x, r0.x, cb0[163].w + div r4.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w + mul r4.w, r0.x, r4.z + mad r5.w, r4.w, r3.w, cb0[44].y + mad r3.w, -r4.w, r3.w, r3.w + mul r4.w, r3.w, cb0[159].z + max r4.w, r4.w, l(-127.000000) + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + add r6.w, r5.w, -cb0[159].x + mul r6.w, r6.w, cb0[159].z + max r6.w, r6.w, l(-127.000000) + exp r6.w, -r6.w + mul r6.w, r6.w, cb0[159].y + lt r7.x, l(5.960464478E-08), |r4.w| + exp r7.y, -r4.w + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r4.w + mad r4.w, -r4.w, l(0.240226507), l(0.693147182) + movc r4.w, r7.x, r7.y, r4.w + add r5.w, r5.w, -cb0[162].z + mul r5.w, r5.w, cb0[162].x + max r5.w, r5.w, l(-127.000000) + exp r5.w, -r5.w + mul r5.w, r5.w, cb0[162].y + lt r7.x, l(5.960464478E-08), |r3.w| + exp r7.y, -r3.w + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r7.x, r7.y, r3.w + mul r3.w, r3.w, r5.w + mad r3.w, r6.w, r4.w, r3.w + mad r0.x, -r0.x, r4.z, l(1.000000) + mul r0.x, r2.w, r0.x + mul r0.x, r0.x, r3.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r2.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r4.y, r0.w, r4.x, r0.y + ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r2.xxxy + mul r4.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r1.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r4.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t12.xyzw, s1, l(0.000000) + add r0.y, |r1.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r0.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r7.xyz, r0.yyyy, cb0[161].xyzx + mad r4.xyz, r7.xyzx, r4.wwww, r4.xyzx + mul r0.x, r0.x, r4.w +else + add r0.y, r5.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r1.w, cb0[44].y, -cb0[159].x + mul r1.w, r1.w, cb0[159].z + max r1.w, r1.w, l(-127.000000) + exp r1.w, -r1.w + mul r1.w, r1.w, cb0[159].y + lt r2.x, l(5.960464478E-08), |r0.w| + exp r2.y, -r0.w + add r2.y, -r2.y, l(1.000000) + div r2.y, r2.y, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r2.x, r2.y, r0.w + add r2.x, cb0[44].y, -cb0[162].z + mul r2.x, r2.x, cb0[162].x + max r2.x, r2.x, l(-127.000000) + exp r2.x, -r2.x + mul r2.x, r2.x, cb0[162].y + lt r2.y, l(5.960464478E-08), |r0.y| + exp r3.w, -r0.y + add r3.w, -r3.w, l(1.000000) + div r3.w, r3.w, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r2.y, r3.w, r0.y + mul r0.y, r0.y, r2.x + mad r0.y, r1.w, r0.w, r0.y + mul r0.y, r2.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r2.xy, r2.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r2.x + add r0.y, r2.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r2.xyw, r0.xxxx, r3.xyxz +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r1.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r2.z, l(12.566371) +sqrt r2.z, r2.z +mul r2.z, r2.z, r3.w +max r2.z, r2.z, l(0.001000) +div r1.w, r1.w, r2.z +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r3.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r4.xyzx +// Check fog modification toggle (cb13[12].y) +// If 0 (Original), skip fog modification and output original +if_z cb13[12].y + mad r0.xyz, r1.xyzx, r2.xywx, r0.xyzx + dp3 r0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) + dp3 r1.w, r6.xyzx, r6.xyzx + sqrt r1.w, r1.w + mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) + mul r2.x, r1.w, cb0[169].x + mad r1.w, -cb0[169].x, r1.w, l(1.000000) + mul r2.yzw, cb0[168].xxyz, cb0[183].wwww + mad r2.yzw, r5.xxyz, cb0[169].yyyy, r2.yyzw + sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t25.xwyz, s2, l(0.000000) + dp2 r2.x, r2.yyyy, r2.xxxx + add r1.w, r1.w, r2.x + add r2.x, r0.w, l(1.000000) + min r1.w, r1.w, r2.x + add r0.xyz, -r1.xyzx, r0.xyzx + mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx + mov o0.w, r0.w + ret +endif + +// === Simplified Fog Modification (Anti-Banding) === +// r1.xyz = scene color (0-255), r2.xyw = transmittance, r0.xyz = fog inscatter (0-255) + +// Normalize colors to 0-1 range +mul r7.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r1/255 +mul r8.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 + +// Boost transmittance: transmittance = lerp(transmittance, 1, 0.35) to reduce fog density +add r9.xyz, -r2.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r9.xyz, r9.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r2.xywx + +// Reduce fog inscatter intensity +mul r8.xyz, r8.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + +// Standard fog blend with reduced intensity +mad r10.xyz, r7.xyzx, r9.xyzx, r8.xyzx + +// Scale back to 0-255 +mul r0.xyz, r10.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) + +// Continue with original post-fog processing +dp3 r0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r6.xyzx, r6.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r5.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t25.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..c6e6c6e4cf --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0_original_backup.asm @@ -0,0 +1,1532 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Jan 30 20:09:21 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[160], dynamicIndexed +dcl_constantbuffer CB6[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture3d (float,float,float,float) t25 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 37 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t22.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t23.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r3.xyz, r1.wwww, r3.xyzx +utof r2.xy, r0.xyxx +mul r4.xy, v0.xyxx, cb0[82].zwzz +mad r4.zw, r4.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r5.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r5.xy, r5.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xyxx, t1.yzwx, s0, l(0.000000) +mul r5.xyzw, -r4.wwww, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r4.zzzz, r5.xyzw +mad r5.xyzw, cb0[26].xyzw, r1.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r1.w, r5.y, cb0[1].z +mad r1.w, cb0[0].z, r5.x, r1.w +mad r1.w, cb0[2].z, r5.z, r1.w +add r1.w, r1.w, cb0[3].z +eq r2.w, l(0.000000), cb0[86].w +add r6.xyz, -r5.xyzx, cb0[44].xyzx +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r8.xyz, r2.wwww, r6.xyzx, r7.xyzx +dp3 r2.w, r8.xyzx, r8.xyzx +max r4.z, r2.w, l(9.999999939E-09) +rsq r4.z, r4.z +mul r9.xyz, r4.zzzz, r8.xyzx +mul r2.w, r2.w, r4.z +lt r4.w, l(0.000488281250), cb0[234].x +if_nz r4.w + sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t21.xyzw, s1, cb0[108].x +else + mov r10.xy, l(1.000000,1.000000,0,0) +endif +min r6.w, r10.y, r10.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r7.w, r10.y, l(-1.000000) +mad r11.x, r1.z, r7.w, l(1.000000) +add r11.y, -r1.z, l(1.000000) +movc r10.yz, r4.wwww, r11.xxyx, l(0,1.000000,1.000000,0) +min r1.z, r2.z, r10.y +add r4.w, -r1.z, r2.z +mad r1.z, r6.w, r4.w, r1.z +add r2.z, -r1.z, r2.z +mad r11.w, r10.x, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xyzz, t24.xyzw +add r1.z, -r10.z, l(1.000000) +mad r1.z, r6.w, r1.z, r10.z +add r2.z, -r1.z, l(1.000000) +mad r1.z, r10.x, r2.z, r1.z +mul r10.xyz, r1.zzzz, r12.xyzx +mul r13.xyz, r1.xxxx, r10.xyzx +mad r12.xyz, r12.xyzx, r1.zzzz, -r13.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r10.xyz, r10.xyzx, r1.xxxx, r1.zzzz +dp3 r1.x, r3.xyzx, r9.xyzx +max r13.x, r1.x, l(0.000000) +mul r14.y, r11.w, r11.w +mul r15.x, r13.x, r13.x +mul r15.z, r13.x, r15.x +mul r1.x, r14.y, r14.y +mul r14.z, r14.y, r1.x +mov r13.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r16.x, l(3.327070, 1.000000, 0.000000, 0.000000), r13.xyxx +dp2 r16.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r13.xzxx +mov r14.x, l(1.000000) +dp2 r1.z, r16.xyxx, r14.xyxx +mov r15.yw, l(0,9.044010,0,1.000000) +dp3 r16.x, l(3.596850, -1.367720, 1.000000, 0.000000), r15.xzwx +dp3 r16.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r15.xyzx +mov r17.x, l(5.565890) +mov r17.yz, r15.xxzx +dp3 r16.z, l(1.000000, 19.788601, -20.212299, 0.000000), r17.xyzx +dp3 r2.z, r16.xyzx, r14.xyzx +div r1.z, r1.z, r2.z +dp2 r16.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r13.xwxx +mov r15.x, l(1.296780) +mov r15.y, r13.x +dp2 r16.y, l(1.000000, -0.755907, 0.000000, 0.000000), r15.xyxx +dp2 r2.z, r16.xyxx, r14.xyxx +dp3 r16.x, l(2.923380, 59.418800, 1.000000, 0.000000), r15.yzwy +mov r15.xw, l(20.322500,0,0,121.563004) +dp3 r16.y, l(1.000000, -27.030199, 222.591995, 0.000000), r15.xyzx +dp3 r16.z, l(626.130005, 316.627014, 1.000000, 0.000000), r15.yzwy +dp3 r4.w, r16.xyzx, r14.xyzx +div r2.z, r2.z, r4.w +mad r13.yzw, r10.xxyz, r1.zzzz, r2.zzzz +add r1.z, r1.z, r2.z +ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t7.xzyw +lt r0.z, l(0.001000), r14.x +if_nz r0.z + dp3 r0.z, -r9.xyzx, r3.xyzx + add r0.z, r0.z, r0.z + mad r15.xyz, r3.xyzx, -r0.zzzz, -r9.xyzx + dp3 r0.z, -cb3[0].xyzx, r15.xyzx + mad r16.xyz, cb3[0].xyzx, r0.zzzz, r15.xyzx + lt r0.z, r0.z, cb3[4].z + dp3 r2.z, r16.xyzx, r16.xyzx + max r2.z, r2.z, l(0.0000610351562) + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + mul r16.xyz, r16.xyzx, cb3[4].yyyy + mad r16.xyz, -cb3[0].xyzx, cb3[4].zzzz, r16.xyzx + dp3 r2.z, r16.xyzx, r16.xyzx + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + movc r15.xyz, r0.zzzz, r16.xyzx, r15.xyzx + mad r16.xyz, r8.xyzx, r4.zzzz, r15.xyzx + dp3 r0.z, r16.xyzx, r16.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r16.xyz, r0.zzzz, r16.xyzx + dp3_sat r11.y, r15.xyzx, r3.xyzx + dp3_sat r0.z, r3.xyzx, r16.xyzx + min r11.z, r13.x, l(1.000000) + mad r2.z, r0.z, r1.x, -r0.z + mad r0.z, r2.z, r0.z, l(1.000000) + dp3_sat r2.z, r9.xyzx, r16.xyzx + add r2.z, -r2.z, l(1.000000) + mul r4.w, r2.z, r2.z + mul r4.w, r4.w, r4.w + mul r6.w, r2.z, r4.w + add r7.w, -r11.w, l(1.000000) + mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) + mad r8.w, r7.w, r8.w, l(1.049970) + mad r7.w, r7.w, r8.w, l(0.409255) + min r7.w, r7.w, l(0.999000) + add r8.w, -r7.w, l(1.000000) + add r15.xyz, -r10.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r10.xyzx + mad r2.z, -r4.w, r2.z, l(1.000000) + mad r16.xyz, r10.xyzx, r2.zzzz, r6.wwww + mul r0.z, r0.z, r0.z + div r0.z, r1.x, r0.z + mad r17.xy, -r11.zyzz, r1.xxxx, r11.zyzz + mad r17.xy, r17.xyxx, r11.zyzz, r1.xxxx + sqrt r17.xy, r17.xyxx + mul r17.xy, r11.yzyy, r17.xyxx + add r1.x, r17.y, r17.x + add r1.x, r1.x, l(0.000100) + div r1.x, l(0.500000), r1.x + mul r0.z, r0.z, r1.x + mul r16.xyz, r0.zzzz, r16.xyzx + min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r17.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r17.xyxx, t9.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r1.x, r17.zwzz, t9.xyzw, s1, l(0.000000) + mul r0.z, r0.z, r1.x + mul r0.z, r7.w, r0.z + div r0.z, r0.z, r8.w + mul r17.xyz, r15.xyzx, r15.xyzx + mul r17.xyz, r0.zzzz, r17.xyzx + mad r15.xyz, -r15.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r15.xyz, r17.xyzx, r15.xyzx + add r15.xyz, r15.xyzx, r16.xyzx + mul r15.xyz, r15.xyzx, cb3[4].xxxx + max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r15.xyz, r15.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r16.xyz, r11.yyyy, r12.xyzx + mad r15.xyz, r15.xyzx, r11.yyyy, r16.xyzx + mul r15.xyz, r15.xyzx, cb3[1].xyzx + mov r14.z, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r16.xyz, r14.xzxx, t8.xyzw, s1, cb0[108].x + add r0.z, -r14.x, l(1.000000) + mad r14.xzw, r15.xxyz, r16.xxyz, -r15.xxyz + mad r14.xzw, r0.zzzz, r14.xxzw, r15.xxyz + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t10.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r14.xzw, r0.zzzz, r14.xxzw +else + mov r14.xzw, l(0,0,0,0) +endif +mul r11.yz, r2.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r11.yz, r11.yyzy +mad r0.z, r11.z, cb2[1].y, r11.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r1.x, -cb0[85].y, cb2[2].w, |r1.w| +round_ni r1.x, r1.x +add r2.z, l(-1.000000), cb2[1].w +max r4.w, r1.x, l(0.000000) +min r2.z, r2.z, r4.w +mul r4.w, r2.z, l(8.000000) +ftoi r4.w, r4.w +ge r1.x, r2.z, r1.x +iadd r2.z, r4.w, cb0[110].y +dp3 r4.w, -r9.xyzx, r3.xyzx +add r4.w, r4.w, r4.w +mad r15.xyz, r3.xyzx, -r4.wwww, -r9.xyzx +min r11.x, r13.x, l(1.000000) +add r4.w, -r11.w, l(1.000000) +mad r6.w, -r4.w, l(0.383026), l(-0.0761947036) +mad r6.w, r4.w, r6.w, l(1.049970) +mad r4.w, r4.w, r6.w, l(0.409255) +min r4.w, r4.w, l(0.999000) +add r6.w, -r4.w, l(1.000000) +add r16.xyz, -r10.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r10.xyzx +mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r7.w, r11.yzyy, t9.yzwx, s1, l(0.000000) +mad r17.xyz, -r16.xyzx, r6.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r16.xyz, r16.xyzx, r16.xyzx +mov r18.w, l(1.000000) +mov r19.y, l(1.000000) +mov r20.z, r11.w +mov r21.xyz, l(0,0,0,0) +mov r8.w, l(1.000000) +mov r9.w, l(0) +loop + ilt r10.w, l(7), r9.w + breakc_nz r10.w + iadd r10.w, r0.z, r9.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.w, r10.w, l(0), t0.xxxx + iadd r11.y, r2.z, r9.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.y, r11.y, l(0), t0.xxxx + and r10.w, r10.w, r11.y + and r10.w, r1.x, r10.w + ishl r11.y, r9.w, l(5) + mov r22.xyz, l(0,0,0,0) + mov r11.z, r8.w + mov r12.w, r10.w + loop + breakc_z r12.w + firstbit_lo r15.w, r12.w + ishl r16.w, l(1), r15.w + xor r16.w, r12.w, r16.w + iadd r15.w, r11.y, r15.w + bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r15.wwww, l(1, 3, 5, 6) + bfi r17.w, l(29), l(3), r15.w, l(7) + ftou r19.z, cb3[r23.z + 6].w + ieq r19.z, r19.z, l(1) + if_nz r19.z + add r18.xyz, r5.xyzx, -cb3[r23.x + 6].xyzx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.z + 6].xzyx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.w + 6].yxzy + ushr r26.xyz, cb3[r23.z + 6].xzyx, l(16, 16, 16, 0) + ushr r27.xyz, cb3[r23.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyw, r27.yxyz + mov r28.xz, r24.xxzx + mov r28.yw, r26.xxxz + dp4 r19.z, r18.xyzw, r28.xyzw + mov r26.x, r24.y + mov r26.z, r25.y + mov r26.w, r27.x + dp4 r19.w, r18.xyzw, r26.xyzw + mov r27.xz, r25.xxzx + dp4 r18.x, r18.xyzw, r27.xyzw + max r18.y, |r19.w|, |r19.z| + max r18.x, |r18.x|, r18.y + mad r18.y, cb3[r17.w + 6].x, l(0.500000), l(0.500000) + add r18.x, -r18.y, r18.x + mad r18.y, -cb3[r17.w + 6].x, l(0.500000), l(0.500000) + div_sat r18.x, r18.x, r18.y + add r18.x, -r18.x, l(1.000000) + mul r18.x, r18.x, r18.x + else + mov r18.x, l(1.000000) + endif + lt r18.y, l(0.500000), cb3[r23.y + 6].z + lt r18.z, r18.x, l(0.001000) + or r18.z, r18.y, r18.z + if_nz r18.z + mov r12.w, r16.w + continue + endif + ishl r18.z, r15.w, l(3) + bfi r15.w, l(29), l(3), r15.w, l(2) + lt r19.z, cb3[r18.z + 6].w, l(1.500000) + if_nz r19.z + mad r19.z, cb3[r15.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r19.z, -|cb3[r15.w + 6].x| + add r24.y, -r24.x, cb3[r15.w + 6].y + add r19.z, -|r24.x|, l(1.000000) + add r19.z, -|r24.y|, r19.z + max r19.z, r19.z, l(0.000488281250) + ge r19.w, cb3[r15.w + 6].x, l(0.000000) + movc r24.z, r19.w, r19.z, -r19.z + dp3 r19.z, r24.xyzx, r24.xyzx + rsq r19.z, r19.z + mul r24.xyz, r19.zzzz, r24.xyzx + add r25.xyz, -r5.xyzx, cb3[r23.x + 6].xyzx + dp3 r19.z, r25.xyzx, r25.xyzx + rsq r19.w, r19.z + mul r26.xyz, r19.wwww, r25.xyzx + ftoi r20.w, cb3[r17.w + 6].w + mul r27.xyz, r24.xyzx, cb3[r15.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r21.w, cb3[r18.z + 6].w + and r21.w, r21.w, l(1) + ieq r22.w, r21.w, l(0) + not r22.w, r22.w + lt r23.z, l(0.000000), cb3[r15.w + 6].z + and r22.w, r22.w, r23.z + dp3 r23.z, r28.xyzx, r28.xyzx + sqrt r23.z, r23.z + dp3 r24.w, r29.xyzx, r29.xyzx + sqrt r24.w, r24.w + dp3 r25.w, r3.xyzx, r28.xyzx + div r25.w, r25.w, r23.z + dp3 r26.w, r3.xyzx, r29.xyzx + div r26.w, r26.w, r24.w + add r25.w, r25.w, r26.w + mul_sat r30.x, r25.w, l(0.500000) + dp3 r25.w, r28.xyzx, r29.xyzx + mad r23.z, r23.z, r24.w, r25.w + mad r23.z, r23.z, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r23.z + dp3_sat r19.x, r3.xyzx, r26.xyzx + movc r20.xy, r22.wwww, r30.xyxx, r19.xyxx + lt r19.x, cb3[r23.w + 6].w, l(0.000000) + if_nz r19.x + mul r19.x, cb3[r23.x + 6].w, cb3[r23.x + 6].w + mul r19.x, r19.x, r19.z + mad r19.x, -r19.x, r19.x, l(1.000000) + max r19.x, r19.x, l(0.000000) + add r19.z, r19.z, l(1.000000) + div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z + and r23.z, r22.w, l(0x3f800000) + add r24.w, -r19.z, r20.y + mad r19.z, r23.z, r24.w, r19.z + mul r19.x, r19.x, r19.x + mul r19.x, r19.x, r19.z + else + mul r29.xyz, r25.xyzx, cb3[r23.x + 6].wwww + dp3 r19.z, r29.xyzx, r29.xyzx + min r19.z, r19.z, l(1.000000) + add r19.z, -r19.z, l(1.000000) + log r19.z, r19.z + mul r19.z, r19.z, cb3[r23.w + 6].w + exp r19.z, r19.z + mul r19.x, r19.z, r20.y + endif + dp3 r19.z, r26.xyzx, -r24.xyzx + add r19.z, r19.z, -cb3[r15.w + 6].z + mul_sat r19.z, r19.z, cb3[r15.w + 6].w + mul r19.z, r19.z, r19.z + movc r19.z, r21.w, l(1.000000), r19.z + mul r19.x, r19.z, r19.x + not r19.z, r22.w + ige r20.y, r20.w, l(0) + and r19.z, r19.z, r20.y + if_nz r19.z + if_z r21.w + ishl r19.z, r20.w, l(2) + mul r24.xyz, r5.yyyy, cb5[r19.z + 33].xywx + mad r24.xyz, cb5[r19.z + 32].xywx, r5.xxxx, r24.xyzx + mad r24.xyz, cb5[r19.z + 34].xywx, r5.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb5[r19.z + 35].xywx + div_sat r24.xy, r24.xyxx, r24.zzzz + mad r24.xy, r24.xyxx, cb5[r20.w + 0].zwzz, cb5[r20.w + 0].xyxx + else + ishl r19.z, r20.w, l(2) + dp3 r29.x, -r25.xyzx, cb5[r19.z + 32].xyzx + dp3 r29.y, -r25.xyzx, cb5[r19.z + 33].xyzx + dp3 r29.z, -r25.xyzx, cb5[r19.z + 34].xyzx + lt r19.z, |r29.x|, |r29.y| + and r19.z, r19.z, l(1) + dp2 r20.y, |r29.xyxx|, icb[r19.z + 0].xyxx + lt r20.y, r20.y, |r29.z| + movc r19.z, r20.y, l(2), r19.z + dp3 r20.y, r29.xyzx, icb[r19.z + 0].xyzx + lt r20.y, r20.y, l(0.000000) + bfi r19.z, l(31), l(1), r19.z, r20.y + ushr r20.y, r19.z, l(1) + dp3 r20.y, r29.xyzx, icb[r20.y + 0].xyzx + div r23.z, l(0.000244140625), cb5[r20.w + 0].w + add r23.z, -r23.z, l(0.500000) + utof r24.z, r19.z + ult r24.w, r19.z, l(2) + and r24.w, r24.w, l(2) + dp2 r24.w, r29.xzxx, icb[r24.w + 0].xzxx + mul r24.w, r24.w, icb[r19.z + 4].z + div r24.w, r24.w, |r20.y| + mad r24.z, r24.w, r23.z, r24.z + add r24.z, r24.z, l(0.500000) + mul_sat r25.x, r24.z, l(0.166666672) + iadd r24.z, l(-1), icb[r19.z + 4].y + dp2 r24.z, r29.yzyy, icb[r24.z + 0].xyxx + mul r19.z, r24.z, icb[r19.z + 4].w + div r19.z, r19.z, |r20.y| + mad_sat r25.y, -r19.z, r23.z, l(0.500000) + mad r24.xy, r25.xyxx, cb5[r20.w + 0].zwzz, cb5[r20.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r19.z, r24.xyxx, t11.yzxw, s1, l(0.000000) + mul r19.x, r19.z, r19.x + endif + lt r19.z, l(0.000000), r19.x + if_nz r19.z + if_z r21.w + ftoi r20.y, cb3[r23.y + 6].x + else + add r24.xyz, r5.xyzx, -cb3[r23.x + 6].xyzx + lt r25.xyz, |r24.yzzy|, |r24.xxyx| + and r20.w, r25.y, r25.x + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ushr r21.w, cb3[r15.w + 6].w, l(24) + ubfe r25.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r15.w + 6].wwww + movc r21.w, r24.x, r21.w, r25.x + and r23.z, l(255), cb3[r15.w + 6].w + movc r23.z, r24.y, r25.y, r23.z + ubfe r24.x, l(8), l(8), cb3[r23.y + 6].x + and r24.y, l(255), cb3[r23.y + 6].x + movc r24.x, r24.z, r24.x, r24.y + movc r23.z, r25.z, r23.z, r24.x + movc r20.w, r20.w, r21.w, r23.z + ilt r21.w, r20.w, l(80) + movc r20.y, r21.w, r20.w, l(-1) + endif + ishl r20.w, r20.y, l(2) + mad r24.xyz, r26.xyzx, cb4[r20.y + 288].xxxx, r5.xyzx + mul r21.w, l(5.000000), cb4[r20.y + 288].y + mad r24.xyz, r3.xyzx, r21.wwww, r24.xyzx + mul r25.xyzw, r24.yyyy, cb4[r20.w + 65].xyzw + mad r25.xyzw, cb4[r20.w + 64].xyzw, r24.xxxx, r25.xyzw + mad r24.xyzw, cb4[r20.w + 66].xyzw, r24.zzzz, r25.xyzw + add r24.xyzw, r24.xyzw, cb4[r20.w + 67].xyzw + div r24.xyz, r24.xyzx, r24.wwww + ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ge r29.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r30.xy, -cb4[r20.y + 344].xyxx, cb4[r20.y + 344].zwzz + mad r24.xy, r24.xyxx, r30.xyxx, cb4[r20.y + 344].xyxx + mad r30.xy, r24.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r30.xy, r30.xyxx + mad r24.xy, r24.xyxx, cb4[400].zwzz, -r30.xyxx + add r31.xyzw, r24.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r32.xyzw, r31.xxzz, r31.xxzz + add r30.zw, -r24.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r31.xz, r24.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r33.xy, r24.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r34.xy, r30.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy + add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r24.xy, r32.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r24.xyxx + mul r35.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r24.xy, -r31.xzxx, r31.xzxx, r30.zwzz + add r24.xy, r24.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r36.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r24.xy, r31.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r35.z, r36.x + mov r35.w, r24.x + mov r34.z, r33.x + mov r34.w, r32.x + add r31.xyzw, r34.zwxz, r35.zwxz + mov r36.z, r35.y + mov r36.w, r24.y + mov r33.z, r34.y + mov r33.w, r32.z + add r24.xyw, r33.zyzw, r36.zyzw + div r32.xyz, r34.xzwx, r31.zwyz + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyz, r32.yxzy, cb4[400].xxxx + div r33.xyz, r33.zywz, r24.xywx + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyz, r33.xyzx, cb4[400].yyyy + mov r32.w, r33.x + mad r34.xyzw, r30.xyxy, cb4[400].xyxy, r32.ywxw + mad r30.zw, r30.xxxy, cb4[400].xxxy, r32.zzzw + mov r33.w, r32.y + mov r32.yw, r33.yyyz + mad r35.xyzw, r30.xyxy, cb4[400].xyxy, r32.xyzy + mad r33.xyzw, r30.xyxy, cb4[400].xyxy, r33.wywz + mad r32.xyzw, r30.xyxy, cb4[400].xyxy, r32.xwzw + mul r36.xyzw, r24.xxxy, r31.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r34.xyxx, t6.xxxx, s4, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r34.zwzz, t6.xxxx, s4, r24.z + mul r21.w, r21.w, r36.y + mad r20.w, r36.x, r20.w, r21.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r30.zwzz, t6.xxxx, s4, r24.z + mad r20.w, r36.z, r21.w, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r33.xyxx, t6.xxxx, s4, r24.z + mad r20.w, r36.w, r21.w, r20.w + mul r30.xyzw, r24.yyww, r31.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r35.xyxx, t6.xxxx, s4, r24.z + mad r20.w, r30.x, r21.w, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r35.zwzz, t6.xxxx, s4, r24.z + mad r20.w, r30.y, r21.w, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r33.zwzz, t6.xxxx, s4, r24.z + mad r20.w, r30.z, r21.w, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r32.xyxx, t6.xxxx, s4, r24.z + mad r20.w, r30.w, r21.w, r20.w + ige r21.w, r20.y, l(0) + or r25.xyz, r25.xyzx, r29.xyzx + or r23.z, r25.y, r25.x + or r23.z, r25.z, r23.z + and r24.x, r24.z, l(0x7fffffff) + ult r24.x, l(0x7f800000), r24.x + or r23.z, r23.z, r24.x + mul r24.x, r24.w, r31.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r32.zwzz, t6.xxxx, s4, r24.z + mad r20.w, r24.x, r24.y, r20.w + add r20.w, r20.w, l(-1.000000) + mad r20.y, cb4[r20.y + 288].w, r20.w, l(1.000000) + movc r20.y, r23.z, l(1.000000), r20.y + movc r20.y, r21.w, r20.y, l(1.000000) + else + mov r20.y, l(1.000000) + endif + if_nz r22.w + dp3 r20.w, r15.xyzx, r27.xyzx + mul_sat r21.w, r19.w, cb3[r15.w + 6].z + mad r21.w, r21.w, l(0.500000), r14.y + min r21.w, r21.w, l(1.000000) + div r21.w, r14.y, r21.w + mad r24.xyz, r15.xyzx, r20.wwww, -r27.xyzx + dp3 r22.w, r28.xyzx, r24.xyzx + mul r20.w, r20.w, r20.w + mad r20.w, cb3[r15.w + 6].z, cb3[r15.w + 6].z, -r20.w + div_sat r20.w, r22.w, r20.w + mad r24.xyz, r27.xyzx, r20.wwww, r28.xyzx + dp3 r20.w, r24.xyzx, r24.xyzx + rsq r20.w, r20.w + mul r26.xyz, r20.wwww, r24.xyzx + else + mov r21.w, l(1.000000) + endif + if_nz r19.z + mul_sat r19.z, r19.w, cb3[r17.w + 6].y + mad r24.xyz, r8.xyzx, r4.zzzz, r26.xyzx + dp3 r19.w, r24.xyzx, r24.xyzx + max r19.w, r19.w, l(0.0000610351562) + rsq r19.w, r19.w + mul r24.xyz, r19.wwww, r24.xyzx + dp3_sat r19.w, r3.xyzx, r24.xyzx + dp3_sat r20.w, r9.xyzx, r24.xyzx + lt r22.w, l(0.000000), r19.z + mul r19.z, r19.z, r19.z + mad r23.z, r20.w, l(3.600000), l(0.400000) + div r19.z, r19.z, r23.z + mad r19.z, r11.w, r11.w, r19.z + min r19.z, r19.z, l(1.000000) + movc r19.z, r22.w, r19.z, r14.y + mul r19.z, r19.z, r19.z + mad r22.w, r19.w, r19.z, -r19.w + mad r19.w, r22.w, r19.w, l(1.000000) + add r20.w, -r20.w, l(1.000000) + mul r22.w, r20.w, r20.w + mul r22.w, r22.w, r22.w + mul r23.z, r20.w, r22.w + mad r20.w, -r22.w, r20.w, l(1.000000) + mad r24.xyz, r10.xyzx, r20.wwww, r23.zzzz + mul r19.w, r19.w, r19.w + div r19.w, r19.z, r19.w + mul r19.w, r21.w, r19.w + mad r20.w, -r11.x, r19.z, r11.x + mad r20.w, r20.w, r11.x, r19.z + sqrt r20.w, r20.w + mad r21.w, -r20.x, r19.z, r20.x + mad r19.z, r21.w, r20.x, r19.z + sqrt r19.z, r19.z + mul r19.z, r11.x, r19.z + mad r19.z, r20.x, r20.w, r19.z + add r19.z, r19.z, l(0.000100) + div r19.z, l(0.500000), r19.z + mul r19.z, r19.z, r19.w + mul r24.xyz, r19.zzzz, r24.xyzx + min r24.xyz, r24.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r19.zw, r20.xxxz, l(0.000000, 0.000000, 0.968750, 0.968750), l(0.000000, 0.000000, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r19.z, r19.zwzz, t9.yzxw, s1, l(0.000000) + mul r19.z, r7.w, r19.z + mul r19.z, r4.w, r19.z + div r19.z, r19.z, r6.w + mul r25.xyz, r16.xyzx, r19.zzzz + div r25.xyz, r25.xyzx, r17.xyzx + add r24.xyz, r24.xyzx, r25.xyzx + mul r24.xyz, r24.xyzx, cb3[r17.w + 6].zzzz + max r24.xyz, r24.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r24.xyz, r24.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r25.xyz, r12.xyzx, r20.xxxx + mad r24.xyz, r24.xyzx, r20.xxxx, r25.xyzx + mul r19.xzw, r19.xxxx, cb3[r18.z + 6].xxyz + mul r19.xzw, r20.yyyy, r19.xxzw + mul r19.xzw, r18.xxxx, r19.xxzw + mul r19.xzw, r19.xxzw, r24.xxyz + else + mov r19.xzw, l(0,0,0,0) + endif + else + if_z r18.y + mad r18.x, cb3[r15.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r18.x, -|cb3[r15.w + 6].x| + add r24.y, -r24.x, cb3[r15.w + 6].y + add r18.x, -|r24.x|, l(1.000000) + add r18.x, -|r24.y|, r18.x + max r18.x, r18.x, l(0.000488281250) + ge r18.y, cb3[r15.w + 6].x, l(0.000000) + movc r24.z, r18.y, r18.x, -r18.x + dp3 r18.x, r24.xyzx, r24.xyzx + rsq r18.x, r18.x + mul r20.xyw, r18.xxxx, r24.xyxz + add r24.xyz, -r5.xyzx, cb3[r23.x + 6].xyzx + dp3 r18.x, r24.xyzx, r24.xyzx + rsq r18.y, r18.x + mul r25.xyz, r18.yyyy, r24.xyzx + ftoi r17.w, cb3[r17.w + 6].w + mul r26.xyz, r20.xywx, cb3[r15.w + 6].zzzz + mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx + mad r26.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx + ftou r18.y, cb3[r18.z + 6].w + and r18.y, r18.y, l(1) + ieq r18.z, r18.y, l(0) + not r18.z, r18.z + lt r21.w, l(0.000000), cb3[r15.w + 6].z + and r18.z, r18.z, r21.w + dp3 r21.w, r27.xyzx, r27.xyzx + sqrt r21.w, r21.w + dp3 r22.w, r26.xyzx, r26.xyzx + sqrt r22.w, r22.w + dp3 r23.z, r27.xyzx, r26.xyzx + mad r21.w, r21.w, r22.w, r23.z + mad r21.w, r21.w, l(0.500000), l(1.000000) + div r21.w, l(1.000000, 1.000000, 1.000000, 1.000000), r21.w + movc r21.w, r18.z, r21.w, l(1.000000) + lt r22.w, cb3[r23.w + 6].w, l(0.000000) + if_nz r22.w + mul r22.w, cb3[r23.x + 6].w, cb3[r23.x + 6].w + mul r22.w, r18.x, r22.w + mad r22.w, -r22.w, r22.w, l(1.000000) + max r22.w, r22.w, l(0.000000) + add r18.x, r18.x, l(1.000000) + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x + and r23.z, r18.z, l(0x3f800000) + add r24.w, -r18.x, r21.w + mad r18.x, r23.z, r24.w, r18.x + mul r22.w, r22.w, r22.w + mul r18.x, r18.x, r22.w + else + mul r26.xyz, r24.xyzx, cb3[r23.x + 6].wwww + dp3 r22.w, r26.xyzx, r26.xyzx + min r22.w, r22.w, l(1.000000) + add r22.w, -r22.w, l(1.000000) + log r22.w, r22.w + mul r22.w, r22.w, cb3[r23.w + 6].w + exp r22.w, r22.w + mul r18.x, r21.w, r22.w + endif + dp3 r20.x, r25.xyzx, -r20.xywx + add r20.x, r20.x, -cb3[r15.w + 6].z + mul_sat r20.x, r20.x, cb3[r15.w + 6].w + mul r20.x, r20.x, r20.x + movc r20.x, r18.y, l(1.000000), r20.x + mul r18.x, r18.x, r20.x + not r18.z, r18.z + ige r20.x, r17.w, l(0) + and r18.z, r18.z, r20.x + if_nz r18.z + if_z r18.y + ishl r18.z, r17.w, l(2) + mul r20.xyw, r5.yyyy, cb5[r18.z + 33].xyxw + mad r20.xyw, cb5[r18.z + 32].xyxw, r5.xxxx, r20.xyxw + mad r20.xyw, cb5[r18.z + 34].xyxw, r5.zzzz, r20.xyxw + add r20.xyw, r20.xyxw, cb5[r18.z + 35].xyxw + div_sat r20.xy, r20.xyxx, r20.wwww + mad r20.xy, r20.xyxx, cb5[r17.w + 0].zwzz, cb5[r17.w + 0].xyxx + else + ishl r18.z, r17.w, l(2) + dp3 r26.x, -r24.xyzx, cb5[r18.z + 32].xyzx + dp3 r26.y, -r24.xyzx, cb5[r18.z + 33].xyzx + dp3 r26.z, -r24.xyzx, cb5[r18.z + 34].xyzx + lt r18.z, |r26.x|, |r26.y| + and r18.z, r18.z, l(1) + dp2 r20.w, |r26.xyxx|, icb[r18.z + 0].xyxx + lt r20.w, r20.w, |r26.z| + movc r18.z, r20.w, l(2), r18.z + dp3 r20.w, r26.xyzx, icb[r18.z + 0].xyzx + lt r20.w, r20.w, l(0.000000) + bfi r18.z, l(31), l(1), r18.z, r20.w + ushr r20.w, r18.z, l(1) + dp3 r20.w, r26.xyzx, icb[r20.w + 0].xyzx + div r21.w, l(0.000244140625), cb5[r17.w + 0].w + add r21.w, -r21.w, l(0.500000) + utof r22.w, r18.z + ult r23.z, r18.z, l(2) + and r23.z, r23.z, l(2) + dp2 r23.z, r26.xzxx, icb[r23.z + 0].xzxx + mul r23.z, r23.z, icb[r18.z + 4].z + div r23.z, r23.z, |r20.w| + mad r22.w, r23.z, r21.w, r22.w + add r22.w, r22.w, l(0.500000) + mul_sat r24.x, r22.w, l(0.166666672) + iadd r22.w, l(-1), icb[r18.z + 4].y + dp2 r22.w, r26.yzyy, icb[r22.w + 0].xyxx + mul r18.z, r22.w, icb[r18.z + 4].w + div r18.z, r18.z, |r20.w| + mad_sat r24.y, -r18.z, r21.w, l(0.500000) + mad r20.xy, r24.xyxx, cb5[r17.w + 0].zwzz, cb5[r17.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r17.w, r20.xyxx, t11.yzwx, s1, l(0.000000) + mul r18.x, r17.w, r18.x + endif + lt r17.w, l(0.000000), r18.x + if_nz r17.w + if_z r18.y + ftoi r17.w, cb3[r23.y + 6].x + else + add r18.xyz, r5.xyzx, -cb3[r23.x + 6].xyzx + lt r20.xyw, |r18.yzyz|, |r18.xxxy| + and r20.x, r20.y, r20.x + lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyzx + ushr r20.y, cb3[r15.w + 6].w, l(24) + ubfe r23.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r15.w + 6].wwww + movc r18.x, r18.x, r20.y, r23.x + and r15.w, l(255), cb3[r15.w + 6].w + movc r15.w, r18.y, r23.z, r15.w + ubfe r18.y, l(8), l(8), cb3[r23.y + 6].x + and r20.y, l(255), cb3[r23.y + 6].x + movc r18.y, r18.z, r18.y, r20.y + movc r15.w, r20.w, r15.w, r18.y + movc r15.w, r20.x, r18.x, r15.w + ilt r18.x, r15.w, l(80) + movc r17.w, r18.x, r15.w, l(-1) + endif + ishl r15.w, r17.w, l(2) + mad r18.xyz, r25.xyzx, cb4[r17.w + 288].xxxx, r5.xyzx + mul r20.x, l(5.000000), cb4[r17.w + 288].y + mad r18.xyz, r3.xyzx, r20.xxxx, r18.xyzx + mul r23.xyzw, r18.yyyy, cb4[r15.w + 65].xyzw + mad r23.xyzw, cb4[r15.w + 64].xyzw, r18.xxxx, r23.xyzw + mad r23.xyzw, cb4[r15.w + 66].xyzw, r18.zzzz, r23.xyzw + add r23.xyzw, r23.xyzw, cb4[r15.w + 67].xyzw + div r18.xyz, r23.xyzx, r23.wwww + ge r20.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyxz + ge r23.xyz, r18.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r24.xy, -cb4[r17.w + 344].xyxx, cb4[r17.w + 344].zwzz + mad r18.xy, r18.xyxx, r24.xyxx, cb4[r17.w + 344].xyxx + mad r24.xy, r18.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r24.xy, r24.xyxx + mad r18.xy, r18.xyxx, cb4[400].zwzz, -r24.xyxx + add r25.xyzw, r18.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r26.xyzw, r25.xxzz, r25.xxzz + add r24.zw, -r18.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r25.xz, r18.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r27.xy, r18.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r28.xy, r24.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r27.xy, -r27.xyxx, r27.xyxx, r25.ywyy + add r27.xy, r27.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r27.xy, r27.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r26.xz, r26.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r18.xy, r26.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r18.xyxx + mul r29.xy, r18.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r18.xy, -r25.xzxx, r25.xzxx, r24.zwzz + add r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r30.xy, r18.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r18.xy, r25.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r29.z, r30.x + mov r29.w, r18.x + mov r28.z, r27.x + mov r28.w, r26.x + add r25.xyzw, r28.zwxz, r29.zwxz + mov r30.z, r29.y + mov r30.w, r18.y + mov r27.z, r28.y + mov r27.w, r26.z + add r26.xyz, r27.zywz, r30.zywz + div r28.xyz, r28.xzwx, r25.zwyz + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.yxzy, cb4[400].xxxx + div r27.xyz, r27.zywz, r26.xyzx + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyz, r27.xyzx, cb4[400].yyyy + mov r28.w, r27.x + mad r29.xyzw, r24.xyxy, cb4[400].xyxy, r28.ywxw + mad r18.xy, r24.xyxx, cb4[400].xyxx, r28.zwzz + mov r27.w, r28.y + mov r28.yw, r27.yyyz + mad r30.xyzw, r24.xyxy, cb4[400].xyxy, r28.xyzy + mad r27.xyzw, r24.xyxy, cb4[400].xyxy, r27.wywz + mad r24.xyzw, r24.xyxy, cb4[400].xyxy, r28.xwzw + mul r28.xyzw, r25.zwyz, r26.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r29.xyxx, t6.xxxx, s4, r18.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r29.zwzz, t6.xxxx, s4, r18.z + mul r21.w, r21.w, r28.y + mad r15.w, r28.x, r15.w, r21.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r18.xyxx, t6.xxxx, s4, r18.z + mad r15.w, r28.z, r18.x, r15.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r27.xyxx, t6.xxxx, s4, r18.z + mad r15.w, r28.w, r18.x, r15.w + mul r28.xyzw, r25.xyzw, r26.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.xyxx, t6.xxxx, s4, r18.z + mad r15.w, r28.x, r18.x, r15.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.zwzz, t6.xxxx, s4, r18.z + mad r15.w, r28.y, r18.x, r15.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r27.zwzz, t6.xxxx, s4, r18.z + mad r15.w, r28.z, r18.x, r15.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r24.xyxx, t6.xxxx, s4, r18.z + mad r15.w, r28.w, r18.x, r15.w + ige r18.x, r17.w, l(0) + or r20.xyw, r20.xyxw, r23.xyxz + or r18.y, r20.y, r20.x + or r18.y, r20.w, r18.y + and r20.x, r18.z, l(0x7fffffff) + ult r20.x, l(0x7f800000), r20.x + or r18.y, r18.y, r20.x + mul r20.x, r25.y, r26.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r24.zwzz, t6.xxxx, s4, r18.z + mad r15.w, r20.x, r18.z, r15.w + add r15.w, r15.w, l(-1.000000) + mad r15.w, cb4[r17.w + 288].w, r15.w, l(1.000000) + movc r15.w, r18.y, l(1.000000), r15.w + movc r15.w, r18.x, r15.w, l(1.000000) + else + mov r15.w, l(1.000000) + endif + else + mov r15.w, l(1.000000) + endif + mul r11.z, r11.z, r15.w + mov r19.xzw, l(0,0,0,0) + endif + add r22.xyz, r19.xzwx, r22.xyzx + mov r12.w, r16.w + endloop + mov r8.w, r11.z + add r21.xyz, r21.xyzx, r22.xyzx + iadd r9.w, r9.w, l(1) +endloop +mad r8.xyz, r21.xyzx, r8.wwww, r14.xzwx +ne r4.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy +if_nz r4.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + add r1.x, r0.z, r13.x + mad r2.z, r11.w, l(-16.000000), l(-1.000000) + exp r2.z, r2.z + log r1.x, |r1.x| + mul r1.x, r1.x, r2.z + exp r1.x, r1.x + add r1.x, r0.z, r1.x + add r1.x, r1.x, l(-1.000000) + mov_sat r11.xyz, r1.xxxx + mad r14.xyz, r12.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r12.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r12.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r11.xyz, r1.yyyy + mov r14.xyz, r1.yyyy +endif +mad r16.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[212].x +mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx +dp2 r0.z, r1.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r16.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r16.xyzx +mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r17.xyz, r16.xzyx, -r17.xyzx +max r0.z, |r17.y|, |r17.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.x, |r17.z|, l(-208.000000) +mul_sat r1.x, r1.x, l(0.031250) +max r0.z, r0.z, r1.x +ne r1.x, l(0.000000), cb0[210].w +lt r1.y, r0.z, l(1.000000) +and r1.x, r1.y, r1.x +if_nz r1.x + mad r17.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r17.xyz, r16.xzyx, -r17.xyzx + max r1.x, |r17.y|, |r17.x| + add r1.x, r1.x, l(-29.000000) + add r1.y, |r17.z|, l(-13.000000) + mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + max r1.x, r1.y, r1.x + lt r1.y, r1.x, l(1.000000) + if_nz r1.y + mad r17.xyz, r16.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t15.yzwx, s2, l(0.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.z, l(0.500000), cb0[211].y + mad r4.z, -cb0[211].y, l(0.500000), l(1.000000) + max r2.z, r2.z, r17.y + min r2.z, r4.z, r2.z + mul r17.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t16.xyzw, s1, l(0.000000) + mad r2.z, r19.w, r1.y, r0.z + add r20.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t16.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.yyyy, r20.xyzx + mov r20.w, r18.y + mul r20.xyzw, r1.yyyy, r20.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.xxxx, r17.xyzx + mov r17.w, r18.x + mul r17.xyzw, r1.yyyy, r17.xyzw + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r19.xyzx + mul r18.xyzw, r1.yyyy, r18.xyzw + else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r2.z, r0.z + endif + mad r19.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r19.xyz, r16.xzyx, -r19.xyzx + max r1.y, |r19.y|, |r19.x| + add r1.y, r1.y, l(-116.000000) + mul_sat r1.y, r1.y, l(0.125000) + add r4.z, |r19.z|, l(-52.000000) + mul_sat r4.z, r4.z, l(0.125000) + max r1.y, r1.y, r4.z + lt r4.z, r1.y, l(1.000000) + if_nz r4.z + mad r19.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r21.xyz, r19.xyzx, cb0[211].xyzx + round_ni r21.xyz, r21.xyzx + mad r19.xyz, r19.xyzx, cb0[211].xyzx, -r21.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r19.xyzx, t17.yzwx, s2, l(0.000000) + add r4.z, -r1.y, l(1.000000) + mul r1.x, r1.x, r4.z + mul r4.z, l(0.500000), cb0[211].y + mad r6.w, -cb0[211].y, l(0.500000), l(1.000000) + max r4.z, r4.z, r19.y + min r4.z, r6.w, r4.z + mul r19.w, r4.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyzw, r19.xwzx, t18.xyzw, s1, l(0.000000) + mad r2.z, r22.w, r1.x, r2.z + add r23.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyz, r23.xyzx, t18.xyzw, s1, l(0.000000) + mad r23.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r21.yyyy, r23.xyzx + mov r23.w, r21.y + mad r20.xyzw, r23.xyzw, r1.xxxx, r20.xyzw + add r19.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r21.xxxx, r19.xyzx + mov r19.w, r21.x + mad r17.xyzw, r19.xyzw, r1.xxxx, r17.xyzw + mad r19.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r19.xyzx + mad r18.xyzw, r21.xyzw, r1.xxxx, r18.xyzw + endif + lt r1.x, l(0.000000), r1.y + if_nz r1.x + mad r16.xyz, r16.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r16.xyzx, cb0[211].xyzx + mul r21.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r19.xyzx + mad r19.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r16.xyz, r21.xyzx, r16.xyzx + min r16.xyz, r19.xyzx, r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r16.xyzx, t19.yzwx, s2, l(0.000000) + add r1.x, -r0.z, l(1.000000) + mul r1.x, r1.x, r1.y + max r1.y, r21.y, r16.y + min r1.y, r19.y, r1.y + mul r16.w, r1.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t20.xyzw, s1, l(0.000000) + add r21.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t20.xyzw, s1, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r22.yyyy, r21.xyzx + mov r21.w, r22.y + mad r20.xyzw, r21.xyzw, r1.xxxx, r20.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t20.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r22.xxxx, r16.xyzx + mov r16.w, r22.x + mad r17.xyzw, r16.xyzw, r1.xxxx, r17.xyzw + mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r16.xyzx + mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw + mad r2.z, r19.w, r1.x, r2.z + endif + mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) + add r16.x, -r0.z, r1.x + add r0.z, r0.z, r1.x + mul r16.y, r0.z, l(0.500000) +else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r16.xy, l(0,1.000000,0,0) +endif +mul r19.xyzw, r16.yxyy, cb0[213].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r1.xy, r16.yxyy, cb0[213].wyww +mad r19.x, r1.y, l(0.375000), r1.x +add r18.xyzw, r18.xyzw, r19.wyzx +mul r19.xyzw, r16.yxyy, cb0[214].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r1.xy, r16.yxyy, cb0[214].wyww +mad r19.x, r1.y, l(0.375000), r1.x +add r17.xyzw, r17.xyzw, r19.wyzx +mul r19.xyzw, r16.yxyy, cb0[215].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r1.xy, r16.yxyy, cb0[215].wyww +mad r19.x, r1.y, l(0.375000), r1.x +add r16.xyzw, r19.wyzx, r20.xyzw +ge r1.xy, r4.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r1.y, r1.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r19.xyzw, r4.xyxx, t14.xyzw, s1, l(0.000000) + lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r19.xyzw| + or r1.xy, r20.zwzz, r20.xyxx + or r0.z, r1.y, r1.x + if_nz r0.z + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mov r1.x, l(1.000000) + mov r1.y, r0.z + mov r2.z, l(0) + loop + ge r4.x, l(4.600000), r1.y + breakc_nz r4.x + iadd r4.x, r2.z, l(1) + mul r4.yz, r1.xxyx, l(0.000000, 0.500000, 0.500000, 0.000000) + mov r1.xy, r4.yzyy + mov r2.z, r4.x + continue + endloop + mul r19.xyzw, r1.xxxx, r19.xyzw + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb6[3].x, cb6[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r1.x, r0.z, l(0.00390625000) + mov r1.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t13.xyzw, s1, l(0.000000) + mad r1.xy, r1.xyxx, cb6[2].xyxx, cb6[2].zwzz + mul r20.x, r1.x, l(3.54490781) + mul r20.yzw, r1.yyyy, r19.yyzw + mul r0.z, r19.x, l(0.406976730) + exp r0.z, r0.z + mul r19.xyzw, r0.zzzz, r20.xyzw + mov r20.xyzw, r19.xyzw + mov r0.z, l(0) + loop + uge r1.x, r0.z, r2.z + breakc_nz r1.x + mul r21.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r1.x, r21.xyzw, r20.xyzw + dp2 r1.y, r21.yxyy, r20.xyxx + dp2 r4.x, r21.zxzz, r20.xzxx + dp2 r4.y, r21.wxww, r20.xwxx + iadd r4.z, r0.z, l(1) + mov r20.xy, r1.xyxx + mov r20.zw, r4.xxxy + mov r0.z, r4.z + continue + endloop + mul r19.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r20.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r19.xyzw, r20.xyzw + dp2 r1.x, r19.yxyy, r20.xyxx + dp2 r1.y, r19.zxzz, r20.xzxx + dp2 r2.z, r19.wxww, r20.xwxx + mul r20.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.x, r19.xyzw, r20.xyzw + dp2 r4.y, r19.yxyy, r20.xyxx + dp2 r4.z, r19.zxzz, r20.xzxx + dp2 r6.w, r19.wxww, r20.xwxx + mul r20.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r7.w, r19.xyzw, r20.xyzw + dp2 r8.w, r19.yxyy, r20.xyxx + dp2 r9.w, r19.zxzz, r20.xzxx + dp2 r10.w, r19.wxww, r20.xwxx + mul r18.w, r0.z, l(0.886226952) + mul r18.x, r2.z, l(-1.02332675) + mul r18.yz, r1.xxyx, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r17.x, r6.w, l(-1.02332675) + mul r17.yzw, r4.yyzx, l(0.000000, -1.02332675, 1.02332675, 0.886226952) + mul r16.w, r7.w, l(0.886226952) + mul r16.x, r10.w, l(-1.02332675) + mul r16.y, r8.w, l(-1.02332675) + mul r16.z, r9.w, l(1.02332675) + endif +endif +dp3 r0.z, r18.xyzx, r3.xyzx +add r0.z, r18.w, r0.z +max r4.x, r0.z, l(0.000000) +dp3 r0.z, r17.xyzx, r3.xyzx +add r0.z, r17.w, r0.z +max r4.y, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r3.xyzx +add r0.z, r16.w, r0.z +max r4.z, r0.z, l(0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.x, r11.w, l(0.001000) +log r1.x, r1.x +mad r1.x, -r1.x, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.x +mul r1.xy, r2.xyxx, cb1[0].wwww +round_ni r1.xy, r1.xyxx +add r2.z, |r1.w|, -cb1[2].y +round_ni r2.z, r2.z +add r6.w, l(-1.000000), cb1[1].x +max r7.w, r2.z, l(0.000000) +min r6.w, r6.w, r7.w +ge r2.z, r6.w, r2.z +mad r1.x, r1.y, cb1[0].x, r1.x +ftoi r1.x, r1.x +iadd r1.x, r1.x, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx +ftoi r1.y, r6.w +iadd r1.y, r1.y, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx +and r1.x, r1.y, r1.x +and r1.x, r1.x, r2.z +mul r16.xyz, r4.xyzx, cb0[111].xxxx +dp3 r1.y, r16.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r5.w, l(1.000000) +mov r3.w, l(1.000000) +mov r16.xyz, l(0,0,0,0) +mov r2.z, l(1.000000) +mov r6.w, r1.x +mov r7.w, l(0) +loop + lt r8.w, l(0.010000), r2.z + ine r9.w, r6.w, l(0) + and r9.w, r8.w, r9.w + if_nz r9.w + firstbit_lo r9.w, r6.w + ishl r10.w, l(1), r9.w + xor r6.w, r6.w, r10.w + ishl r9.w, r9.w, l(3) + dp4 r17.x, cb1[r9.w + 6].xyzw, r5.xyzw + dp4 r17.y, cb1[r9.w + 7].xyzw, r5.xyzw + dp4 r17.z, cb1[r9.w + 8].xyzw, r5.xyzw + ge r18.xyz, cb1[r9.w + 5].xyzx, |r17.xyzx| + and r10.w, r18.y, r18.x + and r10.w, r18.z, r10.w + if_nz r10.w + mul r10.w, l(0.100000), cb1[r9.w + 5].x + mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r17.xyzx|, cb1[r9.w + 5].xyzx + mul r19.xyz, r19.xyzx, cb1[r9.w + 9].xyzx + eq r11.w, l(1.000000), cb1[r9.w + 10].x + if_nz r11.w + dp3 r20.x, cb1[r9.w + 6].xyzx, r15.xyzx + dp3 r20.y, cb1[r9.w + 7].xyzx, r15.xyzx + dp3 r20.z, cb1[r9.w + 8].xyzx, r15.xyzx + add r21.xyz, -r17.xyzx, cb1[r9.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r17.xyzx, -cb1[r9.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r11.w, r21.y, r21.x + min r11.w, r21.z, r11.w + mad r17.xyz, r20.xyzx, r11.wwww, r17.xyzx + else + mov r17.xyz, r15.xyzx + endif + dp3 r11.w, r17.xyzx, r17.xyzx + rsq r11.w, r11.w + mul r17.xyz, r11.wwww, r17.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r21.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r11.w, r17.xyzx, r20.xyzx + div r17.xyz, r17.xyzx, r11.wwww + lt r11.w, r17.z, l(0.000000) + add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r17.zw, r17.zzzw, r20.xxxy + movc r17.xy, r11.wwww, r17.zwzz, r17.xyxx + dp4 r11.w, cb1[r9.w + 4].xyzw, r3.xyzw + max r11.w, r11.w, l(0.000000) + max r11.w, r11.w, l(0.000100) + min r12.w, r19.z, r19.y + min r12.w, r12.w, r19.x + add r13.x, r18.y, r18.x + mad r13.x, r18.z, r18.z, r13.x + mad r10.w, r10.w, r10.w, -r13.x + mul r10.w, r10.w, cb1[r9.w + 9].x + mul r10.w, r10.w, cb1[r9.w + 9].x + add r13.x, l(1.000000), -cb1[r9.w + 10].y + mul r10.w, r10.w, r13.x + mul r10.w, r10.w, l(100.000000) + mad_sat r10.w, r12.w, cb1[r9.w + 10].y, r10.w + mul r12.w, r10.w, cb1[r9.w + 10].w + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r17.xy, r17.xyxx, cb1[1].wwww, cb1[2].wwww + mov r17.z, cb1[r9.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t5.xyzw, s3, r0.z + mul r17.xyz, r17.xyzx, cb1[r9.w + 9].wwww + div r13.x, r1.y, r11.w + min r13.x, |r13.x|, l(1.000000) + mad r13.x, r13.x, l(2.000000), r1.y + add r11.w, r11.w, l(2.000000) + div r11.w, r13.x, r11.w + add r11.w, r11.w, l(-1.000000) + mad r11.w, r11.w, cb0[112].w, l(1.000000) + mul r17.xyz, r11.wwww, r17.xyzx + mul r17.xyz, r12.wwww, r17.xyzx + mad r16.xyz, r17.xyzx, r2.zzzz, r16.xyzx + mad r9.w, -r10.w, cb1[r9.w + 10].w, l(1.000000) + mul r2.z, r2.z, r9.w + endif + mov r7.w, l(-1) + continue + else + mov r7.w, r8.w + break + endif + mov r7.w, r8.w +endloop +if_nz r7.w + dp3 r1.x, r15.xyzx, r15.xyzx + rsq r1.x, r1.x + mul r15.xyz, r1.xxxx, r15.xyzx + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r18.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r18.xyzx + itof r17.xyz, r17.xyzx + dp3 r1.x, r15.xyzx, r17.xyzx + div r15.xyz, r15.xyzx, r1.xxxx + lt r1.x, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r17.xxxy + movc r15.xy, r1.xxxx, r15.zwzz, r15.xyxx + mov r3.w, l(1.000000) + dp4 r1.x, cb1[3].xyzw, r3.xyzw + max r1.x, r1.x, l(0.000000) + max r1.x, r1.x, l(0.000100) + mad r3.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb1[1].wwww, cb1[2].wwww + mov r3.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s3, r0.z + div r0.z, r1.y, r1.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r1.y + add r1.x, r1.x, l(2.000000) + div r0.z, r0.z, r1.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r3.xyz, r0.zzzz, r3.xyzx + mad r16.xyz, r3.xyzx, r2.zzzz, r16.xyzx +endif +mul r3.xyz, r16.xyzx, cb0[112].zzzz +mul r3.xyz, r3.xyzx, cb0[111].yyyy +if_nz r4.w + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.x, -r0.z, l(1.000000) + mul r16.xyz, r1.xxxx, r3.xyzx + mad r3.xyz, r15.xyzx, r0.zzzz, r16.xyzx +endif +mul r4.xyz, r12.xyzx, r4.xyzx +mul r4.xyz, r4.xyzx, cb0[111].xxxx +add r0.z, -r1.z, l(1.000000) +div r0.z, r0.z, r1.z +mul r1.xyz, r0.zzzz, r10.xyzx +mad r1.xyz, r1.xyzx, r13.yzwy, r13.yzwy +mul r1.xyz, r1.xyzx, r3.xyzx +mul r1.xyz, r11.xyzx, r1.xyzx +mad r1.xyz, r4.xyzx, r14.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r8.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r2.z, r2.w, cb0[154].w, -cb0[153].w +max r2.z, r2.z, l(0.000000) +mul r3.x, r0.z, l(-1.442695) +exp r3.x, r3.x +add r3.x, -r3.x, l(1.000000) +div r0.z, r3.x, r0.z +mad r3.x, r5.y, cb0[156].w, cb0[158].w +mul r3.x, r3.x, l(1.442695) +exp r3.x, r3.x +mul r0.z, r0.z, r3.x +mul r0.z, r0.z, -r2.z +mul r3.xyz, r0.zzzz, cb0[155].xyzx +mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r3.xyz, r3.xyzx +dp3 r0.z, -r9.xyzx, cb0[154].xyzx +mad r2.z, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r3.w, r0.zzzz, cb0[155].wwww +add r2.z, r2.z, -r3.w +lt r3.w, l(0.000000), cb0[163].z +if_nz r3.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r4.x, r0.y, r0.w, r0.x + dp3 r0.x, -r9.xyzx, -r7.xyzx + add r3.w, r5.y, -cb0[44].y + lt r4.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r4.z + mul r0.x, r0.x, cb0[163].w + div r4.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w + mul r4.w, r0.x, r4.z + mad r5.w, r4.w, r3.w, cb0[44].y + mad r3.w, -r4.w, r3.w, r3.w + mul r4.w, r3.w, cb0[159].z + max r4.w, r4.w, l(-127.000000) + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + add r6.w, r5.w, -cb0[159].x + mul r6.w, r6.w, cb0[159].z + max r6.w, r6.w, l(-127.000000) + exp r6.w, -r6.w + mul r6.w, r6.w, cb0[159].y + lt r7.x, l(5.960464478E-08), |r4.w| + exp r7.y, -r4.w + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r4.w + mad r4.w, -r4.w, l(0.240226507), l(0.693147182) + movc r4.w, r7.x, r7.y, r4.w + add r5.w, r5.w, -cb0[162].z + mul r5.w, r5.w, cb0[162].x + max r5.w, r5.w, l(-127.000000) + exp r5.w, -r5.w + mul r5.w, r5.w, cb0[162].y + lt r7.x, l(5.960464478E-08), |r3.w| + exp r7.y, -r3.w + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r7.x, r7.y, r3.w + mul r3.w, r3.w, r5.w + mad r3.w, r6.w, r4.w, r3.w + mad r0.x, -r0.x, r4.z, l(1.000000) + mul r0.x, r2.w, r0.x + mul r0.x, r0.x, r3.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r2.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r4.y, r0.w, r4.x, r0.y + ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r2.xxxy + mul r4.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r1.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r4.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t12.xyzw, s1, l(0.000000) + add r0.y, |r1.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r0.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r7.xyz, r0.yyyy, cb0[161].xyzx + mad r4.xyz, r7.xyzx, r4.wwww, r4.xyzx + mul r0.x, r0.x, r4.w +else + add r0.y, r5.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r1.w, cb0[44].y, -cb0[159].x + mul r1.w, r1.w, cb0[159].z + max r1.w, r1.w, l(-127.000000) + exp r1.w, -r1.w + mul r1.w, r1.w, cb0[159].y + lt r2.x, l(5.960464478E-08), |r0.w| + exp r2.y, -r0.w + add r2.y, -r2.y, l(1.000000) + div r2.y, r2.y, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r2.x, r2.y, r0.w + add r2.x, cb0[44].y, -cb0[162].z + mul r2.x, r2.x, cb0[162].x + max r2.x, r2.x, l(-127.000000) + exp r2.x, -r2.x + mul r2.x, r2.x, cb0[162].y + lt r2.y, l(5.960464478E-08), |r0.y| + exp r3.w, -r0.y + add r3.w, -r3.w, l(1.000000) + div r3.w, r3.w, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r2.y, r3.w, r0.y + mul r0.y, r0.y, r2.x + mad r0.y, r1.w, r0.w, r0.y + mul r0.y, r2.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r2.xy, r2.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r2.x + add r0.y, r2.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r2.xyw, r0.xxxx, r3.xyxz +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r1.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r2.z, l(12.566371) +sqrt r2.z, r2.z +mul r2.z, r2.z, r3.w +max r2.z, r2.z, l(0.001000) +div r1.w, r1.w, r2.z +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r3.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r4.xyzx +mad r0.xyz, r1.xyzx, r2.xywx, r0.xyzx +dp3 r0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r6.xyzx, r6.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r5.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t25.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x8D6CC6FA.cso b/src/games/endfield/deferred-lighting/0x8D6CC6FA.cso new file mode 100644 index 0000000000000000000000000000000000000000..e37fac5dda3046a0cf7e64c71166431798250581 GIT binary patch literal 67840 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 Oue>&X`Z1Nq&;JHA69mWr literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x8D6CC6FA.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x8D6CC6FA.ps_5_0.asm new file mode 100644 index 0000000000..421a352f59 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x8D6CC6FA.ps_5_0.asm @@ -0,0 +1,2234 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Jan 30 19:59:40 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[63], dynamicIndexed +dcl_constantbuffer CB2[259], dynamicIndexed +dcl_constantbuffer CB3[3], immediateIndexed +dcl_constantbuffer CB4[2054], dynamicIndexed +dcl_constantbuffer CB5[401], dynamicIndexed +dcl_constantbuffer CB6[15], dynamicIndexed +dcl_constantbuffer CB7[160], dynamicIndexed +dcl_constantbuffer CB8[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2darray (float,float,float,float) t10 +dcl_resource_texture2darray (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_resource_texture3d (float,float,float,float) t27 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 37 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t24.yxzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t25.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t26.xyzw +mul r3.w, r3.w, l(255.000000) +round_ne r3.w, r3.w +ftou r3.w, r3.w +and r4.x, r3.w, l(128) +if_nz r4.x + mad r4.yz, r1.yyxy, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + dp2 r4.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r4.yzyy| + add r5.y, -r4.w, l(1.000000) + lt r4.w, r5.y, l(0.000000) + ge r6.xy, r4.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + add r6.zw, -|r4.zzzy|, l(0.000000, 0.000000, 1.000000, 1.000000) + movc r6.xy, r6.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) + mul r6.xy, r6.xyxx, r6.zwzz + movc r5.xz, r4.wwww, r6.xxyx, r4.yyzy + mad r4.yz, r2.xxyx, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + dp2 r4.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r4.yzyy| + add r6.y, -r4.w, l(1.000000) + lt r4.w, r6.y, l(0.000000) + ge r7.xy, r4.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + add r7.zw, -|r4.zzzy|, l(0.000000, 0.000000, 1.000000, 1.000000) + movc r7.xy, r7.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) + mul r7.xy, r7.xyxx, r7.zwzz + movc r6.xz, r4.wwww, r7.xxyx, r4.yyzy + dp3 r4.y, r6.xyzx, r6.xyzx + rsq r4.y, r4.y + mul r6.xyz, r4.yyyy, r6.xyzx + dp3 r4.y, r5.xyzx, r5.xyzx + rsq r4.y, r4.y + mul r4.yzw, r4.yyyy, r5.xxyz + mul r1.w, r1.w, l(3.000000) + round_ne r1.w, r1.w + mul r2.w, r2.w, l(3.000000) + round_ne r2.w, r2.w + mad r1.w, r1.w, l(4.000000), r2.w + ftoi r1.w, r1.w + and r2.w, r3.w, l(127) + utof r2.w, r2.w + mul r2.w, r2.w, l(0.00787401572) + mov r1.x, r1.z + mov r1.z, l(0) + mov r5.xzw, l(0,0,0,0) + mov r3.w, r1.w +else + mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| + add r7.y, -r1.w, l(1.000000) + lt r1.w, r7.y, l(0.000000) + ge r8.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + add r8.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + movc r8.xy, r8.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) + mul r8.xy, r8.xyxx, r8.zwzz + movc r7.xz, r1.wwww, r8.xxyx, r2.xxyx + iadd r1.w, r3.w, l(-1) + umin r1.w, r1.w, l(62) + ult r2.x, l(0), r3.w + uge r2.y, l(63), r3.w + and r2.x, r2.y, r2.x + and r5.xyzw, r2.xxxx, cb1[r1.w + 0].yxzw + dp3 r1.w, r7.xyzx, r7.xyzx + rsq r1.w, r1.w + mul r6.xyz, r1.wwww, r7.xyzx + mul r1.z, r1.y, r5.y + mov r4.yzw, l(0,0,0,0) + mov r2.w, l(0) +endif +utof r1.yw, r0.xxxy +mul r2.xy, v0.xyxx, cb0[82].zwzz +mad r7.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r7.zw, r1.yyyw, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r7.zw, r7.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r5.y, r7.zwzz, t1.yxzw, s0, l(0.000000) +mul r8.xyzw, -r7.yyyy, cb0[25].xyzw +mad r7.xyzw, cb0[24].xyzw, r7.xxxx, r8.xyzw +mad r7.xyzw, cb0[26].xyzw, r5.yyyy, r7.xyzw +add r7.xyzw, r7.xyzw, cb0[27].xyzw +div r7.xyz, r7.xyzx, r7.wwww +mul r5.y, r7.y, cb0[1].z +mad r5.y, cb0[0].z, r7.x, r5.y +mad r5.y, cb0[2].z, r7.z, r5.y +add r5.y, r5.y, cb0[3].z +eq r8.x, l(0.000000), cb0[86].w +add r8.yzw, -r7.xxyz, cb0[44].xxyz +mov r9.x, cb0[0].z +mov r9.y, cb0[1].z +mov r9.z, cb0[2].z +movc r10.xyz, r8.xxxx, r8.yzwy, r9.xyzx +dp3 r8.x, r10.xyzx, r10.xyzx +max r9.w, r8.x, l(9.999999939E-09) +rsq r9.w, r9.w +mul r11.xyz, r9.wwww, r10.xyzx +mul r8.x, r8.x, r9.w +lt r10.w, l(0.000488281250), cb0[234].x +if_nz r10.w + sample_b_indexable(texture2d)(float,float,float,float) r12.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x +else + mov r12.xy, l(1.000000,1.000000,0,0) +endif +min r10.w, r12.y, r12.x +min r11.w, r2.z, l(1.000000) +add r12.y, r2.z, -r11.w +mad r10.w, r10.w, r12.y, r11.w +add r2.z, r2.z, -r10.w +mad r12.w, r12.x, r2.z, r10.w +dp3 r2.z, r6.xyzx, r11.xyzx +max r2.z, r2.z, l(0.000000) +mad r13.xyzw, r12.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r10.w, r13.x, r13.x +mul r11.w, r2.z, l(-9.280000) +exp r11.w, r11.w +min r10.w, r10.w, r11.w +mad r10.w, r10.w, r13.x, r13.y +mad r13.xy, r10.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz +mad r10.w, r13.x, l(0.040000), r13.y +ld_indexable(texture2d)(float,float,float,float) r13.x, r0.xyzz, t7.xyzw +lt r0.z, l(0.001000), r13.x +if_nz r0.z + dp3 r0.z, -r11.xyzx, r6.xyzx + add r0.z, r0.z, r0.z + mad r14.xyz, r6.xyzx, -r0.zzzz, -r11.xyzx + dp3 r0.z, -cb4[0].xyzx, r14.xyzx + mad r15.xyz, cb4[0].xyzx, r0.zzzz, r14.xyzx + lt r0.z, r0.z, cb4[4].z + dp3 r11.w, r15.xyzx, r15.xyzx + max r11.w, r11.w, l(0.0000610351562) + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xyzx + mul r15.xyz, r15.xyzx, cb4[4].yyyy + mad r15.xyz, -cb4[0].xyzx, cb4[4].zzzz, r15.xyzx + dp3 r11.w, r15.xyzx, r15.xyzx + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xyzx + movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx + mad r15.xyz, r10.xyzx, r9.wwww, r14.xyzx + dp3 r0.z, r15.xyzx, r15.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r15.xyz, r0.zzzz, r15.xyzx + dp3 r0.z, r14.xyzx, r6.xyzx + mov_sat r12.y, r0.z + dp3_sat r11.w, r6.xyzx, r15.xyzx + dp3_sat r13.z, r11.xyzx, r15.xyzx + min r12.z, r2.z, l(1.000000) + if_nz r4.x + mul r13.w, r12.w, r12.w + mul r13.w, r13.w, r13.w + mad r14.w, r11.w, r13.w, -r11.w + mad r14.w, r14.w, r11.w, l(1.000000) + add r15.x, -r13.z, l(1.000000) + mul r15.y, r15.x, r15.x + mul r15.y, r15.y, r15.y + mul r15.z, r15.x, r15.y + add r15.w, -r12.w, l(1.000000) + mad r16.x, -r15.w, l(0.383026), l(-0.0761947036) + mad r16.x, r15.w, r16.x, l(1.049970) + mad r15.w, r15.w, r16.x, l(0.409255) + min r15.w, r15.w, l(0.999000) + add r16.x, -r15.w, l(1.000000) + mad r15.x, -r15.y, r15.x, l(1.000000) + mad r15.x, r15.x, l(0.040000), r15.z + mul r14.w, r14.w, r14.w + div r14.w, r13.w, r14.w + mad r15.yz, -r12.zzyz, r13.wwww, r12.zzyz + mad r15.yz, r15.yyzy, r12.zzyz, r13.wwww + sqrt r15.yz, r15.yyzy + mul r15.yz, r12.yyzy, r15.yyzy + add r13.w, r15.z, r15.y + add r13.w, r13.w, l(0.000100) + div r13.w, l(0.500000), r13.w + mul r13.w, r13.w, r14.w + mul r13.w, r13.w, r15.x + min r13.w, r13.w, l(2048.000000) + mad r17.xyzw, r12.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r14.w, r17.xyxx, t9.yzwx, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r15.x, r17.zwzz, t9.xyzw, s1, l(0.000000) + mul r14.w, r14.w, r15.x + mul r14.w, r15.w, r14.w + div r14.w, r14.w, r16.x + mul r14.w, r14.w, l(0.00734693790) + mad r15.x, -r16.x, l(0.0857142806), l(1.000000) + div r14.w, r14.w, r15.x + add r15.xyz, r13.wwww, r14.wwww + mov r16.xyz, l(0,0,0,0) + else + mul r13.w, r12.w, r12.w + mul r13.w, r13.w, r13.w + mad r14.w, r11.w, r13.w, -r11.w + mad r11.w, r14.w, r11.w, l(1.000000) + add r13.z, -r13.z, l(1.000000) + mul r14.w, r13.z, r13.z + mul r14.w, r14.w, r14.w + mul r15.w, r13.z, r14.w + add r16.w, -r12.w, l(1.000000) + mad r17.x, -r16.w, l(0.383026), l(-0.0761947036) + mad r17.x, r16.w, r17.x, l(1.049970) + mad r16.w, r16.w, r17.x, l(0.409255) + min r16.w, r16.w, l(0.999000) + add r17.x, -r16.w, l(1.000000) + add_sat r17.y, -r1.z, l(1.000000) + add r18.xyz, r5.xxxx, l(1.000000, 0.666666687, 0.333333343, 0.000000) + frc r18.xyz, r18.xyzx + mad r18.xyz, r18.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) + add_sat r18.xyz, |r18.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) + add r18.xyz, r18.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) + mad r18.xyz, r5.zzzz, r18.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r18.xyz, r1.zzzz, r18.xyzx + mad_sat r0.z, r0.z, l(0.666666687), l(0.333333343) + log r0.z, r0.z + mul r0.z, r0.z, l(1.500000) + exp r0.z, r0.z + mad r0.z, r0.z, l(1.66666663), l(-1.000000) + mad r0.z, r17.y, r0.z, l(1.000000) + mul r0.z, r0.z, r1.x + mul r17.z, r0.z, l(0.159154937) + dp3 r17.w, r11.xyzx, r14.xyzx + mov_sat r17.w, -r17.w + log r17.w, r17.w + mul r17.w, r17.w, l(12.000000) + exp r17.w, r17.w + mad r17.y, r17.y, l(-2.900000), l(3.000000) + mul r17.y, r17.y, r17.w + mad r0.z, -r0.z, l(0.159154937), l(1.000000) + mad r0.z, r17.y, r0.z, r17.z + mul r16.xyz, r0.zzzz, r18.xyzx + mad r0.z, -r14.w, r13.z, l(1.000000) + mad r0.z, r0.z, l(0.040000), r15.w + mul r11.w, r11.w, r11.w + div r11.w, r13.w, r11.w + mad r17.yz, -r12.zzyz, r13.wwww, r12.zzyz + mad r13.zw, r17.yyyz, r12.zzzy, r13.wwww + sqrt r13.zw, r13.zzzw + mul r13.zw, r12.yyyz, r13.zzzw + add r13.z, r13.w, r13.z + add r13.z, r13.z, l(0.000100) + div r13.z, l(0.500000), r13.z + mul r11.w, r11.w, r13.z + mul r0.z, r0.z, r11.w + min r0.z, r0.z, l(2048.000000) + mad r18.xyzw, r12.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r11.w, r18.xyxx, t9.yzwx, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r12.z, r18.zwzz, t9.yzxw, s1, l(0.000000) + mul r11.w, r11.w, r12.z + mul r11.w, r16.w, r11.w + div r11.w, r11.w, r17.x + mul r11.w, r11.w, l(0.00734693790) + mad r12.z, -r17.x, l(0.0857142806), l(1.000000) + div r11.w, r11.w, r12.z + add r15.xyz, r0.zzzz, r11.wwww + endif + mul r15.xyz, r15.xyzx, cb4[4].xxxx + max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r15.xyz, r15.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r17.xyz, r12.yyyy, r15.xyzx + if_nz r4.x + ult r0.z, l(0), r3.w + uge r11.w, l(15), r3.w + and r0.z, r0.z, r11.w + if_nz r0.z + iadd r11.w, r3.w, l(-1) + umin r11.w, r11.w, l(14) + mul r18.y, r2.w, cb6[r11.w + 0].w + itof r18.z, r11.w + add r19.xyz, -r6.xyzx, r4.yzwy + mad r20.xyz, cb6[r11.w + 0].xxxx, r19.xyzx, r6.xyzx + dp3 r12.z, r20.xyzx, r20.xyzx + rsq r12.z, r12.z + mul r20.xyz, r12.zzzz, r20.xyzx + dp3 r12.z, r20.xyzx, r14.xyzx + mad r18.w, r12.z, l(0.500000), l(0.500000) + sample_l_indexable(texture2darray)(float,float,float,float) r20.x, r18.wyzw, t10.xyzw, s1, l(0.000000) + mad r21.xyz, cb6[r11.w + 0].yyyy, r19.xyzx, r6.xyzx + dp3 r12.z, r21.xyzx, r21.xyzx + rsq r12.z, r12.z + mul r21.xyz, r12.zzzz, r21.xyzx + dp3 r12.z, r21.xyzx, r14.xyzx + mad r18.x, r12.z, l(0.500000), l(0.500000) + sample_l_indexable(texture2darray)(float,float,float,float) r20.y, r18.xyzx, t10.xyzw, s1, l(0.000000) + mad r19.xyz, cb6[r11.w + 0].zzzz, r19.xyzx, r6.xyzx + dp3 r11.w, r19.xyzx, r19.xyzx + rsq r11.w, r11.w + mul r19.xyz, r11.wwww, r19.xyzx + dp3 r11.w, r19.xyzx, r14.xyzx + mad r18.x, r11.w, l(0.500000), l(0.500000) + sample_l_indexable(texture2darray)(float,float,float,float) r20.z, r18.xyzx, t10.xyzw, s1, l(0.000000) + endif + movc r14.xyz, r0.zzzz, r20.xyzx, r12.yyyy + mad r14.xyz, r3.xyzx, r14.xyzx, r17.xyzx + add r14.xyz, r16.xyzx, r14.xyzx + mul r14.xyz, r14.xyzx, cb4[1].xyzx + else + mad r15.xyz, r15.xyzx, r12.yyyy, r16.xyzx + mad r15.xyz, r3.xyzx, r12.yyyy, r15.xyzx + mul r14.xyz, r15.xyzx, cb4[1].xyzx + endif + mov r13.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r13.yzw, r13.xyxx, t8.wxyz, s1, cb0[108].x + add r0.z, -r13.x, l(1.000000) + mad r13.xyz, r14.xyzx, r13.yzwy, -r14.xyzx + mad r13.xyz, r0.zzzz, r13.xyzx, r14.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r2.xyxx, t12.yzxw, s1, l(0.000000) + mul r13.xyz, r0.zzzz, r13.xyzx +else + mov r13.xyz, l(0,0,0,0) +endif +mul r12.yz, r1.yywy, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r12.yz, r12.yyzy +mad r0.z, r12.z, cb3[1].y, r12.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r11.w, -cb0[85].y, cb3[2].w, |r5.y| +round_ni r11.w, r11.w +add r12.y, l(-1.000000), cb3[1].w +max r12.z, r11.w, l(0.000000) +min r12.y, r12.y, r12.z +mul r12.z, r12.y, l(8.000000) +ftoi r12.z, r12.z +ge r11.w, r12.y, r11.w +iadd r12.y, r12.z, cb0[110].y +mul r12.z, r12.w, r12.w +dp3 r13.w, -r11.xyzx, r6.xyzx +add r13.w, r13.w, r13.w +mad r14.xyz, r6.xyzx, -r13.wwww, -r11.xyzx +min r12.x, r2.z, l(1.000000) +add r13.w, -r12.w, l(1.000000) +mad r14.w, -r13.w, l(0.383026), l(-0.0761947036) +mad r14.w, r13.w, r14.w, l(1.049970) +mad r13.w, r13.w, r14.w, l(0.409255) +min r13.w, r13.w, l(0.999000) +add r14.w, -r13.w, l(1.000000) +mad r15.xy, r12.xwxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r15.x, r15.xyxx, t9.xyzw, s1, l(0.000000) +mad r15.y, -r14.w, l(0.0857142806), l(1.000000) +add_sat r15.z, -r1.z, l(1.000000) +add r16.xyz, r5.xxxx, l(1.000000, 0.666666687, 0.333333343, 0.000000) +frc r16.xyz, r16.xyzx +mad r16.xyz, r16.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) +add_sat r16.xyz, |r16.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) +add r16.xyz, r16.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) +mad r16.xyz, r5.zzzz, r16.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r16.xyz, r1.zzzz, r16.xyzx +mad r1.z, r15.z, l(-2.900000), l(3.000000) +add r4.yzw, -r6.xxyz, r4.yyzw +mov r17.w, l(1.000000) +mov r18.y, l(1.000000) +mov r19.zw, r12.wwww +mov r20.xyz, l(0,0,0,0) +mov r5.x, r3.w +mov r5.z, l(1.000000) +mov r12.w, l(0) +loop + ilt r15.w, l(7), r12.w + breakc_nz r15.w + iadd r15.w, r0.z, r12.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r15.w, r15.w, l(0), t0.xxxx + iadd r16.w, r12.w, r12.y + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r16.w, r16.w, l(0), t0.xxxx + and r15.w, r15.w, r16.w + and r15.w, r11.w, r15.w + ishl r16.w, r12.w, l(5) + mov r21.xyz, l(0,0,0,0) + mov r18.zw, r5.xxxz + mov r20.w, r15.w + loop + breakc_z r20.w + firstbit_lo r21.w, r20.w + ishl r22.x, l(1), r21.w + xor r22.x, r20.w, r22.x + iadd r21.w, r16.w, r21.w + bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r21.wwww, l(1, 3, 5, 6) + bfi r22.y, l(29), l(3), r21.w, l(7) + ftou r22.z, cb4[r23.z + 6].w + ieq r22.z, r22.z, l(1) + if_nz r22.z + add r17.xyz, r7.xyzx, -cb4[r23.x + 6].xyzx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb4[r23.z + 6].xzyx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb4[r23.w + 6].yxzy + ushr r26.xyz, cb4[r23.z + 6].xzyx, l(16, 16, 16, 0) + ushr r27.xyz, cb4[r23.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyw, r27.yxyz + mov r28.xz, r24.xxzx + mov r28.yw, r26.xxxz + dp4 r22.z, r17.xyzw, r28.xyzw + mov r26.x, r24.y + mov r26.z, r25.y + mov r26.w, r27.x + dp4 r22.w, r17.xyzw, r26.xyzw + mov r27.xz, r25.xxzx + dp4 r17.x, r17.xyzw, r27.xyzw + max r17.y, |r22.w|, |r22.z| + max r17.x, |r17.x|, r17.y + mad r17.y, cb4[r22.y + 6].x, l(0.500000), l(0.500000) + add r17.x, -r17.y, r17.x + mad r17.y, -cb4[r22.y + 6].x, l(0.500000), l(0.500000) + div_sat r17.x, r17.x, r17.y + add r17.x, -r17.x, l(1.000000) + mul r17.x, r17.x, r17.x + else + mov r17.x, l(1.000000) + endif + lt r17.y, l(0.500000), cb4[r23.y + 6].z + lt r17.z, r17.x, l(0.001000) + or r17.z, r17.y, r17.z + if_nz r17.z + mov r20.w, r22.x + continue + endif + ishl r17.z, r21.w, l(3) + bfi r21.w, l(29), l(3), r21.w, l(2) + lt r22.z, cb4[r17.z + 6].w, l(1.500000) + if_nz r22.z + mad r22.z, cb4[r21.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r22.z, -|cb4[r21.w + 6].x| + add r24.y, -r24.x, cb4[r21.w + 6].y + add r22.z, -|r24.x|, l(1.000000) + add r22.z, -|r24.y|, r22.z + max r22.z, r22.z, l(0.000488281250) + ge r22.w, cb4[r21.w + 6].x, l(0.000000) + movc r24.z, r22.w, r22.z, -r22.z + dp3 r22.z, r24.xyzx, r24.xyzx + rsq r22.z, r22.z + mul r24.xyz, r22.zzzz, r24.xyzx + add r25.xyz, -r7.xyzx, cb4[r23.x + 6].xyzx + dp3 r22.z, r25.xyzx, r25.xyzx + rsq r22.w, r22.z + mul r26.xyz, r22.wwww, r25.xyzx + ftoi r23.z, cb4[r22.y + 6].w + mul r27.xyz, r24.xyzx, cb4[r21.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r24.w, cb4[r17.z + 6].w + and r24.w, r24.w, l(1) + ieq r25.w, r24.w, l(0) + not r25.w, r25.w + lt r26.w, l(0.000000), cb4[r21.w + 6].z + and r25.w, r25.w, r26.w + dp3 r26.w, r28.xyzx, r28.xyzx + sqrt r26.w, r26.w + dp3 r27.w, r29.xyzx, r29.xyzx + sqrt r27.w, r27.w + dp3 r28.w, r6.xyzx, r28.xyzx + div r28.w, r28.w, r26.w + dp3 r29.w, r6.xyzx, r29.xyzx + div r29.w, r29.w, r27.w + add r28.w, r28.w, r29.w + mul_sat r30.x, r28.w, l(0.500000) + dp3 r28.w, r28.xyzx, r29.xyzx + mad r26.w, r26.w, r27.w, r28.w + mad r26.w, r26.w, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r26.w + dp3_sat r18.x, r6.xyzx, r26.xyzx + movc r19.xy, r25.wwww, r30.xyxx, r18.xyxx + lt r18.x, cb4[r23.w + 6].w, l(0.000000) + if_nz r18.x + mul r18.x, cb4[r23.x + 6].w, cb4[r23.x + 6].w + mul r18.x, r18.x, r22.z + mad r18.x, -r18.x, r18.x, l(1.000000) + max r18.x, r18.x, l(0.000000) + add r22.z, r22.z, l(1.000000) + div r22.z, l(1.000000, 1.000000, 1.000000, 1.000000), r22.z + and r26.w, r25.w, l(0x3f800000) + add r27.w, r19.y, -r22.z + mad r22.z, r26.w, r27.w, r22.z + mul r18.x, r18.x, r18.x + mul r18.x, r18.x, r22.z + else + mul r29.xyz, r25.xyzx, cb4[r23.x + 6].wwww + dp3 r22.z, r29.xyzx, r29.xyzx + min r22.z, r22.z, l(1.000000) + add r22.z, -r22.z, l(1.000000) + log r22.z, r22.z + mul r22.z, r22.z, cb4[r23.w + 6].w + exp r22.z, r22.z + mul r18.x, r19.y, r22.z + endif + dp3 r19.y, r26.xyzx, -r24.xyzx + add r19.y, r19.y, -cb4[r21.w + 6].z + mul_sat r19.y, r19.y, cb4[r21.w + 6].w + mul r19.y, r19.y, r19.y + movc r19.y, r24.w, l(1.000000), r19.y + mul r18.x, r18.x, r19.y + not r19.y, r25.w + ige r22.z, r23.z, l(0) + and r19.y, r19.y, r22.z + if_nz r19.y + if_z r24.w + ishl r19.y, r23.z, l(2) + mul r24.xyz, r7.yyyy, cb7[r19.y + 33].xywx + mad r24.xyz, cb7[r19.y + 32].xywx, r7.xxxx, r24.xyzx + mad r24.xyz, cb7[r19.y + 34].xywx, r7.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb7[r19.y + 35].xywx + div_sat r24.xy, r24.xyxx, r24.zzzz + mad r24.xy, r24.xyxx, cb7[r23.z + 0].zwzz, cb7[r23.z + 0].xyxx + else + ishl r19.y, r23.z, l(2) + dp3 r29.x, -r25.xyzx, cb7[r19.y + 32].xyzx + dp3 r29.y, -r25.xyzx, cb7[r19.y + 33].xyzx + dp3 r29.z, -r25.xyzx, cb7[r19.y + 34].xyzx + lt r19.y, |r29.x|, |r29.y| + and r19.y, r19.y, l(1) + dp2 r22.z, |r29.xyxx|, icb[r19.y + 0].xyxx + lt r22.z, r22.z, |r29.z| + movc r19.y, r22.z, l(2), r19.y + dp3 r22.z, r29.xyzx, icb[r19.y + 0].xyzx + lt r22.z, r22.z, l(0.000000) + bfi r19.y, l(31), l(1), r19.y, r22.z + ushr r22.z, r19.y, l(1) + dp3 r22.z, r29.xyzx, icb[r22.z + 0].xyzx + div r24.z, l(0.000244140625), cb7[r23.z + 0].w + add r24.z, -r24.z, l(0.500000) + utof r25.x, r19.y + ult r25.y, r19.y, l(2) + and r25.y, r25.y, l(2) + dp2 r25.y, r29.xzxx, icb[r25.y + 0].xzxx + mul r25.y, r25.y, icb[r19.y + 4].z + div r25.y, r25.y, |r22.z| + mad r25.x, r25.y, r24.z, r25.x + add r25.x, r25.x, l(0.500000) + mul_sat r25.x, r25.x, l(0.166666672) + iadd r25.z, l(-1), icb[r19.y + 4].y + dp2 r25.z, r29.yzyy, icb[r25.z + 0].xyxx + mul r19.y, r25.z, icb[r19.y + 4].w + div r19.y, r19.y, |r22.z| + mad_sat r25.y, -r19.y, r24.z, l(0.500000) + mad r24.xy, r25.xyxx, cb7[r23.z + 0].zwzz, cb7[r23.z + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r19.y, r24.xyxx, t13.yxzw, s1, l(0.000000) + mul r18.x, r18.x, r19.y + endif + lt r19.y, l(0.000000), r18.x + if_nz r19.y + if_z r24.w + ftoi r22.z, cb4[r23.y + 6].x + else + add r24.xyz, r7.xyzx, -cb4[r23.x + 6].xyzx + lt r25.xyz, |r24.yzzy|, |r24.xxyx| + and r23.z, r25.y, r25.x + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ushr r24.w, cb4[r21.w + 6].w, l(24) + ubfe r25.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb4[r21.w + 6].wwww + movc r24.x, r24.x, r24.w, r25.x + and r24.w, l(255), cb4[r21.w + 6].w + movc r24.y, r24.y, r25.y, r24.w + ubfe r24.w, l(8), l(8), cb4[r23.y + 6].x + and r25.x, l(255), cb4[r23.y + 6].x + movc r24.z, r24.z, r24.w, r25.x + movc r24.y, r25.z, r24.y, r24.z + movc r23.z, r23.z, r24.x, r24.y + ilt r24.x, r23.z, l(80) + movc r22.z, r24.x, r23.z, l(-1) + endif + ishl r23.z, r22.z, l(2) + mad r24.xyz, r26.xyzx, cb5[r22.z + 288].xxxx, r7.xyzx + mul r24.w, l(5.000000), cb5[r22.z + 288].y + mad r24.xyz, r6.xyzx, r24.wwww, r24.xyzx + mul r29.xyzw, r24.yyyy, cb5[r23.z + 65].xyzw + mad r29.xyzw, cb5[r23.z + 64].xyzw, r24.xxxx, r29.xyzw + mad r24.xyzw, cb5[r23.z + 66].xyzw, r24.zzzz, r29.xyzw + add r24.xyzw, r24.xyzw, cb5[r23.z + 67].xyzw + div r24.xyz, r24.xyzx, r24.wwww + ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ge r29.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r30.xy, -cb5[r22.z + 344].xyxx, cb5[r22.z + 344].zwzz + mad r24.xy, r24.xyxx, r30.xyxx, cb5[r22.z + 344].xyxx + mad r30.xy, r24.xyxx, cb5[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r30.xy, r30.xyxx + mad r24.xy, r24.xyxx, cb5[400].zwzz, -r30.xyxx + add r31.xyzw, r24.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r32.xyzw, r31.xxzz, r31.xxzz + add r30.zw, -r24.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r31.xz, r24.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r33.xy, r24.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r34.xy, r30.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy + add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r24.xy, r32.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r24.xyxx + mul r35.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r24.xy, -r31.xzxx, r31.xzxx, r30.zwzz + add r24.xy, r24.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r36.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r24.xy, r31.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r35.z, r36.x + mov r35.w, r24.x + mov r34.z, r33.x + mov r34.w, r32.x + add r31.xyzw, r34.zwxz, r35.zwxz + mov r36.z, r35.y + mov r36.w, r24.y + mov r33.z, r34.y + mov r33.w, r32.z + add r24.xyw, r33.zyzw, r36.zyzw + div r32.xyz, r34.xzwx, r31.zwyz + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyz, r32.yxzy, cb5[400].xxxx + div r33.xyz, r33.zywz, r24.xywx + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyz, r33.xyzx, cb5[400].yyyy + mov r32.w, r33.x + mad r34.xyzw, r30.xyxy, cb5[400].xyxy, r32.ywxw + mad r30.zw, r30.xxxy, cb5[400].xxxy, r32.zzzw + mov r33.w, r32.y + mov r32.yw, r33.yyyz + mad r35.xyzw, r30.xyxy, cb5[400].xyxy, r32.xyzy + mad r33.xyzw, r30.xyxy, cb5[400].xyxy, r33.wywz + mad r32.xyzw, r30.xyxy, cb5[400].xyxy, r32.xwzw + mul r36.xyzw, r24.xxxy, r31.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.z, r34.xyxx, t6.xxxx, s4, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r34.zwzz, t6.xxxx, s4, r24.z + mul r24.x, r24.x, r36.y + mad r23.z, r36.x, r23.z, r24.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r30.zwzz, t6.xxxx, s4, r24.z + mad r23.z, r36.z, r24.x, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r33.xyxx, t6.xxxx, s4, r24.z + mad r23.z, r36.w, r24.x, r23.z + mul r30.xyzw, r24.yyww, r31.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r35.xyxx, t6.xxxx, s4, r24.z + mad r23.z, r30.x, r24.x, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r35.zwzz, t6.xxxx, s4, r24.z + mad r23.z, r30.y, r24.x, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r33.zwzz, t6.xxxx, s4, r24.z + mad r23.z, r30.z, r24.x, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r32.xyxx, t6.xxxx, s4, r24.z + mad r23.z, r30.w, r24.x, r23.z + ige r24.x, r22.z, l(0) + or r25.xyz, r25.xyzx, r29.xyzx + or r24.y, r25.y, r25.x + or r24.y, r25.z, r24.y + and r25.x, r24.z, l(0x7fffffff) + ult r25.x, l(0x7f800000), r25.x + or r24.y, r24.y, r25.x + mul r24.w, r24.w, r31.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r32.zwzz, t6.xxxx, s4, r24.z + mad r23.z, r24.w, r24.z, r23.z + add r23.z, r23.z, l(-1.000000) + mad r22.z, cb5[r22.z + 288].w, r23.z, l(1.000000) + movc r22.z, r24.y, l(1.000000), r22.z + movc r22.z, r24.x, r22.z, l(1.000000) + else + mov r22.z, l(1.000000) + endif + if_nz r25.w + dp3 r23.z, r14.xyzx, r27.xyzx + mul_sat r24.x, r22.w, cb4[r21.w + 6].z + mad r24.x, r24.x, l(0.500000), r12.z + min r24.x, r24.x, l(1.000000) + div r24.x, r12.z, r24.x + mad r24.yzw, r14.xxyz, r23.zzzz, -r27.xxyz + dp3 r24.y, r28.xyzx, r24.yzwy + mul r23.z, r23.z, r23.z + mad r23.z, cb4[r21.w + 6].z, cb4[r21.w + 6].z, -r23.z + div_sat r23.z, r24.y, r23.z + mad r24.yzw, r27.xxyz, r23.zzzz, r28.xxyz + dp3 r23.z, r24.yzwy, r24.yzwy + rsq r23.z, r23.z + mul r26.xyz, r23.zzzz, r24.yzwy + else + mov r24.x, l(1.000000) + endif + if_nz r19.y + mul_sat r19.y, r22.w, cb4[r22.y + 6].y + mad r24.yzw, r10.xxyz, r9.wwww, r26.xxyz + dp3 r22.w, r24.yzwy, r24.yzwy + max r22.w, r22.w, l(0.0000610351562) + rsq r22.w, r22.w + mul r24.yzw, r22.wwww, r24.yyzw + dp3_sat r22.w, r6.xyzx, r24.yzwy + dp3_sat r23.z, r11.xyzx, r24.yzwy + if_nz r4.x + lt r24.y, l(0.000000), r19.y + mul r24.z, r19.y, r19.y + mad r24.w, r23.z, l(3.600000), l(0.400000) + div r24.z, r24.z, r24.w + mad r24.z, r19.w, r19.w, r24.z + min r24.z, r24.z, l(1.000000) + movc r24.y, r24.y, r24.z, r12.z + mul r24.y, r24.y, r24.y + mad r24.z, r22.w, r24.y, -r22.w + mad r24.z, r24.z, r22.w, l(1.000000) + add r24.w, -r23.z, l(1.000000) + mul r25.x, r24.w, r24.w + mul r25.x, r25.x, r25.x + mul r25.y, r24.w, r25.x + mad r24.w, -r25.x, r24.w, l(1.000000) + mad r24.w, r24.w, l(0.040000), r25.y + mul r24.z, r24.z, r24.z + div r24.z, r24.y, r24.z + mul r24.z, r24.x, r24.z + mad r25.x, -r12.x, r24.y, r12.x + mad r25.x, r25.x, r12.x, r24.y + sqrt r25.x, r25.x + mad r25.y, -r19.x, r24.y, r19.x + mad r24.y, r25.y, r19.x, r24.y + sqrt r24.y, r24.y + mul r24.y, r12.x, r24.y + mad r24.y, r19.x, r25.x, r24.y + add r24.y, r24.y, l(0.000100) + div r24.y, l(0.500000), r24.y + mul r24.y, r24.y, r24.z + mul r24.y, r24.y, r24.w + min r24.y, r24.y, l(2048.000000) + mad r24.zw, r19.xxxz, l(0.000000, 0.000000, 0.968750, 0.968750), l(0.000000, 0.000000, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r24.z, r24.zwzz, t9.yzxw, s1, l(0.000000) + mul r24.z, r15.x, r24.z + mul r24.z, r13.w, r24.z + div r24.z, r24.z, r14.w + mul r24.z, r24.z, l(0.00734693790) + div r24.z, r24.z, r15.y + add r24.yzw, r24.zzzz, r24.yyyy + mov r25.xyz, l(0,0,0,0) + else + lt r25.w, l(0.000000), r19.y + mul r19.y, r19.y, r19.y + mad r26.w, r23.z, l(3.600000), l(0.400000) + div r19.y, r19.y, r26.w + mad r19.y, r19.w, r19.w, r19.y + min r19.y, r19.y, l(1.000000) + movc r19.y, r25.w, r19.y, r12.z + mul r19.y, r19.y, r19.y + mad r25.w, r22.w, r19.y, -r22.w + mad r22.w, r25.w, r22.w, l(1.000000) + add r23.z, -r23.z, l(1.000000) + mul r25.w, r23.z, r23.z + mul r25.w, r25.w, r25.w + mul r26.w, r23.z, r25.w + dp3 r27.x, r6.xyzx, r26.xyzx + mad_sat r27.x, r27.x, l(0.666666687), l(0.333333343) + log r27.x, r27.x + mul r27.x, r27.x, l(1.500000) + exp r27.x, r27.x + mad r27.x, r27.x, l(1.66666663), l(-1.000000) + mad r27.x, r15.z, r27.x, l(1.000000) + mul r27.x, r1.x, r27.x + dp3 r27.z, r11.xyzx, r26.xyzx + mov_sat r27.z, -r27.z + log r27.z, r27.z + mul r27.yz, r27.xxzx, l(0.000000, 0.159154937, 12.000000, 0.000000) + exp r27.z, r27.z + mul r27.z, r1.z, r27.z + mad r27.x, -r27.x, l(0.159154937), l(1.000000) + mad r27.x, r27.z, r27.x, r27.y + mul r25.xyz, r16.xyzx, r27.xxxx + mad r23.z, -r25.w, r23.z, l(1.000000) + mad r23.z, r23.z, l(0.040000), r26.w + mul r22.w, r22.w, r22.w + div r22.w, r19.y, r22.w + mul r22.w, r24.x, r22.w + mad r24.x, -r12.x, r19.y, r12.x + mad r24.x, r24.x, r12.x, r19.y + sqrt r24.x, r24.x + mad r25.w, -r19.x, r19.y, r19.x + mad r19.y, r25.w, r19.x, r19.y + sqrt r19.y, r19.y + mul r19.y, r12.x, r19.y + mad r19.y, r19.x, r24.x, r19.y + add r19.y, r19.y, l(0.000100) + div r19.y, l(0.500000), r19.y + mul r19.y, r19.y, r22.w + mul r19.y, r19.y, r23.z + min r19.y, r19.y, l(2048.000000) + mad r27.xy, r19.xwxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r22.w, r27.xyxx, t9.yzwx, s1, l(0.000000) + mul r22.w, r15.x, r22.w + mul r22.w, r13.w, r22.w + div r22.w, r22.w, r14.w + mul r22.w, r22.w, l(0.00734693790) + div r22.w, r22.w, r15.y + add r24.yzw, r19.yyyy, r22.wwww + endif + mul r27.xyz, r18.xxxx, cb4[r17.z + 6].xyzx + mul r27.xyz, r22.zzzz, r27.xyzx + mul r27.xyz, r17.xxxx, r27.xyzx + mul r24.xyz, r24.yzwy, cb4[r22.y + 6].zzzz + max r24.xyz, r24.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r24.xyz, r24.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r28.xyz, r19.xxxx, r24.xyzx + if_nz r4.x + ult r17.x, l(0), r18.z + uge r18.x, l(15), r18.z + and r17.x, r17.x, r18.x + if_nz r17.x + iadd r18.x, r18.z, l(-1) + umin r18.x, r18.x, l(14) + dp3 r19.y, cb6[r18.x + 0].xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) + mad r29.xyz, r19.yyyy, r4.yzwy, r6.xyzx + dp3 r19.y, r29.xyzx, r29.xyzx + rsq r19.y, r19.y + mul r29.xyz, r19.yyyy, r29.xyzx + dp3 r19.y, r29.xyzx, r26.xyzx + mad r26.x, r19.y, l(0.500000), l(0.500000) + mul r26.y, r2.w, cb6[r18.x + 0].w + itof r26.z, r18.x + sample_l_indexable(texture2darray)(float,float,float,float) r26.xyz, r26.xyzx, t10.xyzw, s1, l(0.000000) + endif + movc r26.xyz, r17.xxxx, r26.xyzx, r19.xxxx + mad r26.xyz, r3.xyzx, r26.xyzx, r28.xyzx + add r26.xyz, r25.xyzx, r26.xyzx + mul r26.xyz, r26.xyzx, r27.xyzx + else + mad r24.xyz, r24.xyzx, r19.xxxx, r25.xyzx + mad r24.xyz, r3.xyzx, r19.xxxx, r24.xyzx + mul r26.xyz, r27.xyzx, r24.xyzx + endif + else + mov r26.xyz, l(0,0,0,0) + endif + else + if_z r17.y + mad r17.x, cb4[r21.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r17.x, -|cb4[r21.w + 6].x| + add r24.y, -r24.x, cb4[r21.w + 6].y + add r17.x, -|r24.x|, l(1.000000) + add r17.x, -|r24.y|, r17.x + max r17.x, r17.x, l(0.000488281250) + ge r17.y, cb4[r21.w + 6].x, l(0.000000) + movc r24.z, r17.y, r17.x, -r17.x + dp3 r17.x, r24.xyzx, r24.xyzx + rsq r17.x, r17.x + mul r24.xyz, r17.xxxx, r24.xyzx + add r25.xyz, -r7.xyzx, cb4[r23.x + 6].xyzx + dp3 r17.x, r25.xyzx, r25.xyzx + rsq r17.y, r17.x + mul r27.xyz, r17.yyyy, r25.xyzx + ftoi r17.y, cb4[r22.y + 6].w + mul r22.yzw, r24.xxyz, cb4[r21.w + 6].zzzz + mad r28.xyz, -r22.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r22.yzw, r22.yyzw, l(0.000000, 0.500000, 0.500000, 0.500000), r25.xxyz + ftou r17.z, cb4[r17.z + 6].w + and r17.z, r17.z, l(1) + ieq r18.x, r17.z, l(0) + not r18.x, r18.x + lt r19.x, l(0.000000), cb4[r21.w + 6].z + and r18.x, r18.x, r19.x + dp3 r19.x, r28.xyzx, r28.xyzx + dp3 r19.y, r22.yzwy, r22.yzwy + sqrt r19.xy, r19.xyxx + dp3 r22.y, r28.xyzx, r22.yzwy + mad r19.x, r19.x, r19.y, r22.y + mad r19.x, r19.x, l(0.500000), l(1.000000) + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x + movc r19.x, r18.x, r19.x, l(1.000000) + lt r19.y, cb4[r23.w + 6].w, l(0.000000) + if_nz r19.y + mul r19.y, cb4[r23.x + 6].w, cb4[r23.x + 6].w + mul r19.y, r17.x, r19.y + mad r19.y, -r19.y, r19.y, l(1.000000) + max r19.y, r19.y, l(0.000000) + add r17.x, r17.x, l(1.000000) + div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x + and r22.y, r18.x, l(0x3f800000) + add r22.z, -r17.x, r19.x + mad r17.x, r22.y, r22.z, r17.x + mul r19.y, r19.y, r19.y + mul r17.x, r17.x, r19.y + else + mul r22.yzw, r25.xxyz, cb4[r23.x + 6].wwww + dp3 r19.y, r22.yzwy, r22.yzwy + min r19.y, r19.y, l(1.000000) + add r19.y, -r19.y, l(1.000000) + log r19.y, r19.y + mul r19.y, r19.y, cb4[r23.w + 6].w + exp r19.y, r19.y + mul r17.x, r19.y, r19.x + endif + dp3 r19.x, r27.xyzx, -r24.xyzx + add r19.x, r19.x, -cb4[r21.w + 6].z + mul_sat r19.x, r19.x, cb4[r21.w + 6].w + mul r19.x, r19.x, r19.x + movc r19.x, r17.z, l(1.000000), r19.x + mul r17.x, r17.x, r19.x + not r18.x, r18.x + ige r19.x, r17.y, l(0) + and r18.x, r18.x, r19.x + if_nz r18.x + if_z r17.z + ishl r18.x, r17.y, l(2) + mul r22.yzw, r7.yyyy, cb7[r18.x + 33].xxyw + mad r22.yzw, cb7[r18.x + 32].xxyw, r7.xxxx, r22.yyzw + mad r22.yzw, cb7[r18.x + 34].xxyw, r7.zzzz, r22.yyzw + add r22.yzw, r22.yyzw, cb7[r18.x + 35].xxyw + div_sat r19.xy, r22.yzyy, r22.wwww + mad r19.xy, r19.xyxx, cb7[r17.y + 0].zwzz, cb7[r17.y + 0].xyxx + else + ishl r18.x, r17.y, l(2) + dp3 r24.x, -r25.xyzx, cb7[r18.x + 32].xyzx + dp3 r24.y, -r25.xyzx, cb7[r18.x + 33].xyzx + dp3 r24.z, -r25.xyzx, cb7[r18.x + 34].xyzx + lt r18.x, |r24.x|, |r24.y| + and r18.x, r18.x, l(1) + dp2 r22.y, |r24.xyxx|, icb[r18.x + 0].xyxx + lt r22.y, r22.y, |r24.z| + movc r18.x, r22.y, l(2), r18.x + dp3 r22.y, r24.xyzx, icb[r18.x + 0].xyzx + lt r22.y, r22.y, l(0.000000) + bfi r18.x, l(31), l(1), r18.x, r22.y + ushr r22.y, r18.x, l(1) + dp3 r22.y, r24.xyzx, icb[r22.y + 0].xyzx + div r22.z, l(0.000244140625), cb7[r17.y + 0].w + add r22.z, -r22.z, l(0.500000) + utof r22.w, r18.x + ult r23.z, r18.x, l(2) + and r23.z, r23.z, l(2) + dp2 r23.z, r24.xzxx, icb[r23.z + 0].xzxx + mul r23.z, r23.z, icb[r18.x + 4].z + div r23.z, r23.z, |r22.y| + mad r22.w, r23.z, r22.z, r22.w + add r22.w, r22.w, l(0.500000) + mul_sat r25.x, r22.w, l(0.166666672) + iadd r22.w, l(-1), icb[r18.x + 4].y + dp2 r22.w, r24.yzyy, icb[r22.w + 0].xyxx + mul r18.x, r22.w, icb[r18.x + 4].w + div r18.x, r18.x, |r22.y| + mad_sat r25.y, -r18.x, r22.z, l(0.500000) + mad r19.xy, r25.xyxx, cb7[r17.y + 0].zwzz, cb7[r17.y + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r17.y, r19.xyxx, t13.yxzw, s1, l(0.000000) + mul r17.x, r17.y, r17.x + endif + lt r17.x, l(0.000000), r17.x + if_nz r17.x + if_z r17.z + ftoi r17.x, cb4[r23.y + 6].x + else + add r22.yzw, r7.xxyz, -cb4[r23.x + 6].xxyz + lt r23.xzw, |r22.zzww|, |r22.yyyz| + and r17.y, r23.z, r23.x + lt r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r22.yyzw + ushr r17.z, cb4[r21.w + 6].w, l(24) + ubfe r19.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb4[r21.w + 6].wwww + movc r17.z, r22.y, r17.z, r19.x + and r18.x, l(255), cb4[r21.w + 6].w + movc r18.x, r22.z, r19.y, r18.x + ubfe r19.x, l(8), l(8), cb4[r23.y + 6].x + and r19.y, l(255), cb4[r23.y + 6].x + movc r19.x, r22.w, r19.x, r19.y + movc r18.x, r23.w, r18.x, r19.x + movc r17.y, r17.y, r17.z, r18.x + ilt r17.z, r17.y, l(80) + movc r17.x, r17.z, r17.y, l(-1) + endif + ishl r17.y, r17.x, l(2) + mad r22.yzw, r27.xxyz, cb5[r17.x + 288].xxxx, r7.xxyz + mul r17.z, l(5.000000), cb5[r17.x + 288].y + mad r22.yzw, r6.xxyz, r17.zzzz, r22.yyzw + mul r23.xyzw, r22.zzzz, cb5[r17.y + 65].xyzw + mad r23.xyzw, cb5[r17.y + 64].xyzw, r22.yyyy, r23.xyzw + mad r23.xyzw, cb5[r17.y + 66].xyzw, r22.wwww, r23.xyzw + add r23.xyzw, r23.xyzw, cb5[r17.y + 67].xyzw + div r22.yzw, r23.xxyz, r23.wwww + ge r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.yzwy + ge r24.xyz, r22.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) + add r17.yz, -cb5[r17.x + 344].xxyx, cb5[r17.x + 344].zzwz + mad r17.yz, r22.yyzy, r17.yyzy, cb5[r17.x + 344].xxyx + mad r19.xy, r17.yzyy, cb5[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r19.xy, r19.xyxx + mad r17.yz, r17.yyzy, cb5[400].zzwz, -r19.xxyx + add r25.xyzw, r17.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r25.xxzz, r25.xxzz + add r22.yz, -r17.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + min r25.xz, r17.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r17.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r22.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r25.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r17.yz, r27.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r17.yyzy + mul r30.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r17.yz, -r25.xxzx, r25.xxzx, r22.yyzy + add r17.yz, r17.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r31.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r17.yz, r25.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r30.z, r31.x + mov r30.w, r17.y + mov r29.z, r28.x + mov r29.w, r27.x + add r25.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r17.z + mov r28.z, r29.y + mov r28.w, r27.z + add r27.xyz, r28.zywz, r31.zywz + div r29.xyz, r29.xzwx, r25.zwyz + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.yxzy, cb5[400].xxxx + div r28.xyz, r28.zywz, r27.xyzx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb5[400].yyyy + mov r29.w, r28.x + mad r30.xyzw, r19.xyxy, cb5[400].xyxy, r29.ywxw + mad r17.yz, r19.xxyx, cb5[400].xxyx, r29.zzwz + mov r28.w, r29.y + mov r29.yw, r28.yyyz + mad r31.xyzw, r19.xyxy, cb5[400].xyxy, r29.xyzy + mad r28.xyzw, r19.xyxy, cb5[400].xyxy, r28.wywz + mad r29.xyzw, r19.xyxy, cb5[400].xyxy, r29.xwzw + mul r32.xyzw, r25.zwyz, r27.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.xyxx, t6.xxxx, s4, r22.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r30.zwzz, t6.xxxx, s4, r22.w + mul r19.x, r19.x, r32.y + mad r18.x, r32.x, r18.x, r19.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r17.yzyy, t6.xxxx, s4, r22.w + mad r17.y, r32.z, r17.y, r18.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r28.xyxx, t6.xxxx, s4, r22.w + mad r17.y, r32.w, r17.z, r17.y + mul r30.xyzw, r25.xyzw, r27.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r31.xyxx, t6.xxxx, s4, r22.w + mad r17.y, r30.x, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r31.zwzz, t6.xxxx, s4, r22.w + mad r17.y, r30.y, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r28.zwzz, t6.xxxx, s4, r22.w + mad r17.y, r30.z, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r29.xyxx, t6.xxxx, s4, r22.w + mad r17.y, r30.w, r17.z, r17.y + ige r17.z, r17.x, l(0) + or r23.xyz, r23.xyzx, r24.xyzx + or r18.x, r23.y, r23.x + or r18.x, r23.z, r18.x + and r19.x, r22.w, l(0x7fffffff) + ult r19.x, l(0x7f800000), r19.x + or r18.x, r18.x, r19.x + mul r19.x, r25.y, r27.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.y, r29.zwzz, t6.xxxx, s4, r22.w + mad r17.y, r19.x, r19.y, r17.y + add r17.y, r17.y, l(-1.000000) + mad r17.x, cb5[r17.x + 288].w, r17.y, l(1.000000) + movc r17.x, r18.x, l(1.000000), r17.x + movc r17.x, r17.z, r17.x, l(1.000000) + else + mov r17.x, l(1.000000) + endif + else + mov r17.x, l(1.000000) + endif + mul r18.w, r17.x, r18.w + mov r26.xyz, l(0,0,0,0) + endif + add r21.xyz, r21.xyzx, r26.xyzx + mov r20.w, r22.x + endloop + mov r5.z, r18.w + add r20.xyz, r20.xyzx, r21.xyzx + iadd r12.w, r12.w, l(1) +endloop +mad r4.yzw, r20.xxyz, r5.zzzz, r13.xxyz +ne r0.z, l(0.000000), cb0[112].x +if_nz r0.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.x, r0.z + add r1.z, r0.z, r2.z + mad r2.z, r19.w, l(-16.000000), l(-1.000000) + exp r2.z, r2.z + log r1.z, |r1.z| + mul r1.z, r1.z, r2.z + exp r1.z, r1.z + add r1.z, r0.z, r1.z + add r1.z, r1.z, l(-1.000000) + mov_sat r10.xyz, r1.zzzz + mad r12.xyz, r3.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r3.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r3.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + max r12.xyz, r0.zzzz, r12.xyzx +else + mov r10.xyz, r1.xxxx + mov r12.xyz, r1.xxxx +endif +if_nz r4.x + ult r0.z, l(0), r3.w + uge r1.x, l(15), r3.w + and r0.z, r0.z, r1.x + if_nz r0.z + iadd r1.x, r3.w, l(-1) + umin r1.x, r1.x, l(14) + mul r13.x, r2.w, cb6[r1.x + 0].w + utof r13.z, r1.x + mov r13.y, l(0.500000) + sample_l_indexable(texture2darray)(float,float,float,float) r13.xyz, r13.xyzx, t11.xyzw, s1, l(0.000000) + endif + movc r13.xyz, r0.zzzz, r13.xyzx, l(1.000000,1.000000,1.000000,0) + mad r15.xyz, r6.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r7.xyzx + round_z r0.z, cb0[212].x + mad r1.xz, r0.zzzz, l(2.083000, 0.000000, 4.867000, 0.000000), r1.yywy + dp2 r0.z, r1.xzxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r0.z, r0.z + mul r0.z, r0.z, l(52.982918) + frc r0.z, r0.z + mad r0.z, r0.z, l(2.000000), l(-1.000000) + mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx + mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx + add r17.xyz, r15.xzyx, -r17.xyzx + max r0.z, |r17.y|, |r17.x| + add r0.z, r0.z, l(-464.000000) + mul_sat r0.z, r0.z, l(0.031250) + add r1.x, |r17.z|, l(-208.000000) + mul_sat r1.x, r1.x, l(0.031250) + max r0.z, r0.z, r1.x + ne r1.x, l(0.000000), cb0[210].w + lt r1.z, r0.z, l(1.000000) + and r1.x, r1.z, r1.x + if_nz r1.x + mad r17.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r17.xyz, r15.xzyx, -r17.xyzx + max r1.x, |r17.y|, |r17.x| + add r1.x, r1.x, l(-29.000000) + add r1.z, |r17.z|, l(-13.000000) + mul_sat r1.xz, r1.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000) + max r1.x, r1.z, r1.x + lt r1.z, r1.x, l(1.000000) + if_nz r1.z + mad r17.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t17.yzwx, s2, l(0.000000) + add r1.z, -r1.x, l(1.000000) + mul r2.z, l(0.500000), cb0[211].y + mad r2.w, -cb0[211].y, l(0.500000), l(1.000000) + max r2.z, r2.z, r17.y + min r2.z, r2.w, r2.z + mul r17.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t18.xyzw, s1, l(0.000000) + mad r2.z, r20.w, r1.z, r0.z + add r19.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r18.yyyy, r19.xyzx + mov r21.w, r18.y + mul r21.xyzw, r1.zzzz, r21.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t18.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.xxxx, r17.xyzx + mov r17.w, r18.x + mul r17.xyzw, r1.zzzz, r17.xyzw + mad r19.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r19.xyzx + mul r18.xyzw, r1.zzzz, r18.xyzw + else + mov r21.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r2.z, r0.z + endif + mad r19.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r19.xyz, r15.xzyx, -r19.xyzx + max r1.z, |r19.y|, |r19.x| + add r1.z, r1.z, l(-116.000000) + mul_sat r1.z, r1.z, l(0.125000) + add r2.w, |r19.z|, l(-52.000000) + mul_sat r2.w, r2.w, l(0.125000) + max r1.z, r1.z, r2.w + lt r2.w, r1.z, l(1.000000) + if_nz r2.w + mad r19.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r19.xyzx, cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r20.xyz, r19.xyzx, cb0[211].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r20.xyzx, t19.yzwx, s2, l(0.000000) + add r2.w, -r1.z, l(1.000000) + mul r1.x, r1.x, r2.w + mul r2.w, l(0.500000), cb0[211].y + mad r3.w, -cb0[211].y, l(0.500000), l(1.000000) + max r2.w, r2.w, r20.y + min r2.w, r3.w, r2.w + mul r20.w, r2.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyzw, r20.xwzx, t20.xyzw, s1, l(0.000000) + mad r2.z, r23.w, r1.x, r2.z + add r19.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r24.xyz, r22.yyyy, r19.xyzx + mov r24.w, r22.y + mad r21.xyzw, r24.xyzw, r1.xxxx, r21.xyzw + add r19.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r22.xxxx, r19.xyzx + mov r20.w, r22.x + mad r17.xyzw, r20.xyzw, r1.xxxx, r17.xyzw + mad r19.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r19.xyzx + mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw + endif + lt r1.x, l(0.000000), r1.z + if_nz r1.x + mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r15.xyzx, cb0[211].xyzx + mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r19.xyzx + mad r19.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r20.xyzx, r15.xyzx + min r15.xyz, r19.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r15.xyzx, t21.yzwx, s2, l(0.000000) + add r1.x, -r0.z, l(1.000000) + mul r1.x, r1.x, r1.z + max r1.z, r20.y, r15.y + min r1.z, r19.y, r1.z + mul r15.w, r1.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r15.xwzx, t22.xyzw, s1, l(0.000000) + add r19.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r22.yyyy, r19.xyzx + mov r23.w, r22.y + mad r21.xyzw, r23.xyzw, r1.xxxx, r21.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t22.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r22.xxxx, r15.xyzx + mov r15.w, r22.x + mad r17.xyzw, r15.xyzw, r1.xxxx, r17.xyzw + mad r15.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r15.xyzx + mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw + mad r2.z, r20.w, r1.x, r2.z + endif + mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r1.x + add r0.z, r0.z, r1.x + mul r15.y, r0.z, l(0.500000) + else + mov r21.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) + endif + mul r20.xyzw, r15.yxyy, cb0[213].ywzx + mad r20.y, r20.y, l(0.500000), r20.x + mul r1.xz, r15.yyxy, cb0[213].wwyw + mad r20.x, r1.z, l(0.375000), r1.x + add r18.xyzw, r18.xyzw, r20.wyzx + mul r20.xyzw, r15.yxyy, cb0[214].ywzx + mad r20.y, r20.y, l(0.500000), r20.x + mul r1.xz, r15.yyxy, cb0[214].wwyw + mad r20.x, r1.z, l(0.375000), r1.x + add r17.xyzw, r17.xyzw, r20.wyzx + mul r20.xyzw, r15.yxyy, cb0[215].ywzx + mad r20.y, r20.y, l(0.500000), r20.x + mul r1.xz, r15.yyxy, cb0[215].wwyw + mad r20.x, r1.z, l(0.375000), r1.x + add r15.xyzw, r20.wyzx, r21.xyzw + ge r1.xz, r2.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + and r0.z, r1.z, r1.x + if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r20.xyzw, r2.xyxx, t16.xyzw, s1, l(0.000000) + lt r21.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r20.xyzw| + or r1.xz, r21.zzwz, r21.xxyx + or r0.z, r1.z, r1.x + if_nz r0.z + dp3 r0.z, r20.yzwy, r20.yzwy + sqrt r0.z, r0.z + mov r1.x, l(1.000000) + mov r1.z, r0.z + mov r2.z, l(0) + loop + ge r2.w, l(4.600000), r1.z + breakc_nz r2.w + iadd r2.w, r2.z, l(1) + mul r5.xz, r1.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000) + mov r1.xz, r5.xxzx + mov r2.z, r2.w + continue + endloop + mul r20.xyzw, r1.xxxx, r20.xyzw + dp3 r0.z, r20.yzwy, r20.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb8[3].x, cb8[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r19.x, r0.z, l(0.00390625000) + mov r19.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r1.xz, r19.xyxx, t15.xzyw, s1, l(0.000000) + mad r1.xz, r1.xxzx, cb8[2].xxyx, cb8[2].zzwz + mul r21.x, r1.x, l(3.54490781) + mul r21.yzw, r1.zzzz, r20.yyzw + mul r0.z, r20.x, l(0.406976730) + exp r0.z, r0.z + mul r20.xyzw, r0.zzzz, r21.xyzw + mov r21.xyzw, r20.xyzw + mov r0.z, l(0) + loop + uge r1.x, r0.z, r2.z + breakc_nz r1.x + mul r22.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r1.x, r22.xyzw, r21.xyzw + dp2 r1.z, r22.yxyy, r21.xyxx + dp2 r2.w, r22.zxzz, r21.xzxx + dp2 r3.w, r22.wxww, r21.xwxx + iadd r4.x, r0.z, l(1) + mov r21.xy, r1.xzxx + mov r21.z, r2.w + mov r21.w, r3.w + mov r0.z, r4.x + continue + endloop + mul r20.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r21.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r20.xyzw, r21.xyzw + dp2 r1.x, r20.yxyy, r21.xyxx + dp2 r1.z, r20.zxzz, r21.xzxx + dp2 r2.z, r20.wxww, r21.xwxx + mul r21.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r2.w, r20.xyzw, r21.xyzw + dp2 r3.w, r20.yxyy, r21.xyxx + dp2 r4.x, r20.zxzz, r21.xzxx + dp2 r5.x, r20.wxww, r21.xwxx + mul r21.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r5.z, r20.xyzw, r21.xyzw + dp2 r9.w, r20.yxyy, r21.xyxx + dp2 r11.w, r20.zxzz, r21.xzxx + dp2 r12.w, r20.wxww, r21.xwxx + mul r18.w, r0.z, l(0.886226952) + mul r18.x, r2.z, l(-1.02332675) + mul r18.yz, r1.xxzx, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r17.w, r2.w, l(0.886226952) + mul r17.x, r5.x, l(-1.02332675) + mul r17.y, r3.w, l(-1.02332675) + mul r17.z, r4.x, l(1.02332675) + mul r15.w, r5.z, l(0.886226952) + mul r15.x, r12.w, l(-1.02332675) + mul r15.y, r9.w, l(-1.02332675) + mul r15.z, r11.w, l(1.02332675) + endif + endif + mul r18.xyz, r13.xxxx, r18.xyzx + dp3 r0.z, r18.xyzx, r6.xyzx + add r0.z, r18.w, r0.z + max r18.x, r0.z, l(0.000000) + mul r13.xyw, r13.yyyy, r17.xyxz + dp3 r0.z, r13.xywx, r6.xyzx + add r0.z, r17.w, r0.z + max r18.y, r0.z, l(0.000000) + mul r13.xyz, r13.zzzz, r15.xyzx + dp3 r0.z, r13.xyzx, r6.xyzx + add r0.z, r15.w, r0.z + max r18.z, r0.z, l(0.000000) + add r0.z, l(-1.000000), cb0[113].x + max r1.x, r19.w, l(0.001000) + log r1.x, r1.x + mad r1.x, -r1.x, l(1.200000), l(1.000000) + add r0.z, r0.z, -r1.x + mul r1.xz, r1.yywy, cb2[0].wwww + round_ni r1.xz, r1.xxzx + add r2.z, |r5.y|, -cb2[2].y + round_ni r2.z, r2.z + add r2.w, l(-1.000000), cb2[1].x + max r3.w, r2.z, l(0.000000) + min r2.w, r2.w, r3.w + ge r2.z, r2.w, r2.z + mad r1.x, r1.z, cb2[0].x, r1.x + ftoi r1.x, r1.x + iadd r1.x, r1.x, cb0[110].z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx + ftoi r1.z, r2.w + iadd r1.z, r1.z, cb0[110].w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.z, r1.z, l(0), t0.xxxx + and r1.x, r1.z, r1.x + and r1.x, r1.x, r2.z + mul r13.xyz, r18.xyzx, cb0[111].xxxx + dp3 r1.z, r13.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + mov r7.w, l(1.000000) + mov r6.w, l(1.000000) + mov r13.xyz, l(0,0,0,0) + mov r2.z, l(1.000000) + mov r2.w, r1.x + mov r3.w, l(0) + loop + lt r4.x, l(0.010000), r2.z + ine r5.x, r2.w, l(0) + and r5.x, r4.x, r5.x + if_nz r5.x + firstbit_lo r5.x, r2.w + ishl r5.z, l(1), r5.x + xor r2.w, r2.w, r5.z + ishl r5.x, r5.x, l(3) + dp4 r15.x, cb2[r5.x + 6].xyzw, r7.xyzw + dp4 r15.y, cb2[r5.x + 7].xyzw, r7.xyzw + dp4 r15.z, cb2[r5.x + 8].xyzw, r7.xyzw + ge r17.xyz, cb2[r5.x + 5].xyzx, |r15.xyzx| + and r5.z, r17.y, r17.x + and r5.z, r17.z, r5.z + if_nz r5.z + mul r5.z, l(0.100000), cb2[r5.x + 5].x + mul r17.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r17.xy, r17.xyxx, r17.xyxx + add r19.xyz, -|r15.xyzx|, cb2[r5.x + 5].xyzx + mul r19.xyz, r19.xyzx, cb2[r5.x + 9].xyzx + eq r9.w, l(1.000000), cb2[r5.x + 10].x + if_nz r9.w + dp3 r20.x, cb2[r5.x + 6].xyzx, r14.xyzx + dp3 r20.y, cb2[r5.x + 7].xyzx, r14.xyzx + dp3 r20.z, cb2[r5.x + 8].xyzx, r14.xyzx + add r21.xyz, -r15.xyzx, cb2[r5.x + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r15.xyzx, -cb2[r5.x + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r9.w, r21.y, r21.x + min r9.w, r21.z, r9.w + mad r15.xyz, r20.xyzx, r9.wwww, r15.xyzx + else + mov r15.xyz, r14.xyzx + endif + dp3 r9.w, r15.xyzx, r15.xyzx + rsq r9.w, r9.w + mul r15.xyz, r9.wwww, r15.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r21.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r9.w, r15.xyzx, r20.xyzx + div r15.xyz, r15.xyzx, r9.wwww + lt r9.w, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r20.xxxy + movc r15.xy, r9.wwww, r15.zwzz, r15.xyxx + dp4 r9.w, cb2[r5.x + 4].xyzw, r6.xyzw + max r9.w, r9.w, l(0.000000) + max r9.w, r9.w, l(0.000100) + min r11.w, r19.z, r19.y + min r11.w, r11.w, r19.x + add r12.w, r17.y, r17.x + mad r12.w, r17.z, r17.z, r12.w + mad r5.z, r5.z, r5.z, -r12.w + mul r5.z, r5.z, cb2[r5.x + 9].x + mul r5.z, r5.z, cb2[r5.x + 9].x + add r12.w, l(1.000000), -cb2[r5.x + 10].y + mul r5.z, r5.z, r12.w + mul r5.z, r5.z, l(100.000000) + mad_sat r5.z, r11.w, cb2[r5.x + 10].y, r5.z + mul r11.w, r5.z, cb2[r5.x + 10].w + mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r15.xy, r15.xyxx, cb2[1].wwww, cb2[2].wwww + mov r15.z, cb2[r5.x + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z + mul r15.xyz, r15.xyzx, cb2[r5.x + 9].wwww + div r12.w, r1.z, r9.w + min r12.w, |r12.w|, l(1.000000) + mad r12.w, r12.w, l(2.000000), r1.z + add r9.w, r9.w, l(2.000000) + div r9.w, r12.w, r9.w + add r9.w, r9.w, l(-1.000000) + mad r9.w, r9.w, cb0[112].w, l(1.000000) + mul r15.xyz, r9.wwww, r15.xyzx + mul r15.xyz, r11.wwww, r15.xyzx + mad r13.xyz, r15.xyzx, r2.zzzz, r13.xyzx + mad r5.x, -r5.z, cb2[r5.x + 10].w, l(1.000000) + mul r2.z, r2.z, r5.x + endif + mov r3.w, l(-1) + continue + else + mov r3.w, r4.x + break + endif + mov r3.w, r4.x + endloop + if_nz r3.w + dp3 r1.x, r14.xyzx, r14.xyzx + rsq r1.x, r1.x + mul r15.xyz, r1.xxxx, r14.xyzx + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r19.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r19.xyzx + itof r17.xyz, r17.xyzx + dp3 r1.x, r15.xyzx, r17.xyzx + div r15.xyz, r15.xyzx, r1.xxxx + lt r1.x, r15.z, l(0.000000) + add r5.xz, -|r15.yyxy|, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r5.xz, r5.xxzx, r17.xxyx + movc r5.xz, r1.xxxx, r5.xxzx, r15.xxyx + mov r6.w, l(1.000000) + dp4 r1.x, cb2[3].xyzw, r6.xyzw + max r1.x, r1.x, l(0.000000) + max r1.x, r1.x, l(0.000100) + mad r5.xz, r5.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) + mad r15.xy, r5.xzxx, cb2[1].wwww, cb2[2].wwww + mov r15.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z + div r0.z, r1.z, r1.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r1.z + add r1.x, r1.x, l(2.000000) + div r0.z, r0.z, r1.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r15.xyz, r0.zzzz, r15.xyzx + mad r13.xyz, r15.xyzx, r2.zzzz, r13.xyzx + endif + mul r13.xyz, r13.xyzx, cb0[112].zzzz + mul r13.xyz, r13.xyzx, cb0[111].yyyy + ne r0.z, l(0.000000), cb0[112].y + if_nz r0.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.x, -r0.z, l(1.000000) + mul r17.xyz, r1.xxxx, r13.xyzx + mad r13.xyz, r15.xyzx, r0.zzzz, r17.xyzx + endif + mul r15.xyz, r3.xyzx, r18.xyzx + mul r15.xyz, r15.xyzx, cb0[111].xxxx + mul r13.xyz, r10.wwww, r13.xyzx + mul r13.xyz, r10.xyzx, r13.xyzx + mad r13.xyz, r15.xyzx, r12.xyzx, r13.xyzx +else + mad r15.xyz, r6.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r7.xyzx + round_z r0.z, cb0[212].x + mad r1.xz, r0.zzzz, l(2.083000, 0.000000, 4.867000, 0.000000), r1.yywy + dp2 r0.z, r1.xzxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r0.z, r0.z + mul r0.z, r0.z, l(52.982918) + frc r0.z, r0.z + mad r0.z, r0.z, l(2.000000), l(-1.000000) + mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx + mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx + add r17.xyz, r15.xzyx, -r17.xyzx + max r0.z, |r17.y|, |r17.x| + add r0.z, r0.z, l(-464.000000) + mul_sat r0.z, r0.z, l(0.031250) + add r1.x, |r17.z|, l(-208.000000) + mul_sat r1.x, r1.x, l(0.031250) + max r0.z, r0.z, r1.x + ne r1.x, l(0.000000), cb0[210].w + lt r1.z, r0.z, l(1.000000) + and r1.x, r1.z, r1.x + if_nz r1.x + mad r17.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r17.xyz, r15.xzyx, -r17.xyzx + max r1.x, |r17.y|, |r17.x| + add r1.x, r1.x, l(-29.000000) + add r1.z, |r17.z|, l(-13.000000) + mul_sat r1.xz, r1.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000) + max r1.x, r1.z, r1.x + lt r1.z, r1.x, l(1.000000) + if_nz r1.z + mad r17.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t17.yzwx, s2, l(0.000000) + add r1.z, -r1.x, l(1.000000) + mul r2.z, l(0.500000), cb0[211].y + mad r2.w, -cb0[211].y, l(0.500000), l(1.000000) + max r2.z, r2.z, r17.y + min r2.z, r2.w, r2.z + mul r17.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t18.xyzw, s1, l(0.000000) + mad r2.z, r20.w, r1.z, r0.z + add r19.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r18.yyyy, r19.xyzx + mov r21.w, r18.y + mul r21.xyzw, r1.zzzz, r21.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t18.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.xxxx, r17.xyzx + mov r17.w, r18.x + mul r17.xyzw, r1.zzzz, r17.xyzw + mad r19.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r19.xyzx + mul r18.xyzw, r1.zzzz, r18.xyzw + else + mov r21.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r2.z, r0.z + endif + mad r19.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r19.xyz, r15.xzyx, -r19.xyzx + max r1.z, |r19.y|, |r19.x| + add r1.z, r1.z, l(-116.000000) + mul_sat r1.z, r1.z, l(0.125000) + add r2.w, |r19.z|, l(-52.000000) + mul_sat r2.w, r2.w, l(0.125000) + max r1.z, r1.z, r2.w + lt r2.w, r1.z, l(1.000000) + if_nz r2.w + mad r19.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r19.xyzx, cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r20.xyz, r19.xyzx, cb0[211].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r20.xyzx, t19.yzwx, s2, l(0.000000) + add r2.w, -r1.z, l(1.000000) + mul r1.x, r1.x, r2.w + mul r2.w, l(0.500000), cb0[211].y + mad r3.w, -cb0[211].y, l(0.500000), l(1.000000) + max r2.w, r2.w, r20.y + min r2.w, r3.w, r2.w + mul r20.w, r2.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyzw, r20.xwzx, t20.xyzw, s1, l(0.000000) + mad r2.z, r23.w, r1.x, r2.z + add r19.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r24.xyz, r22.yyyy, r19.xyzx + mov r24.w, r22.y + mad r21.xyzw, r24.xyzw, r1.xxxx, r21.xyzw + add r19.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r22.xxxx, r19.xyzx + mov r20.w, r22.x + mad r17.xyzw, r20.xyzw, r1.xxxx, r17.xyzw + mad r19.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r19.xyzx + mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw + endif + lt r1.x, l(0.000000), r1.z + if_nz r1.x + mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r15.xyzx, cb0[211].xyzx + mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r19.xyzx + mad r19.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r20.xyzx, r15.xyzx + min r15.xyz, r19.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r15.xyzx, t21.yzwx, s2, l(0.000000) + add r1.x, -r0.z, l(1.000000) + mul r1.x, r1.x, r1.z + max r1.z, r20.y, r15.y + min r1.z, r19.y, r1.z + mul r15.w, r1.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r15.xwzx, t22.xyzw, s1, l(0.000000) + add r19.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r22.yyyy, r19.xyzx + mov r23.w, r22.y + mad r21.xyzw, r23.xyzw, r1.xxxx, r21.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t22.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r22.xxxx, r15.xyzx + mov r15.w, r22.x + mad r17.xyzw, r15.xyzw, r1.xxxx, r17.xyzw + mad r15.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r15.xyzx + mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw + mad r2.z, r20.w, r1.x, r2.z + endif + mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r1.x + add r0.z, r0.z, r1.x + mul r15.y, r0.z, l(0.500000) + else + mov r21.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) + endif + mul r20.xyzw, r15.yxyy, cb0[213].ywzx + mad r20.y, r20.y, l(0.500000), r20.x + mul r1.xz, r15.yyxy, cb0[213].wwyw + mad r20.x, r1.z, l(0.375000), r1.x + add r18.xyzw, r18.xyzw, r20.wyzx + mul r20.xyzw, r15.yxyy, cb0[214].ywzx + mad r20.y, r20.y, l(0.500000), r20.x + mul r1.xz, r15.yyxy, cb0[214].wwyw + mad r20.x, r1.z, l(0.375000), r1.x + add r17.xyzw, r17.xyzw, r20.wyzx + mul r20.xyzw, r15.yxyy, cb0[215].ywzx + mad r20.y, r20.y, l(0.500000), r20.x + mul r1.xz, r15.yyxy, cb0[215].wwyw + mad r20.x, r1.z, l(0.375000), r1.x + add r15.xyzw, r20.wyzx, r21.xyzw + ge r1.xz, r2.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + and r0.z, r1.z, r1.x + if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r2.xyzw, r2.xyxx, t16.xyzw, s1, l(0.000000) + lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r2.xyzw| + or r1.xz, r20.zzwz, r20.xxyx + or r0.z, r1.z, r1.x + if_nz r0.z + dp3 r0.z, r2.yzwy, r2.yzwy + sqrt r0.z, r0.z + mov r1.x, l(1.000000) + mov r1.z, r0.z + mov r3.w, l(0) + loop + ge r4.x, l(4.600000), r1.z + breakc_nz r4.x + iadd r4.x, r3.w, l(1) + mul r5.xz, r1.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000) + mov r1.xz, r5.xxzx + mov r3.w, r4.x + continue + endloop + mul r2.xyzw, r1.xxxx, r2.xyzw + dp3 r0.z, r2.yzwy, r2.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb8[3].x, cb8[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r19.x, r0.z, l(0.00390625000) + mov r19.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r1.xz, r19.xyxx, t15.xzyw, s1, l(0.000000) + mad r1.xz, r1.xxzx, cb8[2].xxyx, cb8[2].zzwz + mul r20.x, r1.x, l(3.54490781) + mul r20.yzw, r1.zzzz, r2.yyzw + mul r0.z, r2.x, l(0.406976730) + exp r0.z, r0.z + mul r2.xyzw, r0.zzzz, r20.xyzw + mov r20.xyzw, r2.xyzw + mov r0.z, l(0) + loop + uge r1.x, r0.z, r3.w + breakc_nz r1.x + mul r21.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r1.x, r21.xyzw, r20.xyzw + dp2 r1.z, r21.yxyy, r20.xyxx + dp2 r4.x, r21.zxzz, r20.xzxx + dp2 r5.x, r21.wxww, r20.xwxx + iadd r5.z, r0.z, l(1) + mov r20.xy, r1.xzxx + mov r20.z, r4.x + mov r20.w, r5.x + mov r0.z, r5.z + continue + endloop + mul r2.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r20.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r2.xyzw, r20.xyzw + dp2 r1.x, r2.yxyy, r20.xyxx + dp2 r1.z, r2.zxzz, r20.xzxx + dp2 r3.w, r2.wxww, r20.xwxx + mul r20.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.x, r2.xyzw, r20.xyzw + dp2 r5.x, r2.yxyy, r20.xyxx + dp2 r5.z, r2.zxzz, r20.xzxx + dp2 r9.w, r2.wxww, r20.xwxx + mul r20.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r11.w, r2.xyzw, r20.xyzw + dp2 r2.y, r2.yxyy, r20.xyxx + dp2 r2.z, r2.zxzz, r20.xzxx + dp2 r2.x, r2.wxww, r20.xwxx + mul r18.w, r0.z, l(0.886226952) + mul r18.x, r3.w, l(-1.02332675) + mul r18.yz, r1.xxzx, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r17.w, r4.x, l(0.886226952) + mul r17.x, r9.w, l(-1.02332675) + mul r17.yz, r5.xxzx, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r15.w, r11.w, l(0.886226952) + mul r15.xyz, r2.xyzx, l(-1.02332675, -1.02332675, 1.02332675, 0.000000) + endif + endif + dp3 r0.z, r18.xyzx, r6.xyzx + add r0.z, r18.w, r0.z + max r2.x, r0.z, l(0.000000) + dp3 r0.z, r17.xyzx, r6.xyzx + add r0.z, r17.w, r0.z + max r2.y, r0.z, l(0.000000) + dp3 r0.z, r15.xyzx, r6.xyzx + add r0.z, r15.w, r0.z + max r2.z, r0.z, l(0.000000) + add r0.z, l(-1.000000), cb0[113].x + max r1.x, r19.w, l(0.001000) + log r1.x, r1.x + mad r1.x, -r1.x, l(1.200000), l(1.000000) + add r0.z, r0.z, -r1.x + mul r1.xz, r1.yywy, cb2[0].wwww + round_ni r1.xz, r1.xxzx + add r2.w, |r5.y|, -cb2[2].y + round_ni r2.w, r2.w + add r3.w, l(-1.000000), cb2[1].x + max r4.x, r2.w, l(0.000000) + min r3.w, r3.w, r4.x + ge r2.w, r3.w, r2.w + mad r1.x, r1.z, cb2[0].x, r1.x + ftoi r1.x, r1.x + iadd r1.x, r1.x, cb0[110].z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx + ftoi r1.z, r3.w + iadd r1.z, r1.z, cb0[110].w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.z, r1.z, l(0), t0.xxxx + and r1.x, r1.z, r1.x + and r1.x, r1.x, r2.w + mul r15.xyz, r2.xyzx, cb0[111].xxxx + dp3 r1.z, r15.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + mov r7.w, l(1.000000) + mov r6.w, l(1.000000) + mov r15.xyz, l(0,0,0,0) + mov r2.w, l(1.000000) + mov r3.w, r1.x + mov r4.x, l(0) + loop + lt r5.x, l(0.010000), r2.w + ine r5.z, r3.w, l(0) + and r5.z, r5.x, r5.z + if_nz r5.z + firstbit_lo r5.z, r3.w + ishl r9.w, l(1), r5.z + xor r3.w, r3.w, r9.w + ishl r5.z, r5.z, l(3) + dp4 r17.x, cb2[r5.z + 6].xyzw, r7.xyzw + dp4 r17.y, cb2[r5.z + 7].xyzw, r7.xyzw + dp4 r17.z, cb2[r5.z + 8].xyzw, r7.xyzw + ge r18.xyz, cb2[r5.z + 5].xyzx, |r17.xyzx| + and r9.w, r18.y, r18.x + and r9.w, r18.z, r9.w + if_nz r9.w + mul r9.w, l(0.100000), cb2[r5.z + 5].x + mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r17.xyzx|, cb2[r5.z + 5].xyzx + mul r19.xyz, r19.xyzx, cb2[r5.z + 9].xyzx + eq r11.w, l(1.000000), cb2[r5.z + 10].x + if_nz r11.w + dp3 r20.x, cb2[r5.z + 6].xyzx, r14.xyzx + dp3 r20.y, cb2[r5.z + 7].xyzx, r14.xyzx + dp3 r20.z, cb2[r5.z + 8].xyzx, r14.xyzx + add r21.xyz, -r17.xyzx, cb2[r5.z + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r17.xyzx, -cb2[r5.z + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r11.w, r21.y, r21.x + min r11.w, r21.z, r11.w + mad r17.xyz, r20.xyzx, r11.wwww, r17.xyzx + else + mov r17.xyz, r14.xyzx + endif + dp3 r11.w, r17.xyzx, r17.xyzx + rsq r11.w, r11.w + mul r17.xyz, r11.wwww, r17.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r21.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r11.w, r17.xyzx, r20.xyzx + div r17.xyz, r17.xyzx, r11.wwww + lt r11.w, r17.z, l(0.000000) + add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r17.zw, r17.zzzw, r20.xxxy + movc r17.xy, r11.wwww, r17.zwzz, r17.xyxx + dp4 r11.w, cb2[r5.z + 4].xyzw, r6.xyzw + max r11.w, r11.w, l(0.000000) + max r11.w, r11.w, l(0.000100) + min r12.w, r19.z, r19.y + min r12.w, r12.w, r19.x + add r13.w, r18.y, r18.x + mad r13.w, r18.z, r18.z, r13.w + mad r9.w, r9.w, r9.w, -r13.w + mul r9.w, r9.w, cb2[r5.z + 9].x + mul r9.w, r9.w, cb2[r5.z + 9].x + add r13.w, l(1.000000), -cb2[r5.z + 10].y + mul r9.w, r9.w, r13.w + mul r9.w, r9.w, l(100.000000) + mad_sat r9.w, r12.w, cb2[r5.z + 10].y, r9.w + mul r12.w, r9.w, cb2[r5.z + 10].w + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r17.xy, r17.xyxx, cb2[1].wwww, cb2[2].wwww + mov r17.z, cb2[r5.z + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t5.xyzw, s3, r0.z + mul r17.xyz, r17.xyzx, cb2[r5.z + 9].wwww + div r13.w, r1.z, r11.w + min r13.w, |r13.w|, l(1.000000) + mad r13.w, r13.w, l(2.000000), r1.z + add r11.w, r11.w, l(2.000000) + div r11.w, r13.w, r11.w + add r11.w, r11.w, l(-1.000000) + mad r11.w, r11.w, cb0[112].w, l(1.000000) + mul r17.xyz, r11.wwww, r17.xyzx + mul r17.xyz, r12.wwww, r17.xyzx + mad r15.xyz, r17.xyzx, r2.wwww, r15.xyzx + mad r5.z, -r9.w, cb2[r5.z + 10].w, l(1.000000) + mul r2.w, r2.w, r5.z + endif + mov r4.x, l(-1) + continue + else + mov r4.x, r5.x + break + endif + mov r4.x, r5.x + endloop + if_nz r4.x + dp3 r1.x, r14.xyzx, r14.xyzx + rsq r1.x, r1.x + mul r14.xyz, r1.xxxx, r14.xyzx + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r14.xyzx + lt r18.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r18.xyzx + itof r17.xyz, r17.xyzx + dp3 r1.x, r14.xyzx, r17.xyzx + div r14.xyz, r14.xyzx, r1.xxxx + lt r1.x, r14.z, l(0.000000) + add r5.xz, -|r14.yyxy|, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r5.xz, r5.xxzx, r17.xxyx + movc r5.xz, r1.xxxx, r5.xxzx, r14.xxyx + mov r6.w, l(1.000000) + dp4 r1.x, cb2[3].xyzw, r6.xyzw + max r1.x, r1.x, l(0.000000) + max r1.x, r1.x, l(0.000100) + mad r5.xz, r5.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) + mad r6.xy, r5.xzxx, cb2[1].wwww, cb2[2].wwww + mov r6.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r6.xyz, r6.xyzx, t5.xyzw, s3, r0.z + div r0.z, r1.z, r1.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r1.z + add r1.x, r1.x, l(2.000000) + div r0.z, r0.z, r1.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r6.xyz, r0.zzzz, r6.xyzx + mad r15.xyz, r6.xyzx, r2.wwww, r15.xyzx + endif + mul r6.xyz, r15.xyzx, cb0[112].zzzz + mul r6.xyz, r6.xyzx, cb0[111].yyyy + ne r0.z, l(0.000000), cb0[112].y + if_nz r0.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r14.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.x, -r0.z, l(1.000000) + mul r15.xyz, r1.xxxx, r6.xyzx + mad r6.xyz, r14.xyzx, r0.zzzz, r15.xyzx + endif + mad r3.xyz, r16.xyzx, r5.wwww, r3.xyzx + mul r2.xyz, r2.xyzx, r3.xyzx + mul r2.xyz, r2.xyzx, cb0[111].xxxx + mul r3.xyz, r10.wwww, r6.xyzx + mul r3.xyz, r10.xyzx, r3.xyzx + mad r13.xyz, r2.xyzx, r12.xyzx, r3.xyzx +endif +add r2.xyz, r4.yzwy, r13.xyzx +max r2.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r2.xyz, r2.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r7.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.x, r8.x, cb0[154].w, -cb0[153].w +max r1.x, r1.x, l(0.000000) +mul r1.z, r0.z, l(-1.442695) +exp r1.z, r1.z +add r1.z, -r1.z, l(1.000000) +div r0.z, r1.z, r0.z +mad r1.z, r7.y, cb0[156].w, cb0[158].w +mul r1.z, r1.z, l(1.442695) +exp r1.z, r1.z +mul r0.z, r0.z, r1.z +mul r0.z, r0.z, -r1.x +mul r3.xyz, r0.zzzz, cb0[155].xyzx +mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r3.xyz, r3.xyzx +dp3 r0.z, -r11.xyzx, cb0[154].xyzx +mad r1.x, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r1.z, r0.zzzz, cb0[155].wwww +add r1.x, -r1.z, r1.x +lt r1.z, l(0.000000), cb0[163].z +if_nz r1.z + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r4.x, r0.y, r0.w, r0.x + dp3 r0.x, -r11.xyzx, -r9.xyzx + add r1.z, r7.y, -cb0[44].y + lt r2.w, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r2.w + mul r0.x, r0.x, cb0[163].w + div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.x + mul r3.w, r0.x, r2.w + mad r4.z, r3.w, r1.z, cb0[44].y + mad r1.z, -r3.w, r1.z, r1.z + mul r3.w, r1.z, cb0[159].z + max r3.w, r3.w, l(-127.000000) + mul r1.z, r1.z, cb0[162].x + max r1.z, r1.z, l(-127.000000) + add r4.w, r4.z, -cb0[159].x + mul r4.w, r4.w, cb0[159].z + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[159].y + lt r5.x, l(5.960464478E-08), |r3.w| + exp r5.z, -r3.w + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r5.x, r5.z, r3.w + add r4.z, r4.z, -cb0[162].z + mul r4.z, r4.z, cb0[162].x + max r4.z, r4.z, l(-127.000000) + exp r4.z, -r4.z + mul r4.z, r4.z, cb0[162].y + lt r5.x, l(5.960464478E-08), |r1.z| + exp r5.z, -r1.z + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r1.z + mad r1.z, -r1.z, l(0.240226507), l(0.693147182) + movc r1.z, r5.x, r5.z, r1.z + mul r1.z, r1.z, r4.z + mad r1.z, r4.w, r3.w, r1.z + mad r0.x, -r0.x, r2.w, l(1.000000) + mul r0.x, r8.x, r0.x + mul r0.x, r0.x, r1.z + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r8.xxxx, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r4.y, r0.w, r4.x, r0.y + ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r1.yyyw + mul r4.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r5.y|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r4.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t14.xyzw, s1, l(0.000000) + add r0.y, |r5.y|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r0.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r1.yzw, r0.yyyy, cb0[161].xxyz + mad r1.yzw, r1.yyzw, r4.wwww, r4.xxyz + mul r0.x, r0.x, r4.w +else + add r0.y, r7.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r8.x, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r8.xxxx, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r1.yzw, r0.yyyy, cb0[161].xxyz +endif +mul r4.xyz, r0.xxxx, r3.xyzx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.x, l(12.566371) +sqrt r1.x, r1.x +mul r1.x, r1.x, r3.w +max r1.x, r1.x, l(0.001000) +div r1.x, r2.w, r1.x +mad_sat r0.yzw, cb0[157].xxyz, r1.xxxx, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r3.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r1.yzwy +// Check fog modification toggle (cb13[12].y) +// If 0 (Original), skip fog modification and output original +if_z cb13[12].y + mad r0.xyz, r2.xyzx, r4.xyzx, r0.xyzx + dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) + dp3 r1.x, r8.yzwy, r8.yzwy + sqrt r1.x, r1.x + mad_sat r1.x, -r1.x, cb0[169].z, l(1.000000) + mul r1.y, r1.x, cb0[169].x + mad r1.x, -cb0[169].x, r1.x, l(1.000000) + mul r3.xyz, cb0[168].xyzx, cb0[183].wwww + mad r3.xyz, r7.xyzx, cb0[169].yyyy, r3.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r1.z, r3.xyzx, t27.xywz, s2, l(0.000000) + dp2 r1.y, r1.zzzz, r1.yyyy + add r1.x, r1.y, r1.x + add r1.y, r0.w, l(1.000000) + min r1.x, r1.y, r1.x + add r0.xyz, -r2.xyzx, r0.xyzx + mad o0.xyz, r1.xxxx, r0.xyzx, r2.xyzx + mov o0.w, r0.w + ret +endif + +// === Simplified Fog Modification (Anti-Banding) === +// r2.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter (0-255) + +// Normalize colors to 0-1 range +mul r10.xyz, r2.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r2/255 +mul r11.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 + +// Boost transmittance: transmittance = lerp(transmittance, 1, 0.35) to reduce fog density +add r12.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r12.xyz, r12.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + +// Reduce fog inscatter intensity +mul r11.xyz, r11.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + +// Standard fog blend with reduced intensity +mad r13.xyz, r10.xyzx, r12.xyzx, r11.xyzx + +// Scale back to 0-255 +mul r0.xyz, r13.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) + +// Continue with original post-fog processing +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.x, r8.yzwy, r8.yzwy +sqrt r1.x, r1.x +mad_sat r1.x, -r1.x, cb0[169].z, l(1.000000) +mul r1.y, r1.x, cb0[169].x +mad r1.x, -cb0[169].x, r1.x, l(1.000000) +mul r3.xyz, cb0[168].xyzx, cb0[183].wwww +mad r3.xyz, r7.xyzx, cb0[169].yyyy, r3.xyzx +sample_l_indexable(texture3d)(float,float,float,float) r1.z, r3.xyzx, t27.xywz, s2, l(0.000000) +dp2 r1.y, r1.zzzz, r1.yyyy +add r1.x, r1.y, r1.x +add r1.y, r0.w, l(1.000000) +min r1.x, r1.y, r1.x +add r0.xyz, -r2.xyzx, r0.xyzx +mad o0.xyz, r1.xxxx, r0.xyzx, r2.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x8D6CC6FA.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x8D6CC6FA.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..242f494488 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x8D6CC6FA.ps_5_0_original_backup.asm @@ -0,0 +1,2190 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Jan 30 19:59:40 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[63], dynamicIndexed +dcl_constantbuffer CB2[259], dynamicIndexed +dcl_constantbuffer CB3[3], immediateIndexed +dcl_constantbuffer CB4[2054], dynamicIndexed +dcl_constantbuffer CB5[401], dynamicIndexed +dcl_constantbuffer CB6[15], dynamicIndexed +dcl_constantbuffer CB7[160], dynamicIndexed +dcl_constantbuffer CB8[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2darray (float,float,float,float) t10 +dcl_resource_texture2darray (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_resource_texture3d (float,float,float,float) t27 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 37 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t24.yxzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t25.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t26.xyzw +mul r3.w, r3.w, l(255.000000) +round_ne r3.w, r3.w +ftou r3.w, r3.w +and r4.x, r3.w, l(128) +if_nz r4.x + mad r4.yz, r1.yyxy, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + dp2 r4.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r4.yzyy| + add r5.y, -r4.w, l(1.000000) + lt r4.w, r5.y, l(0.000000) + ge r6.xy, r4.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + add r6.zw, -|r4.zzzy|, l(0.000000, 0.000000, 1.000000, 1.000000) + movc r6.xy, r6.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) + mul r6.xy, r6.xyxx, r6.zwzz + movc r5.xz, r4.wwww, r6.xxyx, r4.yyzy + mad r4.yz, r2.xxyx, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + dp2 r4.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r4.yzyy| + add r6.y, -r4.w, l(1.000000) + lt r4.w, r6.y, l(0.000000) + ge r7.xy, r4.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + add r7.zw, -|r4.zzzy|, l(0.000000, 0.000000, 1.000000, 1.000000) + movc r7.xy, r7.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) + mul r7.xy, r7.xyxx, r7.zwzz + movc r6.xz, r4.wwww, r7.xxyx, r4.yyzy + dp3 r4.y, r6.xyzx, r6.xyzx + rsq r4.y, r4.y + mul r6.xyz, r4.yyyy, r6.xyzx + dp3 r4.y, r5.xyzx, r5.xyzx + rsq r4.y, r4.y + mul r4.yzw, r4.yyyy, r5.xxyz + mul r1.w, r1.w, l(3.000000) + round_ne r1.w, r1.w + mul r2.w, r2.w, l(3.000000) + round_ne r2.w, r2.w + mad r1.w, r1.w, l(4.000000), r2.w + ftoi r1.w, r1.w + and r2.w, r3.w, l(127) + utof r2.w, r2.w + mul r2.w, r2.w, l(0.00787401572) + mov r1.x, r1.z + mov r1.z, l(0) + mov r5.xzw, l(0,0,0,0) + mov r3.w, r1.w +else + mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| + add r7.y, -r1.w, l(1.000000) + lt r1.w, r7.y, l(0.000000) + ge r8.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + add r8.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + movc r8.xy, r8.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) + mul r8.xy, r8.xyxx, r8.zwzz + movc r7.xz, r1.wwww, r8.xxyx, r2.xxyx + iadd r1.w, r3.w, l(-1) + umin r1.w, r1.w, l(62) + ult r2.x, l(0), r3.w + uge r2.y, l(63), r3.w + and r2.x, r2.y, r2.x + and r5.xyzw, r2.xxxx, cb1[r1.w + 0].yxzw + dp3 r1.w, r7.xyzx, r7.xyzx + rsq r1.w, r1.w + mul r6.xyz, r1.wwww, r7.xyzx + mul r1.z, r1.y, r5.y + mov r4.yzw, l(0,0,0,0) + mov r2.w, l(0) +endif +utof r1.yw, r0.xxxy +mul r2.xy, v0.xyxx, cb0[82].zwzz +mad r7.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r7.zw, r1.yyyw, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r7.zw, r7.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r5.y, r7.zwzz, t1.yxzw, s0, l(0.000000) +mul r8.xyzw, -r7.yyyy, cb0[25].xyzw +mad r7.xyzw, cb0[24].xyzw, r7.xxxx, r8.xyzw +mad r7.xyzw, cb0[26].xyzw, r5.yyyy, r7.xyzw +add r7.xyzw, r7.xyzw, cb0[27].xyzw +div r7.xyz, r7.xyzx, r7.wwww +mul r5.y, r7.y, cb0[1].z +mad r5.y, cb0[0].z, r7.x, r5.y +mad r5.y, cb0[2].z, r7.z, r5.y +add r5.y, r5.y, cb0[3].z +eq r8.x, l(0.000000), cb0[86].w +add r8.yzw, -r7.xxyz, cb0[44].xxyz +mov r9.x, cb0[0].z +mov r9.y, cb0[1].z +mov r9.z, cb0[2].z +movc r10.xyz, r8.xxxx, r8.yzwy, r9.xyzx +dp3 r8.x, r10.xyzx, r10.xyzx +max r9.w, r8.x, l(9.999999939E-09) +rsq r9.w, r9.w +mul r11.xyz, r9.wwww, r10.xyzx +mul r8.x, r8.x, r9.w +lt r10.w, l(0.000488281250), cb0[234].x +if_nz r10.w + sample_b_indexable(texture2d)(float,float,float,float) r12.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x +else + mov r12.xy, l(1.000000,1.000000,0,0) +endif +min r10.w, r12.y, r12.x +min r11.w, r2.z, l(1.000000) +add r12.y, r2.z, -r11.w +mad r10.w, r10.w, r12.y, r11.w +add r2.z, r2.z, -r10.w +mad r12.w, r12.x, r2.z, r10.w +dp3 r2.z, r6.xyzx, r11.xyzx +max r2.z, r2.z, l(0.000000) +mad r13.xyzw, r12.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r10.w, r13.x, r13.x +mul r11.w, r2.z, l(-9.280000) +exp r11.w, r11.w +min r10.w, r10.w, r11.w +mad r10.w, r10.w, r13.x, r13.y +mad r13.xy, r10.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz +mad r10.w, r13.x, l(0.040000), r13.y +ld_indexable(texture2d)(float,float,float,float) r13.x, r0.xyzz, t7.xyzw +lt r0.z, l(0.001000), r13.x +if_nz r0.z + dp3 r0.z, -r11.xyzx, r6.xyzx + add r0.z, r0.z, r0.z + mad r14.xyz, r6.xyzx, -r0.zzzz, -r11.xyzx + dp3 r0.z, -cb4[0].xyzx, r14.xyzx + mad r15.xyz, cb4[0].xyzx, r0.zzzz, r14.xyzx + lt r0.z, r0.z, cb4[4].z + dp3 r11.w, r15.xyzx, r15.xyzx + max r11.w, r11.w, l(0.0000610351562) + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xyzx + mul r15.xyz, r15.xyzx, cb4[4].yyyy + mad r15.xyz, -cb4[0].xyzx, cb4[4].zzzz, r15.xyzx + dp3 r11.w, r15.xyzx, r15.xyzx + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xyzx + movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx + mad r15.xyz, r10.xyzx, r9.wwww, r14.xyzx + dp3 r0.z, r15.xyzx, r15.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r15.xyz, r0.zzzz, r15.xyzx + dp3 r0.z, r14.xyzx, r6.xyzx + mov_sat r12.y, r0.z + dp3_sat r11.w, r6.xyzx, r15.xyzx + dp3_sat r13.z, r11.xyzx, r15.xyzx + min r12.z, r2.z, l(1.000000) + if_nz r4.x + mul r13.w, r12.w, r12.w + mul r13.w, r13.w, r13.w + mad r14.w, r11.w, r13.w, -r11.w + mad r14.w, r14.w, r11.w, l(1.000000) + add r15.x, -r13.z, l(1.000000) + mul r15.y, r15.x, r15.x + mul r15.y, r15.y, r15.y + mul r15.z, r15.x, r15.y + add r15.w, -r12.w, l(1.000000) + mad r16.x, -r15.w, l(0.383026), l(-0.0761947036) + mad r16.x, r15.w, r16.x, l(1.049970) + mad r15.w, r15.w, r16.x, l(0.409255) + min r15.w, r15.w, l(0.999000) + add r16.x, -r15.w, l(1.000000) + mad r15.x, -r15.y, r15.x, l(1.000000) + mad r15.x, r15.x, l(0.040000), r15.z + mul r14.w, r14.w, r14.w + div r14.w, r13.w, r14.w + mad r15.yz, -r12.zzyz, r13.wwww, r12.zzyz + mad r15.yz, r15.yyzy, r12.zzyz, r13.wwww + sqrt r15.yz, r15.yyzy + mul r15.yz, r12.yyzy, r15.yyzy + add r13.w, r15.z, r15.y + add r13.w, r13.w, l(0.000100) + div r13.w, l(0.500000), r13.w + mul r13.w, r13.w, r14.w + mul r13.w, r13.w, r15.x + min r13.w, r13.w, l(2048.000000) + mad r17.xyzw, r12.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r14.w, r17.xyxx, t9.yzwx, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r15.x, r17.zwzz, t9.xyzw, s1, l(0.000000) + mul r14.w, r14.w, r15.x + mul r14.w, r15.w, r14.w + div r14.w, r14.w, r16.x + mul r14.w, r14.w, l(0.00734693790) + mad r15.x, -r16.x, l(0.0857142806), l(1.000000) + div r14.w, r14.w, r15.x + add r15.xyz, r13.wwww, r14.wwww + mov r16.xyz, l(0,0,0,0) + else + mul r13.w, r12.w, r12.w + mul r13.w, r13.w, r13.w + mad r14.w, r11.w, r13.w, -r11.w + mad r11.w, r14.w, r11.w, l(1.000000) + add r13.z, -r13.z, l(1.000000) + mul r14.w, r13.z, r13.z + mul r14.w, r14.w, r14.w + mul r15.w, r13.z, r14.w + add r16.w, -r12.w, l(1.000000) + mad r17.x, -r16.w, l(0.383026), l(-0.0761947036) + mad r17.x, r16.w, r17.x, l(1.049970) + mad r16.w, r16.w, r17.x, l(0.409255) + min r16.w, r16.w, l(0.999000) + add r17.x, -r16.w, l(1.000000) + add_sat r17.y, -r1.z, l(1.000000) + add r18.xyz, r5.xxxx, l(1.000000, 0.666666687, 0.333333343, 0.000000) + frc r18.xyz, r18.xyzx + mad r18.xyz, r18.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) + add_sat r18.xyz, |r18.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) + add r18.xyz, r18.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) + mad r18.xyz, r5.zzzz, r18.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r18.xyz, r1.zzzz, r18.xyzx + mad_sat r0.z, r0.z, l(0.666666687), l(0.333333343) + log r0.z, r0.z + mul r0.z, r0.z, l(1.500000) + exp r0.z, r0.z + mad r0.z, r0.z, l(1.66666663), l(-1.000000) + mad r0.z, r17.y, r0.z, l(1.000000) + mul r0.z, r0.z, r1.x + mul r17.z, r0.z, l(0.159154937) + dp3 r17.w, r11.xyzx, r14.xyzx + mov_sat r17.w, -r17.w + log r17.w, r17.w + mul r17.w, r17.w, l(12.000000) + exp r17.w, r17.w + mad r17.y, r17.y, l(-2.900000), l(3.000000) + mul r17.y, r17.y, r17.w + mad r0.z, -r0.z, l(0.159154937), l(1.000000) + mad r0.z, r17.y, r0.z, r17.z + mul r16.xyz, r0.zzzz, r18.xyzx + mad r0.z, -r14.w, r13.z, l(1.000000) + mad r0.z, r0.z, l(0.040000), r15.w + mul r11.w, r11.w, r11.w + div r11.w, r13.w, r11.w + mad r17.yz, -r12.zzyz, r13.wwww, r12.zzyz + mad r13.zw, r17.yyyz, r12.zzzy, r13.wwww + sqrt r13.zw, r13.zzzw + mul r13.zw, r12.yyyz, r13.zzzw + add r13.z, r13.w, r13.z + add r13.z, r13.z, l(0.000100) + div r13.z, l(0.500000), r13.z + mul r11.w, r11.w, r13.z + mul r0.z, r0.z, r11.w + min r0.z, r0.z, l(2048.000000) + mad r18.xyzw, r12.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r11.w, r18.xyxx, t9.yzwx, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r12.z, r18.zwzz, t9.yzxw, s1, l(0.000000) + mul r11.w, r11.w, r12.z + mul r11.w, r16.w, r11.w + div r11.w, r11.w, r17.x + mul r11.w, r11.w, l(0.00734693790) + mad r12.z, -r17.x, l(0.0857142806), l(1.000000) + div r11.w, r11.w, r12.z + add r15.xyz, r0.zzzz, r11.wwww + endif + mul r15.xyz, r15.xyzx, cb4[4].xxxx + max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r15.xyz, r15.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r17.xyz, r12.yyyy, r15.xyzx + if_nz r4.x + ult r0.z, l(0), r3.w + uge r11.w, l(15), r3.w + and r0.z, r0.z, r11.w + if_nz r0.z + iadd r11.w, r3.w, l(-1) + umin r11.w, r11.w, l(14) + mul r18.y, r2.w, cb6[r11.w + 0].w + itof r18.z, r11.w + add r19.xyz, -r6.xyzx, r4.yzwy + mad r20.xyz, cb6[r11.w + 0].xxxx, r19.xyzx, r6.xyzx + dp3 r12.z, r20.xyzx, r20.xyzx + rsq r12.z, r12.z + mul r20.xyz, r12.zzzz, r20.xyzx + dp3 r12.z, r20.xyzx, r14.xyzx + mad r18.w, r12.z, l(0.500000), l(0.500000) + sample_l_indexable(texture2darray)(float,float,float,float) r20.x, r18.wyzw, t10.xyzw, s1, l(0.000000) + mad r21.xyz, cb6[r11.w + 0].yyyy, r19.xyzx, r6.xyzx + dp3 r12.z, r21.xyzx, r21.xyzx + rsq r12.z, r12.z + mul r21.xyz, r12.zzzz, r21.xyzx + dp3 r12.z, r21.xyzx, r14.xyzx + mad r18.x, r12.z, l(0.500000), l(0.500000) + sample_l_indexable(texture2darray)(float,float,float,float) r20.y, r18.xyzx, t10.xyzw, s1, l(0.000000) + mad r19.xyz, cb6[r11.w + 0].zzzz, r19.xyzx, r6.xyzx + dp3 r11.w, r19.xyzx, r19.xyzx + rsq r11.w, r11.w + mul r19.xyz, r11.wwww, r19.xyzx + dp3 r11.w, r19.xyzx, r14.xyzx + mad r18.x, r11.w, l(0.500000), l(0.500000) + sample_l_indexable(texture2darray)(float,float,float,float) r20.z, r18.xyzx, t10.xyzw, s1, l(0.000000) + endif + movc r14.xyz, r0.zzzz, r20.xyzx, r12.yyyy + mad r14.xyz, r3.xyzx, r14.xyzx, r17.xyzx + add r14.xyz, r16.xyzx, r14.xyzx + mul r14.xyz, r14.xyzx, cb4[1].xyzx + else + mad r15.xyz, r15.xyzx, r12.yyyy, r16.xyzx + mad r15.xyz, r3.xyzx, r12.yyyy, r15.xyzx + mul r14.xyz, r15.xyzx, cb4[1].xyzx + endif + mov r13.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r13.yzw, r13.xyxx, t8.wxyz, s1, cb0[108].x + add r0.z, -r13.x, l(1.000000) + mad r13.xyz, r14.xyzx, r13.yzwy, -r14.xyzx + mad r13.xyz, r0.zzzz, r13.xyzx, r14.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r2.xyxx, t12.yzxw, s1, l(0.000000) + mul r13.xyz, r0.zzzz, r13.xyzx +else + mov r13.xyz, l(0,0,0,0) +endif +mul r12.yz, r1.yywy, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r12.yz, r12.yyzy +mad r0.z, r12.z, cb3[1].y, r12.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r11.w, -cb0[85].y, cb3[2].w, |r5.y| +round_ni r11.w, r11.w +add r12.y, l(-1.000000), cb3[1].w +max r12.z, r11.w, l(0.000000) +min r12.y, r12.y, r12.z +mul r12.z, r12.y, l(8.000000) +ftoi r12.z, r12.z +ge r11.w, r12.y, r11.w +iadd r12.y, r12.z, cb0[110].y +mul r12.z, r12.w, r12.w +dp3 r13.w, -r11.xyzx, r6.xyzx +add r13.w, r13.w, r13.w +mad r14.xyz, r6.xyzx, -r13.wwww, -r11.xyzx +min r12.x, r2.z, l(1.000000) +add r13.w, -r12.w, l(1.000000) +mad r14.w, -r13.w, l(0.383026), l(-0.0761947036) +mad r14.w, r13.w, r14.w, l(1.049970) +mad r13.w, r13.w, r14.w, l(0.409255) +min r13.w, r13.w, l(0.999000) +add r14.w, -r13.w, l(1.000000) +mad r15.xy, r12.xwxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r15.x, r15.xyxx, t9.xyzw, s1, l(0.000000) +mad r15.y, -r14.w, l(0.0857142806), l(1.000000) +add_sat r15.z, -r1.z, l(1.000000) +add r16.xyz, r5.xxxx, l(1.000000, 0.666666687, 0.333333343, 0.000000) +frc r16.xyz, r16.xyzx +mad r16.xyz, r16.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) +add_sat r16.xyz, |r16.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) +add r16.xyz, r16.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) +mad r16.xyz, r5.zzzz, r16.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r16.xyz, r1.zzzz, r16.xyzx +mad r1.z, r15.z, l(-2.900000), l(3.000000) +add r4.yzw, -r6.xxyz, r4.yyzw +mov r17.w, l(1.000000) +mov r18.y, l(1.000000) +mov r19.zw, r12.wwww +mov r20.xyz, l(0,0,0,0) +mov r5.x, r3.w +mov r5.z, l(1.000000) +mov r12.w, l(0) +loop + ilt r15.w, l(7), r12.w + breakc_nz r15.w + iadd r15.w, r0.z, r12.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r15.w, r15.w, l(0), t0.xxxx + iadd r16.w, r12.w, r12.y + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r16.w, r16.w, l(0), t0.xxxx + and r15.w, r15.w, r16.w + and r15.w, r11.w, r15.w + ishl r16.w, r12.w, l(5) + mov r21.xyz, l(0,0,0,0) + mov r18.zw, r5.xxxz + mov r20.w, r15.w + loop + breakc_z r20.w + firstbit_lo r21.w, r20.w + ishl r22.x, l(1), r21.w + xor r22.x, r20.w, r22.x + iadd r21.w, r16.w, r21.w + bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r21.wwww, l(1, 3, 5, 6) + bfi r22.y, l(29), l(3), r21.w, l(7) + ftou r22.z, cb4[r23.z + 6].w + ieq r22.z, r22.z, l(1) + if_nz r22.z + add r17.xyz, r7.xyzx, -cb4[r23.x + 6].xyzx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb4[r23.z + 6].xzyx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb4[r23.w + 6].yxzy + ushr r26.xyz, cb4[r23.z + 6].xzyx, l(16, 16, 16, 0) + ushr r27.xyz, cb4[r23.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyw, r27.yxyz + mov r28.xz, r24.xxzx + mov r28.yw, r26.xxxz + dp4 r22.z, r17.xyzw, r28.xyzw + mov r26.x, r24.y + mov r26.z, r25.y + mov r26.w, r27.x + dp4 r22.w, r17.xyzw, r26.xyzw + mov r27.xz, r25.xxzx + dp4 r17.x, r17.xyzw, r27.xyzw + max r17.y, |r22.w|, |r22.z| + max r17.x, |r17.x|, r17.y + mad r17.y, cb4[r22.y + 6].x, l(0.500000), l(0.500000) + add r17.x, -r17.y, r17.x + mad r17.y, -cb4[r22.y + 6].x, l(0.500000), l(0.500000) + div_sat r17.x, r17.x, r17.y + add r17.x, -r17.x, l(1.000000) + mul r17.x, r17.x, r17.x + else + mov r17.x, l(1.000000) + endif + lt r17.y, l(0.500000), cb4[r23.y + 6].z + lt r17.z, r17.x, l(0.001000) + or r17.z, r17.y, r17.z + if_nz r17.z + mov r20.w, r22.x + continue + endif + ishl r17.z, r21.w, l(3) + bfi r21.w, l(29), l(3), r21.w, l(2) + lt r22.z, cb4[r17.z + 6].w, l(1.500000) + if_nz r22.z + mad r22.z, cb4[r21.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r22.z, -|cb4[r21.w + 6].x| + add r24.y, -r24.x, cb4[r21.w + 6].y + add r22.z, -|r24.x|, l(1.000000) + add r22.z, -|r24.y|, r22.z + max r22.z, r22.z, l(0.000488281250) + ge r22.w, cb4[r21.w + 6].x, l(0.000000) + movc r24.z, r22.w, r22.z, -r22.z + dp3 r22.z, r24.xyzx, r24.xyzx + rsq r22.z, r22.z + mul r24.xyz, r22.zzzz, r24.xyzx + add r25.xyz, -r7.xyzx, cb4[r23.x + 6].xyzx + dp3 r22.z, r25.xyzx, r25.xyzx + rsq r22.w, r22.z + mul r26.xyz, r22.wwww, r25.xyzx + ftoi r23.z, cb4[r22.y + 6].w + mul r27.xyz, r24.xyzx, cb4[r21.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r24.w, cb4[r17.z + 6].w + and r24.w, r24.w, l(1) + ieq r25.w, r24.w, l(0) + not r25.w, r25.w + lt r26.w, l(0.000000), cb4[r21.w + 6].z + and r25.w, r25.w, r26.w + dp3 r26.w, r28.xyzx, r28.xyzx + sqrt r26.w, r26.w + dp3 r27.w, r29.xyzx, r29.xyzx + sqrt r27.w, r27.w + dp3 r28.w, r6.xyzx, r28.xyzx + div r28.w, r28.w, r26.w + dp3 r29.w, r6.xyzx, r29.xyzx + div r29.w, r29.w, r27.w + add r28.w, r28.w, r29.w + mul_sat r30.x, r28.w, l(0.500000) + dp3 r28.w, r28.xyzx, r29.xyzx + mad r26.w, r26.w, r27.w, r28.w + mad r26.w, r26.w, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r26.w + dp3_sat r18.x, r6.xyzx, r26.xyzx + movc r19.xy, r25.wwww, r30.xyxx, r18.xyxx + lt r18.x, cb4[r23.w + 6].w, l(0.000000) + if_nz r18.x + mul r18.x, cb4[r23.x + 6].w, cb4[r23.x + 6].w + mul r18.x, r18.x, r22.z + mad r18.x, -r18.x, r18.x, l(1.000000) + max r18.x, r18.x, l(0.000000) + add r22.z, r22.z, l(1.000000) + div r22.z, l(1.000000, 1.000000, 1.000000, 1.000000), r22.z + and r26.w, r25.w, l(0x3f800000) + add r27.w, r19.y, -r22.z + mad r22.z, r26.w, r27.w, r22.z + mul r18.x, r18.x, r18.x + mul r18.x, r18.x, r22.z + else + mul r29.xyz, r25.xyzx, cb4[r23.x + 6].wwww + dp3 r22.z, r29.xyzx, r29.xyzx + min r22.z, r22.z, l(1.000000) + add r22.z, -r22.z, l(1.000000) + log r22.z, r22.z + mul r22.z, r22.z, cb4[r23.w + 6].w + exp r22.z, r22.z + mul r18.x, r19.y, r22.z + endif + dp3 r19.y, r26.xyzx, -r24.xyzx + add r19.y, r19.y, -cb4[r21.w + 6].z + mul_sat r19.y, r19.y, cb4[r21.w + 6].w + mul r19.y, r19.y, r19.y + movc r19.y, r24.w, l(1.000000), r19.y + mul r18.x, r18.x, r19.y + not r19.y, r25.w + ige r22.z, r23.z, l(0) + and r19.y, r19.y, r22.z + if_nz r19.y + if_z r24.w + ishl r19.y, r23.z, l(2) + mul r24.xyz, r7.yyyy, cb7[r19.y + 33].xywx + mad r24.xyz, cb7[r19.y + 32].xywx, r7.xxxx, r24.xyzx + mad r24.xyz, cb7[r19.y + 34].xywx, r7.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb7[r19.y + 35].xywx + div_sat r24.xy, r24.xyxx, r24.zzzz + mad r24.xy, r24.xyxx, cb7[r23.z + 0].zwzz, cb7[r23.z + 0].xyxx + else + ishl r19.y, r23.z, l(2) + dp3 r29.x, -r25.xyzx, cb7[r19.y + 32].xyzx + dp3 r29.y, -r25.xyzx, cb7[r19.y + 33].xyzx + dp3 r29.z, -r25.xyzx, cb7[r19.y + 34].xyzx + lt r19.y, |r29.x|, |r29.y| + and r19.y, r19.y, l(1) + dp2 r22.z, |r29.xyxx|, icb[r19.y + 0].xyxx + lt r22.z, r22.z, |r29.z| + movc r19.y, r22.z, l(2), r19.y + dp3 r22.z, r29.xyzx, icb[r19.y + 0].xyzx + lt r22.z, r22.z, l(0.000000) + bfi r19.y, l(31), l(1), r19.y, r22.z + ushr r22.z, r19.y, l(1) + dp3 r22.z, r29.xyzx, icb[r22.z + 0].xyzx + div r24.z, l(0.000244140625), cb7[r23.z + 0].w + add r24.z, -r24.z, l(0.500000) + utof r25.x, r19.y + ult r25.y, r19.y, l(2) + and r25.y, r25.y, l(2) + dp2 r25.y, r29.xzxx, icb[r25.y + 0].xzxx + mul r25.y, r25.y, icb[r19.y + 4].z + div r25.y, r25.y, |r22.z| + mad r25.x, r25.y, r24.z, r25.x + add r25.x, r25.x, l(0.500000) + mul_sat r25.x, r25.x, l(0.166666672) + iadd r25.z, l(-1), icb[r19.y + 4].y + dp2 r25.z, r29.yzyy, icb[r25.z + 0].xyxx + mul r19.y, r25.z, icb[r19.y + 4].w + div r19.y, r19.y, |r22.z| + mad_sat r25.y, -r19.y, r24.z, l(0.500000) + mad r24.xy, r25.xyxx, cb7[r23.z + 0].zwzz, cb7[r23.z + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r19.y, r24.xyxx, t13.yxzw, s1, l(0.000000) + mul r18.x, r18.x, r19.y + endif + lt r19.y, l(0.000000), r18.x + if_nz r19.y + if_z r24.w + ftoi r22.z, cb4[r23.y + 6].x + else + add r24.xyz, r7.xyzx, -cb4[r23.x + 6].xyzx + lt r25.xyz, |r24.yzzy|, |r24.xxyx| + and r23.z, r25.y, r25.x + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ushr r24.w, cb4[r21.w + 6].w, l(24) + ubfe r25.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb4[r21.w + 6].wwww + movc r24.x, r24.x, r24.w, r25.x + and r24.w, l(255), cb4[r21.w + 6].w + movc r24.y, r24.y, r25.y, r24.w + ubfe r24.w, l(8), l(8), cb4[r23.y + 6].x + and r25.x, l(255), cb4[r23.y + 6].x + movc r24.z, r24.z, r24.w, r25.x + movc r24.y, r25.z, r24.y, r24.z + movc r23.z, r23.z, r24.x, r24.y + ilt r24.x, r23.z, l(80) + movc r22.z, r24.x, r23.z, l(-1) + endif + ishl r23.z, r22.z, l(2) + mad r24.xyz, r26.xyzx, cb5[r22.z + 288].xxxx, r7.xyzx + mul r24.w, l(5.000000), cb5[r22.z + 288].y + mad r24.xyz, r6.xyzx, r24.wwww, r24.xyzx + mul r29.xyzw, r24.yyyy, cb5[r23.z + 65].xyzw + mad r29.xyzw, cb5[r23.z + 64].xyzw, r24.xxxx, r29.xyzw + mad r24.xyzw, cb5[r23.z + 66].xyzw, r24.zzzz, r29.xyzw + add r24.xyzw, r24.xyzw, cb5[r23.z + 67].xyzw + div r24.xyz, r24.xyzx, r24.wwww + ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ge r29.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r30.xy, -cb5[r22.z + 344].xyxx, cb5[r22.z + 344].zwzz + mad r24.xy, r24.xyxx, r30.xyxx, cb5[r22.z + 344].xyxx + mad r30.xy, r24.xyxx, cb5[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r30.xy, r30.xyxx + mad r24.xy, r24.xyxx, cb5[400].zwzz, -r30.xyxx + add r31.xyzw, r24.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r32.xyzw, r31.xxzz, r31.xxzz + add r30.zw, -r24.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r31.xz, r24.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r33.xy, r24.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r34.xy, r30.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy + add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r24.xy, r32.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r24.xyxx + mul r35.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r24.xy, -r31.xzxx, r31.xzxx, r30.zwzz + add r24.xy, r24.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r36.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r24.xy, r31.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r35.z, r36.x + mov r35.w, r24.x + mov r34.z, r33.x + mov r34.w, r32.x + add r31.xyzw, r34.zwxz, r35.zwxz + mov r36.z, r35.y + mov r36.w, r24.y + mov r33.z, r34.y + mov r33.w, r32.z + add r24.xyw, r33.zyzw, r36.zyzw + div r32.xyz, r34.xzwx, r31.zwyz + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyz, r32.yxzy, cb5[400].xxxx + div r33.xyz, r33.zywz, r24.xywx + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyz, r33.xyzx, cb5[400].yyyy + mov r32.w, r33.x + mad r34.xyzw, r30.xyxy, cb5[400].xyxy, r32.ywxw + mad r30.zw, r30.xxxy, cb5[400].xxxy, r32.zzzw + mov r33.w, r32.y + mov r32.yw, r33.yyyz + mad r35.xyzw, r30.xyxy, cb5[400].xyxy, r32.xyzy + mad r33.xyzw, r30.xyxy, cb5[400].xyxy, r33.wywz + mad r32.xyzw, r30.xyxy, cb5[400].xyxy, r32.xwzw + mul r36.xyzw, r24.xxxy, r31.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.z, r34.xyxx, t6.xxxx, s4, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r34.zwzz, t6.xxxx, s4, r24.z + mul r24.x, r24.x, r36.y + mad r23.z, r36.x, r23.z, r24.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r30.zwzz, t6.xxxx, s4, r24.z + mad r23.z, r36.z, r24.x, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r33.xyxx, t6.xxxx, s4, r24.z + mad r23.z, r36.w, r24.x, r23.z + mul r30.xyzw, r24.yyww, r31.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r35.xyxx, t6.xxxx, s4, r24.z + mad r23.z, r30.x, r24.x, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r35.zwzz, t6.xxxx, s4, r24.z + mad r23.z, r30.y, r24.x, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r33.zwzz, t6.xxxx, s4, r24.z + mad r23.z, r30.z, r24.x, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r32.xyxx, t6.xxxx, s4, r24.z + mad r23.z, r30.w, r24.x, r23.z + ige r24.x, r22.z, l(0) + or r25.xyz, r25.xyzx, r29.xyzx + or r24.y, r25.y, r25.x + or r24.y, r25.z, r24.y + and r25.x, r24.z, l(0x7fffffff) + ult r25.x, l(0x7f800000), r25.x + or r24.y, r24.y, r25.x + mul r24.w, r24.w, r31.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r32.zwzz, t6.xxxx, s4, r24.z + mad r23.z, r24.w, r24.z, r23.z + add r23.z, r23.z, l(-1.000000) + mad r22.z, cb5[r22.z + 288].w, r23.z, l(1.000000) + movc r22.z, r24.y, l(1.000000), r22.z + movc r22.z, r24.x, r22.z, l(1.000000) + else + mov r22.z, l(1.000000) + endif + if_nz r25.w + dp3 r23.z, r14.xyzx, r27.xyzx + mul_sat r24.x, r22.w, cb4[r21.w + 6].z + mad r24.x, r24.x, l(0.500000), r12.z + min r24.x, r24.x, l(1.000000) + div r24.x, r12.z, r24.x + mad r24.yzw, r14.xxyz, r23.zzzz, -r27.xxyz + dp3 r24.y, r28.xyzx, r24.yzwy + mul r23.z, r23.z, r23.z + mad r23.z, cb4[r21.w + 6].z, cb4[r21.w + 6].z, -r23.z + div_sat r23.z, r24.y, r23.z + mad r24.yzw, r27.xxyz, r23.zzzz, r28.xxyz + dp3 r23.z, r24.yzwy, r24.yzwy + rsq r23.z, r23.z + mul r26.xyz, r23.zzzz, r24.yzwy + else + mov r24.x, l(1.000000) + endif + if_nz r19.y + mul_sat r19.y, r22.w, cb4[r22.y + 6].y + mad r24.yzw, r10.xxyz, r9.wwww, r26.xxyz + dp3 r22.w, r24.yzwy, r24.yzwy + max r22.w, r22.w, l(0.0000610351562) + rsq r22.w, r22.w + mul r24.yzw, r22.wwww, r24.yyzw + dp3_sat r22.w, r6.xyzx, r24.yzwy + dp3_sat r23.z, r11.xyzx, r24.yzwy + if_nz r4.x + lt r24.y, l(0.000000), r19.y + mul r24.z, r19.y, r19.y + mad r24.w, r23.z, l(3.600000), l(0.400000) + div r24.z, r24.z, r24.w + mad r24.z, r19.w, r19.w, r24.z + min r24.z, r24.z, l(1.000000) + movc r24.y, r24.y, r24.z, r12.z + mul r24.y, r24.y, r24.y + mad r24.z, r22.w, r24.y, -r22.w + mad r24.z, r24.z, r22.w, l(1.000000) + add r24.w, -r23.z, l(1.000000) + mul r25.x, r24.w, r24.w + mul r25.x, r25.x, r25.x + mul r25.y, r24.w, r25.x + mad r24.w, -r25.x, r24.w, l(1.000000) + mad r24.w, r24.w, l(0.040000), r25.y + mul r24.z, r24.z, r24.z + div r24.z, r24.y, r24.z + mul r24.z, r24.x, r24.z + mad r25.x, -r12.x, r24.y, r12.x + mad r25.x, r25.x, r12.x, r24.y + sqrt r25.x, r25.x + mad r25.y, -r19.x, r24.y, r19.x + mad r24.y, r25.y, r19.x, r24.y + sqrt r24.y, r24.y + mul r24.y, r12.x, r24.y + mad r24.y, r19.x, r25.x, r24.y + add r24.y, r24.y, l(0.000100) + div r24.y, l(0.500000), r24.y + mul r24.y, r24.y, r24.z + mul r24.y, r24.y, r24.w + min r24.y, r24.y, l(2048.000000) + mad r24.zw, r19.xxxz, l(0.000000, 0.000000, 0.968750, 0.968750), l(0.000000, 0.000000, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r24.z, r24.zwzz, t9.yzxw, s1, l(0.000000) + mul r24.z, r15.x, r24.z + mul r24.z, r13.w, r24.z + div r24.z, r24.z, r14.w + mul r24.z, r24.z, l(0.00734693790) + div r24.z, r24.z, r15.y + add r24.yzw, r24.zzzz, r24.yyyy + mov r25.xyz, l(0,0,0,0) + else + lt r25.w, l(0.000000), r19.y + mul r19.y, r19.y, r19.y + mad r26.w, r23.z, l(3.600000), l(0.400000) + div r19.y, r19.y, r26.w + mad r19.y, r19.w, r19.w, r19.y + min r19.y, r19.y, l(1.000000) + movc r19.y, r25.w, r19.y, r12.z + mul r19.y, r19.y, r19.y + mad r25.w, r22.w, r19.y, -r22.w + mad r22.w, r25.w, r22.w, l(1.000000) + add r23.z, -r23.z, l(1.000000) + mul r25.w, r23.z, r23.z + mul r25.w, r25.w, r25.w + mul r26.w, r23.z, r25.w + dp3 r27.x, r6.xyzx, r26.xyzx + mad_sat r27.x, r27.x, l(0.666666687), l(0.333333343) + log r27.x, r27.x + mul r27.x, r27.x, l(1.500000) + exp r27.x, r27.x + mad r27.x, r27.x, l(1.66666663), l(-1.000000) + mad r27.x, r15.z, r27.x, l(1.000000) + mul r27.x, r1.x, r27.x + dp3 r27.z, r11.xyzx, r26.xyzx + mov_sat r27.z, -r27.z + log r27.z, r27.z + mul r27.yz, r27.xxzx, l(0.000000, 0.159154937, 12.000000, 0.000000) + exp r27.z, r27.z + mul r27.z, r1.z, r27.z + mad r27.x, -r27.x, l(0.159154937), l(1.000000) + mad r27.x, r27.z, r27.x, r27.y + mul r25.xyz, r16.xyzx, r27.xxxx + mad r23.z, -r25.w, r23.z, l(1.000000) + mad r23.z, r23.z, l(0.040000), r26.w + mul r22.w, r22.w, r22.w + div r22.w, r19.y, r22.w + mul r22.w, r24.x, r22.w + mad r24.x, -r12.x, r19.y, r12.x + mad r24.x, r24.x, r12.x, r19.y + sqrt r24.x, r24.x + mad r25.w, -r19.x, r19.y, r19.x + mad r19.y, r25.w, r19.x, r19.y + sqrt r19.y, r19.y + mul r19.y, r12.x, r19.y + mad r19.y, r19.x, r24.x, r19.y + add r19.y, r19.y, l(0.000100) + div r19.y, l(0.500000), r19.y + mul r19.y, r19.y, r22.w + mul r19.y, r19.y, r23.z + min r19.y, r19.y, l(2048.000000) + mad r27.xy, r19.xwxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r22.w, r27.xyxx, t9.yzwx, s1, l(0.000000) + mul r22.w, r15.x, r22.w + mul r22.w, r13.w, r22.w + div r22.w, r22.w, r14.w + mul r22.w, r22.w, l(0.00734693790) + div r22.w, r22.w, r15.y + add r24.yzw, r19.yyyy, r22.wwww + endif + mul r27.xyz, r18.xxxx, cb4[r17.z + 6].xyzx + mul r27.xyz, r22.zzzz, r27.xyzx + mul r27.xyz, r17.xxxx, r27.xyzx + mul r24.xyz, r24.yzwy, cb4[r22.y + 6].zzzz + max r24.xyz, r24.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r24.xyz, r24.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r28.xyz, r19.xxxx, r24.xyzx + if_nz r4.x + ult r17.x, l(0), r18.z + uge r18.x, l(15), r18.z + and r17.x, r17.x, r18.x + if_nz r17.x + iadd r18.x, r18.z, l(-1) + umin r18.x, r18.x, l(14) + dp3 r19.y, cb6[r18.x + 0].xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) + mad r29.xyz, r19.yyyy, r4.yzwy, r6.xyzx + dp3 r19.y, r29.xyzx, r29.xyzx + rsq r19.y, r19.y + mul r29.xyz, r19.yyyy, r29.xyzx + dp3 r19.y, r29.xyzx, r26.xyzx + mad r26.x, r19.y, l(0.500000), l(0.500000) + mul r26.y, r2.w, cb6[r18.x + 0].w + itof r26.z, r18.x + sample_l_indexable(texture2darray)(float,float,float,float) r26.xyz, r26.xyzx, t10.xyzw, s1, l(0.000000) + endif + movc r26.xyz, r17.xxxx, r26.xyzx, r19.xxxx + mad r26.xyz, r3.xyzx, r26.xyzx, r28.xyzx + add r26.xyz, r25.xyzx, r26.xyzx + mul r26.xyz, r26.xyzx, r27.xyzx + else + mad r24.xyz, r24.xyzx, r19.xxxx, r25.xyzx + mad r24.xyz, r3.xyzx, r19.xxxx, r24.xyzx + mul r26.xyz, r27.xyzx, r24.xyzx + endif + else + mov r26.xyz, l(0,0,0,0) + endif + else + if_z r17.y + mad r17.x, cb4[r21.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r17.x, -|cb4[r21.w + 6].x| + add r24.y, -r24.x, cb4[r21.w + 6].y + add r17.x, -|r24.x|, l(1.000000) + add r17.x, -|r24.y|, r17.x + max r17.x, r17.x, l(0.000488281250) + ge r17.y, cb4[r21.w + 6].x, l(0.000000) + movc r24.z, r17.y, r17.x, -r17.x + dp3 r17.x, r24.xyzx, r24.xyzx + rsq r17.x, r17.x + mul r24.xyz, r17.xxxx, r24.xyzx + add r25.xyz, -r7.xyzx, cb4[r23.x + 6].xyzx + dp3 r17.x, r25.xyzx, r25.xyzx + rsq r17.y, r17.x + mul r27.xyz, r17.yyyy, r25.xyzx + ftoi r17.y, cb4[r22.y + 6].w + mul r22.yzw, r24.xxyz, cb4[r21.w + 6].zzzz + mad r28.xyz, -r22.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r22.yzw, r22.yyzw, l(0.000000, 0.500000, 0.500000, 0.500000), r25.xxyz + ftou r17.z, cb4[r17.z + 6].w + and r17.z, r17.z, l(1) + ieq r18.x, r17.z, l(0) + not r18.x, r18.x + lt r19.x, l(0.000000), cb4[r21.w + 6].z + and r18.x, r18.x, r19.x + dp3 r19.x, r28.xyzx, r28.xyzx + dp3 r19.y, r22.yzwy, r22.yzwy + sqrt r19.xy, r19.xyxx + dp3 r22.y, r28.xyzx, r22.yzwy + mad r19.x, r19.x, r19.y, r22.y + mad r19.x, r19.x, l(0.500000), l(1.000000) + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x + movc r19.x, r18.x, r19.x, l(1.000000) + lt r19.y, cb4[r23.w + 6].w, l(0.000000) + if_nz r19.y + mul r19.y, cb4[r23.x + 6].w, cb4[r23.x + 6].w + mul r19.y, r17.x, r19.y + mad r19.y, -r19.y, r19.y, l(1.000000) + max r19.y, r19.y, l(0.000000) + add r17.x, r17.x, l(1.000000) + div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x + and r22.y, r18.x, l(0x3f800000) + add r22.z, -r17.x, r19.x + mad r17.x, r22.y, r22.z, r17.x + mul r19.y, r19.y, r19.y + mul r17.x, r17.x, r19.y + else + mul r22.yzw, r25.xxyz, cb4[r23.x + 6].wwww + dp3 r19.y, r22.yzwy, r22.yzwy + min r19.y, r19.y, l(1.000000) + add r19.y, -r19.y, l(1.000000) + log r19.y, r19.y + mul r19.y, r19.y, cb4[r23.w + 6].w + exp r19.y, r19.y + mul r17.x, r19.y, r19.x + endif + dp3 r19.x, r27.xyzx, -r24.xyzx + add r19.x, r19.x, -cb4[r21.w + 6].z + mul_sat r19.x, r19.x, cb4[r21.w + 6].w + mul r19.x, r19.x, r19.x + movc r19.x, r17.z, l(1.000000), r19.x + mul r17.x, r17.x, r19.x + not r18.x, r18.x + ige r19.x, r17.y, l(0) + and r18.x, r18.x, r19.x + if_nz r18.x + if_z r17.z + ishl r18.x, r17.y, l(2) + mul r22.yzw, r7.yyyy, cb7[r18.x + 33].xxyw + mad r22.yzw, cb7[r18.x + 32].xxyw, r7.xxxx, r22.yyzw + mad r22.yzw, cb7[r18.x + 34].xxyw, r7.zzzz, r22.yyzw + add r22.yzw, r22.yyzw, cb7[r18.x + 35].xxyw + div_sat r19.xy, r22.yzyy, r22.wwww + mad r19.xy, r19.xyxx, cb7[r17.y + 0].zwzz, cb7[r17.y + 0].xyxx + else + ishl r18.x, r17.y, l(2) + dp3 r24.x, -r25.xyzx, cb7[r18.x + 32].xyzx + dp3 r24.y, -r25.xyzx, cb7[r18.x + 33].xyzx + dp3 r24.z, -r25.xyzx, cb7[r18.x + 34].xyzx + lt r18.x, |r24.x|, |r24.y| + and r18.x, r18.x, l(1) + dp2 r22.y, |r24.xyxx|, icb[r18.x + 0].xyxx + lt r22.y, r22.y, |r24.z| + movc r18.x, r22.y, l(2), r18.x + dp3 r22.y, r24.xyzx, icb[r18.x + 0].xyzx + lt r22.y, r22.y, l(0.000000) + bfi r18.x, l(31), l(1), r18.x, r22.y + ushr r22.y, r18.x, l(1) + dp3 r22.y, r24.xyzx, icb[r22.y + 0].xyzx + div r22.z, l(0.000244140625), cb7[r17.y + 0].w + add r22.z, -r22.z, l(0.500000) + utof r22.w, r18.x + ult r23.z, r18.x, l(2) + and r23.z, r23.z, l(2) + dp2 r23.z, r24.xzxx, icb[r23.z + 0].xzxx + mul r23.z, r23.z, icb[r18.x + 4].z + div r23.z, r23.z, |r22.y| + mad r22.w, r23.z, r22.z, r22.w + add r22.w, r22.w, l(0.500000) + mul_sat r25.x, r22.w, l(0.166666672) + iadd r22.w, l(-1), icb[r18.x + 4].y + dp2 r22.w, r24.yzyy, icb[r22.w + 0].xyxx + mul r18.x, r22.w, icb[r18.x + 4].w + div r18.x, r18.x, |r22.y| + mad_sat r25.y, -r18.x, r22.z, l(0.500000) + mad r19.xy, r25.xyxx, cb7[r17.y + 0].zwzz, cb7[r17.y + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r17.y, r19.xyxx, t13.yxzw, s1, l(0.000000) + mul r17.x, r17.y, r17.x + endif + lt r17.x, l(0.000000), r17.x + if_nz r17.x + if_z r17.z + ftoi r17.x, cb4[r23.y + 6].x + else + add r22.yzw, r7.xxyz, -cb4[r23.x + 6].xxyz + lt r23.xzw, |r22.zzww|, |r22.yyyz| + and r17.y, r23.z, r23.x + lt r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r22.yyzw + ushr r17.z, cb4[r21.w + 6].w, l(24) + ubfe r19.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb4[r21.w + 6].wwww + movc r17.z, r22.y, r17.z, r19.x + and r18.x, l(255), cb4[r21.w + 6].w + movc r18.x, r22.z, r19.y, r18.x + ubfe r19.x, l(8), l(8), cb4[r23.y + 6].x + and r19.y, l(255), cb4[r23.y + 6].x + movc r19.x, r22.w, r19.x, r19.y + movc r18.x, r23.w, r18.x, r19.x + movc r17.y, r17.y, r17.z, r18.x + ilt r17.z, r17.y, l(80) + movc r17.x, r17.z, r17.y, l(-1) + endif + ishl r17.y, r17.x, l(2) + mad r22.yzw, r27.xxyz, cb5[r17.x + 288].xxxx, r7.xxyz + mul r17.z, l(5.000000), cb5[r17.x + 288].y + mad r22.yzw, r6.xxyz, r17.zzzz, r22.yyzw + mul r23.xyzw, r22.zzzz, cb5[r17.y + 65].xyzw + mad r23.xyzw, cb5[r17.y + 64].xyzw, r22.yyyy, r23.xyzw + mad r23.xyzw, cb5[r17.y + 66].xyzw, r22.wwww, r23.xyzw + add r23.xyzw, r23.xyzw, cb5[r17.y + 67].xyzw + div r22.yzw, r23.xxyz, r23.wwww + ge r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.yzwy + ge r24.xyz, r22.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) + add r17.yz, -cb5[r17.x + 344].xxyx, cb5[r17.x + 344].zzwz + mad r17.yz, r22.yyzy, r17.yyzy, cb5[r17.x + 344].xxyx + mad r19.xy, r17.yzyy, cb5[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r19.xy, r19.xyxx + mad r17.yz, r17.yyzy, cb5[400].zzwz, -r19.xxyx + add r25.xyzw, r17.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r25.xxzz, r25.xxzz + add r22.yz, -r17.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + min r25.xz, r17.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r17.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r22.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r25.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r17.yz, r27.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r17.yyzy + mul r30.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r17.yz, -r25.xxzx, r25.xxzx, r22.yyzy + add r17.yz, r17.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r31.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r17.yz, r25.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r30.z, r31.x + mov r30.w, r17.y + mov r29.z, r28.x + mov r29.w, r27.x + add r25.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r17.z + mov r28.z, r29.y + mov r28.w, r27.z + add r27.xyz, r28.zywz, r31.zywz + div r29.xyz, r29.xzwx, r25.zwyz + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.yxzy, cb5[400].xxxx + div r28.xyz, r28.zywz, r27.xyzx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb5[400].yyyy + mov r29.w, r28.x + mad r30.xyzw, r19.xyxy, cb5[400].xyxy, r29.ywxw + mad r17.yz, r19.xxyx, cb5[400].xxyx, r29.zzwz + mov r28.w, r29.y + mov r29.yw, r28.yyyz + mad r31.xyzw, r19.xyxy, cb5[400].xyxy, r29.xyzy + mad r28.xyzw, r19.xyxy, cb5[400].xyxy, r28.wywz + mad r29.xyzw, r19.xyxy, cb5[400].xyxy, r29.xwzw + mul r32.xyzw, r25.zwyz, r27.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.xyxx, t6.xxxx, s4, r22.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r30.zwzz, t6.xxxx, s4, r22.w + mul r19.x, r19.x, r32.y + mad r18.x, r32.x, r18.x, r19.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r17.yzyy, t6.xxxx, s4, r22.w + mad r17.y, r32.z, r17.y, r18.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r28.xyxx, t6.xxxx, s4, r22.w + mad r17.y, r32.w, r17.z, r17.y + mul r30.xyzw, r25.xyzw, r27.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r31.xyxx, t6.xxxx, s4, r22.w + mad r17.y, r30.x, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r31.zwzz, t6.xxxx, s4, r22.w + mad r17.y, r30.y, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r28.zwzz, t6.xxxx, s4, r22.w + mad r17.y, r30.z, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r29.xyxx, t6.xxxx, s4, r22.w + mad r17.y, r30.w, r17.z, r17.y + ige r17.z, r17.x, l(0) + or r23.xyz, r23.xyzx, r24.xyzx + or r18.x, r23.y, r23.x + or r18.x, r23.z, r18.x + and r19.x, r22.w, l(0x7fffffff) + ult r19.x, l(0x7f800000), r19.x + or r18.x, r18.x, r19.x + mul r19.x, r25.y, r27.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.y, r29.zwzz, t6.xxxx, s4, r22.w + mad r17.y, r19.x, r19.y, r17.y + add r17.y, r17.y, l(-1.000000) + mad r17.x, cb5[r17.x + 288].w, r17.y, l(1.000000) + movc r17.x, r18.x, l(1.000000), r17.x + movc r17.x, r17.z, r17.x, l(1.000000) + else + mov r17.x, l(1.000000) + endif + else + mov r17.x, l(1.000000) + endif + mul r18.w, r17.x, r18.w + mov r26.xyz, l(0,0,0,0) + endif + add r21.xyz, r21.xyzx, r26.xyzx + mov r20.w, r22.x + endloop + mov r5.z, r18.w + add r20.xyz, r20.xyzx, r21.xyzx + iadd r12.w, r12.w, l(1) +endloop +mad r4.yzw, r20.xxyz, r5.zzzz, r13.xxyz +ne r0.z, l(0.000000), cb0[112].x +if_nz r0.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.x, r0.z + add r1.z, r0.z, r2.z + mad r2.z, r19.w, l(-16.000000), l(-1.000000) + exp r2.z, r2.z + log r1.z, |r1.z| + mul r1.z, r1.z, r2.z + exp r1.z, r1.z + add r1.z, r0.z, r1.z + add r1.z, r1.z, l(-1.000000) + mov_sat r10.xyz, r1.zzzz + mad r12.xyz, r3.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r3.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r3.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + max r12.xyz, r0.zzzz, r12.xyzx +else + mov r10.xyz, r1.xxxx + mov r12.xyz, r1.xxxx +endif +if_nz r4.x + ult r0.z, l(0), r3.w + uge r1.x, l(15), r3.w + and r0.z, r0.z, r1.x + if_nz r0.z + iadd r1.x, r3.w, l(-1) + umin r1.x, r1.x, l(14) + mul r13.x, r2.w, cb6[r1.x + 0].w + utof r13.z, r1.x + mov r13.y, l(0.500000) + sample_l_indexable(texture2darray)(float,float,float,float) r13.xyz, r13.xyzx, t11.xyzw, s1, l(0.000000) + endif + movc r13.xyz, r0.zzzz, r13.xyzx, l(1.000000,1.000000,1.000000,0) + mad r15.xyz, r6.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r7.xyzx + round_z r0.z, cb0[212].x + mad r1.xz, r0.zzzz, l(2.083000, 0.000000, 4.867000, 0.000000), r1.yywy + dp2 r0.z, r1.xzxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r0.z, r0.z + mul r0.z, r0.z, l(52.982918) + frc r0.z, r0.z + mad r0.z, r0.z, l(2.000000), l(-1.000000) + mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx + mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx + add r17.xyz, r15.xzyx, -r17.xyzx + max r0.z, |r17.y|, |r17.x| + add r0.z, r0.z, l(-464.000000) + mul_sat r0.z, r0.z, l(0.031250) + add r1.x, |r17.z|, l(-208.000000) + mul_sat r1.x, r1.x, l(0.031250) + max r0.z, r0.z, r1.x + ne r1.x, l(0.000000), cb0[210].w + lt r1.z, r0.z, l(1.000000) + and r1.x, r1.z, r1.x + if_nz r1.x + mad r17.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r17.xyz, r15.xzyx, -r17.xyzx + max r1.x, |r17.y|, |r17.x| + add r1.x, r1.x, l(-29.000000) + add r1.z, |r17.z|, l(-13.000000) + mul_sat r1.xz, r1.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000) + max r1.x, r1.z, r1.x + lt r1.z, r1.x, l(1.000000) + if_nz r1.z + mad r17.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t17.yzwx, s2, l(0.000000) + add r1.z, -r1.x, l(1.000000) + mul r2.z, l(0.500000), cb0[211].y + mad r2.w, -cb0[211].y, l(0.500000), l(1.000000) + max r2.z, r2.z, r17.y + min r2.z, r2.w, r2.z + mul r17.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t18.xyzw, s1, l(0.000000) + mad r2.z, r20.w, r1.z, r0.z + add r19.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r18.yyyy, r19.xyzx + mov r21.w, r18.y + mul r21.xyzw, r1.zzzz, r21.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t18.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.xxxx, r17.xyzx + mov r17.w, r18.x + mul r17.xyzw, r1.zzzz, r17.xyzw + mad r19.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r19.xyzx + mul r18.xyzw, r1.zzzz, r18.xyzw + else + mov r21.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r2.z, r0.z + endif + mad r19.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r19.xyz, r15.xzyx, -r19.xyzx + max r1.z, |r19.y|, |r19.x| + add r1.z, r1.z, l(-116.000000) + mul_sat r1.z, r1.z, l(0.125000) + add r2.w, |r19.z|, l(-52.000000) + mul_sat r2.w, r2.w, l(0.125000) + max r1.z, r1.z, r2.w + lt r2.w, r1.z, l(1.000000) + if_nz r2.w + mad r19.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r19.xyzx, cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r20.xyz, r19.xyzx, cb0[211].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r20.xyzx, t19.yzwx, s2, l(0.000000) + add r2.w, -r1.z, l(1.000000) + mul r1.x, r1.x, r2.w + mul r2.w, l(0.500000), cb0[211].y + mad r3.w, -cb0[211].y, l(0.500000), l(1.000000) + max r2.w, r2.w, r20.y + min r2.w, r3.w, r2.w + mul r20.w, r2.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyzw, r20.xwzx, t20.xyzw, s1, l(0.000000) + mad r2.z, r23.w, r1.x, r2.z + add r19.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r24.xyz, r22.yyyy, r19.xyzx + mov r24.w, r22.y + mad r21.xyzw, r24.xyzw, r1.xxxx, r21.xyzw + add r19.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r22.xxxx, r19.xyzx + mov r20.w, r22.x + mad r17.xyzw, r20.xyzw, r1.xxxx, r17.xyzw + mad r19.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r19.xyzx + mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw + endif + lt r1.x, l(0.000000), r1.z + if_nz r1.x + mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r15.xyzx, cb0[211].xyzx + mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r19.xyzx + mad r19.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r20.xyzx, r15.xyzx + min r15.xyz, r19.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r15.xyzx, t21.yzwx, s2, l(0.000000) + add r1.x, -r0.z, l(1.000000) + mul r1.x, r1.x, r1.z + max r1.z, r20.y, r15.y + min r1.z, r19.y, r1.z + mul r15.w, r1.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r15.xwzx, t22.xyzw, s1, l(0.000000) + add r19.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r22.yyyy, r19.xyzx + mov r23.w, r22.y + mad r21.xyzw, r23.xyzw, r1.xxxx, r21.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t22.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r22.xxxx, r15.xyzx + mov r15.w, r22.x + mad r17.xyzw, r15.xyzw, r1.xxxx, r17.xyzw + mad r15.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r15.xyzx + mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw + mad r2.z, r20.w, r1.x, r2.z + endif + mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r1.x + add r0.z, r0.z, r1.x + mul r15.y, r0.z, l(0.500000) + else + mov r21.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) + endif + mul r20.xyzw, r15.yxyy, cb0[213].ywzx + mad r20.y, r20.y, l(0.500000), r20.x + mul r1.xz, r15.yyxy, cb0[213].wwyw + mad r20.x, r1.z, l(0.375000), r1.x + add r18.xyzw, r18.xyzw, r20.wyzx + mul r20.xyzw, r15.yxyy, cb0[214].ywzx + mad r20.y, r20.y, l(0.500000), r20.x + mul r1.xz, r15.yyxy, cb0[214].wwyw + mad r20.x, r1.z, l(0.375000), r1.x + add r17.xyzw, r17.xyzw, r20.wyzx + mul r20.xyzw, r15.yxyy, cb0[215].ywzx + mad r20.y, r20.y, l(0.500000), r20.x + mul r1.xz, r15.yyxy, cb0[215].wwyw + mad r20.x, r1.z, l(0.375000), r1.x + add r15.xyzw, r20.wyzx, r21.xyzw + ge r1.xz, r2.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + and r0.z, r1.z, r1.x + if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r20.xyzw, r2.xyxx, t16.xyzw, s1, l(0.000000) + lt r21.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r20.xyzw| + or r1.xz, r21.zzwz, r21.xxyx + or r0.z, r1.z, r1.x + if_nz r0.z + dp3 r0.z, r20.yzwy, r20.yzwy + sqrt r0.z, r0.z + mov r1.x, l(1.000000) + mov r1.z, r0.z + mov r2.z, l(0) + loop + ge r2.w, l(4.600000), r1.z + breakc_nz r2.w + iadd r2.w, r2.z, l(1) + mul r5.xz, r1.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000) + mov r1.xz, r5.xxzx + mov r2.z, r2.w + continue + endloop + mul r20.xyzw, r1.xxxx, r20.xyzw + dp3 r0.z, r20.yzwy, r20.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb8[3].x, cb8[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r19.x, r0.z, l(0.00390625000) + mov r19.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r1.xz, r19.xyxx, t15.xzyw, s1, l(0.000000) + mad r1.xz, r1.xxzx, cb8[2].xxyx, cb8[2].zzwz + mul r21.x, r1.x, l(3.54490781) + mul r21.yzw, r1.zzzz, r20.yyzw + mul r0.z, r20.x, l(0.406976730) + exp r0.z, r0.z + mul r20.xyzw, r0.zzzz, r21.xyzw + mov r21.xyzw, r20.xyzw + mov r0.z, l(0) + loop + uge r1.x, r0.z, r2.z + breakc_nz r1.x + mul r22.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r1.x, r22.xyzw, r21.xyzw + dp2 r1.z, r22.yxyy, r21.xyxx + dp2 r2.w, r22.zxzz, r21.xzxx + dp2 r3.w, r22.wxww, r21.xwxx + iadd r4.x, r0.z, l(1) + mov r21.xy, r1.xzxx + mov r21.z, r2.w + mov r21.w, r3.w + mov r0.z, r4.x + continue + endloop + mul r20.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r21.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r20.xyzw, r21.xyzw + dp2 r1.x, r20.yxyy, r21.xyxx + dp2 r1.z, r20.zxzz, r21.xzxx + dp2 r2.z, r20.wxww, r21.xwxx + mul r21.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r2.w, r20.xyzw, r21.xyzw + dp2 r3.w, r20.yxyy, r21.xyxx + dp2 r4.x, r20.zxzz, r21.xzxx + dp2 r5.x, r20.wxww, r21.xwxx + mul r21.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r5.z, r20.xyzw, r21.xyzw + dp2 r9.w, r20.yxyy, r21.xyxx + dp2 r11.w, r20.zxzz, r21.xzxx + dp2 r12.w, r20.wxww, r21.xwxx + mul r18.w, r0.z, l(0.886226952) + mul r18.x, r2.z, l(-1.02332675) + mul r18.yz, r1.xxzx, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r17.w, r2.w, l(0.886226952) + mul r17.x, r5.x, l(-1.02332675) + mul r17.y, r3.w, l(-1.02332675) + mul r17.z, r4.x, l(1.02332675) + mul r15.w, r5.z, l(0.886226952) + mul r15.x, r12.w, l(-1.02332675) + mul r15.y, r9.w, l(-1.02332675) + mul r15.z, r11.w, l(1.02332675) + endif + endif + mul r18.xyz, r13.xxxx, r18.xyzx + dp3 r0.z, r18.xyzx, r6.xyzx + add r0.z, r18.w, r0.z + max r18.x, r0.z, l(0.000000) + mul r13.xyw, r13.yyyy, r17.xyxz + dp3 r0.z, r13.xywx, r6.xyzx + add r0.z, r17.w, r0.z + max r18.y, r0.z, l(0.000000) + mul r13.xyz, r13.zzzz, r15.xyzx + dp3 r0.z, r13.xyzx, r6.xyzx + add r0.z, r15.w, r0.z + max r18.z, r0.z, l(0.000000) + add r0.z, l(-1.000000), cb0[113].x + max r1.x, r19.w, l(0.001000) + log r1.x, r1.x + mad r1.x, -r1.x, l(1.200000), l(1.000000) + add r0.z, r0.z, -r1.x + mul r1.xz, r1.yywy, cb2[0].wwww + round_ni r1.xz, r1.xxzx + add r2.z, |r5.y|, -cb2[2].y + round_ni r2.z, r2.z + add r2.w, l(-1.000000), cb2[1].x + max r3.w, r2.z, l(0.000000) + min r2.w, r2.w, r3.w + ge r2.z, r2.w, r2.z + mad r1.x, r1.z, cb2[0].x, r1.x + ftoi r1.x, r1.x + iadd r1.x, r1.x, cb0[110].z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx + ftoi r1.z, r2.w + iadd r1.z, r1.z, cb0[110].w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.z, r1.z, l(0), t0.xxxx + and r1.x, r1.z, r1.x + and r1.x, r1.x, r2.z + mul r13.xyz, r18.xyzx, cb0[111].xxxx + dp3 r1.z, r13.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + mov r7.w, l(1.000000) + mov r6.w, l(1.000000) + mov r13.xyz, l(0,0,0,0) + mov r2.z, l(1.000000) + mov r2.w, r1.x + mov r3.w, l(0) + loop + lt r4.x, l(0.010000), r2.z + ine r5.x, r2.w, l(0) + and r5.x, r4.x, r5.x + if_nz r5.x + firstbit_lo r5.x, r2.w + ishl r5.z, l(1), r5.x + xor r2.w, r2.w, r5.z + ishl r5.x, r5.x, l(3) + dp4 r15.x, cb2[r5.x + 6].xyzw, r7.xyzw + dp4 r15.y, cb2[r5.x + 7].xyzw, r7.xyzw + dp4 r15.z, cb2[r5.x + 8].xyzw, r7.xyzw + ge r17.xyz, cb2[r5.x + 5].xyzx, |r15.xyzx| + and r5.z, r17.y, r17.x + and r5.z, r17.z, r5.z + if_nz r5.z + mul r5.z, l(0.100000), cb2[r5.x + 5].x + mul r17.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r17.xy, r17.xyxx, r17.xyxx + add r19.xyz, -|r15.xyzx|, cb2[r5.x + 5].xyzx + mul r19.xyz, r19.xyzx, cb2[r5.x + 9].xyzx + eq r9.w, l(1.000000), cb2[r5.x + 10].x + if_nz r9.w + dp3 r20.x, cb2[r5.x + 6].xyzx, r14.xyzx + dp3 r20.y, cb2[r5.x + 7].xyzx, r14.xyzx + dp3 r20.z, cb2[r5.x + 8].xyzx, r14.xyzx + add r21.xyz, -r15.xyzx, cb2[r5.x + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r15.xyzx, -cb2[r5.x + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r9.w, r21.y, r21.x + min r9.w, r21.z, r9.w + mad r15.xyz, r20.xyzx, r9.wwww, r15.xyzx + else + mov r15.xyz, r14.xyzx + endif + dp3 r9.w, r15.xyzx, r15.xyzx + rsq r9.w, r9.w + mul r15.xyz, r9.wwww, r15.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r21.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r9.w, r15.xyzx, r20.xyzx + div r15.xyz, r15.xyzx, r9.wwww + lt r9.w, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r20.xxxy + movc r15.xy, r9.wwww, r15.zwzz, r15.xyxx + dp4 r9.w, cb2[r5.x + 4].xyzw, r6.xyzw + max r9.w, r9.w, l(0.000000) + max r9.w, r9.w, l(0.000100) + min r11.w, r19.z, r19.y + min r11.w, r11.w, r19.x + add r12.w, r17.y, r17.x + mad r12.w, r17.z, r17.z, r12.w + mad r5.z, r5.z, r5.z, -r12.w + mul r5.z, r5.z, cb2[r5.x + 9].x + mul r5.z, r5.z, cb2[r5.x + 9].x + add r12.w, l(1.000000), -cb2[r5.x + 10].y + mul r5.z, r5.z, r12.w + mul r5.z, r5.z, l(100.000000) + mad_sat r5.z, r11.w, cb2[r5.x + 10].y, r5.z + mul r11.w, r5.z, cb2[r5.x + 10].w + mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r15.xy, r15.xyxx, cb2[1].wwww, cb2[2].wwww + mov r15.z, cb2[r5.x + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z + mul r15.xyz, r15.xyzx, cb2[r5.x + 9].wwww + div r12.w, r1.z, r9.w + min r12.w, |r12.w|, l(1.000000) + mad r12.w, r12.w, l(2.000000), r1.z + add r9.w, r9.w, l(2.000000) + div r9.w, r12.w, r9.w + add r9.w, r9.w, l(-1.000000) + mad r9.w, r9.w, cb0[112].w, l(1.000000) + mul r15.xyz, r9.wwww, r15.xyzx + mul r15.xyz, r11.wwww, r15.xyzx + mad r13.xyz, r15.xyzx, r2.zzzz, r13.xyzx + mad r5.x, -r5.z, cb2[r5.x + 10].w, l(1.000000) + mul r2.z, r2.z, r5.x + endif + mov r3.w, l(-1) + continue + else + mov r3.w, r4.x + break + endif + mov r3.w, r4.x + endloop + if_nz r3.w + dp3 r1.x, r14.xyzx, r14.xyzx + rsq r1.x, r1.x + mul r15.xyz, r1.xxxx, r14.xyzx + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r19.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r19.xyzx + itof r17.xyz, r17.xyzx + dp3 r1.x, r15.xyzx, r17.xyzx + div r15.xyz, r15.xyzx, r1.xxxx + lt r1.x, r15.z, l(0.000000) + add r5.xz, -|r15.yyxy|, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r5.xz, r5.xxzx, r17.xxyx + movc r5.xz, r1.xxxx, r5.xxzx, r15.xxyx + mov r6.w, l(1.000000) + dp4 r1.x, cb2[3].xyzw, r6.xyzw + max r1.x, r1.x, l(0.000000) + max r1.x, r1.x, l(0.000100) + mad r5.xz, r5.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) + mad r15.xy, r5.xzxx, cb2[1].wwww, cb2[2].wwww + mov r15.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z + div r0.z, r1.z, r1.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r1.z + add r1.x, r1.x, l(2.000000) + div r0.z, r0.z, r1.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r15.xyz, r0.zzzz, r15.xyzx + mad r13.xyz, r15.xyzx, r2.zzzz, r13.xyzx + endif + mul r13.xyz, r13.xyzx, cb0[112].zzzz + mul r13.xyz, r13.xyzx, cb0[111].yyyy + ne r0.z, l(0.000000), cb0[112].y + if_nz r0.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.x, -r0.z, l(1.000000) + mul r17.xyz, r1.xxxx, r13.xyzx + mad r13.xyz, r15.xyzx, r0.zzzz, r17.xyzx + endif + mul r15.xyz, r3.xyzx, r18.xyzx + mul r15.xyz, r15.xyzx, cb0[111].xxxx + mul r13.xyz, r10.wwww, r13.xyzx + mul r13.xyz, r10.xyzx, r13.xyzx + mad r13.xyz, r15.xyzx, r12.xyzx, r13.xyzx +else + mad r15.xyz, r6.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r7.xyzx + round_z r0.z, cb0[212].x + mad r1.xz, r0.zzzz, l(2.083000, 0.000000, 4.867000, 0.000000), r1.yywy + dp2 r0.z, r1.xzxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r0.z, r0.z + mul r0.z, r0.z, l(52.982918) + frc r0.z, r0.z + mad r0.z, r0.z, l(2.000000), l(-1.000000) + mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx + mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx + add r17.xyz, r15.xzyx, -r17.xyzx + max r0.z, |r17.y|, |r17.x| + add r0.z, r0.z, l(-464.000000) + mul_sat r0.z, r0.z, l(0.031250) + add r1.x, |r17.z|, l(-208.000000) + mul_sat r1.x, r1.x, l(0.031250) + max r0.z, r0.z, r1.x + ne r1.x, l(0.000000), cb0[210].w + lt r1.z, r0.z, l(1.000000) + and r1.x, r1.z, r1.x + if_nz r1.x + mad r17.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r17.xyz, r15.xzyx, -r17.xyzx + max r1.x, |r17.y|, |r17.x| + add r1.x, r1.x, l(-29.000000) + add r1.z, |r17.z|, l(-13.000000) + mul_sat r1.xz, r1.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000) + max r1.x, r1.z, r1.x + lt r1.z, r1.x, l(1.000000) + if_nz r1.z + mad r17.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t17.yzwx, s2, l(0.000000) + add r1.z, -r1.x, l(1.000000) + mul r2.z, l(0.500000), cb0[211].y + mad r2.w, -cb0[211].y, l(0.500000), l(1.000000) + max r2.z, r2.z, r17.y + min r2.z, r2.w, r2.z + mul r17.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t18.xyzw, s1, l(0.000000) + mad r2.z, r20.w, r1.z, r0.z + add r19.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r18.yyyy, r19.xyzx + mov r21.w, r18.y + mul r21.xyzw, r1.zzzz, r21.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t18.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.xxxx, r17.xyzx + mov r17.w, r18.x + mul r17.xyzw, r1.zzzz, r17.xyzw + mad r19.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r19.xyzx + mul r18.xyzw, r1.zzzz, r18.xyzw + else + mov r21.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r2.z, r0.z + endif + mad r19.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r19.xyz, r15.xzyx, -r19.xyzx + max r1.z, |r19.y|, |r19.x| + add r1.z, r1.z, l(-116.000000) + mul_sat r1.z, r1.z, l(0.125000) + add r2.w, |r19.z|, l(-52.000000) + mul_sat r2.w, r2.w, l(0.125000) + max r1.z, r1.z, r2.w + lt r2.w, r1.z, l(1.000000) + if_nz r2.w + mad r19.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r19.xyzx, cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r20.xyz, r19.xyzx, cb0[211].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r20.xyzx, t19.yzwx, s2, l(0.000000) + add r2.w, -r1.z, l(1.000000) + mul r1.x, r1.x, r2.w + mul r2.w, l(0.500000), cb0[211].y + mad r3.w, -cb0[211].y, l(0.500000), l(1.000000) + max r2.w, r2.w, r20.y + min r2.w, r3.w, r2.w + mul r20.w, r2.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyzw, r20.xwzx, t20.xyzw, s1, l(0.000000) + mad r2.z, r23.w, r1.x, r2.z + add r19.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r24.xyz, r22.yyyy, r19.xyzx + mov r24.w, r22.y + mad r21.xyzw, r24.xyzw, r1.xxxx, r21.xyzw + add r19.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r22.xxxx, r19.xyzx + mov r20.w, r22.x + mad r17.xyzw, r20.xyzw, r1.xxxx, r17.xyzw + mad r19.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r19.xyzx + mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw + endif + lt r1.x, l(0.000000), r1.z + if_nz r1.x + mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r15.xyzx, cb0[211].xyzx + mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r19.xyzx + mad r19.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r20.xyzx, r15.xyzx + min r15.xyz, r19.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r15.xyzx, t21.yzwx, s2, l(0.000000) + add r1.x, -r0.z, l(1.000000) + mul r1.x, r1.x, r1.z + max r1.z, r20.y, r15.y + min r1.z, r19.y, r1.z + mul r15.w, r1.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r15.xwzx, t22.xyzw, s1, l(0.000000) + add r19.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r22.yyyy, r19.xyzx + mov r23.w, r22.y + mad r21.xyzw, r23.xyzw, r1.xxxx, r21.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t22.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r22.xxxx, r15.xyzx + mov r15.w, r22.x + mad r17.xyzw, r15.xyzw, r1.xxxx, r17.xyzw + mad r15.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r15.xyzx + mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw + mad r2.z, r20.w, r1.x, r2.z + endif + mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r1.x + add r0.z, r0.z, r1.x + mul r15.y, r0.z, l(0.500000) + else + mov r21.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) + endif + mul r20.xyzw, r15.yxyy, cb0[213].ywzx + mad r20.y, r20.y, l(0.500000), r20.x + mul r1.xz, r15.yyxy, cb0[213].wwyw + mad r20.x, r1.z, l(0.375000), r1.x + add r18.xyzw, r18.xyzw, r20.wyzx + mul r20.xyzw, r15.yxyy, cb0[214].ywzx + mad r20.y, r20.y, l(0.500000), r20.x + mul r1.xz, r15.yyxy, cb0[214].wwyw + mad r20.x, r1.z, l(0.375000), r1.x + add r17.xyzw, r17.xyzw, r20.wyzx + mul r20.xyzw, r15.yxyy, cb0[215].ywzx + mad r20.y, r20.y, l(0.500000), r20.x + mul r1.xz, r15.yyxy, cb0[215].wwyw + mad r20.x, r1.z, l(0.375000), r1.x + add r15.xyzw, r20.wyzx, r21.xyzw + ge r1.xz, r2.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + and r0.z, r1.z, r1.x + if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r2.xyzw, r2.xyxx, t16.xyzw, s1, l(0.000000) + lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r2.xyzw| + or r1.xz, r20.zzwz, r20.xxyx + or r0.z, r1.z, r1.x + if_nz r0.z + dp3 r0.z, r2.yzwy, r2.yzwy + sqrt r0.z, r0.z + mov r1.x, l(1.000000) + mov r1.z, r0.z + mov r3.w, l(0) + loop + ge r4.x, l(4.600000), r1.z + breakc_nz r4.x + iadd r4.x, r3.w, l(1) + mul r5.xz, r1.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000) + mov r1.xz, r5.xxzx + mov r3.w, r4.x + continue + endloop + mul r2.xyzw, r1.xxxx, r2.xyzw + dp3 r0.z, r2.yzwy, r2.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb8[3].x, cb8[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r19.x, r0.z, l(0.00390625000) + mov r19.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r1.xz, r19.xyxx, t15.xzyw, s1, l(0.000000) + mad r1.xz, r1.xxzx, cb8[2].xxyx, cb8[2].zzwz + mul r20.x, r1.x, l(3.54490781) + mul r20.yzw, r1.zzzz, r2.yyzw + mul r0.z, r2.x, l(0.406976730) + exp r0.z, r0.z + mul r2.xyzw, r0.zzzz, r20.xyzw + mov r20.xyzw, r2.xyzw + mov r0.z, l(0) + loop + uge r1.x, r0.z, r3.w + breakc_nz r1.x + mul r21.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r1.x, r21.xyzw, r20.xyzw + dp2 r1.z, r21.yxyy, r20.xyxx + dp2 r4.x, r21.zxzz, r20.xzxx + dp2 r5.x, r21.wxww, r20.xwxx + iadd r5.z, r0.z, l(1) + mov r20.xy, r1.xzxx + mov r20.z, r4.x + mov r20.w, r5.x + mov r0.z, r5.z + continue + endloop + mul r2.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r20.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r2.xyzw, r20.xyzw + dp2 r1.x, r2.yxyy, r20.xyxx + dp2 r1.z, r2.zxzz, r20.xzxx + dp2 r3.w, r2.wxww, r20.xwxx + mul r20.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.x, r2.xyzw, r20.xyzw + dp2 r5.x, r2.yxyy, r20.xyxx + dp2 r5.z, r2.zxzz, r20.xzxx + dp2 r9.w, r2.wxww, r20.xwxx + mul r20.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r11.w, r2.xyzw, r20.xyzw + dp2 r2.y, r2.yxyy, r20.xyxx + dp2 r2.z, r2.zxzz, r20.xzxx + dp2 r2.x, r2.wxww, r20.xwxx + mul r18.w, r0.z, l(0.886226952) + mul r18.x, r3.w, l(-1.02332675) + mul r18.yz, r1.xxzx, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r17.w, r4.x, l(0.886226952) + mul r17.x, r9.w, l(-1.02332675) + mul r17.yz, r5.xxzx, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r15.w, r11.w, l(0.886226952) + mul r15.xyz, r2.xyzx, l(-1.02332675, -1.02332675, 1.02332675, 0.000000) + endif + endif + dp3 r0.z, r18.xyzx, r6.xyzx + add r0.z, r18.w, r0.z + max r2.x, r0.z, l(0.000000) + dp3 r0.z, r17.xyzx, r6.xyzx + add r0.z, r17.w, r0.z + max r2.y, r0.z, l(0.000000) + dp3 r0.z, r15.xyzx, r6.xyzx + add r0.z, r15.w, r0.z + max r2.z, r0.z, l(0.000000) + add r0.z, l(-1.000000), cb0[113].x + max r1.x, r19.w, l(0.001000) + log r1.x, r1.x + mad r1.x, -r1.x, l(1.200000), l(1.000000) + add r0.z, r0.z, -r1.x + mul r1.xz, r1.yywy, cb2[0].wwww + round_ni r1.xz, r1.xxzx + add r2.w, |r5.y|, -cb2[2].y + round_ni r2.w, r2.w + add r3.w, l(-1.000000), cb2[1].x + max r4.x, r2.w, l(0.000000) + min r3.w, r3.w, r4.x + ge r2.w, r3.w, r2.w + mad r1.x, r1.z, cb2[0].x, r1.x + ftoi r1.x, r1.x + iadd r1.x, r1.x, cb0[110].z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx + ftoi r1.z, r3.w + iadd r1.z, r1.z, cb0[110].w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.z, r1.z, l(0), t0.xxxx + and r1.x, r1.z, r1.x + and r1.x, r1.x, r2.w + mul r15.xyz, r2.xyzx, cb0[111].xxxx + dp3 r1.z, r15.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + mov r7.w, l(1.000000) + mov r6.w, l(1.000000) + mov r15.xyz, l(0,0,0,0) + mov r2.w, l(1.000000) + mov r3.w, r1.x + mov r4.x, l(0) + loop + lt r5.x, l(0.010000), r2.w + ine r5.z, r3.w, l(0) + and r5.z, r5.x, r5.z + if_nz r5.z + firstbit_lo r5.z, r3.w + ishl r9.w, l(1), r5.z + xor r3.w, r3.w, r9.w + ishl r5.z, r5.z, l(3) + dp4 r17.x, cb2[r5.z + 6].xyzw, r7.xyzw + dp4 r17.y, cb2[r5.z + 7].xyzw, r7.xyzw + dp4 r17.z, cb2[r5.z + 8].xyzw, r7.xyzw + ge r18.xyz, cb2[r5.z + 5].xyzx, |r17.xyzx| + and r9.w, r18.y, r18.x + and r9.w, r18.z, r9.w + if_nz r9.w + mul r9.w, l(0.100000), cb2[r5.z + 5].x + mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r17.xyzx|, cb2[r5.z + 5].xyzx + mul r19.xyz, r19.xyzx, cb2[r5.z + 9].xyzx + eq r11.w, l(1.000000), cb2[r5.z + 10].x + if_nz r11.w + dp3 r20.x, cb2[r5.z + 6].xyzx, r14.xyzx + dp3 r20.y, cb2[r5.z + 7].xyzx, r14.xyzx + dp3 r20.z, cb2[r5.z + 8].xyzx, r14.xyzx + add r21.xyz, -r17.xyzx, cb2[r5.z + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r17.xyzx, -cb2[r5.z + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r11.w, r21.y, r21.x + min r11.w, r21.z, r11.w + mad r17.xyz, r20.xyzx, r11.wwww, r17.xyzx + else + mov r17.xyz, r14.xyzx + endif + dp3 r11.w, r17.xyzx, r17.xyzx + rsq r11.w, r11.w + mul r17.xyz, r11.wwww, r17.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r21.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r11.w, r17.xyzx, r20.xyzx + div r17.xyz, r17.xyzx, r11.wwww + lt r11.w, r17.z, l(0.000000) + add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r17.zw, r17.zzzw, r20.xxxy + movc r17.xy, r11.wwww, r17.zwzz, r17.xyxx + dp4 r11.w, cb2[r5.z + 4].xyzw, r6.xyzw + max r11.w, r11.w, l(0.000000) + max r11.w, r11.w, l(0.000100) + min r12.w, r19.z, r19.y + min r12.w, r12.w, r19.x + add r13.w, r18.y, r18.x + mad r13.w, r18.z, r18.z, r13.w + mad r9.w, r9.w, r9.w, -r13.w + mul r9.w, r9.w, cb2[r5.z + 9].x + mul r9.w, r9.w, cb2[r5.z + 9].x + add r13.w, l(1.000000), -cb2[r5.z + 10].y + mul r9.w, r9.w, r13.w + mul r9.w, r9.w, l(100.000000) + mad_sat r9.w, r12.w, cb2[r5.z + 10].y, r9.w + mul r12.w, r9.w, cb2[r5.z + 10].w + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r17.xy, r17.xyxx, cb2[1].wwww, cb2[2].wwww + mov r17.z, cb2[r5.z + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t5.xyzw, s3, r0.z + mul r17.xyz, r17.xyzx, cb2[r5.z + 9].wwww + div r13.w, r1.z, r11.w + min r13.w, |r13.w|, l(1.000000) + mad r13.w, r13.w, l(2.000000), r1.z + add r11.w, r11.w, l(2.000000) + div r11.w, r13.w, r11.w + add r11.w, r11.w, l(-1.000000) + mad r11.w, r11.w, cb0[112].w, l(1.000000) + mul r17.xyz, r11.wwww, r17.xyzx + mul r17.xyz, r12.wwww, r17.xyzx + mad r15.xyz, r17.xyzx, r2.wwww, r15.xyzx + mad r5.z, -r9.w, cb2[r5.z + 10].w, l(1.000000) + mul r2.w, r2.w, r5.z + endif + mov r4.x, l(-1) + continue + else + mov r4.x, r5.x + break + endif + mov r4.x, r5.x + endloop + if_nz r4.x + dp3 r1.x, r14.xyzx, r14.xyzx + rsq r1.x, r1.x + mul r14.xyz, r1.xxxx, r14.xyzx + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r14.xyzx + lt r18.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r18.xyzx + itof r17.xyz, r17.xyzx + dp3 r1.x, r14.xyzx, r17.xyzx + div r14.xyz, r14.xyzx, r1.xxxx + lt r1.x, r14.z, l(0.000000) + add r5.xz, -|r14.yyxy|, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r5.xz, r5.xxzx, r17.xxyx + movc r5.xz, r1.xxxx, r5.xxzx, r14.xxyx + mov r6.w, l(1.000000) + dp4 r1.x, cb2[3].xyzw, r6.xyzw + max r1.x, r1.x, l(0.000000) + max r1.x, r1.x, l(0.000100) + mad r5.xz, r5.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) + mad r6.xy, r5.xzxx, cb2[1].wwww, cb2[2].wwww + mov r6.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r6.xyz, r6.xyzx, t5.xyzw, s3, r0.z + div r0.z, r1.z, r1.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r1.z + add r1.x, r1.x, l(2.000000) + div r0.z, r0.z, r1.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r6.xyz, r0.zzzz, r6.xyzx + mad r15.xyz, r6.xyzx, r2.wwww, r15.xyzx + endif + mul r6.xyz, r15.xyzx, cb0[112].zzzz + mul r6.xyz, r6.xyzx, cb0[111].yyyy + ne r0.z, l(0.000000), cb0[112].y + if_nz r0.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r14.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.x, -r0.z, l(1.000000) + mul r15.xyz, r1.xxxx, r6.xyzx + mad r6.xyz, r14.xyzx, r0.zzzz, r15.xyzx + endif + mad r3.xyz, r16.xyzx, r5.wwww, r3.xyzx + mul r2.xyz, r2.xyzx, r3.xyzx + mul r2.xyz, r2.xyzx, cb0[111].xxxx + mul r3.xyz, r10.wwww, r6.xyzx + mul r3.xyz, r10.xyzx, r3.xyzx + mad r13.xyz, r2.xyzx, r12.xyzx, r3.xyzx +endif +add r2.xyz, r4.yzwy, r13.xyzx +max r2.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r2.xyz, r2.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r7.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.x, r8.x, cb0[154].w, -cb0[153].w +max r1.x, r1.x, l(0.000000) +mul r1.z, r0.z, l(-1.442695) +exp r1.z, r1.z +add r1.z, -r1.z, l(1.000000) +div r0.z, r1.z, r0.z +mad r1.z, r7.y, cb0[156].w, cb0[158].w +mul r1.z, r1.z, l(1.442695) +exp r1.z, r1.z +mul r0.z, r0.z, r1.z +mul r0.z, r0.z, -r1.x +mul r3.xyz, r0.zzzz, cb0[155].xyzx +mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r3.xyz, r3.xyzx +dp3 r0.z, -r11.xyzx, cb0[154].xyzx +mad r1.x, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r1.z, r0.zzzz, cb0[155].wwww +add r1.x, -r1.z, r1.x +lt r1.z, l(0.000000), cb0[163].z +if_nz r1.z + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r4.x, r0.y, r0.w, r0.x + dp3 r0.x, -r11.xyzx, -r9.xyzx + add r1.z, r7.y, -cb0[44].y + lt r2.w, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r2.w + mul r0.x, r0.x, cb0[163].w + div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.x + mul r3.w, r0.x, r2.w + mad r4.z, r3.w, r1.z, cb0[44].y + mad r1.z, -r3.w, r1.z, r1.z + mul r3.w, r1.z, cb0[159].z + max r3.w, r3.w, l(-127.000000) + mul r1.z, r1.z, cb0[162].x + max r1.z, r1.z, l(-127.000000) + add r4.w, r4.z, -cb0[159].x + mul r4.w, r4.w, cb0[159].z + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[159].y + lt r5.x, l(5.960464478E-08), |r3.w| + exp r5.z, -r3.w + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r5.x, r5.z, r3.w + add r4.z, r4.z, -cb0[162].z + mul r4.z, r4.z, cb0[162].x + max r4.z, r4.z, l(-127.000000) + exp r4.z, -r4.z + mul r4.z, r4.z, cb0[162].y + lt r5.x, l(5.960464478E-08), |r1.z| + exp r5.z, -r1.z + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r1.z + mad r1.z, -r1.z, l(0.240226507), l(0.693147182) + movc r1.z, r5.x, r5.z, r1.z + mul r1.z, r1.z, r4.z + mad r1.z, r4.w, r3.w, r1.z + mad r0.x, -r0.x, r2.w, l(1.000000) + mul r0.x, r8.x, r0.x + mul r0.x, r0.x, r1.z + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r8.xxxx, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r4.y, r0.w, r4.x, r0.y + ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r1.yyyw + mul r4.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r5.y|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r4.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t14.xyzw, s1, l(0.000000) + add r0.y, |r5.y|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r0.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r1.yzw, r0.yyyy, cb0[161].xxyz + mad r1.yzw, r1.yyzw, r4.wwww, r4.xxyz + mul r0.x, r0.x, r4.w +else + add r0.y, r7.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r8.x, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r8.xxxx, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r1.yzw, r0.yyyy, cb0[161].xxyz +endif +mul r4.xyz, r0.xxxx, r3.xyzx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.x, l(12.566371) +sqrt r1.x, r1.x +mul r1.x, r1.x, r3.w +max r1.x, r1.x, l(0.001000) +div r1.x, r2.w, r1.x +mad_sat r0.yzw, cb0[157].xxyz, r1.xxxx, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r3.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r1.yzwy +mad r0.xyz, r2.xyzx, r4.xyzx, r0.xyzx +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.x, r8.yzwy, r8.yzwy +sqrt r1.x, r1.x +mad_sat r1.x, -r1.x, cb0[169].z, l(1.000000) +mul r1.y, r1.x, cb0[169].x +mad r1.x, -cb0[169].x, r1.x, l(1.000000) +mul r3.xyz, cb0[168].xyzx, cb0[183].wwww +mad r3.xyz, r7.xyzx, cb0[169].yyyy, r3.xyzx +sample_l_indexable(texture3d)(float,float,float,float) r1.z, r3.xyzx, t27.xywz, s2, l(0.000000) +dp2 r1.y, r1.zzzz, r1.yyyy +add r1.x, r1.y, r1.x +add r1.y, r0.w, l(1.000000) +min r1.x, r1.y, r1.x +add r0.xyz, -r2.xyzx, r0.xyzx +mad o0.xyz, r1.xxxx, r0.xyzx, r2.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x9630ACD4.cso b/src/games/endfield/deferred-lighting/0x9630ACD4.cso new file mode 100644 index 0000000000000000000000000000000000000000..f9f42439b70029a324c572a44dae467db6ffe009 GIT binary patch literal 48560 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 H35owd6p*<5 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0.asm new file mode 100644 index 0000000000..a58a6ae7df --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0.asm @@ -0,0 +1,1596 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 16:53:39 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[15], dynamicIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_constantbuffer CB7[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2darray (float,float,float,float) t10 +dcl_resource_texture2darray (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_resource_texture3d (float,float,float,float) t27 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 38 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t24.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t25.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t26.xyzw +mul r1.w, r1.w, l(3.000000) +round_ne r1.w, r1.w +mul r2.w, r2.w, l(3.000000) +round_ne r2.w, r2.w +mad r1.w, r1.w, l(4.000000), r2.w +ftoi r1.w, r1.w +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r2.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r4.y, -r2.w, l(1.000000) +lt r2.w, r4.y, l(0.000000) +ge r5.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r5.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r5.xy, r5.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r5.xy, r5.xyxx, r5.zwzz +movc r4.xz, r2.wwww, r5.xxyx, r2.xxyx +dp3 r2.x, r4.xyzx, r4.xyzx +rsq r2.x, r2.x +mul r4.xyz, r2.xxxx, r4.xyzx +utof r2.xy, r0.xyxx +mul r5.xy, v0.xyxx, cb0[82].zwzz +mad r5.zw, r5.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r6.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r6.xy, r6.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r2.w, r6.xyxx, t1.yzwx, s0, l(0.000000) +mul r6.xyzw, -r5.wwww, cb0[25].xyzw +mad r6.xyzw, cb0[24].xyzw, r5.zzzz, r6.xyzw +mad r6.xyzw, cb0[26].xyzw, r2.wwww, r6.xyzw +add r6.xyzw, r6.xyzw, cb0[27].xyzw +div r6.xyz, r6.xyzx, r6.wwww +mul r2.w, r6.y, cb0[1].z +mad r2.w, cb0[0].z, r6.x, r2.w +mad r2.w, cb0[2].z, r6.z, r2.w +add r2.w, r2.w, cb0[3].z +eq r5.z, l(0.000000), cb0[86].w +add r7.xyz, -r6.xyzx, cb0[44].xyzx +mov r8.x, cb0[0].z +mov r8.y, cb0[1].z +mov r8.z, cb0[2].z +movc r9.xyz, r5.zzzz, r7.xyzx, r8.xyzx +dp3 r5.z, r9.xyzx, r9.xyzx +max r5.w, r5.z, l(9.999999939E-09) +rsq r5.w, r5.w +mul r10.xyz, r5.wwww, r9.xyzx +mul r5.z, r5.w, r5.z +lt r7.w, l(0.000488281250), cb0[234].x +if_nz r7.w + sample_b_indexable(texture2d)(float,float,float,float) r11.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x +else + mov r11.xy, l(1.000000,1.000000,0,0) +endif +min r8.w, r11.y, r11.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r9.w, r11.y, l(-1.000000) +mad r12.x, r1.z, r9.w, l(1.000000) +add r12.y, -r1.z, l(1.000000) +movc r11.yz, r7.wwww, r12.xxyx, l(0,1.000000,1.000000,0) +min r1.z, r2.z, r11.y +add r7.w, -r1.z, r2.z +mad r1.z, r8.w, r7.w, r1.z +add r2.z, -r1.z, r2.z +mad r12.w, r11.x, r2.z, r1.z +add r1.z, -r11.z, l(1.000000) +mad r1.z, r8.w, r1.z, r11.z +add r2.z, -r1.z, l(1.000000) +mad r1.z, r11.x, r2.z, r1.z +mul r11.xyz, r1.zzzz, r3.xyzx +mul r13.xyz, r1.xxxx, r11.xyzx +mad r3.xyz, r3.xyzx, r1.zzzz, -r13.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r11.xyz, r11.xyzx, r1.xxxx, r1.zzzz +dp3 r1.x, r4.xyzx, r10.xyzx +max r13.x, r1.x, l(0.000000) +mul r14.y, r12.w, r12.w +mul r15.x, r13.x, r13.x +mul r15.z, r13.x, r15.x +mul r1.x, r14.y, r14.y +mul r14.z, r14.y, r1.x +mov r13.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r16.x, l(3.327070, 1.000000, 0.000000, 0.000000), r13.xyxx +dp2 r16.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r13.xzxx +mov r14.x, l(1.000000) +dp2 r1.z, r16.xyxx, r14.xyxx +mov r15.yw, l(0,9.044010,0,1.000000) +dp3 r16.x, l(3.596850, -1.367720, 1.000000, 0.000000), r15.xzwx +dp3 r16.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r15.xyzx +mov r17.x, l(5.565890) +mov r17.yz, r15.xxzx +dp3 r16.z, l(1.000000, 19.788601, -20.212299, 0.000000), r17.xyzx +dp3 r2.z, r16.xyzx, r14.xyzx +div r1.z, r1.z, r2.z +dp2 r16.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r13.xwxx +mov r15.x, l(1.296780) +mov r15.y, r13.x +dp2 r16.y, l(1.000000, -0.755907, 0.000000, 0.000000), r15.xyxx +dp2 r2.z, r16.xyxx, r14.xyxx +dp3 r16.x, l(2.923380, 59.418800, 1.000000, 0.000000), r15.yzwy +mov r15.xw, l(20.322500,0,0,121.563004) +dp3 r16.y, l(1.000000, -27.030199, 222.591995, 0.000000), r15.xyzx +dp3 r16.z, l(626.130005, 316.627014, 1.000000, 0.000000), r15.yzwy +dp3 r7.w, r16.xyzx, r14.xyzx +div r2.z, r2.z, r7.w +mad r13.yzw, r11.xxyz, r1.zzzz, r2.zzzz +add r1.z, r1.z, r2.z +ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t7.xzyw +lt r0.z, l(0.001000), r14.x +if_nz r0.z + dp3 r0.z, -r10.xyzx, r4.xyzx + add r0.z, r0.z, r0.z + mad r15.xyz, r4.xyzx, -r0.zzzz, -r10.xyzx + dp3 r0.z, -cb3[0].xyzx, r15.xyzx + mad r16.xyz, cb3[0].xyzx, r0.zzzz, r15.xyzx + lt r0.z, r0.z, cb3[4].z + dp3 r2.z, r16.xyzx, r16.xyzx + max r2.z, r2.z, l(0.0000610351562) + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + mul r16.xyz, r16.xyzx, cb3[4].yyyy + mad r16.xyz, -cb3[0].xyzx, cb3[4].zzzz, r16.xyzx + dp3 r2.z, r16.xyzx, r16.xyzx + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + movc r15.xyz, r0.zzzz, r16.xyzx, r15.xyzx + mad r16.xyz, r9.xyzx, r5.wwww, r15.xyzx + dp3 r0.z, r16.xyzx, r16.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r16.xyz, r0.zzzz, r16.xyzx + dp3 r0.z, r15.xyzx, r4.xyzx + mov_sat r12.y, r0.z + dp3_sat r2.z, r4.xyzx, r16.xyzx + min r12.z, r13.x, l(1.000000) + mad r7.w, r2.z, r1.x, -r2.z + mad r2.z, r7.w, r2.z, l(1.000000) + dp3_sat r7.w, r10.xyzx, r16.xyzx + add r7.w, -r7.w, l(1.000000) + mul r8.w, r7.w, r7.w + mul r8.w, r8.w, r8.w + mul r9.w, r7.w, r8.w + add r10.w, -r12.w, l(1.000000) + mad r11.w, -r10.w, l(0.383026), l(-0.0761947036) + mad r11.w, r10.w, r11.w, l(1.049970) + mad r10.w, r10.w, r11.w, l(0.409255) + min r10.w, r10.w, l(0.999000) + add r11.w, -r10.w, l(1.000000) + add r15.xyz, -r11.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r11.xyzx + ult r14.w, l(0), r1.w + uge r15.w, l(15), r1.w + and r14.w, r14.w, r15.w + if_nz r14.w + iadd r15.w, r1.w, l(-1) + umin r15.w, r15.w, l(14) + mad r16.x, r0.z, l(0.500000), l(0.500000) + mul r16.y, r3.w, cb5[r15.w + 0].w + utof r16.z, r15.w + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t10.xyzw, s1, l(0.000000) + endif + movc r16.xyz, r14.wwww, r16.xyzx, r12.yyyy + mad r0.z, -r8.w, r7.w, l(1.000000) + mad r17.xyz, r11.xyzx, r0.zzzz, r9.wwww + mul r0.z, r2.z, r2.z + div r0.z, r1.x, r0.z + mad r18.xy, -r12.zyzz, r1.xxxx, r12.zyzz + mad r18.xy, r18.xyxx, r12.zyzz, r1.xxxx + sqrt r18.xy, r18.xyxx + mul r18.xy, r12.yzyy, r18.xyxx + add r1.x, r18.y, r18.x + add r1.x, r1.x, l(0.000100) + div r1.x, l(0.500000), r1.x + mul r0.z, r0.z, r1.x + mul r17.xyz, r0.zzzz, r17.xyzx + min r17.xyz, r17.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r18.xyzw, r12.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r18.xyxx, t9.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r1.x, r18.zwzz, t9.xyzw, s1, l(0.000000) + mul r0.z, r0.z, r1.x + mul r0.z, r10.w, r0.z + div r0.z, r0.z, r11.w + mul r18.xyz, r15.xyzx, r15.xyzx + mul r18.xyz, r0.zzzz, r18.xyzx + mad r15.xyz, -r15.xyzx, r11.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r15.xyz, r18.xyzx, r15.xyzx + add r15.xyz, r15.xyzx, r17.xyzx + mul r15.xyz, r15.xyzx, cb3[4].xxxx + max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r15.xyz, r15.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r16.xyz, r3.xyzx, r16.xyzx + mad r15.xyz, r15.xyzx, r12.yyyy, r16.xyzx + mul r15.xyz, r15.xyzx, cb3[1].xyzx + mov r14.z, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r16.xyz, r14.xzxx, t8.xyzw, s1, cb0[108].x + add r0.z, -r14.x, l(1.000000) + mad r14.xzw, r15.xxyz, r16.xxyz, -r15.xxyz + mad r14.xzw, r0.zzzz, r14.xxzw, r15.xxyz + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r5.xyxx, t12.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r14.xzw, r0.zzzz, r14.xxzw +else + mov r14.xzw, l(0,0,0,0) +endif +mul r12.yz, r2.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r12.yz, r12.yyzy +mad r0.z, r12.z, cb2[1].y, r12.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r1.x, -cb0[85].y, cb2[2].w, |r2.w| +round_ni r1.x, r1.x +add r2.z, l(-1.000000), cb2[1].w +max r7.w, r1.x, l(0.000000) +min r2.z, r2.z, r7.w +mul r7.w, r2.z, l(8.000000) +ftoi r7.w, r7.w +ge r1.x, r2.z, r1.x +iadd r2.z, r7.w, cb0[110].y +dp3 r7.w, -r10.xyzx, r4.xyzx +add r7.w, r7.w, r7.w +mad r15.xyz, r4.xyzx, -r7.wwww, -r10.xyzx +min r12.x, r13.x, l(1.000000) +add r7.w, -r12.w, l(1.000000) +mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) +mad r8.w, r7.w, r8.w, l(1.049970) +mad r7.w, r7.w, r8.w, l(0.409255) +min r7.w, r7.w, l(0.999000) +add r8.w, -r7.w, l(1.000000) +add r16.xyz, -r11.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r11.xyzx +ult r9.w, l(0), r1.w +uge r10.w, l(15), r1.w +and r9.w, r9.w, r10.w +iadd r1.w, r1.w, l(-1) +umin r1.w, r1.w, l(14) +mul r17.y, r3.w, cb5[r1.w + 0].w +utof r17.z, r1.w +mad r12.yz, r12.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r1.w, r12.yzyy, t9.yzwx, s1, l(0.000000) +mad r18.xyz, -r16.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r16.xyz, r16.xyzx, r16.xyzx +mov r19.w, l(1.000000) +mov r20.y, l(1.000000) +mov r21.z, r12.w +mov r22.xyz, l(0,0,0,0) +mov r3.w, l(1.000000) +mov r10.w, l(0) +loop + ilt r11.w, l(7), r10.w + breakc_nz r11.w + iadd r11.w, r0.z, r10.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx + iadd r12.y, r2.z, r10.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.y, r12.y, l(0), t0.xxxx + and r11.w, r11.w, r12.y + and r11.w, r1.x, r11.w + ishl r12.y, r10.w, l(5) + mov r23.xyz, l(0,0,0,0) + mov r12.z, r3.w + mov r15.w, r11.w + loop + breakc_z r15.w + firstbit_lo r16.w, r15.w + ishl r18.w, l(1), r16.w + xor r18.w, r15.w, r18.w + iadd r16.w, r12.y, r16.w + bfi r24.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 3, 5, 6) + bfi r20.z, l(29), l(3), r16.w, l(7) + ftou r20.w, cb3[r24.z + 6].w + ieq r20.w, r20.w, l(1) + if_nz r20.w + add r19.xyz, r6.xyzx, -cb3[r24.x + 6].xyzx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.z + 6].xzyx + and r26.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.w + 6].yxzy + ushr r27.xyz, cb3[r24.z + 6].xzyx, l(16, 16, 16, 0) + ushr r28.xyz, cb3[r24.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyz, r27.xyzx + f16tof32 r28.xyw, r28.yxyz + mov r29.xz, r25.xxzx + mov r29.yw, r27.xxxz + dp4 r20.w, r19.xyzw, r29.xyzw + mov r27.x, r25.y + mov r27.z, r26.y + mov r27.w, r28.x + dp4 r21.w, r19.xyzw, r27.xyzw + mov r28.xz, r26.xxzx + dp4 r19.x, r19.xyzw, r28.xyzw + max r19.y, |r20.w|, |r21.w| + max r19.x, |r19.x|, r19.y + mad r19.y, cb3[r20.z + 6].x, l(0.500000), l(0.500000) + add r19.x, -r19.y, r19.x + mad r19.y, -cb3[r20.z + 6].x, l(0.500000), l(0.500000) + div_sat r19.x, r19.x, r19.y + add r19.x, -r19.x, l(1.000000) + mul r19.x, r19.x, r19.x + else + mov r19.x, l(1.000000) + endif + lt r19.y, l(0.500000), cb3[r24.y + 6].z + lt r19.z, r19.x, l(0.001000) + or r19.z, r19.y, r19.z + if_nz r19.z + mov r15.w, r18.w + continue + endif + ishl r19.z, r16.w, l(3) + bfi r16.w, l(29), l(3), r16.w, l(2) + lt r20.w, cb3[r19.z + 6].w, l(1.500000) + if_nz r20.w + mad r20.w, cb3[r16.w + 6].y, l(0.500000), l(0.500000) + add r25.x, r20.w, -|cb3[r16.w + 6].x| + add r25.y, -r25.x, cb3[r16.w + 6].y + add r20.w, -|r25.x|, l(1.000000) + add r20.w, -|r25.y|, r20.w + max r20.w, r20.w, l(0.000488281250) + ge r21.w, cb3[r16.w + 6].x, l(0.000000) + movc r25.z, r21.w, r20.w, -r20.w + dp3 r20.w, r25.xyzx, r25.xyzx + rsq r20.w, r20.w + mul r25.xyz, r20.wwww, r25.xyzx + add r26.xyz, -r6.xyzx, cb3[r24.x + 6].xyzx + dp3 r20.w, r26.xyzx, r26.xyzx + rsq r21.w, r20.w + mul r27.xyz, r21.wwww, r26.xyzx + ftoi r22.w, cb3[r20.z + 6].w + mul r28.xyz, r25.xyzx, cb3[r16.w + 6].zzzz + mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + mad r30.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + ftou r23.w, cb3[r19.z + 6].w + and r23.w, r23.w, l(1) + ieq r24.z, r23.w, l(0) + not r24.z, r24.z + lt r25.w, l(0.000000), cb3[r16.w + 6].z + and r24.z, r24.z, r25.w + dp3 r25.w, r29.xyzx, r29.xyzx + sqrt r25.w, r25.w + dp3 r26.w, r30.xyzx, r30.xyzx + sqrt r26.w, r26.w + dp3 r27.w, r4.xyzx, r29.xyzx + div r27.w, r27.w, r25.w + dp3 r28.w, r4.xyzx, r30.xyzx + div r28.w, r28.w, r26.w + add r27.w, r27.w, r28.w + mul_sat r31.x, r27.w, l(0.500000) + dp3 r27.w, r29.xyzx, r30.xyzx + mad r25.w, r25.w, r26.w, r27.w + mad r25.w, r25.w, l(0.500000), l(1.000000) + div r31.y, l(1.000000, 1.000000, 1.000000, 1.000000), r25.w + dp3_sat r20.x, r4.xyzx, r27.xyzx + movc r21.xy, r24.zzzz, r31.xyxx, r20.xyxx + lt r20.x, cb3[r24.w + 6].w, l(0.000000) + if_nz r20.x + mul r20.x, cb3[r24.x + 6].w, cb3[r24.x + 6].w + mul r20.x, r20.x, r20.w + mad r20.x, -r20.x, r20.x, l(1.000000) + max r20.x, r20.x, l(0.000000) + add r20.w, r20.w, l(1.000000) + div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w + and r25.w, r24.z, l(0x3f800000) + add r26.w, -r20.w, r21.y + mad r20.w, r25.w, r26.w, r20.w + mul r20.x, r20.x, r20.x + mul r20.x, r20.x, r20.w + else + mul r30.xyz, r26.xyzx, cb3[r24.x + 6].wwww + dp3 r20.w, r30.xyzx, r30.xyzx + min r20.w, r20.w, l(1.000000) + add r20.w, -r20.w, l(1.000000) + log r20.w, r20.w + mul r20.w, r20.w, cb3[r24.w + 6].w + exp r20.w, r20.w + mul r20.x, r20.w, r21.y + endif + dp3 r20.w, r27.xyzx, -r25.xyzx + add r20.w, r20.w, -cb3[r16.w + 6].z + mul_sat r20.w, r20.w, cb3[r16.w + 6].w + mul r20.w, r20.w, r20.w + movc r20.w, r23.w, l(1.000000), r20.w + mul r20.x, r20.w, r20.x + not r20.w, r24.z + ige r21.y, r22.w, l(0) + and r20.w, r20.w, r21.y + if_nz r20.w + if_z r23.w + ishl r20.w, r22.w, l(2) + mul r25.xyz, r6.yyyy, cb6[r20.w + 33].xywx + mad r25.xyz, cb6[r20.w + 32].xywx, r6.xxxx, r25.xyzx + mad r25.xyz, cb6[r20.w + 34].xywx, r6.zzzz, r25.xyzx + add r25.xyz, r25.xyzx, cb6[r20.w + 35].xywx + div_sat r25.xy, r25.xyxx, r25.zzzz + mad r25.xy, r25.xyxx, cb6[r22.w + 0].zwzz, cb6[r22.w + 0].xyxx + else + ishl r20.w, r22.w, l(2) + dp3 r30.x, -r26.xyzx, cb6[r20.w + 32].xyzx + dp3 r30.y, -r26.xyzx, cb6[r20.w + 33].xyzx + dp3 r30.z, -r26.xyzx, cb6[r20.w + 34].xyzx + lt r20.w, |r30.x|, |r30.y| + and r20.w, r20.w, l(1) + dp2 r21.y, |r30.xyxx|, icb[r20.w + 0].xyxx + lt r21.y, r21.y, |r30.z| + movc r20.w, r21.y, l(2), r20.w + dp3 r21.y, r30.xyzx, icb[r20.w + 0].xyzx + lt r21.y, r21.y, l(0.000000) + bfi r20.w, l(31), l(1), r20.w, r21.y + ushr r21.y, r20.w, l(1) + dp3 r21.y, r30.xyzx, icb[r21.y + 0].xyzx + div r25.z, l(0.000244140625), cb6[r22.w + 0].w + add r25.z, -r25.z, l(0.500000) + utof r25.w, r20.w + ult r26.x, r20.w, l(2) + and r26.x, r26.x, l(2) + dp2 r26.x, r30.xzxx, icb[r26.x + 0].xzxx + mul r26.x, r26.x, icb[r20.w + 4].z + div r26.x, r26.x, |r21.y| + mad r25.w, r26.x, r25.z, r25.w + add r25.w, r25.w, l(0.500000) + mul_sat r26.x, r25.w, l(0.166666672) + iadd r25.w, l(-1), icb[r20.w + 4].y + dp2 r25.w, r30.yzyy, icb[r25.w + 0].xyxx + mul r20.w, r25.w, icb[r20.w + 4].w + div r20.w, r20.w, |r21.y| + mad_sat r26.y, -r20.w, r25.z, l(0.500000) + mad r25.xy, r26.xyxx, cb6[r22.w + 0].zwzz, cb6[r22.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r20.w, r25.xyxx, t13.yzwx, s1, l(0.000000) + mul r20.x, r20.w, r20.x + endif + lt r20.w, l(0.000000), r20.x + if_nz r20.w + if_z r23.w + ftoi r21.y, cb3[r24.y + 6].x + else + add r25.xyz, r6.xyzx, -cb3[r24.x + 6].xyzx + lt r26.xyz, |r25.yzzy|, |r25.xxyx| + and r22.w, r26.y, r26.x + lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ushr r23.w, cb3[r16.w + 6].w, l(24) + ubfe r26.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r16.w + 6].wwww + movc r23.w, r25.x, r23.w, r26.x + and r25.x, l(255), cb3[r16.w + 6].w + movc r25.x, r25.y, r26.y, r25.x + ubfe r25.y, l(8), l(8), cb3[r24.y + 6].x + and r25.w, l(255), cb3[r24.y + 6].x + movc r25.y, r25.z, r25.y, r25.w + movc r25.x, r26.z, r25.x, r25.y + movc r22.w, r22.w, r23.w, r25.x + ilt r23.w, r22.w, l(80) + movc r21.y, r23.w, r22.w, l(-1) + endif + ishl r22.w, r21.y, l(2) + mad r25.xyz, r27.xyzx, cb4[r21.y + 288].xxxx, r6.xyzx + mul r23.w, l(5.000000), cb4[r21.y + 288].y + mad r25.xyz, r4.xyzx, r23.wwww, r25.xyzx + mul r26.xyzw, r25.yyyy, cb4[r22.w + 65].xyzw + mad r26.xyzw, cb4[r22.w + 64].xyzw, r25.xxxx, r26.xyzw + mad r25.xyzw, cb4[r22.w + 66].xyzw, r25.zzzz, r26.xyzw + add r25.xyzw, r25.xyzw, cb4[r22.w + 67].xyzw + div r25.xyz, r25.xyzx, r25.wwww + ge r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ge r30.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r31.xy, -cb4[r21.y + 344].xyxx, cb4[r21.y + 344].zwzz + mad r25.xy, r25.xyxx, r31.xyxx, cb4[r21.y + 344].xyxx + mad r31.xy, r25.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r31.xy, r31.xyxx + mad r25.xy, r25.xyxx, cb4[400].zwzz, -r31.xyxx + add r32.xyzw, r25.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r33.xyzw, r32.xxzz, r32.xxzz + add r31.zw, -r25.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r32.xz, r25.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r34.xy, r25.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r35.xy, r31.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r34.xy, -r34.xyxx, r34.xyxx, r32.ywyy + add r34.xy, r34.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r34.xy, r34.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r33.xz, r33.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r25.xy, r33.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r25.xyxx + mul r36.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r25.xy, -r32.xzxx, r32.xzxx, r31.zwzz + add r25.xy, r25.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r37.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r25.xy, r32.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r36.z, r37.x + mov r36.w, r25.x + mov r35.z, r34.x + mov r35.w, r33.x + add r32.xyzw, r35.zwxz, r36.zwxz + mov r37.z, r36.y + mov r37.w, r25.y + mov r34.z, r35.y + mov r34.w, r33.z + add r25.xyw, r34.zyzw, r37.zyzw + div r33.xyz, r35.xzwx, r32.zwyz + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyz, r33.yxzy, cb4[400].xxxx + div r34.xyz, r34.zywz, r25.xywx + add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r34.xyz, r34.xyzx, cb4[400].yyyy + mov r33.w, r34.x + mad r35.xyzw, r31.xyxy, cb4[400].xyxy, r33.ywxw + mad r31.zw, r31.xxxy, cb4[400].xxxy, r33.zzzw + mov r34.w, r33.y + mov r33.yw, r34.yyyz + mad r36.xyzw, r31.xyxy, cb4[400].xyxy, r33.xyzy + mad r34.xyzw, r31.xyxy, cb4[400].xyxy, r34.wywz + mad r33.xyzw, r31.xyxy, cb4[400].xyxy, r33.xwzw + mul r37.xyzw, r25.xxxy, r32.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r22.w, r35.xyxx, t6.xxxx, s4, r25.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r35.zwzz, t6.xxxx, s4, r25.z + mul r23.w, r23.w, r37.y + mad r22.w, r37.x, r22.w, r23.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r31.zwzz, t6.xxxx, s4, r25.z + mad r22.w, r37.z, r23.w, r22.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r34.xyxx, t6.xxxx, s4, r25.z + mad r22.w, r37.w, r23.w, r22.w + mul r31.xyzw, r25.yyww, r32.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r36.xyxx, t6.xxxx, s4, r25.z + mad r22.w, r31.x, r23.w, r22.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r36.zwzz, t6.xxxx, s4, r25.z + mad r22.w, r31.y, r23.w, r22.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r34.zwzz, t6.xxxx, s4, r25.z + mad r22.w, r31.z, r23.w, r22.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r33.xyxx, t6.xxxx, s4, r25.z + mad r22.w, r31.w, r23.w, r22.w + ige r23.w, r21.y, l(0) + or r26.xyz, r26.xyzx, r30.xyzx + or r25.x, r26.y, r26.x + or r25.x, r26.z, r25.x + and r25.y, r25.z, l(0x7fffffff) + ult r25.y, l(0x7f800000), r25.y + or r25.x, r25.y, r25.x + mul r25.y, r25.w, r32.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r33.zwzz, t6.xxxx, s4, r25.z + mad r22.w, r25.y, r25.z, r22.w + add r22.w, r22.w, l(-1.000000) + mad r21.y, cb4[r21.y + 288].w, r22.w, l(1.000000) + movc r21.y, r25.x, l(1.000000), r21.y + movc r21.y, r23.w, r21.y, l(1.000000) + else + mov r21.y, l(1.000000) + endif + if_nz r24.z + dp3 r22.w, r15.xyzx, r28.xyzx + mul_sat r23.w, r21.w, cb3[r16.w + 6].z + mad r23.w, r23.w, l(0.500000), r14.y + min r23.w, r23.w, l(1.000000) + div r23.w, r14.y, r23.w + mad r25.xyz, r15.xyzx, r22.wwww, -r28.xyzx + dp3 r24.z, r29.xyzx, r25.xyzx + mul r22.w, r22.w, r22.w + mad r22.w, cb3[r16.w + 6].z, cb3[r16.w + 6].z, -r22.w + div_sat r22.w, r24.z, r22.w + mad r25.xyz, r28.xyzx, r22.wwww, r29.xyzx + dp3 r22.w, r25.xyzx, r25.xyzx + rsq r22.w, r22.w + mul r27.xyz, r22.wwww, r25.xyzx + else + mov r23.w, l(1.000000) + endif + if_nz r20.w + mul_sat r20.w, r21.w, cb3[r20.z + 6].y + mad r25.xyz, r9.xyzx, r5.wwww, r27.xyzx + dp3 r21.w, r25.xyzx, r25.xyzx + max r21.w, r21.w, l(0.0000610351562) + rsq r21.w, r21.w + mul r25.xyz, r21.wwww, r25.xyzx + dp3_sat r21.w, r4.xyzx, r25.xyzx + dp3_sat r22.w, r10.xyzx, r25.xyzx + lt r24.z, l(0.000000), r20.w + mul r20.w, r20.w, r20.w + mad r25.x, r22.w, l(3.600000), l(0.400000) + div r20.w, r20.w, r25.x + mad r20.w, r12.w, r12.w, r20.w + min r20.w, r20.w, l(1.000000) + movc r20.w, r24.z, r20.w, r14.y + mul r20.w, r20.w, r20.w + mad r24.z, r21.w, r20.w, -r21.w + mad r21.w, r24.z, r21.w, l(1.000000) + add r22.w, -r22.w, l(1.000000) + mul r24.z, r22.w, r22.w + mul r24.z, r24.z, r24.z + mul r25.x, r22.w, r24.z + if_nz r9.w + dp3 r25.y, r4.xyzx, r27.xyzx + mad r17.x, r25.y, l(0.500000), l(0.500000) + sample_l_indexable(texture2darray)(float,float,float,float) r25.yzw, r17.xyzx, t10.wxyz, s1, l(0.000000) + endif + movc r25.yzw, r9.wwww, r25.yyzw, r21.xxxx + mad r17.x, -r24.z, r22.w, l(1.000000) + mad r26.xyz, r11.xyzx, r17.xxxx, r25.xxxx + mul r17.x, r21.w, r21.w + div r17.x, r20.w, r17.x + mul r17.x, r23.w, r17.x + mad r21.w, -r12.x, r20.w, r12.x + mad r21.w, r21.w, r12.x, r20.w + sqrt r21.w, r21.w + mad r22.w, -r21.x, r20.w, r21.x + mad r20.w, r22.w, r21.x, r20.w + sqrt r20.w, r20.w + mul r20.w, r12.x, r20.w + mad r20.w, r21.x, r21.w, r20.w + add r20.w, r20.w, l(0.000100) + div r20.w, l(0.500000), r20.w + mul r17.x, r17.x, r20.w + mul r26.xyz, r17.xxxx, r26.xyzx + min r26.xyz, r26.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r27.xy, r21.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r17.x, r27.xyxx, t9.xyzw, s1, l(0.000000) + mul r17.x, r1.w, r17.x + mul r17.x, r7.w, r17.x + div r17.x, r17.x, r8.w + mul r27.xyz, r16.xyzx, r17.xxxx + div r27.xyz, r27.xyzx, r18.xyzx + add r26.xyz, r26.xyzx, r27.xyzx + mul r26.xyz, r26.xyzx, cb3[r20.z + 6].zzzz + max r26.xyz, r26.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r26.xyz, r26.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r25.xyz, r3.xyzx, r25.yzwy + mad r25.xyz, r26.xyzx, r21.xxxx, r25.xyzx + mul r26.xyz, r20.xxxx, cb3[r19.z + 6].xyzx + mul r21.xyw, r21.yyyy, r26.xyxz + mul r21.xyw, r19.xxxx, r21.xyxw + mul r21.xyw, r21.xyxw, r25.xyxz + else + mov r21.xyw, l(0,0,0,0) + endif + else + if_z r19.y + mad r17.x, cb3[r16.w + 6].y, l(0.500000), l(0.500000) + add r25.x, r17.x, -|cb3[r16.w + 6].x| + add r25.y, -r25.x, cb3[r16.w + 6].y + add r17.x, -|r25.x|, l(1.000000) + add r17.x, -|r25.y|, r17.x + max r17.x, r17.x, l(0.000488281250) + ge r19.x, cb3[r16.w + 6].x, l(0.000000) + movc r25.z, r19.x, r17.x, -r17.x + dp3 r17.x, r25.xyzx, r25.xyzx + rsq r17.x, r17.x + mul r25.xyz, r17.xxxx, r25.xyzx + add r26.xyz, -r6.xyzx, cb3[r24.x + 6].xyzx + dp3 r17.x, r26.xyzx, r26.xyzx + rsq r19.x, r17.x + mul r27.xyz, r19.xxxx, r26.xyzx + ftoi r19.x, cb3[r20.z + 6].w + mul r20.xzw, r25.xxyz, cb3[r16.w + 6].zzzz + mad r28.xyz, -r20.xzwx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + mad r20.xzw, r20.xxzw, l(0.500000, 0.000000, 0.500000, 0.500000), r26.xxyz + ftou r19.y, cb3[r19.z + 6].w + and r19.y, r19.y, l(1) + ieq r19.z, r19.y, l(0) + not r19.z, r19.z + lt r22.w, l(0.000000), cb3[r16.w + 6].z + and r19.z, r19.z, r22.w + dp3 r22.w, r28.xyzx, r28.xyzx + sqrt r22.w, r22.w + dp3 r23.w, r20.xzwx, r20.xzwx + sqrt r23.w, r23.w + dp3 r20.x, r28.xyzx, r20.xzwx + mad r20.x, r22.w, r23.w, r20.x + mad r20.x, r20.x, l(0.500000), l(1.000000) + div r20.x, l(1.000000, 1.000000, 1.000000, 1.000000), r20.x + movc r20.x, r19.z, r20.x, l(1.000000) + lt r20.z, cb3[r24.w + 6].w, l(0.000000) + if_nz r20.z + mul r20.z, cb3[r24.x + 6].w, cb3[r24.x + 6].w + mul r20.z, r17.x, r20.z + mad r20.z, -r20.z, r20.z, l(1.000000) + max r20.z, r20.z, l(0.000000) + add r17.x, r17.x, l(1.000000) + div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x + and r20.w, r19.z, l(0x3f800000) + add r22.w, -r17.x, r20.x + mad r17.x, r20.w, r22.w, r17.x + mul r20.z, r20.z, r20.z + mul r17.x, r17.x, r20.z + else + mul r28.xyz, r26.xyzx, cb3[r24.x + 6].wwww + dp3 r20.z, r28.xyzx, r28.xyzx + min r20.z, r20.z, l(1.000000) + add r20.z, -r20.z, l(1.000000) + log r20.z, r20.z + mul r20.z, r20.z, cb3[r24.w + 6].w + exp r20.z, r20.z + mul r17.x, r20.z, r20.x + endif + dp3 r20.x, r27.xyzx, -r25.xyzx + add r20.x, r20.x, -cb3[r16.w + 6].z + mul_sat r20.x, r20.x, cb3[r16.w + 6].w + mul r20.x, r20.x, r20.x + movc r20.x, r19.y, l(1.000000), r20.x + mul r17.x, r17.x, r20.x + not r19.z, r19.z + ige r20.x, r19.x, l(0) + and r19.z, r19.z, r20.x + if_nz r19.z + if_z r19.y + ishl r19.z, r19.x, l(2) + mul r20.xzw, r6.yyyy, cb6[r19.z + 33].xxyw + mad r20.xzw, cb6[r19.z + 32].xxyw, r6.xxxx, r20.xxzw + mad r20.xzw, cb6[r19.z + 34].xxyw, r6.zzzz, r20.xxzw + add r20.xzw, r20.xxzw, cb6[r19.z + 35].xxyw + div_sat r20.xz, r20.xxzx, r20.wwww + mad r20.xz, r20.xxzx, cb6[r19.x + 0].zzwz, cb6[r19.x + 0].xxyx + else + ishl r19.z, r19.x, l(2) + dp3 r25.x, -r26.xyzx, cb6[r19.z + 32].xyzx + dp3 r25.y, -r26.xyzx, cb6[r19.z + 33].xyzx + dp3 r25.z, -r26.xyzx, cb6[r19.z + 34].xyzx + lt r19.z, |r25.x|, |r25.y| + and r19.z, r19.z, l(1) + dp2 r20.w, |r25.xyxx|, icb[r19.z + 0].xyxx + lt r20.w, r20.w, |r25.z| + movc r19.z, r20.w, l(2), r19.z + dp3 r20.w, r25.xyzx, icb[r19.z + 0].xyzx + lt r20.w, r20.w, l(0.000000) + bfi r19.z, l(31), l(1), r19.z, r20.w + ushr r20.w, r19.z, l(1) + dp3 r20.w, r25.xyzx, icb[r20.w + 0].xyzx + div r22.w, l(0.000244140625), cb6[r19.x + 0].w + add r22.w, -r22.w, l(0.500000) + utof r23.w, r19.z + ult r24.z, r19.z, l(2) + and r24.z, r24.z, l(2) + dp2 r24.z, r25.xzxx, icb[r24.z + 0].xzxx + mul r24.z, r24.z, icb[r19.z + 4].z + div r24.z, r24.z, |r20.w| + mad r23.w, r24.z, r22.w, r23.w + add r23.w, r23.w, l(0.500000) + mul_sat r26.x, r23.w, l(0.166666672) + iadd r23.w, l(-1), icb[r19.z + 4].y + dp2 r23.w, r25.yzyy, icb[r23.w + 0].xyxx + mul r19.z, r23.w, icb[r19.z + 4].w + div r19.z, r19.z, |r20.w| + mad_sat r26.y, -r19.z, r22.w, l(0.500000) + mad r20.xz, r26.xxyx, cb6[r19.x + 0].zzwz, cb6[r19.x + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r19.x, r20.xzxx, t13.xyzw, s1, l(0.000000) + mul r17.x, r17.x, r19.x + endif + lt r17.x, l(0.000000), r17.x + if_nz r17.x + if_z r19.y + ftoi r17.x, cb3[r24.y + 6].x + else + add r19.xyz, r6.xyzx, -cb3[r24.x + 6].xyzx + lt r20.xzw, |r19.yyzz|, |r19.xxxy| + and r20.x, r20.z, r20.x + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + ushr r20.z, cb3[r16.w + 6].w, l(24) + ubfe r24.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r16.w + 6].wwww + movc r19.x, r19.x, r20.z, r24.x + and r16.w, l(255), cb3[r16.w + 6].w + movc r16.w, r19.y, r24.z, r16.w + ubfe r19.y, l(8), l(8), cb3[r24.y + 6].x + and r20.z, l(255), cb3[r24.y + 6].x + movc r19.y, r19.z, r19.y, r20.z + movc r16.w, r20.w, r16.w, r19.y + movc r16.w, r20.x, r19.x, r16.w + ilt r19.x, r16.w, l(80) + movc r17.x, r19.x, r16.w, l(-1) + endif + ishl r16.w, r17.x, l(2) + mad r19.xyz, r27.xyzx, cb4[r17.x + 288].xxxx, r6.xyzx + mul r20.x, l(5.000000), cb4[r17.x + 288].y + mad r19.xyz, r4.xyzx, r20.xxxx, r19.xyzx + mul r24.xyzw, r19.yyyy, cb4[r16.w + 65].xyzw + mad r24.xyzw, cb4[r16.w + 64].xyzw, r19.xxxx, r24.xyzw + mad r24.xyzw, cb4[r16.w + 66].xyzw, r19.zzzz, r24.xyzw + add r24.xyzw, r24.xyzw, cb4[r16.w + 67].xyzw + div r19.xyz, r24.xyzx, r24.wwww + ge r20.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxyz + ge r24.xyz, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r25.xy, -cb4[r17.x + 344].xyxx, cb4[r17.x + 344].zwzz + mad r19.xy, r19.xyxx, r25.xyxx, cb4[r17.x + 344].xyxx + mad r25.xy, r19.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r25.xy, r25.xyxx + mad r19.xy, r19.xyxx, cb4[400].zwzz, -r25.xyxx + add r26.xyzw, r19.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r25.zw, -r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r26.xz, r19.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r19.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r19.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r19.xyxx + mul r30.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r19.xy, -r26.xzxx, r26.xzxx, r25.zwzz + add r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r31.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r19.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r30.z, r31.x + mov r30.w, r19.x + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r19.y + mov r28.z, r29.y + mov r28.w, r27.z + add r27.xyz, r28.zywz, r31.zywz + div r29.xyz, r29.xzwx, r26.zwyz + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.yxzy, cb4[400].xxxx + div r28.xyz, r28.zywz, r27.xyzx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb4[400].yyyy + mov r29.w, r28.x + mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r29.ywxw + mad r19.xy, r25.xyxx, cb4[400].xyxx, r29.zwzz + mov r28.w, r29.y + mov r29.yw, r28.yyyz + mad r31.xyzw, r25.xyxy, cb4[400].xyxy, r29.xyzy + mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz + mad r25.xyzw, r25.xyxy, cb4[400].xyxy, r29.xwzw + mul r29.xyzw, r26.zwyz, r27.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r30.xyxx, t6.xxxx, s4, r19.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r22.w, r30.zwzz, t6.xxxx, s4, r19.z + mul r22.w, r22.w, r29.y + mad r16.w, r29.x, r16.w, r22.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r19.xyxx, t6.xxxx, s4, r19.z + mad r16.w, r29.z, r19.x, r16.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r28.xyxx, t6.xxxx, s4, r19.z + mad r16.w, r29.w, r19.x, r16.w + mul r29.xyzw, r26.xyzw, r27.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r31.xyxx, t6.xxxx, s4, r19.z + mad r16.w, r29.x, r19.x, r16.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r31.zwzz, t6.xxxx, s4, r19.z + mad r16.w, r29.y, r19.x, r16.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r28.zwzz, t6.xxxx, s4, r19.z + mad r16.w, r29.z, r19.x, r16.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r25.xyxx, t6.xxxx, s4, r19.z + mad r16.w, r29.w, r19.x, r16.w + ige r19.x, r17.x, l(0) + or r20.xzw, r20.xxzw, r24.xxyz + or r19.y, r20.z, r20.x + or r19.y, r20.w, r19.y + and r20.x, r19.z, l(0x7fffffff) + ult r20.x, l(0x7f800000), r20.x + or r19.y, r19.y, r20.x + mul r20.x, r26.y, r27.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r25.zwzz, t6.xxxx, s4, r19.z + mad r16.w, r20.x, r19.z, r16.w + add r16.w, r16.w, l(-1.000000) + mad r16.w, cb4[r17.x + 288].w, r16.w, l(1.000000) + movc r16.w, r19.y, l(1.000000), r16.w + movc r16.w, r19.x, r16.w, l(1.000000) + else + mov r16.w, l(1.000000) + endif + else + mov r16.w, l(1.000000) + endif + mul r12.z, r12.z, r16.w + mov r21.xyw, l(0,0,0,0) + endif + add r23.xyz, r21.xywx, r23.xyzx + mov r15.w, r18.w + endloop + mov r3.w, r12.z + add r22.xyz, r22.xyzx, r23.xyzx + iadd r10.w, r10.w, l(1) +endloop +mad r9.xyz, r22.xyzx, r3.wwww, r14.xzwx +ne r1.xw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy +if_nz r1.x + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + add r1.x, r0.z, r13.x + mad r2.z, r12.w, l(-16.000000), l(-1.000000) + exp r2.z, r2.z + log r1.x, |r1.x| + mul r1.x, r1.x, r2.z + exp r1.x, r1.x + add r1.x, r0.z, r1.x + add r1.x, r1.x, l(-1.000000) + mov_sat r12.xyz, r1.xxxx + mad r14.xyz, r3.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r3.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r3.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r12.xyz, r1.yyyy + mov r14.xyz, r1.yyyy +endif +if_nz r9.w + mov r17.w, l(0.500000) + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r17.ywzy, t11.xyzw, s1, l(0.000000) +endif +movc r16.xyz, r9.wwww, r16.xyzx, l(1.000000,1.000000,1.000000,0) +mad r17.xyz, r4.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r6.xyzx +round_z r0.z, cb0[212].x +mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx +dp2 r0.z, r1.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r17.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r17.xyzx +mad r18.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r18.xyz, r17.xzyx, -r18.xyzx +max r0.z, |r18.y|, |r18.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.x, |r18.z|, l(-208.000000) +mul_sat r1.x, r1.x, l(0.031250) +max r0.z, r0.z, r1.x +ne r1.x, l(0.000000), cb0[210].w +lt r1.y, r0.z, l(1.000000) +and r1.x, r1.y, r1.x +if_nz r1.x + mad r18.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r18.xyz, r17.xzyx, -r18.xyzx + max r1.x, |r18.y|, |r18.x| + add r1.x, r1.x, l(-29.000000) + add r1.y, |r18.z|, l(-13.000000) + mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + max r1.x, r1.y, r1.x + lt r1.y, r1.x, l(1.000000) + if_nz r1.y + mad r18.xyz, r17.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r18.xyzx, cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r19.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r18.xyzx, t17.yzwx, s2, l(0.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.z, l(0.500000), cb0[211].y + mad r3.w, -cb0[211].y, l(0.500000), l(1.000000) + max r2.z, r2.z, r18.y + min r2.z, r3.w, r2.z + mul r18.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t18.xyzw, s1, l(0.000000) + mad r2.z, r20.w, r1.y, r0.z + add r21.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t18.xyzw, s1, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r19.yyyy, r21.xyzx + mov r21.w, r19.y + mul r21.xyzw, r1.yyyy, r21.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r19.xxxx, r18.xyzx + mov r18.w, r19.x + mul r18.xyzw, r1.yyyy, r18.xyzw + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r19.wwww, r20.xyzx + mul r19.xyzw, r1.yyyy, r19.xyzw + else + mov r21.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r19.xyzw, l(0,0,0,0) + mov r2.z, r0.z + endif + mad r20.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r20.xyz, r17.xzyx, -r20.xyzx + max r1.y, |r20.y|, |r20.x| + add r1.y, r1.y, l(-116.000000) + mul_sat r1.y, r1.y, l(0.125000) + add r3.w, |r20.z|, l(-52.000000) + mul_sat r3.w, r3.w, l(0.125000) + max r1.y, r1.y, r3.w + lt r3.w, r1.y, l(1.000000) + if_nz r3.w + mad r20.xyz, r17.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r22.xyz, r20.xyzx, cb0[211].xyzx + round_ni r22.xyz, r22.xyzx + mad r20.xyz, r20.xyzx, cb0[211].xyzx, -r22.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r20.xyzx, t19.yzwx, s2, l(0.000000) + add r3.w, -r1.y, l(1.000000) + mul r1.x, r1.x, r3.w + mul r3.w, l(0.500000), cb0[211].y + mad r5.w, -cb0[211].y, l(0.500000), l(1.000000) + max r3.w, r3.w, r20.y + min r3.w, r5.w, r3.w + mul r20.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyzw, r20.xwzx, t20.xyzw, s1, l(0.000000) + mad r2.z, r23.w, r1.x, r2.z + add r24.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t20.xyzw, s1, l(0.000000) + mad r24.xyz, r24.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r24.xyz, r22.yyyy, r24.xyzx + mov r24.w, r22.y + mad r21.xyzw, r24.xyzw, r1.xxxx, r21.xyzw + add r20.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t20.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r22.xxxx, r20.xyzx + mov r20.w, r22.x + mad r18.xyzw, r20.xyzw, r1.xxxx, r18.xyzw + mad r20.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r20.xyzx + mad r19.xyzw, r22.xyzw, r1.xxxx, r19.xyzw + endif + lt r1.x, l(0.000000), r1.y + if_nz r1.x + mad r17.xyz, r17.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r17.xyzx, cb0[211].xyzx + mul r22.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r20.xyzx + mad r20.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r17.xyz, r22.xyzx, r17.xyzx + min r17.xyz, r20.xyzx, r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r23.xyw, r17.xyzx, t21.yzwx, s2, l(0.000000) + add r1.x, -r0.z, l(1.000000) + mul r1.x, r1.x, r1.y + max r1.y, r22.y, r17.y + min r1.y, r20.y, r1.y + mul r17.w, r1.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t22.xyzw, s1, l(0.000000) + add r22.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t22.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r23.yyyy, r22.xyzx + mov r22.w, r23.y + mad r21.xyzw, r22.xyzw, r1.xxxx, r21.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t22.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r23.xxxx, r17.xyzx + mov r17.w, r23.x + mad r18.xyzw, r17.xyzw, r1.xxxx, r18.xyzw + mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r23.wwww, r17.xyzx + mad r19.xyzw, r23.xyzw, r1.xxxx, r19.xyzw + mad r2.z, r20.w, r1.x, r2.z + endif + mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) + add r17.x, -r0.z, r1.x + add r0.z, r0.z, r1.x + mul r17.y, r0.z, l(0.500000) +else + mov r21.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r19.xyzw, l(0,0,0,0) + mov r17.xy, l(0,1.000000,0,0) +endif +mul r20.xyzw, r17.yxyy, cb0[213].ywzx +mad r20.y, r20.y, l(0.500000), r20.x +mul r1.xy, r17.yxyy, cb0[213].wyww +mad r20.x, r1.y, l(0.375000), r1.x +add r19.xyzw, r19.xyzw, r20.wyzx +mul r20.xyzw, r17.yxyy, cb0[214].ywzx +mad r20.y, r20.y, l(0.500000), r20.x +mul r1.xy, r17.yxyy, cb0[214].wyww +mad r20.x, r1.y, l(0.375000), r1.x +add r18.xyzw, r18.xyzw, r20.wyzx +mul r20.xyzw, r17.yxyy, cb0[215].ywzx +mad r20.y, r20.y, l(0.500000), r20.x +mul r1.xy, r17.yxyy, cb0[215].wyww +mad r20.x, r1.y, l(0.375000), r1.x +add r17.xyzw, r20.wyzx, r21.xyzw +ge r1.xy, r5.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r1.y, r1.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r20.xyzw, r5.xyxx, t16.xyzw, s1, l(0.000000) + lt r21.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r20.xyzw| + or r1.xy, r21.zwzz, r21.xyxx + or r0.z, r1.y, r1.x + if_nz r0.z + dp3 r0.z, r20.yzwy, r20.yzwy + sqrt r0.z, r0.z + mov r1.x, l(1.000000) + mov r1.y, r0.z + mov r2.z, l(0) + loop + ge r3.w, l(4.600000), r1.y + breakc_nz r3.w + iadd r3.w, r2.z, l(1) + mul r5.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r1.xy, r5.xyxx + mov r2.z, r3.w + continue + endloop + mul r20.xyzw, r1.xxxx, r20.xyzw + dp3 r0.z, r20.yzwy, r20.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb7[3].x, cb7[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r1.x, r0.z, l(0.00390625000) + mov r1.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t15.xyzw, s1, l(0.000000) + mad r1.xy, r1.xyxx, cb7[2].xyxx, cb7[2].zwzz + mul r21.x, r1.x, l(3.54490781) + mul r21.yzw, r1.yyyy, r20.yyzw + mul r0.z, r20.x, l(0.406976730) + exp r0.z, r0.z + mul r20.xyzw, r0.zzzz, r21.xyzw + mov r21.xyzw, r20.xyzw + mov r0.z, l(0) + loop + uge r1.x, r0.z, r2.z + breakc_nz r1.x + mul r22.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r1.x, r22.xyzw, r21.xyzw + dp2 r1.y, r22.yxyy, r21.xyxx + dp2 r3.w, r22.zxzz, r21.xzxx + dp2 r5.x, r22.wxww, r21.xwxx + iadd r5.y, r0.z, l(1) + mov r21.xy, r1.xyxx + mov r21.z, r3.w + mov r21.w, r5.x + mov r0.z, r5.y + continue + endloop + mul r20.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r21.xyzw, r19.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r20.xyzw, r21.xyzw + dp2 r1.x, r20.yxyy, r21.xyxx + dp2 r1.y, r20.zxzz, r21.xzxx + dp2 r2.z, r20.wxww, r21.xwxx + mul r21.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r3.w, r20.xyzw, r21.xyzw + dp2 r5.x, r20.yxyy, r21.xyxx + dp2 r5.y, r20.zxzz, r21.xzxx + dp2 r5.w, r20.wxww, r21.xwxx + mul r21.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r7.w, r20.xyzw, r21.xyzw + dp2 r8.w, r20.yxyy, r21.xyxx + dp2 r9.w, r20.zxzz, r21.xzxx + dp2 r10.w, r20.wxww, r21.xwxx + mul r19.w, r0.z, l(0.886226952) + mul r19.x, r2.z, l(-1.02332675) + mul r19.yz, r1.xxyx, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r18.w, r3.w, l(0.886226952) + mul r18.xyz, r5.wxyw, l(-1.02332675, -1.02332675, 1.02332675, 0.000000) + mul r17.w, r7.w, l(0.886226952) + mul r17.x, r10.w, l(-1.02332675) + mul r17.y, r8.w, l(-1.02332675) + mul r17.z, r9.w, l(1.02332675) + endif +endif +mul r5.xyw, r16.xxxx, r19.xyxz +dp3 r0.z, r5.xywx, r4.xyzx +add r0.z, r19.w, r0.z +max r19.x, r0.z, l(0.000000) +mul r5.xyw, r16.yyyy, r18.xyxz +dp3 r0.z, r5.xywx, r4.xyzx +add r0.z, r18.w, r0.z +max r19.y, r0.z, l(0.000000) +mul r5.xyw, r16.zzzz, r17.xyxz +dp3 r0.z, r5.xywx, r4.xyzx +add r0.z, r17.w, r0.z +max r19.z, r0.z, l(0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.x, r12.w, l(0.001000) +log r1.x, r1.x +mad r1.x, -r1.x, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.x +mul r1.xy, r2.xyxx, cb1[0].wwww +round_ni r1.xy, r1.xyxx +add r2.z, |r2.w|, -cb1[2].y +round_ni r2.z, r2.z +add r3.w, l(-1.000000), cb1[1].x +max r5.x, r2.z, l(0.000000) +min r3.w, r3.w, r5.x +ge r2.z, r3.w, r2.z +mad r1.x, r1.y, cb1[0].x, r1.x +ftoi r1.x, r1.x +iadd r1.x, r1.x, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx +ftoi r1.y, r3.w +iadd r1.y, r1.y, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx +and r1.x, r1.y, r1.x +and r1.x, r1.x, r2.z +mul r5.xyw, r19.xyxz, cb0[111].xxxx +dp3 r1.y, r5.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r6.w, l(1.000000) +mov r4.w, l(1.000000) +mov r5.xyw, l(0,0,0,0) +mov r2.z, l(1.000000) +mov r3.w, r1.x +mov r7.w, l(0) +loop + lt r8.w, l(0.010000), r2.z + ine r9.w, r3.w, l(0) + and r9.w, r8.w, r9.w + if_nz r9.w + firstbit_lo r9.w, r3.w + ishl r10.w, l(1), r9.w + xor r3.w, r3.w, r10.w + ishl r9.w, r9.w, l(3) + dp4 r16.x, cb1[r9.w + 6].xyzw, r6.xyzw + dp4 r16.y, cb1[r9.w + 7].xyzw, r6.xyzw + dp4 r16.z, cb1[r9.w + 8].xyzw, r6.xyzw + ge r17.xyz, cb1[r9.w + 5].xyzx, |r16.xyzx| + and r10.w, r17.y, r17.x + and r10.w, r17.z, r10.w + if_nz r10.w + mul r10.w, l(0.100000), cb1[r9.w + 5].x + mul r17.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r17.xy, r17.xyxx, r17.xyxx + add r18.xyz, -|r16.xyzx|, cb1[r9.w + 5].xyzx + mul r18.xyz, r18.xyzx, cb1[r9.w + 9].xyzx + eq r11.w, l(1.000000), cb1[r9.w + 10].x + if_nz r11.w + dp3 r20.x, cb1[r9.w + 6].xyzx, r15.xyzx + dp3 r20.y, cb1[r9.w + 7].xyzx, r15.xyzx + dp3 r20.z, cb1[r9.w + 8].xyzx, r15.xyzx + add r21.xyz, -r16.xyzx, cb1[r9.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r16.xyzx, -cb1[r9.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r11.w, r21.y, r21.x + min r11.w, r21.z, r11.w + mad r16.xyz, r20.xyzx, r11.wwww, r16.xyzx + else + mov r16.xyz, r15.xyzx + endif + dp3 r11.w, r16.xyzx, r16.xyzx + rsq r11.w, r11.w + mul r16.xyz, r11.wwww, r16.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r11.w, r16.xyzx, r20.xyzx + div r16.xyz, r16.xyzx, r11.wwww + lt r11.w, r16.z, l(0.000000) + add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r16.zw, r16.zzzw, r20.xxxy + movc r16.xy, r11.wwww, r16.zwzz, r16.xyxx + dp4 r11.w, cb1[r9.w + 4].xyzw, r4.xyzw + max r11.w, r11.w, l(0.000000) + max r11.w, r11.w, l(0.000100) + min r12.w, r18.z, r18.y + min r12.w, r12.w, r18.x + add r13.x, r17.y, r17.x + mad r13.x, r17.z, r17.z, r13.x + mad r10.w, r10.w, r10.w, -r13.x + mul r10.w, r10.w, cb1[r9.w + 9].x + mul r10.w, r10.w, cb1[r9.w + 9].x + add r13.x, l(1.000000), -cb1[r9.w + 10].y + mul r10.w, r10.w, r13.x + mul r10.w, r10.w, l(100.000000) + mad_sat r10.w, r12.w, cb1[r9.w + 10].y, r10.w + mul r12.w, r10.w, cb1[r9.w + 10].w + mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww + mov r16.z, cb1[r9.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z + mul r16.xyz, r16.xyzx, cb1[r9.w + 9].wwww + div r13.x, r1.y, r11.w + min r13.x, |r13.x|, l(1.000000) + mad r13.x, r13.x, l(2.000000), r1.y + add r11.w, r11.w, l(2.000000) + div r11.w, r13.x, r11.w + add r11.w, r11.w, l(-1.000000) + mad r11.w, r11.w, cb0[112].w, l(1.000000) + mul r16.xyz, r11.wwww, r16.xyzx + mul r16.xyz, r12.wwww, r16.xyzx + mad r5.xyw, r16.xyxz, r2.zzzz, r5.xyxw + mad r9.w, -r10.w, cb1[r9.w + 10].w, l(1.000000) + mul r2.z, r2.z, r9.w + endif + mov r7.w, l(-1) + continue + else + mov r7.w, r8.w + break + endif + mov r7.w, r8.w +endloop +if_nz r7.w + dp3 r1.x, r15.xyzx, r15.xyzx + rsq r1.x, r1.x + mul r15.xyz, r1.xxxx, r15.xyzx + lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r17.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r16.xyz, -r16.xyzx, r17.xyzx + itof r16.xyz, r16.xyzx + dp3 r1.x, r15.xyzx, r16.xyzx + div r15.xyz, r15.xyzx, r1.xxxx + lt r1.x, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r16.xxxy + movc r15.xy, r1.xxxx, r15.zwzz, r15.xyxx + mov r4.w, l(1.000000) + dp4 r1.x, cb1[3].xyzw, r4.xyzw + max r1.x, r1.x, l(0.000000) + max r1.x, r1.x, l(0.000100) + mad r4.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r4.xy, r4.xyxx, cb1[1].wwww, cb1[2].wwww + mov r4.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r4.xyz, r4.xyzx, t5.xyzw, s3, r0.z + div r0.z, r1.y, r1.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r1.y + add r1.x, r1.x, l(2.000000) + div r0.z, r0.z, r1.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r4.xyz, r0.zzzz, r4.xyzx + mad r5.xyw, r4.xyxz, r2.zzzz, r5.xyxw +endif +mul r4.xyz, r5.xywx, cb0[112].zzzz +mul r4.xyz, r4.xyzx, cb0[111].yyyy +if_nz r1.w + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r1.xyw, v1.xyxx, t2.xywz, s1, cb0[108].x + add r2.z, -r0.z, l(1.000000) + mul r5.xyw, r2.zzzz, r4.xyxz + mad r4.xyz, r1.xywx, r0.zzzz, r5.xywx +endif +mul r1.xyw, r3.xyxz, r19.xyxz +mul r1.xyw, r1.xyxw, cb0[111].xxxx +add r0.z, -r1.z, l(1.000000) +div r0.z, r0.z, r1.z +mul r3.xyz, r0.zzzz, r11.xyzx +mad r3.xyz, r3.xyzx, r13.yzwy, r13.yzwy +mul r3.xyz, r3.xyzx, r4.xyzx +mul r3.xyz, r12.xyzx, r3.xyzx +mad r1.xyz, r1.xywx, r14.xyzx, r3.xyzx +add r1.xyz, r1.xyzx, r9.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r6.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r5.z, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.z, r0.z, l(-1.442695) +exp r2.z, r2.z +add r2.z, -r2.z, l(1.000000) +div r0.z, r2.z, r0.z +mad r2.z, r6.y, cb0[156].w, cb0[158].w +mul r2.z, r2.z, l(1.442695) +exp r2.z, r2.z +mul r0.z, r0.z, r2.z +mul r0.z, r0.z, -r1.w +mul r3.xyz, r0.zzzz, cb0[155].xyzx +mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r3.xyz, r3.xyzx +dp3 r0.z, -r10.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.z +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r4.x, r0.y, r0.w, r0.x + dp3 r0.x, -r10.xyzx, -r8.xyzx + add r2.z, r6.y, -cb0[44].y + lt r3.w, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.w + mul r0.x, r0.x, cb0[163].w + div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z + mul r4.z, r0.x, r3.w + mad r4.w, r4.z, r2.z, cb0[44].y + mad r2.z, -r4.z, r2.z, r2.z + mul r4.z, r2.z, cb0[159].z + max r4.z, r4.z, l(-127.000000) + mul r2.z, r2.z, cb0[162].x + max r2.z, r2.z, l(-127.000000) + add r5.x, r4.w, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.y, l(5.960464478E-08), |r4.z| + exp r5.w, -r4.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.z + mad r4.z, -r4.z, l(0.240226507), l(0.693147182) + movc r4.z, r5.y, r5.w, r4.z + add r4.w, r4.w, -cb0[162].z + mul r4.w, r4.w, cb0[162].x + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[162].y + lt r5.y, l(5.960464478E-08), |r2.z| + exp r5.w, -r2.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r2.z + mad r2.z, -r2.z, l(0.240226507), l(0.693147182) + movc r2.z, r5.y, r5.w, r2.z + mul r2.z, r2.z, r4.w + mad r2.z, r5.x, r4.z, r2.z + mad r0.x, -r0.x, r3.w, l(1.000000) + mul r0.x, r5.z, r0.x + mul r0.x, r0.x, r2.z + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r5.zzzz, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r4.y, r0.w, r4.x, r0.y + ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r2.xxxy + mul r2.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r2.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r2.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t14.xyzw, s1, l(0.000000) + add r0.y, |r2.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r2.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r2.xyzw, r0.yyyy, r2.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r2.xyz, r4.xyzx, r2.wwww, r2.xyzx + mul r0.x, r0.x, r2.w +else + add r0.y, r6.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r5.z, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r5.zzzz, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r2.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r3.xyzx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r3.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r2.xyzx + +// === Simplified Fog Modification (Anti-Banding) === +// Check if fog modification is enabled via cb13[12].y +lt r15.x, l(0.500000), cb13[12].y +if_nz r15.x + // r1.xyz = scene color, r4.xyz = transmittance, r0.xyz = fog inscatter + // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density + add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + + // Reduce fog inscatter intensity + mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + + // Modified fog blend: scene * boostedTrans + reducedInscatter + mad r0.xyz, r1.xyzx, r15.xyzx, r16.xyzx +else + // Original fog blend + mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +endif +// === End Fog Modification === +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r7.xyzx, r7.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r6.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t27.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..51b72d1d20 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0_original_backup.asm @@ -0,0 +1,1576 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 16:53:39 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[15], dynamicIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_constantbuffer CB7[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2darray (float,float,float,float) t10 +dcl_resource_texture2darray (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_resource_texture3d (float,float,float,float) t27 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 38 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t24.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t25.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t26.xyzw +mul r1.w, r1.w, l(3.000000) +round_ne r1.w, r1.w +mul r2.w, r2.w, l(3.000000) +round_ne r2.w, r2.w +mad r1.w, r1.w, l(4.000000), r2.w +ftoi r1.w, r1.w +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r2.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r4.y, -r2.w, l(1.000000) +lt r2.w, r4.y, l(0.000000) +ge r5.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r5.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r5.xy, r5.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r5.xy, r5.xyxx, r5.zwzz +movc r4.xz, r2.wwww, r5.xxyx, r2.xxyx +dp3 r2.x, r4.xyzx, r4.xyzx +rsq r2.x, r2.x +mul r4.xyz, r2.xxxx, r4.xyzx +utof r2.xy, r0.xyxx +mul r5.xy, v0.xyxx, cb0[82].zwzz +mad r5.zw, r5.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r6.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r6.xy, r6.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r2.w, r6.xyxx, t1.yzwx, s0, l(0.000000) +mul r6.xyzw, -r5.wwww, cb0[25].xyzw +mad r6.xyzw, cb0[24].xyzw, r5.zzzz, r6.xyzw +mad r6.xyzw, cb0[26].xyzw, r2.wwww, r6.xyzw +add r6.xyzw, r6.xyzw, cb0[27].xyzw +div r6.xyz, r6.xyzx, r6.wwww +mul r2.w, r6.y, cb0[1].z +mad r2.w, cb0[0].z, r6.x, r2.w +mad r2.w, cb0[2].z, r6.z, r2.w +add r2.w, r2.w, cb0[3].z +eq r5.z, l(0.000000), cb0[86].w +add r7.xyz, -r6.xyzx, cb0[44].xyzx +mov r8.x, cb0[0].z +mov r8.y, cb0[1].z +mov r8.z, cb0[2].z +movc r9.xyz, r5.zzzz, r7.xyzx, r8.xyzx +dp3 r5.z, r9.xyzx, r9.xyzx +max r5.w, r5.z, l(9.999999939E-09) +rsq r5.w, r5.w +mul r10.xyz, r5.wwww, r9.xyzx +mul r5.z, r5.w, r5.z +lt r7.w, l(0.000488281250), cb0[234].x +if_nz r7.w + sample_b_indexable(texture2d)(float,float,float,float) r11.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x +else + mov r11.xy, l(1.000000,1.000000,0,0) +endif +min r8.w, r11.y, r11.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r9.w, r11.y, l(-1.000000) +mad r12.x, r1.z, r9.w, l(1.000000) +add r12.y, -r1.z, l(1.000000) +movc r11.yz, r7.wwww, r12.xxyx, l(0,1.000000,1.000000,0) +min r1.z, r2.z, r11.y +add r7.w, -r1.z, r2.z +mad r1.z, r8.w, r7.w, r1.z +add r2.z, -r1.z, r2.z +mad r12.w, r11.x, r2.z, r1.z +add r1.z, -r11.z, l(1.000000) +mad r1.z, r8.w, r1.z, r11.z +add r2.z, -r1.z, l(1.000000) +mad r1.z, r11.x, r2.z, r1.z +mul r11.xyz, r1.zzzz, r3.xyzx +mul r13.xyz, r1.xxxx, r11.xyzx +mad r3.xyz, r3.xyzx, r1.zzzz, -r13.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r11.xyz, r11.xyzx, r1.xxxx, r1.zzzz +dp3 r1.x, r4.xyzx, r10.xyzx +max r13.x, r1.x, l(0.000000) +mul r14.y, r12.w, r12.w +mul r15.x, r13.x, r13.x +mul r15.z, r13.x, r15.x +mul r1.x, r14.y, r14.y +mul r14.z, r14.y, r1.x +mov r13.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r16.x, l(3.327070, 1.000000, 0.000000, 0.000000), r13.xyxx +dp2 r16.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r13.xzxx +mov r14.x, l(1.000000) +dp2 r1.z, r16.xyxx, r14.xyxx +mov r15.yw, l(0,9.044010,0,1.000000) +dp3 r16.x, l(3.596850, -1.367720, 1.000000, 0.000000), r15.xzwx +dp3 r16.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r15.xyzx +mov r17.x, l(5.565890) +mov r17.yz, r15.xxzx +dp3 r16.z, l(1.000000, 19.788601, -20.212299, 0.000000), r17.xyzx +dp3 r2.z, r16.xyzx, r14.xyzx +div r1.z, r1.z, r2.z +dp2 r16.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r13.xwxx +mov r15.x, l(1.296780) +mov r15.y, r13.x +dp2 r16.y, l(1.000000, -0.755907, 0.000000, 0.000000), r15.xyxx +dp2 r2.z, r16.xyxx, r14.xyxx +dp3 r16.x, l(2.923380, 59.418800, 1.000000, 0.000000), r15.yzwy +mov r15.xw, l(20.322500,0,0,121.563004) +dp3 r16.y, l(1.000000, -27.030199, 222.591995, 0.000000), r15.xyzx +dp3 r16.z, l(626.130005, 316.627014, 1.000000, 0.000000), r15.yzwy +dp3 r7.w, r16.xyzx, r14.xyzx +div r2.z, r2.z, r7.w +mad r13.yzw, r11.xxyz, r1.zzzz, r2.zzzz +add r1.z, r1.z, r2.z +ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t7.xzyw +lt r0.z, l(0.001000), r14.x +if_nz r0.z + dp3 r0.z, -r10.xyzx, r4.xyzx + add r0.z, r0.z, r0.z + mad r15.xyz, r4.xyzx, -r0.zzzz, -r10.xyzx + dp3 r0.z, -cb3[0].xyzx, r15.xyzx + mad r16.xyz, cb3[0].xyzx, r0.zzzz, r15.xyzx + lt r0.z, r0.z, cb3[4].z + dp3 r2.z, r16.xyzx, r16.xyzx + max r2.z, r2.z, l(0.0000610351562) + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + mul r16.xyz, r16.xyzx, cb3[4].yyyy + mad r16.xyz, -cb3[0].xyzx, cb3[4].zzzz, r16.xyzx + dp3 r2.z, r16.xyzx, r16.xyzx + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + movc r15.xyz, r0.zzzz, r16.xyzx, r15.xyzx + mad r16.xyz, r9.xyzx, r5.wwww, r15.xyzx + dp3 r0.z, r16.xyzx, r16.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r16.xyz, r0.zzzz, r16.xyzx + dp3 r0.z, r15.xyzx, r4.xyzx + mov_sat r12.y, r0.z + dp3_sat r2.z, r4.xyzx, r16.xyzx + min r12.z, r13.x, l(1.000000) + mad r7.w, r2.z, r1.x, -r2.z + mad r2.z, r7.w, r2.z, l(1.000000) + dp3_sat r7.w, r10.xyzx, r16.xyzx + add r7.w, -r7.w, l(1.000000) + mul r8.w, r7.w, r7.w + mul r8.w, r8.w, r8.w + mul r9.w, r7.w, r8.w + add r10.w, -r12.w, l(1.000000) + mad r11.w, -r10.w, l(0.383026), l(-0.0761947036) + mad r11.w, r10.w, r11.w, l(1.049970) + mad r10.w, r10.w, r11.w, l(0.409255) + min r10.w, r10.w, l(0.999000) + add r11.w, -r10.w, l(1.000000) + add r15.xyz, -r11.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r11.xyzx + ult r14.w, l(0), r1.w + uge r15.w, l(15), r1.w + and r14.w, r14.w, r15.w + if_nz r14.w + iadd r15.w, r1.w, l(-1) + umin r15.w, r15.w, l(14) + mad r16.x, r0.z, l(0.500000), l(0.500000) + mul r16.y, r3.w, cb5[r15.w + 0].w + utof r16.z, r15.w + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t10.xyzw, s1, l(0.000000) + endif + movc r16.xyz, r14.wwww, r16.xyzx, r12.yyyy + mad r0.z, -r8.w, r7.w, l(1.000000) + mad r17.xyz, r11.xyzx, r0.zzzz, r9.wwww + mul r0.z, r2.z, r2.z + div r0.z, r1.x, r0.z + mad r18.xy, -r12.zyzz, r1.xxxx, r12.zyzz + mad r18.xy, r18.xyxx, r12.zyzz, r1.xxxx + sqrt r18.xy, r18.xyxx + mul r18.xy, r12.yzyy, r18.xyxx + add r1.x, r18.y, r18.x + add r1.x, r1.x, l(0.000100) + div r1.x, l(0.500000), r1.x + mul r0.z, r0.z, r1.x + mul r17.xyz, r0.zzzz, r17.xyzx + min r17.xyz, r17.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r18.xyzw, r12.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r18.xyxx, t9.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r1.x, r18.zwzz, t9.xyzw, s1, l(0.000000) + mul r0.z, r0.z, r1.x + mul r0.z, r10.w, r0.z + div r0.z, r0.z, r11.w + mul r18.xyz, r15.xyzx, r15.xyzx + mul r18.xyz, r0.zzzz, r18.xyzx + mad r15.xyz, -r15.xyzx, r11.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r15.xyz, r18.xyzx, r15.xyzx + add r15.xyz, r15.xyzx, r17.xyzx + mul r15.xyz, r15.xyzx, cb3[4].xxxx + max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r15.xyz, r15.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r16.xyz, r3.xyzx, r16.xyzx + mad r15.xyz, r15.xyzx, r12.yyyy, r16.xyzx + mul r15.xyz, r15.xyzx, cb3[1].xyzx + mov r14.z, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r16.xyz, r14.xzxx, t8.xyzw, s1, cb0[108].x + add r0.z, -r14.x, l(1.000000) + mad r14.xzw, r15.xxyz, r16.xxyz, -r15.xxyz + mad r14.xzw, r0.zzzz, r14.xxzw, r15.xxyz + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r5.xyxx, t12.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r14.xzw, r0.zzzz, r14.xxzw +else + mov r14.xzw, l(0,0,0,0) +endif +mul r12.yz, r2.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r12.yz, r12.yyzy +mad r0.z, r12.z, cb2[1].y, r12.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r1.x, -cb0[85].y, cb2[2].w, |r2.w| +round_ni r1.x, r1.x +add r2.z, l(-1.000000), cb2[1].w +max r7.w, r1.x, l(0.000000) +min r2.z, r2.z, r7.w +mul r7.w, r2.z, l(8.000000) +ftoi r7.w, r7.w +ge r1.x, r2.z, r1.x +iadd r2.z, r7.w, cb0[110].y +dp3 r7.w, -r10.xyzx, r4.xyzx +add r7.w, r7.w, r7.w +mad r15.xyz, r4.xyzx, -r7.wwww, -r10.xyzx +min r12.x, r13.x, l(1.000000) +add r7.w, -r12.w, l(1.000000) +mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) +mad r8.w, r7.w, r8.w, l(1.049970) +mad r7.w, r7.w, r8.w, l(0.409255) +min r7.w, r7.w, l(0.999000) +add r8.w, -r7.w, l(1.000000) +add r16.xyz, -r11.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r11.xyzx +ult r9.w, l(0), r1.w +uge r10.w, l(15), r1.w +and r9.w, r9.w, r10.w +iadd r1.w, r1.w, l(-1) +umin r1.w, r1.w, l(14) +mul r17.y, r3.w, cb5[r1.w + 0].w +utof r17.z, r1.w +mad r12.yz, r12.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r1.w, r12.yzyy, t9.yzwx, s1, l(0.000000) +mad r18.xyz, -r16.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r16.xyz, r16.xyzx, r16.xyzx +mov r19.w, l(1.000000) +mov r20.y, l(1.000000) +mov r21.z, r12.w +mov r22.xyz, l(0,0,0,0) +mov r3.w, l(1.000000) +mov r10.w, l(0) +loop + ilt r11.w, l(7), r10.w + breakc_nz r11.w + iadd r11.w, r0.z, r10.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx + iadd r12.y, r2.z, r10.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.y, r12.y, l(0), t0.xxxx + and r11.w, r11.w, r12.y + and r11.w, r1.x, r11.w + ishl r12.y, r10.w, l(5) + mov r23.xyz, l(0,0,0,0) + mov r12.z, r3.w + mov r15.w, r11.w + loop + breakc_z r15.w + firstbit_lo r16.w, r15.w + ishl r18.w, l(1), r16.w + xor r18.w, r15.w, r18.w + iadd r16.w, r12.y, r16.w + bfi r24.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 3, 5, 6) + bfi r20.z, l(29), l(3), r16.w, l(7) + ftou r20.w, cb3[r24.z + 6].w + ieq r20.w, r20.w, l(1) + if_nz r20.w + add r19.xyz, r6.xyzx, -cb3[r24.x + 6].xyzx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.z + 6].xzyx + and r26.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.w + 6].yxzy + ushr r27.xyz, cb3[r24.z + 6].xzyx, l(16, 16, 16, 0) + ushr r28.xyz, cb3[r24.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyz, r27.xyzx + f16tof32 r28.xyw, r28.yxyz + mov r29.xz, r25.xxzx + mov r29.yw, r27.xxxz + dp4 r20.w, r19.xyzw, r29.xyzw + mov r27.x, r25.y + mov r27.z, r26.y + mov r27.w, r28.x + dp4 r21.w, r19.xyzw, r27.xyzw + mov r28.xz, r26.xxzx + dp4 r19.x, r19.xyzw, r28.xyzw + max r19.y, |r20.w|, |r21.w| + max r19.x, |r19.x|, r19.y + mad r19.y, cb3[r20.z + 6].x, l(0.500000), l(0.500000) + add r19.x, -r19.y, r19.x + mad r19.y, -cb3[r20.z + 6].x, l(0.500000), l(0.500000) + div_sat r19.x, r19.x, r19.y + add r19.x, -r19.x, l(1.000000) + mul r19.x, r19.x, r19.x + else + mov r19.x, l(1.000000) + endif + lt r19.y, l(0.500000), cb3[r24.y + 6].z + lt r19.z, r19.x, l(0.001000) + or r19.z, r19.y, r19.z + if_nz r19.z + mov r15.w, r18.w + continue + endif + ishl r19.z, r16.w, l(3) + bfi r16.w, l(29), l(3), r16.w, l(2) + lt r20.w, cb3[r19.z + 6].w, l(1.500000) + if_nz r20.w + mad r20.w, cb3[r16.w + 6].y, l(0.500000), l(0.500000) + add r25.x, r20.w, -|cb3[r16.w + 6].x| + add r25.y, -r25.x, cb3[r16.w + 6].y + add r20.w, -|r25.x|, l(1.000000) + add r20.w, -|r25.y|, r20.w + max r20.w, r20.w, l(0.000488281250) + ge r21.w, cb3[r16.w + 6].x, l(0.000000) + movc r25.z, r21.w, r20.w, -r20.w + dp3 r20.w, r25.xyzx, r25.xyzx + rsq r20.w, r20.w + mul r25.xyz, r20.wwww, r25.xyzx + add r26.xyz, -r6.xyzx, cb3[r24.x + 6].xyzx + dp3 r20.w, r26.xyzx, r26.xyzx + rsq r21.w, r20.w + mul r27.xyz, r21.wwww, r26.xyzx + ftoi r22.w, cb3[r20.z + 6].w + mul r28.xyz, r25.xyzx, cb3[r16.w + 6].zzzz + mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + mad r30.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + ftou r23.w, cb3[r19.z + 6].w + and r23.w, r23.w, l(1) + ieq r24.z, r23.w, l(0) + not r24.z, r24.z + lt r25.w, l(0.000000), cb3[r16.w + 6].z + and r24.z, r24.z, r25.w + dp3 r25.w, r29.xyzx, r29.xyzx + sqrt r25.w, r25.w + dp3 r26.w, r30.xyzx, r30.xyzx + sqrt r26.w, r26.w + dp3 r27.w, r4.xyzx, r29.xyzx + div r27.w, r27.w, r25.w + dp3 r28.w, r4.xyzx, r30.xyzx + div r28.w, r28.w, r26.w + add r27.w, r27.w, r28.w + mul_sat r31.x, r27.w, l(0.500000) + dp3 r27.w, r29.xyzx, r30.xyzx + mad r25.w, r25.w, r26.w, r27.w + mad r25.w, r25.w, l(0.500000), l(1.000000) + div r31.y, l(1.000000, 1.000000, 1.000000, 1.000000), r25.w + dp3_sat r20.x, r4.xyzx, r27.xyzx + movc r21.xy, r24.zzzz, r31.xyxx, r20.xyxx + lt r20.x, cb3[r24.w + 6].w, l(0.000000) + if_nz r20.x + mul r20.x, cb3[r24.x + 6].w, cb3[r24.x + 6].w + mul r20.x, r20.x, r20.w + mad r20.x, -r20.x, r20.x, l(1.000000) + max r20.x, r20.x, l(0.000000) + add r20.w, r20.w, l(1.000000) + div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w + and r25.w, r24.z, l(0x3f800000) + add r26.w, -r20.w, r21.y + mad r20.w, r25.w, r26.w, r20.w + mul r20.x, r20.x, r20.x + mul r20.x, r20.x, r20.w + else + mul r30.xyz, r26.xyzx, cb3[r24.x + 6].wwww + dp3 r20.w, r30.xyzx, r30.xyzx + min r20.w, r20.w, l(1.000000) + add r20.w, -r20.w, l(1.000000) + log r20.w, r20.w + mul r20.w, r20.w, cb3[r24.w + 6].w + exp r20.w, r20.w + mul r20.x, r20.w, r21.y + endif + dp3 r20.w, r27.xyzx, -r25.xyzx + add r20.w, r20.w, -cb3[r16.w + 6].z + mul_sat r20.w, r20.w, cb3[r16.w + 6].w + mul r20.w, r20.w, r20.w + movc r20.w, r23.w, l(1.000000), r20.w + mul r20.x, r20.w, r20.x + not r20.w, r24.z + ige r21.y, r22.w, l(0) + and r20.w, r20.w, r21.y + if_nz r20.w + if_z r23.w + ishl r20.w, r22.w, l(2) + mul r25.xyz, r6.yyyy, cb6[r20.w + 33].xywx + mad r25.xyz, cb6[r20.w + 32].xywx, r6.xxxx, r25.xyzx + mad r25.xyz, cb6[r20.w + 34].xywx, r6.zzzz, r25.xyzx + add r25.xyz, r25.xyzx, cb6[r20.w + 35].xywx + div_sat r25.xy, r25.xyxx, r25.zzzz + mad r25.xy, r25.xyxx, cb6[r22.w + 0].zwzz, cb6[r22.w + 0].xyxx + else + ishl r20.w, r22.w, l(2) + dp3 r30.x, -r26.xyzx, cb6[r20.w + 32].xyzx + dp3 r30.y, -r26.xyzx, cb6[r20.w + 33].xyzx + dp3 r30.z, -r26.xyzx, cb6[r20.w + 34].xyzx + lt r20.w, |r30.x|, |r30.y| + and r20.w, r20.w, l(1) + dp2 r21.y, |r30.xyxx|, icb[r20.w + 0].xyxx + lt r21.y, r21.y, |r30.z| + movc r20.w, r21.y, l(2), r20.w + dp3 r21.y, r30.xyzx, icb[r20.w + 0].xyzx + lt r21.y, r21.y, l(0.000000) + bfi r20.w, l(31), l(1), r20.w, r21.y + ushr r21.y, r20.w, l(1) + dp3 r21.y, r30.xyzx, icb[r21.y + 0].xyzx + div r25.z, l(0.000244140625), cb6[r22.w + 0].w + add r25.z, -r25.z, l(0.500000) + utof r25.w, r20.w + ult r26.x, r20.w, l(2) + and r26.x, r26.x, l(2) + dp2 r26.x, r30.xzxx, icb[r26.x + 0].xzxx + mul r26.x, r26.x, icb[r20.w + 4].z + div r26.x, r26.x, |r21.y| + mad r25.w, r26.x, r25.z, r25.w + add r25.w, r25.w, l(0.500000) + mul_sat r26.x, r25.w, l(0.166666672) + iadd r25.w, l(-1), icb[r20.w + 4].y + dp2 r25.w, r30.yzyy, icb[r25.w + 0].xyxx + mul r20.w, r25.w, icb[r20.w + 4].w + div r20.w, r20.w, |r21.y| + mad_sat r26.y, -r20.w, r25.z, l(0.500000) + mad r25.xy, r26.xyxx, cb6[r22.w + 0].zwzz, cb6[r22.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r20.w, r25.xyxx, t13.yzwx, s1, l(0.000000) + mul r20.x, r20.w, r20.x + endif + lt r20.w, l(0.000000), r20.x + if_nz r20.w + if_z r23.w + ftoi r21.y, cb3[r24.y + 6].x + else + add r25.xyz, r6.xyzx, -cb3[r24.x + 6].xyzx + lt r26.xyz, |r25.yzzy|, |r25.xxyx| + and r22.w, r26.y, r26.x + lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ushr r23.w, cb3[r16.w + 6].w, l(24) + ubfe r26.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r16.w + 6].wwww + movc r23.w, r25.x, r23.w, r26.x + and r25.x, l(255), cb3[r16.w + 6].w + movc r25.x, r25.y, r26.y, r25.x + ubfe r25.y, l(8), l(8), cb3[r24.y + 6].x + and r25.w, l(255), cb3[r24.y + 6].x + movc r25.y, r25.z, r25.y, r25.w + movc r25.x, r26.z, r25.x, r25.y + movc r22.w, r22.w, r23.w, r25.x + ilt r23.w, r22.w, l(80) + movc r21.y, r23.w, r22.w, l(-1) + endif + ishl r22.w, r21.y, l(2) + mad r25.xyz, r27.xyzx, cb4[r21.y + 288].xxxx, r6.xyzx + mul r23.w, l(5.000000), cb4[r21.y + 288].y + mad r25.xyz, r4.xyzx, r23.wwww, r25.xyzx + mul r26.xyzw, r25.yyyy, cb4[r22.w + 65].xyzw + mad r26.xyzw, cb4[r22.w + 64].xyzw, r25.xxxx, r26.xyzw + mad r25.xyzw, cb4[r22.w + 66].xyzw, r25.zzzz, r26.xyzw + add r25.xyzw, r25.xyzw, cb4[r22.w + 67].xyzw + div r25.xyz, r25.xyzx, r25.wwww + ge r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ge r30.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r31.xy, -cb4[r21.y + 344].xyxx, cb4[r21.y + 344].zwzz + mad r25.xy, r25.xyxx, r31.xyxx, cb4[r21.y + 344].xyxx + mad r31.xy, r25.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r31.xy, r31.xyxx + mad r25.xy, r25.xyxx, cb4[400].zwzz, -r31.xyxx + add r32.xyzw, r25.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r33.xyzw, r32.xxzz, r32.xxzz + add r31.zw, -r25.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r32.xz, r25.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r34.xy, r25.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r35.xy, r31.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r34.xy, -r34.xyxx, r34.xyxx, r32.ywyy + add r34.xy, r34.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r34.xy, r34.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r33.xz, r33.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r25.xy, r33.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r25.xyxx + mul r36.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r25.xy, -r32.xzxx, r32.xzxx, r31.zwzz + add r25.xy, r25.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r37.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r25.xy, r32.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r36.z, r37.x + mov r36.w, r25.x + mov r35.z, r34.x + mov r35.w, r33.x + add r32.xyzw, r35.zwxz, r36.zwxz + mov r37.z, r36.y + mov r37.w, r25.y + mov r34.z, r35.y + mov r34.w, r33.z + add r25.xyw, r34.zyzw, r37.zyzw + div r33.xyz, r35.xzwx, r32.zwyz + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyz, r33.yxzy, cb4[400].xxxx + div r34.xyz, r34.zywz, r25.xywx + add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r34.xyz, r34.xyzx, cb4[400].yyyy + mov r33.w, r34.x + mad r35.xyzw, r31.xyxy, cb4[400].xyxy, r33.ywxw + mad r31.zw, r31.xxxy, cb4[400].xxxy, r33.zzzw + mov r34.w, r33.y + mov r33.yw, r34.yyyz + mad r36.xyzw, r31.xyxy, cb4[400].xyxy, r33.xyzy + mad r34.xyzw, r31.xyxy, cb4[400].xyxy, r34.wywz + mad r33.xyzw, r31.xyxy, cb4[400].xyxy, r33.xwzw + mul r37.xyzw, r25.xxxy, r32.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r22.w, r35.xyxx, t6.xxxx, s4, r25.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r35.zwzz, t6.xxxx, s4, r25.z + mul r23.w, r23.w, r37.y + mad r22.w, r37.x, r22.w, r23.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r31.zwzz, t6.xxxx, s4, r25.z + mad r22.w, r37.z, r23.w, r22.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r34.xyxx, t6.xxxx, s4, r25.z + mad r22.w, r37.w, r23.w, r22.w + mul r31.xyzw, r25.yyww, r32.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r36.xyxx, t6.xxxx, s4, r25.z + mad r22.w, r31.x, r23.w, r22.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r36.zwzz, t6.xxxx, s4, r25.z + mad r22.w, r31.y, r23.w, r22.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r34.zwzz, t6.xxxx, s4, r25.z + mad r22.w, r31.z, r23.w, r22.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r33.xyxx, t6.xxxx, s4, r25.z + mad r22.w, r31.w, r23.w, r22.w + ige r23.w, r21.y, l(0) + or r26.xyz, r26.xyzx, r30.xyzx + or r25.x, r26.y, r26.x + or r25.x, r26.z, r25.x + and r25.y, r25.z, l(0x7fffffff) + ult r25.y, l(0x7f800000), r25.y + or r25.x, r25.y, r25.x + mul r25.y, r25.w, r32.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r33.zwzz, t6.xxxx, s4, r25.z + mad r22.w, r25.y, r25.z, r22.w + add r22.w, r22.w, l(-1.000000) + mad r21.y, cb4[r21.y + 288].w, r22.w, l(1.000000) + movc r21.y, r25.x, l(1.000000), r21.y + movc r21.y, r23.w, r21.y, l(1.000000) + else + mov r21.y, l(1.000000) + endif + if_nz r24.z + dp3 r22.w, r15.xyzx, r28.xyzx + mul_sat r23.w, r21.w, cb3[r16.w + 6].z + mad r23.w, r23.w, l(0.500000), r14.y + min r23.w, r23.w, l(1.000000) + div r23.w, r14.y, r23.w + mad r25.xyz, r15.xyzx, r22.wwww, -r28.xyzx + dp3 r24.z, r29.xyzx, r25.xyzx + mul r22.w, r22.w, r22.w + mad r22.w, cb3[r16.w + 6].z, cb3[r16.w + 6].z, -r22.w + div_sat r22.w, r24.z, r22.w + mad r25.xyz, r28.xyzx, r22.wwww, r29.xyzx + dp3 r22.w, r25.xyzx, r25.xyzx + rsq r22.w, r22.w + mul r27.xyz, r22.wwww, r25.xyzx + else + mov r23.w, l(1.000000) + endif + if_nz r20.w + mul_sat r20.w, r21.w, cb3[r20.z + 6].y + mad r25.xyz, r9.xyzx, r5.wwww, r27.xyzx + dp3 r21.w, r25.xyzx, r25.xyzx + max r21.w, r21.w, l(0.0000610351562) + rsq r21.w, r21.w + mul r25.xyz, r21.wwww, r25.xyzx + dp3_sat r21.w, r4.xyzx, r25.xyzx + dp3_sat r22.w, r10.xyzx, r25.xyzx + lt r24.z, l(0.000000), r20.w + mul r20.w, r20.w, r20.w + mad r25.x, r22.w, l(3.600000), l(0.400000) + div r20.w, r20.w, r25.x + mad r20.w, r12.w, r12.w, r20.w + min r20.w, r20.w, l(1.000000) + movc r20.w, r24.z, r20.w, r14.y + mul r20.w, r20.w, r20.w + mad r24.z, r21.w, r20.w, -r21.w + mad r21.w, r24.z, r21.w, l(1.000000) + add r22.w, -r22.w, l(1.000000) + mul r24.z, r22.w, r22.w + mul r24.z, r24.z, r24.z + mul r25.x, r22.w, r24.z + if_nz r9.w + dp3 r25.y, r4.xyzx, r27.xyzx + mad r17.x, r25.y, l(0.500000), l(0.500000) + sample_l_indexable(texture2darray)(float,float,float,float) r25.yzw, r17.xyzx, t10.wxyz, s1, l(0.000000) + endif + movc r25.yzw, r9.wwww, r25.yyzw, r21.xxxx + mad r17.x, -r24.z, r22.w, l(1.000000) + mad r26.xyz, r11.xyzx, r17.xxxx, r25.xxxx + mul r17.x, r21.w, r21.w + div r17.x, r20.w, r17.x + mul r17.x, r23.w, r17.x + mad r21.w, -r12.x, r20.w, r12.x + mad r21.w, r21.w, r12.x, r20.w + sqrt r21.w, r21.w + mad r22.w, -r21.x, r20.w, r21.x + mad r20.w, r22.w, r21.x, r20.w + sqrt r20.w, r20.w + mul r20.w, r12.x, r20.w + mad r20.w, r21.x, r21.w, r20.w + add r20.w, r20.w, l(0.000100) + div r20.w, l(0.500000), r20.w + mul r17.x, r17.x, r20.w + mul r26.xyz, r17.xxxx, r26.xyzx + min r26.xyz, r26.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r27.xy, r21.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r17.x, r27.xyxx, t9.xyzw, s1, l(0.000000) + mul r17.x, r1.w, r17.x + mul r17.x, r7.w, r17.x + div r17.x, r17.x, r8.w + mul r27.xyz, r16.xyzx, r17.xxxx + div r27.xyz, r27.xyzx, r18.xyzx + add r26.xyz, r26.xyzx, r27.xyzx + mul r26.xyz, r26.xyzx, cb3[r20.z + 6].zzzz + max r26.xyz, r26.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r26.xyz, r26.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r25.xyz, r3.xyzx, r25.yzwy + mad r25.xyz, r26.xyzx, r21.xxxx, r25.xyzx + mul r26.xyz, r20.xxxx, cb3[r19.z + 6].xyzx + mul r21.xyw, r21.yyyy, r26.xyxz + mul r21.xyw, r19.xxxx, r21.xyxw + mul r21.xyw, r21.xyxw, r25.xyxz + else + mov r21.xyw, l(0,0,0,0) + endif + else + if_z r19.y + mad r17.x, cb3[r16.w + 6].y, l(0.500000), l(0.500000) + add r25.x, r17.x, -|cb3[r16.w + 6].x| + add r25.y, -r25.x, cb3[r16.w + 6].y + add r17.x, -|r25.x|, l(1.000000) + add r17.x, -|r25.y|, r17.x + max r17.x, r17.x, l(0.000488281250) + ge r19.x, cb3[r16.w + 6].x, l(0.000000) + movc r25.z, r19.x, r17.x, -r17.x + dp3 r17.x, r25.xyzx, r25.xyzx + rsq r17.x, r17.x + mul r25.xyz, r17.xxxx, r25.xyzx + add r26.xyz, -r6.xyzx, cb3[r24.x + 6].xyzx + dp3 r17.x, r26.xyzx, r26.xyzx + rsq r19.x, r17.x + mul r27.xyz, r19.xxxx, r26.xyzx + ftoi r19.x, cb3[r20.z + 6].w + mul r20.xzw, r25.xxyz, cb3[r16.w + 6].zzzz + mad r28.xyz, -r20.xzwx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + mad r20.xzw, r20.xxzw, l(0.500000, 0.000000, 0.500000, 0.500000), r26.xxyz + ftou r19.y, cb3[r19.z + 6].w + and r19.y, r19.y, l(1) + ieq r19.z, r19.y, l(0) + not r19.z, r19.z + lt r22.w, l(0.000000), cb3[r16.w + 6].z + and r19.z, r19.z, r22.w + dp3 r22.w, r28.xyzx, r28.xyzx + sqrt r22.w, r22.w + dp3 r23.w, r20.xzwx, r20.xzwx + sqrt r23.w, r23.w + dp3 r20.x, r28.xyzx, r20.xzwx + mad r20.x, r22.w, r23.w, r20.x + mad r20.x, r20.x, l(0.500000), l(1.000000) + div r20.x, l(1.000000, 1.000000, 1.000000, 1.000000), r20.x + movc r20.x, r19.z, r20.x, l(1.000000) + lt r20.z, cb3[r24.w + 6].w, l(0.000000) + if_nz r20.z + mul r20.z, cb3[r24.x + 6].w, cb3[r24.x + 6].w + mul r20.z, r17.x, r20.z + mad r20.z, -r20.z, r20.z, l(1.000000) + max r20.z, r20.z, l(0.000000) + add r17.x, r17.x, l(1.000000) + div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x + and r20.w, r19.z, l(0x3f800000) + add r22.w, -r17.x, r20.x + mad r17.x, r20.w, r22.w, r17.x + mul r20.z, r20.z, r20.z + mul r17.x, r17.x, r20.z + else + mul r28.xyz, r26.xyzx, cb3[r24.x + 6].wwww + dp3 r20.z, r28.xyzx, r28.xyzx + min r20.z, r20.z, l(1.000000) + add r20.z, -r20.z, l(1.000000) + log r20.z, r20.z + mul r20.z, r20.z, cb3[r24.w + 6].w + exp r20.z, r20.z + mul r17.x, r20.z, r20.x + endif + dp3 r20.x, r27.xyzx, -r25.xyzx + add r20.x, r20.x, -cb3[r16.w + 6].z + mul_sat r20.x, r20.x, cb3[r16.w + 6].w + mul r20.x, r20.x, r20.x + movc r20.x, r19.y, l(1.000000), r20.x + mul r17.x, r17.x, r20.x + not r19.z, r19.z + ige r20.x, r19.x, l(0) + and r19.z, r19.z, r20.x + if_nz r19.z + if_z r19.y + ishl r19.z, r19.x, l(2) + mul r20.xzw, r6.yyyy, cb6[r19.z + 33].xxyw + mad r20.xzw, cb6[r19.z + 32].xxyw, r6.xxxx, r20.xxzw + mad r20.xzw, cb6[r19.z + 34].xxyw, r6.zzzz, r20.xxzw + add r20.xzw, r20.xxzw, cb6[r19.z + 35].xxyw + div_sat r20.xz, r20.xxzx, r20.wwww + mad r20.xz, r20.xxzx, cb6[r19.x + 0].zzwz, cb6[r19.x + 0].xxyx + else + ishl r19.z, r19.x, l(2) + dp3 r25.x, -r26.xyzx, cb6[r19.z + 32].xyzx + dp3 r25.y, -r26.xyzx, cb6[r19.z + 33].xyzx + dp3 r25.z, -r26.xyzx, cb6[r19.z + 34].xyzx + lt r19.z, |r25.x|, |r25.y| + and r19.z, r19.z, l(1) + dp2 r20.w, |r25.xyxx|, icb[r19.z + 0].xyxx + lt r20.w, r20.w, |r25.z| + movc r19.z, r20.w, l(2), r19.z + dp3 r20.w, r25.xyzx, icb[r19.z + 0].xyzx + lt r20.w, r20.w, l(0.000000) + bfi r19.z, l(31), l(1), r19.z, r20.w + ushr r20.w, r19.z, l(1) + dp3 r20.w, r25.xyzx, icb[r20.w + 0].xyzx + div r22.w, l(0.000244140625), cb6[r19.x + 0].w + add r22.w, -r22.w, l(0.500000) + utof r23.w, r19.z + ult r24.z, r19.z, l(2) + and r24.z, r24.z, l(2) + dp2 r24.z, r25.xzxx, icb[r24.z + 0].xzxx + mul r24.z, r24.z, icb[r19.z + 4].z + div r24.z, r24.z, |r20.w| + mad r23.w, r24.z, r22.w, r23.w + add r23.w, r23.w, l(0.500000) + mul_sat r26.x, r23.w, l(0.166666672) + iadd r23.w, l(-1), icb[r19.z + 4].y + dp2 r23.w, r25.yzyy, icb[r23.w + 0].xyxx + mul r19.z, r23.w, icb[r19.z + 4].w + div r19.z, r19.z, |r20.w| + mad_sat r26.y, -r19.z, r22.w, l(0.500000) + mad r20.xz, r26.xxyx, cb6[r19.x + 0].zzwz, cb6[r19.x + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r19.x, r20.xzxx, t13.xyzw, s1, l(0.000000) + mul r17.x, r17.x, r19.x + endif + lt r17.x, l(0.000000), r17.x + if_nz r17.x + if_z r19.y + ftoi r17.x, cb3[r24.y + 6].x + else + add r19.xyz, r6.xyzx, -cb3[r24.x + 6].xyzx + lt r20.xzw, |r19.yyzz|, |r19.xxxy| + and r20.x, r20.z, r20.x + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + ushr r20.z, cb3[r16.w + 6].w, l(24) + ubfe r24.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r16.w + 6].wwww + movc r19.x, r19.x, r20.z, r24.x + and r16.w, l(255), cb3[r16.w + 6].w + movc r16.w, r19.y, r24.z, r16.w + ubfe r19.y, l(8), l(8), cb3[r24.y + 6].x + and r20.z, l(255), cb3[r24.y + 6].x + movc r19.y, r19.z, r19.y, r20.z + movc r16.w, r20.w, r16.w, r19.y + movc r16.w, r20.x, r19.x, r16.w + ilt r19.x, r16.w, l(80) + movc r17.x, r19.x, r16.w, l(-1) + endif + ishl r16.w, r17.x, l(2) + mad r19.xyz, r27.xyzx, cb4[r17.x + 288].xxxx, r6.xyzx + mul r20.x, l(5.000000), cb4[r17.x + 288].y + mad r19.xyz, r4.xyzx, r20.xxxx, r19.xyzx + mul r24.xyzw, r19.yyyy, cb4[r16.w + 65].xyzw + mad r24.xyzw, cb4[r16.w + 64].xyzw, r19.xxxx, r24.xyzw + mad r24.xyzw, cb4[r16.w + 66].xyzw, r19.zzzz, r24.xyzw + add r24.xyzw, r24.xyzw, cb4[r16.w + 67].xyzw + div r19.xyz, r24.xyzx, r24.wwww + ge r20.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxyz + ge r24.xyz, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r25.xy, -cb4[r17.x + 344].xyxx, cb4[r17.x + 344].zwzz + mad r19.xy, r19.xyxx, r25.xyxx, cb4[r17.x + 344].xyxx + mad r25.xy, r19.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r25.xy, r25.xyxx + mad r19.xy, r19.xyxx, cb4[400].zwzz, -r25.xyxx + add r26.xyzw, r19.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r25.zw, -r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r26.xz, r19.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r19.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r19.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r19.xyxx + mul r30.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r19.xy, -r26.xzxx, r26.xzxx, r25.zwzz + add r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r31.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r19.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r30.z, r31.x + mov r30.w, r19.x + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r19.y + mov r28.z, r29.y + mov r28.w, r27.z + add r27.xyz, r28.zywz, r31.zywz + div r29.xyz, r29.xzwx, r26.zwyz + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.yxzy, cb4[400].xxxx + div r28.xyz, r28.zywz, r27.xyzx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb4[400].yyyy + mov r29.w, r28.x + mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r29.ywxw + mad r19.xy, r25.xyxx, cb4[400].xyxx, r29.zwzz + mov r28.w, r29.y + mov r29.yw, r28.yyyz + mad r31.xyzw, r25.xyxy, cb4[400].xyxy, r29.xyzy + mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz + mad r25.xyzw, r25.xyxy, cb4[400].xyxy, r29.xwzw + mul r29.xyzw, r26.zwyz, r27.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r30.xyxx, t6.xxxx, s4, r19.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r22.w, r30.zwzz, t6.xxxx, s4, r19.z + mul r22.w, r22.w, r29.y + mad r16.w, r29.x, r16.w, r22.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r19.xyxx, t6.xxxx, s4, r19.z + mad r16.w, r29.z, r19.x, r16.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r28.xyxx, t6.xxxx, s4, r19.z + mad r16.w, r29.w, r19.x, r16.w + mul r29.xyzw, r26.xyzw, r27.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r31.xyxx, t6.xxxx, s4, r19.z + mad r16.w, r29.x, r19.x, r16.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r31.zwzz, t6.xxxx, s4, r19.z + mad r16.w, r29.y, r19.x, r16.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r28.zwzz, t6.xxxx, s4, r19.z + mad r16.w, r29.z, r19.x, r16.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r25.xyxx, t6.xxxx, s4, r19.z + mad r16.w, r29.w, r19.x, r16.w + ige r19.x, r17.x, l(0) + or r20.xzw, r20.xxzw, r24.xxyz + or r19.y, r20.z, r20.x + or r19.y, r20.w, r19.y + and r20.x, r19.z, l(0x7fffffff) + ult r20.x, l(0x7f800000), r20.x + or r19.y, r19.y, r20.x + mul r20.x, r26.y, r27.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r25.zwzz, t6.xxxx, s4, r19.z + mad r16.w, r20.x, r19.z, r16.w + add r16.w, r16.w, l(-1.000000) + mad r16.w, cb4[r17.x + 288].w, r16.w, l(1.000000) + movc r16.w, r19.y, l(1.000000), r16.w + movc r16.w, r19.x, r16.w, l(1.000000) + else + mov r16.w, l(1.000000) + endif + else + mov r16.w, l(1.000000) + endif + mul r12.z, r12.z, r16.w + mov r21.xyw, l(0,0,0,0) + endif + add r23.xyz, r21.xywx, r23.xyzx + mov r15.w, r18.w + endloop + mov r3.w, r12.z + add r22.xyz, r22.xyzx, r23.xyzx + iadd r10.w, r10.w, l(1) +endloop +mad r9.xyz, r22.xyzx, r3.wwww, r14.xzwx +ne r1.xw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy +if_nz r1.x + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + add r1.x, r0.z, r13.x + mad r2.z, r12.w, l(-16.000000), l(-1.000000) + exp r2.z, r2.z + log r1.x, |r1.x| + mul r1.x, r1.x, r2.z + exp r1.x, r1.x + add r1.x, r0.z, r1.x + add r1.x, r1.x, l(-1.000000) + mov_sat r12.xyz, r1.xxxx + mad r14.xyz, r3.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r3.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r3.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r12.xyz, r1.yyyy + mov r14.xyz, r1.yyyy +endif +if_nz r9.w + mov r17.w, l(0.500000) + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r17.ywzy, t11.xyzw, s1, l(0.000000) +endif +movc r16.xyz, r9.wwww, r16.xyzx, l(1.000000,1.000000,1.000000,0) +mad r17.xyz, r4.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r6.xyzx +round_z r0.z, cb0[212].x +mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx +dp2 r0.z, r1.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r17.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r17.xyzx +mad r18.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r18.xyz, r17.xzyx, -r18.xyzx +max r0.z, |r18.y|, |r18.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.x, |r18.z|, l(-208.000000) +mul_sat r1.x, r1.x, l(0.031250) +max r0.z, r0.z, r1.x +ne r1.x, l(0.000000), cb0[210].w +lt r1.y, r0.z, l(1.000000) +and r1.x, r1.y, r1.x +if_nz r1.x + mad r18.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r18.xyz, r17.xzyx, -r18.xyzx + max r1.x, |r18.y|, |r18.x| + add r1.x, r1.x, l(-29.000000) + add r1.y, |r18.z|, l(-13.000000) + mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + max r1.x, r1.y, r1.x + lt r1.y, r1.x, l(1.000000) + if_nz r1.y + mad r18.xyz, r17.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r18.xyzx, cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r19.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r18.xyzx, t17.yzwx, s2, l(0.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.z, l(0.500000), cb0[211].y + mad r3.w, -cb0[211].y, l(0.500000), l(1.000000) + max r2.z, r2.z, r18.y + min r2.z, r3.w, r2.z + mul r18.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t18.xyzw, s1, l(0.000000) + mad r2.z, r20.w, r1.y, r0.z + add r21.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t18.xyzw, s1, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r19.yyyy, r21.xyzx + mov r21.w, r19.y + mul r21.xyzw, r1.yyyy, r21.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r19.xxxx, r18.xyzx + mov r18.w, r19.x + mul r18.xyzw, r1.yyyy, r18.xyzw + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r19.wwww, r20.xyzx + mul r19.xyzw, r1.yyyy, r19.xyzw + else + mov r21.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r19.xyzw, l(0,0,0,0) + mov r2.z, r0.z + endif + mad r20.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r20.xyz, r17.xzyx, -r20.xyzx + max r1.y, |r20.y|, |r20.x| + add r1.y, r1.y, l(-116.000000) + mul_sat r1.y, r1.y, l(0.125000) + add r3.w, |r20.z|, l(-52.000000) + mul_sat r3.w, r3.w, l(0.125000) + max r1.y, r1.y, r3.w + lt r3.w, r1.y, l(1.000000) + if_nz r3.w + mad r20.xyz, r17.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r22.xyz, r20.xyzx, cb0[211].xyzx + round_ni r22.xyz, r22.xyzx + mad r20.xyz, r20.xyzx, cb0[211].xyzx, -r22.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r20.xyzx, t19.yzwx, s2, l(0.000000) + add r3.w, -r1.y, l(1.000000) + mul r1.x, r1.x, r3.w + mul r3.w, l(0.500000), cb0[211].y + mad r5.w, -cb0[211].y, l(0.500000), l(1.000000) + max r3.w, r3.w, r20.y + min r3.w, r5.w, r3.w + mul r20.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyzw, r20.xwzx, t20.xyzw, s1, l(0.000000) + mad r2.z, r23.w, r1.x, r2.z + add r24.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t20.xyzw, s1, l(0.000000) + mad r24.xyz, r24.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r24.xyz, r22.yyyy, r24.xyzx + mov r24.w, r22.y + mad r21.xyzw, r24.xyzw, r1.xxxx, r21.xyzw + add r20.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t20.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r22.xxxx, r20.xyzx + mov r20.w, r22.x + mad r18.xyzw, r20.xyzw, r1.xxxx, r18.xyzw + mad r20.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r20.xyzx + mad r19.xyzw, r22.xyzw, r1.xxxx, r19.xyzw + endif + lt r1.x, l(0.000000), r1.y + if_nz r1.x + mad r17.xyz, r17.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r17.xyzx, cb0[211].xyzx + mul r22.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r20.xyzx + mad r20.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r17.xyz, r22.xyzx, r17.xyzx + min r17.xyz, r20.xyzx, r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r23.xyw, r17.xyzx, t21.yzwx, s2, l(0.000000) + add r1.x, -r0.z, l(1.000000) + mul r1.x, r1.x, r1.y + max r1.y, r22.y, r17.y + min r1.y, r20.y, r1.y + mul r17.w, r1.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t22.xyzw, s1, l(0.000000) + add r22.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t22.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r23.yyyy, r22.xyzx + mov r22.w, r23.y + mad r21.xyzw, r22.xyzw, r1.xxxx, r21.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t22.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r23.xxxx, r17.xyzx + mov r17.w, r23.x + mad r18.xyzw, r17.xyzw, r1.xxxx, r18.xyzw + mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r23.wwww, r17.xyzx + mad r19.xyzw, r23.xyzw, r1.xxxx, r19.xyzw + mad r2.z, r20.w, r1.x, r2.z + endif + mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) + add r17.x, -r0.z, r1.x + add r0.z, r0.z, r1.x + mul r17.y, r0.z, l(0.500000) +else + mov r21.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r19.xyzw, l(0,0,0,0) + mov r17.xy, l(0,1.000000,0,0) +endif +mul r20.xyzw, r17.yxyy, cb0[213].ywzx +mad r20.y, r20.y, l(0.500000), r20.x +mul r1.xy, r17.yxyy, cb0[213].wyww +mad r20.x, r1.y, l(0.375000), r1.x +add r19.xyzw, r19.xyzw, r20.wyzx +mul r20.xyzw, r17.yxyy, cb0[214].ywzx +mad r20.y, r20.y, l(0.500000), r20.x +mul r1.xy, r17.yxyy, cb0[214].wyww +mad r20.x, r1.y, l(0.375000), r1.x +add r18.xyzw, r18.xyzw, r20.wyzx +mul r20.xyzw, r17.yxyy, cb0[215].ywzx +mad r20.y, r20.y, l(0.500000), r20.x +mul r1.xy, r17.yxyy, cb0[215].wyww +mad r20.x, r1.y, l(0.375000), r1.x +add r17.xyzw, r20.wyzx, r21.xyzw +ge r1.xy, r5.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r1.y, r1.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r20.xyzw, r5.xyxx, t16.xyzw, s1, l(0.000000) + lt r21.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r20.xyzw| + or r1.xy, r21.zwzz, r21.xyxx + or r0.z, r1.y, r1.x + if_nz r0.z + dp3 r0.z, r20.yzwy, r20.yzwy + sqrt r0.z, r0.z + mov r1.x, l(1.000000) + mov r1.y, r0.z + mov r2.z, l(0) + loop + ge r3.w, l(4.600000), r1.y + breakc_nz r3.w + iadd r3.w, r2.z, l(1) + mul r5.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r1.xy, r5.xyxx + mov r2.z, r3.w + continue + endloop + mul r20.xyzw, r1.xxxx, r20.xyzw + dp3 r0.z, r20.yzwy, r20.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb7[3].x, cb7[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r1.x, r0.z, l(0.00390625000) + mov r1.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t15.xyzw, s1, l(0.000000) + mad r1.xy, r1.xyxx, cb7[2].xyxx, cb7[2].zwzz + mul r21.x, r1.x, l(3.54490781) + mul r21.yzw, r1.yyyy, r20.yyzw + mul r0.z, r20.x, l(0.406976730) + exp r0.z, r0.z + mul r20.xyzw, r0.zzzz, r21.xyzw + mov r21.xyzw, r20.xyzw + mov r0.z, l(0) + loop + uge r1.x, r0.z, r2.z + breakc_nz r1.x + mul r22.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r1.x, r22.xyzw, r21.xyzw + dp2 r1.y, r22.yxyy, r21.xyxx + dp2 r3.w, r22.zxzz, r21.xzxx + dp2 r5.x, r22.wxww, r21.xwxx + iadd r5.y, r0.z, l(1) + mov r21.xy, r1.xyxx + mov r21.z, r3.w + mov r21.w, r5.x + mov r0.z, r5.y + continue + endloop + mul r20.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r21.xyzw, r19.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r20.xyzw, r21.xyzw + dp2 r1.x, r20.yxyy, r21.xyxx + dp2 r1.y, r20.zxzz, r21.xzxx + dp2 r2.z, r20.wxww, r21.xwxx + mul r21.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r3.w, r20.xyzw, r21.xyzw + dp2 r5.x, r20.yxyy, r21.xyxx + dp2 r5.y, r20.zxzz, r21.xzxx + dp2 r5.w, r20.wxww, r21.xwxx + mul r21.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r7.w, r20.xyzw, r21.xyzw + dp2 r8.w, r20.yxyy, r21.xyxx + dp2 r9.w, r20.zxzz, r21.xzxx + dp2 r10.w, r20.wxww, r21.xwxx + mul r19.w, r0.z, l(0.886226952) + mul r19.x, r2.z, l(-1.02332675) + mul r19.yz, r1.xxyx, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r18.w, r3.w, l(0.886226952) + mul r18.xyz, r5.wxyw, l(-1.02332675, -1.02332675, 1.02332675, 0.000000) + mul r17.w, r7.w, l(0.886226952) + mul r17.x, r10.w, l(-1.02332675) + mul r17.y, r8.w, l(-1.02332675) + mul r17.z, r9.w, l(1.02332675) + endif +endif +mul r5.xyw, r16.xxxx, r19.xyxz +dp3 r0.z, r5.xywx, r4.xyzx +add r0.z, r19.w, r0.z +max r19.x, r0.z, l(0.000000) +mul r5.xyw, r16.yyyy, r18.xyxz +dp3 r0.z, r5.xywx, r4.xyzx +add r0.z, r18.w, r0.z +max r19.y, r0.z, l(0.000000) +mul r5.xyw, r16.zzzz, r17.xyxz +dp3 r0.z, r5.xywx, r4.xyzx +add r0.z, r17.w, r0.z +max r19.z, r0.z, l(0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.x, r12.w, l(0.001000) +log r1.x, r1.x +mad r1.x, -r1.x, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.x +mul r1.xy, r2.xyxx, cb1[0].wwww +round_ni r1.xy, r1.xyxx +add r2.z, |r2.w|, -cb1[2].y +round_ni r2.z, r2.z +add r3.w, l(-1.000000), cb1[1].x +max r5.x, r2.z, l(0.000000) +min r3.w, r3.w, r5.x +ge r2.z, r3.w, r2.z +mad r1.x, r1.y, cb1[0].x, r1.x +ftoi r1.x, r1.x +iadd r1.x, r1.x, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx +ftoi r1.y, r3.w +iadd r1.y, r1.y, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx +and r1.x, r1.y, r1.x +and r1.x, r1.x, r2.z +mul r5.xyw, r19.xyxz, cb0[111].xxxx +dp3 r1.y, r5.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r6.w, l(1.000000) +mov r4.w, l(1.000000) +mov r5.xyw, l(0,0,0,0) +mov r2.z, l(1.000000) +mov r3.w, r1.x +mov r7.w, l(0) +loop + lt r8.w, l(0.010000), r2.z + ine r9.w, r3.w, l(0) + and r9.w, r8.w, r9.w + if_nz r9.w + firstbit_lo r9.w, r3.w + ishl r10.w, l(1), r9.w + xor r3.w, r3.w, r10.w + ishl r9.w, r9.w, l(3) + dp4 r16.x, cb1[r9.w + 6].xyzw, r6.xyzw + dp4 r16.y, cb1[r9.w + 7].xyzw, r6.xyzw + dp4 r16.z, cb1[r9.w + 8].xyzw, r6.xyzw + ge r17.xyz, cb1[r9.w + 5].xyzx, |r16.xyzx| + and r10.w, r17.y, r17.x + and r10.w, r17.z, r10.w + if_nz r10.w + mul r10.w, l(0.100000), cb1[r9.w + 5].x + mul r17.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r17.xy, r17.xyxx, r17.xyxx + add r18.xyz, -|r16.xyzx|, cb1[r9.w + 5].xyzx + mul r18.xyz, r18.xyzx, cb1[r9.w + 9].xyzx + eq r11.w, l(1.000000), cb1[r9.w + 10].x + if_nz r11.w + dp3 r20.x, cb1[r9.w + 6].xyzx, r15.xyzx + dp3 r20.y, cb1[r9.w + 7].xyzx, r15.xyzx + dp3 r20.z, cb1[r9.w + 8].xyzx, r15.xyzx + add r21.xyz, -r16.xyzx, cb1[r9.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r16.xyzx, -cb1[r9.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r11.w, r21.y, r21.x + min r11.w, r21.z, r11.w + mad r16.xyz, r20.xyzx, r11.wwww, r16.xyzx + else + mov r16.xyz, r15.xyzx + endif + dp3 r11.w, r16.xyzx, r16.xyzx + rsq r11.w, r11.w + mul r16.xyz, r11.wwww, r16.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r11.w, r16.xyzx, r20.xyzx + div r16.xyz, r16.xyzx, r11.wwww + lt r11.w, r16.z, l(0.000000) + add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r16.zw, r16.zzzw, r20.xxxy + movc r16.xy, r11.wwww, r16.zwzz, r16.xyxx + dp4 r11.w, cb1[r9.w + 4].xyzw, r4.xyzw + max r11.w, r11.w, l(0.000000) + max r11.w, r11.w, l(0.000100) + min r12.w, r18.z, r18.y + min r12.w, r12.w, r18.x + add r13.x, r17.y, r17.x + mad r13.x, r17.z, r17.z, r13.x + mad r10.w, r10.w, r10.w, -r13.x + mul r10.w, r10.w, cb1[r9.w + 9].x + mul r10.w, r10.w, cb1[r9.w + 9].x + add r13.x, l(1.000000), -cb1[r9.w + 10].y + mul r10.w, r10.w, r13.x + mul r10.w, r10.w, l(100.000000) + mad_sat r10.w, r12.w, cb1[r9.w + 10].y, r10.w + mul r12.w, r10.w, cb1[r9.w + 10].w + mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww + mov r16.z, cb1[r9.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z + mul r16.xyz, r16.xyzx, cb1[r9.w + 9].wwww + div r13.x, r1.y, r11.w + min r13.x, |r13.x|, l(1.000000) + mad r13.x, r13.x, l(2.000000), r1.y + add r11.w, r11.w, l(2.000000) + div r11.w, r13.x, r11.w + add r11.w, r11.w, l(-1.000000) + mad r11.w, r11.w, cb0[112].w, l(1.000000) + mul r16.xyz, r11.wwww, r16.xyzx + mul r16.xyz, r12.wwww, r16.xyzx + mad r5.xyw, r16.xyxz, r2.zzzz, r5.xyxw + mad r9.w, -r10.w, cb1[r9.w + 10].w, l(1.000000) + mul r2.z, r2.z, r9.w + endif + mov r7.w, l(-1) + continue + else + mov r7.w, r8.w + break + endif + mov r7.w, r8.w +endloop +if_nz r7.w + dp3 r1.x, r15.xyzx, r15.xyzx + rsq r1.x, r1.x + mul r15.xyz, r1.xxxx, r15.xyzx + lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r17.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r16.xyz, -r16.xyzx, r17.xyzx + itof r16.xyz, r16.xyzx + dp3 r1.x, r15.xyzx, r16.xyzx + div r15.xyz, r15.xyzx, r1.xxxx + lt r1.x, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r16.xxxy + movc r15.xy, r1.xxxx, r15.zwzz, r15.xyxx + mov r4.w, l(1.000000) + dp4 r1.x, cb1[3].xyzw, r4.xyzw + max r1.x, r1.x, l(0.000000) + max r1.x, r1.x, l(0.000100) + mad r4.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r4.xy, r4.xyxx, cb1[1].wwww, cb1[2].wwww + mov r4.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r4.xyz, r4.xyzx, t5.xyzw, s3, r0.z + div r0.z, r1.y, r1.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r1.y + add r1.x, r1.x, l(2.000000) + div r0.z, r0.z, r1.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r4.xyz, r0.zzzz, r4.xyzx + mad r5.xyw, r4.xyxz, r2.zzzz, r5.xyxw +endif +mul r4.xyz, r5.xywx, cb0[112].zzzz +mul r4.xyz, r4.xyzx, cb0[111].yyyy +if_nz r1.w + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r1.xyw, v1.xyxx, t2.xywz, s1, cb0[108].x + add r2.z, -r0.z, l(1.000000) + mul r5.xyw, r2.zzzz, r4.xyxz + mad r4.xyz, r1.xywx, r0.zzzz, r5.xywx +endif +mul r1.xyw, r3.xyxz, r19.xyxz +mul r1.xyw, r1.xyxw, cb0[111].xxxx +add r0.z, -r1.z, l(1.000000) +div r0.z, r0.z, r1.z +mul r3.xyz, r0.zzzz, r11.xyzx +mad r3.xyz, r3.xyzx, r13.yzwy, r13.yzwy +mul r3.xyz, r3.xyzx, r4.xyzx +mul r3.xyz, r12.xyzx, r3.xyzx +mad r1.xyz, r1.xywx, r14.xyzx, r3.xyzx +add r1.xyz, r1.xyzx, r9.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r6.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r5.z, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.z, r0.z, l(-1.442695) +exp r2.z, r2.z +add r2.z, -r2.z, l(1.000000) +div r0.z, r2.z, r0.z +mad r2.z, r6.y, cb0[156].w, cb0[158].w +mul r2.z, r2.z, l(1.442695) +exp r2.z, r2.z +mul r0.z, r0.z, r2.z +mul r0.z, r0.z, -r1.w +mul r3.xyz, r0.zzzz, cb0[155].xyzx +mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r3.xyz, r3.xyzx +dp3 r0.z, -r10.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.z +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r4.x, r0.y, r0.w, r0.x + dp3 r0.x, -r10.xyzx, -r8.xyzx + add r2.z, r6.y, -cb0[44].y + lt r3.w, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.w + mul r0.x, r0.x, cb0[163].w + div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z + mul r4.z, r0.x, r3.w + mad r4.w, r4.z, r2.z, cb0[44].y + mad r2.z, -r4.z, r2.z, r2.z + mul r4.z, r2.z, cb0[159].z + max r4.z, r4.z, l(-127.000000) + mul r2.z, r2.z, cb0[162].x + max r2.z, r2.z, l(-127.000000) + add r5.x, r4.w, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.y, l(5.960464478E-08), |r4.z| + exp r5.w, -r4.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.z + mad r4.z, -r4.z, l(0.240226507), l(0.693147182) + movc r4.z, r5.y, r5.w, r4.z + add r4.w, r4.w, -cb0[162].z + mul r4.w, r4.w, cb0[162].x + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[162].y + lt r5.y, l(5.960464478E-08), |r2.z| + exp r5.w, -r2.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r2.z + mad r2.z, -r2.z, l(0.240226507), l(0.693147182) + movc r2.z, r5.y, r5.w, r2.z + mul r2.z, r2.z, r4.w + mad r2.z, r5.x, r4.z, r2.z + mad r0.x, -r0.x, r3.w, l(1.000000) + mul r0.x, r5.z, r0.x + mul r0.x, r0.x, r2.z + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r5.zzzz, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r4.y, r0.w, r4.x, r0.y + ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r2.xxxy + mul r2.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r2.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r2.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t14.xyzw, s1, l(0.000000) + add r0.y, |r2.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r2.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r2.xyzw, r0.yyyy, r2.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r2.xyz, r4.xyzx, r2.wwww, r2.xyzx + mul r0.x, r0.x, r2.w +else + add r0.y, r6.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r5.z, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r5.zzzz, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r2.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r3.xyzx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r3.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r2.xyzx +mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r7.xyzx, r7.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r6.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t27.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x99725481.cso b/src/games/endfield/deferred-lighting/0x99725481.cso new file mode 100644 index 0000000000000000000000000000000000000000..7e0350bf93fd088c81f2947e77f926c35e6d5d3a GIT binary patch literal 60512 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x99725481.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x99725481.ps_5_0.asm new file mode 100644 index 0000000000..8dceaeed06 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x99725481.ps_5_0.asm @@ -0,0 +1,1979 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 23:51:02 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[5], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_constantbuffer CB7[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_sampler s5, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture2d (float,float,float,float) t17 +dcl_resource_texture2d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture3d (float,float,float,float) t23 +dcl_resource_texture3d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_resource_texture2d (float,float,float,float) t27 +dcl_resource_texture2d (float,float,float,float) t28 +dcl_resource_texture3d (float,float,float,float) t29 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 39 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t26.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t27.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r2.xyw, r1.wwww, r3.xyxz +utof r4.xy, r0.xyxx +mul r4.zw, v0.xxxy, cb0[82].zzzw +mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r5.zw, r5.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) +mul r6.xyzw, -r5.yyyy, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw +mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r3.w, r5.y, cb0[1].z +mad r3.w, cb0[0].z, r5.x, r3.w +mad r3.w, cb0[2].z, r5.z, r3.w +add r3.w, r3.w, cb0[3].z +eq r6.x, l(0.000000), cb0[86].w +add r6.yzw, -r5.xxyz, cb0[44].xxyz +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r8.xyz, r6.xxxx, r6.yzwy, r7.xyzx +dp3 r6.x, r8.xyzx, r8.xyzx +max r7.w, r6.x, l(9.999999939E-09) +rsq r7.w, r7.w +mul r9.xyz, r7.wwww, r8.xyzx +mul r6.x, r6.x, r7.w +lt r8.w, l(0.000488281250), cb0[234].x +if_nz r8.w + sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t25.xyzw, s1, cb0[108].x +else + mov r10.xy, l(1.000000,1.000000,0,0) +endif +lt r10.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[226].xxxy +if_nz r10.z + add r9.w, |r2.y|, |r2.x| + add r9.w, |r2.w|, r9.w + div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w + mul r11.xyz, |r2.xywx|, r9.wwww + mul r12.xyz, r5.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r9.w, r12.xyzx, t10.yzwx, s2, l(0.000000) + mul r12.xyzw, r11.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) + add r11.xyw, r12.zwzz, r12.xxxy + mad r11.xyz, r11.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r11.xywx + mad r10.z, r9.w, l(2.000000), l(-1.000000) + mul r11.xyz, r10.zzzz, r11.xyzx + mov r10.z, |r2.y| + add r10.z, r10.z, l(-0.700000) + mul_sat r10.z, r10.z, l(4.000000) + mad r11.w, r10.z, l(-2.000000), l(3.000000) + mul r10.z, r10.z, r10.z + mul r10.z, r10.z, r11.w + add r11.w, -cb0[229].z, cb0[229].y + mad r10.z, r10.z, r11.w, cb0[229].z + mul r11.xyz, r10.zzzz, r11.xyzx +else + mov r11.xyz, l(0,0,0,0) + mov r9.w, l(0) +endif +mad r10.z, -r3.y, r1.w, l(-0.200000) +if_nz r10.w + mul r12.xyz, r2.xywx, cb0[233].zzzz + mul r13.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r12.xyz, r12.xyzx, cb0[225].xxxx, r13.xyzx + max r10.w, -r2.y, l(0.000000) + min r10.w, r10.w, l(0.900000) + add r10.w, -r10.w, l(1.000000) + mul_sat r11.w, r10.z, l(-10.000000) + mad r12.w, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.w + max r11.w, r11.w, l(0.100000) + min r11.w, r11.w, l(1.000000) + mul r10.w, r10.w, r11.w + mad r12.xyz, r12.xyzx, r10.wwww, r5.xyzx + add r11.xyz, r11.xyzx, r12.xyzx + mul r12.xyz, r11.yyyy, cb5[1].xyzx + mad r11.xyw, cb5[0].xyxz, r11.xxxx, r12.xyxz + mad r11.xyz, cb5[2].xyzx, r11.zzzz, r11.xywx + add r11.xyz, r11.xyzx, cb5[3].xyzx + mad r12.x, r11.x, l(0.500000), cb5[4].x + mad r10.w, r11.y, l(0.500000), l(0.500000) + add r12.z, -r10.w, cb5[4].y + add r11.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r10.w, r11.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r10.w, r11.xyxx, t9.xxxx, s5, r10.w +else + mov r10.w, l(1.000000) +endif +mov_sat r11.x, r2.y +add r11.y, l(1.000000), -cb0[230].w +mad r11.x, r11.x, r11.y, cb0[230].w +add r11.yz, r5.xxzx, -cb0[44].xxzx +max r11.y, |r11.z|, |r11.y| +mul r11.z, r10.w, r11.x +mul r11.w, l(0.0500000119), cb0[222].w +mad r12.x, -cb0[222].w, l(0.700000), r11.y +div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w +mul_sat r11.w, r11.w, r12.x +mad r12.x, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r12.x +mad r10.w, -r11.x, r10.w, l(1.000000) +mad r10.w, r11.w, r10.w, r11.z +ge r11.z, r1.z, l(0.045000) +and r11.z, r11.z, l(0x3f800000) +mul r11.z, r10.w, r11.z +deriv_rty_coarse r12.xyz, r5.xyzx +deriv_rtx_coarse r13.xyz, r5.zxyz +mul r14.xyz, r12.xyzx, r13.xyzx +mad r12.xyz, r12.zxyz, r13.yzxy, -r14.xyzx +dp3 r11.w, r12.xyzx, r12.xyzx +max r11.w, r11.w, l(1.175494351E-38) +rsq r11.w, r11.w +mul r12.yzw, r11.wwww, r12.xxzy +mov_sat r13.x, r12.y +add r13.y, r13.x, l(-0.988000) +mul_sat r13.y, r13.y, l(1000.012878) +mad r13.z, r13.y, l(-2.000000), l(3.000000) +mul r13.y, r13.y, r13.y +mul r13.y, r13.y, r13.z +add r13.z, |r3.w|, l(-15.000000) +mul_sat r13.z, r13.z, l(0.015000) +add r13.z, -r13.z, l(1.000000) +lt r13.w, l(0.000488281250), cb0[223].y +mad r14.x, cb0[223].z, l(0.300000), l(0.687000) +add r13.x, r13.x, -r14.x +mul_sat r13.x, r13.x, l(-1000.012878) +mad r14.x, r13.x, l(-2.000000), l(3.000000) +mul r13.x, r13.x, r13.x +mul r13.x, r13.x, r14.x +mad r11.w, r12.x, r11.w, l(0.500000) +mul_sat r11.w, r11.w, l(2.500000) +mad r12.x, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r12.x +mul r11.w, r11.w, r13.x +lt r11.w, l(0.000488281250), r11.w +and r11.w, r11.w, r13.w +if_nz r11.w + mul r13.xw, |r12.zzzw|, |r12.zzzw| + add r11.w, r13.w, r13.x + div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w + mul r13.xw, r11.wwww, r13.xxxw + mul r14.xyz, r12.ywzy, l(0.000000, 1.000000, 0.000000, 0.000000) + mad r14.xyz, r12.zywz, l(1.000000, 0.000000, 0.000000, 0.000000), -r14.xyzx + dp2 r11.w, r14.xyxx, r14.xyxx + rsq r11.w, r11.w + mul r14.xyz, r11.wwww, r14.xyzx + mul r15.xyz, r12.ywzy, r14.xyzx + mad r15.xyz, r14.zxyz, r12.wzyw, -r15.xyzx + dp3 r11.w, r15.xyzx, r15.xyzx + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xyzx + add r16.xyz, r5.xyzx, r5.xyzx + round_ni r16.xyz, r16.xyzx + add r16.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + add r14.zw, r16.yyyy, r16.xxxz + dp2 r11.w, r14.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + lt r14.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.wwwz + lt r16.xy, r12.wzww, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r14.zw, r14.zzzw, -r16.xxxy + itof r14.zw, r14.zzzw + mul r16.xy, r5.xzxx, r14.zwzz + mul r12.x, r9.w, r11.w + add r14.z, -r11.w, l(1.000000) + mad r14.z, r14.z, l(0.700000), l(0.300000) + mul r17.xy, r12.xxxx, l(3.000000, 6.000000, 0.000000, 0.000000) + mad r12.x, -cb0[223].x, r14.z, r17.x + frc r18.x, r12.x + mad r12.x, cb0[223].x, l(-0.300000), r17.y + frc r18.y, r12.x + mul r11.w, r11.w, l(5.000000) + round_ni r11.w, r11.w + add r17.x, r11.w, l(1.000000) + mul r17.y, r5.y, r17.x + mov r5.w, l(0.100000) + mul r14.zw, r5.yyyw, r17.xxxy + frc r14.zw, r14.zzzw + add r17.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + add r17.xy, r14.zwzz, -r17.xyxx + add r17.xy, r17.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) + mul_sat r17.xy, r17.xyxx, l(5.00000048, 5.00000048, 0.000000, 0.000000) + mad r17.zw, r17.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) + mul r17.xy, r17.xyxx, r17.xyxx + mul r17.xy, r17.xyxx, r17.zwzz + add r17.zw, -r14.zzzw, r18.xxxy + max r17.xy, r17.zwzz, r17.xyxx + add r18.zw, -r18.xxxy, r14.zzzw + add r18.zw, r18.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) + mul r18.zw, r18.zzzw, l(0.000000, 0.000000, 5.00000048, 5.00000048) + max r18.zw, r18.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r19.xy, r18.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r18.zw, r18.zzzw, r18.zzzw + mul r18.zw, r18.zzzw, r19.xxxy + add r17.zw, r17.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + max r17.zw, r17.zzzw, r18.zzzw + ge r14.zw, r14.zzzw, r18.xxxy + and r14.zw, r14.zzzw, l(0, 0, 0x3f800000, 0x3f800000) + add r17.zw, -r17.xxxy, r17.zzzw + mad r14.zw, r14.zzzw, r17.zzzw, r17.xxxy + mad r11.w, r14.z, r14.z, l(-0.400000) + mul_sat r11.w, r11.w, l(1.66666663) + mad r12.x, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.x + mad r12.x, r14.w, l(2.000000), l(-1.000000) + mul r14.z, r11.w, l(0.010000) + mul r17.x, r12.x, r14.z + mad r17.x, r9.w, l(0.100000), r17.x + mul r14.z, r11.w, r14.z + mad r14.z, r14.z, r12.x, r9.w + mul r17.y, r9.w, r14.z + mov r16.z, r5.y + mad r17.zw, r16.yyyz, cb0[224].xxxy, r17.xxxy + sample_b_indexable(texture2d)(float,float,float,float) r18.xyzw, r17.zwzz, t11.xyzw, s2, cb0[108].x + mov r16.w, -r16.x + mad r16.xy, r16.wzww, cb0[224].xyxx, r17.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r16.xyxx, t11.xyzw, s2, cb0[108].x + mul r16.xyzw, r13.wwww, r16.xyzw + mad r16.xyzw, r18.xyzw, r13.xxxx, r16.xyzw + mad r13.xw, r16.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r9.w, r11.w, l(2.000000), l(-1.000000) + mad_sat r9.w, r9.w, l(0.800000), r14.w + mad r14.z, -r16.w, l(0.500000), l(1.000000) + mad r9.w, r9.w, r14.z, l(-0.700000) + mul_sat r9.w, r9.w, l(3.33333325) + mad r14.z, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r14.z + mul r12.x, r12.x, r16.w + mad_sat r11.w, r12.x, l(0.500000), r11.w + mad r11.w, r11.w, l(0.500000), l(0.100000) + max r9.w, r9.w, r11.w + add r11.w, -r9.w, l(1.000000) + max r11.w, r11.w, l(0.000000) + mul r12.x, r11.w, r11.w + mul r12.x, r12.x, r12.x + mul r11.w, r11.w, r12.x + ge r11.w, r16.z, r11.w + and r11.w, r11.w, l(0x3f800000) + mad r9.w, r9.w, l(0.700000), l(0.200000018) + mad r9.w, r11.w, r9.w, l(0.100000) + mul r9.w, r16.z, r9.w + mul r9.w, r9.w, cb0[223].y + mul r9.w, r9.w, l(0.330000) + mul r11.w, r11.z, cb0[222].x + mul r11.w, r13.z, r11.w + mul r9.w, r9.w, r11.w + dp2 r11.w, r13.xwxx, r13.xwxx + min r11.w, r11.w, l(1.000000) + add r11.w, -r11.w, l(1.000000) + sqrt r11.w, r11.w + max r11.w, r11.w, l(0.000488281250) + mul_sat r12.x, r9.w, l(10.000000) + mad r14.z, r12.x, l(-2.000000), l(3.000000) + mul r12.x, r12.x, r12.x + mul r12.x, r12.x, r14.z + mul r12.x, r12.x, cb0[223].y + mul r16.xy, r12.xxxx, r13.xwxx + add r12.x, l(-1.500000), cb0[223].y + mul_sat r12.x, r12.x, l(0.666666687) + mad r13.x, r12.x, l(-2.000000), l(3.000000) + mul r12.x, r12.x, r12.x + mul r12.x, r12.x, r13.x + mul r13.x, r12.x, l(-0.200000) + mad r11.w, -r12.x, l(-0.200000), r11.w + mad r16.z, r9.w, r11.w, r13.x + dp3 r11.w, r16.xyzx, r16.xyzx + max r11.w, r11.w, l(1.175494351E-38) + rsq r11.w, r11.w + mul r16.xyz, r11.wwww, r16.xyzx + mov r17.x, r14.y + mov r17.y, r15.x + mov r17.z, r12.z + dp3 r17.x, r17.xyzx, r16.xyzx + mov r15.w, r12.y + dp2 r17.y, r15.ywyy, r16.yzyy + mov r12.y, r14.x + mov r12.z, r15.z + dp3 r17.z, r12.yzwy, r16.xyzx + mad r12.xyz, -r3.xyzx, r1.wwww, r17.xyzx + mad r12.xyz, r9.wwww, r12.xyzx, r2.xywx + mul r9.w, r9.w, cb0[223].y + mul r9.w, r9.w, l(0.330000) +else + mov r12.xyz, r2.xywx + mov r9.w, l(0) +endif +lt r13.xw, l(0.000488281250, 0.000000, 0.000000, 0.000488281250), cb0[227].yyyw +or r11.w, r13.w, r13.x +lt r13.x, l(0.000488281250), r13.y +and r11.w, r11.w, r13.x +if_nz r11.w + mul r14.xyz, r2.ywxy, l(1.000000, 0.000000, 0.000000, 0.000000) + mad r14.xyz, r2.xywx, l(0.000000, 0.000000, 1.000000, 0.000000), -r14.xyzx + dp2 r11.w, r14.xzxx, r14.xzxx + rsq r11.w, r11.w + mul r14.xyz, r11.wwww, r14.xyzx + mul r15.xyz, r2.ywxy, r14.xyzx + mad r15.xyz, r14.zxyz, r2.wxyw, -r15.xyzx + dp3 r11.w, r15.xyzx, r15.xyzx + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xzyx + mul r13.xw, -r5.xxxz, cb0[228].xxxy + frc r14.yw, r13.xxxw + round_ni r13.xw, r13.xxxw + dp2 r11.w, r13.xwxx, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + add r13.x, r11.w, cb0[227].x + frc r13.x, r13.x + mul r13.w, cb0[228].z, cb0[228].z + mul r13.x, r13.w, r13.x + round_ni r13.x, r13.x + div r13.w, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[228].z + mad r16.xy, -r5.xzxx, cb0[228].xyxx, cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.xy, r16.xyxx, t12.zwxy, s2, cb0[108].x + mad r17.xy, -r5.xzxx, cb0[228].xyxx, -cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.zw, r17.xyxx, t12.xyzw, s2, cb0[108].x + mul r16.xyzw, r16.xyzw, cb0[227].wwww + mad r16.xyzw, r16.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -cb0[227].wwww + ge r11.w, l(0.500000), r11.w + and r11.w, r11.w, l(0x3f800000) + add r17.xy, -r14.ywyy, r14.wyww + mad r14.yw, r11.wwww, r17.xxxy, r14.yyyw + div r11.w, r13.x, cb0[228].z + ge r17.x, r11.w, -r11.w + frc r11.w, |r11.w| + movc r11.w, r17.x, r11.w, -r11.w + mul r11.w, r11.w, cb0[228].z + mul r17.x, r11.w, r13.w + add r17.zw, l(0.000000, 0.000000, -0.050000, -1.000000), cb0[228].wwwz + mul r11.w, r13.w, r13.x + round_ni r11.w, r11.w + add r11.w, -r11.w, r17.w + mul r17.y, r11.w, r13.w + mad r13.xw, r14.yyyw, r13.wwww, r17.xxxy + frc r13.xw, r13.xxxw + sample_b_indexable(texture2d)(float,float,float,float) r13.xw, r13.xwxx, t12.xzwy, s1, cb0[108].x + mul r13.xw, r13.xxxw, cb0[227].yyyy + mad r13.xw, r13.xxxw, l(2.000000, 0.000000, 0.000000, 2.000000), -cb0[227].yyyy + add r14.yw, r16.zzzw, r16.xxxy + add r16.xy, r13.xwxx, r14.ywyy + dp2 r11.w, r16.xyxx, r16.xyxx + min r11.w, r11.w, l(1.000000) + add r11.w, -r11.w, l(1.000000) + sqrt r11.w, r11.w + max r16.z, r11.w, l(0.000488281250) + dp3 r11.w, r16.xyzx, r16.xyzx + rsq r11.w, r11.w + mul r16.xyz, r11.wwww, r16.xyzx + mov r15.w, r2.x + dp2 r18.x, r15.xwxx, r16.yzyy + mov r19.x, r14.z + mov r19.y, r15.z + mov r19.z, r2.y + dp3 r18.y, r19.xyzx, r16.xyzx + mov r15.x, r14.x + mov r15.z, r2.w + dp3 r18.z, r15.xyzx, r16.xyzx + mul r11.z, r11.z, cb0[222].x + mul r11.z, r13.y, r11.z + max r11.w, l(0.000488281250), cb0[228].w + mov_sat r17.z, r17.z + add r13.x, -r11.w, r17.z + add r11.w, r2.z, -r11.w + div r13.x, l(1.000000, 1.000000, 1.000000, 1.000000), r13.x + mul_sat r11.w, r11.w, r13.x + mad r13.x, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r13.x + mul r11.z, r11.w, r11.z + mul r11.z, r13.z, r11.z + mad r3.xyz, -r3.xyzx, r1.wwww, r18.xyzx + mad r12.xyz, r11.zzzz, r3.xyzx, r2.xywx +endif +min r1.w, r10.y, r10.x +mul r3.x, r11.x, cb0[230].z +mad r3.y, -cb0[230].z, r11.x, l(1.000000) +mad r3.x, r10.w, r3.y, r3.x +mad r3.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r3.z, r11.y, -cb0[222].w +div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y +mul_sat r3.y, r3.y, r3.z +mad r3.z, r3.y, l(-2.000000), l(3.000000) +mul r3.y, r3.y, r3.y +mul r3.y, r3.y, r3.z +add r3.z, -r3.x, cb0[230].y +mad r3.x, r3.y, r3.z, r3.x +add r3.x, -r3.x, l(1.000000) +mul r3.y, r3.x, r10.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r3.z, -r2.z, l(1.000000) +mad_sat r10.w, r3.z, cb0[222].z, cb0[222].y +mad_sat r10.w, r9.w, cb0[224].z, r10.w +add r11.x, -r10.w, l(1.000000) +mad r10.w, r1.x, r11.x, r10.w +mul_sat r10.z, r10.z, l(3.33333325) +mad r11.x, r10.z, l(-2.000000), l(3.000000) +mul r10.z, r10.z, r10.z +mad r10.z, -r11.x, r10.z, l(1.000000) +mul r11.x, r10.w, cb0[222].x +add r11.y, -r1.x, l(1.000000) +mul r11.x, r11.y, r11.x +mul r11.x, r10.z, r11.x +mad r11.x, r11.x, l(-0.750000), l(1.000000) +mad r10.w, r10.w, l(-0.299999952), l(0.900000) +sqrt r11.y, r3.z +add r10.w, r10.w, r11.y +add_sat r10.w, r10.w, l(-0.600000) +max r10.w, r3.z, r10.w +min r10.w, r10.w, l(0.990000) +add_sat r11.y, l(2.000000), -cb0[222].x +mul r11.y, r11.y, cb0[222].x +mul r10.z, r10.z, r11.y +mad r3.x, -r10.x, r3.x, l(1.000000) +mul r3.x, r3.x, r10.z +add r10.x, -r3.z, r10.w +mad r3.x, r3.x, r10.x, r3.z +add r3.x, -r3.x, l(1.000000) +mul_sat r3.z, r9.w, l(20.000000) +mad r9.w, r3.z, l(-2.000000), l(3.000000) +mul r3.z, r3.z, r3.z +mul r3.z, r3.z, r9.w +mad r3.z, r3.z, l(-0.900000), l(1.000000) +mul r9.w, r3.z, r3.x +add r10.x, r10.y, l(-1.000000) +mad r10.x, r1.z, r10.x, l(1.000000) +add r10.y, -r1.z, l(1.000000) +movc r10.xy, r8.wwww, r10.xyxx, l(1.000000,1.000000,0,0) +min r1.z, r9.w, r10.x +mad r3.x, r3.x, r3.z, -r1.z +mad r1.z, r1.w, r3.x, r1.z +add r2.z, -r1.z, r2.z +mad r13.w, r3.y, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r10.xzw, r0.xyzz, t28.xwyz +min r1.z, r11.x, r10.y +add r2.z, -r1.z, r11.x +mad r1.z, r1.w, r2.z, r1.z +add r1.w, -r1.z, l(1.000000) +mad r1.z, r3.y, r1.w, r1.z +mul r3.xyz, r1.zzzz, r10.xzwx +mul r11.xyz, r1.xxxx, r3.xyzx +mad r10.xyz, r10.xzwx, r1.zzzz, -r11.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz +dp3 r2.z, r12.xyzx, r9.xyzx +max r11.x, r2.z, l(0.000000) +mul r3.y, r13.w, r13.w +mul r14.x, r11.x, r11.x +mul r14.z, r11.x, r14.x +mul r2.z, r3.y, r3.y +mul r3.z, r3.y, r2.z +mov r11.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r15.x, l(3.327070, 1.000000, 0.000000, 0.000000), r11.xyxx +dp2 r15.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r11.xzxx +mov r3.x, l(1.000000) +dp2 r8.w, r15.xyxx, r3.xyxx +mov r14.yw, l(0,9.044010,0,1.000000) +dp3 r15.x, l(3.596850, -1.367720, 1.000000, 0.000000), r14.xzwx +dp3 r15.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r14.xyzx +mov r16.x, l(5.565890) +mov r16.yz, r14.xxzx +dp3 r15.z, l(1.000000, 19.788601, -20.212299, 0.000000), r16.xyzx +dp3 r9.w, r15.xyzx, r3.xyzx +div r8.w, r8.w, r9.w +dp2 r15.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r11.xwxx +mov r14.x, l(1.296780) +mov r14.y, r11.x +dp2 r15.y, l(1.000000, -0.755907, 0.000000, 0.000000), r14.xyxx +dp2 r9.w, r15.xyxx, r3.xyxx +dp3 r15.x, l(2.923380, 59.418800, 1.000000, 0.000000), r14.yzwy +mov r14.xw, l(20.322500,0,0,121.563004) +dp3 r15.y, l(1.000000, -27.030199, 222.591995, 0.000000), r14.xyzx +dp3 r15.z, l(626.130005, 316.627014, 1.000000, 0.000000), r14.yzwy +dp3 r3.x, r15.xyzx, r3.xyzx +div r3.x, r9.w, r3.x +mad r11.yzw, r1.xxzw, r8.wwww, r3.xxxx +add r3.x, r3.x, r8.w +ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t7.xyzw +lt r0.z, l(0.001000), r14.x +if_nz r0.z + dp3 r0.z, -r9.xyzx, r12.xyzx + add r0.z, r0.z, r0.z + mad r15.xyz, r12.xyzx, -r0.zzzz, -r9.xyzx + dp3 r0.z, -cb3[0].xyzx, r15.xyzx + mad r16.xyz, cb3[0].xyzx, r0.zzzz, r15.xyzx + lt r0.z, r0.z, cb3[4].z + dp3 r3.z, r16.xyzx, r16.xyzx + max r3.z, r3.z, l(0.0000610351562) + rsq r3.z, r3.z + mul r16.xyz, r3.zzzz, r16.xyzx + mul r16.xyz, r16.xyzx, cb3[4].yyyy + mad r16.xyz, -cb3[0].xyzx, cb3[4].zzzz, r16.xyzx + dp3 r3.z, r16.xyzx, r16.xyzx + rsq r3.z, r3.z + mul r16.xyz, r3.zzzz, r16.xyzx + movc r15.xyz, r0.zzzz, r16.xyzx, r15.xyzx + mad r16.xyz, r8.xyzx, r7.wwww, r15.xyzx + dp3 r0.z, r16.xyzx, r16.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r16.xyz, r0.zzzz, r16.xyzx + dp3_sat r13.y, r15.xyzx, r12.xyzx + dp3_sat r0.z, r12.xyzx, r16.xyzx + min r13.z, r11.x, l(1.000000) + mad r3.z, r0.z, r2.z, -r0.z + mad r0.z, r3.z, r0.z, l(1.000000) + dp3_sat r3.z, r9.xyzx, r16.xyzx + add r3.z, -r3.z, l(1.000000) + mul r8.w, r3.z, r3.z + mul r8.w, r8.w, r8.w + mul r9.w, r3.z, r8.w + add r10.w, -r13.w, l(1.000000) + mad r14.z, -r10.w, l(0.383026), l(-0.0761947036) + mad r14.z, r10.w, r14.z, l(1.049970) + mad r10.w, r10.w, r14.z, l(0.409255) + min r10.w, r10.w, l(0.999000) + add r14.z, -r10.w, l(1.000000) + add r16.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx + mad r3.z, -r8.w, r3.z, l(1.000000) + mad r17.xyz, r1.xzwx, r3.zzzz, r9.wwww + mul r0.z, r0.z, r0.z + div r0.z, r2.z, r0.z + mad r18.xy, -r13.zyzz, r2.zzzz, r13.zyzz + mad r18.xy, r18.xyxx, r13.zyzz, r2.zzzz + sqrt r18.xy, r18.xyxx + mul r18.xy, r13.yzyy, r18.xyxx + add r2.z, r18.y, r18.x + add r2.z, r2.z, l(0.000100) + div r2.z, l(0.500000), r2.z + mul r0.z, r0.z, r2.z + mul r17.xyz, r0.zzzz, r17.xyzx + min r17.xyz, r17.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r18.xyzw, r13.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r18.xyxx, t13.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r18.zwzz, t13.yzxw, s1, l(0.000000) + mul r0.z, r0.z, r2.z + mul r0.z, r10.w, r0.z + div r0.z, r0.z, r14.z + mul r18.xyz, r16.xyzx, r16.xyzx + mul r18.xyz, r0.zzzz, r18.xyzx + mad r16.xyz, -r16.xyzx, r14.zzzz, l(1.000000, 1.000000, 1.000000, 0.000000) + div r16.xyz, r18.xyzx, r16.xyzx + add r16.xyz, r16.xyzx, r17.xyzx + mul r16.xyz, r16.xyzx, cb3[4].xxxx + max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r16.xyz, r16.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + dp3_sat r0.z, r15.xyzx, r2.xywx + mul r15.xyz, r0.zzzz, r10.xyzx + mad r15.xyz, r16.xyzx, r13.yyyy, r15.xyzx + mul r15.xyz, r15.xyzx, cb3[1].xyzx + mov r14.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r14.yzw, r14.xyxx, t8.wxyz, s1, cb0[108].x + add r0.z, -r14.x, l(1.000000) + mad r14.xyz, r15.xyzx, r14.yzwy, -r15.xyzx + mad r14.xyz, r0.zzzz, r14.xyzx, r15.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t14.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r14.xyz, r0.zzzz, r14.xyzx +else + mov r14.xyz, l(0,0,0,0) +endif +mul r13.yz, r4.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r13.yz, r13.yyzy +mad r0.z, r13.z, cb2[1].y, r13.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r2.z, -cb0[85].y, cb2[2].w, |r3.w| +round_ni r2.z, r2.z +add r3.z, l(-1.000000), cb2[1].w +max r8.w, r2.z, l(0.000000) +min r3.z, r3.z, r8.w +mul r8.w, r3.z, l(8.000000) +ftoi r8.w, r8.w +ge r2.z, r3.z, r2.z +iadd r3.z, r8.w, cb0[110].y +dp3 r8.w, -r9.xyzx, r12.xyzx +add r8.w, r8.w, r8.w +mad r15.xyz, r12.xyzx, -r8.wwww, -r9.xyzx +min r13.x, r11.x, l(1.000000) +add r8.w, -r13.w, l(1.000000) +mad r9.w, -r8.w, l(0.383026), l(-0.0761947036) +mad r9.w, r8.w, r9.w, l(1.049970) +mad r8.w, r8.w, r9.w, l(0.409255) +min r8.w, r8.w, l(0.999000) +add r9.w, -r8.w, l(1.000000) +add r16.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx +mad r13.yz, r13.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r10.w, r13.yzyy, t13.yzwx, s1, l(0.000000) +mad r17.xyz, -r16.xyzx, r9.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r16.xyz, r16.xyzx, r16.xyzx +mov r18.w, l(1.000000) +mov r19.y, l(1.000000) +mov r20.z, r13.w +mov r21.xyz, l(0,0,0,0) +mov r11.x, l(1.000000) +mov r13.y, l(0) +loop + ilt r13.z, l(7), r13.y + breakc_nz r13.z + iadd r13.z, r0.z, r13.y + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r13.z, r13.z, l(0), t0.xxxx + iadd r14.w, r3.z, r13.y + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r14.w, r14.w, l(0), t0.xxxx + and r13.z, r13.z, r14.w + and r13.z, r2.z, r13.z + ishl r14.w, r13.y, l(5) + mov r22.xyz, l(0,0,0,0) + mov r15.w, r11.x + mov r16.w, r13.z + loop + breakc_z r16.w + firstbit_lo r17.w, r16.w + ishl r19.z, l(1), r17.w + xor r19.z, r16.w, r19.z + iadd r17.w, r14.w, r17.w + bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r17.wwww, l(1, 3, 5, 6) + bfi r19.w, l(29), l(3), r17.w, l(7) + ftou r20.w, cb3[r23.z + 6].w + ieq r20.w, r20.w, l(1) + if_nz r20.w + add r18.xyz, r5.xyzx, -cb3[r23.x + 6].xyzx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.z + 6].xzyx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.w + 6].yxzy + ushr r26.xyz, cb3[r23.z + 6].xzyx, l(16, 16, 16, 0) + ushr r27.xyz, cb3[r23.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyw, r27.yxyz + mov r28.xz, r24.xxzx + mov r28.yw, r26.xxxz + dp4 r20.w, r18.xyzw, r28.xyzw + mov r26.x, r24.y + mov r26.z, r25.y + mov r26.w, r27.x + dp4 r21.w, r18.xyzw, r26.xyzw + mov r27.xz, r25.xxzx + dp4 r18.x, r18.xyzw, r27.xyzw + max r18.y, |r20.w|, |r21.w| + max r18.x, |r18.x|, r18.y + mad r18.y, cb3[r19.w + 6].x, l(0.500000), l(0.500000) + add r18.x, -r18.y, r18.x + mad r18.y, -cb3[r19.w + 6].x, l(0.500000), l(0.500000) + div_sat r18.x, r18.x, r18.y + add r18.x, -r18.x, l(1.000000) + mul r18.x, r18.x, r18.x + else + mov r18.x, l(1.000000) + endif + lt r18.y, l(0.500000), cb3[r23.y + 6].z + lt r18.z, r18.x, l(0.001000) + or r18.z, r18.y, r18.z + if_nz r18.z + mov r16.w, r19.z + continue + endif + ishl r18.z, r17.w, l(3) + bfi r17.w, l(29), l(3), r17.w, l(2) + lt r20.w, cb3[r18.z + 6].w, l(1.500000) + if_nz r20.w + mad r20.w, cb3[r17.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r20.w, -|cb3[r17.w + 6].x| + add r24.y, -r24.x, cb3[r17.w + 6].y + add r20.w, -|r24.x|, l(1.000000) + add r20.w, -|r24.y|, r20.w + ge r21.w, cb3[r17.w + 6].x, l(0.000000) + max r22.w, r20.w, l(0.000488281250) + movc r24.z, r21.w, r22.w, -r22.w + dp3 r22.w, r24.xyzx, r24.xyzx + rsq r22.w, r22.w + mul r25.xyz, r22.wwww, r24.xyzx + add r26.xyz, -r5.xyzx, cb3[r23.x + 6].xyzx + dp3 r22.w, r26.xyzx, r26.xyzx + rsq r23.z, r22.w + mul r27.xyz, r23.zzzz, r26.xyzx + dp3_sat r19.x, r12.xyzx, r27.xyzx + ftoi r24.z, cb3[r19.w + 6].w + mul r28.xyz, r25.xyzx, cb3[r17.w + 6].zzzz + mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + mad r30.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + ftou r25.w, cb3[r18.z + 6].w + and r25.w, r25.w, l(1) + ieq r26.w, r25.w, l(0) + not r26.w, r26.w + lt r27.w, l(0.000000), cb3[r17.w + 6].z + and r26.w, r26.w, r27.w + dp3 r27.w, r29.xyzx, r29.xyzx + sqrt r27.w, r27.w + dp3 r28.w, r30.xyzx, r30.xyzx + sqrt r28.w, r28.w + dp3 r29.w, r12.xyzx, r29.xyzx + div r29.w, r29.w, r27.w + dp3 r30.w, r12.xyzx, r30.xyzx + div r30.w, r30.w, r28.w + add r29.w, r29.w, r30.w + mul_sat r31.x, r29.w, l(0.500000) + dp3 r29.w, r29.xyzx, r30.xyzx + mad r27.w, r27.w, r28.w, r29.w + mad r27.w, r27.w, l(0.500000), l(1.000000) + div r31.y, l(1.000000, 1.000000, 1.000000, 1.000000), r27.w + movc r20.xy, r26.wwww, r31.xyxx, r19.xyxx + lt r27.w, cb3[r23.w + 6].w, l(0.000000) + if_nz r27.w + mul r27.w, cb3[r23.x + 6].w, cb3[r23.x + 6].w + mul r27.w, r22.w, r27.w + mad r27.w, -r27.w, r27.w, l(1.000000) + max r27.w, r27.w, l(0.000000) + add r22.w, r22.w, l(1.000000) + div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w + and r28.w, r26.w, l(0x3f800000) + add r29.w, r20.y, -r22.w + mad r22.w, r28.w, r29.w, r22.w + mul r27.w, r27.w, r27.w + mul r22.w, r22.w, r27.w + else + mul r30.xyz, r26.xyzx, cb3[r23.x + 6].wwww + dp3 r27.w, r30.xyzx, r30.xyzx + min r27.w, r27.w, l(1.000000) + add r27.w, -r27.w, l(1.000000) + log r27.w, r27.w + mul r27.w, r27.w, cb3[r23.w + 6].w + exp r27.w, r27.w + mul r22.w, r20.y, r27.w + endif + dp3 r20.y, r27.xyzx, -r25.xyzx + add r20.y, r20.y, -cb3[r17.w + 6].z + mul_sat r20.y, r20.y, cb3[r17.w + 6].w + mul r20.y, r20.y, r20.y + movc r20.y, r25.w, l(1.000000), r20.y + mul r20.y, r20.y, r22.w + not r22.w, r26.w + ige r25.x, r24.z, l(0) + and r22.w, r22.w, r25.x + if_nz r22.w + if_z r25.w + ishl r22.w, r24.z, l(2) + mul r25.xyz, r5.yyyy, cb6[r22.w + 33].xywx + mad r25.xyz, cb6[r22.w + 32].xywx, r5.xxxx, r25.xyzx + mad r25.xyz, cb6[r22.w + 34].xywx, r5.zzzz, r25.xyzx + add r25.xyz, r25.xyzx, cb6[r22.w + 35].xywx + div_sat r25.xy, r25.xyxx, r25.zzzz + mad r25.xy, r25.xyxx, cb6[r24.z + 0].zwzz, cb6[r24.z + 0].xyxx + else + ishl r22.w, r24.z, l(2) + dp3 r30.x, -r26.xyzx, cb6[r22.w + 32].xyzx + dp3 r30.y, -r26.xyzx, cb6[r22.w + 33].xyzx + dp3 r30.z, -r26.xyzx, cb6[r22.w + 34].xyzx + lt r22.w, |r30.x|, |r30.y| + and r22.w, r22.w, l(1) + dp2 r25.z, |r30.xyxx|, icb[r22.w + 0].xyxx + lt r25.z, r25.z, |r30.z| + movc r22.w, r25.z, l(2), r22.w + dp3 r25.z, r30.xyzx, icb[r22.w + 0].xyzx + lt r25.z, r25.z, l(0.000000) + bfi r22.w, l(31), l(1), r22.w, r25.z + ushr r25.z, r22.w, l(1) + dp3 r25.z, r30.xyzx, icb[r25.z + 0].xyzx + div r27.w, l(0.000244140625), cb6[r24.z + 0].w + add r27.w, -r27.w, l(0.500000) + utof r28.w, r22.w + ult r29.w, r22.w, l(2) + and r29.w, r29.w, l(2) + dp2 r29.w, r30.xzxx, icb[r29.w + 0].xzxx + mul r29.w, r29.w, icb[r22.w + 4].z + div r29.w, r29.w, |r25.z| + mad r28.w, r29.w, r27.w, r28.w + add r28.w, r28.w, l(0.500000) + mul_sat r31.x, r28.w, l(0.166666672) + iadd r28.w, l(-1), icb[r22.w + 4].y + dp2 r28.w, r30.yzyy, icb[r28.w + 0].xyxx + mul r22.w, r28.w, icb[r22.w + 4].w + div r22.w, r22.w, |r25.z| + mad_sat r31.y, -r22.w, r27.w, l(0.500000) + mad r25.xy, r31.xyxx, cb6[r24.z + 0].zwzz, cb6[r24.z + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r22.w, r25.xyxx, t15.yzwx, s1, l(0.000000) + mul r20.y, r20.y, r22.w + endif + lt r22.w, l(0.000000), r20.y + if_nz r22.w + if_z r25.w + ftoi r24.z, cb3[r23.y + 6].x + else + add r25.xyz, r5.xyzx, -cb3[r23.x + 6].xyzx + lt r30.xyz, |r25.yzzy|, |r25.xxyx| + and r25.w, r30.y, r30.x + lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ushr r27.w, cb3[r17.w + 6].w, l(24) + ubfe r30.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r17.w + 6].wwww + movc r25.x, r25.x, r27.w, r30.x + and r27.w, l(255), cb3[r17.w + 6].w + movc r25.y, r25.y, r30.y, r27.w + ubfe r27.w, l(8), l(8), cb3[r23.y + 6].x + and r28.w, l(255), cb3[r23.y + 6].x + movc r25.z, r25.z, r27.w, r28.w + movc r25.y, r30.z, r25.y, r25.z + movc r25.x, r25.w, r25.x, r25.y + ilt r25.y, r25.x, l(80) + movc r24.z, r25.y, r25.x, l(-1) + endif + ishl r25.x, r24.z, l(2) + mad r25.yzw, r27.xxyz, cb4[r24.z + 288].xxxx, r5.xxyz + mul r27.w, l(5.000000), cb4[r24.z + 288].y + mad r25.yzw, r12.xxyz, r27.wwww, r25.yyzw + mul r30.xyzw, r25.zzzz, cb4[r25.x + 65].xyzw + mad r30.xyzw, cb4[r25.x + 64].xyzw, r25.yyyy, r30.xyzw + mad r30.xyzw, cb4[r25.x + 66].xyzw, r25.wwww, r30.xyzw + add r25.xyzw, r30.xyzw, cb4[r25.x + 67].xyzw + div r25.xyz, r25.xyzx, r25.wwww + ge r30.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ge r31.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r32.xy, -cb4[r24.z + 344].xyxx, cb4[r24.z + 344].zwzz + mad r25.xy, r25.xyxx, r32.xyxx, cb4[r24.z + 344].xyxx + mad r32.xy, r25.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r32.xy, r32.xyxx + mad r25.xy, r25.xyxx, cb4[400].zwzz, -r32.xyxx + add r33.xyzw, r25.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r34.xyzw, r33.xxzz, r33.xxzz + add r32.zw, -r25.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r33.xz, r25.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r35.xy, r25.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r36.xy, r32.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r35.xy, -r35.xyxx, r35.xyxx, r33.ywyy + add r35.xy, r35.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r35.xy, r35.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r34.xz, r34.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r25.xy, r34.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r25.xyxx + mul r37.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r25.xy, -r33.xzxx, r33.xzxx, r32.zwzz + add r25.xy, r25.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r38.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r25.xy, r33.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r37.z, r38.x + mov r37.w, r25.x + mov r36.z, r35.x + mov r36.w, r34.x + add r33.xyzw, r36.zwxz, r37.zwxz + mov r38.z, r37.y + mov r38.w, r25.y + mov r35.z, r36.y + mov r35.w, r34.z + add r25.xyw, r35.zyzw, r38.zyzw + div r34.xyz, r36.xzwx, r33.zwyz + add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r34.xyz, r34.yxzy, cb4[400].xxxx + div r35.xyz, r35.zywz, r25.xywx + add r35.xyz, r35.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r35.xyz, r35.xyzx, cb4[400].yyyy + mov r34.w, r35.x + mad r36.xyzw, r32.xyxy, cb4[400].xyxy, r34.ywxw + mad r32.zw, r32.xxxy, cb4[400].xxxy, r34.zzzw + mov r35.w, r34.y + mov r34.yw, r35.yyyz + mad r37.xyzw, r32.xyxy, cb4[400].xyxy, r34.xyzy + mad r35.xyzw, r32.xyxy, cb4[400].xyxy, r35.wywz + mad r34.xyzw, r32.xyxy, cb4[400].xyxy, r34.xwzw + mul r38.xyzw, r25.xxxy, r33.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r36.xyxx, t6.xxxx, s4, r25.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r27.w, r36.zwzz, t6.xxxx, s4, r25.z + mul r27.w, r27.w, r38.y + mad r25.x, r38.x, r25.x, r27.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r27.w, r32.zwzz, t6.xxxx, s4, r25.z + mad r25.x, r38.z, r27.w, r25.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r27.w, r35.xyxx, t6.xxxx, s4, r25.z + mad r25.x, r38.w, r27.w, r25.x + mul r32.xyzw, r25.yyww, r33.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.y, r37.xyxx, t6.xxxx, s4, r25.z + mad r25.x, r32.x, r25.y, r25.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.y, r37.zwzz, t6.xxxx, s4, r25.z + mad r25.x, r32.y, r25.y, r25.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.y, r35.zwzz, t6.xxxx, s4, r25.z + mad r25.x, r32.z, r25.y, r25.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.y, r34.xyxx, t6.xxxx, s4, r25.z + mad r25.x, r32.w, r25.y, r25.x + ige r25.y, r24.z, l(0) + or r30.xyz, r30.xyzx, r31.xyzx + or r27.w, r30.y, r30.x + or r27.w, r30.z, r27.w + and r28.w, r25.z, l(0x7fffffff) + ult r28.w, l(0x7f800000), r28.w + or r27.w, r27.w, r28.w + mul r25.w, r25.w, r33.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r34.zwzz, t6.xxxx, s4, r25.z + mad r25.x, r25.w, r25.z, r25.x + add r25.x, r25.x, l(-1.000000) + mad r24.z, cb4[r24.z + 288].w, r25.x, l(1.000000) + movc r24.z, r27.w, l(1.000000), r24.z + movc r24.z, r25.y, r24.z, l(1.000000) + else + mov r24.z, l(1.000000) + endif + if_nz r26.w + dp3 r25.x, r15.xyzx, r28.xyzx + mul_sat r25.y, r23.z, cb3[r17.w + 6].z + mad r25.y, r25.y, l(0.500000), r3.y + min r25.y, r25.y, l(1.000000) + div r25.y, r3.y, r25.y + mad r30.xyz, r15.xyzx, r25.xxxx, -r28.xyzx + dp3 r25.z, r29.xyzx, r30.xyzx + mul r25.x, r25.x, r25.x + mad r25.x, cb3[r17.w + 6].z, cb3[r17.w + 6].z, -r25.x + div_sat r25.x, r25.z, r25.x + mad r25.xzw, r28.xxyz, r25.xxxx, r29.xxyz + dp3 r27.w, r25.xzwx, r25.xzwx + rsq r27.w, r27.w + mul r27.xyz, r25.xzwx, r27.wwww + else + mov r25.y, l(1.000000) + endif + if_nz r22.w + mul_sat r22.w, r23.z, cb3[r19.w + 6].y + mad r25.xzw, r8.xxyz, r7.wwww, r27.xxyz + dp3 r23.z, r25.xzwx, r25.xzwx + max r23.z, r23.z, l(0.0000610351562) + rsq r23.z, r23.z + mul r25.xzw, r23.zzzz, r25.xxzw + max r20.w, r20.w, l(5.960464478E-08) + movc r24.w, r21.w, r20.w, -r20.w + dp3 r20.w, r24.xywx, r24.xywx + rsq r20.w, r20.w + mul r24.xyw, r20.wwww, r24.xyxw + mul r24.xyw, r24.xyxw, cb3[r17.w + 6].zzzz + mad r27.xyz, -r24.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + mad r24.xyw, r24.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r26.xyxz + dp3 r20.w, r12.xyzx, r27.xyzx + dp3 r21.w, r27.xyzx, r27.xyzx + sqrt r21.w, r21.w + div r20.w, r20.w, r21.w + dp3 r21.w, r12.xyzx, r24.xywx + dp3 r23.z, r24.xywx, r24.xywx + sqrt r23.z, r23.z + div r21.w, r21.w, r23.z + add r20.w, r20.w, r21.w + mul_sat r20.w, r20.w, l(0.500000) + movc r19.x, r26.w, r20.w, r19.x + dp3_sat r20.w, r12.xyzx, r25.xzwx + dp3_sat r21.w, r9.xyzx, r25.xzwx + lt r23.z, l(0.000000), r22.w + mul r22.w, r22.w, r22.w + mad r24.x, r21.w, l(3.600000), l(0.400000) + div r22.w, r22.w, r24.x + mad r22.w, r13.w, r13.w, r22.w + min r22.w, r22.w, l(1.000000) + movc r22.w, r23.z, r22.w, r3.y + mul r22.w, r22.w, r22.w + mad r23.z, r20.w, r22.w, -r20.w + mad r20.w, r23.z, r20.w, l(1.000000) + add r21.w, -r21.w, l(1.000000) + mul r23.z, r21.w, r21.w + mul r23.z, r23.z, r23.z + mul r24.x, r21.w, r23.z + mad r21.w, -r23.z, r21.w, l(1.000000) + mad r24.xyw, r1.xzxw, r21.wwww, r24.xxxx + mul r20.w, r20.w, r20.w + div r20.w, r22.w, r20.w + mul r20.w, r25.y, r20.w + mad r21.w, -r13.x, r22.w, r13.x + mad r21.w, r21.w, r13.x, r22.w + sqrt r21.w, r21.w + mad r23.z, -r20.x, r22.w, r20.x + mad r22.w, r23.z, r20.x, r22.w + sqrt r22.w, r22.w + mul r22.w, r13.x, r22.w + mad r21.w, r20.x, r21.w, r22.w + add r21.w, r21.w, l(0.000100) + div r21.w, l(0.500000), r21.w + mul r20.w, r20.w, r21.w + mul r24.xyw, r20.wwww, r24.xyxw + min r24.xyw, r24.xyxw, l(2048.000000, 2048.000000, 0.000000, 2048.000000) + mad r25.xy, r20.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r20.w, r25.xyxx, t13.yzwx, s1, l(0.000000) + mul r20.w, r10.w, r20.w + mul r20.w, r8.w, r20.w + div r20.w, r20.w, r9.w + mul r25.xyz, r16.xyzx, r20.wwww + div r25.xyz, r25.xyzx, r17.xyzx + add r24.xyw, r24.xyxw, r25.xyxz + mul r24.xyw, r24.xyxw, cb3[r19.w + 6].zzzz + max r24.xyw, r24.xyxw, l(0.000000, 0.000000, 0.000000, 0.000000) + min r24.xyw, r24.xyxw, l(1000.000000, 1000.000000, 0.000000, 1000.000000) + mul r25.xyz, r10.xyzx, r19.xxxx + mad r24.xyw, r24.xyxw, r20.xxxx, r25.xyxz + mul r20.xyw, r20.yyyy, cb3[r18.z + 6].xyxz + mul r20.xyw, r24.zzzz, r20.xyxw + mul r20.xyw, r18.xxxx, r20.xyxw + mul r20.xyw, r20.xyxw, r24.xyxw + else + mov r20.xyw, l(0,0,0,0) + endif + else + if_z r18.y + mad r18.x, cb3[r17.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r18.x, -|cb3[r17.w + 6].x| + add r24.y, -r24.x, cb3[r17.w + 6].y + add r18.x, -|r24.x|, l(1.000000) + add r18.x, -|r24.y|, r18.x + max r18.x, r18.x, l(0.000488281250) + ge r18.y, cb3[r17.w + 6].x, l(0.000000) + movc r24.z, r18.y, r18.x, -r18.x + dp3 r18.x, r24.xyzx, r24.xyzx + rsq r18.x, r18.x + mul r24.xyz, r18.xxxx, r24.xyzx + add r25.xyz, -r5.xyzx, cb3[r23.x + 6].xyzx + dp3 r18.x, r25.xyzx, r25.xyzx + rsq r18.y, r18.x + mul r26.xyz, r18.yyyy, r25.xyzx + ftoi r18.y, cb3[r19.w + 6].w + mul r27.xyz, r24.xyzx, cb3[r17.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r27.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r18.z, cb3[r18.z + 6].w + and r18.z, r18.z, l(1) + ieq r19.x, r18.z, l(0) + not r19.x, r19.x + lt r19.w, l(0.000000), cb3[r17.w + 6].z + and r19.x, r19.w, r19.x + dp3 r19.w, r28.xyzx, r28.xyzx + sqrt r19.w, r19.w + dp3 r21.w, r27.xyzx, r27.xyzx + sqrt r21.w, r21.w + dp3 r22.w, r28.xyzx, r27.xyzx + mad r19.w, r19.w, r21.w, r22.w + mad r19.w, r19.w, l(0.500000), l(1.000000) + div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), r19.w + movc r19.w, r19.x, r19.w, l(1.000000) + lt r21.w, cb3[r23.w + 6].w, l(0.000000) + if_nz r21.w + mul r21.w, cb3[r23.x + 6].w, cb3[r23.x + 6].w + mul r21.w, r18.x, r21.w + mad r21.w, -r21.w, r21.w, l(1.000000) + max r21.w, r21.w, l(0.000000) + add r18.x, r18.x, l(1.000000) + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x + and r22.w, r19.x, l(0x3f800000) + add r23.z, -r18.x, r19.w + mad r18.x, r22.w, r23.z, r18.x + mul r21.w, r21.w, r21.w + mul r18.x, r18.x, r21.w + else + mul r27.xyz, r25.xyzx, cb3[r23.x + 6].wwww + dp3 r21.w, r27.xyzx, r27.xyzx + min r21.w, r21.w, l(1.000000) + add r21.w, -r21.w, l(1.000000) + log r21.w, r21.w + mul r21.w, r21.w, cb3[r23.w + 6].w + exp r21.w, r21.w + mul r18.x, r19.w, r21.w + endif + dp3 r19.w, r26.xyzx, -r24.xyzx + add r19.w, r19.w, -cb3[r17.w + 6].z + mul_sat r19.w, r19.w, cb3[r17.w + 6].w + mul r19.w, r19.w, r19.w + movc r19.w, r18.z, l(1.000000), r19.w + mul r18.x, r18.x, r19.w + not r19.x, r19.x + ige r19.w, r18.y, l(0) + and r19.x, r19.w, r19.x + if_nz r19.x + if_z r18.z + ishl r19.x, r18.y, l(2) + mul r24.xyz, r5.yyyy, cb6[r19.x + 33].xywx + mad r24.xyz, cb6[r19.x + 32].xywx, r5.xxxx, r24.xyzx + mad r24.xyz, cb6[r19.x + 34].xywx, r5.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb6[r19.x + 35].xywx + div_sat r19.xw, r24.xxxy, r24.zzzz + mad r19.xw, r19.xxxw, cb6[r18.y + 0].zzzw, cb6[r18.y + 0].xxxy + else + ishl r21.w, r18.y, l(2) + dp3 r24.x, -r25.xyzx, cb6[r21.w + 32].xyzx + dp3 r24.y, -r25.xyzx, cb6[r21.w + 33].xyzx + dp3 r24.z, -r25.xyzx, cb6[r21.w + 34].xyzx + lt r21.w, |r24.x|, |r24.y| + and r21.w, r21.w, l(1) + dp2 r22.w, |r24.xyxx|, icb[r21.w + 0].xyxx + lt r22.w, r22.w, |r24.z| + movc r21.w, r22.w, l(2), r21.w + dp3 r22.w, r24.xyzx, icb[r21.w + 0].xyzx + lt r22.w, r22.w, l(0.000000) + bfi r21.w, l(31), l(1), r21.w, r22.w + ushr r22.w, r21.w, l(1) + dp3 r22.w, r24.xyzx, icb[r22.w + 0].xyzx + div r23.z, l(0.000244140625), cb6[r18.y + 0].w + add r23.z, -r23.z, l(0.500000) + utof r23.w, r21.w + ult r24.w, r21.w, l(2) + and r24.w, r24.w, l(2) + dp2 r24.x, r24.xzxx, icb[r24.w + 0].xzxx + mul r24.x, r24.x, icb[r21.w + 4].z + div r24.x, r24.x, |r22.w| + mad r23.w, r24.x, r23.z, r23.w + add r23.w, r23.w, l(0.500000) + mul_sat r25.x, r23.w, l(0.166666672) + iadd r23.w, l(-1), icb[r21.w + 4].y + dp2 r23.w, r24.yzyy, icb[r23.w + 0].xyxx + mul r21.w, r23.w, icb[r21.w + 4].w + div r21.w, r21.w, |r22.w| + mad_sat r25.y, -r21.w, r23.z, l(0.500000) + mad r19.xw, r25.xxxy, cb6[r18.y + 0].zzzw, cb6[r18.y + 0].xxxy + endif + sample_l_indexable(texture2d)(float,float,float,float) r18.y, r19.xwxx, t15.yxzw, s1, l(0.000000) + mul r18.x, r18.y, r18.x + endif + lt r18.x, l(0.000000), r18.x + if_nz r18.x + if_z r18.z + ftoi r18.x, cb3[r23.y + 6].x + else + add r23.xzw, r5.xxyz, -cb3[r23.x + 6].xxyz + lt r24.xyz, |r23.zwwz|, |r23.xxzx| + and r18.y, r24.y, r24.x + lt r23.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xxzw + ushr r18.z, cb3[r17.w + 6].w, l(24) + ubfe r19.xw, l(8, 0, 0, 8), l(16, 0, 0, 8), cb3[r17.w + 6].wwww + movc r18.z, r23.x, r18.z, r19.x + and r17.w, l(255), cb3[r17.w + 6].w + movc r17.w, r23.z, r19.w, r17.w + ubfe r19.x, l(8), l(8), cb3[r23.y + 6].x + and r19.w, l(255), cb3[r23.y + 6].x + movc r19.x, r23.w, r19.x, r19.w + movc r17.w, r24.z, r17.w, r19.x + movc r17.w, r18.y, r18.z, r17.w + ilt r18.y, r17.w, l(80) + movc r18.x, r18.y, r17.w, l(-1) + endif + ishl r17.w, r18.x, l(2) + mad r23.xyz, r26.xyzx, cb4[r18.x + 288].xxxx, r5.xyzx + mul r18.y, l(5.000000), cb4[r18.x + 288].y + mad r23.xyz, r2.xywx, r18.yyyy, r23.xyzx + mul r24.xyzw, r23.yyyy, cb4[r17.w + 65].xyzw + mad r24.xyzw, cb4[r17.w + 64].xyzw, r23.xxxx, r24.xyzw + mad r23.xyzw, cb4[r17.w + 66].xyzw, r23.zzzz, r24.xyzw + add r23.xyzw, r23.xyzw, cb4[r17.w + 67].xyzw + div r23.xyz, r23.xyzx, r23.wwww + ge r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + ge r25.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r18.yz, -cb4[r18.x + 344].xxyx, cb4[r18.x + 344].zzwz + mad r18.yz, r23.xxyx, r18.yyzy, cb4[r18.x + 344].xxyx + mad r19.xw, r18.yyyz, cb4[400].zzzw, l(0.500000, 0.000000, 0.000000, 0.500000) + round_ni r19.xw, r19.xxxw + mad r18.yz, r18.yyzy, cb4[400].zzwz, -r19.xxwx + add r26.xyzw, r18.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r23.xy, -r18.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) + min r26.xz, r18.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r18.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r23.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r18.yz, r27.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r18.yyzy + mul r30.xy, r18.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r18.yz, -r26.xxzx, r26.xxzx, r23.xxyx + add r18.yz, r18.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r31.xy, r18.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r18.yz, r26.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r30.z, r31.x + mov r30.w, r18.y + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r18.z + mov r28.z, r29.y + mov r28.w, r27.z + add r23.xyw, r28.zyzw, r31.zyzw + div r27.xyz, r29.xzwx, r26.zwyz + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyz, r27.yxzy, cb4[400].xxxx + div r28.xyz, r28.zywz, r23.xywx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb4[400].yyyy + mov r27.w, r28.x + mad r29.xyzw, r19.xwxw, cb4[400].xyxy, r27.ywxw + mad r18.yz, r19.xxwx, cb4[400].xxyx, r27.zzwz + mov r28.w, r27.y + mov r27.yw, r28.yyyz + mad r30.xyzw, r19.xwxw, cb4[400].xyxy, r27.xyzy + mad r28.xyzw, r19.xwxw, cb4[400].xyxy, r28.wywz + mad r27.xyzw, r19.xwxw, cb4[400].xyxy, r27.xwzw + mul r31.xyzw, r23.xxxy, r26.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r29.xyxx, t6.xxxx, s4, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r29.zwzz, t6.xxxx, s4, r23.z + mul r19.x, r19.x, r31.y + mad r17.w, r31.x, r17.w, r19.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r18.yzyy, t6.xxxx, s4, r23.z + mad r17.w, r31.z, r18.y, r17.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r28.xyxx, t6.xxxx, s4, r23.z + mad r17.w, r31.w, r18.y, r17.w + mul r29.xyzw, r23.yyww, r26.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r30.xyxx, t6.xxxx, s4, r23.z + mad r17.w, r29.x, r18.y, r17.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r30.zwzz, t6.xxxx, s4, r23.z + mad r17.w, r29.y, r18.y, r17.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r28.zwzz, t6.xxxx, s4, r23.z + mad r17.w, r29.z, r18.y, r17.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r27.xyxx, t6.xxxx, s4, r23.z + mad r17.w, r29.w, r18.y, r17.w + ige r18.y, r18.x, l(0) + or r24.xyz, r24.xyzx, r25.xyzx + or r18.z, r24.y, r24.x + or r18.z, r24.z, r18.z + and r19.x, r23.z, l(0x7fffffff) + ult r19.x, l(0x7f800000), r19.x + or r18.z, r18.z, r19.x + mul r19.x, r23.w, r26.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.w, r27.zwzz, t6.xxxx, s4, r23.z + mad r17.w, r19.x, r19.w, r17.w + add r17.w, r17.w, l(-1.000000) + mad r17.w, cb4[r18.x + 288].w, r17.w, l(1.000000) + movc r17.w, r18.z, l(1.000000), r17.w + movc r17.w, r18.y, r17.w, l(1.000000) + else + mov r17.w, l(1.000000) + endif + else + mov r17.w, l(1.000000) + endif + mul r15.w, r15.w, r17.w + mov r20.xyw, l(0,0,0,0) + endif + add r22.xyz, r20.xywx, r22.xyzx + mov r16.w, r19.z + endloop + mov r11.x, r15.w + add r21.xyz, r21.xyzx, r22.xyzx + iadd r13.y, r13.y, l(1) +endloop +mad r8.xyz, r21.xyzx, r11.xxxx, r14.xyzx +ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r3.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + dp3 r2.z, r2.xywx, r9.xyzx + max r2.z, r2.z, l(0.000000) + add r2.z, r0.z, r2.z + mad r3.y, r13.w, l(-16.000000), l(-1.000000) + exp r3.y, r3.y + log r2.z, |r2.z| + mul r2.z, r2.z, r3.y + exp r2.z, r2.z + add r2.z, r0.z, r2.z + add r2.z, r2.z, l(-1.000000) + mov_sat r13.xyz, r2.zzzz + mad r14.xyz, r10.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r10.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r10.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r13.xyz, r1.yyyy + mov r14.xyz, r1.yyyy +endif +mad r16.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[212].x +mad r17.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx +dp2 r0.z, r17.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r16.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r16.xyzx +mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r17.xyz, r16.xzyx, -r17.xyzx +max r0.z, |r17.y|, |r17.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.y, |r17.z|, l(-208.000000) +mul_sat r1.y, r1.y, l(0.031250) +max r0.z, r0.z, r1.y +ne r1.y, l(0.000000), cb0[210].w +lt r2.z, r0.z, l(1.000000) +and r1.y, r1.y, r2.z +if_nz r1.y + mad r17.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r17.xyz, r16.xzyx, -r17.xyzx + max r1.y, |r17.y|, |r17.x| + add r1.y, r1.y, l(-29.000000) + mul_sat r1.y, r1.y, l(0.500000) + add r2.z, |r17.z|, l(-13.000000) + mul_sat r2.z, r2.z, l(0.500000) + max r1.y, r1.y, r2.z + lt r2.z, r1.y, l(1.000000) + if_nz r2.z + mad r17.xyz, r16.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t19.yzwx, s2, l(0.000000) + add r2.z, -r1.y, l(1.000000) + mul r3.y, l(0.500000), cb0[211].y + mad r7.w, -cb0[211].y, l(0.500000), l(1.000000) + max r3.y, r3.y, r17.y + min r3.y, r7.w, r3.y + mul r17.w, r3.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t20.xyzw, s1, l(0.000000) + mad r3.y, r19.w, r2.z, r0.z + add r20.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t20.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.yyyy, r20.xyzx + mov r20.w, r18.y + mul r20.xyzw, r2.zzzz, r20.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t20.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.xxxx, r17.xyzx + mov r17.w, r18.x + mul r17.xyzw, r2.zzzz, r17.xyzw + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r19.xyzx + mul r18.xyzw, r2.zzzz, r18.xyzw + else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r3.y, r0.z + endif + mad r19.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r19.xyz, r16.xzyx, -r19.xyzx + max r2.z, |r19.y|, |r19.x| + add r2.z, r2.z, l(-116.000000) + mul_sat r2.z, r2.z, l(0.125000) + add r7.w, |r19.z|, l(-52.000000) + mul_sat r7.w, r7.w, l(0.125000) + max r2.z, r2.z, r7.w + lt r7.w, r2.z, l(1.000000) + if_nz r7.w + mad r19.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r21.xyz, r19.xyzx, cb0[211].xyzx + round_ni r21.xyz, r21.xyzx + mad r19.xyz, r19.xyzx, cb0[211].xyzx, -r21.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r19.xyzx, t21.yzwx, s2, l(0.000000) + add r7.w, -r2.z, l(1.000000) + mul r1.y, r1.y, r7.w + mul r7.w, l(0.500000), cb0[211].y + mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) + max r7.w, r7.w, r19.y + min r7.w, r8.w, r7.w + mul r19.w, r7.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyzw, r19.xwzx, t22.xyzw, s1, l(0.000000) + mad r3.y, r22.w, r1.y, r3.y + add r23.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyz, r23.xyzx, t22.xyzw, s1, l(0.000000) + mad r23.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r21.yyyy, r23.xyzx + mov r23.w, r21.y + mad r20.xyzw, r23.xyzw, r1.yyyy, r20.xyzw + add r19.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r21.xxxx, r19.xyzx + mov r19.w, r21.x + mad r17.xyzw, r19.xyzw, r1.yyyy, r17.xyzw + mad r19.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r19.xyzx + mad r18.xyzw, r21.xyzw, r1.yyyy, r18.xyzw + endif + lt r1.y, l(0.000000), r2.z + if_nz r1.y + mad r16.xyz, r16.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r16.xyzx, cb0[211].xyzx + mul r21.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r19.xyzx + mad r19.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r16.xyz, r21.xyzx, r16.xyzx + min r16.xyz, r19.xyzx, r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r16.xyzx, t23.yzwx, s2, l(0.000000) + add r1.y, -r0.z, l(1.000000) + mul r1.y, r1.y, r2.z + max r2.z, r21.y, r16.y + min r2.z, r19.y, r2.z + mul r16.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t24.xyzw, s1, l(0.000000) + add r21.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t24.xyzw, s1, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r22.yyyy, r21.xyzx + mov r21.w, r22.y + mad r20.xyzw, r21.xyzw, r1.yyyy, r20.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t24.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r22.xxxx, r16.xyzx + mov r16.w, r22.x + mad r17.xyzw, r16.xyzw, r1.yyyy, r17.xyzw + mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r16.xyzx + mad r18.xyzw, r22.xyzw, r1.yyyy, r18.xyzw + mad r3.y, r19.w, r1.y, r3.y + endif + mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) + add r16.x, -r0.z, r1.y + add r0.z, r0.z, r1.y + mul r16.y, r0.z, l(0.500000) +else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r16.xy, l(0,1.000000,0,0) +endif +mul r19.xyzw, r16.yxyy, cb0[213].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r16.zw, r16.yyyx, cb0[213].wwwy +mad r19.x, r16.w, l(0.375000), r16.z +add r18.xyzw, r18.xyzw, r19.wyzx +mul r19.xyzw, r16.yxyy, cb0[214].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r16.zw, r16.yyyx, cb0[214].wwwy +mad r19.x, r16.w, l(0.375000), r16.z +add r17.xyzw, r17.xyzw, r19.wyzx +mul r19.xyzw, r16.yxyy, cb0[215].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r16.xy, r16.yxyy, cb0[215].wyww +mad r19.x, r16.y, l(0.375000), r16.x +add r16.xyzw, r19.wyzx, r20.xyzw +ge r19.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r19.y, r19.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r19.xyzw, r4.zwzz, t18.xyzw, s1, l(0.000000) + lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r19.xyzw| + or r4.zw, r20.zzzw, r20.xxxy + or r0.z, r4.w, r4.z + if_nz r0.z + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mov r4.z, l(1.000000) + mov r4.w, r0.z + mov r1.y, l(0) + loop + ge r2.z, l(4.600000), r4.w + breakc_nz r2.z + iadd r2.z, r1.y, l(1) + mul r20.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r4.zw, r20.xxxy + mov r1.y, r2.z + continue + endloop + mul r19.xyzw, r4.zzzz, r19.xyzw + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb7[3].x, cb7[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r20.x, r0.z, l(0.00390625000) + mov r20.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r20.xyxx, t17.zwxy, s1, l(0.000000) + mad r4.zw, r4.zzzw, cb7[2].xxxy, cb7[2].zzzw + mul r20.x, r4.z, l(3.54490781) + mul r20.yzw, r4.wwww, r19.yyzw + mul r0.z, r19.x, l(0.406976730) + exp r0.z, r0.z + mul r19.xyzw, r0.zzzz, r20.xyzw + mov r20.xyzw, r19.xyzw + mov r0.z, l(0) + loop + uge r2.z, r0.z, r1.y + breakc_nz r2.z + mul r21.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r2.z, r21.xyzw, r20.xyzw + dp2 r3.y, r21.yxyy, r20.xyxx + dp2 r4.z, r21.zxzz, r20.xzxx + dp2 r4.w, r21.wxww, r20.xwxx + iadd r7.w, r0.z, l(1) + mov r20.x, r2.z + mov r20.y, r3.y + mov r20.zw, r4.zzzw + mov r0.z, r7.w + continue + endloop + mul r19.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r20.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r19.xyzw, r20.xyzw + dp2 r1.y, r19.yxyy, r20.xyxx + dp2 r2.z, r19.zxzz, r20.xzxx + dp2 r3.y, r19.wxww, r20.xwxx + mul r20.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.z, r19.xyzw, r20.xyzw + dp2 r4.w, r19.yxyy, r20.xyxx + dp2 r7.w, r19.zxzz, r20.xzxx + dp2 r8.w, r19.wxww, r20.xwxx + mul r20.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r9.w, r19.xyzw, r20.xyzw + dp2 r10.w, r19.yxyy, r20.xyxx + dp2 r11.x, r19.zxzz, r20.xzxx + dp2 r14.w, r19.wxww, r20.xwxx + mul r18.w, r0.z, l(0.886226952) + mul r18.x, r3.y, l(-1.02332675) + mul r18.y, r1.y, l(-1.02332675) + mul r18.z, r2.z, l(1.02332675) + mul r17.x, r8.w, l(-1.02332675) + mul r17.yw, r4.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r17.z, r7.w, l(1.02332675) + mul r16.w, r9.w, l(0.886226952) + mul r16.x, r14.w, l(-1.02332675) + mul r16.y, r10.w, l(-1.02332675) + mul r16.z, r11.x, l(1.02332675) + endif +endif +dp3 r0.z, r18.xyzx, r2.xywx +add r0.z, r18.w, r0.z +max r18.x, r0.z, l(0.000000) +dp3 r0.z, r17.xyzx, r2.xywx +add r0.z, r17.w, r0.z +max r18.y, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r2.xywx +add r0.z, r16.w, r0.z +max r18.z, r0.z, l(0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.y, r13.w, l(0.001000) +log r1.y, r1.y +mad r1.y, -r1.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.y +mul r2.xy, r4.xyxx, cb1[0].wwww +round_ni r2.xy, r2.xyxx +add r1.y, |r3.w|, -cb1[2].y +round_ni r1.y, r1.y +add r2.z, l(-1.000000), cb1[1].x +max r2.w, r1.y, l(0.000000) +min r2.z, r2.z, r2.w +ge r1.y, r2.z, r1.y +mad r2.x, r2.y, cb1[0].x, r2.x +ftoi r2.xy, r2.xzxx +iadd r2.xy, r2.xyxx, cb0[110].zwzz +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.x, r2.x, l(0), t0.xxxx +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.y, r2.y, l(0), t0.xxxx +and r2.x, r2.y, r2.x +and r1.y, r1.y, r2.x +mul r2.xyz, r18.xyzx, cb0[111].xxxx +dp3 r2.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r5.w, l(1.000000) +mov r12.w, l(1.000000) +mov r2.yzw, l(0,0,0,0) +mov r3.y, l(1.000000) +mov r4.z, r1.y +mov r4.w, l(0) +loop + lt r7.w, l(0.010000), r3.y + ine r8.w, r4.z, l(0) + and r8.w, r7.w, r8.w + if_nz r8.w + firstbit_lo r8.w, r4.z + ishl r9.w, l(1), r8.w + xor r4.z, r4.z, r9.w + ishl r8.w, r8.w, l(3) + dp4 r16.x, cb1[r8.w + 6].xyzw, r5.xyzw + dp4 r16.y, cb1[r8.w + 7].xyzw, r5.xyzw + dp4 r16.z, cb1[r8.w + 8].xyzw, r5.xyzw + ge r17.xyz, cb1[r8.w + 5].xyzx, |r16.xyzx| + and r9.w, r17.y, r17.x + and r9.w, r17.z, r9.w + if_nz r9.w + mul r9.w, l(0.100000), cb1[r8.w + 5].x + mul r17.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r17.xy, r17.xyxx, r17.xyxx + add r19.xyz, -|r16.xyzx|, cb1[r8.w + 5].xyzx + mul r19.xyz, r19.xyzx, cb1[r8.w + 9].xyzx + eq r10.w, l(1.000000), cb1[r8.w + 10].x + if_nz r10.w + dp3 r20.x, cb1[r8.w + 6].xyzx, r15.xyzx + dp3 r20.y, cb1[r8.w + 7].xyzx, r15.xyzx + dp3 r20.z, cb1[r8.w + 8].xyzx, r15.xyzx + add r21.xyz, -r16.xyzx, cb1[r8.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r16.xyzx, -cb1[r8.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r10.w, r21.y, r21.x + min r10.w, r21.z, r10.w + mad r16.xyz, r20.xyzx, r10.wwww, r16.xyzx + else + mov r16.xyz, r15.xyzx + endif + dp3 r10.w, r16.xyzx, r16.xyzx + rsq r10.w, r10.w + mul r16.xyz, r10.wwww, r16.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r10.w, r16.xyzx, r20.xyzx + div r16.xyz, r16.xyzx, r10.wwww + lt r10.w, r16.z, l(0.000000) + add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r16.zw, r16.zzzw, r20.xxxy + movc r16.xy, r10.wwww, r16.zwzz, r16.xyxx + dp4 r10.w, cb1[r8.w + 4].xyzw, r12.xyzw + max r10.w, r10.w, l(0.000000) + max r10.w, r10.w, l(0.000100) + min r11.x, r19.z, r19.y + min r11.x, r11.x, r19.x + add r13.w, r17.y, r17.x + mad r13.w, r17.z, r17.z, r13.w + mad r9.w, r9.w, r9.w, -r13.w + mul r9.w, r9.w, cb1[r8.w + 9].x + mul r9.w, r9.w, cb1[r8.w + 9].x + add r13.w, l(1.000000), -cb1[r8.w + 10].y + mul r9.w, r9.w, r13.w + mul r9.w, r9.w, l(100.000000) + mad_sat r9.w, r11.x, cb1[r8.w + 10].y, r9.w + mul r11.x, r9.w, cb1[r8.w + 10].w + mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww + mov r16.z, cb1[r8.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z + mul r16.xyz, r16.xyzx, cb1[r8.w + 9].wwww + div r13.w, r2.x, r10.w + min r13.w, |r13.w|, l(1.000000) + mad r13.w, r13.w, l(2.000000), r2.x + add r10.w, r10.w, l(2.000000) + div r10.w, r13.w, r10.w + add r10.w, r10.w, l(-1.000000) + mad r10.w, r10.w, cb0[112].w, l(1.000000) + mul r16.xyz, r10.wwww, r16.xyzx + mul r16.xyz, r11.xxxx, r16.xyzx + mad r2.yzw, r16.xxyz, r3.yyyy, r2.yyzw + mad r8.w, -r9.w, cb1[r8.w + 10].w, l(1.000000) + mul r3.y, r3.y, r8.w + endif + mov r4.w, l(-1) + continue + else + mov r4.w, r7.w + break + endif + mov r4.w, r7.w +endloop +if_nz r4.w + dp3 r1.y, r15.xyzx, r15.xyzx + rsq r1.y, r1.y + mul r15.xyz, r1.yyyy, r15.xyzx + lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r17.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r16.xyz, -r16.xyzx, r17.xyzx + itof r16.xyz, r16.xyzx + dp3 r1.y, r15.xyzx, r16.xyzx + div r15.xyz, r15.xyzx, r1.yyyy + lt r1.y, r15.z, l(0.000000) + add r4.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r4.zw, r4.zzzw, r16.xxxy + movc r4.zw, r1.yyyy, r4.zzzw, r15.xxxy + mov r12.w, l(1.000000) + dp4 r1.y, cb1[3].xyzw, r12.xyzw + max r1.y, r1.y, l(0.000000) + max r1.y, r1.y, l(0.000100) + mad r4.zw, r4.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r12.xy, r4.zwzz, cb1[1].wwww, cb1[2].wwww + mov r12.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r12.xyz, r12.xyzx, t5.xyzw, s3, r0.z + div r0.z, r2.x, r1.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r2.x + add r1.y, r1.y, l(2.000000) + div r0.z, r0.z, r1.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r2.yzw, r12.xxyz, r3.yyyy, r2.yyzw +endif +mul r2.xyz, r2.yzwy, cb0[112].zzzz +mul r2.xyz, r2.xyzx, cb0[111].yyyy +if_nz r3.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r12.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.y, -r0.z, l(1.000000) + mul r15.xyz, r1.yyyy, r2.xyzx + mad r2.xyz, r12.xyzx, r0.zzzz, r15.xyzx +endif +mul r10.xyz, r10.xyzx, r18.xyzx +mul r10.xyz, r10.xyzx, cb0[111].xxxx +add r0.z, -r3.x, l(1.000000) +div r0.z, r0.z, r3.x +mul r1.xyz, r0.zzzz, r1.xzwx +mad r1.xyz, r1.xyzx, r11.yzwy, r11.yzwy +mul r1.xyz, r1.xyzx, r2.xyzx +mul r1.xyz, r13.xyzx, r1.xyzx +mad r1.xyz, r10.xyzx, r14.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r8.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r6.x, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r5.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r9.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[163].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r9.xyzx, -r7.xyzx + add r2.w, r5.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.x + mul r4.z, r0.x, r3.z + mad r4.w, r4.z, r2.w, cb0[44].y + mad r2.w, -r4.z, r2.w, r2.w + mul r4.z, r2.w, cb0[159].z + max r4.z, r4.z, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.w, r4.w, -cb0[159].x + mul r5.w, r5.w, cb0[159].z + max r5.w, r5.w, l(-127.000000) + exp r5.w, -r5.w + mul r5.w, r5.w, cb0[159].y + lt r7.x, l(5.960464478E-08), |r4.z| + exp r7.y, -r4.z + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r4.z + mad r4.z, -r4.z, l(0.240226507), l(0.693147182) + movc r4.z, r7.x, r7.y, r4.z + add r4.w, r4.w, -cb0[162].z + mul r4.w, r4.w, cb0[162].x + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[162].y + lt r7.x, l(5.960464478E-08), |r2.w| + exp r7.y, -r2.w + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r7.x, r7.y, r2.w + mul r2.w, r2.w, r4.w + mad r2.w, r5.w, r4.z, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r0.x, r6.x, r0.x + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r6.xxxx, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.xxxy + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r3.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r3.xyzx, t16.xyzw, s1, l(0.000000) + add r0.y, |r3.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r5.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r6.x, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r6.xxxx, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xyzx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx + +// === Simplified Fog Modification (Anti-Banding) === +// Check if fog modification is enabled via cb13[12].y +lt r15.x, l(0.500000), cb13[12].y +if_nz r15.x + // r1.xyz = scene color, r4.xyz = transmittance, r0.xyz = fog inscatter + // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density + add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + + // Reduce fog inscatter intensity + mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + + // Modified fog blend: scene * boostedTrans + reducedInscatter + mad r0.xyz, r1.xyzx, r15.xyzx, r16.xyzx +else + // Original fog blend + mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +endif +// === End Fog Modification === +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r6.yzwy, r6.yzwy +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r5.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t29.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x99725481.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x99725481.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..4e6b980146 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x99725481.ps_5_0_original_backup.asm @@ -0,0 +1,1959 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 23:51:02 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[5], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_constantbuffer CB7[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_sampler s5, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture2d (float,float,float,float) t17 +dcl_resource_texture2d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture3d (float,float,float,float) t23 +dcl_resource_texture3d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_resource_texture2d (float,float,float,float) t27 +dcl_resource_texture2d (float,float,float,float) t28 +dcl_resource_texture3d (float,float,float,float) t29 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 39 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t26.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t27.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r2.xyw, r1.wwww, r3.xyxz +utof r4.xy, r0.xyxx +mul r4.zw, v0.xxxy, cb0[82].zzzw +mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r5.zw, r5.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) +mul r6.xyzw, -r5.yyyy, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw +mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r3.w, r5.y, cb0[1].z +mad r3.w, cb0[0].z, r5.x, r3.w +mad r3.w, cb0[2].z, r5.z, r3.w +add r3.w, r3.w, cb0[3].z +eq r6.x, l(0.000000), cb0[86].w +add r6.yzw, -r5.xxyz, cb0[44].xxyz +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r8.xyz, r6.xxxx, r6.yzwy, r7.xyzx +dp3 r6.x, r8.xyzx, r8.xyzx +max r7.w, r6.x, l(9.999999939E-09) +rsq r7.w, r7.w +mul r9.xyz, r7.wwww, r8.xyzx +mul r6.x, r6.x, r7.w +lt r8.w, l(0.000488281250), cb0[234].x +if_nz r8.w + sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t25.xyzw, s1, cb0[108].x +else + mov r10.xy, l(1.000000,1.000000,0,0) +endif +lt r10.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[226].xxxy +if_nz r10.z + add r9.w, |r2.y|, |r2.x| + add r9.w, |r2.w|, r9.w + div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w + mul r11.xyz, |r2.xywx|, r9.wwww + mul r12.xyz, r5.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r9.w, r12.xyzx, t10.yzwx, s2, l(0.000000) + mul r12.xyzw, r11.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) + add r11.xyw, r12.zwzz, r12.xxxy + mad r11.xyz, r11.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r11.xywx + mad r10.z, r9.w, l(2.000000), l(-1.000000) + mul r11.xyz, r10.zzzz, r11.xyzx + mov r10.z, |r2.y| + add r10.z, r10.z, l(-0.700000) + mul_sat r10.z, r10.z, l(4.000000) + mad r11.w, r10.z, l(-2.000000), l(3.000000) + mul r10.z, r10.z, r10.z + mul r10.z, r10.z, r11.w + add r11.w, -cb0[229].z, cb0[229].y + mad r10.z, r10.z, r11.w, cb0[229].z + mul r11.xyz, r10.zzzz, r11.xyzx +else + mov r11.xyz, l(0,0,0,0) + mov r9.w, l(0) +endif +mad r10.z, -r3.y, r1.w, l(-0.200000) +if_nz r10.w + mul r12.xyz, r2.xywx, cb0[233].zzzz + mul r13.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r12.xyz, r12.xyzx, cb0[225].xxxx, r13.xyzx + max r10.w, -r2.y, l(0.000000) + min r10.w, r10.w, l(0.900000) + add r10.w, -r10.w, l(1.000000) + mul_sat r11.w, r10.z, l(-10.000000) + mad r12.w, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.w + max r11.w, r11.w, l(0.100000) + min r11.w, r11.w, l(1.000000) + mul r10.w, r10.w, r11.w + mad r12.xyz, r12.xyzx, r10.wwww, r5.xyzx + add r11.xyz, r11.xyzx, r12.xyzx + mul r12.xyz, r11.yyyy, cb5[1].xyzx + mad r11.xyw, cb5[0].xyxz, r11.xxxx, r12.xyxz + mad r11.xyz, cb5[2].xyzx, r11.zzzz, r11.xywx + add r11.xyz, r11.xyzx, cb5[3].xyzx + mad r12.x, r11.x, l(0.500000), cb5[4].x + mad r10.w, r11.y, l(0.500000), l(0.500000) + add r12.z, -r10.w, cb5[4].y + add r11.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r10.w, r11.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r10.w, r11.xyxx, t9.xxxx, s5, r10.w +else + mov r10.w, l(1.000000) +endif +mov_sat r11.x, r2.y +add r11.y, l(1.000000), -cb0[230].w +mad r11.x, r11.x, r11.y, cb0[230].w +add r11.yz, r5.xxzx, -cb0[44].xxzx +max r11.y, |r11.z|, |r11.y| +mul r11.z, r10.w, r11.x +mul r11.w, l(0.0500000119), cb0[222].w +mad r12.x, -cb0[222].w, l(0.700000), r11.y +div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w +mul_sat r11.w, r11.w, r12.x +mad r12.x, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r12.x +mad r10.w, -r11.x, r10.w, l(1.000000) +mad r10.w, r11.w, r10.w, r11.z +ge r11.z, r1.z, l(0.045000) +and r11.z, r11.z, l(0x3f800000) +mul r11.z, r10.w, r11.z +deriv_rty_coarse r12.xyz, r5.xyzx +deriv_rtx_coarse r13.xyz, r5.zxyz +mul r14.xyz, r12.xyzx, r13.xyzx +mad r12.xyz, r12.zxyz, r13.yzxy, -r14.xyzx +dp3 r11.w, r12.xyzx, r12.xyzx +max r11.w, r11.w, l(1.175494351E-38) +rsq r11.w, r11.w +mul r12.yzw, r11.wwww, r12.xxzy +mov_sat r13.x, r12.y +add r13.y, r13.x, l(-0.988000) +mul_sat r13.y, r13.y, l(1000.012878) +mad r13.z, r13.y, l(-2.000000), l(3.000000) +mul r13.y, r13.y, r13.y +mul r13.y, r13.y, r13.z +add r13.z, |r3.w|, l(-15.000000) +mul_sat r13.z, r13.z, l(0.015000) +add r13.z, -r13.z, l(1.000000) +lt r13.w, l(0.000488281250), cb0[223].y +mad r14.x, cb0[223].z, l(0.300000), l(0.687000) +add r13.x, r13.x, -r14.x +mul_sat r13.x, r13.x, l(-1000.012878) +mad r14.x, r13.x, l(-2.000000), l(3.000000) +mul r13.x, r13.x, r13.x +mul r13.x, r13.x, r14.x +mad r11.w, r12.x, r11.w, l(0.500000) +mul_sat r11.w, r11.w, l(2.500000) +mad r12.x, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r12.x +mul r11.w, r11.w, r13.x +lt r11.w, l(0.000488281250), r11.w +and r11.w, r11.w, r13.w +if_nz r11.w + mul r13.xw, |r12.zzzw|, |r12.zzzw| + add r11.w, r13.w, r13.x + div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w + mul r13.xw, r11.wwww, r13.xxxw + mul r14.xyz, r12.ywzy, l(0.000000, 1.000000, 0.000000, 0.000000) + mad r14.xyz, r12.zywz, l(1.000000, 0.000000, 0.000000, 0.000000), -r14.xyzx + dp2 r11.w, r14.xyxx, r14.xyxx + rsq r11.w, r11.w + mul r14.xyz, r11.wwww, r14.xyzx + mul r15.xyz, r12.ywzy, r14.xyzx + mad r15.xyz, r14.zxyz, r12.wzyw, -r15.xyzx + dp3 r11.w, r15.xyzx, r15.xyzx + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xyzx + add r16.xyz, r5.xyzx, r5.xyzx + round_ni r16.xyz, r16.xyzx + add r16.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + add r14.zw, r16.yyyy, r16.xxxz + dp2 r11.w, r14.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + lt r14.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.wwwz + lt r16.xy, r12.wzww, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r14.zw, r14.zzzw, -r16.xxxy + itof r14.zw, r14.zzzw + mul r16.xy, r5.xzxx, r14.zwzz + mul r12.x, r9.w, r11.w + add r14.z, -r11.w, l(1.000000) + mad r14.z, r14.z, l(0.700000), l(0.300000) + mul r17.xy, r12.xxxx, l(3.000000, 6.000000, 0.000000, 0.000000) + mad r12.x, -cb0[223].x, r14.z, r17.x + frc r18.x, r12.x + mad r12.x, cb0[223].x, l(-0.300000), r17.y + frc r18.y, r12.x + mul r11.w, r11.w, l(5.000000) + round_ni r11.w, r11.w + add r17.x, r11.w, l(1.000000) + mul r17.y, r5.y, r17.x + mov r5.w, l(0.100000) + mul r14.zw, r5.yyyw, r17.xxxy + frc r14.zw, r14.zzzw + add r17.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + add r17.xy, r14.zwzz, -r17.xyxx + add r17.xy, r17.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) + mul_sat r17.xy, r17.xyxx, l(5.00000048, 5.00000048, 0.000000, 0.000000) + mad r17.zw, r17.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) + mul r17.xy, r17.xyxx, r17.xyxx + mul r17.xy, r17.xyxx, r17.zwzz + add r17.zw, -r14.zzzw, r18.xxxy + max r17.xy, r17.zwzz, r17.xyxx + add r18.zw, -r18.xxxy, r14.zzzw + add r18.zw, r18.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) + mul r18.zw, r18.zzzw, l(0.000000, 0.000000, 5.00000048, 5.00000048) + max r18.zw, r18.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r19.xy, r18.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r18.zw, r18.zzzw, r18.zzzw + mul r18.zw, r18.zzzw, r19.xxxy + add r17.zw, r17.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + max r17.zw, r17.zzzw, r18.zzzw + ge r14.zw, r14.zzzw, r18.xxxy + and r14.zw, r14.zzzw, l(0, 0, 0x3f800000, 0x3f800000) + add r17.zw, -r17.xxxy, r17.zzzw + mad r14.zw, r14.zzzw, r17.zzzw, r17.xxxy + mad r11.w, r14.z, r14.z, l(-0.400000) + mul_sat r11.w, r11.w, l(1.66666663) + mad r12.x, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.x + mad r12.x, r14.w, l(2.000000), l(-1.000000) + mul r14.z, r11.w, l(0.010000) + mul r17.x, r12.x, r14.z + mad r17.x, r9.w, l(0.100000), r17.x + mul r14.z, r11.w, r14.z + mad r14.z, r14.z, r12.x, r9.w + mul r17.y, r9.w, r14.z + mov r16.z, r5.y + mad r17.zw, r16.yyyz, cb0[224].xxxy, r17.xxxy + sample_b_indexable(texture2d)(float,float,float,float) r18.xyzw, r17.zwzz, t11.xyzw, s2, cb0[108].x + mov r16.w, -r16.x + mad r16.xy, r16.wzww, cb0[224].xyxx, r17.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r16.xyxx, t11.xyzw, s2, cb0[108].x + mul r16.xyzw, r13.wwww, r16.xyzw + mad r16.xyzw, r18.xyzw, r13.xxxx, r16.xyzw + mad r13.xw, r16.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r9.w, r11.w, l(2.000000), l(-1.000000) + mad_sat r9.w, r9.w, l(0.800000), r14.w + mad r14.z, -r16.w, l(0.500000), l(1.000000) + mad r9.w, r9.w, r14.z, l(-0.700000) + mul_sat r9.w, r9.w, l(3.33333325) + mad r14.z, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r14.z + mul r12.x, r12.x, r16.w + mad_sat r11.w, r12.x, l(0.500000), r11.w + mad r11.w, r11.w, l(0.500000), l(0.100000) + max r9.w, r9.w, r11.w + add r11.w, -r9.w, l(1.000000) + max r11.w, r11.w, l(0.000000) + mul r12.x, r11.w, r11.w + mul r12.x, r12.x, r12.x + mul r11.w, r11.w, r12.x + ge r11.w, r16.z, r11.w + and r11.w, r11.w, l(0x3f800000) + mad r9.w, r9.w, l(0.700000), l(0.200000018) + mad r9.w, r11.w, r9.w, l(0.100000) + mul r9.w, r16.z, r9.w + mul r9.w, r9.w, cb0[223].y + mul r9.w, r9.w, l(0.330000) + mul r11.w, r11.z, cb0[222].x + mul r11.w, r13.z, r11.w + mul r9.w, r9.w, r11.w + dp2 r11.w, r13.xwxx, r13.xwxx + min r11.w, r11.w, l(1.000000) + add r11.w, -r11.w, l(1.000000) + sqrt r11.w, r11.w + max r11.w, r11.w, l(0.000488281250) + mul_sat r12.x, r9.w, l(10.000000) + mad r14.z, r12.x, l(-2.000000), l(3.000000) + mul r12.x, r12.x, r12.x + mul r12.x, r12.x, r14.z + mul r12.x, r12.x, cb0[223].y + mul r16.xy, r12.xxxx, r13.xwxx + add r12.x, l(-1.500000), cb0[223].y + mul_sat r12.x, r12.x, l(0.666666687) + mad r13.x, r12.x, l(-2.000000), l(3.000000) + mul r12.x, r12.x, r12.x + mul r12.x, r12.x, r13.x + mul r13.x, r12.x, l(-0.200000) + mad r11.w, -r12.x, l(-0.200000), r11.w + mad r16.z, r9.w, r11.w, r13.x + dp3 r11.w, r16.xyzx, r16.xyzx + max r11.w, r11.w, l(1.175494351E-38) + rsq r11.w, r11.w + mul r16.xyz, r11.wwww, r16.xyzx + mov r17.x, r14.y + mov r17.y, r15.x + mov r17.z, r12.z + dp3 r17.x, r17.xyzx, r16.xyzx + mov r15.w, r12.y + dp2 r17.y, r15.ywyy, r16.yzyy + mov r12.y, r14.x + mov r12.z, r15.z + dp3 r17.z, r12.yzwy, r16.xyzx + mad r12.xyz, -r3.xyzx, r1.wwww, r17.xyzx + mad r12.xyz, r9.wwww, r12.xyzx, r2.xywx + mul r9.w, r9.w, cb0[223].y + mul r9.w, r9.w, l(0.330000) +else + mov r12.xyz, r2.xywx + mov r9.w, l(0) +endif +lt r13.xw, l(0.000488281250, 0.000000, 0.000000, 0.000488281250), cb0[227].yyyw +or r11.w, r13.w, r13.x +lt r13.x, l(0.000488281250), r13.y +and r11.w, r11.w, r13.x +if_nz r11.w + mul r14.xyz, r2.ywxy, l(1.000000, 0.000000, 0.000000, 0.000000) + mad r14.xyz, r2.xywx, l(0.000000, 0.000000, 1.000000, 0.000000), -r14.xyzx + dp2 r11.w, r14.xzxx, r14.xzxx + rsq r11.w, r11.w + mul r14.xyz, r11.wwww, r14.xyzx + mul r15.xyz, r2.ywxy, r14.xyzx + mad r15.xyz, r14.zxyz, r2.wxyw, -r15.xyzx + dp3 r11.w, r15.xyzx, r15.xyzx + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xzyx + mul r13.xw, -r5.xxxz, cb0[228].xxxy + frc r14.yw, r13.xxxw + round_ni r13.xw, r13.xxxw + dp2 r11.w, r13.xwxx, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + add r13.x, r11.w, cb0[227].x + frc r13.x, r13.x + mul r13.w, cb0[228].z, cb0[228].z + mul r13.x, r13.w, r13.x + round_ni r13.x, r13.x + div r13.w, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[228].z + mad r16.xy, -r5.xzxx, cb0[228].xyxx, cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.xy, r16.xyxx, t12.zwxy, s2, cb0[108].x + mad r17.xy, -r5.xzxx, cb0[228].xyxx, -cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.zw, r17.xyxx, t12.xyzw, s2, cb0[108].x + mul r16.xyzw, r16.xyzw, cb0[227].wwww + mad r16.xyzw, r16.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -cb0[227].wwww + ge r11.w, l(0.500000), r11.w + and r11.w, r11.w, l(0x3f800000) + add r17.xy, -r14.ywyy, r14.wyww + mad r14.yw, r11.wwww, r17.xxxy, r14.yyyw + div r11.w, r13.x, cb0[228].z + ge r17.x, r11.w, -r11.w + frc r11.w, |r11.w| + movc r11.w, r17.x, r11.w, -r11.w + mul r11.w, r11.w, cb0[228].z + mul r17.x, r11.w, r13.w + add r17.zw, l(0.000000, 0.000000, -0.050000, -1.000000), cb0[228].wwwz + mul r11.w, r13.w, r13.x + round_ni r11.w, r11.w + add r11.w, -r11.w, r17.w + mul r17.y, r11.w, r13.w + mad r13.xw, r14.yyyw, r13.wwww, r17.xxxy + frc r13.xw, r13.xxxw + sample_b_indexable(texture2d)(float,float,float,float) r13.xw, r13.xwxx, t12.xzwy, s1, cb0[108].x + mul r13.xw, r13.xxxw, cb0[227].yyyy + mad r13.xw, r13.xxxw, l(2.000000, 0.000000, 0.000000, 2.000000), -cb0[227].yyyy + add r14.yw, r16.zzzw, r16.xxxy + add r16.xy, r13.xwxx, r14.ywyy + dp2 r11.w, r16.xyxx, r16.xyxx + min r11.w, r11.w, l(1.000000) + add r11.w, -r11.w, l(1.000000) + sqrt r11.w, r11.w + max r16.z, r11.w, l(0.000488281250) + dp3 r11.w, r16.xyzx, r16.xyzx + rsq r11.w, r11.w + mul r16.xyz, r11.wwww, r16.xyzx + mov r15.w, r2.x + dp2 r18.x, r15.xwxx, r16.yzyy + mov r19.x, r14.z + mov r19.y, r15.z + mov r19.z, r2.y + dp3 r18.y, r19.xyzx, r16.xyzx + mov r15.x, r14.x + mov r15.z, r2.w + dp3 r18.z, r15.xyzx, r16.xyzx + mul r11.z, r11.z, cb0[222].x + mul r11.z, r13.y, r11.z + max r11.w, l(0.000488281250), cb0[228].w + mov_sat r17.z, r17.z + add r13.x, -r11.w, r17.z + add r11.w, r2.z, -r11.w + div r13.x, l(1.000000, 1.000000, 1.000000, 1.000000), r13.x + mul_sat r11.w, r11.w, r13.x + mad r13.x, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r13.x + mul r11.z, r11.w, r11.z + mul r11.z, r13.z, r11.z + mad r3.xyz, -r3.xyzx, r1.wwww, r18.xyzx + mad r12.xyz, r11.zzzz, r3.xyzx, r2.xywx +endif +min r1.w, r10.y, r10.x +mul r3.x, r11.x, cb0[230].z +mad r3.y, -cb0[230].z, r11.x, l(1.000000) +mad r3.x, r10.w, r3.y, r3.x +mad r3.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r3.z, r11.y, -cb0[222].w +div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y +mul_sat r3.y, r3.y, r3.z +mad r3.z, r3.y, l(-2.000000), l(3.000000) +mul r3.y, r3.y, r3.y +mul r3.y, r3.y, r3.z +add r3.z, -r3.x, cb0[230].y +mad r3.x, r3.y, r3.z, r3.x +add r3.x, -r3.x, l(1.000000) +mul r3.y, r3.x, r10.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r3.z, -r2.z, l(1.000000) +mad_sat r10.w, r3.z, cb0[222].z, cb0[222].y +mad_sat r10.w, r9.w, cb0[224].z, r10.w +add r11.x, -r10.w, l(1.000000) +mad r10.w, r1.x, r11.x, r10.w +mul_sat r10.z, r10.z, l(3.33333325) +mad r11.x, r10.z, l(-2.000000), l(3.000000) +mul r10.z, r10.z, r10.z +mad r10.z, -r11.x, r10.z, l(1.000000) +mul r11.x, r10.w, cb0[222].x +add r11.y, -r1.x, l(1.000000) +mul r11.x, r11.y, r11.x +mul r11.x, r10.z, r11.x +mad r11.x, r11.x, l(-0.750000), l(1.000000) +mad r10.w, r10.w, l(-0.299999952), l(0.900000) +sqrt r11.y, r3.z +add r10.w, r10.w, r11.y +add_sat r10.w, r10.w, l(-0.600000) +max r10.w, r3.z, r10.w +min r10.w, r10.w, l(0.990000) +add_sat r11.y, l(2.000000), -cb0[222].x +mul r11.y, r11.y, cb0[222].x +mul r10.z, r10.z, r11.y +mad r3.x, -r10.x, r3.x, l(1.000000) +mul r3.x, r3.x, r10.z +add r10.x, -r3.z, r10.w +mad r3.x, r3.x, r10.x, r3.z +add r3.x, -r3.x, l(1.000000) +mul_sat r3.z, r9.w, l(20.000000) +mad r9.w, r3.z, l(-2.000000), l(3.000000) +mul r3.z, r3.z, r3.z +mul r3.z, r3.z, r9.w +mad r3.z, r3.z, l(-0.900000), l(1.000000) +mul r9.w, r3.z, r3.x +add r10.x, r10.y, l(-1.000000) +mad r10.x, r1.z, r10.x, l(1.000000) +add r10.y, -r1.z, l(1.000000) +movc r10.xy, r8.wwww, r10.xyxx, l(1.000000,1.000000,0,0) +min r1.z, r9.w, r10.x +mad r3.x, r3.x, r3.z, -r1.z +mad r1.z, r1.w, r3.x, r1.z +add r2.z, -r1.z, r2.z +mad r13.w, r3.y, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r10.xzw, r0.xyzz, t28.xwyz +min r1.z, r11.x, r10.y +add r2.z, -r1.z, r11.x +mad r1.z, r1.w, r2.z, r1.z +add r1.w, -r1.z, l(1.000000) +mad r1.z, r3.y, r1.w, r1.z +mul r3.xyz, r1.zzzz, r10.xzwx +mul r11.xyz, r1.xxxx, r3.xyzx +mad r10.xyz, r10.xzwx, r1.zzzz, -r11.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz +dp3 r2.z, r12.xyzx, r9.xyzx +max r11.x, r2.z, l(0.000000) +mul r3.y, r13.w, r13.w +mul r14.x, r11.x, r11.x +mul r14.z, r11.x, r14.x +mul r2.z, r3.y, r3.y +mul r3.z, r3.y, r2.z +mov r11.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r15.x, l(3.327070, 1.000000, 0.000000, 0.000000), r11.xyxx +dp2 r15.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r11.xzxx +mov r3.x, l(1.000000) +dp2 r8.w, r15.xyxx, r3.xyxx +mov r14.yw, l(0,9.044010,0,1.000000) +dp3 r15.x, l(3.596850, -1.367720, 1.000000, 0.000000), r14.xzwx +dp3 r15.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r14.xyzx +mov r16.x, l(5.565890) +mov r16.yz, r14.xxzx +dp3 r15.z, l(1.000000, 19.788601, -20.212299, 0.000000), r16.xyzx +dp3 r9.w, r15.xyzx, r3.xyzx +div r8.w, r8.w, r9.w +dp2 r15.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r11.xwxx +mov r14.x, l(1.296780) +mov r14.y, r11.x +dp2 r15.y, l(1.000000, -0.755907, 0.000000, 0.000000), r14.xyxx +dp2 r9.w, r15.xyxx, r3.xyxx +dp3 r15.x, l(2.923380, 59.418800, 1.000000, 0.000000), r14.yzwy +mov r14.xw, l(20.322500,0,0,121.563004) +dp3 r15.y, l(1.000000, -27.030199, 222.591995, 0.000000), r14.xyzx +dp3 r15.z, l(626.130005, 316.627014, 1.000000, 0.000000), r14.yzwy +dp3 r3.x, r15.xyzx, r3.xyzx +div r3.x, r9.w, r3.x +mad r11.yzw, r1.xxzw, r8.wwww, r3.xxxx +add r3.x, r3.x, r8.w +ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t7.xyzw +lt r0.z, l(0.001000), r14.x +if_nz r0.z + dp3 r0.z, -r9.xyzx, r12.xyzx + add r0.z, r0.z, r0.z + mad r15.xyz, r12.xyzx, -r0.zzzz, -r9.xyzx + dp3 r0.z, -cb3[0].xyzx, r15.xyzx + mad r16.xyz, cb3[0].xyzx, r0.zzzz, r15.xyzx + lt r0.z, r0.z, cb3[4].z + dp3 r3.z, r16.xyzx, r16.xyzx + max r3.z, r3.z, l(0.0000610351562) + rsq r3.z, r3.z + mul r16.xyz, r3.zzzz, r16.xyzx + mul r16.xyz, r16.xyzx, cb3[4].yyyy + mad r16.xyz, -cb3[0].xyzx, cb3[4].zzzz, r16.xyzx + dp3 r3.z, r16.xyzx, r16.xyzx + rsq r3.z, r3.z + mul r16.xyz, r3.zzzz, r16.xyzx + movc r15.xyz, r0.zzzz, r16.xyzx, r15.xyzx + mad r16.xyz, r8.xyzx, r7.wwww, r15.xyzx + dp3 r0.z, r16.xyzx, r16.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r16.xyz, r0.zzzz, r16.xyzx + dp3_sat r13.y, r15.xyzx, r12.xyzx + dp3_sat r0.z, r12.xyzx, r16.xyzx + min r13.z, r11.x, l(1.000000) + mad r3.z, r0.z, r2.z, -r0.z + mad r0.z, r3.z, r0.z, l(1.000000) + dp3_sat r3.z, r9.xyzx, r16.xyzx + add r3.z, -r3.z, l(1.000000) + mul r8.w, r3.z, r3.z + mul r8.w, r8.w, r8.w + mul r9.w, r3.z, r8.w + add r10.w, -r13.w, l(1.000000) + mad r14.z, -r10.w, l(0.383026), l(-0.0761947036) + mad r14.z, r10.w, r14.z, l(1.049970) + mad r10.w, r10.w, r14.z, l(0.409255) + min r10.w, r10.w, l(0.999000) + add r14.z, -r10.w, l(1.000000) + add r16.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx + mad r3.z, -r8.w, r3.z, l(1.000000) + mad r17.xyz, r1.xzwx, r3.zzzz, r9.wwww + mul r0.z, r0.z, r0.z + div r0.z, r2.z, r0.z + mad r18.xy, -r13.zyzz, r2.zzzz, r13.zyzz + mad r18.xy, r18.xyxx, r13.zyzz, r2.zzzz + sqrt r18.xy, r18.xyxx + mul r18.xy, r13.yzyy, r18.xyxx + add r2.z, r18.y, r18.x + add r2.z, r2.z, l(0.000100) + div r2.z, l(0.500000), r2.z + mul r0.z, r0.z, r2.z + mul r17.xyz, r0.zzzz, r17.xyzx + min r17.xyz, r17.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r18.xyzw, r13.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r18.xyxx, t13.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r18.zwzz, t13.yzxw, s1, l(0.000000) + mul r0.z, r0.z, r2.z + mul r0.z, r10.w, r0.z + div r0.z, r0.z, r14.z + mul r18.xyz, r16.xyzx, r16.xyzx + mul r18.xyz, r0.zzzz, r18.xyzx + mad r16.xyz, -r16.xyzx, r14.zzzz, l(1.000000, 1.000000, 1.000000, 0.000000) + div r16.xyz, r18.xyzx, r16.xyzx + add r16.xyz, r16.xyzx, r17.xyzx + mul r16.xyz, r16.xyzx, cb3[4].xxxx + max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r16.xyz, r16.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + dp3_sat r0.z, r15.xyzx, r2.xywx + mul r15.xyz, r0.zzzz, r10.xyzx + mad r15.xyz, r16.xyzx, r13.yyyy, r15.xyzx + mul r15.xyz, r15.xyzx, cb3[1].xyzx + mov r14.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r14.yzw, r14.xyxx, t8.wxyz, s1, cb0[108].x + add r0.z, -r14.x, l(1.000000) + mad r14.xyz, r15.xyzx, r14.yzwy, -r15.xyzx + mad r14.xyz, r0.zzzz, r14.xyzx, r15.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t14.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r14.xyz, r0.zzzz, r14.xyzx +else + mov r14.xyz, l(0,0,0,0) +endif +mul r13.yz, r4.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r13.yz, r13.yyzy +mad r0.z, r13.z, cb2[1].y, r13.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r2.z, -cb0[85].y, cb2[2].w, |r3.w| +round_ni r2.z, r2.z +add r3.z, l(-1.000000), cb2[1].w +max r8.w, r2.z, l(0.000000) +min r3.z, r3.z, r8.w +mul r8.w, r3.z, l(8.000000) +ftoi r8.w, r8.w +ge r2.z, r3.z, r2.z +iadd r3.z, r8.w, cb0[110].y +dp3 r8.w, -r9.xyzx, r12.xyzx +add r8.w, r8.w, r8.w +mad r15.xyz, r12.xyzx, -r8.wwww, -r9.xyzx +min r13.x, r11.x, l(1.000000) +add r8.w, -r13.w, l(1.000000) +mad r9.w, -r8.w, l(0.383026), l(-0.0761947036) +mad r9.w, r8.w, r9.w, l(1.049970) +mad r8.w, r8.w, r9.w, l(0.409255) +min r8.w, r8.w, l(0.999000) +add r9.w, -r8.w, l(1.000000) +add r16.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx +mad r13.yz, r13.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r10.w, r13.yzyy, t13.yzwx, s1, l(0.000000) +mad r17.xyz, -r16.xyzx, r9.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r16.xyz, r16.xyzx, r16.xyzx +mov r18.w, l(1.000000) +mov r19.y, l(1.000000) +mov r20.z, r13.w +mov r21.xyz, l(0,0,0,0) +mov r11.x, l(1.000000) +mov r13.y, l(0) +loop + ilt r13.z, l(7), r13.y + breakc_nz r13.z + iadd r13.z, r0.z, r13.y + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r13.z, r13.z, l(0), t0.xxxx + iadd r14.w, r3.z, r13.y + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r14.w, r14.w, l(0), t0.xxxx + and r13.z, r13.z, r14.w + and r13.z, r2.z, r13.z + ishl r14.w, r13.y, l(5) + mov r22.xyz, l(0,0,0,0) + mov r15.w, r11.x + mov r16.w, r13.z + loop + breakc_z r16.w + firstbit_lo r17.w, r16.w + ishl r19.z, l(1), r17.w + xor r19.z, r16.w, r19.z + iadd r17.w, r14.w, r17.w + bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r17.wwww, l(1, 3, 5, 6) + bfi r19.w, l(29), l(3), r17.w, l(7) + ftou r20.w, cb3[r23.z + 6].w + ieq r20.w, r20.w, l(1) + if_nz r20.w + add r18.xyz, r5.xyzx, -cb3[r23.x + 6].xyzx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.z + 6].xzyx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.w + 6].yxzy + ushr r26.xyz, cb3[r23.z + 6].xzyx, l(16, 16, 16, 0) + ushr r27.xyz, cb3[r23.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyw, r27.yxyz + mov r28.xz, r24.xxzx + mov r28.yw, r26.xxxz + dp4 r20.w, r18.xyzw, r28.xyzw + mov r26.x, r24.y + mov r26.z, r25.y + mov r26.w, r27.x + dp4 r21.w, r18.xyzw, r26.xyzw + mov r27.xz, r25.xxzx + dp4 r18.x, r18.xyzw, r27.xyzw + max r18.y, |r20.w|, |r21.w| + max r18.x, |r18.x|, r18.y + mad r18.y, cb3[r19.w + 6].x, l(0.500000), l(0.500000) + add r18.x, -r18.y, r18.x + mad r18.y, -cb3[r19.w + 6].x, l(0.500000), l(0.500000) + div_sat r18.x, r18.x, r18.y + add r18.x, -r18.x, l(1.000000) + mul r18.x, r18.x, r18.x + else + mov r18.x, l(1.000000) + endif + lt r18.y, l(0.500000), cb3[r23.y + 6].z + lt r18.z, r18.x, l(0.001000) + or r18.z, r18.y, r18.z + if_nz r18.z + mov r16.w, r19.z + continue + endif + ishl r18.z, r17.w, l(3) + bfi r17.w, l(29), l(3), r17.w, l(2) + lt r20.w, cb3[r18.z + 6].w, l(1.500000) + if_nz r20.w + mad r20.w, cb3[r17.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r20.w, -|cb3[r17.w + 6].x| + add r24.y, -r24.x, cb3[r17.w + 6].y + add r20.w, -|r24.x|, l(1.000000) + add r20.w, -|r24.y|, r20.w + ge r21.w, cb3[r17.w + 6].x, l(0.000000) + max r22.w, r20.w, l(0.000488281250) + movc r24.z, r21.w, r22.w, -r22.w + dp3 r22.w, r24.xyzx, r24.xyzx + rsq r22.w, r22.w + mul r25.xyz, r22.wwww, r24.xyzx + add r26.xyz, -r5.xyzx, cb3[r23.x + 6].xyzx + dp3 r22.w, r26.xyzx, r26.xyzx + rsq r23.z, r22.w + mul r27.xyz, r23.zzzz, r26.xyzx + dp3_sat r19.x, r12.xyzx, r27.xyzx + ftoi r24.z, cb3[r19.w + 6].w + mul r28.xyz, r25.xyzx, cb3[r17.w + 6].zzzz + mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + mad r30.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + ftou r25.w, cb3[r18.z + 6].w + and r25.w, r25.w, l(1) + ieq r26.w, r25.w, l(0) + not r26.w, r26.w + lt r27.w, l(0.000000), cb3[r17.w + 6].z + and r26.w, r26.w, r27.w + dp3 r27.w, r29.xyzx, r29.xyzx + sqrt r27.w, r27.w + dp3 r28.w, r30.xyzx, r30.xyzx + sqrt r28.w, r28.w + dp3 r29.w, r12.xyzx, r29.xyzx + div r29.w, r29.w, r27.w + dp3 r30.w, r12.xyzx, r30.xyzx + div r30.w, r30.w, r28.w + add r29.w, r29.w, r30.w + mul_sat r31.x, r29.w, l(0.500000) + dp3 r29.w, r29.xyzx, r30.xyzx + mad r27.w, r27.w, r28.w, r29.w + mad r27.w, r27.w, l(0.500000), l(1.000000) + div r31.y, l(1.000000, 1.000000, 1.000000, 1.000000), r27.w + movc r20.xy, r26.wwww, r31.xyxx, r19.xyxx + lt r27.w, cb3[r23.w + 6].w, l(0.000000) + if_nz r27.w + mul r27.w, cb3[r23.x + 6].w, cb3[r23.x + 6].w + mul r27.w, r22.w, r27.w + mad r27.w, -r27.w, r27.w, l(1.000000) + max r27.w, r27.w, l(0.000000) + add r22.w, r22.w, l(1.000000) + div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w + and r28.w, r26.w, l(0x3f800000) + add r29.w, r20.y, -r22.w + mad r22.w, r28.w, r29.w, r22.w + mul r27.w, r27.w, r27.w + mul r22.w, r22.w, r27.w + else + mul r30.xyz, r26.xyzx, cb3[r23.x + 6].wwww + dp3 r27.w, r30.xyzx, r30.xyzx + min r27.w, r27.w, l(1.000000) + add r27.w, -r27.w, l(1.000000) + log r27.w, r27.w + mul r27.w, r27.w, cb3[r23.w + 6].w + exp r27.w, r27.w + mul r22.w, r20.y, r27.w + endif + dp3 r20.y, r27.xyzx, -r25.xyzx + add r20.y, r20.y, -cb3[r17.w + 6].z + mul_sat r20.y, r20.y, cb3[r17.w + 6].w + mul r20.y, r20.y, r20.y + movc r20.y, r25.w, l(1.000000), r20.y + mul r20.y, r20.y, r22.w + not r22.w, r26.w + ige r25.x, r24.z, l(0) + and r22.w, r22.w, r25.x + if_nz r22.w + if_z r25.w + ishl r22.w, r24.z, l(2) + mul r25.xyz, r5.yyyy, cb6[r22.w + 33].xywx + mad r25.xyz, cb6[r22.w + 32].xywx, r5.xxxx, r25.xyzx + mad r25.xyz, cb6[r22.w + 34].xywx, r5.zzzz, r25.xyzx + add r25.xyz, r25.xyzx, cb6[r22.w + 35].xywx + div_sat r25.xy, r25.xyxx, r25.zzzz + mad r25.xy, r25.xyxx, cb6[r24.z + 0].zwzz, cb6[r24.z + 0].xyxx + else + ishl r22.w, r24.z, l(2) + dp3 r30.x, -r26.xyzx, cb6[r22.w + 32].xyzx + dp3 r30.y, -r26.xyzx, cb6[r22.w + 33].xyzx + dp3 r30.z, -r26.xyzx, cb6[r22.w + 34].xyzx + lt r22.w, |r30.x|, |r30.y| + and r22.w, r22.w, l(1) + dp2 r25.z, |r30.xyxx|, icb[r22.w + 0].xyxx + lt r25.z, r25.z, |r30.z| + movc r22.w, r25.z, l(2), r22.w + dp3 r25.z, r30.xyzx, icb[r22.w + 0].xyzx + lt r25.z, r25.z, l(0.000000) + bfi r22.w, l(31), l(1), r22.w, r25.z + ushr r25.z, r22.w, l(1) + dp3 r25.z, r30.xyzx, icb[r25.z + 0].xyzx + div r27.w, l(0.000244140625), cb6[r24.z + 0].w + add r27.w, -r27.w, l(0.500000) + utof r28.w, r22.w + ult r29.w, r22.w, l(2) + and r29.w, r29.w, l(2) + dp2 r29.w, r30.xzxx, icb[r29.w + 0].xzxx + mul r29.w, r29.w, icb[r22.w + 4].z + div r29.w, r29.w, |r25.z| + mad r28.w, r29.w, r27.w, r28.w + add r28.w, r28.w, l(0.500000) + mul_sat r31.x, r28.w, l(0.166666672) + iadd r28.w, l(-1), icb[r22.w + 4].y + dp2 r28.w, r30.yzyy, icb[r28.w + 0].xyxx + mul r22.w, r28.w, icb[r22.w + 4].w + div r22.w, r22.w, |r25.z| + mad_sat r31.y, -r22.w, r27.w, l(0.500000) + mad r25.xy, r31.xyxx, cb6[r24.z + 0].zwzz, cb6[r24.z + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r22.w, r25.xyxx, t15.yzwx, s1, l(0.000000) + mul r20.y, r20.y, r22.w + endif + lt r22.w, l(0.000000), r20.y + if_nz r22.w + if_z r25.w + ftoi r24.z, cb3[r23.y + 6].x + else + add r25.xyz, r5.xyzx, -cb3[r23.x + 6].xyzx + lt r30.xyz, |r25.yzzy|, |r25.xxyx| + and r25.w, r30.y, r30.x + lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ushr r27.w, cb3[r17.w + 6].w, l(24) + ubfe r30.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r17.w + 6].wwww + movc r25.x, r25.x, r27.w, r30.x + and r27.w, l(255), cb3[r17.w + 6].w + movc r25.y, r25.y, r30.y, r27.w + ubfe r27.w, l(8), l(8), cb3[r23.y + 6].x + and r28.w, l(255), cb3[r23.y + 6].x + movc r25.z, r25.z, r27.w, r28.w + movc r25.y, r30.z, r25.y, r25.z + movc r25.x, r25.w, r25.x, r25.y + ilt r25.y, r25.x, l(80) + movc r24.z, r25.y, r25.x, l(-1) + endif + ishl r25.x, r24.z, l(2) + mad r25.yzw, r27.xxyz, cb4[r24.z + 288].xxxx, r5.xxyz + mul r27.w, l(5.000000), cb4[r24.z + 288].y + mad r25.yzw, r12.xxyz, r27.wwww, r25.yyzw + mul r30.xyzw, r25.zzzz, cb4[r25.x + 65].xyzw + mad r30.xyzw, cb4[r25.x + 64].xyzw, r25.yyyy, r30.xyzw + mad r30.xyzw, cb4[r25.x + 66].xyzw, r25.wwww, r30.xyzw + add r25.xyzw, r30.xyzw, cb4[r25.x + 67].xyzw + div r25.xyz, r25.xyzx, r25.wwww + ge r30.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ge r31.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r32.xy, -cb4[r24.z + 344].xyxx, cb4[r24.z + 344].zwzz + mad r25.xy, r25.xyxx, r32.xyxx, cb4[r24.z + 344].xyxx + mad r32.xy, r25.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r32.xy, r32.xyxx + mad r25.xy, r25.xyxx, cb4[400].zwzz, -r32.xyxx + add r33.xyzw, r25.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r34.xyzw, r33.xxzz, r33.xxzz + add r32.zw, -r25.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r33.xz, r25.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r35.xy, r25.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r36.xy, r32.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r35.xy, -r35.xyxx, r35.xyxx, r33.ywyy + add r35.xy, r35.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r35.xy, r35.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r34.xz, r34.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r25.xy, r34.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r25.xyxx + mul r37.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r25.xy, -r33.xzxx, r33.xzxx, r32.zwzz + add r25.xy, r25.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r38.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r25.xy, r33.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r37.z, r38.x + mov r37.w, r25.x + mov r36.z, r35.x + mov r36.w, r34.x + add r33.xyzw, r36.zwxz, r37.zwxz + mov r38.z, r37.y + mov r38.w, r25.y + mov r35.z, r36.y + mov r35.w, r34.z + add r25.xyw, r35.zyzw, r38.zyzw + div r34.xyz, r36.xzwx, r33.zwyz + add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r34.xyz, r34.yxzy, cb4[400].xxxx + div r35.xyz, r35.zywz, r25.xywx + add r35.xyz, r35.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r35.xyz, r35.xyzx, cb4[400].yyyy + mov r34.w, r35.x + mad r36.xyzw, r32.xyxy, cb4[400].xyxy, r34.ywxw + mad r32.zw, r32.xxxy, cb4[400].xxxy, r34.zzzw + mov r35.w, r34.y + mov r34.yw, r35.yyyz + mad r37.xyzw, r32.xyxy, cb4[400].xyxy, r34.xyzy + mad r35.xyzw, r32.xyxy, cb4[400].xyxy, r35.wywz + mad r34.xyzw, r32.xyxy, cb4[400].xyxy, r34.xwzw + mul r38.xyzw, r25.xxxy, r33.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r36.xyxx, t6.xxxx, s4, r25.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r27.w, r36.zwzz, t6.xxxx, s4, r25.z + mul r27.w, r27.w, r38.y + mad r25.x, r38.x, r25.x, r27.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r27.w, r32.zwzz, t6.xxxx, s4, r25.z + mad r25.x, r38.z, r27.w, r25.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r27.w, r35.xyxx, t6.xxxx, s4, r25.z + mad r25.x, r38.w, r27.w, r25.x + mul r32.xyzw, r25.yyww, r33.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.y, r37.xyxx, t6.xxxx, s4, r25.z + mad r25.x, r32.x, r25.y, r25.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.y, r37.zwzz, t6.xxxx, s4, r25.z + mad r25.x, r32.y, r25.y, r25.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.y, r35.zwzz, t6.xxxx, s4, r25.z + mad r25.x, r32.z, r25.y, r25.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.y, r34.xyxx, t6.xxxx, s4, r25.z + mad r25.x, r32.w, r25.y, r25.x + ige r25.y, r24.z, l(0) + or r30.xyz, r30.xyzx, r31.xyzx + or r27.w, r30.y, r30.x + or r27.w, r30.z, r27.w + and r28.w, r25.z, l(0x7fffffff) + ult r28.w, l(0x7f800000), r28.w + or r27.w, r27.w, r28.w + mul r25.w, r25.w, r33.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r34.zwzz, t6.xxxx, s4, r25.z + mad r25.x, r25.w, r25.z, r25.x + add r25.x, r25.x, l(-1.000000) + mad r24.z, cb4[r24.z + 288].w, r25.x, l(1.000000) + movc r24.z, r27.w, l(1.000000), r24.z + movc r24.z, r25.y, r24.z, l(1.000000) + else + mov r24.z, l(1.000000) + endif + if_nz r26.w + dp3 r25.x, r15.xyzx, r28.xyzx + mul_sat r25.y, r23.z, cb3[r17.w + 6].z + mad r25.y, r25.y, l(0.500000), r3.y + min r25.y, r25.y, l(1.000000) + div r25.y, r3.y, r25.y + mad r30.xyz, r15.xyzx, r25.xxxx, -r28.xyzx + dp3 r25.z, r29.xyzx, r30.xyzx + mul r25.x, r25.x, r25.x + mad r25.x, cb3[r17.w + 6].z, cb3[r17.w + 6].z, -r25.x + div_sat r25.x, r25.z, r25.x + mad r25.xzw, r28.xxyz, r25.xxxx, r29.xxyz + dp3 r27.w, r25.xzwx, r25.xzwx + rsq r27.w, r27.w + mul r27.xyz, r25.xzwx, r27.wwww + else + mov r25.y, l(1.000000) + endif + if_nz r22.w + mul_sat r22.w, r23.z, cb3[r19.w + 6].y + mad r25.xzw, r8.xxyz, r7.wwww, r27.xxyz + dp3 r23.z, r25.xzwx, r25.xzwx + max r23.z, r23.z, l(0.0000610351562) + rsq r23.z, r23.z + mul r25.xzw, r23.zzzz, r25.xxzw + max r20.w, r20.w, l(5.960464478E-08) + movc r24.w, r21.w, r20.w, -r20.w + dp3 r20.w, r24.xywx, r24.xywx + rsq r20.w, r20.w + mul r24.xyw, r20.wwww, r24.xyxw + mul r24.xyw, r24.xyxw, cb3[r17.w + 6].zzzz + mad r27.xyz, -r24.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + mad r24.xyw, r24.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r26.xyxz + dp3 r20.w, r12.xyzx, r27.xyzx + dp3 r21.w, r27.xyzx, r27.xyzx + sqrt r21.w, r21.w + div r20.w, r20.w, r21.w + dp3 r21.w, r12.xyzx, r24.xywx + dp3 r23.z, r24.xywx, r24.xywx + sqrt r23.z, r23.z + div r21.w, r21.w, r23.z + add r20.w, r20.w, r21.w + mul_sat r20.w, r20.w, l(0.500000) + movc r19.x, r26.w, r20.w, r19.x + dp3_sat r20.w, r12.xyzx, r25.xzwx + dp3_sat r21.w, r9.xyzx, r25.xzwx + lt r23.z, l(0.000000), r22.w + mul r22.w, r22.w, r22.w + mad r24.x, r21.w, l(3.600000), l(0.400000) + div r22.w, r22.w, r24.x + mad r22.w, r13.w, r13.w, r22.w + min r22.w, r22.w, l(1.000000) + movc r22.w, r23.z, r22.w, r3.y + mul r22.w, r22.w, r22.w + mad r23.z, r20.w, r22.w, -r20.w + mad r20.w, r23.z, r20.w, l(1.000000) + add r21.w, -r21.w, l(1.000000) + mul r23.z, r21.w, r21.w + mul r23.z, r23.z, r23.z + mul r24.x, r21.w, r23.z + mad r21.w, -r23.z, r21.w, l(1.000000) + mad r24.xyw, r1.xzxw, r21.wwww, r24.xxxx + mul r20.w, r20.w, r20.w + div r20.w, r22.w, r20.w + mul r20.w, r25.y, r20.w + mad r21.w, -r13.x, r22.w, r13.x + mad r21.w, r21.w, r13.x, r22.w + sqrt r21.w, r21.w + mad r23.z, -r20.x, r22.w, r20.x + mad r22.w, r23.z, r20.x, r22.w + sqrt r22.w, r22.w + mul r22.w, r13.x, r22.w + mad r21.w, r20.x, r21.w, r22.w + add r21.w, r21.w, l(0.000100) + div r21.w, l(0.500000), r21.w + mul r20.w, r20.w, r21.w + mul r24.xyw, r20.wwww, r24.xyxw + min r24.xyw, r24.xyxw, l(2048.000000, 2048.000000, 0.000000, 2048.000000) + mad r25.xy, r20.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r20.w, r25.xyxx, t13.yzwx, s1, l(0.000000) + mul r20.w, r10.w, r20.w + mul r20.w, r8.w, r20.w + div r20.w, r20.w, r9.w + mul r25.xyz, r16.xyzx, r20.wwww + div r25.xyz, r25.xyzx, r17.xyzx + add r24.xyw, r24.xyxw, r25.xyxz + mul r24.xyw, r24.xyxw, cb3[r19.w + 6].zzzz + max r24.xyw, r24.xyxw, l(0.000000, 0.000000, 0.000000, 0.000000) + min r24.xyw, r24.xyxw, l(1000.000000, 1000.000000, 0.000000, 1000.000000) + mul r25.xyz, r10.xyzx, r19.xxxx + mad r24.xyw, r24.xyxw, r20.xxxx, r25.xyxz + mul r20.xyw, r20.yyyy, cb3[r18.z + 6].xyxz + mul r20.xyw, r24.zzzz, r20.xyxw + mul r20.xyw, r18.xxxx, r20.xyxw + mul r20.xyw, r20.xyxw, r24.xyxw + else + mov r20.xyw, l(0,0,0,0) + endif + else + if_z r18.y + mad r18.x, cb3[r17.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r18.x, -|cb3[r17.w + 6].x| + add r24.y, -r24.x, cb3[r17.w + 6].y + add r18.x, -|r24.x|, l(1.000000) + add r18.x, -|r24.y|, r18.x + max r18.x, r18.x, l(0.000488281250) + ge r18.y, cb3[r17.w + 6].x, l(0.000000) + movc r24.z, r18.y, r18.x, -r18.x + dp3 r18.x, r24.xyzx, r24.xyzx + rsq r18.x, r18.x + mul r24.xyz, r18.xxxx, r24.xyzx + add r25.xyz, -r5.xyzx, cb3[r23.x + 6].xyzx + dp3 r18.x, r25.xyzx, r25.xyzx + rsq r18.y, r18.x + mul r26.xyz, r18.yyyy, r25.xyzx + ftoi r18.y, cb3[r19.w + 6].w + mul r27.xyz, r24.xyzx, cb3[r17.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r27.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r18.z, cb3[r18.z + 6].w + and r18.z, r18.z, l(1) + ieq r19.x, r18.z, l(0) + not r19.x, r19.x + lt r19.w, l(0.000000), cb3[r17.w + 6].z + and r19.x, r19.w, r19.x + dp3 r19.w, r28.xyzx, r28.xyzx + sqrt r19.w, r19.w + dp3 r21.w, r27.xyzx, r27.xyzx + sqrt r21.w, r21.w + dp3 r22.w, r28.xyzx, r27.xyzx + mad r19.w, r19.w, r21.w, r22.w + mad r19.w, r19.w, l(0.500000), l(1.000000) + div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), r19.w + movc r19.w, r19.x, r19.w, l(1.000000) + lt r21.w, cb3[r23.w + 6].w, l(0.000000) + if_nz r21.w + mul r21.w, cb3[r23.x + 6].w, cb3[r23.x + 6].w + mul r21.w, r18.x, r21.w + mad r21.w, -r21.w, r21.w, l(1.000000) + max r21.w, r21.w, l(0.000000) + add r18.x, r18.x, l(1.000000) + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x + and r22.w, r19.x, l(0x3f800000) + add r23.z, -r18.x, r19.w + mad r18.x, r22.w, r23.z, r18.x + mul r21.w, r21.w, r21.w + mul r18.x, r18.x, r21.w + else + mul r27.xyz, r25.xyzx, cb3[r23.x + 6].wwww + dp3 r21.w, r27.xyzx, r27.xyzx + min r21.w, r21.w, l(1.000000) + add r21.w, -r21.w, l(1.000000) + log r21.w, r21.w + mul r21.w, r21.w, cb3[r23.w + 6].w + exp r21.w, r21.w + mul r18.x, r19.w, r21.w + endif + dp3 r19.w, r26.xyzx, -r24.xyzx + add r19.w, r19.w, -cb3[r17.w + 6].z + mul_sat r19.w, r19.w, cb3[r17.w + 6].w + mul r19.w, r19.w, r19.w + movc r19.w, r18.z, l(1.000000), r19.w + mul r18.x, r18.x, r19.w + not r19.x, r19.x + ige r19.w, r18.y, l(0) + and r19.x, r19.w, r19.x + if_nz r19.x + if_z r18.z + ishl r19.x, r18.y, l(2) + mul r24.xyz, r5.yyyy, cb6[r19.x + 33].xywx + mad r24.xyz, cb6[r19.x + 32].xywx, r5.xxxx, r24.xyzx + mad r24.xyz, cb6[r19.x + 34].xywx, r5.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb6[r19.x + 35].xywx + div_sat r19.xw, r24.xxxy, r24.zzzz + mad r19.xw, r19.xxxw, cb6[r18.y + 0].zzzw, cb6[r18.y + 0].xxxy + else + ishl r21.w, r18.y, l(2) + dp3 r24.x, -r25.xyzx, cb6[r21.w + 32].xyzx + dp3 r24.y, -r25.xyzx, cb6[r21.w + 33].xyzx + dp3 r24.z, -r25.xyzx, cb6[r21.w + 34].xyzx + lt r21.w, |r24.x|, |r24.y| + and r21.w, r21.w, l(1) + dp2 r22.w, |r24.xyxx|, icb[r21.w + 0].xyxx + lt r22.w, r22.w, |r24.z| + movc r21.w, r22.w, l(2), r21.w + dp3 r22.w, r24.xyzx, icb[r21.w + 0].xyzx + lt r22.w, r22.w, l(0.000000) + bfi r21.w, l(31), l(1), r21.w, r22.w + ushr r22.w, r21.w, l(1) + dp3 r22.w, r24.xyzx, icb[r22.w + 0].xyzx + div r23.z, l(0.000244140625), cb6[r18.y + 0].w + add r23.z, -r23.z, l(0.500000) + utof r23.w, r21.w + ult r24.w, r21.w, l(2) + and r24.w, r24.w, l(2) + dp2 r24.x, r24.xzxx, icb[r24.w + 0].xzxx + mul r24.x, r24.x, icb[r21.w + 4].z + div r24.x, r24.x, |r22.w| + mad r23.w, r24.x, r23.z, r23.w + add r23.w, r23.w, l(0.500000) + mul_sat r25.x, r23.w, l(0.166666672) + iadd r23.w, l(-1), icb[r21.w + 4].y + dp2 r23.w, r24.yzyy, icb[r23.w + 0].xyxx + mul r21.w, r23.w, icb[r21.w + 4].w + div r21.w, r21.w, |r22.w| + mad_sat r25.y, -r21.w, r23.z, l(0.500000) + mad r19.xw, r25.xxxy, cb6[r18.y + 0].zzzw, cb6[r18.y + 0].xxxy + endif + sample_l_indexable(texture2d)(float,float,float,float) r18.y, r19.xwxx, t15.yxzw, s1, l(0.000000) + mul r18.x, r18.y, r18.x + endif + lt r18.x, l(0.000000), r18.x + if_nz r18.x + if_z r18.z + ftoi r18.x, cb3[r23.y + 6].x + else + add r23.xzw, r5.xxyz, -cb3[r23.x + 6].xxyz + lt r24.xyz, |r23.zwwz|, |r23.xxzx| + and r18.y, r24.y, r24.x + lt r23.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xxzw + ushr r18.z, cb3[r17.w + 6].w, l(24) + ubfe r19.xw, l(8, 0, 0, 8), l(16, 0, 0, 8), cb3[r17.w + 6].wwww + movc r18.z, r23.x, r18.z, r19.x + and r17.w, l(255), cb3[r17.w + 6].w + movc r17.w, r23.z, r19.w, r17.w + ubfe r19.x, l(8), l(8), cb3[r23.y + 6].x + and r19.w, l(255), cb3[r23.y + 6].x + movc r19.x, r23.w, r19.x, r19.w + movc r17.w, r24.z, r17.w, r19.x + movc r17.w, r18.y, r18.z, r17.w + ilt r18.y, r17.w, l(80) + movc r18.x, r18.y, r17.w, l(-1) + endif + ishl r17.w, r18.x, l(2) + mad r23.xyz, r26.xyzx, cb4[r18.x + 288].xxxx, r5.xyzx + mul r18.y, l(5.000000), cb4[r18.x + 288].y + mad r23.xyz, r2.xywx, r18.yyyy, r23.xyzx + mul r24.xyzw, r23.yyyy, cb4[r17.w + 65].xyzw + mad r24.xyzw, cb4[r17.w + 64].xyzw, r23.xxxx, r24.xyzw + mad r23.xyzw, cb4[r17.w + 66].xyzw, r23.zzzz, r24.xyzw + add r23.xyzw, r23.xyzw, cb4[r17.w + 67].xyzw + div r23.xyz, r23.xyzx, r23.wwww + ge r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + ge r25.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r18.yz, -cb4[r18.x + 344].xxyx, cb4[r18.x + 344].zzwz + mad r18.yz, r23.xxyx, r18.yyzy, cb4[r18.x + 344].xxyx + mad r19.xw, r18.yyyz, cb4[400].zzzw, l(0.500000, 0.000000, 0.000000, 0.500000) + round_ni r19.xw, r19.xxxw + mad r18.yz, r18.yyzy, cb4[400].zzwz, -r19.xxwx + add r26.xyzw, r18.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r23.xy, -r18.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) + min r26.xz, r18.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r18.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r23.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r18.yz, r27.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r18.yyzy + mul r30.xy, r18.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r18.yz, -r26.xxzx, r26.xxzx, r23.xxyx + add r18.yz, r18.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r31.xy, r18.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r18.yz, r26.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r30.z, r31.x + mov r30.w, r18.y + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r18.z + mov r28.z, r29.y + mov r28.w, r27.z + add r23.xyw, r28.zyzw, r31.zyzw + div r27.xyz, r29.xzwx, r26.zwyz + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyz, r27.yxzy, cb4[400].xxxx + div r28.xyz, r28.zywz, r23.xywx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb4[400].yyyy + mov r27.w, r28.x + mad r29.xyzw, r19.xwxw, cb4[400].xyxy, r27.ywxw + mad r18.yz, r19.xxwx, cb4[400].xxyx, r27.zzwz + mov r28.w, r27.y + mov r27.yw, r28.yyyz + mad r30.xyzw, r19.xwxw, cb4[400].xyxy, r27.xyzy + mad r28.xyzw, r19.xwxw, cb4[400].xyxy, r28.wywz + mad r27.xyzw, r19.xwxw, cb4[400].xyxy, r27.xwzw + mul r31.xyzw, r23.xxxy, r26.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r29.xyxx, t6.xxxx, s4, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r29.zwzz, t6.xxxx, s4, r23.z + mul r19.x, r19.x, r31.y + mad r17.w, r31.x, r17.w, r19.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r18.yzyy, t6.xxxx, s4, r23.z + mad r17.w, r31.z, r18.y, r17.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r28.xyxx, t6.xxxx, s4, r23.z + mad r17.w, r31.w, r18.y, r17.w + mul r29.xyzw, r23.yyww, r26.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r30.xyxx, t6.xxxx, s4, r23.z + mad r17.w, r29.x, r18.y, r17.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r30.zwzz, t6.xxxx, s4, r23.z + mad r17.w, r29.y, r18.y, r17.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r28.zwzz, t6.xxxx, s4, r23.z + mad r17.w, r29.z, r18.y, r17.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r27.xyxx, t6.xxxx, s4, r23.z + mad r17.w, r29.w, r18.y, r17.w + ige r18.y, r18.x, l(0) + or r24.xyz, r24.xyzx, r25.xyzx + or r18.z, r24.y, r24.x + or r18.z, r24.z, r18.z + and r19.x, r23.z, l(0x7fffffff) + ult r19.x, l(0x7f800000), r19.x + or r18.z, r18.z, r19.x + mul r19.x, r23.w, r26.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.w, r27.zwzz, t6.xxxx, s4, r23.z + mad r17.w, r19.x, r19.w, r17.w + add r17.w, r17.w, l(-1.000000) + mad r17.w, cb4[r18.x + 288].w, r17.w, l(1.000000) + movc r17.w, r18.z, l(1.000000), r17.w + movc r17.w, r18.y, r17.w, l(1.000000) + else + mov r17.w, l(1.000000) + endif + else + mov r17.w, l(1.000000) + endif + mul r15.w, r15.w, r17.w + mov r20.xyw, l(0,0,0,0) + endif + add r22.xyz, r20.xywx, r22.xyzx + mov r16.w, r19.z + endloop + mov r11.x, r15.w + add r21.xyz, r21.xyzx, r22.xyzx + iadd r13.y, r13.y, l(1) +endloop +mad r8.xyz, r21.xyzx, r11.xxxx, r14.xyzx +ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r3.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + dp3 r2.z, r2.xywx, r9.xyzx + max r2.z, r2.z, l(0.000000) + add r2.z, r0.z, r2.z + mad r3.y, r13.w, l(-16.000000), l(-1.000000) + exp r3.y, r3.y + log r2.z, |r2.z| + mul r2.z, r2.z, r3.y + exp r2.z, r2.z + add r2.z, r0.z, r2.z + add r2.z, r2.z, l(-1.000000) + mov_sat r13.xyz, r2.zzzz + mad r14.xyz, r10.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r10.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r10.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r13.xyz, r1.yyyy + mov r14.xyz, r1.yyyy +endif +mad r16.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[212].x +mad r17.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx +dp2 r0.z, r17.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r16.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r16.xyzx +mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r17.xyz, r16.xzyx, -r17.xyzx +max r0.z, |r17.y|, |r17.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.y, |r17.z|, l(-208.000000) +mul_sat r1.y, r1.y, l(0.031250) +max r0.z, r0.z, r1.y +ne r1.y, l(0.000000), cb0[210].w +lt r2.z, r0.z, l(1.000000) +and r1.y, r1.y, r2.z +if_nz r1.y + mad r17.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r17.xyz, r16.xzyx, -r17.xyzx + max r1.y, |r17.y|, |r17.x| + add r1.y, r1.y, l(-29.000000) + mul_sat r1.y, r1.y, l(0.500000) + add r2.z, |r17.z|, l(-13.000000) + mul_sat r2.z, r2.z, l(0.500000) + max r1.y, r1.y, r2.z + lt r2.z, r1.y, l(1.000000) + if_nz r2.z + mad r17.xyz, r16.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t19.yzwx, s2, l(0.000000) + add r2.z, -r1.y, l(1.000000) + mul r3.y, l(0.500000), cb0[211].y + mad r7.w, -cb0[211].y, l(0.500000), l(1.000000) + max r3.y, r3.y, r17.y + min r3.y, r7.w, r3.y + mul r17.w, r3.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t20.xyzw, s1, l(0.000000) + mad r3.y, r19.w, r2.z, r0.z + add r20.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t20.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.yyyy, r20.xyzx + mov r20.w, r18.y + mul r20.xyzw, r2.zzzz, r20.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t20.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.xxxx, r17.xyzx + mov r17.w, r18.x + mul r17.xyzw, r2.zzzz, r17.xyzw + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r19.xyzx + mul r18.xyzw, r2.zzzz, r18.xyzw + else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r3.y, r0.z + endif + mad r19.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r19.xyz, r16.xzyx, -r19.xyzx + max r2.z, |r19.y|, |r19.x| + add r2.z, r2.z, l(-116.000000) + mul_sat r2.z, r2.z, l(0.125000) + add r7.w, |r19.z|, l(-52.000000) + mul_sat r7.w, r7.w, l(0.125000) + max r2.z, r2.z, r7.w + lt r7.w, r2.z, l(1.000000) + if_nz r7.w + mad r19.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r21.xyz, r19.xyzx, cb0[211].xyzx + round_ni r21.xyz, r21.xyzx + mad r19.xyz, r19.xyzx, cb0[211].xyzx, -r21.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r19.xyzx, t21.yzwx, s2, l(0.000000) + add r7.w, -r2.z, l(1.000000) + mul r1.y, r1.y, r7.w + mul r7.w, l(0.500000), cb0[211].y + mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) + max r7.w, r7.w, r19.y + min r7.w, r8.w, r7.w + mul r19.w, r7.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyzw, r19.xwzx, t22.xyzw, s1, l(0.000000) + mad r3.y, r22.w, r1.y, r3.y + add r23.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyz, r23.xyzx, t22.xyzw, s1, l(0.000000) + mad r23.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r21.yyyy, r23.xyzx + mov r23.w, r21.y + mad r20.xyzw, r23.xyzw, r1.yyyy, r20.xyzw + add r19.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r21.xxxx, r19.xyzx + mov r19.w, r21.x + mad r17.xyzw, r19.xyzw, r1.yyyy, r17.xyzw + mad r19.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r19.xyzx + mad r18.xyzw, r21.xyzw, r1.yyyy, r18.xyzw + endif + lt r1.y, l(0.000000), r2.z + if_nz r1.y + mad r16.xyz, r16.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r16.xyzx, cb0[211].xyzx + mul r21.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r19.xyzx + mad r19.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r16.xyz, r21.xyzx, r16.xyzx + min r16.xyz, r19.xyzx, r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r16.xyzx, t23.yzwx, s2, l(0.000000) + add r1.y, -r0.z, l(1.000000) + mul r1.y, r1.y, r2.z + max r2.z, r21.y, r16.y + min r2.z, r19.y, r2.z + mul r16.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t24.xyzw, s1, l(0.000000) + add r21.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t24.xyzw, s1, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r22.yyyy, r21.xyzx + mov r21.w, r22.y + mad r20.xyzw, r21.xyzw, r1.yyyy, r20.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t24.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r22.xxxx, r16.xyzx + mov r16.w, r22.x + mad r17.xyzw, r16.xyzw, r1.yyyy, r17.xyzw + mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r16.xyzx + mad r18.xyzw, r22.xyzw, r1.yyyy, r18.xyzw + mad r3.y, r19.w, r1.y, r3.y + endif + mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) + add r16.x, -r0.z, r1.y + add r0.z, r0.z, r1.y + mul r16.y, r0.z, l(0.500000) +else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r16.xy, l(0,1.000000,0,0) +endif +mul r19.xyzw, r16.yxyy, cb0[213].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r16.zw, r16.yyyx, cb0[213].wwwy +mad r19.x, r16.w, l(0.375000), r16.z +add r18.xyzw, r18.xyzw, r19.wyzx +mul r19.xyzw, r16.yxyy, cb0[214].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r16.zw, r16.yyyx, cb0[214].wwwy +mad r19.x, r16.w, l(0.375000), r16.z +add r17.xyzw, r17.xyzw, r19.wyzx +mul r19.xyzw, r16.yxyy, cb0[215].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r16.xy, r16.yxyy, cb0[215].wyww +mad r19.x, r16.y, l(0.375000), r16.x +add r16.xyzw, r19.wyzx, r20.xyzw +ge r19.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r19.y, r19.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r19.xyzw, r4.zwzz, t18.xyzw, s1, l(0.000000) + lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r19.xyzw| + or r4.zw, r20.zzzw, r20.xxxy + or r0.z, r4.w, r4.z + if_nz r0.z + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mov r4.z, l(1.000000) + mov r4.w, r0.z + mov r1.y, l(0) + loop + ge r2.z, l(4.600000), r4.w + breakc_nz r2.z + iadd r2.z, r1.y, l(1) + mul r20.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r4.zw, r20.xxxy + mov r1.y, r2.z + continue + endloop + mul r19.xyzw, r4.zzzz, r19.xyzw + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb7[3].x, cb7[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r20.x, r0.z, l(0.00390625000) + mov r20.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r20.xyxx, t17.zwxy, s1, l(0.000000) + mad r4.zw, r4.zzzw, cb7[2].xxxy, cb7[2].zzzw + mul r20.x, r4.z, l(3.54490781) + mul r20.yzw, r4.wwww, r19.yyzw + mul r0.z, r19.x, l(0.406976730) + exp r0.z, r0.z + mul r19.xyzw, r0.zzzz, r20.xyzw + mov r20.xyzw, r19.xyzw + mov r0.z, l(0) + loop + uge r2.z, r0.z, r1.y + breakc_nz r2.z + mul r21.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r2.z, r21.xyzw, r20.xyzw + dp2 r3.y, r21.yxyy, r20.xyxx + dp2 r4.z, r21.zxzz, r20.xzxx + dp2 r4.w, r21.wxww, r20.xwxx + iadd r7.w, r0.z, l(1) + mov r20.x, r2.z + mov r20.y, r3.y + mov r20.zw, r4.zzzw + mov r0.z, r7.w + continue + endloop + mul r19.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r20.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r19.xyzw, r20.xyzw + dp2 r1.y, r19.yxyy, r20.xyxx + dp2 r2.z, r19.zxzz, r20.xzxx + dp2 r3.y, r19.wxww, r20.xwxx + mul r20.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.z, r19.xyzw, r20.xyzw + dp2 r4.w, r19.yxyy, r20.xyxx + dp2 r7.w, r19.zxzz, r20.xzxx + dp2 r8.w, r19.wxww, r20.xwxx + mul r20.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r9.w, r19.xyzw, r20.xyzw + dp2 r10.w, r19.yxyy, r20.xyxx + dp2 r11.x, r19.zxzz, r20.xzxx + dp2 r14.w, r19.wxww, r20.xwxx + mul r18.w, r0.z, l(0.886226952) + mul r18.x, r3.y, l(-1.02332675) + mul r18.y, r1.y, l(-1.02332675) + mul r18.z, r2.z, l(1.02332675) + mul r17.x, r8.w, l(-1.02332675) + mul r17.yw, r4.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r17.z, r7.w, l(1.02332675) + mul r16.w, r9.w, l(0.886226952) + mul r16.x, r14.w, l(-1.02332675) + mul r16.y, r10.w, l(-1.02332675) + mul r16.z, r11.x, l(1.02332675) + endif +endif +dp3 r0.z, r18.xyzx, r2.xywx +add r0.z, r18.w, r0.z +max r18.x, r0.z, l(0.000000) +dp3 r0.z, r17.xyzx, r2.xywx +add r0.z, r17.w, r0.z +max r18.y, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r2.xywx +add r0.z, r16.w, r0.z +max r18.z, r0.z, l(0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.y, r13.w, l(0.001000) +log r1.y, r1.y +mad r1.y, -r1.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.y +mul r2.xy, r4.xyxx, cb1[0].wwww +round_ni r2.xy, r2.xyxx +add r1.y, |r3.w|, -cb1[2].y +round_ni r1.y, r1.y +add r2.z, l(-1.000000), cb1[1].x +max r2.w, r1.y, l(0.000000) +min r2.z, r2.z, r2.w +ge r1.y, r2.z, r1.y +mad r2.x, r2.y, cb1[0].x, r2.x +ftoi r2.xy, r2.xzxx +iadd r2.xy, r2.xyxx, cb0[110].zwzz +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.x, r2.x, l(0), t0.xxxx +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.y, r2.y, l(0), t0.xxxx +and r2.x, r2.y, r2.x +and r1.y, r1.y, r2.x +mul r2.xyz, r18.xyzx, cb0[111].xxxx +dp3 r2.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r5.w, l(1.000000) +mov r12.w, l(1.000000) +mov r2.yzw, l(0,0,0,0) +mov r3.y, l(1.000000) +mov r4.z, r1.y +mov r4.w, l(0) +loop + lt r7.w, l(0.010000), r3.y + ine r8.w, r4.z, l(0) + and r8.w, r7.w, r8.w + if_nz r8.w + firstbit_lo r8.w, r4.z + ishl r9.w, l(1), r8.w + xor r4.z, r4.z, r9.w + ishl r8.w, r8.w, l(3) + dp4 r16.x, cb1[r8.w + 6].xyzw, r5.xyzw + dp4 r16.y, cb1[r8.w + 7].xyzw, r5.xyzw + dp4 r16.z, cb1[r8.w + 8].xyzw, r5.xyzw + ge r17.xyz, cb1[r8.w + 5].xyzx, |r16.xyzx| + and r9.w, r17.y, r17.x + and r9.w, r17.z, r9.w + if_nz r9.w + mul r9.w, l(0.100000), cb1[r8.w + 5].x + mul r17.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r17.xy, r17.xyxx, r17.xyxx + add r19.xyz, -|r16.xyzx|, cb1[r8.w + 5].xyzx + mul r19.xyz, r19.xyzx, cb1[r8.w + 9].xyzx + eq r10.w, l(1.000000), cb1[r8.w + 10].x + if_nz r10.w + dp3 r20.x, cb1[r8.w + 6].xyzx, r15.xyzx + dp3 r20.y, cb1[r8.w + 7].xyzx, r15.xyzx + dp3 r20.z, cb1[r8.w + 8].xyzx, r15.xyzx + add r21.xyz, -r16.xyzx, cb1[r8.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r16.xyzx, -cb1[r8.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r10.w, r21.y, r21.x + min r10.w, r21.z, r10.w + mad r16.xyz, r20.xyzx, r10.wwww, r16.xyzx + else + mov r16.xyz, r15.xyzx + endif + dp3 r10.w, r16.xyzx, r16.xyzx + rsq r10.w, r10.w + mul r16.xyz, r10.wwww, r16.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r10.w, r16.xyzx, r20.xyzx + div r16.xyz, r16.xyzx, r10.wwww + lt r10.w, r16.z, l(0.000000) + add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r16.zw, r16.zzzw, r20.xxxy + movc r16.xy, r10.wwww, r16.zwzz, r16.xyxx + dp4 r10.w, cb1[r8.w + 4].xyzw, r12.xyzw + max r10.w, r10.w, l(0.000000) + max r10.w, r10.w, l(0.000100) + min r11.x, r19.z, r19.y + min r11.x, r11.x, r19.x + add r13.w, r17.y, r17.x + mad r13.w, r17.z, r17.z, r13.w + mad r9.w, r9.w, r9.w, -r13.w + mul r9.w, r9.w, cb1[r8.w + 9].x + mul r9.w, r9.w, cb1[r8.w + 9].x + add r13.w, l(1.000000), -cb1[r8.w + 10].y + mul r9.w, r9.w, r13.w + mul r9.w, r9.w, l(100.000000) + mad_sat r9.w, r11.x, cb1[r8.w + 10].y, r9.w + mul r11.x, r9.w, cb1[r8.w + 10].w + mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww + mov r16.z, cb1[r8.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z + mul r16.xyz, r16.xyzx, cb1[r8.w + 9].wwww + div r13.w, r2.x, r10.w + min r13.w, |r13.w|, l(1.000000) + mad r13.w, r13.w, l(2.000000), r2.x + add r10.w, r10.w, l(2.000000) + div r10.w, r13.w, r10.w + add r10.w, r10.w, l(-1.000000) + mad r10.w, r10.w, cb0[112].w, l(1.000000) + mul r16.xyz, r10.wwww, r16.xyzx + mul r16.xyz, r11.xxxx, r16.xyzx + mad r2.yzw, r16.xxyz, r3.yyyy, r2.yyzw + mad r8.w, -r9.w, cb1[r8.w + 10].w, l(1.000000) + mul r3.y, r3.y, r8.w + endif + mov r4.w, l(-1) + continue + else + mov r4.w, r7.w + break + endif + mov r4.w, r7.w +endloop +if_nz r4.w + dp3 r1.y, r15.xyzx, r15.xyzx + rsq r1.y, r1.y + mul r15.xyz, r1.yyyy, r15.xyzx + lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r17.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r16.xyz, -r16.xyzx, r17.xyzx + itof r16.xyz, r16.xyzx + dp3 r1.y, r15.xyzx, r16.xyzx + div r15.xyz, r15.xyzx, r1.yyyy + lt r1.y, r15.z, l(0.000000) + add r4.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r4.zw, r4.zzzw, r16.xxxy + movc r4.zw, r1.yyyy, r4.zzzw, r15.xxxy + mov r12.w, l(1.000000) + dp4 r1.y, cb1[3].xyzw, r12.xyzw + max r1.y, r1.y, l(0.000000) + max r1.y, r1.y, l(0.000100) + mad r4.zw, r4.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r12.xy, r4.zwzz, cb1[1].wwww, cb1[2].wwww + mov r12.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r12.xyz, r12.xyzx, t5.xyzw, s3, r0.z + div r0.z, r2.x, r1.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r2.x + add r1.y, r1.y, l(2.000000) + div r0.z, r0.z, r1.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r2.yzw, r12.xxyz, r3.yyyy, r2.yyzw +endif +mul r2.xyz, r2.yzwy, cb0[112].zzzz +mul r2.xyz, r2.xyzx, cb0[111].yyyy +if_nz r3.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r12.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.y, -r0.z, l(1.000000) + mul r15.xyz, r1.yyyy, r2.xyzx + mad r2.xyz, r12.xyzx, r0.zzzz, r15.xyzx +endif +mul r10.xyz, r10.xyzx, r18.xyzx +mul r10.xyz, r10.xyzx, cb0[111].xxxx +add r0.z, -r3.x, l(1.000000) +div r0.z, r0.z, r3.x +mul r1.xyz, r0.zzzz, r1.xzwx +mad r1.xyz, r1.xyzx, r11.yzwy, r11.yzwy +mul r1.xyz, r1.xyzx, r2.xyzx +mul r1.xyz, r13.xyzx, r1.xyzx +mad r1.xyz, r10.xyzx, r14.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r8.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r6.x, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r5.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r9.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[163].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r9.xyzx, -r7.xyzx + add r2.w, r5.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.x + mul r4.z, r0.x, r3.z + mad r4.w, r4.z, r2.w, cb0[44].y + mad r2.w, -r4.z, r2.w, r2.w + mul r4.z, r2.w, cb0[159].z + max r4.z, r4.z, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.w, r4.w, -cb0[159].x + mul r5.w, r5.w, cb0[159].z + max r5.w, r5.w, l(-127.000000) + exp r5.w, -r5.w + mul r5.w, r5.w, cb0[159].y + lt r7.x, l(5.960464478E-08), |r4.z| + exp r7.y, -r4.z + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r4.z + mad r4.z, -r4.z, l(0.240226507), l(0.693147182) + movc r4.z, r7.x, r7.y, r4.z + add r4.w, r4.w, -cb0[162].z + mul r4.w, r4.w, cb0[162].x + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[162].y + lt r7.x, l(5.960464478E-08), |r2.w| + exp r7.y, -r2.w + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r7.x, r7.y, r2.w + mul r2.w, r2.w, r4.w + mad r2.w, r5.w, r4.z, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r0.x, r6.x, r0.x + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r6.xxxx, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.xxxy + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r3.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r3.xyzx, t16.xyzw, s1, l(0.000000) + add r0.y, |r3.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r5.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r6.x, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r6.xxxx, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xyzx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx +mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r6.yzwy, r6.yzwy +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r5.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t29.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xB094C87E.cso b/src/games/endfield/deferred-lighting/0xB094C87E.cso new file mode 100644 index 0000000000000000000000000000000000000000..3c2003b6e07817bd04bd0cfe7d3dc125edb0ca73 GIT binary patch literal 51188 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xB094C87E.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xB094C87E.ps_5_0.asm new file mode 100644 index 0000000000..3a226f730d --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xB094C87E.ps_5_0.asm @@ -0,0 +1,1681 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 16:31:32 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[5], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_constantbuffer CB7[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_sampler s5, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 37 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t24.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t25.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t26.xyzw +mul r1.xyzw, r1.xwyz, l(1023.000000, 3.000000, 1023.000000, 1023.000000) +ftou r1.xyw, r1.xyxw +ubfe r4.x, l(7), l(3), r1.x +bfi r4.yz, l(0, 3, 3, 0), l(0, 2, 2, 0), r1.xxwx, l(0, 0, 0, 0) +bfi r1.x, l(2), l(0), r1.y, r4.y +utof r1.x, r1.x +mul r1.y, r1.x, l(0.0322580636) +round_ne r1.z, r1.z +ftou r1.z, r1.z +ubfe r4.y, l(7), l(3), r1.z +utof r4.xy, r4.xyxx +mul r4.y, r4.y, l(0.00787401572) +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r4.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r5.y, -r4.w, l(1.000000) +lt r4.w, r5.y, l(0.000000) +ge r6.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r6.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r6.xy, r6.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r6.xy, r6.xyxx, r6.zwzz +movc r5.xz, r4.wwww, r6.xxyx, r2.xxyx +dp3 r2.x, r5.xyzx, r5.xyzx +rsq r2.x, r2.x +mul r6.xyz, r2.xxxx, r5.xyzx +and r1.z, r1.z, l(7) +utof r1.z, r1.z +mad r1.z, r1.z, l(0.107142866), l(0.500000) +utof r5.xz, r0.xxyx +mul r7.xy, v0.xyxx, cb0[82].zwzz +mad r7.zw, r7.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r8.xy, r5.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r8.xy, r8.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r2.y, r8.xyxx, t1.yxzw, s0, l(0.000000) +mul r8.xyzw, -r7.wwww, cb0[25].xyzw +mad r8.xyzw, cb0[24].xyzw, r7.zzzz, r8.xyzw +mad r8.xyzw, cb0[26].xyzw, r2.yyyy, r8.xyzw +add r8.xyzw, r8.xyzw, cb0[27].xyzw +div r8.xyz, r8.xyzx, r8.wwww +mul r2.y, r8.y, cb0[1].z +mad r2.y, cb0[0].z, r8.x, r2.y +mad r2.y, cb0[2].z, r8.z, r2.y +add r2.y, r2.y, cb0[3].z +eq r4.w, l(0.000000), cb0[86].w +add r9.xyz, -r8.xyzx, cb0[44].xyzx +mov r10.x, cb0[0].z +mov r10.y, cb0[1].z +mov r10.z, cb0[2].z +movc r9.xyz, r4.wwww, r9.xyzx, r10.xyzx +dp3 r4.w, r9.xyzx, r9.xyzx +max r5.w, r4.w, l(9.999999939E-09) +rsq r5.w, r5.w +mul r11.xyz, r5.wwww, r9.xyzx +mul r4.w, r4.w, r5.w +lt r7.z, l(0.000488281250), cb0[234].x +if_nz r7.z + sample_b_indexable(texture2d)(float,float,float,float) r7.z, v1.xyxx, t23.yzxw, s1, cb0[108].x +else + mov r7.z, l(1.000000) +endif +lt r12.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[226].xyxx +if_nz r12.x + add r7.w, |r6.y|, |r6.x| + add r7.w, |r6.z|, r7.w + div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w + mul r12.xzw, |r6.xxyz|, r7.wwww + mul r13.xyzw, r12.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) + add r13.xyz, r13.zwzz, r13.xxyx + mad r12.xzw, r12.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r13.xxyz + mul r13.xyz, r8.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r7.w, r13.xyzx, t10.yzwx, s2, l(0.000000) + mad r7.w, r7.w, l(2.000000), l(-1.000000) + mul r12.xzw, r7.wwww, r12.xxzw + mov r7.w, |r6.y| + add r7.w, r7.w, l(-0.700000) + mul_sat r7.w, r7.w, l(4.000000) + mad r9.w, r7.w, l(-2.000000), l(3.000000) + mul r7.w, r7.w, r7.w + mul r7.w, r7.w, r9.w + add r9.w, -cb0[229].z, cb0[229].y + mad r7.w, r7.w, r9.w, cb0[229].z + mul r12.xzw, r7.wwww, r12.xxzw +else + mov r12.xzw, l(0,0,0,0) +endif +if_nz r12.y + mul r13.xyz, r6.xyzx, cb0[233].zzzz + mul r14.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r13.xyz, r13.xyzx, cb0[225].xxxx, r14.xyzx + max r7.w, -r6.y, l(0.000000) + min r7.w, r7.w, l(0.900000) + add r7.w, -r7.w, l(1.000000) + mad r2.x, -r5.y, r2.x, l(-0.200000) + mul_sat r2.x, r2.x, l(-10.000000) + mad r5.y, r2.x, l(-2.000000), l(3.000000) + mul r2.x, r2.x, r2.x + mul r2.x, r2.x, r5.y + max r2.x, r2.x, l(0.100000) + min r2.x, r2.x, l(1.000000) + mul r2.x, r2.x, r7.w + mad r13.xyz, r13.xyzx, r2.xxxx, r8.xyzx + add r12.xyz, r12.xzwx, r13.xyzx + mul r13.xyz, r12.yyyy, cb5[1].xyzx + mad r12.xyw, cb5[0].xyxz, r12.xxxx, r13.xyxz + mad r12.xyz, cb5[2].xyzx, r12.zzzz, r12.xywx + add r12.xyz, r12.xyzx, cb5[3].xyzx + mad r13.x, r12.x, l(0.500000), cb5[4].x + mad r2.x, r12.y, l(0.500000), l(0.500000) + add r13.z, -r2.x, cb5[4].y + add r12.xy, r13.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r2.x, r12.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r12.xyxx, t9.xxxx, s5, r2.x +else + mov r2.x, l(1.000000) +endif +mov_sat r5.y, r6.y +add r7.w, l(1.000000), -cb0[230].w +mad r5.y, r5.y, r7.w, cb0[230].w +add r12.xy, r8.xzxx, -cb0[44].xzxx +max r7.w, |r12.y|, |r12.x| +mul r9.w, r5.y, cb0[230].z +mul r10.w, r2.x, r5.y +mul r11.w, l(0.0500000119), cb0[222].w +mad r12.x, -cb0[222].w, l(0.700000), r7.w +div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w +mul_sat r11.w, r11.w, r12.x +mad r12.x, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r12.x +mad r2.x, -r5.y, r2.x, l(1.000000) +mad r2.x, r11.w, r2.x, r10.w +mad r5.y, -cb0[230].z, r5.y, l(1.000000) +mad r2.x, r2.x, r5.y, r9.w +mad r5.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r7.w, r7.w, -cb0[222].w +div r5.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y +mul_sat r5.y, r5.y, r7.w +mad r7.w, r5.y, l(-2.000000), l(3.000000) +mul r5.y, r5.y, r5.y +mul r5.y, r5.y, r7.w +add r7.w, -r2.x, cb0[230].y +mad r2.x, r5.y, r7.w, r2.x +add r2.x, -r2.x, l(1.000000) +mad r2.x, -r7.z, r2.x, l(1.000000) +mad_sat r5.y, r2.z, l(0.300000), l(0.250000) +mul r5.y, r5.y, cb0[222].x +mul r5.y, r2.x, r5.y +mad r5.y, r5.y, l(-0.750000), l(1.000000) +mul r3.xyz, r3.xyzx, r5.yyyy +min r5.y, r2.z, l(0.300000) +mul r2.x, r2.x, cb0[222].x +mul r2.xw, r2.xxxw, l(0.500000, 0.000000, 0.000000, 3.000000) +add r5.y, -r2.z, r5.y +mad r12.w, r2.x, r5.y, r2.z +mul r2.x, r1.z, l(0.080000) +dp3 r2.z, r6.xyzx, r11.xyzx +max r5.y, r2.z, l(0.000000) +mad r13.xyzw, r12.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r7.z, r13.x, r13.x +mul r7.w, r5.y, l(-9.280000) +exp r7.w, r7.w +min r7.z, r7.w, r7.z +mad r7.z, r7.z, r13.x, r13.y +mad r7.zw, r7.zzzz, l(0.000000, 0.000000, -1.040000, 1.040000), r13.zzzw +ld_indexable(texture2d)(float,float,float,float) r13.x, r0.xyzz, t7.xyzw +lt r0.z, l(0.001000), r13.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r7.xyxx, t12.yzxw, s1, l(0.000000) + dp3 r9.w, -r11.xyzx, r6.xyzx + add r9.w, r9.w, r9.w + mad r14.xyz, r6.xyzx, -r9.wwww, -r11.xyzx + dp3 r9.w, -cb3[0].xyzx, r14.xyzx + mad r15.xyz, cb3[0].xyzx, r9.wwww, r14.xyzx + lt r9.w, r9.w, cb3[4].z + dp3 r10.w, r15.xyzx, r15.xyzx + max r10.w, r10.w, l(0.0000610351562) + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + mul r15.xyz, r15.xyzx, cb3[4].yyyy + mad r15.xyz, -cb3[0].xyzx, cb3[4].zzzz, r15.xyzx + dp3 r10.w, r15.xyzx, r15.xyzx + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + movc r14.xyz, r9.wwww, r15.xyzx, r14.xyzx + mad r15.xyz, r9.xyzx, r5.wwww, r14.xyzx + dp3 r9.w, r15.xyzx, r15.xyzx + max r9.w, r9.w, l(0.0000610351562) + rsq r9.w, r9.w + mul r15.xyz, r9.wwww, r15.xyzx + dp3 r9.w, r6.xyzx, r14.xyzx + mov_sat r12.y, r9.w + dp3_sat r10.w, r6.xyzx, r15.xyzx + dp3 r11.w, r11.xyzx, r14.xyzx + min r12.z, r5.y, l(1.000000) + mul r13.z, r12.w, r12.w + mul r13.z, r13.z, r13.z + mad r13.w, r10.w, r13.z, -r10.w + mad r10.w, r13.w, r10.w, l(1.000000) + dp3_sat r13.w, r11.xyzx, r15.xyzx + add r13.w, -r13.w, l(1.000000) + mul r14.x, r13.w, r13.w + mul r14.x, r14.x, r14.x + mul r14.y, r13.w, r14.x + add r14.z, -r12.w, l(1.000000) + mad r14.w, -r14.z, l(0.383026), l(-0.0761947036) + mad r14.w, r14.z, r14.w, l(1.049970) + mad r14.z, r14.z, r14.w, l(0.409255) + min r14.z, r14.z, l(0.999000) + add r14.w, -r14.z, l(1.000000) + mad r15.x, -r1.z, l(0.080000), l(1.000000) + mad r15.x, r15.x, l(0.0476190485), r2.x + mov_sat r15.y, -r11.w + mul r15.y, r15.y, r15.y + mad r15.y, r15.y, l(-0.640000), l(1.000000) + mul r15.y, r15.y, r15.y + mad r13.w, -r14.x, r13.w, l(1.000000) + mad r13.w, r2.x, r13.w, r14.y + mul r10.w, r10.w, r10.w + div r10.w, r13.z, r10.w + mad r14.xy, -r12.zyzz, r13.zzzz, r12.zyzz + mad r14.xy, r14.xyxx, r12.zyzz, r13.zzzz + sqrt r14.xy, r14.xyxx + mul r14.xy, r12.yzyy, r14.xyxx + add r13.z, r14.y, r14.x + add r13.z, r13.z, l(0.000100) + div r13.z, l(0.500000), r13.z + mul r10.w, r10.w, r13.z + mul r10.w, r10.w, r13.w + min r10.w, r10.w, l(2048.000000) + mad r16.xyzw, r12.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r12.z, r16.xyxx, t11.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r13.z, r16.zwzz, t11.yzxw, s1, l(0.000000) + mul r12.z, r12.z, r13.z + mul r12.z, r14.z, r12.z + div r12.z, r12.z, r14.w + mul r13.z, r15.x, r15.x + mul r12.z, r12.z, r13.z + mad r13.z, -r15.x, r14.w, l(1.000000) + div r12.z, r12.z, r13.z + add r10.w, r10.w, r12.z + add_sat r12.z, r2.z, l(0.200000) + mov_sat r13.z, r11.w + add r13.z, r13.z, l(0.500000) + min r13.z, r13.z, l(1.000000) + mul r13.w, r12.z, r13.z + add_sat r11.w, r11.w, l(1.000000) + mad r12.z, -r12.z, r13.z, l(1.000000) + mad r11.w, r11.w, r12.z, r13.w + mul r10.w, r10.w, r11.w + mul r10.w, r4.y, r10.w + mul r14.xyz, r4.yyyy, r3.xyzx + ubfe r1.w, l(7), l(3), r1.w + utof r1.w, r1.w + mul r1.w, r1.w, l(0.00787401572) + mul r10.w, r10.w, cb3[4].x + max r10.w, r10.w, l(0.000000) + min r10.w, r10.w, l(1000.000000) + mul r10.w, r12.y, r10.w + mad r14.xyz, r14.xyzx, r1.wwww, r10.wwww + max r1.w, r3.y, r3.x + max r1.w, r3.z, r1.w + max r1.w, r1.w, l(0.010000) + div r15.xzw, r3.xxyz, r1.wwww + mul r1.w, r4.x, l(0.00393700786) + mul r15.xzw, r1.wwww, r15.xxzw + add_sat r1.w, -r9.w, l(0.500000) + ne r10.w, r15.y, l(0.360000) + div r11.w, l(0.360000), r15.y + movc r10.w, r10.w, r11.w, l(1.000000) + mul r1.w, r1.w, r10.w + mad_sat r9.w, r1.x, l(0.0322580636), r9.w + add r9.w, -r12.y, r9.w + mul r16.xyz, r3.xyzx, r9.wwww + mad r15.xyz, r15.xzwx, r1.wwww, r16.xyzx + mad r14.xyz, r15.xyzx, r4.yyyy, r14.xyzx + mul r14.xyz, r14.xyzx, cb3[1].xyzx + mov r13.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r13.yzw, r13.xyxx, t8.wxyz, s1, cb0[108].x + add r1.w, -r13.x, l(1.000000) + mad r13.xyz, r14.xyzx, r13.yzwy, -r14.xyzx + mad r13.xyz, r1.wwww, r13.xyzx, r14.xyzx + max r1.w, r4.y, r0.z + add r1.w, -r0.z, r1.w + mad r0.z, r1.y, r1.w, r0.z + mul r13.xyz, r0.zzzz, r13.xyzx +else + mov r13.xyz, l(0,0,0,0) +endif +mul r1.yw, r5.xxxz, l(0.000000, 0.031250, 0.000000, 0.031250) +round_ni r1.yw, r1.yyyw +mad r0.z, r1.w, cb2[1].y, r1.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r1.y, -cb0[85].y, cb2[2].w, |r2.y| +round_ni r1.y, r1.y +add r1.w, l(-1.000000), cb2[1].w +max r9.w, r1.y, l(0.000000) +min r1.w, r1.w, r9.w +mul r9.w, r1.w, l(8.000000) +ftoi r9.w, r9.w +ge r1.y, r1.w, r1.y +iadd r1.w, r9.w, cb0[110].y +mul r9.w, r12.w, r12.w +dp3 r10.w, -r11.xyzx, r6.xyzx +add r10.w, r10.w, r10.w +mad r14.xyz, r6.xyzx, -r10.wwww, -r11.xyzx +min r12.x, r5.y, l(1.000000) +add r10.w, -r12.w, l(1.000000) +mad r11.w, -r10.w, l(0.383026), l(-0.0761947036) +mad r11.w, r10.w, r11.w, l(1.049970) +mad r10.w, r10.w, r11.w, l(0.409255) +min r10.w, r10.w, l(0.999000) +add r11.w, -r10.w, l(1.000000) +mad r1.z, -r1.z, l(0.080000), l(1.000000) +mad r1.z, r1.z, l(0.0476190485), r2.x +mad r12.yz, r12.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r12.y, r12.yzyy, t11.yxzw, s1, l(0.000000) +mad r12.z, -r1.z, r11.w, l(1.000000) +add_sat r2.z, r2.z, l(0.200000) +max r13.w, r3.y, r3.x +max r13.w, r3.z, r13.w +max r13.w, r13.w, l(0.010000) +div r15.xyz, r3.xyzx, r13.wwww +mul r13.w, r4.x, l(0.00393700786) +mul r16.xyz, r13.wwww, r15.xyzx +mul r17.xyz, r4.yyyy, r3.xyzx +mul r1.z, r1.z, r1.z +mov r18.w, l(1.000000) +mov r19.y, l(1.000000) +mov r20.z, r12.w +mov r21.xyz, l(0,0,0,0) +mov r13.w, l(1.000000) +mov r14.w, l(0) +loop + ilt r15.w, l(7), r14.w + breakc_nz r15.w + iadd r15.w, r0.z, r14.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r15.w, r15.w, l(0), t0.xxxx + iadd r16.w, r1.w, r14.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r16.w, r16.w, l(0), t0.xxxx + and r15.w, r15.w, r16.w + and r15.w, r1.y, r15.w + ishl r16.w, r14.w, l(5) + mov r22.xyz, l(0,0,0,0) + mov r17.w, r13.w + mov r19.z, r15.w + loop + breakc_z r19.z + firstbit_lo r19.w, r19.z + ishl r20.w, l(1), r19.w + xor r20.w, r19.z, r20.w + iadd r19.w, r16.w, r19.w + bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r19.wwww, l(1, 3, 5, 6) + bfi r21.w, l(29), l(3), r19.w, l(7) + ftou r22.w, cb3[r23.z + 6].w + ieq r22.w, r22.w, l(1) + if_nz r22.w + add r18.xyz, r8.xyzx, -cb3[r23.x + 6].xyzx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.z + 6].xzyx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.w + 6].yxzy + ushr r26.xyz, cb3[r23.z + 6].xzyx, l(16, 16, 16, 0) + ushr r27.xyz, cb3[r23.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyw, r27.yxyz + mov r28.xz, r24.xxzx + mov r28.yw, r26.xxxz + dp4 r22.w, r18.xyzw, r28.xyzw + mov r26.x, r24.y + mov r26.z, r25.y + mov r26.w, r27.x + dp4 r23.z, r18.xyzw, r26.xyzw + mov r27.xz, r25.xxzx + dp4 r18.x, r18.xyzw, r27.xyzw + max r18.y, |r22.w|, |r23.z| + max r18.x, |r18.x|, r18.y + mad r18.y, cb3[r21.w + 6].x, l(0.500000), l(0.500000) + add r18.x, -r18.y, r18.x + mad r18.y, -cb3[r21.w + 6].x, l(0.500000), l(0.500000) + div_sat r18.x, r18.x, r18.y + add r18.x, -r18.x, l(1.000000) + mul r18.x, r18.x, r18.x + else + mov r18.x, l(1.000000) + endif + lt r18.y, l(0.500000), cb3[r23.y + 6].z + lt r18.z, r18.x, l(0.001000) + or r18.z, r18.y, r18.z + if_nz r18.z + mov r19.z, r20.w + continue + endif + ishl r18.z, r19.w, l(3) + bfi r19.w, l(29), l(3), r19.w, l(2) + lt r22.w, cb3[r18.z + 6].w, l(1.500000) + if_nz r22.w + mad r22.w, cb3[r19.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r22.w, -|cb3[r19.w + 6].x| + add r24.y, -r24.x, cb3[r19.w + 6].y + add r22.w, -|r24.x|, l(1.000000) + add r22.w, -|r24.y|, r22.w + max r22.w, r22.w, l(0.000488281250) + ge r23.z, cb3[r19.w + 6].x, l(0.000000) + movc r24.z, r23.z, r22.w, -r22.w + dp3 r22.w, r24.xyzx, r24.xyzx + rsq r22.w, r22.w + mul r24.xyz, r22.wwww, r24.xyzx + add r25.xyz, -r8.xyzx, cb3[r23.x + 6].xyzx + dp3 r22.w, r25.xyzx, r25.xyzx + rsq r23.z, r22.w + mul r26.xyz, r23.zzzz, r25.xyzx + ftoi r24.w, cb3[r21.w + 6].w + mul r27.xyz, r24.xyzx, cb3[r19.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r25.w, cb3[r18.z + 6].w + and r25.w, r25.w, l(1) + ieq r26.w, r25.w, l(0) + not r26.w, r26.w + lt r27.w, l(0.000000), cb3[r19.w + 6].z + and r26.w, r26.w, r27.w + dp3 r27.w, r28.xyzx, r28.xyzx + sqrt r27.w, r27.w + dp3 r28.w, r29.xyzx, r29.xyzx + sqrt r28.w, r28.w + dp3 r29.w, r6.xyzx, r28.xyzx + div r29.w, r29.w, r27.w + dp3 r30.x, r6.xyzx, r29.xyzx + div r30.x, r30.x, r28.w + add r29.w, r29.w, r30.x + mul_sat r30.x, r29.w, l(0.500000) + dp3 r29.x, r28.xyzx, r29.xyzx + mad r27.w, r27.w, r28.w, r29.x + mad r27.w, r27.w, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r27.w + dp3_sat r19.x, r6.xyzx, r26.xyzx + movc r20.xy, r26.wwww, r30.xyxx, r19.xyxx + lt r19.x, cb3[r23.w + 6].w, l(0.000000) + if_nz r19.x + mul r19.x, cb3[r23.x + 6].w, cb3[r23.x + 6].w + mul r19.x, r19.x, r22.w + mad r19.x, -r19.x, r19.x, l(1.000000) + max r19.x, r19.x, l(0.000000) + add r22.w, r22.w, l(1.000000) + div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w + and r27.w, r26.w, l(0x3f800000) + add r28.w, r20.y, -r22.w + mad r22.w, r27.w, r28.w, r22.w + mul r19.x, r19.x, r19.x + mul r19.x, r19.x, r22.w + else + mul r29.xyz, r25.xyzx, cb3[r23.x + 6].wwww + dp3 r22.w, r29.xyzx, r29.xyzx + min r22.w, r22.w, l(1.000000) + add r22.w, -r22.w, l(1.000000) + log r22.w, r22.w + mul r22.w, r22.w, cb3[r23.w + 6].w + exp r22.w, r22.w + mul r19.x, r20.y, r22.w + endif + dp3 r20.y, r26.xyzx, -r24.xyzx + add r20.y, r20.y, -cb3[r19.w + 6].z + mul_sat r20.y, r20.y, cb3[r19.w + 6].w + mul r20.y, r20.y, r20.y + movc r20.y, r25.w, l(1.000000), r20.y + mul r19.x, r19.x, r20.y + not r20.y, r26.w + ige r22.w, r24.w, l(0) + and r20.y, r20.y, r22.w + if_nz r20.y + if_z r25.w + ishl r20.y, r24.w, l(2) + mul r24.xyz, r8.yyyy, cb6[r20.y + 33].xywx + mad r24.xyz, cb6[r20.y + 32].xywx, r8.xxxx, r24.xyzx + mad r24.xyz, cb6[r20.y + 34].xywx, r8.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb6[r20.y + 35].xywx + div_sat r24.xy, r24.xyxx, r24.zzzz + mad r24.xy, r24.xyxx, cb6[r24.w + 0].zwzz, cb6[r24.w + 0].xyxx + else + ishl r20.y, r24.w, l(2) + dp3 r29.x, -r25.xyzx, cb6[r20.y + 32].xyzx + dp3 r29.y, -r25.xyzx, cb6[r20.y + 33].xyzx + dp3 r29.z, -r25.xyzx, cb6[r20.y + 34].xyzx + lt r20.y, |r29.x|, |r29.y| + and r20.y, r20.y, l(1) + dp2 r22.w, |r29.xyxx|, icb[r20.y + 0].xyxx + lt r22.w, r22.w, |r29.z| + movc r20.y, r22.w, l(2), r20.y + dp3 r22.w, r29.xyzx, icb[r20.y + 0].xyzx + lt r22.w, r22.w, l(0.000000) + bfi r20.y, l(31), l(1), r20.y, r22.w + ushr r22.w, r20.y, l(1) + dp3 r22.w, r29.xyzx, icb[r22.w + 0].xyzx + div r24.z, l(0.000244140625), cb6[r24.w + 0].w + add r24.z, -r24.z, l(0.500000) + utof r25.x, r20.y + ult r25.y, r20.y, l(2) + and r25.y, r25.y, l(2) + dp2 r25.y, r29.xzxx, icb[r25.y + 0].xzxx + mul r25.y, r25.y, icb[r20.y + 4].z + div r25.y, r25.y, |r22.w| + mad r25.x, r25.y, r24.z, r25.x + add r25.x, r25.x, l(0.500000) + mul_sat r25.x, r25.x, l(0.166666672) + iadd r25.z, l(-1), icb[r20.y + 4].y + dp2 r25.z, r29.yzyy, icb[r25.z + 0].xyxx + mul r20.y, r25.z, icb[r20.y + 4].w + div r20.y, r20.y, |r22.w| + mad_sat r25.y, -r20.y, r24.z, l(0.500000) + mad r24.xy, r25.xyxx, cb6[r24.w + 0].zwzz, cb6[r24.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r20.y, r24.xyxx, t13.yxzw, s1, l(0.000000) + mul r19.x, r19.x, r20.y + endif + lt r20.y, l(0.000000), r19.x + if_nz r20.y + if_z r25.w + ftoi r22.w, cb3[r23.y + 6].x + else + add r24.xyz, r8.xyzx, -cb3[r23.x + 6].xyzx + lt r25.xyz, |r24.yzzy|, |r24.xxyx| + and r24.w, r25.y, r25.x + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ushr r25.x, cb3[r19.w + 6].w, l(24) + ubfe r25.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb3[r19.w + 6].wwww + movc r24.x, r24.x, r25.x, r25.y + and r25.x, l(255), cb3[r19.w + 6].w + movc r24.y, r24.y, r25.w, r25.x + ubfe r25.x, l(8), l(8), cb3[r23.y + 6].x + and r25.y, l(255), cb3[r23.y + 6].x + movc r24.z, r24.z, r25.x, r25.y + movc r24.y, r25.z, r24.y, r24.z + movc r24.x, r24.w, r24.x, r24.y + ilt r24.y, r24.x, l(80) + movc r22.w, r24.y, r24.x, l(-1) + endif + ishl r24.x, r22.w, l(2) + mad r24.yzw, r26.xxyz, cb4[r22.w + 288].xxxx, r8.xxyz + mul r25.x, l(5.000000), cb4[r22.w + 288].y + mad r24.yzw, r6.xxyz, r25.xxxx, r24.yyzw + mul r25.xyzw, r24.zzzz, cb4[r24.x + 65].xyzw + mad r25.xyzw, cb4[r24.x + 64].xyzw, r24.yyyy, r25.xyzw + mad r25.xyzw, cb4[r24.x + 66].xyzw, r24.wwww, r25.xyzw + add r24.xyzw, r25.xyzw, cb4[r24.x + 67].xyzw + div r24.xyz, r24.xyzx, r24.wwww + ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ge r29.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r30.xy, -cb4[r22.w + 344].xyxx, cb4[r22.w + 344].zwzz + mad r24.xy, r24.xyxx, r30.xyxx, cb4[r22.w + 344].xyxx + mad r30.xy, r24.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r30.xy, r30.xyxx + mad r24.xy, r24.xyxx, cb4[400].zwzz, -r30.xyxx + add r31.xyzw, r24.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r32.xyzw, r31.xxzz, r31.xxzz + add r30.zw, -r24.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r31.xz, r24.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r33.xy, r24.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r34.xy, r30.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy + add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r24.xy, r32.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r24.xyxx + mul r35.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r24.xy, -r31.xzxx, r31.xzxx, r30.zwzz + add r24.xy, r24.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r36.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r24.xy, r31.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r35.z, r36.x + mov r35.w, r24.x + mov r34.z, r33.x + mov r34.w, r32.x + add r31.xyzw, r34.zwxz, r35.zwxz + mov r36.z, r35.y + mov r36.w, r24.y + mov r33.z, r34.y + mov r33.w, r32.z + add r24.xyw, r33.zyzw, r36.zyzw + div r32.xyz, r34.xzwx, r31.zwyz + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyz, r32.yxzy, cb4[400].xxxx + div r33.xyz, r33.zywz, r24.xywx + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyz, r33.xyzx, cb4[400].yyyy + mov r32.w, r33.x + mad r34.xyzw, r30.xyxy, cb4[400].xyxy, r32.ywxw + mad r30.zw, r30.xxxy, cb4[400].xxxy, r32.zzzw + mov r33.w, r32.y + mov r32.yw, r33.yyyz + mad r35.xyzw, r30.xyxy, cb4[400].xyxy, r32.xyzy + mad r33.xyzw, r30.xyxy, cb4[400].xyxy, r33.wywz + mad r32.xyzw, r30.xyxy, cb4[400].xyxy, r32.xwzw + mul r36.xyzw, r24.xxxy, r31.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r34.xyxx, t6.xxxx, s4, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r34.zwzz, t6.xxxx, s4, r24.z + mul r25.w, r25.w, r36.y + mad r24.x, r36.x, r24.x, r25.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r30.zwzz, t6.xxxx, s4, r24.z + mad r24.x, r36.z, r25.w, r24.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r33.xyxx, t6.xxxx, s4, r24.z + mad r24.x, r36.w, r25.w, r24.x + mul r30.xyzw, r24.yyww, r31.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r35.xyxx, t6.xxxx, s4, r24.z + mad r24.x, r30.x, r24.y, r24.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r35.zwzz, t6.xxxx, s4, r24.z + mad r24.x, r30.y, r24.y, r24.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r33.zwzz, t6.xxxx, s4, r24.z + mad r24.x, r30.z, r24.y, r24.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r32.xyxx, t6.xxxx, s4, r24.z + mad r24.x, r30.w, r24.y, r24.x + ige r24.y, r22.w, l(0) + or r25.xyz, r25.xyzx, r29.xyzx + or r25.x, r25.y, r25.x + or r25.x, r25.z, r25.x + and r25.y, r24.z, l(0x7fffffff) + ult r25.y, l(0x7f800000), r25.y + or r25.x, r25.y, r25.x + mul r24.w, r24.w, r31.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r32.zwzz, t6.xxxx, s4, r24.z + mad r24.x, r24.w, r24.z, r24.x + add r24.x, r24.x, l(-1.000000) + mad r22.w, cb4[r22.w + 288].w, r24.x, l(1.000000) + movc r22.w, r25.x, l(1.000000), r22.w + movc r22.w, r24.y, r22.w, l(1.000000) + else + mov r22.w, l(1.000000) + endif + if_nz r26.w + dp3 r24.x, r14.xyzx, r27.xyzx + mul_sat r24.y, r23.z, cb3[r19.w + 6].z + mad r24.y, r24.y, l(0.500000), r9.w + min r24.y, r24.y, l(1.000000) + div r24.y, r9.w, r24.y + mad r25.xyz, r14.xyzx, r24.xxxx, -r27.xyzx + dp3 r24.z, r28.xyzx, r25.xyzx + mul r24.x, r24.x, r24.x + mad r24.x, cb3[r19.w + 6].z, cb3[r19.w + 6].z, -r24.x + div_sat r24.x, r24.z, r24.x + mad r24.xzw, r27.xxyz, r24.xxxx, r28.xxyz + dp3 r25.x, r24.xzwx, r24.xzwx + rsq r25.x, r25.x + mul r26.xyz, r24.xzwx, r25.xxxx + else + mov r24.y, l(1.000000) + endif + if_nz r20.y + mul_sat r20.y, r23.z, cb3[r21.w + 6].y + mad r24.xzw, r9.xxyz, r5.wwww, r26.xxyz + dp3 r23.z, r24.xzwx, r24.xzwx + max r23.z, r23.z, l(0.0000610351562) + rsq r23.z, r23.z + mul r24.xzw, r23.zzzz, r24.xxzw + dp3 r23.z, r6.xyzx, r26.xyzx + dp3_sat r25.x, r6.xyzx, r24.xzwx + dp3_sat r24.x, r11.xyzx, r24.xzwx + dp3 r24.z, r11.xyzx, r26.xyzx + lt r24.w, l(0.000000), r20.y + mul r20.y, r20.y, r20.y + mad r25.y, r24.x, l(3.600000), l(0.400000) + div r20.y, r20.y, r25.y + mad r20.y, r12.w, r12.w, r20.y + min r20.y, r20.y, l(1.000000) + movc r20.y, r24.w, r20.y, r9.w + mul r20.y, r20.y, r20.y + mad r24.w, r25.x, r20.y, -r25.x + mad r24.w, r24.w, r25.x, l(1.000000) + add r24.x, -r24.x, l(1.000000) + mul r25.x, r24.x, r24.x + mul r25.x, r25.x, r25.x + mul r25.y, r24.x, r25.x + mov_sat r25.z, -r24.z + mul r25.z, r25.z, r25.z + mad r25.z, r25.z, l(-0.640000), l(1.000000) + mul r25.z, r25.z, r25.z + mad r24.x, -r25.x, r24.x, l(1.000000) + mad r24.x, r2.x, r24.x, r25.y + mul r24.w, r24.w, r24.w + div r24.w, r20.y, r24.w + mul r24.y, r24.y, r24.w + mad r24.w, -r12.x, r20.y, r12.x + mad r24.w, r24.w, r12.x, r20.y + sqrt r24.w, r24.w + mad r25.x, -r20.x, r20.y, r20.x + mad r20.y, r25.x, r20.x, r20.y + sqrt r20.y, r20.y + mul r20.y, r12.x, r20.y + mad r20.y, r20.x, r24.w, r20.y + add r20.y, r20.y, l(0.000100) + div r20.y, l(0.500000), r20.y + mul r20.y, r20.y, r24.y + mul r20.y, r20.y, r24.x + min r20.y, r20.y, l(2048.000000) + mad r24.xy, r20.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r24.x, r24.xyxx, t11.xyzw, s1, l(0.000000) + mul r24.x, r12.y, r24.x + mul r24.x, r10.w, r24.x + div r24.x, r24.x, r11.w + mul r24.x, r1.z, r24.x + div r24.x, r24.x, r12.z + add r20.y, r20.y, r24.x + mov_sat r24.x, r24.z + add r24.x, r24.x, l(0.500000) + min r24.x, r24.x, l(1.000000) + mul r24.y, r2.z, r24.x + add_sat r24.z, r24.z, l(1.000000) + mad r24.x, -r2.z, r24.x, l(1.000000) + mad r24.x, r24.z, r24.x, r24.y + mul r20.y, r20.y, r24.x + mul r20.y, r4.y, r20.y + mul r20.y, r20.y, cb3[r21.w + 6].z + max r20.y, r20.y, l(0.000000) + min r20.y, r20.y, l(1000.000000) + add_sat r24.x, -r23.z, l(0.500000) + ne r24.y, r25.z, l(0.360000) + div r24.z, l(0.360000), r25.z + movc r24.y, r24.y, r24.z, l(1.000000) + mul r24.x, r24.y, r24.x + mad_sat r23.z, r1.x, l(0.0322580636), r23.z + add r23.z, -r20.x, r23.z + mul r24.yzw, r3.xxyz, r23.zzzz + mad r24.xyz, r16.xyzx, r24.xxxx, r24.yzwy + mul r24.xyz, r4.yyyy, r24.xyzx + mad r24.xyz, r20.yyyy, r20.xxxx, r24.xyzx + mad r24.xyz, r17.xyzx, r20.xxxx, r24.xyzx + mul r25.xyz, r19.xxxx, cb3[r18.z + 6].xyzx + mul r25.xyz, r22.wwww, r25.xyzx + mul r25.xyz, r18.xxxx, r25.xyzx + mul r24.xyz, r24.xyzx, r25.xyzx + else + mov r24.xyz, l(0,0,0,0) + endif + else + if_z r18.y + mad r18.x, cb3[r19.w + 6].y, l(0.500000), l(0.500000) + add r25.x, r18.x, -|cb3[r19.w + 6].x| + add r25.y, -r25.x, cb3[r19.w + 6].y + add r18.x, -|r25.x|, l(1.000000) + add r18.x, -|r25.y|, r18.x + max r18.x, r18.x, l(0.000488281250) + ge r18.y, cb3[r19.w + 6].x, l(0.000000) + movc r25.z, r18.y, r18.x, -r18.x + dp3 r18.x, r25.xyzx, r25.xyzx + rsq r18.x, r18.x + mul r25.xyz, r18.xxxx, r25.xyzx + add r26.xyz, -r8.xyzx, cb3[r23.x + 6].xyzx + dp3 r18.x, r26.xyzx, r26.xyzx + rsq r18.y, r18.x + mul r27.xyz, r18.yyyy, r26.xyzx + ftoi r18.y, cb3[r21.w + 6].w + mul r28.xyz, r25.xyzx, cb3[r19.w + 6].zzzz + mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + mad r28.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + ftou r18.z, cb3[r18.z + 6].w + and r18.z, r18.z, l(1) + ieq r19.x, r18.z, l(0) + not r19.x, r19.x + lt r20.x, l(0.000000), cb3[r19.w + 6].z + and r19.x, r19.x, r20.x + dp3 r20.x, r29.xyzx, r29.xyzx + dp3 r20.y, r28.xyzx, r28.xyzx + sqrt r20.xy, r20.xyxx + dp3 r21.w, r29.xyzx, r28.xyzx + mad r20.x, r20.x, r20.y, r21.w + mad r20.x, r20.x, l(0.500000), l(1.000000) + div r20.x, l(1.000000, 1.000000, 1.000000, 1.000000), r20.x + movc r20.x, r19.x, r20.x, l(1.000000) + lt r20.y, cb3[r23.w + 6].w, l(0.000000) + if_nz r20.y + mul r20.y, cb3[r23.x + 6].w, cb3[r23.x + 6].w + mul r20.y, r18.x, r20.y + mad r20.y, -r20.y, r20.y, l(1.000000) + max r20.y, r20.y, l(0.000000) + add r18.x, r18.x, l(1.000000) + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x + and r21.w, r19.x, l(0x3f800000) + add r22.w, -r18.x, r20.x + mad r18.x, r21.w, r22.w, r18.x + mul r20.y, r20.y, r20.y + mul r18.x, r18.x, r20.y + else + mul r28.xyz, r26.xyzx, cb3[r23.x + 6].wwww + dp3 r20.y, r28.xyzx, r28.xyzx + min r20.y, r20.y, l(1.000000) + add r20.y, -r20.y, l(1.000000) + log r20.y, r20.y + mul r20.y, r20.y, cb3[r23.w + 6].w + exp r20.y, r20.y + mul r18.x, r20.y, r20.x + endif + dp3 r20.x, r27.xyzx, -r25.xyzx + add r20.x, r20.x, -cb3[r19.w + 6].z + mul_sat r20.x, r20.x, cb3[r19.w + 6].w + mul r20.x, r20.x, r20.x + movc r20.x, r18.z, l(1.000000), r20.x + mul r18.x, r18.x, r20.x + not r19.x, r19.x + ige r20.x, r18.y, l(0) + and r19.x, r19.x, r20.x + if_nz r19.x + if_z r18.z + ishl r19.x, r18.y, l(2) + mul r25.xyz, r8.yyyy, cb6[r19.x + 33].xywx + mad r25.xyz, cb6[r19.x + 32].xywx, r8.xxxx, r25.xyzx + mad r25.xyz, cb6[r19.x + 34].xywx, r8.zzzz, r25.xyzx + add r25.xyz, r25.xyzx, cb6[r19.x + 35].xywx + div_sat r20.xy, r25.xyxx, r25.zzzz + mad r20.xy, r20.xyxx, cb6[r18.y + 0].zwzz, cb6[r18.y + 0].xyxx + else + ishl r19.x, r18.y, l(2) + dp3 r25.x, -r26.xyzx, cb6[r19.x + 32].xyzx + dp3 r25.y, -r26.xyzx, cb6[r19.x + 33].xyzx + dp3 r25.z, -r26.xyzx, cb6[r19.x + 34].xyzx + lt r19.x, |r25.x|, |r25.y| + and r19.x, r19.x, l(1) + dp2 r21.w, |r25.xyxx|, icb[r19.x + 0].xyxx + lt r21.w, r21.w, |r25.z| + movc r19.x, r21.w, l(2), r19.x + dp3 r21.w, r25.xyzx, icb[r19.x + 0].xyzx + lt r21.w, r21.w, l(0.000000) + bfi r19.x, l(31), l(1), r19.x, r21.w + ushr r21.w, r19.x, l(1) + dp3 r21.w, r25.xyzx, icb[r21.w + 0].xyzx + div r22.w, l(0.000244140625), cb6[r18.y + 0].w + add r22.w, -r22.w, l(0.500000) + utof r23.z, r19.x + ult r23.w, r19.x, l(2) + and r23.w, r23.w, l(2) + dp2 r23.w, r25.xzxx, icb[r23.w + 0].xzxx + mul r23.w, r23.w, icb[r19.x + 4].z + div r23.w, r23.w, |r21.w| + mad r23.z, r23.w, r22.w, r23.z + add r23.z, r23.z, l(0.500000) + mul_sat r26.x, r23.z, l(0.166666672) + iadd r23.z, l(-1), icb[r19.x + 4].y + dp2 r23.z, r25.yzyy, icb[r23.z + 0].xyxx + mul r19.x, r23.z, icb[r19.x + 4].w + div r19.x, r19.x, |r21.w| + mad_sat r26.y, -r19.x, r22.w, l(0.500000) + mad r20.xy, r26.xyxx, cb6[r18.y + 0].zwzz, cb6[r18.y + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r18.y, r20.xyxx, t13.yxzw, s1, l(0.000000) + mul r18.x, r18.y, r18.x + endif + lt r18.x, l(0.000000), r18.x + if_nz r18.x + if_z r18.z + ftoi r18.x, cb3[r23.y + 6].x + else + add r23.xzw, r8.xxyz, -cb3[r23.x + 6].xxyz + lt r25.xyz, |r23.zwwz|, |r23.xxzx| + and r18.y, r25.y, r25.x + lt r23.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xxzw + ushr r18.z, cb3[r19.w + 6].w, l(24) + ubfe r20.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r19.w + 6].wwww + movc r18.z, r23.x, r18.z, r20.x + and r19.x, l(255), cb3[r19.w + 6].w + movc r19.x, r23.z, r20.y, r19.x + ubfe r19.w, l(8), l(8), cb3[r23.y + 6].x + and r20.x, l(255), cb3[r23.y + 6].x + movc r19.w, r23.w, r19.w, r20.x + movc r19.x, r25.z, r19.x, r19.w + movc r18.y, r18.y, r18.z, r19.x + ilt r18.z, r18.y, l(80) + movc r18.x, r18.z, r18.y, l(-1) + endif + ishl r18.y, r18.x, l(2) + mad r23.xyz, r27.xyzx, cb4[r18.x + 288].xxxx, r8.xyzx + mul r18.z, l(5.000000), cb4[r18.x + 288].y + mad r23.xyz, r6.xyzx, r18.zzzz, r23.xyzx + mul r25.xyzw, r23.yyyy, cb4[r18.y + 65].xyzw + mad r25.xyzw, cb4[r18.y + 64].xyzw, r23.xxxx, r25.xyzw + mad r23.xyzw, cb4[r18.y + 66].xyzw, r23.zzzz, r25.xyzw + add r23.xyzw, r23.xyzw, cb4[r18.y + 67].xyzw + div r23.xyz, r23.xyzx, r23.wwww + ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + ge r26.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r18.yz, -cb4[r18.x + 344].xxyx, cb4[r18.x + 344].zzwz + mad r18.yz, r23.xxyx, r18.yyzy, cb4[r18.x + 344].xxyx + mad r19.xw, r18.yyyz, cb4[400].zzzw, l(0.500000, 0.000000, 0.000000, 0.500000) + round_ni r19.xw, r19.xxxw + mad r18.yz, r18.yyzy, cb4[400].zzwz, -r19.xxwx + add r27.xyzw, r18.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r28.xyzw, r27.xxzz, r27.xxzz + add r20.xy, -r18.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) + min r23.xy, r18.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r27.xz, r18.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r20.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r27.xz, -r27.xxzx, r27.xxzx, r27.yywy + add r27.xz, r27.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r30.xy, r27.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r28.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r18.yz, r28.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r18.yyzy + mul r28.xy, r18.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r18.yz, -r23.xxyx, r23.xxyx, r20.xxyx + add r18.yz, r18.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r31.xy, r18.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r18.yz, r27.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r28.z, r31.x + mov r28.w, r18.y + mov r29.z, r30.x + mov r29.w, r27.x + add r32.xyzw, r28.zwxz, r29.zwxz + mov r31.z, r28.y + mov r31.w, r18.z + mov r30.z, r29.y + mov r30.w, r27.z + add r23.xyw, r30.zyzw, r31.zyzw + div r27.xyz, r29.xzwx, r32.zwyz + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyz, r27.yxzy, cb4[400].xxxx + div r28.xyz, r30.zywz, r23.xywx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb4[400].yyyy + mov r27.w, r28.x + mad r29.xyzw, r19.xwxw, cb4[400].xyxy, r27.ywxw + mad r18.yz, r19.xxwx, cb4[400].xxyx, r27.zzwz + mov r28.w, r27.y + mov r27.yw, r28.yyyz + mad r30.xyzw, r19.xwxw, cb4[400].xyxy, r27.xyzy + mad r28.xyzw, r19.xwxw, cb4[400].xyxy, r28.wywz + mad r27.xyzw, r19.xwxw, cb4[400].xyxy, r27.xwzw + mul r31.xyzw, r23.xxxy, r32.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r29.xyxx, t6.xxxx, s4, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.w, r29.zwzz, t6.xxxx, s4, r23.z + mul r19.w, r19.w, r31.y + mad r19.x, r31.x, r19.x, r19.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r18.yzyy, t6.xxxx, s4, r23.z + mad r18.y, r31.z, r18.y, r19.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.xyxx, t6.xxxx, s4, r23.z + mad r18.y, r31.w, r18.z, r18.y + mul r29.xyzw, r23.yyww, r32.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r30.xyxx, t6.xxxx, s4, r23.z + mad r18.y, r29.x, r18.z, r18.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r30.zwzz, t6.xxxx, s4, r23.z + mad r18.y, r29.y, r18.z, r18.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.zwzz, t6.xxxx, s4, r23.z + mad r18.y, r29.z, r18.z, r18.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r27.xyxx, t6.xxxx, s4, r23.z + mad r18.y, r29.w, r18.z, r18.y + ige r18.z, r18.x, l(0) + or r25.xyz, r25.xyzx, r26.xyzx + or r19.x, r25.y, r25.x + or r19.x, r25.z, r19.x + and r19.w, r23.z, l(0x7fffffff) + ult r19.w, l(0x7f800000), r19.w + or r19.x, r19.w, r19.x + mul r19.w, r23.w, r32.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r27.zwzz, t6.xxxx, s4, r23.z + mad r18.y, r19.w, r20.x, r18.y + add r18.y, r18.y, l(-1.000000) + mad r18.x, cb4[r18.x + 288].w, r18.y, l(1.000000) + movc r18.x, r19.x, l(1.000000), r18.x + movc r18.x, r18.z, r18.x, l(1.000000) + else + mov r18.x, l(1.000000) + endif + else + mov r18.x, l(1.000000) + endif + mul r17.w, r17.w, r18.x + mov r24.xyz, l(0,0,0,0) + endif + add r22.xyz, r22.xyzx, r24.xyzx + mov r19.z, r20.w + endloop + mov r13.w, r17.w + add r21.xyz, r21.xyzx, r22.xyzx + iadd r14.w, r14.w, l(1) +endloop +mad r1.xyz, r21.xyzx, r13.wwww, r13.xyzx +ne r9.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx +if_nz r9.x + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + mad r0.z, r0.z, l(0.750000), l(0.250000) + min r0.z, r3.w, r0.z + add r1.w, r0.z, r5.y + mad r2.z, r12.w, l(-16.000000), l(-1.000000) + exp r2.z, r2.z + log r1.w, |r1.w| + mul r1.w, r1.w, r2.z + exp r1.w, r1.w + add r1.w, r0.z, r1.w + add r1.w, r1.w, l(-1.000000) + mov_sat r9.xzw, r1.wwww + mad r13.xyz, r3.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r13.xyz, r0.zzzz, r13.xyzx + mad r13.xyz, r3.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r13.xyzx + add r13.xyz, r13.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r13.xyz, r0.zzzz, r13.xyzx + mad r13.xyz, r3.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r13.xyzx + add r13.xyz, r13.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r13.xyz, r0.zzzz, r13.xyzx + max r13.xyz, r0.zzzz, r13.xyzx +else + mov r9.xzw, r3.wwww + mov r13.xyz, r3.wwww +endif +mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r16.xyz, r8.xzyx, -r16.xyzx +max r0.z, |r16.y|, |r16.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.w, |r16.z|, l(-208.000000) +mul_sat r1.w, r1.w, l(0.031250) +max r0.z, r0.z, r1.w +ne r1.w, l(0.000000), cb0[210].w +lt r2.z, r0.z, l(1.000000) +and r1.w, r1.w, r2.z +if_nz r1.w + mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r16.xyz, r8.xzyx, -r16.xyzx + max r1.w, |r16.y|, |r16.x| + add r1.w, r1.w, l(-29.000000) + mul_sat r1.w, r1.w, l(0.500000) + add r2.z, |r16.z|, l(-13.000000) + mul_sat r2.z, r2.z, l(0.500000) + max r1.w, r1.w, r2.z + lt r2.z, r1.w, l(1.000000) + if_nz r2.z + mad r16.xyz, r8.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r16.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) + add r2.z, -r1.w, l(1.000000) + mul r3.w, l(0.500000), cb0[211].y + mad r4.y, -cb0[211].y, l(0.500000), l(1.000000) + max r3.w, r3.w, r16.y + min r3.w, r4.y, r3.w + mul r16.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) + mad r3.w, r18.w, r2.z, r0.z + add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mul r19.xyzw, r2.zzzz, r19.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r17.xxxx, r16.xyzx + mov r16.w, r17.x + mul r16.xyzw, r2.zzzz, r16.xyzw + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r18.xyzx + mul r17.xyzw, r2.zzzz, r17.xyzw + else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r3.w, r0.z + endif + mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r18.xyz, r8.xzyx, -r18.xyzx + max r2.z, |r18.y|, |r18.x| + add r2.z, r2.z, l(-116.000000) + mul_sat r2.z, r2.z, l(0.125000) + add r4.y, |r18.z|, l(-52.000000) + mul_sat r4.y, r4.y, l(0.125000) + max r2.z, r2.z, r4.y + lt r4.y, r2.z, l(1.000000) + if_nz r4.y + mad r18.xyz, r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r18.xyzx, cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t19.yzwx, s2, l(0.000000) + add r4.y, -r2.z, l(1.000000) + mul r1.w, r1.w, r4.y + mul r4.y, l(0.500000), cb0[211].y + mad r5.y, -cb0[211].y, l(0.500000), l(1.000000) + max r4.y, r4.y, r18.y + min r4.y, r5.y, r4.y + mul r18.w, r4.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t20.xyzw, s1, l(0.000000) + mad r3.w, r21.w, r1.w, r3.w + add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t20.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r20.yyyy, r22.xyzx + mov r22.w, r20.y + mad r19.xyzw, r22.xyzw, r1.wwww, r19.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t20.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.xxxx, r18.xyzx + mov r18.w, r20.x + mad r16.xyzw, r18.xyzw, r1.wwww, r16.xyzw + mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r18.xyzx + mad r17.xyzw, r20.xyzw, r1.wwww, r17.xyzw + endif + lt r1.w, l(0.000000), r2.z + if_nz r1.w + mad r18.xyz, r8.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r18.xyzx, cb0[211].xyzx + mul r21.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx + mad r20.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r18.xyz, r21.xyzx, r18.xyzx + min r18.xyz, r20.xyzx, r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r18.xyzx, t21.yzwx, s2, l(0.000000) + add r1.w, -r0.z, l(1.000000) + mul r1.w, r1.w, r2.z + max r2.z, r21.y, r18.y + min r2.z, r20.y, r2.z + mul r18.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t22.xyzw, s1, l(0.000000) + add r21.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t22.xyzw, s1, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r22.yyyy, r21.xyzx + mov r21.w, r22.y + mad r19.xyzw, r21.xyzw, r1.wwww, r19.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t22.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r22.xxxx, r18.xyzx + mov r18.w, r22.x + mad r16.xyzw, r18.xyzw, r1.wwww, r16.xyzw + mad r18.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r18.xyzx + mad r17.xyzw, r22.xyzw, r1.wwww, r17.xyzw + mad r3.w, r20.w, r1.w, r3.w + endif + mad_sat r1.w, r3.w, l(2.000000), l(-1.000000) + add r18.x, -r0.z, r1.w + add r0.z, r0.z, r1.w + mul r18.y, r0.z, l(0.500000) +else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xy, l(0,1.000000,0,0) +endif +mul r20.xyzw, r18.yyyx, cb0[213].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r5.yw, r18.yyyx, cb0[213].wwwy +mad r20.w, r5.w, l(0.375000), r5.y +add r17.xyzw, r17.xyzw, r20.xyzw +mul r20.xyzw, r18.yyyx, cb0[214].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r5.yw, r18.yyyx, cb0[214].wwwy +mad r20.w, r5.w, l(0.375000), r5.y +add r16.xyzw, r16.xyzw, r20.xyzw +mul r20.xyzw, r18.yyyx, cb0[215].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r5.yw, r18.yyyx, cb0[215].wwwy +mad r20.w, r5.w, l(0.375000), r5.y +add r18.xyzw, r19.xyzw, r20.xyzw +ge r5.yw, r7.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r5.w, r5.y +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r19.xyzw, r7.xyxx, t16.xyzw, s1, l(0.000000) + lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r19.xyzw| + or r5.yw, r20.zzzw, r20.xxxy + or r0.z, r5.w, r5.y + if_nz r0.z + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mov r5.y, l(1.000000) + mov r5.w, r0.z + mov r1.w, l(0) + loop + ge r2.z, l(4.600000), r5.w + breakc_nz r2.z + iadd r2.z, r1.w, l(1) + mul r7.xy, r5.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r5.yw, r7.xxxy + mov r1.w, r2.z + continue + endloop + mul r19.xyzw, r5.yyyy, r19.xyzw + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb7[3].x, cb7[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r7.x, r0.z, l(0.00390625000) + mov r7.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r5.yw, r7.xyxx, t15.zxwy, s1, l(0.000000) + mad r5.yw, r5.yyyw, cb7[2].xxxy, cb7[2].zzzw + mul r20.x, r5.y, l(3.54490781) + mul r20.yzw, r5.wwww, r19.yyzw + mul r0.z, r19.x, l(0.406976730) + exp r0.z, r0.z + mul r19.xyzw, r0.zzzz, r20.xyzw + mov r20.xyzw, r19.xyzw + mov r0.z, l(0) + loop + uge r2.z, r0.z, r1.w + breakc_nz r2.z + mul r21.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r2.z, r21.xyzw, r20.xyzw + dp2 r3.w, r21.yxyy, r20.xyxx + dp2 r4.y, r21.zxzz, r20.xzxx + dp2 r5.y, r21.wxww, r20.xwxx + iadd r5.w, r0.z, l(1) + mov r20.x, r2.z + mov r20.y, r3.w + mov r20.z, r4.y + mov r20.w, r5.y + mov r0.z, r5.w + continue + endloop + mul r19.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r20.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r19.xyzw, r20.xyzw + dp2 r1.w, r19.yxyy, r20.xyxx + dp2 r2.z, r19.zxzz, r20.xzxx + dp2 r3.w, r19.wxww, r20.xwxx + mul r20.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.y, r19.xyzw, r20.xyzw + dp2 r5.y, r19.yxyy, r20.xyxx + dp2 r5.w, r19.zxzz, r20.xzxx + dp2 r7.x, r19.wxww, r20.xwxx + mul r20.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r7.y, r19.xyzw, r20.xyzw + dp2 r10.w, r19.yxyy, r20.xyxx + dp2 r11.w, r19.zxzz, r20.xzxx + dp2 r12.y, r19.wxww, r20.xwxx + mul r17.w, r0.z, l(0.886226952) + mul r17.x, r3.w, l(-1.02332675) + mul r17.y, r1.w, l(-1.02332675) + mul r17.z, r2.z, l(1.02332675) + mul r16.w, r4.y, l(0.886226952) + mul r16.x, r7.x, l(-1.02332675) + mul r16.yz, r5.yywy, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r18.w, r7.y, l(0.886226952) + mul r18.x, r12.y, l(-1.02332675) + mul r18.y, r10.w, l(-1.02332675) + mul r18.z, r11.w, l(1.02332675) + endif +endif +mov r6.w, l(1.000000) +dp4 r19.x, r17.xyzw, r6.xyzw +dp4 r19.y, r16.xyzw, r6.xyzw +dp4 r19.z, r18.xyzw, r6.xyzw +max r19.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.w, r12.w, l(0.001000) +log r1.w, r1.w +mad r1.w, -r1.w, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.w +mul r5.yw, r5.xxxz, cb1[0].wwww +round_ni r5.yw, r5.yyyw +add r1.w, |r2.y|, -cb1[2].y +round_ni r1.w, r1.w +add r2.z, l(-1.000000), cb1[1].x +max r3.w, r1.w, l(0.000000) +min r2.z, r2.z, r3.w +ge r1.w, r2.z, r1.w +mad r3.w, r5.w, cb1[0].x, r5.y +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +ftoi r2.z, r2.z +iadd r2.z, r2.z, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.z, r2.z, l(0), t0.xxxx +and r2.z, r2.z, r3.w +and r1.w, r1.w, r2.z +mul r12.yzw, r19.xxyz, cb0[111].xxxx +dp3 r2.z, r12.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r8.w, l(1.000000) +mov r12.yzw, l(0,0,0,0) +mov r3.w, l(1.000000) +mov r4.y, r1.w +mov r5.y, l(0) +loop + lt r5.w, l(0.010000), r3.w + ine r7.x, r4.y, l(0) + and r7.x, r5.w, r7.x + if_nz r7.x + firstbit_lo r7.x, r4.y + ishl r7.y, l(1), r7.x + xor r4.y, r4.y, r7.y + ishl r7.x, r7.x, l(3) + dp4 r20.x, cb1[r7.x + 6].xyzw, r8.xyzw + dp4 r20.y, cb1[r7.x + 7].xyzw, r8.xyzw + dp4 r20.z, cb1[r7.x + 8].xyzw, r8.xyzw + ge r21.xyz, cb1[r7.x + 5].xyzx, |r20.xyzx| + and r7.y, r21.y, r21.x + and r7.y, r21.z, r7.y + if_nz r7.y + mul r7.y, l(0.100000), cb1[r7.x + 5].x + mul r21.xyz, |r20.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r21.xy, r21.xyxx, r21.xyxx + add r22.xyz, -|r20.xyzx|, cb1[r7.x + 5].xyzx + mul r22.xyz, r22.xyzx, cb1[r7.x + 9].xyzx + eq r10.w, l(1.000000), cb1[r7.x + 10].x + if_nz r10.w + dp3 r23.x, cb1[r7.x + 6].xyzx, r14.xyzx + dp3 r23.y, cb1[r7.x + 7].xyzx, r14.xyzx + dp3 r23.z, cb1[r7.x + 8].xyzx, r14.xyzx + add r24.xyz, -r20.xyzx, cb1[r7.x + 5].xyzx + div r24.xyz, r24.xyzx, r23.xyzx + add r25.xyz, -r20.xyzx, -cb1[r7.x + 5].xyzx + div r25.xyz, r25.xyzx, r23.xyzx + lt r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + movc r24.xyz, r26.xyzx, r24.xyzx, r25.xyzx + min r10.w, r24.y, r24.x + min r10.w, r24.z, r10.w + mad r20.xyz, r23.xyzx, r10.wwww, r20.xyzx + else + mov r20.xyz, r14.xyzx + endif + dp3 r10.w, r20.xyzx, r20.xyzx + rsq r10.w, r10.w + mul r20.xyz, r10.wwww, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + lt r24.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r23.xyz, -r23.xyzx, r24.xyzx + itof r23.xyz, r23.xyzx + dp3 r10.w, r20.xyzx, r23.xyzx + div r20.xyz, r20.xyzx, r10.wwww + lt r10.w, r20.z, l(0.000000) + add r20.zw, -|r20.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r20.zw, r20.zzzw, r23.xxxy + movc r20.xy, r10.wwww, r20.zwzz, r20.xyxx + dp4 r10.w, cb1[r7.x + 4].xyzw, r6.xyzw + max r10.w, r10.w, l(0.000000) + max r10.w, r10.w, l(0.000100) + min r11.w, r22.z, r22.y + min r11.w, r11.w, r22.x + add r13.w, r21.y, r21.x + mad r13.w, r21.z, r21.z, r13.w + mad r7.y, r7.y, r7.y, -r13.w + mul r7.y, r7.y, cb1[r7.x + 9].x + mul r7.y, r7.y, cb1[r7.x + 9].x + add r13.w, l(1.000000), -cb1[r7.x + 10].y + mul r7.y, r7.y, r13.w + mul r7.y, r7.y, l(100.000000) + mad_sat r7.y, r11.w, cb1[r7.x + 10].y, r7.y + mul r11.w, r7.y, cb1[r7.x + 10].w + mad r20.xy, r20.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r20.xy, r20.xyxx, cb1[1].wwww, cb1[2].wwww + mov r20.z, cb1[r7.x + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r20.xyz, r20.xyzx, t5.xyzw, s3, r0.z + mul r20.xyz, r20.xyzx, cb1[r7.x + 9].wwww + div r13.w, r2.z, r10.w + min r13.w, |r13.w|, l(1.000000) + mad r13.w, r13.w, l(2.000000), r2.z + add r10.w, r10.w, l(2.000000) + div r10.w, r13.w, r10.w + add r10.w, r10.w, l(-1.000000) + mad r10.w, r10.w, cb0[112].w, l(1.000000) + mul r20.xyz, r10.wwww, r20.xyzx + mul r20.xyz, r11.wwww, r20.xyzx + mad r12.yzw, r20.xxyz, r3.wwww, r12.yyzw + mad r7.x, -r7.y, cb1[r7.x + 10].w, l(1.000000) + mul r3.w, r3.w, r7.x + endif + mov r5.y, l(-1) + continue + else + mov r5.y, r5.w + break + endif + mov r5.y, r5.w +endloop +if_nz r5.y + dp3 r1.w, r14.xyzx, r14.xyzx + rsq r1.w, r1.w + mul r8.xzw, r1.wwww, r14.xxyz + lt r14.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r8.xzwx + lt r20.xyz, r8.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r14.xyz, -r14.xyzx, r20.xyzx + itof r14.xyz, r14.xyzx + dp3 r1.w, r8.xzwx, r14.xyzx + div r8.xzw, r8.xxzw, r1.wwww + lt r1.w, r8.w, l(0.000000) + add r5.yw, -|r8.zzzx|, l(0.000000, 1.000000, 0.000000, 1.000000) + mul r5.yw, r5.yyyw, r14.xxxy + movc r5.yw, r1.wwww, r5.yyyw, r8.xxxz + dp4 r1.w, cb1[3].xyzw, r6.xyzw + max r1.w, r1.w, l(0.000000) + max r1.w, r1.w, l(0.000100) + mad r5.yw, r5.yyyw, l(0.000000, 0.500000, 0.000000, 0.500000), l(0.000000, 0.500000, 0.000000, 0.500000) + mad r14.xy, r5.ywyy, cb1[1].wwww, cb1[2].wwww + mov r14.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r8.xzw, r14.xyzx, t5.xwyz, s3, r0.z + div r0.z, r2.z, r1.w + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r2.z + add r1.w, r1.w, l(2.000000) + div r0.z, r0.z, r1.w + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r8.xzw, r0.zzzz, r8.xxzw + mad r12.yzw, r8.xxzw, r3.wwww, r12.yyzw +endif +mul r8.xzw, r12.yyzw, cb0[112].zzzz +mul r8.xzw, r8.xxzw, cb0[111].yyyy +if_nz r9.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r12.yzw, v1.xyxx, t2.wxyz, s1, cb0[108].x + add r1.w, -r0.z, l(1.000000) + mul r14.xyz, r1.wwww, r8.xzwx + mad r8.xzw, r12.yyzw, r0.zzzz, r14.xxyz +endif +mul r3.xyz, r3.xyzx, r19.xyzx +mul r3.xyz, r3.xyzx, cb0[111].xxxx +mad r0.z, r2.x, r7.z, r7.w +mul r7.xyz, r0.zzzz, r8.xzwx +mul r7.xyz, r9.xzwx, r7.xyzx +mad r3.xyz, r3.xyzx, r13.xyzx, r7.xyzx +mul r6.xyzw, r6.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) +dp4 r7.x, r17.xyzw, r6.xyzw +dp4 r7.y, r16.xyzw, r6.xyzw +dp4 r7.z, r18.xyzw, r6.xyzw +max r6.xyz, r7.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +mul r6.xyz, r6.xyzx, cb0[111].xxxx +mul r6.xyz, r13.xyzx, r6.xyzx +mul r6.xyz, r15.xyzx, r6.xyzx +mul r0.z, r4.x, r12.x +ftou r1.w, r2.w +bfi r1.w, l(2), l(0), r1.w, r4.z +utof r1.w, r1.w +mul r1.w, r1.w, l(0.0322580636) +mad r0.z, r0.z, l(0.00787401572), r1.w +mul r2.xzw, r0.zzzz, r6.xxyz +mad r2.xzw, r2.xxzw, l(0.318309873, 0.000000, 0.318309873, 0.318309873), r3.xxyz +add r1.xyz, r1.xyzx, r2.xzwx +mad r0.z, r8.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r4.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r8.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xzw, r0.zzzz, cb0[155].xxyz +mul r2.xzw, r2.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r2.xzw, r2.xxzw +dp3 r0.z, -r11.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r3.x, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r3.x +lt r3.x, l(0.000000), cb0[163].z +if_nz r3.x + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r11.xyzx, -r10.xyzx + add r3.z, r8.y, -cb0[44].y + lt r3.w, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.w + mul r0.x, r0.x, cb0[163].w + div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul r4.x, r0.x, r3.w + mad r4.y, r4.x, r3.z, cb0[44].y + mad r3.z, -r4.x, r3.z, r3.z + mul r4.x, r3.z, cb0[159].z + mul r3.z, r3.z, cb0[162].x + max r3.z, r3.z, l(-127.000000) + add r4.z, r4.y, -cb0[159].x + mul r4.z, r4.z, cb0[159].z + max r4.xz, r4.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + exp r4.z, -r4.z + mul r4.z, r4.z, cb0[159].y + lt r5.y, l(5.960464478E-08), |r4.x| + exp r5.w, -r4.x + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.x + mad r4.x, -r4.x, l(0.240226507), l(0.693147182) + movc r4.x, r5.y, r5.w, r4.x + add r4.y, r4.y, -cb0[162].z + mul r4.y, r4.y, cb0[162].x + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[162].y + lt r5.y, l(5.960464478E-08), |r3.z| + exp r5.w, -r3.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r3.z + mad r3.z, -r3.z, l(0.240226507), l(0.693147182) + movc r3.z, r5.y, r5.w, r3.z + mul r3.z, r3.z, r4.y + mad r3.z, r4.z, r4.x, r3.z + mad r0.x, -r0.x, r3.w, l(1.000000) + mul r0.x, r4.w, r0.x + mul r0.x, r0.x, r3.z + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r3.zw, r4.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r3.z + add r0.x, r3.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r5.xxxz + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r2.y|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t14.xyzw, s1, l(0.000000) + add r0.y, |r2.y|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r8.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.y, cb0[44].y, -cb0[159].x + mul r2.y, r2.y, cb0[159].z + max r2.y, r2.y, l(-127.000000) + exp r2.y, -r2.y + mul r2.y, r2.y, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.y, r0.w, r0.y + mul r0.y, r4.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r4.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xzwx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.y, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.y, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx + +// === Simplified Fog Modification (Anti-Banding) === +// Check if fog modification is enabled via cb13[12].y +lt r15.x, l(0.500000), cb13[12].y +if_nz r15.x + // r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter + // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density + add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + + // Reduce fog inscatter intensity + mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + + // Modified fog blend: scene * boostedTrans + reducedInscatter + mad o0.xyz, r1.xyzx, r15.xyzx, r16.xyzx +else + // Original fog blend + mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +endif +// === End Fog Modification === +dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xB094C87E.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0xB094C87E.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..07a2a0ba98 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xB094C87E.ps_5_0_original_backup.asm @@ -0,0 +1,1661 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 16:31:32 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[5], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_constantbuffer CB7[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_sampler s5, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 37 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t24.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t25.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t26.xyzw +mul r1.xyzw, r1.xwyz, l(1023.000000, 3.000000, 1023.000000, 1023.000000) +ftou r1.xyw, r1.xyxw +ubfe r4.x, l(7), l(3), r1.x +bfi r4.yz, l(0, 3, 3, 0), l(0, 2, 2, 0), r1.xxwx, l(0, 0, 0, 0) +bfi r1.x, l(2), l(0), r1.y, r4.y +utof r1.x, r1.x +mul r1.y, r1.x, l(0.0322580636) +round_ne r1.z, r1.z +ftou r1.z, r1.z +ubfe r4.y, l(7), l(3), r1.z +utof r4.xy, r4.xyxx +mul r4.y, r4.y, l(0.00787401572) +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r4.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r5.y, -r4.w, l(1.000000) +lt r4.w, r5.y, l(0.000000) +ge r6.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r6.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r6.xy, r6.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r6.xy, r6.xyxx, r6.zwzz +movc r5.xz, r4.wwww, r6.xxyx, r2.xxyx +dp3 r2.x, r5.xyzx, r5.xyzx +rsq r2.x, r2.x +mul r6.xyz, r2.xxxx, r5.xyzx +and r1.z, r1.z, l(7) +utof r1.z, r1.z +mad r1.z, r1.z, l(0.107142866), l(0.500000) +utof r5.xz, r0.xxyx +mul r7.xy, v0.xyxx, cb0[82].zwzz +mad r7.zw, r7.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r8.xy, r5.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r8.xy, r8.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r2.y, r8.xyxx, t1.yxzw, s0, l(0.000000) +mul r8.xyzw, -r7.wwww, cb0[25].xyzw +mad r8.xyzw, cb0[24].xyzw, r7.zzzz, r8.xyzw +mad r8.xyzw, cb0[26].xyzw, r2.yyyy, r8.xyzw +add r8.xyzw, r8.xyzw, cb0[27].xyzw +div r8.xyz, r8.xyzx, r8.wwww +mul r2.y, r8.y, cb0[1].z +mad r2.y, cb0[0].z, r8.x, r2.y +mad r2.y, cb0[2].z, r8.z, r2.y +add r2.y, r2.y, cb0[3].z +eq r4.w, l(0.000000), cb0[86].w +add r9.xyz, -r8.xyzx, cb0[44].xyzx +mov r10.x, cb0[0].z +mov r10.y, cb0[1].z +mov r10.z, cb0[2].z +movc r9.xyz, r4.wwww, r9.xyzx, r10.xyzx +dp3 r4.w, r9.xyzx, r9.xyzx +max r5.w, r4.w, l(9.999999939E-09) +rsq r5.w, r5.w +mul r11.xyz, r5.wwww, r9.xyzx +mul r4.w, r4.w, r5.w +lt r7.z, l(0.000488281250), cb0[234].x +if_nz r7.z + sample_b_indexable(texture2d)(float,float,float,float) r7.z, v1.xyxx, t23.yzxw, s1, cb0[108].x +else + mov r7.z, l(1.000000) +endif +lt r12.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[226].xyxx +if_nz r12.x + add r7.w, |r6.y|, |r6.x| + add r7.w, |r6.z|, r7.w + div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w + mul r12.xzw, |r6.xxyz|, r7.wwww + mul r13.xyzw, r12.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) + add r13.xyz, r13.zwzz, r13.xxyx + mad r12.xzw, r12.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r13.xxyz + mul r13.xyz, r8.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r7.w, r13.xyzx, t10.yzwx, s2, l(0.000000) + mad r7.w, r7.w, l(2.000000), l(-1.000000) + mul r12.xzw, r7.wwww, r12.xxzw + mov r7.w, |r6.y| + add r7.w, r7.w, l(-0.700000) + mul_sat r7.w, r7.w, l(4.000000) + mad r9.w, r7.w, l(-2.000000), l(3.000000) + mul r7.w, r7.w, r7.w + mul r7.w, r7.w, r9.w + add r9.w, -cb0[229].z, cb0[229].y + mad r7.w, r7.w, r9.w, cb0[229].z + mul r12.xzw, r7.wwww, r12.xxzw +else + mov r12.xzw, l(0,0,0,0) +endif +if_nz r12.y + mul r13.xyz, r6.xyzx, cb0[233].zzzz + mul r14.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r13.xyz, r13.xyzx, cb0[225].xxxx, r14.xyzx + max r7.w, -r6.y, l(0.000000) + min r7.w, r7.w, l(0.900000) + add r7.w, -r7.w, l(1.000000) + mad r2.x, -r5.y, r2.x, l(-0.200000) + mul_sat r2.x, r2.x, l(-10.000000) + mad r5.y, r2.x, l(-2.000000), l(3.000000) + mul r2.x, r2.x, r2.x + mul r2.x, r2.x, r5.y + max r2.x, r2.x, l(0.100000) + min r2.x, r2.x, l(1.000000) + mul r2.x, r2.x, r7.w + mad r13.xyz, r13.xyzx, r2.xxxx, r8.xyzx + add r12.xyz, r12.xzwx, r13.xyzx + mul r13.xyz, r12.yyyy, cb5[1].xyzx + mad r12.xyw, cb5[0].xyxz, r12.xxxx, r13.xyxz + mad r12.xyz, cb5[2].xyzx, r12.zzzz, r12.xywx + add r12.xyz, r12.xyzx, cb5[3].xyzx + mad r13.x, r12.x, l(0.500000), cb5[4].x + mad r2.x, r12.y, l(0.500000), l(0.500000) + add r13.z, -r2.x, cb5[4].y + add r12.xy, r13.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r2.x, r12.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r12.xyxx, t9.xxxx, s5, r2.x +else + mov r2.x, l(1.000000) +endif +mov_sat r5.y, r6.y +add r7.w, l(1.000000), -cb0[230].w +mad r5.y, r5.y, r7.w, cb0[230].w +add r12.xy, r8.xzxx, -cb0[44].xzxx +max r7.w, |r12.y|, |r12.x| +mul r9.w, r5.y, cb0[230].z +mul r10.w, r2.x, r5.y +mul r11.w, l(0.0500000119), cb0[222].w +mad r12.x, -cb0[222].w, l(0.700000), r7.w +div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w +mul_sat r11.w, r11.w, r12.x +mad r12.x, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r12.x +mad r2.x, -r5.y, r2.x, l(1.000000) +mad r2.x, r11.w, r2.x, r10.w +mad r5.y, -cb0[230].z, r5.y, l(1.000000) +mad r2.x, r2.x, r5.y, r9.w +mad r5.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r7.w, r7.w, -cb0[222].w +div r5.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y +mul_sat r5.y, r5.y, r7.w +mad r7.w, r5.y, l(-2.000000), l(3.000000) +mul r5.y, r5.y, r5.y +mul r5.y, r5.y, r7.w +add r7.w, -r2.x, cb0[230].y +mad r2.x, r5.y, r7.w, r2.x +add r2.x, -r2.x, l(1.000000) +mad r2.x, -r7.z, r2.x, l(1.000000) +mad_sat r5.y, r2.z, l(0.300000), l(0.250000) +mul r5.y, r5.y, cb0[222].x +mul r5.y, r2.x, r5.y +mad r5.y, r5.y, l(-0.750000), l(1.000000) +mul r3.xyz, r3.xyzx, r5.yyyy +min r5.y, r2.z, l(0.300000) +mul r2.x, r2.x, cb0[222].x +mul r2.xw, r2.xxxw, l(0.500000, 0.000000, 0.000000, 3.000000) +add r5.y, -r2.z, r5.y +mad r12.w, r2.x, r5.y, r2.z +mul r2.x, r1.z, l(0.080000) +dp3 r2.z, r6.xyzx, r11.xyzx +max r5.y, r2.z, l(0.000000) +mad r13.xyzw, r12.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r7.z, r13.x, r13.x +mul r7.w, r5.y, l(-9.280000) +exp r7.w, r7.w +min r7.z, r7.w, r7.z +mad r7.z, r7.z, r13.x, r13.y +mad r7.zw, r7.zzzz, l(0.000000, 0.000000, -1.040000, 1.040000), r13.zzzw +ld_indexable(texture2d)(float,float,float,float) r13.x, r0.xyzz, t7.xyzw +lt r0.z, l(0.001000), r13.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r7.xyxx, t12.yzxw, s1, l(0.000000) + dp3 r9.w, -r11.xyzx, r6.xyzx + add r9.w, r9.w, r9.w + mad r14.xyz, r6.xyzx, -r9.wwww, -r11.xyzx + dp3 r9.w, -cb3[0].xyzx, r14.xyzx + mad r15.xyz, cb3[0].xyzx, r9.wwww, r14.xyzx + lt r9.w, r9.w, cb3[4].z + dp3 r10.w, r15.xyzx, r15.xyzx + max r10.w, r10.w, l(0.0000610351562) + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + mul r15.xyz, r15.xyzx, cb3[4].yyyy + mad r15.xyz, -cb3[0].xyzx, cb3[4].zzzz, r15.xyzx + dp3 r10.w, r15.xyzx, r15.xyzx + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + movc r14.xyz, r9.wwww, r15.xyzx, r14.xyzx + mad r15.xyz, r9.xyzx, r5.wwww, r14.xyzx + dp3 r9.w, r15.xyzx, r15.xyzx + max r9.w, r9.w, l(0.0000610351562) + rsq r9.w, r9.w + mul r15.xyz, r9.wwww, r15.xyzx + dp3 r9.w, r6.xyzx, r14.xyzx + mov_sat r12.y, r9.w + dp3_sat r10.w, r6.xyzx, r15.xyzx + dp3 r11.w, r11.xyzx, r14.xyzx + min r12.z, r5.y, l(1.000000) + mul r13.z, r12.w, r12.w + mul r13.z, r13.z, r13.z + mad r13.w, r10.w, r13.z, -r10.w + mad r10.w, r13.w, r10.w, l(1.000000) + dp3_sat r13.w, r11.xyzx, r15.xyzx + add r13.w, -r13.w, l(1.000000) + mul r14.x, r13.w, r13.w + mul r14.x, r14.x, r14.x + mul r14.y, r13.w, r14.x + add r14.z, -r12.w, l(1.000000) + mad r14.w, -r14.z, l(0.383026), l(-0.0761947036) + mad r14.w, r14.z, r14.w, l(1.049970) + mad r14.z, r14.z, r14.w, l(0.409255) + min r14.z, r14.z, l(0.999000) + add r14.w, -r14.z, l(1.000000) + mad r15.x, -r1.z, l(0.080000), l(1.000000) + mad r15.x, r15.x, l(0.0476190485), r2.x + mov_sat r15.y, -r11.w + mul r15.y, r15.y, r15.y + mad r15.y, r15.y, l(-0.640000), l(1.000000) + mul r15.y, r15.y, r15.y + mad r13.w, -r14.x, r13.w, l(1.000000) + mad r13.w, r2.x, r13.w, r14.y + mul r10.w, r10.w, r10.w + div r10.w, r13.z, r10.w + mad r14.xy, -r12.zyzz, r13.zzzz, r12.zyzz + mad r14.xy, r14.xyxx, r12.zyzz, r13.zzzz + sqrt r14.xy, r14.xyxx + mul r14.xy, r12.yzyy, r14.xyxx + add r13.z, r14.y, r14.x + add r13.z, r13.z, l(0.000100) + div r13.z, l(0.500000), r13.z + mul r10.w, r10.w, r13.z + mul r10.w, r10.w, r13.w + min r10.w, r10.w, l(2048.000000) + mad r16.xyzw, r12.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r12.z, r16.xyxx, t11.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r13.z, r16.zwzz, t11.yzxw, s1, l(0.000000) + mul r12.z, r12.z, r13.z + mul r12.z, r14.z, r12.z + div r12.z, r12.z, r14.w + mul r13.z, r15.x, r15.x + mul r12.z, r12.z, r13.z + mad r13.z, -r15.x, r14.w, l(1.000000) + div r12.z, r12.z, r13.z + add r10.w, r10.w, r12.z + add_sat r12.z, r2.z, l(0.200000) + mov_sat r13.z, r11.w + add r13.z, r13.z, l(0.500000) + min r13.z, r13.z, l(1.000000) + mul r13.w, r12.z, r13.z + add_sat r11.w, r11.w, l(1.000000) + mad r12.z, -r12.z, r13.z, l(1.000000) + mad r11.w, r11.w, r12.z, r13.w + mul r10.w, r10.w, r11.w + mul r10.w, r4.y, r10.w + mul r14.xyz, r4.yyyy, r3.xyzx + ubfe r1.w, l(7), l(3), r1.w + utof r1.w, r1.w + mul r1.w, r1.w, l(0.00787401572) + mul r10.w, r10.w, cb3[4].x + max r10.w, r10.w, l(0.000000) + min r10.w, r10.w, l(1000.000000) + mul r10.w, r12.y, r10.w + mad r14.xyz, r14.xyzx, r1.wwww, r10.wwww + max r1.w, r3.y, r3.x + max r1.w, r3.z, r1.w + max r1.w, r1.w, l(0.010000) + div r15.xzw, r3.xxyz, r1.wwww + mul r1.w, r4.x, l(0.00393700786) + mul r15.xzw, r1.wwww, r15.xxzw + add_sat r1.w, -r9.w, l(0.500000) + ne r10.w, r15.y, l(0.360000) + div r11.w, l(0.360000), r15.y + movc r10.w, r10.w, r11.w, l(1.000000) + mul r1.w, r1.w, r10.w + mad_sat r9.w, r1.x, l(0.0322580636), r9.w + add r9.w, -r12.y, r9.w + mul r16.xyz, r3.xyzx, r9.wwww + mad r15.xyz, r15.xzwx, r1.wwww, r16.xyzx + mad r14.xyz, r15.xyzx, r4.yyyy, r14.xyzx + mul r14.xyz, r14.xyzx, cb3[1].xyzx + mov r13.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r13.yzw, r13.xyxx, t8.wxyz, s1, cb0[108].x + add r1.w, -r13.x, l(1.000000) + mad r13.xyz, r14.xyzx, r13.yzwy, -r14.xyzx + mad r13.xyz, r1.wwww, r13.xyzx, r14.xyzx + max r1.w, r4.y, r0.z + add r1.w, -r0.z, r1.w + mad r0.z, r1.y, r1.w, r0.z + mul r13.xyz, r0.zzzz, r13.xyzx +else + mov r13.xyz, l(0,0,0,0) +endif +mul r1.yw, r5.xxxz, l(0.000000, 0.031250, 0.000000, 0.031250) +round_ni r1.yw, r1.yyyw +mad r0.z, r1.w, cb2[1].y, r1.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r1.y, -cb0[85].y, cb2[2].w, |r2.y| +round_ni r1.y, r1.y +add r1.w, l(-1.000000), cb2[1].w +max r9.w, r1.y, l(0.000000) +min r1.w, r1.w, r9.w +mul r9.w, r1.w, l(8.000000) +ftoi r9.w, r9.w +ge r1.y, r1.w, r1.y +iadd r1.w, r9.w, cb0[110].y +mul r9.w, r12.w, r12.w +dp3 r10.w, -r11.xyzx, r6.xyzx +add r10.w, r10.w, r10.w +mad r14.xyz, r6.xyzx, -r10.wwww, -r11.xyzx +min r12.x, r5.y, l(1.000000) +add r10.w, -r12.w, l(1.000000) +mad r11.w, -r10.w, l(0.383026), l(-0.0761947036) +mad r11.w, r10.w, r11.w, l(1.049970) +mad r10.w, r10.w, r11.w, l(0.409255) +min r10.w, r10.w, l(0.999000) +add r11.w, -r10.w, l(1.000000) +mad r1.z, -r1.z, l(0.080000), l(1.000000) +mad r1.z, r1.z, l(0.0476190485), r2.x +mad r12.yz, r12.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r12.y, r12.yzyy, t11.yxzw, s1, l(0.000000) +mad r12.z, -r1.z, r11.w, l(1.000000) +add_sat r2.z, r2.z, l(0.200000) +max r13.w, r3.y, r3.x +max r13.w, r3.z, r13.w +max r13.w, r13.w, l(0.010000) +div r15.xyz, r3.xyzx, r13.wwww +mul r13.w, r4.x, l(0.00393700786) +mul r16.xyz, r13.wwww, r15.xyzx +mul r17.xyz, r4.yyyy, r3.xyzx +mul r1.z, r1.z, r1.z +mov r18.w, l(1.000000) +mov r19.y, l(1.000000) +mov r20.z, r12.w +mov r21.xyz, l(0,0,0,0) +mov r13.w, l(1.000000) +mov r14.w, l(0) +loop + ilt r15.w, l(7), r14.w + breakc_nz r15.w + iadd r15.w, r0.z, r14.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r15.w, r15.w, l(0), t0.xxxx + iadd r16.w, r1.w, r14.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r16.w, r16.w, l(0), t0.xxxx + and r15.w, r15.w, r16.w + and r15.w, r1.y, r15.w + ishl r16.w, r14.w, l(5) + mov r22.xyz, l(0,0,0,0) + mov r17.w, r13.w + mov r19.z, r15.w + loop + breakc_z r19.z + firstbit_lo r19.w, r19.z + ishl r20.w, l(1), r19.w + xor r20.w, r19.z, r20.w + iadd r19.w, r16.w, r19.w + bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r19.wwww, l(1, 3, 5, 6) + bfi r21.w, l(29), l(3), r19.w, l(7) + ftou r22.w, cb3[r23.z + 6].w + ieq r22.w, r22.w, l(1) + if_nz r22.w + add r18.xyz, r8.xyzx, -cb3[r23.x + 6].xyzx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.z + 6].xzyx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.w + 6].yxzy + ushr r26.xyz, cb3[r23.z + 6].xzyx, l(16, 16, 16, 0) + ushr r27.xyz, cb3[r23.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyw, r27.yxyz + mov r28.xz, r24.xxzx + mov r28.yw, r26.xxxz + dp4 r22.w, r18.xyzw, r28.xyzw + mov r26.x, r24.y + mov r26.z, r25.y + mov r26.w, r27.x + dp4 r23.z, r18.xyzw, r26.xyzw + mov r27.xz, r25.xxzx + dp4 r18.x, r18.xyzw, r27.xyzw + max r18.y, |r22.w|, |r23.z| + max r18.x, |r18.x|, r18.y + mad r18.y, cb3[r21.w + 6].x, l(0.500000), l(0.500000) + add r18.x, -r18.y, r18.x + mad r18.y, -cb3[r21.w + 6].x, l(0.500000), l(0.500000) + div_sat r18.x, r18.x, r18.y + add r18.x, -r18.x, l(1.000000) + mul r18.x, r18.x, r18.x + else + mov r18.x, l(1.000000) + endif + lt r18.y, l(0.500000), cb3[r23.y + 6].z + lt r18.z, r18.x, l(0.001000) + or r18.z, r18.y, r18.z + if_nz r18.z + mov r19.z, r20.w + continue + endif + ishl r18.z, r19.w, l(3) + bfi r19.w, l(29), l(3), r19.w, l(2) + lt r22.w, cb3[r18.z + 6].w, l(1.500000) + if_nz r22.w + mad r22.w, cb3[r19.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r22.w, -|cb3[r19.w + 6].x| + add r24.y, -r24.x, cb3[r19.w + 6].y + add r22.w, -|r24.x|, l(1.000000) + add r22.w, -|r24.y|, r22.w + max r22.w, r22.w, l(0.000488281250) + ge r23.z, cb3[r19.w + 6].x, l(0.000000) + movc r24.z, r23.z, r22.w, -r22.w + dp3 r22.w, r24.xyzx, r24.xyzx + rsq r22.w, r22.w + mul r24.xyz, r22.wwww, r24.xyzx + add r25.xyz, -r8.xyzx, cb3[r23.x + 6].xyzx + dp3 r22.w, r25.xyzx, r25.xyzx + rsq r23.z, r22.w + mul r26.xyz, r23.zzzz, r25.xyzx + ftoi r24.w, cb3[r21.w + 6].w + mul r27.xyz, r24.xyzx, cb3[r19.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r25.w, cb3[r18.z + 6].w + and r25.w, r25.w, l(1) + ieq r26.w, r25.w, l(0) + not r26.w, r26.w + lt r27.w, l(0.000000), cb3[r19.w + 6].z + and r26.w, r26.w, r27.w + dp3 r27.w, r28.xyzx, r28.xyzx + sqrt r27.w, r27.w + dp3 r28.w, r29.xyzx, r29.xyzx + sqrt r28.w, r28.w + dp3 r29.w, r6.xyzx, r28.xyzx + div r29.w, r29.w, r27.w + dp3 r30.x, r6.xyzx, r29.xyzx + div r30.x, r30.x, r28.w + add r29.w, r29.w, r30.x + mul_sat r30.x, r29.w, l(0.500000) + dp3 r29.x, r28.xyzx, r29.xyzx + mad r27.w, r27.w, r28.w, r29.x + mad r27.w, r27.w, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r27.w + dp3_sat r19.x, r6.xyzx, r26.xyzx + movc r20.xy, r26.wwww, r30.xyxx, r19.xyxx + lt r19.x, cb3[r23.w + 6].w, l(0.000000) + if_nz r19.x + mul r19.x, cb3[r23.x + 6].w, cb3[r23.x + 6].w + mul r19.x, r19.x, r22.w + mad r19.x, -r19.x, r19.x, l(1.000000) + max r19.x, r19.x, l(0.000000) + add r22.w, r22.w, l(1.000000) + div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w + and r27.w, r26.w, l(0x3f800000) + add r28.w, r20.y, -r22.w + mad r22.w, r27.w, r28.w, r22.w + mul r19.x, r19.x, r19.x + mul r19.x, r19.x, r22.w + else + mul r29.xyz, r25.xyzx, cb3[r23.x + 6].wwww + dp3 r22.w, r29.xyzx, r29.xyzx + min r22.w, r22.w, l(1.000000) + add r22.w, -r22.w, l(1.000000) + log r22.w, r22.w + mul r22.w, r22.w, cb3[r23.w + 6].w + exp r22.w, r22.w + mul r19.x, r20.y, r22.w + endif + dp3 r20.y, r26.xyzx, -r24.xyzx + add r20.y, r20.y, -cb3[r19.w + 6].z + mul_sat r20.y, r20.y, cb3[r19.w + 6].w + mul r20.y, r20.y, r20.y + movc r20.y, r25.w, l(1.000000), r20.y + mul r19.x, r19.x, r20.y + not r20.y, r26.w + ige r22.w, r24.w, l(0) + and r20.y, r20.y, r22.w + if_nz r20.y + if_z r25.w + ishl r20.y, r24.w, l(2) + mul r24.xyz, r8.yyyy, cb6[r20.y + 33].xywx + mad r24.xyz, cb6[r20.y + 32].xywx, r8.xxxx, r24.xyzx + mad r24.xyz, cb6[r20.y + 34].xywx, r8.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb6[r20.y + 35].xywx + div_sat r24.xy, r24.xyxx, r24.zzzz + mad r24.xy, r24.xyxx, cb6[r24.w + 0].zwzz, cb6[r24.w + 0].xyxx + else + ishl r20.y, r24.w, l(2) + dp3 r29.x, -r25.xyzx, cb6[r20.y + 32].xyzx + dp3 r29.y, -r25.xyzx, cb6[r20.y + 33].xyzx + dp3 r29.z, -r25.xyzx, cb6[r20.y + 34].xyzx + lt r20.y, |r29.x|, |r29.y| + and r20.y, r20.y, l(1) + dp2 r22.w, |r29.xyxx|, icb[r20.y + 0].xyxx + lt r22.w, r22.w, |r29.z| + movc r20.y, r22.w, l(2), r20.y + dp3 r22.w, r29.xyzx, icb[r20.y + 0].xyzx + lt r22.w, r22.w, l(0.000000) + bfi r20.y, l(31), l(1), r20.y, r22.w + ushr r22.w, r20.y, l(1) + dp3 r22.w, r29.xyzx, icb[r22.w + 0].xyzx + div r24.z, l(0.000244140625), cb6[r24.w + 0].w + add r24.z, -r24.z, l(0.500000) + utof r25.x, r20.y + ult r25.y, r20.y, l(2) + and r25.y, r25.y, l(2) + dp2 r25.y, r29.xzxx, icb[r25.y + 0].xzxx + mul r25.y, r25.y, icb[r20.y + 4].z + div r25.y, r25.y, |r22.w| + mad r25.x, r25.y, r24.z, r25.x + add r25.x, r25.x, l(0.500000) + mul_sat r25.x, r25.x, l(0.166666672) + iadd r25.z, l(-1), icb[r20.y + 4].y + dp2 r25.z, r29.yzyy, icb[r25.z + 0].xyxx + mul r20.y, r25.z, icb[r20.y + 4].w + div r20.y, r20.y, |r22.w| + mad_sat r25.y, -r20.y, r24.z, l(0.500000) + mad r24.xy, r25.xyxx, cb6[r24.w + 0].zwzz, cb6[r24.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r20.y, r24.xyxx, t13.yxzw, s1, l(0.000000) + mul r19.x, r19.x, r20.y + endif + lt r20.y, l(0.000000), r19.x + if_nz r20.y + if_z r25.w + ftoi r22.w, cb3[r23.y + 6].x + else + add r24.xyz, r8.xyzx, -cb3[r23.x + 6].xyzx + lt r25.xyz, |r24.yzzy|, |r24.xxyx| + and r24.w, r25.y, r25.x + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ushr r25.x, cb3[r19.w + 6].w, l(24) + ubfe r25.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb3[r19.w + 6].wwww + movc r24.x, r24.x, r25.x, r25.y + and r25.x, l(255), cb3[r19.w + 6].w + movc r24.y, r24.y, r25.w, r25.x + ubfe r25.x, l(8), l(8), cb3[r23.y + 6].x + and r25.y, l(255), cb3[r23.y + 6].x + movc r24.z, r24.z, r25.x, r25.y + movc r24.y, r25.z, r24.y, r24.z + movc r24.x, r24.w, r24.x, r24.y + ilt r24.y, r24.x, l(80) + movc r22.w, r24.y, r24.x, l(-1) + endif + ishl r24.x, r22.w, l(2) + mad r24.yzw, r26.xxyz, cb4[r22.w + 288].xxxx, r8.xxyz + mul r25.x, l(5.000000), cb4[r22.w + 288].y + mad r24.yzw, r6.xxyz, r25.xxxx, r24.yyzw + mul r25.xyzw, r24.zzzz, cb4[r24.x + 65].xyzw + mad r25.xyzw, cb4[r24.x + 64].xyzw, r24.yyyy, r25.xyzw + mad r25.xyzw, cb4[r24.x + 66].xyzw, r24.wwww, r25.xyzw + add r24.xyzw, r25.xyzw, cb4[r24.x + 67].xyzw + div r24.xyz, r24.xyzx, r24.wwww + ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ge r29.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r30.xy, -cb4[r22.w + 344].xyxx, cb4[r22.w + 344].zwzz + mad r24.xy, r24.xyxx, r30.xyxx, cb4[r22.w + 344].xyxx + mad r30.xy, r24.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r30.xy, r30.xyxx + mad r24.xy, r24.xyxx, cb4[400].zwzz, -r30.xyxx + add r31.xyzw, r24.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r32.xyzw, r31.xxzz, r31.xxzz + add r30.zw, -r24.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r31.xz, r24.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r33.xy, r24.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r34.xy, r30.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy + add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r24.xy, r32.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r24.xyxx + mul r35.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r24.xy, -r31.xzxx, r31.xzxx, r30.zwzz + add r24.xy, r24.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r36.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r24.xy, r31.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r35.z, r36.x + mov r35.w, r24.x + mov r34.z, r33.x + mov r34.w, r32.x + add r31.xyzw, r34.zwxz, r35.zwxz + mov r36.z, r35.y + mov r36.w, r24.y + mov r33.z, r34.y + mov r33.w, r32.z + add r24.xyw, r33.zyzw, r36.zyzw + div r32.xyz, r34.xzwx, r31.zwyz + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyz, r32.yxzy, cb4[400].xxxx + div r33.xyz, r33.zywz, r24.xywx + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyz, r33.xyzx, cb4[400].yyyy + mov r32.w, r33.x + mad r34.xyzw, r30.xyxy, cb4[400].xyxy, r32.ywxw + mad r30.zw, r30.xxxy, cb4[400].xxxy, r32.zzzw + mov r33.w, r32.y + mov r32.yw, r33.yyyz + mad r35.xyzw, r30.xyxy, cb4[400].xyxy, r32.xyzy + mad r33.xyzw, r30.xyxy, cb4[400].xyxy, r33.wywz + mad r32.xyzw, r30.xyxy, cb4[400].xyxy, r32.xwzw + mul r36.xyzw, r24.xxxy, r31.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r34.xyxx, t6.xxxx, s4, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r34.zwzz, t6.xxxx, s4, r24.z + mul r25.w, r25.w, r36.y + mad r24.x, r36.x, r24.x, r25.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r30.zwzz, t6.xxxx, s4, r24.z + mad r24.x, r36.z, r25.w, r24.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r33.xyxx, t6.xxxx, s4, r24.z + mad r24.x, r36.w, r25.w, r24.x + mul r30.xyzw, r24.yyww, r31.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r35.xyxx, t6.xxxx, s4, r24.z + mad r24.x, r30.x, r24.y, r24.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r35.zwzz, t6.xxxx, s4, r24.z + mad r24.x, r30.y, r24.y, r24.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r33.zwzz, t6.xxxx, s4, r24.z + mad r24.x, r30.z, r24.y, r24.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r32.xyxx, t6.xxxx, s4, r24.z + mad r24.x, r30.w, r24.y, r24.x + ige r24.y, r22.w, l(0) + or r25.xyz, r25.xyzx, r29.xyzx + or r25.x, r25.y, r25.x + or r25.x, r25.z, r25.x + and r25.y, r24.z, l(0x7fffffff) + ult r25.y, l(0x7f800000), r25.y + or r25.x, r25.y, r25.x + mul r24.w, r24.w, r31.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r32.zwzz, t6.xxxx, s4, r24.z + mad r24.x, r24.w, r24.z, r24.x + add r24.x, r24.x, l(-1.000000) + mad r22.w, cb4[r22.w + 288].w, r24.x, l(1.000000) + movc r22.w, r25.x, l(1.000000), r22.w + movc r22.w, r24.y, r22.w, l(1.000000) + else + mov r22.w, l(1.000000) + endif + if_nz r26.w + dp3 r24.x, r14.xyzx, r27.xyzx + mul_sat r24.y, r23.z, cb3[r19.w + 6].z + mad r24.y, r24.y, l(0.500000), r9.w + min r24.y, r24.y, l(1.000000) + div r24.y, r9.w, r24.y + mad r25.xyz, r14.xyzx, r24.xxxx, -r27.xyzx + dp3 r24.z, r28.xyzx, r25.xyzx + mul r24.x, r24.x, r24.x + mad r24.x, cb3[r19.w + 6].z, cb3[r19.w + 6].z, -r24.x + div_sat r24.x, r24.z, r24.x + mad r24.xzw, r27.xxyz, r24.xxxx, r28.xxyz + dp3 r25.x, r24.xzwx, r24.xzwx + rsq r25.x, r25.x + mul r26.xyz, r24.xzwx, r25.xxxx + else + mov r24.y, l(1.000000) + endif + if_nz r20.y + mul_sat r20.y, r23.z, cb3[r21.w + 6].y + mad r24.xzw, r9.xxyz, r5.wwww, r26.xxyz + dp3 r23.z, r24.xzwx, r24.xzwx + max r23.z, r23.z, l(0.0000610351562) + rsq r23.z, r23.z + mul r24.xzw, r23.zzzz, r24.xxzw + dp3 r23.z, r6.xyzx, r26.xyzx + dp3_sat r25.x, r6.xyzx, r24.xzwx + dp3_sat r24.x, r11.xyzx, r24.xzwx + dp3 r24.z, r11.xyzx, r26.xyzx + lt r24.w, l(0.000000), r20.y + mul r20.y, r20.y, r20.y + mad r25.y, r24.x, l(3.600000), l(0.400000) + div r20.y, r20.y, r25.y + mad r20.y, r12.w, r12.w, r20.y + min r20.y, r20.y, l(1.000000) + movc r20.y, r24.w, r20.y, r9.w + mul r20.y, r20.y, r20.y + mad r24.w, r25.x, r20.y, -r25.x + mad r24.w, r24.w, r25.x, l(1.000000) + add r24.x, -r24.x, l(1.000000) + mul r25.x, r24.x, r24.x + mul r25.x, r25.x, r25.x + mul r25.y, r24.x, r25.x + mov_sat r25.z, -r24.z + mul r25.z, r25.z, r25.z + mad r25.z, r25.z, l(-0.640000), l(1.000000) + mul r25.z, r25.z, r25.z + mad r24.x, -r25.x, r24.x, l(1.000000) + mad r24.x, r2.x, r24.x, r25.y + mul r24.w, r24.w, r24.w + div r24.w, r20.y, r24.w + mul r24.y, r24.y, r24.w + mad r24.w, -r12.x, r20.y, r12.x + mad r24.w, r24.w, r12.x, r20.y + sqrt r24.w, r24.w + mad r25.x, -r20.x, r20.y, r20.x + mad r20.y, r25.x, r20.x, r20.y + sqrt r20.y, r20.y + mul r20.y, r12.x, r20.y + mad r20.y, r20.x, r24.w, r20.y + add r20.y, r20.y, l(0.000100) + div r20.y, l(0.500000), r20.y + mul r20.y, r20.y, r24.y + mul r20.y, r20.y, r24.x + min r20.y, r20.y, l(2048.000000) + mad r24.xy, r20.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r24.x, r24.xyxx, t11.xyzw, s1, l(0.000000) + mul r24.x, r12.y, r24.x + mul r24.x, r10.w, r24.x + div r24.x, r24.x, r11.w + mul r24.x, r1.z, r24.x + div r24.x, r24.x, r12.z + add r20.y, r20.y, r24.x + mov_sat r24.x, r24.z + add r24.x, r24.x, l(0.500000) + min r24.x, r24.x, l(1.000000) + mul r24.y, r2.z, r24.x + add_sat r24.z, r24.z, l(1.000000) + mad r24.x, -r2.z, r24.x, l(1.000000) + mad r24.x, r24.z, r24.x, r24.y + mul r20.y, r20.y, r24.x + mul r20.y, r4.y, r20.y + mul r20.y, r20.y, cb3[r21.w + 6].z + max r20.y, r20.y, l(0.000000) + min r20.y, r20.y, l(1000.000000) + add_sat r24.x, -r23.z, l(0.500000) + ne r24.y, r25.z, l(0.360000) + div r24.z, l(0.360000), r25.z + movc r24.y, r24.y, r24.z, l(1.000000) + mul r24.x, r24.y, r24.x + mad_sat r23.z, r1.x, l(0.0322580636), r23.z + add r23.z, -r20.x, r23.z + mul r24.yzw, r3.xxyz, r23.zzzz + mad r24.xyz, r16.xyzx, r24.xxxx, r24.yzwy + mul r24.xyz, r4.yyyy, r24.xyzx + mad r24.xyz, r20.yyyy, r20.xxxx, r24.xyzx + mad r24.xyz, r17.xyzx, r20.xxxx, r24.xyzx + mul r25.xyz, r19.xxxx, cb3[r18.z + 6].xyzx + mul r25.xyz, r22.wwww, r25.xyzx + mul r25.xyz, r18.xxxx, r25.xyzx + mul r24.xyz, r24.xyzx, r25.xyzx + else + mov r24.xyz, l(0,0,0,0) + endif + else + if_z r18.y + mad r18.x, cb3[r19.w + 6].y, l(0.500000), l(0.500000) + add r25.x, r18.x, -|cb3[r19.w + 6].x| + add r25.y, -r25.x, cb3[r19.w + 6].y + add r18.x, -|r25.x|, l(1.000000) + add r18.x, -|r25.y|, r18.x + max r18.x, r18.x, l(0.000488281250) + ge r18.y, cb3[r19.w + 6].x, l(0.000000) + movc r25.z, r18.y, r18.x, -r18.x + dp3 r18.x, r25.xyzx, r25.xyzx + rsq r18.x, r18.x + mul r25.xyz, r18.xxxx, r25.xyzx + add r26.xyz, -r8.xyzx, cb3[r23.x + 6].xyzx + dp3 r18.x, r26.xyzx, r26.xyzx + rsq r18.y, r18.x + mul r27.xyz, r18.yyyy, r26.xyzx + ftoi r18.y, cb3[r21.w + 6].w + mul r28.xyz, r25.xyzx, cb3[r19.w + 6].zzzz + mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + mad r28.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + ftou r18.z, cb3[r18.z + 6].w + and r18.z, r18.z, l(1) + ieq r19.x, r18.z, l(0) + not r19.x, r19.x + lt r20.x, l(0.000000), cb3[r19.w + 6].z + and r19.x, r19.x, r20.x + dp3 r20.x, r29.xyzx, r29.xyzx + dp3 r20.y, r28.xyzx, r28.xyzx + sqrt r20.xy, r20.xyxx + dp3 r21.w, r29.xyzx, r28.xyzx + mad r20.x, r20.x, r20.y, r21.w + mad r20.x, r20.x, l(0.500000), l(1.000000) + div r20.x, l(1.000000, 1.000000, 1.000000, 1.000000), r20.x + movc r20.x, r19.x, r20.x, l(1.000000) + lt r20.y, cb3[r23.w + 6].w, l(0.000000) + if_nz r20.y + mul r20.y, cb3[r23.x + 6].w, cb3[r23.x + 6].w + mul r20.y, r18.x, r20.y + mad r20.y, -r20.y, r20.y, l(1.000000) + max r20.y, r20.y, l(0.000000) + add r18.x, r18.x, l(1.000000) + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x + and r21.w, r19.x, l(0x3f800000) + add r22.w, -r18.x, r20.x + mad r18.x, r21.w, r22.w, r18.x + mul r20.y, r20.y, r20.y + mul r18.x, r18.x, r20.y + else + mul r28.xyz, r26.xyzx, cb3[r23.x + 6].wwww + dp3 r20.y, r28.xyzx, r28.xyzx + min r20.y, r20.y, l(1.000000) + add r20.y, -r20.y, l(1.000000) + log r20.y, r20.y + mul r20.y, r20.y, cb3[r23.w + 6].w + exp r20.y, r20.y + mul r18.x, r20.y, r20.x + endif + dp3 r20.x, r27.xyzx, -r25.xyzx + add r20.x, r20.x, -cb3[r19.w + 6].z + mul_sat r20.x, r20.x, cb3[r19.w + 6].w + mul r20.x, r20.x, r20.x + movc r20.x, r18.z, l(1.000000), r20.x + mul r18.x, r18.x, r20.x + not r19.x, r19.x + ige r20.x, r18.y, l(0) + and r19.x, r19.x, r20.x + if_nz r19.x + if_z r18.z + ishl r19.x, r18.y, l(2) + mul r25.xyz, r8.yyyy, cb6[r19.x + 33].xywx + mad r25.xyz, cb6[r19.x + 32].xywx, r8.xxxx, r25.xyzx + mad r25.xyz, cb6[r19.x + 34].xywx, r8.zzzz, r25.xyzx + add r25.xyz, r25.xyzx, cb6[r19.x + 35].xywx + div_sat r20.xy, r25.xyxx, r25.zzzz + mad r20.xy, r20.xyxx, cb6[r18.y + 0].zwzz, cb6[r18.y + 0].xyxx + else + ishl r19.x, r18.y, l(2) + dp3 r25.x, -r26.xyzx, cb6[r19.x + 32].xyzx + dp3 r25.y, -r26.xyzx, cb6[r19.x + 33].xyzx + dp3 r25.z, -r26.xyzx, cb6[r19.x + 34].xyzx + lt r19.x, |r25.x|, |r25.y| + and r19.x, r19.x, l(1) + dp2 r21.w, |r25.xyxx|, icb[r19.x + 0].xyxx + lt r21.w, r21.w, |r25.z| + movc r19.x, r21.w, l(2), r19.x + dp3 r21.w, r25.xyzx, icb[r19.x + 0].xyzx + lt r21.w, r21.w, l(0.000000) + bfi r19.x, l(31), l(1), r19.x, r21.w + ushr r21.w, r19.x, l(1) + dp3 r21.w, r25.xyzx, icb[r21.w + 0].xyzx + div r22.w, l(0.000244140625), cb6[r18.y + 0].w + add r22.w, -r22.w, l(0.500000) + utof r23.z, r19.x + ult r23.w, r19.x, l(2) + and r23.w, r23.w, l(2) + dp2 r23.w, r25.xzxx, icb[r23.w + 0].xzxx + mul r23.w, r23.w, icb[r19.x + 4].z + div r23.w, r23.w, |r21.w| + mad r23.z, r23.w, r22.w, r23.z + add r23.z, r23.z, l(0.500000) + mul_sat r26.x, r23.z, l(0.166666672) + iadd r23.z, l(-1), icb[r19.x + 4].y + dp2 r23.z, r25.yzyy, icb[r23.z + 0].xyxx + mul r19.x, r23.z, icb[r19.x + 4].w + div r19.x, r19.x, |r21.w| + mad_sat r26.y, -r19.x, r22.w, l(0.500000) + mad r20.xy, r26.xyxx, cb6[r18.y + 0].zwzz, cb6[r18.y + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r18.y, r20.xyxx, t13.yxzw, s1, l(0.000000) + mul r18.x, r18.y, r18.x + endif + lt r18.x, l(0.000000), r18.x + if_nz r18.x + if_z r18.z + ftoi r18.x, cb3[r23.y + 6].x + else + add r23.xzw, r8.xxyz, -cb3[r23.x + 6].xxyz + lt r25.xyz, |r23.zwwz|, |r23.xxzx| + and r18.y, r25.y, r25.x + lt r23.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xxzw + ushr r18.z, cb3[r19.w + 6].w, l(24) + ubfe r20.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r19.w + 6].wwww + movc r18.z, r23.x, r18.z, r20.x + and r19.x, l(255), cb3[r19.w + 6].w + movc r19.x, r23.z, r20.y, r19.x + ubfe r19.w, l(8), l(8), cb3[r23.y + 6].x + and r20.x, l(255), cb3[r23.y + 6].x + movc r19.w, r23.w, r19.w, r20.x + movc r19.x, r25.z, r19.x, r19.w + movc r18.y, r18.y, r18.z, r19.x + ilt r18.z, r18.y, l(80) + movc r18.x, r18.z, r18.y, l(-1) + endif + ishl r18.y, r18.x, l(2) + mad r23.xyz, r27.xyzx, cb4[r18.x + 288].xxxx, r8.xyzx + mul r18.z, l(5.000000), cb4[r18.x + 288].y + mad r23.xyz, r6.xyzx, r18.zzzz, r23.xyzx + mul r25.xyzw, r23.yyyy, cb4[r18.y + 65].xyzw + mad r25.xyzw, cb4[r18.y + 64].xyzw, r23.xxxx, r25.xyzw + mad r23.xyzw, cb4[r18.y + 66].xyzw, r23.zzzz, r25.xyzw + add r23.xyzw, r23.xyzw, cb4[r18.y + 67].xyzw + div r23.xyz, r23.xyzx, r23.wwww + ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + ge r26.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r18.yz, -cb4[r18.x + 344].xxyx, cb4[r18.x + 344].zzwz + mad r18.yz, r23.xxyx, r18.yyzy, cb4[r18.x + 344].xxyx + mad r19.xw, r18.yyyz, cb4[400].zzzw, l(0.500000, 0.000000, 0.000000, 0.500000) + round_ni r19.xw, r19.xxxw + mad r18.yz, r18.yyzy, cb4[400].zzwz, -r19.xxwx + add r27.xyzw, r18.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r28.xyzw, r27.xxzz, r27.xxzz + add r20.xy, -r18.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) + min r23.xy, r18.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r27.xz, r18.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r20.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r27.xz, -r27.xxzx, r27.xxzx, r27.yywy + add r27.xz, r27.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r30.xy, r27.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r28.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r18.yz, r28.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r18.yyzy + mul r28.xy, r18.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r18.yz, -r23.xxyx, r23.xxyx, r20.xxyx + add r18.yz, r18.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r31.xy, r18.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r18.yz, r27.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r28.z, r31.x + mov r28.w, r18.y + mov r29.z, r30.x + mov r29.w, r27.x + add r32.xyzw, r28.zwxz, r29.zwxz + mov r31.z, r28.y + mov r31.w, r18.z + mov r30.z, r29.y + mov r30.w, r27.z + add r23.xyw, r30.zyzw, r31.zyzw + div r27.xyz, r29.xzwx, r32.zwyz + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyz, r27.yxzy, cb4[400].xxxx + div r28.xyz, r30.zywz, r23.xywx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb4[400].yyyy + mov r27.w, r28.x + mad r29.xyzw, r19.xwxw, cb4[400].xyxy, r27.ywxw + mad r18.yz, r19.xxwx, cb4[400].xxyx, r27.zzwz + mov r28.w, r27.y + mov r27.yw, r28.yyyz + mad r30.xyzw, r19.xwxw, cb4[400].xyxy, r27.xyzy + mad r28.xyzw, r19.xwxw, cb4[400].xyxy, r28.wywz + mad r27.xyzw, r19.xwxw, cb4[400].xyxy, r27.xwzw + mul r31.xyzw, r23.xxxy, r32.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r29.xyxx, t6.xxxx, s4, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.w, r29.zwzz, t6.xxxx, s4, r23.z + mul r19.w, r19.w, r31.y + mad r19.x, r31.x, r19.x, r19.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r18.yzyy, t6.xxxx, s4, r23.z + mad r18.y, r31.z, r18.y, r19.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.xyxx, t6.xxxx, s4, r23.z + mad r18.y, r31.w, r18.z, r18.y + mul r29.xyzw, r23.yyww, r32.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r30.xyxx, t6.xxxx, s4, r23.z + mad r18.y, r29.x, r18.z, r18.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r30.zwzz, t6.xxxx, s4, r23.z + mad r18.y, r29.y, r18.z, r18.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.zwzz, t6.xxxx, s4, r23.z + mad r18.y, r29.z, r18.z, r18.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r27.xyxx, t6.xxxx, s4, r23.z + mad r18.y, r29.w, r18.z, r18.y + ige r18.z, r18.x, l(0) + or r25.xyz, r25.xyzx, r26.xyzx + or r19.x, r25.y, r25.x + or r19.x, r25.z, r19.x + and r19.w, r23.z, l(0x7fffffff) + ult r19.w, l(0x7f800000), r19.w + or r19.x, r19.w, r19.x + mul r19.w, r23.w, r32.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r27.zwzz, t6.xxxx, s4, r23.z + mad r18.y, r19.w, r20.x, r18.y + add r18.y, r18.y, l(-1.000000) + mad r18.x, cb4[r18.x + 288].w, r18.y, l(1.000000) + movc r18.x, r19.x, l(1.000000), r18.x + movc r18.x, r18.z, r18.x, l(1.000000) + else + mov r18.x, l(1.000000) + endif + else + mov r18.x, l(1.000000) + endif + mul r17.w, r17.w, r18.x + mov r24.xyz, l(0,0,0,0) + endif + add r22.xyz, r22.xyzx, r24.xyzx + mov r19.z, r20.w + endloop + mov r13.w, r17.w + add r21.xyz, r21.xyzx, r22.xyzx + iadd r14.w, r14.w, l(1) +endloop +mad r1.xyz, r21.xyzx, r13.wwww, r13.xyzx +ne r9.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx +if_nz r9.x + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + mad r0.z, r0.z, l(0.750000), l(0.250000) + min r0.z, r3.w, r0.z + add r1.w, r0.z, r5.y + mad r2.z, r12.w, l(-16.000000), l(-1.000000) + exp r2.z, r2.z + log r1.w, |r1.w| + mul r1.w, r1.w, r2.z + exp r1.w, r1.w + add r1.w, r0.z, r1.w + add r1.w, r1.w, l(-1.000000) + mov_sat r9.xzw, r1.wwww + mad r13.xyz, r3.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r13.xyz, r0.zzzz, r13.xyzx + mad r13.xyz, r3.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r13.xyzx + add r13.xyz, r13.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r13.xyz, r0.zzzz, r13.xyzx + mad r13.xyz, r3.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r13.xyzx + add r13.xyz, r13.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r13.xyz, r0.zzzz, r13.xyzx + max r13.xyz, r0.zzzz, r13.xyzx +else + mov r9.xzw, r3.wwww + mov r13.xyz, r3.wwww +endif +mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r16.xyz, r8.xzyx, -r16.xyzx +max r0.z, |r16.y|, |r16.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.w, |r16.z|, l(-208.000000) +mul_sat r1.w, r1.w, l(0.031250) +max r0.z, r0.z, r1.w +ne r1.w, l(0.000000), cb0[210].w +lt r2.z, r0.z, l(1.000000) +and r1.w, r1.w, r2.z +if_nz r1.w + mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r16.xyz, r8.xzyx, -r16.xyzx + max r1.w, |r16.y|, |r16.x| + add r1.w, r1.w, l(-29.000000) + mul_sat r1.w, r1.w, l(0.500000) + add r2.z, |r16.z|, l(-13.000000) + mul_sat r2.z, r2.z, l(0.500000) + max r1.w, r1.w, r2.z + lt r2.z, r1.w, l(1.000000) + if_nz r2.z + mad r16.xyz, r8.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r16.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) + add r2.z, -r1.w, l(1.000000) + mul r3.w, l(0.500000), cb0[211].y + mad r4.y, -cb0[211].y, l(0.500000), l(1.000000) + max r3.w, r3.w, r16.y + min r3.w, r4.y, r3.w + mul r16.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) + mad r3.w, r18.w, r2.z, r0.z + add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mul r19.xyzw, r2.zzzz, r19.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r17.xxxx, r16.xyzx + mov r16.w, r17.x + mul r16.xyzw, r2.zzzz, r16.xyzw + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r18.xyzx + mul r17.xyzw, r2.zzzz, r17.xyzw + else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r3.w, r0.z + endif + mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r18.xyz, r8.xzyx, -r18.xyzx + max r2.z, |r18.y|, |r18.x| + add r2.z, r2.z, l(-116.000000) + mul_sat r2.z, r2.z, l(0.125000) + add r4.y, |r18.z|, l(-52.000000) + mul_sat r4.y, r4.y, l(0.125000) + max r2.z, r2.z, r4.y + lt r4.y, r2.z, l(1.000000) + if_nz r4.y + mad r18.xyz, r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r18.xyzx, cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t19.yzwx, s2, l(0.000000) + add r4.y, -r2.z, l(1.000000) + mul r1.w, r1.w, r4.y + mul r4.y, l(0.500000), cb0[211].y + mad r5.y, -cb0[211].y, l(0.500000), l(1.000000) + max r4.y, r4.y, r18.y + min r4.y, r5.y, r4.y + mul r18.w, r4.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t20.xyzw, s1, l(0.000000) + mad r3.w, r21.w, r1.w, r3.w + add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t20.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r20.yyyy, r22.xyzx + mov r22.w, r20.y + mad r19.xyzw, r22.xyzw, r1.wwww, r19.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t20.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.xxxx, r18.xyzx + mov r18.w, r20.x + mad r16.xyzw, r18.xyzw, r1.wwww, r16.xyzw + mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r18.xyzx + mad r17.xyzw, r20.xyzw, r1.wwww, r17.xyzw + endif + lt r1.w, l(0.000000), r2.z + if_nz r1.w + mad r18.xyz, r8.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r18.xyzx, cb0[211].xyzx + mul r21.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx + mad r20.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r18.xyz, r21.xyzx, r18.xyzx + min r18.xyz, r20.xyzx, r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r18.xyzx, t21.yzwx, s2, l(0.000000) + add r1.w, -r0.z, l(1.000000) + mul r1.w, r1.w, r2.z + max r2.z, r21.y, r18.y + min r2.z, r20.y, r2.z + mul r18.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t22.xyzw, s1, l(0.000000) + add r21.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t22.xyzw, s1, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r22.yyyy, r21.xyzx + mov r21.w, r22.y + mad r19.xyzw, r21.xyzw, r1.wwww, r19.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t22.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r22.xxxx, r18.xyzx + mov r18.w, r22.x + mad r16.xyzw, r18.xyzw, r1.wwww, r16.xyzw + mad r18.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r18.xyzx + mad r17.xyzw, r22.xyzw, r1.wwww, r17.xyzw + mad r3.w, r20.w, r1.w, r3.w + endif + mad_sat r1.w, r3.w, l(2.000000), l(-1.000000) + add r18.x, -r0.z, r1.w + add r0.z, r0.z, r1.w + mul r18.y, r0.z, l(0.500000) +else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xy, l(0,1.000000,0,0) +endif +mul r20.xyzw, r18.yyyx, cb0[213].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r5.yw, r18.yyyx, cb0[213].wwwy +mad r20.w, r5.w, l(0.375000), r5.y +add r17.xyzw, r17.xyzw, r20.xyzw +mul r20.xyzw, r18.yyyx, cb0[214].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r5.yw, r18.yyyx, cb0[214].wwwy +mad r20.w, r5.w, l(0.375000), r5.y +add r16.xyzw, r16.xyzw, r20.xyzw +mul r20.xyzw, r18.yyyx, cb0[215].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r5.yw, r18.yyyx, cb0[215].wwwy +mad r20.w, r5.w, l(0.375000), r5.y +add r18.xyzw, r19.xyzw, r20.xyzw +ge r5.yw, r7.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r5.w, r5.y +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r19.xyzw, r7.xyxx, t16.xyzw, s1, l(0.000000) + lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r19.xyzw| + or r5.yw, r20.zzzw, r20.xxxy + or r0.z, r5.w, r5.y + if_nz r0.z + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mov r5.y, l(1.000000) + mov r5.w, r0.z + mov r1.w, l(0) + loop + ge r2.z, l(4.600000), r5.w + breakc_nz r2.z + iadd r2.z, r1.w, l(1) + mul r7.xy, r5.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r5.yw, r7.xxxy + mov r1.w, r2.z + continue + endloop + mul r19.xyzw, r5.yyyy, r19.xyzw + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb7[3].x, cb7[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r7.x, r0.z, l(0.00390625000) + mov r7.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r5.yw, r7.xyxx, t15.zxwy, s1, l(0.000000) + mad r5.yw, r5.yyyw, cb7[2].xxxy, cb7[2].zzzw + mul r20.x, r5.y, l(3.54490781) + mul r20.yzw, r5.wwww, r19.yyzw + mul r0.z, r19.x, l(0.406976730) + exp r0.z, r0.z + mul r19.xyzw, r0.zzzz, r20.xyzw + mov r20.xyzw, r19.xyzw + mov r0.z, l(0) + loop + uge r2.z, r0.z, r1.w + breakc_nz r2.z + mul r21.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r2.z, r21.xyzw, r20.xyzw + dp2 r3.w, r21.yxyy, r20.xyxx + dp2 r4.y, r21.zxzz, r20.xzxx + dp2 r5.y, r21.wxww, r20.xwxx + iadd r5.w, r0.z, l(1) + mov r20.x, r2.z + mov r20.y, r3.w + mov r20.z, r4.y + mov r20.w, r5.y + mov r0.z, r5.w + continue + endloop + mul r19.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r20.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r19.xyzw, r20.xyzw + dp2 r1.w, r19.yxyy, r20.xyxx + dp2 r2.z, r19.zxzz, r20.xzxx + dp2 r3.w, r19.wxww, r20.xwxx + mul r20.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.y, r19.xyzw, r20.xyzw + dp2 r5.y, r19.yxyy, r20.xyxx + dp2 r5.w, r19.zxzz, r20.xzxx + dp2 r7.x, r19.wxww, r20.xwxx + mul r20.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r7.y, r19.xyzw, r20.xyzw + dp2 r10.w, r19.yxyy, r20.xyxx + dp2 r11.w, r19.zxzz, r20.xzxx + dp2 r12.y, r19.wxww, r20.xwxx + mul r17.w, r0.z, l(0.886226952) + mul r17.x, r3.w, l(-1.02332675) + mul r17.y, r1.w, l(-1.02332675) + mul r17.z, r2.z, l(1.02332675) + mul r16.w, r4.y, l(0.886226952) + mul r16.x, r7.x, l(-1.02332675) + mul r16.yz, r5.yywy, l(0.000000, -1.02332675, 1.02332675, 0.000000) + mul r18.w, r7.y, l(0.886226952) + mul r18.x, r12.y, l(-1.02332675) + mul r18.y, r10.w, l(-1.02332675) + mul r18.z, r11.w, l(1.02332675) + endif +endif +mov r6.w, l(1.000000) +dp4 r19.x, r17.xyzw, r6.xyzw +dp4 r19.y, r16.xyzw, r6.xyzw +dp4 r19.z, r18.xyzw, r6.xyzw +max r19.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.w, r12.w, l(0.001000) +log r1.w, r1.w +mad r1.w, -r1.w, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.w +mul r5.yw, r5.xxxz, cb1[0].wwww +round_ni r5.yw, r5.yyyw +add r1.w, |r2.y|, -cb1[2].y +round_ni r1.w, r1.w +add r2.z, l(-1.000000), cb1[1].x +max r3.w, r1.w, l(0.000000) +min r2.z, r2.z, r3.w +ge r1.w, r2.z, r1.w +mad r3.w, r5.w, cb1[0].x, r5.y +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +ftoi r2.z, r2.z +iadd r2.z, r2.z, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.z, r2.z, l(0), t0.xxxx +and r2.z, r2.z, r3.w +and r1.w, r1.w, r2.z +mul r12.yzw, r19.xxyz, cb0[111].xxxx +dp3 r2.z, r12.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r8.w, l(1.000000) +mov r12.yzw, l(0,0,0,0) +mov r3.w, l(1.000000) +mov r4.y, r1.w +mov r5.y, l(0) +loop + lt r5.w, l(0.010000), r3.w + ine r7.x, r4.y, l(0) + and r7.x, r5.w, r7.x + if_nz r7.x + firstbit_lo r7.x, r4.y + ishl r7.y, l(1), r7.x + xor r4.y, r4.y, r7.y + ishl r7.x, r7.x, l(3) + dp4 r20.x, cb1[r7.x + 6].xyzw, r8.xyzw + dp4 r20.y, cb1[r7.x + 7].xyzw, r8.xyzw + dp4 r20.z, cb1[r7.x + 8].xyzw, r8.xyzw + ge r21.xyz, cb1[r7.x + 5].xyzx, |r20.xyzx| + and r7.y, r21.y, r21.x + and r7.y, r21.z, r7.y + if_nz r7.y + mul r7.y, l(0.100000), cb1[r7.x + 5].x + mul r21.xyz, |r20.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r21.xy, r21.xyxx, r21.xyxx + add r22.xyz, -|r20.xyzx|, cb1[r7.x + 5].xyzx + mul r22.xyz, r22.xyzx, cb1[r7.x + 9].xyzx + eq r10.w, l(1.000000), cb1[r7.x + 10].x + if_nz r10.w + dp3 r23.x, cb1[r7.x + 6].xyzx, r14.xyzx + dp3 r23.y, cb1[r7.x + 7].xyzx, r14.xyzx + dp3 r23.z, cb1[r7.x + 8].xyzx, r14.xyzx + add r24.xyz, -r20.xyzx, cb1[r7.x + 5].xyzx + div r24.xyz, r24.xyzx, r23.xyzx + add r25.xyz, -r20.xyzx, -cb1[r7.x + 5].xyzx + div r25.xyz, r25.xyzx, r23.xyzx + lt r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + movc r24.xyz, r26.xyzx, r24.xyzx, r25.xyzx + min r10.w, r24.y, r24.x + min r10.w, r24.z, r10.w + mad r20.xyz, r23.xyzx, r10.wwww, r20.xyzx + else + mov r20.xyz, r14.xyzx + endif + dp3 r10.w, r20.xyzx, r20.xyzx + rsq r10.w, r10.w + mul r20.xyz, r10.wwww, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + lt r24.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r23.xyz, -r23.xyzx, r24.xyzx + itof r23.xyz, r23.xyzx + dp3 r10.w, r20.xyzx, r23.xyzx + div r20.xyz, r20.xyzx, r10.wwww + lt r10.w, r20.z, l(0.000000) + add r20.zw, -|r20.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r20.zw, r20.zzzw, r23.xxxy + movc r20.xy, r10.wwww, r20.zwzz, r20.xyxx + dp4 r10.w, cb1[r7.x + 4].xyzw, r6.xyzw + max r10.w, r10.w, l(0.000000) + max r10.w, r10.w, l(0.000100) + min r11.w, r22.z, r22.y + min r11.w, r11.w, r22.x + add r13.w, r21.y, r21.x + mad r13.w, r21.z, r21.z, r13.w + mad r7.y, r7.y, r7.y, -r13.w + mul r7.y, r7.y, cb1[r7.x + 9].x + mul r7.y, r7.y, cb1[r7.x + 9].x + add r13.w, l(1.000000), -cb1[r7.x + 10].y + mul r7.y, r7.y, r13.w + mul r7.y, r7.y, l(100.000000) + mad_sat r7.y, r11.w, cb1[r7.x + 10].y, r7.y + mul r11.w, r7.y, cb1[r7.x + 10].w + mad r20.xy, r20.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r20.xy, r20.xyxx, cb1[1].wwww, cb1[2].wwww + mov r20.z, cb1[r7.x + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r20.xyz, r20.xyzx, t5.xyzw, s3, r0.z + mul r20.xyz, r20.xyzx, cb1[r7.x + 9].wwww + div r13.w, r2.z, r10.w + min r13.w, |r13.w|, l(1.000000) + mad r13.w, r13.w, l(2.000000), r2.z + add r10.w, r10.w, l(2.000000) + div r10.w, r13.w, r10.w + add r10.w, r10.w, l(-1.000000) + mad r10.w, r10.w, cb0[112].w, l(1.000000) + mul r20.xyz, r10.wwww, r20.xyzx + mul r20.xyz, r11.wwww, r20.xyzx + mad r12.yzw, r20.xxyz, r3.wwww, r12.yyzw + mad r7.x, -r7.y, cb1[r7.x + 10].w, l(1.000000) + mul r3.w, r3.w, r7.x + endif + mov r5.y, l(-1) + continue + else + mov r5.y, r5.w + break + endif + mov r5.y, r5.w +endloop +if_nz r5.y + dp3 r1.w, r14.xyzx, r14.xyzx + rsq r1.w, r1.w + mul r8.xzw, r1.wwww, r14.xxyz + lt r14.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r8.xzwx + lt r20.xyz, r8.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r14.xyz, -r14.xyzx, r20.xyzx + itof r14.xyz, r14.xyzx + dp3 r1.w, r8.xzwx, r14.xyzx + div r8.xzw, r8.xxzw, r1.wwww + lt r1.w, r8.w, l(0.000000) + add r5.yw, -|r8.zzzx|, l(0.000000, 1.000000, 0.000000, 1.000000) + mul r5.yw, r5.yyyw, r14.xxxy + movc r5.yw, r1.wwww, r5.yyyw, r8.xxxz + dp4 r1.w, cb1[3].xyzw, r6.xyzw + max r1.w, r1.w, l(0.000000) + max r1.w, r1.w, l(0.000100) + mad r5.yw, r5.yyyw, l(0.000000, 0.500000, 0.000000, 0.500000), l(0.000000, 0.500000, 0.000000, 0.500000) + mad r14.xy, r5.ywyy, cb1[1].wwww, cb1[2].wwww + mov r14.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r8.xzw, r14.xyzx, t5.xwyz, s3, r0.z + div r0.z, r2.z, r1.w + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r2.z + add r1.w, r1.w, l(2.000000) + div r0.z, r0.z, r1.w + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r8.xzw, r0.zzzz, r8.xxzw + mad r12.yzw, r8.xxzw, r3.wwww, r12.yyzw +endif +mul r8.xzw, r12.yyzw, cb0[112].zzzz +mul r8.xzw, r8.xxzw, cb0[111].yyyy +if_nz r9.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r12.yzw, v1.xyxx, t2.wxyz, s1, cb0[108].x + add r1.w, -r0.z, l(1.000000) + mul r14.xyz, r1.wwww, r8.xzwx + mad r8.xzw, r12.yyzw, r0.zzzz, r14.xxyz +endif +mul r3.xyz, r3.xyzx, r19.xyzx +mul r3.xyz, r3.xyzx, cb0[111].xxxx +mad r0.z, r2.x, r7.z, r7.w +mul r7.xyz, r0.zzzz, r8.xzwx +mul r7.xyz, r9.xzwx, r7.xyzx +mad r3.xyz, r3.xyzx, r13.xyzx, r7.xyzx +mul r6.xyzw, r6.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) +dp4 r7.x, r17.xyzw, r6.xyzw +dp4 r7.y, r16.xyzw, r6.xyzw +dp4 r7.z, r18.xyzw, r6.xyzw +max r6.xyz, r7.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +mul r6.xyz, r6.xyzx, cb0[111].xxxx +mul r6.xyz, r13.xyzx, r6.xyzx +mul r6.xyz, r15.xyzx, r6.xyzx +mul r0.z, r4.x, r12.x +ftou r1.w, r2.w +bfi r1.w, l(2), l(0), r1.w, r4.z +utof r1.w, r1.w +mul r1.w, r1.w, l(0.0322580636) +mad r0.z, r0.z, l(0.00787401572), r1.w +mul r2.xzw, r0.zzzz, r6.xxyz +mad r2.xzw, r2.xxzw, l(0.318309873, 0.000000, 0.318309873, 0.318309873), r3.xxyz +add r1.xyz, r1.xyzx, r2.xzwx +mad r0.z, r8.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r4.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r8.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xzw, r0.zzzz, cb0[155].xxyz +mul r2.xzw, r2.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r2.xzw, r2.xxzw +dp3 r0.z, -r11.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r3.x, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r3.x +lt r3.x, l(0.000000), cb0[163].z +if_nz r3.x + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r11.xyzx, -r10.xyzx + add r3.z, r8.y, -cb0[44].y + lt r3.w, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.w + mul r0.x, r0.x, cb0[163].w + div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul r4.x, r0.x, r3.w + mad r4.y, r4.x, r3.z, cb0[44].y + mad r3.z, -r4.x, r3.z, r3.z + mul r4.x, r3.z, cb0[159].z + mul r3.z, r3.z, cb0[162].x + max r3.z, r3.z, l(-127.000000) + add r4.z, r4.y, -cb0[159].x + mul r4.z, r4.z, cb0[159].z + max r4.xz, r4.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + exp r4.z, -r4.z + mul r4.z, r4.z, cb0[159].y + lt r5.y, l(5.960464478E-08), |r4.x| + exp r5.w, -r4.x + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.x + mad r4.x, -r4.x, l(0.240226507), l(0.693147182) + movc r4.x, r5.y, r5.w, r4.x + add r4.y, r4.y, -cb0[162].z + mul r4.y, r4.y, cb0[162].x + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[162].y + lt r5.y, l(5.960464478E-08), |r3.z| + exp r5.w, -r3.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r3.z + mad r3.z, -r3.z, l(0.240226507), l(0.693147182) + movc r3.z, r5.y, r5.w, r3.z + mul r3.z, r3.z, r4.y + mad r3.z, r4.z, r4.x, r3.z + mad r0.x, -r0.x, r3.w, l(1.000000) + mul r0.x, r4.w, r0.x + mul r0.x, r0.x, r3.z + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r3.zw, r4.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r3.z + add r0.x, r3.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r5.xxxz + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r2.y|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t14.xyzw, s1, l(0.000000) + add r0.y, |r2.y|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r8.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.y, cb0[44].y, -cb0[159].x + mul r2.y, r2.y, cb0[159].z + max r2.y, r2.y, l(-127.000000) + exp r2.y, -r2.y + mul r2.y, r2.y, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.y, r0.w, r0.y + mul r0.y, r4.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r4.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xzwx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.y, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.y, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx +mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xC34914B1.cso b/src/games/endfield/deferred-lighting/0xC34914B1.cso new file mode 100644 index 0000000000000000000000000000000000000000..155248586e8eae5c2301dc5960e92aae5a438f5f GIT binary patch literal 58856 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0.asm new file mode 100644 index 0000000000..60aae31beb --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0.asm @@ -0,0 +1,1931 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 22:27:23 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy w +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 xyz 2 NONE float xyz +// TEXCOORD 2 xyz 3 NONE float xyz +// TEXCOORD 3 xyzw 4 NONE float xyzw +// TEXCOORD 4 xyz 5 NONE float xyz +// TEXCOORD 5 xyz 6 NONE float xyz +// TEXCOORD 6 xyz 7 NONE float xyz +// TEXCOORD 7 xyz 8 NONE float xyz +// TEXCOORD 8 x 9 NONE uint x +// SV_IsFrontFace 0 x 10 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[216], immediateIndexed +dcl_constantbuffer CB1[4093], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[14], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_comparison +dcl_sampler s3, mode_default +dcl_sampler s4, mode_default +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_sampler s7, mode_default +dcl_resource_structured t0, 4 +dcl_resource_structured t1, 16 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture3d (float,float,float,float) t4 +dcl_resource_texture3d (float,float,float,float) t5 +dcl_resource_texture3d (float,float,float,float) t6 +dcl_resource_texture3d (float,float,float,float) t7 +dcl_resource_texture3d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texturecube (float,float,float,float) t17 +dcl_resource_texture2d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_input_ps_siv linear noperspective v0.xyw, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyz +dcl_input_ps linear v4.xyzw +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps linear v7.xyz +dcl_input_ps linear v8.xyz +dcl_input_ps constant v9.x +dcl_input_ps_sgv constant v10.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 32 +add r0.xyz, -v2.xyzx, cb0[44].xyzx +mov r1.x, cb0[0].z +mov r1.y, cb0[1].z +mov r1.z, cb0[2].z +add r2.xyz, -r0.xyzx, r1.xyzx +mad r0.xyz, cb0[86].wwww, r2.xyzx, r0.xyzx +dp3 r0.w, r0.xyzx, r0.xyzx +max r1.w, r0.w, l(9.999999939E-09) +rsq r1.w, r1.w +mul r2.xyz, r0.xyzx, r1.wwww +ishl r2.w, v9.x, l(4) +and r3.x, l(16), cb1[r2.w + 4].w +if_nz r3.x + iadd r3.x, l(2), cb1[r2.w + 5].x + ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r3.x, l(12), t1.xxxx + ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.y, cb1[r2.w + 5].x, l(12), t1.xxxx +else + mov r3.xy, cb1[r2.w + 3].zxzz +endif +sample_b_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t13.xyzw, s4, cb0[108].x +sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t14.xyzw, s5, cb0[108].x +add r3.z, -r5.w, l(1.000000) +mul r4.xyzw, r4.xyzw, cb5[5].xyzw +mul r6.xyz, r4.xyzx, cb5[4].zzzz +dp3 r3.w, r6.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r6.xyz, r4.xyzx, cb5[4].zzzz, -r3.wwww +mad r6.xyz, cb5[4].wwww, r6.xyzx, r3.wwww +sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, v1.xyxx, t15.xywz, s6, cb0[108].x +mul r7.x, r7.x, r7.z +mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r3.w, r7.xyxx, r7.xyxx +min r3.w, r3.w, l(1.000000) +add r3.w, -r3.w, l(1.000000) +sqrt r3.w, r3.w +max r3.w, r3.w, l(1.000000017E-16) +mul r7.xy, r7.xyxx, cb5[0].wwww +sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, v1.xyxx, t16.xyzw, s7, cb0[108].x +add r9.xz, -r3.yyxy, v2.xxzx +mov r9.y, l(0.0000610351562) +dp3 r3.x, r9.xyzx, r9.xyzx +rsq r3.x, r3.x +mul r9.xyz, r3.xxxx, r9.xyzx +mul r10.xyz, v3.zxyz, v4.yzxy +mad r10.xyz, v3.yzxy, v4.zxyz, -r10.xyzx +mul r10.xyz, r10.xyzx, v4.wwww +mul r7.yzw, r7.yyyy, r10.xxyz +mad r7.xyz, r7.xxxx, v4.xyzx, r7.yzwy +mad r3.xyw, r3.wwww, v3.xyxz, r7.xyxz +mad r6.w, cb5[1].y, l(2.000000), l(-1.000000) +movc r6.w, v10.x, l(1.000000), r6.w +dp3 r7.x, r3.xywx, r3.xywx +max r7.x, r7.x, l(1.175494351E-38) +rsq r7.x, r7.x +mul r3.xyw, r3.xyxw, r7.xxxx +mul r7.xyz, r6.wwww, r3.xywx +dp3 r8.w, v3.xyzx, v3.xyzx +rsq r8.w, r8.w +mul r11.xyz, r8.wwww, v3.xyzx +mul r11.xyz, r6.wwww, r11.xyzx +ftou r12.xy, v0.xyxx +add r8.w, l(1.000000), -cb0[111].x +mad r8.w, cb0[198].w, r8.w, cb0[111].x +mul r8.w, r8.w, cb0[109].x +lt r9.w, cb0[187].y, l(0.500000) +if_nz r9.w + mad r13.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx + add r13.xyz, -r13.xyzx, v2.xzyx + max r9.w, |r13.y|, |r13.x| + add r9.w, r9.w, l(-464.000000) + mul_sat r9.w, r9.w, l(0.031250) + add r10.w, |r13.z|, l(-208.000000) + mul_sat r10.w, r10.w, l(0.031250) + max r9.w, r9.w, r10.w + ne r10.w, l(0.000000), cb0[210].w + lt r11.w, r9.w, l(1.000000) + and r10.w, r10.w, r11.w + if_nz r10.w + mad r13.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r13.xyz, -r13.xyzx, v2.xzyx + max r10.w, |r13.y|, |r13.x| + add r10.w, r10.w, l(-29.000000) + mul_sat r10.w, r10.w, l(0.500000) + add r11.w, |r13.z|, l(-13.000000) + mul_sat r11.w, r11.w, l(0.500000) + max r10.w, r10.w, r11.w + lt r11.w, r10.w, l(1.000000) + if_nz r11.w + mad r13.xyz, v2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r14.xyz, r13.xyzx, cb0[211].xyzx + round_ni r14.xyz, r14.xyzx + mad r13.xyz, r13.xyzx, cb0[211].xyzx, -r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r14.xyw, r13.xyzx, t4.yzwx, s1, l(0.000000) + add r11.w, -r10.w, l(1.000000) + mul r15.x, l(0.500000), cb0[211].y + mad r15.y, -cb0[211].y, l(0.500000), l(1.000000) + max r13.y, r13.y, r15.x + min r13.y, r15.y, r13.y + mul r13.w, r13.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r13.xwzx, t5.xyzw, s0, l(0.000000) + mad r13.y, r15.w, r11.w, r9.w + add r16.xyz, r13.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s0, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r14.yyyy, r16.xyzx + mov r16.w, r14.y + mul r16.xyzw, r11.wwww, r16.xyzw + add r13.xzw, r13.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t5.xwyz, s0, l(0.000000) + mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r17.xyz, r14.xxxx, r13.xzwx + mov r17.w, r14.x + mul r17.xyzw, r11.wwww, r17.xyzw + mad r13.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r14.xyz, r14.wwww, r13.xzwx + mul r14.xyzw, r11.wwww, r14.xyzw + else + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r13.y, r9.w + endif + mad r13.xzw, cb0[6].xxzy, -cb0[212].zzzz, cb0[210].xxzy + add r13.xzw, -r13.xxzw, v2.xxzy + max r11.w, |r13.z|, |r13.x| + add r11.w, r11.w, l(-116.000000) + mul_sat r11.w, r11.w, l(0.125000) + add r13.x, |r13.w|, l(-52.000000) + mul_sat r13.x, r13.x, l(0.125000) + max r11.w, r11.w, r13.x + lt r13.x, r11.w, l(1.000000) + if_nz r13.x + mad r13.xzw, v2.xxyz, l(0.500000, 0.000000, 0.500000, 0.500000), l(0.500000, 0.000000, 0.500000, 0.500000) + mul r15.xyz, r13.xzwx, cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r15.xyz, r13.xzwx, cb0[211].xyzx, -r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r15.xyzx, t6.yzwx, s1, l(0.000000) + add r13.x, -r11.w, l(1.000000) + mul r10.w, r10.w, r13.x + mul r13.x, l(0.500000), cb0[211].y + mad r13.z, -cb0[211].y, l(0.500000), l(1.000000) + max r13.x, r13.x, r15.y + min r13.x, r13.z, r13.x + mul r15.w, r13.x, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r15.xwzx, t7.xyzw, s0, l(0.000000) + mad r13.y, r19.w, r10.w, r13.y + add r13.xzw, r15.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t7.xwyz, s0, l(0.000000) + mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r20.xyz, r18.yyyy, r13.xzwx + mov r20.w, r18.y + mad r16.xyzw, r20.xyzw, r10.wwww, r16.xyzw + add r13.xzw, r15.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t7.xwyz, s0, l(0.000000) + mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r15.xyz, r18.xxxx, r13.xzwx + mov r15.w, r18.x + mad r17.xyzw, r15.xyzw, r10.wwww, r17.xyzw + mad r13.xzw, r19.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r18.xyz, r18.wwww, r13.xzwx + mad r14.xyzw, r18.xyzw, r10.wwww, r14.xyzw + endif + lt r10.w, l(0.000000), r11.w + if_nz r10.w + mad r13.xzw, v2.xxyz, l(0.125000, 0.000000, 0.125000, 0.125000), l(0.500000, 0.000000, 0.500000, 0.500000) + mul r15.xyz, r13.xzwx, cb0[211].xyzx + mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r13.xzw, r13.xxzw, cb0[211].xxyz, -r15.xxyz + mad r15.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r13.xzw, r18.xxyz, r13.xxzw + min r19.xyz, r15.xyzx, r13.xzwx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r19.xyzx, t8.yzwx, s1, l(0.000000) + add r10.w, -r9.w, l(1.000000) + mul r10.w, r10.w, r11.w + max r11.w, r18.y, r19.y + min r11.w, r15.y, r11.w + mul r19.w, r11.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r19.xwzx, t9.xyzw, s0, l(0.000000) + add r13.xzw, r19.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t9.xwyz, s0, l(0.000000) + mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r18.xyz, r20.yyyy, r13.xzwx + mov r18.w, r20.y + mad r16.xyzw, r18.xyzw, r10.wwww, r16.xyzw + add r13.xzw, r19.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t9.xwyz, s0, l(0.000000) + mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r18.xyz, r20.xxxx, r13.xzwx + mov r18.w, r20.x + mad r17.xyzw, r18.xyzw, r10.wwww, r17.xyzw + mad r13.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r20.xyz, r20.wwww, r13.xzwx + mad r14.xyzw, r20.xyzw, r10.wwww, r14.xyzw + mad r13.y, r15.w, r10.w, r13.y + endif + mad_sat r10.w, r13.y, l(2.000000), l(-1.000000) + add r13.x, -r9.w, r10.w + add r9.w, r9.w, r10.w + mul r13.y, r9.w, l(0.500000) + else + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r13.xy, l(0,1.000000,0,0) + endif + mul r15.xyzw, r13.yyyx, cb0[213].xyzw + mad r15.y, r15.w, l(0.500000), r15.y + mul r13.zw, r13.yyyx, cb0[213].wwwy + mad r15.w, r13.w, l(0.375000), r13.z + add r14.xyzw, r14.xyzw, r15.xyzw + mul r15.xyzw, r13.yyyx, cb0[214].xyzw + mad r15.y, r15.w, l(0.500000), r15.y + mul r13.zw, r13.yyyx, cb0[214].wwwy + mad r15.w, r13.w, l(0.375000), r13.z + add r15.xyzw, r15.xyzw, r17.xyzw + mul r17.xyzw, r13.yyyx, cb0[215].xyzw + mad r17.y, r17.w, l(0.500000), r17.y + mul r13.xy, r13.yxyy, cb0[215].wyww + mad r17.w, r13.y, l(0.375000), r13.x + add r13.xyzw, r16.xyzw, r17.xyzw + mov r7.w, l(1.000000) + dp4 r16.x, r14.xyzw, r7.xyzw + dp4 r16.y, r15.xyzw, r7.xyzw + dp4 r16.z, r13.xyzw, r7.xyzw + max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r17.xyz, r8.wwww, r16.xyzx + mul r18.xyz, r15.xyzx, l(0.715200, 0.715200, 0.715200, 0.000000) + mad r18.xyz, r14.xyzx, l(0.212600, 0.212600, 0.212600, 0.000000), r18.xyzx + mad r18.xyz, r13.xyzx, l(0.072200, 0.072200, 0.072200, 0.000000), r18.xyzx + dp3 r7.w, r18.xyzx, r18.xyzx + max r7.w, r7.w, l(1.175494351E-38) + rsq r7.w, r7.w + mul r18.xyz, r7.wwww, r18.xyzx + mov r18.y, |r18.y| + mov r18.w, l(1.000000) + dp4 r14.x, r14.xyzw, r18.xyzw + dp4 r14.y, r15.xyzw, r18.xyzw + dp4 r14.z, r13.xyzw, r18.xyzw + max r13.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + ge r7.w, r17.y, r17.z + and r7.w, r7.w, l(0x3f800000) + mov r14.xy, r17.zyzz + mov r14.zw, l(0,0,-1.000000,0.666666687) + mad r15.xy, r16.yzyy, r8.wwww, -r14.xyxx + mov r15.zw, l(0,0,1.000000,-1.000000) + mad r14.xyzw, r7.wwww, r15.xyzw, r14.xyzw + ge r7.w, r17.x, r14.x + and r7.w, r7.w, l(0x3f800000) + mov r15.xyz, r14.xywx + mov r15.w, r17.x + mov r14.xyw, r15.wywx + add r14.xyzw, -r15.xyzw, r14.xyzw + mad r14.xyzw, r7.wwww, r14.xyzw, r15.xyzw + min r7.w, r14.y, r14.w + add r7.w, -r7.w, r14.x + add r9.w, -r14.y, r14.w + mad r10.w, r7.w, l(6.000000), l(0.000100) + div r9.w, r9.w, r10.w + add r9.w, r9.w, r14.z + frc r9.w, |r9.w| + add r10.w, r14.x, l(0.000100) + div r7.w, r7.w, r10.w + add r15.xyzw, r9.wwww, l(-0.500000, 1.000000, 0.666666687, 0.333333343) + add r9.w, |r15.x|, l(-0.450000) + mul_sat r9.w, r9.w, l(-10.000001) + mad r10.w, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r10.w + mad r9.w, r9.w, l(-0.350000), l(0.700000) + mov_sat r14.x, r14.x + mul r9.w, r9.w, r14.x + min r7.w, r7.w, r9.w + add r9.w, -r7.w, l(2.000000) + div r9.w, l(2.000000), r9.w + frc r14.xyz, r15.yzwy + mad r14.xyz, r14.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) + add_sat r14.xyz, |r14.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) + add r14.xyz, r14.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) + mad r14.xyz, r7.wwww, r14.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r14.xyz, r9.wwww, r14.xyzx + max r7.w, r13.y, r13.x + max r7.w, r13.z, r7.w + mul r8.w, r8.w, r7.w + mov r7.w, l(1.000000) +else + mov r18.xyz, l(0,0,0,0) + mov r17.xyz, l(1.000000,1.000000,1.000000,0) + mov r14.xyz, cb0[188].xyzx + mov r7.w, l(0) +endif +dp3 r13.x, v4.xyzx, r2.xyzx +dp3 r13.y, r10.xyzx, r2.xyzx +dp3 r13.z, v3.xyzx, r2.xyzx +dp3 r9.w, r13.xyzx, r13.xyzx +max r9.w, r9.w, l(1.175494351E-38) +rsq r9.w, r9.w +mul r10.xyz, r9.wwww, r13.xyzx +mad r13.xy, v1.xyxx, cb5[13].xyxx, cb5[13].zwzz +deriv_rtx_coarse r13.zw, v1.xxxy +deriv_rty_coarse r15.xy, v1.xyxx +min r9.w, l(20.000000), cb5[11].x +div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w +max r10.z, r10.z, l(0.001000) +div r10.xy, r10.xyxx, r10.zzzz +mul r10.xy, r10.xyxx, -cb5[11].yyyy +mul r15.zw, r10.wwww, r10.xxxy +add r10.z, -r10.w, l(1.000000) +add r9.w, r9.w, l(1.000000) +mul r13.zw, r13.zzzw, cb0[108].yyyy +mul r15.xy, r15.xyxx, cb0[108].yyyy +mov r16.xy, r15.zwzz +mov r16.zw, l(0,0,0,0) +mov r11.w, r10.z +mov r14.w, l(0) +mov r17.w, l(1.000000) +mov r18.w, l(0) +mov r19.x, l(0) +loop + lt r19.y, r19.x, r9.w + if_nz r19.y + add r19.yz, r13.xxyx, r16.xxyx + sample_d_indexable(texture2d)(float,float,float,float) r19.y, r19.yzyy, t10.yxzw, s3, r13.zwzz, r15.xyxx + lt r19.z, r11.w, r19.y + if_nz r19.z + mov r18.w, r19.y + break + endif + add r19.x, r19.x, l(1.000000) + mad r19.zw, r10.xxxy, r10.wwww, r16.xxxy + add r20.x, -r10.w, r11.w + mov r16.zw, r16.xxxy + mov r14.w, r19.y + mov r17.w, r11.w + mov r11.w, r20.x + mov r16.xy, r19.zwzz + continue + else + mov r18.w, r14.w + break + endif +endloop +add r9.w, r14.w, -r17.w +add r10.x, r14.w, -r18.w +add r10.x, r11.w, r10.x +add r10.x, -r17.w, r10.x +div r9.w, r9.w, r10.x +mad r10.xy, r15.zwzz, r9.wwww, r16.zwzz +add r10.xy, r13.xyxx, r10.xyxx +sample_b_indexable(texture2d)(float,float,float,float) r9.w, r10.xyxx, t10.yzwx, s3, cb0[108].x +add r10.x, -v2.y, cb1[r2.w + 12].z +add r10.x, r10.x, l(0.200000) +mul_sat r10.x, r10.x, l(2.85714269) +mad r10.y, r10.x, l(-2.000000), l(3.000000) +mul r10.x, r10.x, r10.x +mul r10.x, r10.x, r10.y +mul r10.x, r10.x, cb1[r2.w + 12].y +max r10.x, r10.x, cb1[r2.w + 12].w +add r10.y, r10.x, cb1[r2.w + 12].x +lt r10.y, l(0.010000), r10.y +if_nz r10.y + add r10.y, -r5.x, l(1.000000) + mul r13.xyz, r4.xyzx, r10.yyyy + dp3 r10.z, r13.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r10.z, r10.z, l(-0.350000) + mul_sat r10.z, r10.z, l(-4.000000) + mad r10.w, r10.z, l(-2.000000), l(3.000000) + mul r10.z, r10.z, r10.z + mul r11.w, r10.z, r10.w + mul r13.xyzw, v8.xyxz, l(1.000000, -1.000000, 1.000000, 1.000000) + movc r13.xyzw, cb1[r2.w + 4].wwww, r13.xyzw, v8.xzxy + mul r15.xyzw, r13.xyzw, cb0[196].zzzz + movc r16.yz, cb1[r2.w + 4].wwww, v7.zzyz, v7.yyzy + mov r16.x, v7.x + add r19.xyz, |r16.xyzx|, l(-0.200000, -0.200000, -0.200000, 0.000000) + mul r20.xyz, r19.xyzx, r19.xyzx + mul r19.xyz, r19.xyzx, r20.xyzx + max r19.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + dp3 r13.x, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + div r19.xyz, r19.xyzx, r13.xxxx + sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r15.zyzz, t11.xyzw, s4, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.zwzz, t11.xyzw, s4, cb0[108].x + mul r22.xyzw, r19.zzzz, r22.xyzw + mad r21.xyzw, r21.xyzw, r19.yyyy, r22.xyzw + sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.ywyy, t11.xyzw, s4, cb0[108].x + mad r19.xyzw, r22.xyzw, r19.xxxx, r21.xyzw + add r16.yw, -r19.wwww, l(0.000000, 0.800000, 0.000000, 0.450000) + mul r21.xyz, r7.yyxy, l(0.200000, 0.000000, 1.000000, 0.000000) + mad_sat r13.x, cb1[r2.w + 12].x, r10.y, r21.x + add r13.x, -r16.y, r13.x + mul_sat r13.x, r13.x, l(3.33333325) + mad r14.w, r13.x, l(-2.000000), l(3.000000) + mul r13.x, r13.x, r13.x + mul r13.x, r13.x, r14.w + mul_sat r10.y, r10.y, r10.x + add r10.y, -r16.w, r10.y + mul_sat r10.y, r10.y, l(1.53846145) + mad r14.w, r10.y, l(-2.000000), l(3.000000) + mul r10.y, r10.y, r10.y + mul r10.y, r10.y, r14.w + max r10.y, r10.y, r13.x + add r13.x, r5.x, l(-0.500000) + mul_sat r13.x, r13.x, l(4.000000) + mad r14.w, r13.x, l(-2.000000), l(3.000000) + mul r13.x, r13.x, r13.x + mul r13.x, r13.x, r14.w + add r5.w, -r5.w, l(0.199999988) + mul_sat r5.w, r5.w, l(-5.00000048) + mad r14.w, r5.w, l(-2.000000), l(3.000000) + mul r5.w, r5.w, r5.w + mul r5.w, r5.w, r14.w + mad r14.w, r5.w, r11.w, r13.x + min r14.w, r14.w, l(1.000000) + max r10.x, r10.x, cb1[r2.w + 12].x + mad r16.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mul r19.xyw, r15.yzyw, l(20.000000, 20.000000, 0.000000, 20.000000) + mul r22.xyz, r15.yzwy, l(34.345600, 34.345600, 34.345600, 0.000000) + mul r23.xyz, r20.xyzx, r20.xyzx + mul r23.xyz, r23.xyzx, r23.xyzx + mul r20.xyz, r20.xyzx, r23.xyzx + dp3 r17.w, r20.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + div r20.xyz, r20.xyzx, r17.wwww + round_ni r23.xyzw, r19.yxyw + mul r24.xyzw, r23.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r24.xyzw, r24.xyzw + add r25.xyzw, r24.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r17.w, r24.xyxx, r25.xyxx + add r21.xw, r17.wwww, r24.xxxy + mul r17.w, r21.w, r21.x + add r18.w, r21.w, r21.x + frc r17.w, r17.w + frc r26.w, r18.w + add r27.xyzw, r23.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) + mul r27.xyzw, r27.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r27.xyzw, r27.xyzw + add r28.xyzw, r27.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r18.w, r27.xyxx, r28.xyxx + add r21.xw, r18.wwww, r27.xxxy + mul r18.w, r21.w, r21.x + add r19.y, r21.w, r21.x + frc r24.x, r18.w + frc r24.y, r19.y + mad r18.w, r17.w, l(0.399999976), l(0.600000) + mul r19.y, r18.w, l(0.250000) + mad r23.xyzw, r15.zyzw, l(20.000000, 20.000000, 20.000000, 20.000000), -r23.xyzw + mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.xxxy + add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) + mul r23.x, r21.x, l(1.250000) + lt r20.w, r21.w, l(0.000000) + movc r20.w, r20.w, l(1.250000), l(0.750000) + mul r23.y, r20.w, r21.w + mad r17.w, cb0[102].x, l(3.000000), r17.w + frc r17.w, r17.w + add r21.xw, r17.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) + mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) + mad r25.xy, r21.xwxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r21.xw, r21.xxxw, r21.xxxw + mul r21.xw, r21.xxxw, r25.xxxy + mul r17.w, r21.w, r21.x + dp2 r20.w, r23.xyxx, r23.xyxx + sqrt r20.w, r20.w + mad r18.w, -r18.w, l(0.250000), r20.w + div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.y + mul_sat r18.w, r18.w, r20.w + mad r20.w, r18.w, l(-2.000000), l(3.000000) + mul r18.w, r18.w, r18.w + mul r18.w, r18.w, r20.w + ge r18.w, r18.w, l(0.001000) + and r18.w, r18.w, l(0x3f800000) + mul r26.z, r17.w, r18.w + div r21.xw, r23.xxxy, r19.yyyy + max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) + min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + ge r17.w, r26.z, l(0.001000) + and r17.w, r17.w, l(0x3f800000) + mul r21.xw, r17.wwww, r21.xxxw + mad r17.w, r24.x, l(0.250000), l(0.250000) + mul r26.xy, r17.wwww, r21.xwxx + dp2 r17.w, r24.zwzz, r25.zwzz + add r21.xw, r17.wwww, r24.zzzw + mul r17.w, r21.w, r21.x + add r18.w, r21.w, r21.x + frc r17.w, r17.w + frc r24.w, r18.w + dp2 r18.w, r27.zwzz, r28.zwzz + add r21.xw, r18.wwww, r27.zzzw + mul r18.w, r21.w, r21.x + add r19.y, r21.w, r21.x + frc r23.x, r18.w + frc r23.y, r19.y + mad r18.w, r17.w, l(0.399999976), l(0.600000) + mul r19.y, r18.w, l(0.250000) + mad r21.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.zzzw + add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) + mul r25.x, r21.x, l(1.250000) + lt r20.w, r21.w, l(0.000000) + movc r20.w, r20.w, l(1.250000), l(0.750000) + mul r25.y, r20.w, r21.w + mad r17.w, cb0[102].x, l(3.000000), r17.w + frc r17.w, r17.w + add r21.xw, r17.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) + mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) + mad r23.yz, r21.xxwx, l(0.000000, -2.000000, -2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000) + mul r21.xw, r21.xxxw, r21.xxxw + mul r21.xw, r21.xxxw, r23.yyyz + mul r17.w, r21.w, r21.x + dp2 r20.w, r25.xyxx, r25.xyxx + sqrt r20.w, r20.w + mad r18.w, -r18.w, l(0.250000), r20.w + div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.y + mul_sat r18.w, r18.w, r20.w + mad r20.w, r18.w, l(-2.000000), l(3.000000) + mul r18.w, r18.w, r18.w + mul r18.w, r18.w, r20.w + ge r18.w, r18.w, l(0.001000) + and r18.w, r18.w, l(0x3f800000) + mul r24.z, r17.w, r18.w + div r21.xw, r25.xxxy, r19.yyyy + max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) + min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + ge r17.w, r24.z, l(0.001000) + and r17.w, r17.w, l(0x3f800000) + mul r21.xw, r17.wwww, r21.xxxw + mad r17.w, r23.x, l(0.250000), l(0.250000) + mul r24.xy, r17.wwww, r21.xwxx + round_ni r19.xy, r19.xwxx + mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r23.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r17.w, r21.xwxx, r23.xyxx + add r21.xw, r17.wwww, r21.xxxw + mul r17.w, r21.w, r21.x + add r18.w, r21.w, r21.x + frc r17.w, r17.w + frc r23.w, r18.w + add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) + mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r25.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r18.w, r21.xwxx, r25.xyxx + add r21.xw, r18.wwww, r21.xxxw + mul r18.w, r21.w, r21.x + add r19.w, r21.w, r21.x + frc r25.x, r18.w + frc r25.y, r19.w + mad r18.w, r17.w, l(0.399999976), l(0.600000) + mul r19.w, r18.w, l(0.250000) + mad r19.xy, r15.ywyy, l(20.000000, 20.000000, 0.000000, 0.000000), -r19.xyxx + mad r21.xw, r25.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx + add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) + mul r27.x, r19.x, l(1.250000) + lt r19.x, r19.y, l(0.000000) + movc r19.x, r19.x, l(1.250000), l(0.750000) + mul r27.y, r19.x, r19.y + mad r17.w, cb0[102].x, l(3.000000), r17.w + frc r17.w, r17.w + add r19.xy, r17.wwww, l(-0.200000, -0.850000, 0.000000, 0.000000) + mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) + mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.xy, r19.xyxx, r19.xyxx + mul r19.xy, r19.xyxx, r21.xwxx + mul r17.w, r19.y, r19.x + dp2 r19.x, r27.xyxx, r27.xyxx + sqrt r19.x, r19.x + mad r18.w, -r18.w, l(0.250000), r19.x + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.w + mul_sat r18.w, r18.w, r19.x + mad r19.x, r18.w, l(-2.000000), l(3.000000) + mul r18.w, r18.w, r18.w + mul r18.w, r18.w, r19.x + ge r18.w, r18.w, l(0.001000) + and r18.w, r18.w, l(0x3f800000) + mul r23.z, r17.w, r18.w + div r19.xy, r27.xyxx, r19.wwww + max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r17.w, r23.z, l(0.001000) + and r17.w, r17.w, l(0x3f800000) + mul r19.xy, r17.wwww, r19.xyxx + mad r17.w, r25.x, l(0.250000), l(0.250000) + mul r23.xy, r17.wwww, r19.xyxx + mul r24.xyzw, r20.zzzz, r24.xyzw + mad r24.xyzw, r26.xyzw, r20.yyyy, r24.xyzw + mad r23.xyzw, r23.xyzw, r20.xxxx, r24.xyzw + round_ni r24.xyzw, r22.yxyz + mul r25.xyzw, r24.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r25.xyzw, r25.xyzw + add r26.xyzw, r25.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r17.w, r25.xyxx, r26.xyxx + add r19.xy, r17.wwww, r25.xyxx + mul r17.w, r19.y, r19.x + add r18.w, r19.y, r19.x + frc r17.w, r17.w + frc r27.w, r18.w + add r28.xyzw, r24.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) + mul r28.xyzw, r28.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r28.xyzw, r28.xyzw + add r29.xyzw, r28.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r18.w, r28.xyxx, r29.xyxx + add r19.xy, r18.wwww, r28.xyxx + mul r18.w, r19.y, r19.x + add r19.x, r19.y, r19.x + frc r25.x, r18.w + frc r25.y, r19.x + mad r18.w, r17.w, l(0.399999976), l(0.600000) + mul r19.x, r18.w, l(0.250000) + mad r24.xyzw, r15.xyzw, l(34.345600, 34.345600, 34.345600, 34.345600), -r24.xyzw + mad r19.yw, r25.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.xxxy + add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) + mul r24.x, r19.y, l(1.250000) + lt r15.x, r19.w, l(0.000000) + movc r15.x, r15.x, l(1.250000), l(0.750000) + mul r24.y, r15.x, r19.w + mad r15.x, cb0[102].x, l(4.345600), r17.w + frc r15.x, r15.x + add r19.yw, r15.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) + mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) + mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.yw, r19.yyyw, r19.yyyw + mul r19.yw, r19.yyyw, r21.xxxw + mul r15.x, r19.w, r19.y + dp2 r17.w, r24.xyxx, r24.xyxx + sqrt r17.w, r17.w + mad r17.w, -r18.w, l(0.250000), r17.w + div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.x + mul_sat r17.w, r17.w, r18.w + mad r18.w, r17.w, l(-2.000000), l(3.000000) + mul r17.w, r17.w, r17.w + mul r17.w, r17.w, r18.w + ge r17.w, r17.w, l(0.001000) + and r17.w, r17.w, l(0x3f800000) + mul r27.z, r15.x, r17.w + div r19.xy, r24.xyxx, r19.xxxx + max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r15.x, r27.z, l(0.001000) + and r15.x, r15.x, l(0x3f800000) + mul r19.xy, r15.xxxx, r19.xyxx + mad r15.x, r25.x, l(0.250000), l(0.250000) + mul r27.xy, r15.xxxx, r19.xyxx + dp2 r15.x, r25.zwzz, r26.zwzz + add r19.xy, r15.xxxx, r25.zwzz + mul r15.x, r19.y, r19.x + add r17.w, r19.y, r19.x + frc r15.x, r15.x + frc r25.w, r17.w + dp2 r17.w, r28.zwzz, r29.zwzz + add r19.xy, r17.wwww, r28.zwzz + mul r17.w, r19.y, r19.x + add r18.w, r19.y, r19.x + frc r19.x, r17.w + frc r19.y, r18.w + mad r17.w, r15.x, l(0.399999976), l(0.600000) + mul r18.w, r17.w, l(0.250000) + mad r19.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.zzzw + add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) + mul r24.x, r19.y, l(1.250000) + lt r19.y, r19.w, l(0.000000) + movc r19.y, r19.y, l(1.250000), l(0.750000) + mul r24.y, r19.y, r19.w + mad r15.x, cb0[102].x, l(4.345600), r15.x + frc r15.x, r15.x + add r19.yw, r15.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) + mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) + mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.yw, r19.yyyw, r19.yyyw + mul r19.yw, r19.yyyw, r21.xxxw + mul r15.x, r19.w, r19.y + dp2 r19.y, r24.xyxx, r24.xyxx + sqrt r19.y, r19.y + mad r17.w, -r17.w, l(0.250000), r19.y + div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w + mul_sat r17.w, r17.w, r19.y + mad r19.y, r17.w, l(-2.000000), l(3.000000) + mul r17.w, r17.w, r17.w + mul r17.w, r17.w, r19.y + ge r17.w, r17.w, l(0.001000) + and r17.w, r17.w, l(0x3f800000) + mul r25.z, r15.x, r17.w + div r19.yw, r24.xxxy, r18.wwww + max r19.yw, r19.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) + min r19.yw, r19.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) + ge r15.x, r25.z, l(0.001000) + and r15.x, r15.x, l(0x3f800000) + mul r19.yw, r15.xxxx, r19.yyyw + mad r15.x, r19.x, l(0.250000), l(0.250000) + mul r25.xy, r15.xxxx, r19.ywyy + round_ni r19.xy, r22.xzxx + mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r22.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r15.x, r21.xwxx, r22.xyxx + add r21.xw, r15.xxxx, r21.xxxw + mul r15.x, r21.w, r21.x + add r17.w, r21.w, r21.x + frc r15.x, r15.x + frc r22.w, r17.w + add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) + mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r24.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r17.w, r21.xwxx, r24.xyxx + add r21.xw, r17.wwww, r21.xxxw + mul r17.w, r21.w, r21.x + add r18.w, r21.w, r21.x + frc r24.x, r17.w + frc r24.y, r18.w + mad r17.w, r15.x, l(0.399999976), l(0.600000) + mul r18.w, r17.w, l(0.250000) + mad r19.xy, r15.ywyy, l(34.345600, 34.345600, 0.000000, 0.000000), -r19.xyxx + mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx + add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) + mul r26.x, r19.x, l(1.250000) + lt r19.x, r19.y, l(0.000000) + movc r19.x, r19.x, l(1.250000), l(0.750000) + mul r26.y, r19.x, r19.y + mad r15.x, cb0[102].x, l(4.345600), r15.x + frc r15.x, r15.x + add r19.xy, r15.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) + mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) + mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.xy, r19.xyxx, r19.xyxx + mul r19.xy, r19.xyxx, r21.xwxx + mul r15.x, r19.y, r19.x + dp2 r19.x, r26.xyxx, r26.xyxx + sqrt r19.x, r19.x + mad r17.w, -r17.w, l(0.250000), r19.x + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w + mul_sat r17.w, r17.w, r19.x + mad r19.x, r17.w, l(-2.000000), l(3.000000) + mul r17.w, r17.w, r17.w + mul r17.w, r17.w, r19.x + ge r17.w, r17.w, l(0.001000) + and r17.w, r17.w, l(0x3f800000) + mul r22.z, r15.x, r17.w + div r19.xy, r26.xyxx, r18.wwww + max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r15.x, r22.z, l(0.001000) + and r15.x, r15.x, l(0x3f800000) + mul r19.xy, r15.xxxx, r19.xyxx + mad r15.x, r24.x, l(0.250000), l(0.250000) + mul r22.xy, r15.xxxx, r19.xyxx + mul r24.xyzw, r20.zzzz, r25.xyzw + mad r24.xyzw, r27.xyzw, r20.yyyy, r24.xyzw + mad r20.xyzw, r22.xyzw, r20.xxxx, r24.xyzw + max r19.xy, r20.zwzz, r23.zwzz + mad r20.zw, -r14.wwww, r10.xxxx, l(0.000000, 0.000000, 1.000000, 1.010000) + add r15.x, r19.y, l(-0.100000) + ge r15.x, r15.x, r20.z + and r15.x, r15.x, l(0x3f800000) + mul r15.x, r15.x, r19.x + ge r2.w, cb1[r2.w + 12].x, l(0.010000) + and r2.w, r2.w, l(0x3f800000) + mul r2.w, r2.w, r15.x + lt r15.x, l(0.001000), r2.w + add r19.xy, r20.xyxx, r23.xyxx + mul r17.w, cb0[102].x, cb0[196].z + mul r20.y, r17.w, l(0.750000) + dp2 r17.w, r16.xzxx, r16.xzxx + max r17.w, r17.w, l(1.175494351E-38) + rsq r17.w, r17.w + mul r16.xz, r16.xxzx, r17.wwww + add r16.xz, |r16.xxzx|, l(-0.200000, 0.000000, -0.200000, 0.000000) + mul r21.xw, r16.xxxz, r16.xxxz + mul r16.xz, r16.xxzx, r21.xxwx + max r16.xz, r16.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + dp2 r17.w, r16.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) + div r16.xz, r16.xxzx, r17.wwww + sample_b_indexable(texture2d)(float,float,float,float) r22.xyz, r15.zwzz, t12.xyzw, s4, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r15.yzw, r15.ywyy, t12.wxyz, s4, cb0[108].x + mul r15.yzw, r16.xxxx, r15.yyzw + mad r15.yzw, r22.xxyz, r16.zzzz, r15.yyzw + movc r16.yw, r15.xxxx, r19.xxxy, r16.yyyw + mad r15.xy, r15.yzyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mov r20.x, l(0) + mad r22.xyzw, r13.zwyw, cb0[196].zzzz, r20.xyxy + sample_b_indexable(texture2d)(float,float,float,float) r13.y, r22.xyxx, t12.xwyz, s4, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r13.z, r22.zwzz, t12.xywz, s4, cb0[108].x + mul r13.z, r16.x, r13.z + mad r13.y, r13.y, r16.z, r13.z + mad r13.yz, r15.xxyx, r13.yyyy, r16.yywy + ge r13.w, r19.z, r20.w + and r13.w, r13.w, l(0x3f800000) + max r2.w, r2.w, r13.w + add r13.w, -r15.w, l(1.000000) + mad r10.x, r14.w, r10.x, -r13.w + mul_sat r10.x, r10.x, l(9.999998) + mad r13.w, r10.x, l(-2.000000), l(3.000000) + mul r10.x, r10.x, r10.x + mul r10.x, r10.x, r13.w + max r2.w, r2.w, r10.x + mad r15.xy, -r7.zyzz, l(1.000000, 0.000000, 0.000000, 0.000000), r21.yzyy + dp2 r10.x, r15.xyxx, r15.xyxx + lt r13.w, l(0.0000610351562), r10.x + rsq r10.x, r10.x + mul r15.xy, r10.xxxx, r15.xyxx + mov r15.xy, -r15.xyxx + movc r16.z, r13.w, r15.x, l(-1.000000) + and r16.y, r13.w, r15.y + min r10.x, r3.z, l(0.050000) + add r13.w, -r3.z, r10.x + mad r13.w, r2.w, r13.w, r3.z + mad r10.z, -r10.w, r10.z, l(1.000000) + mul r10.z, r10.z, r10.y + mad r5.w, -r5.w, r11.w, l(1.000000) + mul r5.w, r5.w, r10.z + mad r5.w, r5.w, l(-0.500000), l(1.000000) + mov r16.x, l(0) + mad r3.xyw, -r3.xyxw, r6.wwww, r16.zxzy + mad r3.xyw, r13.yyyy, r3.xyxw, r7.xyxz + mul r15.xyz, r7.zxyz, r16.xyzx + mad r15.xyz, r7.yzxy, r16.yzxy, -r15.xyzx + add r15.xyz, -r3.xywx, r15.xyzx + mad r3.xyw, r13.zzzz, r15.xyxz, r3.xyxw + dp3 r6.w, r3.xywx, r3.xywx + rsq r6.w, r6.w + mad r3.xyw, r3.xyxw, r6.wwww, -r7.xyxz + mad r3.xyw, r2.wwww, r3.xyxw, r7.xyxz + dp3 r6.w, r3.xywx, r3.xywx + rsq r6.w, r6.w + mul r3.xyw, r3.xyxw, r6.wwww + mul r6.w, r11.w, r10.y + mad r6.w, -r6.w, l(0.200000), r13.w + min r10.y, r13.w, l(0.200000) + max r3.z, r6.w, r10.y + mul r6.xyz, r5.wwww, r6.xyzx + dp3 r6.w, r4.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r6.w, r6.w, l(-0.700000) + mul_sat r6.w, r6.w, l(-2.50000024) + mad r10.y, r6.w, l(-2.000000), l(3.000000) + mul r6.w, r6.w, r6.w + mul r6.w, r6.w, r10.y + mad r6.w, r6.w, l(0.500000), l(1.000000) + mul r10.y, r13.x, r2.w + mad r13.xyz, r4.xyzx, r6.wwww, -r4.xyzx + mad r10.yzw, r10.yyyy, r13.xxyz, r4.xxyz + mul r4.xyz, r5.wwww, r10.yzwy +else + mov r3.xyw, r7.xyxz + mov r10.x, l(0.010000) + mov r2.w, l(0) +endif +mul r5.w, r5.y, l(0.040000) +mad r6.w, -r5.x, l(0.960000), l(0.960000) +mul r10.yzw, r4.xxyz, r6.wwww +mad r13.xyz, -r5.yyyy, l(0.040000, 0.040000, 0.040000, 0.000000), r4.xyzx +mad r13.xyz, r5.xxxx, r13.xyzx, r5.wwww +mul r6.xyz, r6.wwww, r6.xyzx +mul r5.y, r3.z, r3.z +max r5.y, r5.y, l(0.00781250000) +max r5.w, v5.z, l(9.999999939E-09) +div r15.xy, v5.xyxx, r5.wwww +max r5.w, v6.z, l(9.999999939E-09) +div r15.zw, v6.xxxy, r5.wwww +add r15.xy, -r15.zwzz, r15.xyxx +mul r16.xy, r15.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r16.xy, |r16.xyxx| +sqrt r16.xy, r16.xyxx +mov r15.z, -r15.y +lt r15.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xxxz +lt r15.xz, r15.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r15.xy, -r15.ywyy, r15.xzxx +itof r15.xy, r15.xyxx +mul r15.xy, r15.xyxx, r16.xyxx +mad o1.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +lt r5.w, l(0.500000), r2.w +movc o1.w, r5.w, l(0.700000), l(0.400000) +add r15.xyz, cb0[197].xyzx, cb3[0].xyzx +mad r15.xyz, cb0[187].wwww, r15.xyzx, -cb3[0].xyzx +mov r15.w, l(0.0000610351562) +dp3 r5.w, r15.xzwx, r15.xzwx +rsq r5.w, r5.w +mul r16.xyz, r5.wwww, r15.xwzx +add r19.xyz, cb0[191].xyzx, -cb3[3].xyzx +mad r19.xyz, cb0[198].yyyy, r19.xyzx, cb3[3].xyzx +add r5.w, l(1.000000), -cb3[3].w +mad r5.w, cb0[198].w, r5.w, cb3[3].w +mul r20.xyz, r5.wwww, r19.xyzx +mov r12.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r21.xy, r12.xyzz, t3.xyzw +add r11.w, r21.x, l(-1.000000) +mad r11.w, cb4[34].x, r11.w, l(1.000000) +add r12.z, -r11.w, l(1.000000) +mad r11.w, cb0[187].z, r12.z, r11.w +dp3 r12.z, r7.xyzx, r15.xyzx +mul r21.xzw, r6.xxyz, cb0[186].zzzz +mul r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000) +dp3 r13.w, r10.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) +dp2 r14.w, cb0[6].xzxx, cb0[6].xzxx +rsq r14.w, r14.w +mul r23.xy, r14.wwww, cb0[6].xzxx +dp2 r14.w, r16.xzxx, r23.xyxx +mov_sat r14.w, -r14.w +add r23.xy, l(1.000000, 1.000000, 0.000000, 0.000000), -cb0[198].xyxx +mad r15.w, r12.z, l(0.500000), l(-1.000000) +mad r15.w, -r12.z, r15.w, -r12.z +add r16.w, l(0.750000), -|cb0[6].y| +add_sat r16.w, r16.w, r16.w +mad r17.w, r16.w, l(-2.000000), l(3.000000) +mul r16.w, r16.w, r16.w +mul r16.w, r16.w, r17.w +mul r16.w, r14.w, r16.w +mul r16.w, r23.x, r16.w +add r15.w, r15.w, l(0.500000) +mad r12.z, r16.w, r15.w, r12.z +mad r12.z, cb0[197].w, cb0[198].x, r12.z +max r12.z, r12.z, l(-1.000000) +min r12.z, r12.z, l(1.000000) +add r12.z, r12.z, l(-0.250000) +mul r12.z, r12.z, l(1.33333337) +max r12.z, r12.z, l(0.000000) +mad r15.w, r12.z, l(-2.000000), l(3.000000) +mul r12.z, r12.z, r12.z +mul r12.z, r12.z, r15.w +dp3 r15.w, r7.xyzx, cb0[6].xyzx +add r15.w, r15.w, l(-0.250000) +mul_sat r15.w, r15.w, l(1.33333337) +mad r16.w, r15.w, l(-2.000000), l(3.000000) +mul r15.w, r15.w, r15.w +mul r15.w, r15.w, r16.w +mul r16.w, r5.z, r21.y +min r17.w, r5.z, r21.y +min r18.w, r12.z, r17.w +mul r19.w, r15.w, r16.w +dp3 r20.w, r7.xyzx, cb0[192].xyzx +add_sat r20.w, r20.w, cb0[193].x +mad r20.w, r20.w, cb0[193].y, cb0[193].z +mul r22.w, r18.w, cb0[187].y +add r24.xyz, -r14.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r24.xyz, r22.wwww, r24.xyzx, r14.xyzx +mul r24.xyz, r20.wwww, r24.xyzx +mad r20.w, r8.w, l(0.350000024), l(0.650000) +min r20.w, r20.w, l(1.500000) +max r25.xyz, r8.wwww, l(1.250000, 0.000000, 0.500000, 0.000000) +min r25.xyz, r25.xyzx, l(1.750000, 1.500000, 1.500000, 0.000000) +add r8.w, -r20.w, r25.x +mad r8.w, cb0[187].x, r8.w, r20.w +mul r26.xyz, r8.wwww, r24.xyzx +mul r26.xyz, r26.xyzx, cb0[186].wwww +dp3 r8.w, r20.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r20.xyz, r19.xyzx, r5.wwww, -r8.wwww +mad r20.xyz, r18.wwww, r20.xyzx, r8.wwww +mul r24.xyz, r24.xyzx, r25.yyyy +mad r23.yzw, r19.xxyz, cb0[198].yyyy, r23.yyyy +mad r20.xyz, r24.xyzx, r23.yzwy, r20.xyzx +mad r20.xyz, r20.xyzx, cb0[186].yyyy, -r26.xyzx +mad r20.xyz, r11.wwww, r20.xyzx, r26.xyzx +dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000), -r8.wwww +mad r22.xyz, r22.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r8.wwww +mad_sat r8.w, r15.w, r16.w, r12.z +mad r23.yzw, r6.xxyz, cb0[186].zzzz, -r22.xxyz +mad r22.xyz, r8.wwww, r23.yzwy, r22.xyzx +mad r23.yzw, r4.xxyz, r6.wwww, -r22.xxyz +mad r22.xyz, r18.wwww, r23.yzwy, r22.xyzx +mad r23.yzw, r4.xxyz, r6.wwww, -r13.wwww +mad r23.yzw, r23.yyzw, l(0.000000, 1.200000, 1.200000, 1.200000), r13.wwww +mad r23.yzw, -r6.xxyz, cb0[186].zzzz, r23.yyzw +mad r21.xzw, r19.wwww, r23.yyzw, r21.xxzw +dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +max r12.z, r8.w, l(0.001000) +div r12.z, l(1.000000, 1.000000, 1.000000, 1.000000), r12.z +mul r8.w, r8.w, r12.z +max r8.w, r8.w, l(0.000000) +min r8.w, r8.w, l(1.500000) +mad r22.xyz, r22.xyzx, r8.wwww, -r21.xzwx +mad r21.xzw, r11.wwww, r22.xxyz, r21.xxzw +mad r8.w, -r15.w, r16.w, r18.w +mad r8.w, r11.w, r8.w, r19.w +add r12.z, l(1.000000), -cb0[186].z +mad r12.z, r8.w, r12.z, cb0[186].z +add r15.w, r15.y, l(-0.500000) +mad r22.y, r11.w, r15.w, l(0.500000) +dp3_sat r24.x, r3.xywx, r2.xyzx +mov r22.xz, cb0[6].xxzx +dp3 r15.w, r22.xyzx, r22.xyzx +max r15.w, r15.w, l(1.175494351E-38) +rsq r15.w, r15.w +mul r22.xyz, r15.wwww, r22.xyzx +add r22.xyz, r22.xyzx, r22.xyzx +mad r15.xyz, r15.xyzx, r11.wwww, r22.xyzx +add r15.w, r11.w, l(2.000000) +mad r15.xyz, r2.xyzx, r15.wwww, r15.xyzx +dp3 r15.w, r15.xyzx, r15.xyzx +rsq r15.w, r15.w +mul r15.xyz, r15.wwww, r15.xyzx +dp3 r15.x, r3.xywx, r15.xyzx +mul r15.y, r5.y, r5.y +mad r15.z, r15.x, r15.y, -r15.x +mad r15.x, r15.z, r15.x, l(1.000000) +mul r15.x, r15.x, r15.x +add r15.z, l(1.000000), -cb5[1].z +mad r15.z, r4.w, cb5[1].z, r15.z +mul r22.xyz, r20.xyzx, r21.xzwx +ne r15.w, r15.x, r15.y +div r15.x, r15.y, r15.x +movc r15.x, r15.w, r15.x, l(1.000000) +mad r15.y, r24.x, l(2.000000), r5.y +add r15.y, r15.y, l(0.000100) +div r15.y, l(0.500000), r15.y +mad r15.x, r15.x, r15.y, l(-0.0000610351562) +max r15.x, r15.x, l(0.000000) +min r15.x, r15.x, l(20.000000) +mul r15.xyw, r13.xyxz, r15.xxxx +mad r8.w, r8.w, l(0.500000), l(0.500000) +mul r8.w, r12.z, r8.w +mul r20.xyz, r8.wwww, r20.xyzx +mul r15.xyw, r15.xyxw, r20.xyxz +mul r15.xyw, r15.xyxw, cb0[199].wwww +mad r15.xyw, r22.xyxz, r15.zzzz, r15.xyxw +dp3 r8.w, r15.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r16.w, r8.w, l(-0.500000) +max r16.w, r16.w, l(0.000000) +min r16.w, r16.w, l(0.500000) +mov r20.y, l(0) +mov r20.xz, cb0[195].yyxy +mul r22.xyz, r20.xyzx, cb0[6].zxyz +mad r20.xyz, cb0[6].yzxy, r20.yzxy, -r22.xyzx +dp3 r18.w, r20.xyzx, r20.xyzx +rsq r18.w, r18.w +mul r20.xyz, r18.wwww, r20.xyzx +dp3 r18.w, r2.xyzx, r7.xyzx +add r22.xy, -|r18.wwww|, l(1.000000, 0.399999976, 0.000000, 0.000000) +dp3 r16.x, r16.xyzx, r7.xyzx +add r16.y, -r11.w, l(1.000000) +add r10.x, -r3.z, r10.x +mad r2.w, r2.w, r10.x, r3.z +mul r26.y, r2.w, r2.w +mul r27.x, r24.x, r24.x +mul r27.z, r24.x, r27.x +mul r10.x, r26.y, r26.y +mul r26.z, r26.y, r10.x +mov r24.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r25.x, l(3.327070, 1.000000, 0.000000, 0.000000), r24.xyxx +dp2 r25.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r24.xzxx +mov r26.x, l(1.000000) +dp2 r10.x, r25.xyxx, r26.xyxx +mov r27.yw, l(0,9.044010,0,1.000000) +dp3 r28.x, l(3.596850, -1.367720, 1.000000, 0.000000), r27.xzwx +dp3 r28.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r27.xyzx +mov r29.x, l(5.565890) +mov r29.yz, r27.xxzx +dp3 r28.z, l(1.000000, 19.788601, -20.212299, 0.000000), r29.xyzx +dp3 r16.z, r28.xyzx, r26.xyzx +div r10.x, r10.x, r16.z +dp2 r25.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r24.xwxx +mov r27.x, l(1.296780) +mov r27.y, r24.x +dp2 r25.y, l(1.000000, -0.755907, 0.000000, 0.000000), r27.xyxx +dp2 r16.z, r25.xyxx, r26.xyxx +dp3 r28.x, l(2.923380, 59.418800, 1.000000, 0.000000), r27.yzwy +mov r27.xw, l(20.322500,0,0,121.563004) +dp3 r28.y, l(1.000000, -27.030199, 222.591995, 0.000000), r27.xyzx +dp3 r28.z, l(626.130005, 316.627014, 1.000000, 0.000000), r27.yzwy +dp3 r19.w, r28.xyzx, r26.xyzx +div r16.z, r16.z, r19.w +mad r23.yzw, r13.xxyz, r10.xxxx, r16.zzzz +add r10.x, r10.x, r16.z +mad r16.z, r16.w, r16.w, l(1.000000) +add r15.xyw, -r8.wwww, r15.xyxw +mad r15.xyw, r16.zzzz, r15.xyxw, r8.wwww +mad r16.zw, cb0[195].wwww, l(0.000000, 0.000000, -0.600000, -0.399999976), l(0.000000, 0.000000, 0.800000, 0.900000) +add r8.w, -r16.z, r16.w +add r16.z, -r16.z, r22.x +div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w +mul_sat r8.w, r8.w, r16.z +mad r16.z, r8.w, l(-2.000000), l(3.000000) +mul r8.w, r8.w, r8.w +mul r8.w, r8.w, r16.z +mul r24.yzw, r8.wwww, cb0[194].xxyz +mul r24.yzw, r24.yyzw, cb0[194].wwww +dp3 r8.w, r9.xyzx, r20.xyzx +add_sat r8.w, r8.w, l(1.000000) +min r5.z, r5.z, r8.w +min r5.z, r21.y, r5.z +mul r24.yzw, r5.zzzz, r24.yyzw +mad r25.xyw, r4.xyxz, r6.wwww, l(-0.250000, -0.250000, 0.000000, -0.250000) +mad r25.xyw, cb0[195].zzzz, r25.xyxw, l(0.250000, 0.250000, 0.000000, 0.250000) +dp3_sat r5.z, r20.xyzx, r7.xyzx +mul r20.xyz, r5.zzzz, r25.xywx +max r5.z, r17.y, r17.x +max r5.z, r17.z, r5.z +mul r5.z, r5.z, l(0.500000) +max r5.z, r5.z, l(1.000000) +div r5.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z +mul r17.xyz, r5.zzzz, r17.xyzx +mad r19.xyz, r19.xyzx, r5.wwww, -r17.xyzx +mad r17.xyz, r11.wwww, r19.xyzx, r17.xyzx +dp3 r5.z, r18.xyzx, r7.xyzx +mul r5.w, r7.w, r5.z +mad r8.w, r16.x, l(0.500000), l(-1.000000) +mad r8.w, -r16.x, r8.w, l(0.500000) +mad r5.z, -r5.z, r7.w, r8.w +mad_sat r5.z, r11.w, r5.z, r5.w +mul r16.xzw, r5.zzzz, r17.xxyz +mad r5.z, r14.w, r11.w, r16.y +mul r5.z, r23.x, r5.z +mul r16.xzw, r5.zzzz, r16.xxzw +mul_sat r5.z, r22.y, l(5.00000048) +mad r5.w, r5.z, l(-2.000000), l(3.000000) +mul r5.z, r5.z, r5.z +mul r5.z, r5.z, r5.w +mul r16.xzw, r5.zzzz, r16.xxzw +mul r16.xzw, r17.wwww, r16.xxzw +add r5.z, r13.w, l(-0.100000) +mul_sat r5.z, r5.z, l(-16.666666) +mad r5.w, r5.z, l(-2.000000), l(3.000000) +mul r5.z, r5.z, r5.z +mul r5.z, r5.z, r5.w +mad r5.z, r5.z, r11.w, r16.y +mul r16.xzw, r5.zzzz, r16.xxzw +max r17.xyz, r10.yzwy, l(0.150000, 0.150000, 0.150000, 0.000000) +mul r16.xzw, r16.xxzw, r17.xxyz +mad r16.xzw, r24.yyzw, r20.xxyz, r16.xxzw +add r15.xyw, r15.xyxw, r16.xzxw +utof r5.zw, r12.xxxy +mul r16.xz, r5.zzwz, l(0.031250, 0.000000, 0.031250, 0.000000) +round_ni r16.xz, r16.xxzx +mad r7.w, r16.z, cb2[1].y, r16.x +mul r7.w, r7.w, l(8.000000) +ftoi r7.w, r7.w +mad r8.w, -cb0[85].y, cb2[2].w, v0.w +round_ni r8.w, r8.w +add r11.w, l(-1.000000), cb2[1].w +max r13.w, r8.w, l(0.000000) +min r11.w, r11.w, r13.w +mul r13.w, r11.w, l(8.000000) +ftoi r13.w, r13.w +mul r8.xyz, r8.xyzx, cb5[6].xyzx +mul r16.xzw, r9.wwww, cb5[12].xxyz +mul r16.xzw, r4.wwww, r16.xxzw +mad r8.xyz, r8.xyzx, cb5[1].wwww, r16.xzwx +mad r8.xyz, r8.xyzx, r15.zzzz, r15.xywx +dp3 r9.w, -r2.xyzx, r3.xywx +add r9.w, r9.w, r9.w +mad r15.xyw, r3.xyxw, -r9.wwww, -r2.xyxz +max r2.w, r2.w, l(0.001000) +log r2.w, r2.w +mad r2.w, r2.w, l(1.200000), l(5.000000) +sample_l_indexable(texturecube)(float,float,float,float) r15.xyw, r15.xywx, t17.xywz, s0, r2.w +add r2.w, -r10.x, l(1.000000) +div r2.w, r2.w, r10.x +mul r16.xzw, r2.wwww, r13.xxyz +mad r16.xzw, r16.xxzw, r23.yyzw, r23.yyzw +mul r15.xyw, r15.xyxw, r16.xzxw +mul r2.w, r25.z, cb0[186].w +mul r2.w, r12.z, r2.w +mul r15.xyw, r2.wwww, r15.xyxw +mad r8.xyz, r15.xywx, r14.xyzx, r8.xyzx +ge r2.w, r11.w, r8.w +iadd r8.w, r13.w, cb0[110].y +mad r9.w, r16.y, l(-0.250000), l(0.750000) +mad r4.xyz, r4.xyzx, r6.wwww, l(-0.500000, -0.500000, -0.500000, 0.000000) +add r6.w, -r5.y, l(0.010000) +ge r5.x, r5.x, l(0.500000) +and r5.x, r5.x, l(0x3f800000) +mov r14.w, l(1.000000) +mov r15.xyw, r8.xyxz +mov r10.x, l(0) +loop + ilt r11.w, l(7), r10.x + breakc_nz r11.w + iadd r11.w, r7.w, r10.x + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx + iadd r12.z, r8.w, r10.x + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.z, r12.z, l(0), t0.xxxx + and r11.w, r11.w, r12.z + and r11.w, r2.w, r11.w + ishl r12.z, r10.x, l(5) + mov r16.xyz, r15.xywx + mov r13.w, r11.w + loop + breakc_z r13.w + firstbit_lo r16.w, r13.w + ishl r17.x, l(1), r16.w + xor r17.x, r13.w, r17.x + iadd r16.w, r12.z, r16.w + bfi r19.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 5, 6, 7) + ftou r17.y, cb3[r19.y + 6].w + ieq r17.y, r17.y, l(1) + if_nz r17.y + add r14.xyz, v2.xyzx, -cb3[r19.x + 6].xyzx + and r17.yzw, l(0, 0x0000ffff, 0x0000ffff, 0x0000ffff), cb3[r19.y + 6].xxzy + and r18.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r19.z + 6].yxzy + ushr r20.xyz, cb3[r19.y + 6].xzyx, l(16, 16, 16, 0) + ushr r22.yzw, cb3[r19.z + 6].yyxz, l(0, 16, 16, 16) + f16tof32 r17.yzw, r17.yyzw + f16tof32 r18.xyz, r18.xyzx + f16tof32 r20.xyz, r20.xyzx + f16tof32 r23.xyw, r22.zyzw + mov r25.xz, r17.yywy + mov r25.yw, r20.xxxz + dp4 r17.y, r14.xyzw, r25.xyzw + mov r20.x, r17.z + mov r20.z, r18.y + mov r20.w, r23.x + dp4 r17.z, r14.xyzw, r20.xyzw + mov r23.xz, r18.xxzx + dp4 r14.x, r14.xyzw, r23.xyzw + max r14.y, |r17.z|, |r17.y| + max r14.x, |r14.x|, r14.y + mad r14.y, cb3[r19.w + 6].x, l(0.500000), l(0.500000) + add r14.x, -r14.y, r14.x + mad r14.y, -cb3[r19.w + 6].x, l(0.500000), l(0.500000) + div_sat r14.x, r14.x, r14.y + add r14.x, -r14.x, l(1.000000) + mul r14.x, r14.x, r14.x + else + mov r14.x, l(1.000000) + endif + lt r14.y, r14.x, l(0.001000) + if_nz r14.y + mov r13.w, r17.x + continue + endif + ishl r14.y, r16.w, l(3) + lt r14.z, cb3[r14.y + 6].w, l(1.500000) + if_nz r14.z + bfi r14.z, l(29), l(3), r16.w, l(3) + ieq r17.y, l(16), cb3[r14.z + 6].w + add r17.z, cb0[198].z, cb3[r14.z + 6].z + lt r17.z, r17.z, l(0.500000) + or r17.y, r17.z, r17.y + if_z r17.y + bfi r17.yz, l(0, 29, 29, 0), l(0, 3, 3, 0), r16.wwww, l(0, 2, 4, 0) + ftou r16.w, cb3[r14.y + 6].w + and r16.w, r16.w, l(1) + ieq r17.w, r16.w, l(0) + not r17.w, r17.w + lt r18.x, l(0.000000), cb3[r17.y + 6].z + and r17.w, r17.w, r18.x + ieq r18.x, l(4), cb3[r14.z + 6].w + movc r18.y, r16.w, l(0), l(1.000000) + mad r18.z, cb3[r17.y + 6].y, l(0.500000), l(0.500000) + add r20.z, r18.z, -|cb3[r17.y + 6].x| + add r20.x, -r20.z, cb3[r17.y + 6].y + add r18.z, -|r20.z|, l(1.000000) + add r18.z, -|r20.x|, r18.z + max r18.z, r18.z, l(0.000488281250) + ge r19.y, cb3[r17.y + 6].x, l(0.000000) + movc r20.y, r19.y, r18.z, -r18.z + dp3 r18.z, r20.xyzx, r20.xyzx + rsq r18.z, r18.z + mul r20.xyz, r18.zzzz, r20.xyzx + add r18.z, cb3[r17.z + 6].y, cb3[r17.z + 6].y + max r18.z, r18.z, l(0.100000) + and r19.y, r18.x, l(0x3f800000) + add r18.z, r18.z, -cb3[r19.z + 6].w + mad r18.z, r19.y, r18.z, cb3[r19.z + 6].w + add r22.yzw, -v2.xxyz, cb3[r19.x + 6].xxyz + dp3 r19.y, r22.zwyz, -r20.xyzx + lt r19.z, l(0.500000), cb3[r17.z + 6].z + and r19.z, r18.x, r19.z + and r19.z, r19.z, l(0x3f800000) + mul r19.z, r18.y, r19.z + mad r23.xyz, -r20.zxyz, r19.yyyy, -r22.yzwy + mad r22.yzw, r19.zzzz, r23.xxyz, r22.yyzw + dp3 r19.y, r22.yzwy, r22.yzwy + rsq r19.z, r19.y + mul r23.xyz, r19.zzzz, r22.yzwy + if_nz r17.w + mul r24.yzw, r20.zzxy, cb3[r17.y + 6].zzzz + mad r25.xyz, -r24.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), r22.yzwy + mad r24.yzw, r24.yyzw, l(0.000000, 0.500000, 0.500000, 0.500000), r22.yyzw + dp3 r19.z, r25.xyzx, r25.xyzx + sqrt r19.z, r19.z + dp3 r20.w, r24.yzwy, r24.yzwy + sqrt r20.w, r20.w + mul r26.xyz, r20.xyzx, r23.xyzx + mad r26.xyz, r20.zxyz, r23.yzxy, -r26.xyzx + mul r27.xyz, r20.xyzx, r26.xyzx + mad r26.xyz, r26.zxyz, r20.yzxy, -r27.xyzx + dp3 r21.y, r26.xyzx, r26.xyzx + rsq r21.y, r21.y + mul r23.xyz, r21.yyyy, r26.xyzx + dp3 r21.y, r25.xyzx, r24.yzwy + mad r21.y, r19.z, r20.w, r21.y + mad r21.y, r21.y, l(0.500000), l(1.000000) + div r21.y, l(1.000000, 1.000000, 1.000000, 1.000000), r21.y + dp3 r23.w, r23.xyzx, r25.xyzx + div r19.z, r23.w, r19.z + dp3 r23.w, r23.xyzx, r24.yzwy + div r20.w, r23.w, r20.w + add r19.z, r19.z, r20.w + mul_sat r19.z, r19.z, l(0.500000) + mul r19.z, r19.z, r21.y + else + mov r19.z, l(1.000000) + endif + lt r20.w, r18.z, l(0.000000) + if_nz r20.w + mul r20.w, cb3[r19.x + 6].w, cb3[r19.x + 6].w + mul r20.w, r19.y, r20.w + mad r20.w, -r20.w, r20.w, l(1.000000) + max r20.w, r20.w, l(0.000000) + add r19.y, r19.y, l(1.000000) + div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), r19.y + and r21.y, r17.w, l(0x3f800000) + add r23.w, -r19.y, r19.z + mad r19.y, r21.y, r23.w, r19.y + mul r20.w, r20.w, r20.w + mul r19.y, r19.y, r20.w + else + mul r24.yzw, r22.yyzw, cb3[r19.x + 6].wwww + dp3 r20.w, r24.yzwy, r24.yzwy + min r20.w, r20.w, l(1.000000) + add r20.w, -r20.w, l(1.000000) + log r20.w, r20.w + mul r18.z, r18.z, r20.w + exp r18.z, r18.z + mul r19.y, r18.z, r19.z + endif + dp3 r18.z, r23.yzxy, -r20.xyzx + add r18.z, r18.z, -cb3[r17.y + 6].z + mul_sat r18.z, r18.z, cb3[r17.y + 6].w + mad r18.z, r18.z, r18.z, l(-1.000000) + mad r18.y, r18.y, r18.z, l(1.000000) + mul r18.y, r18.y, r19.y + ftoi r18.z, cb3[r19.w + 6].w + not r17.w, r17.w + ige r19.y, r18.z, l(0) + and r17.w, r17.w, r19.y + if_nz r17.w + if_z r16.w + ishl r17.w, r18.z, l(2) + mul r20.xyz, v2.yyyy, cb6[r17.w + 33].xywx + mad r20.xyz, cb6[r17.w + 32].xywx, v2.xxxx, r20.xyzx + mad r20.xyz, cb6[r17.w + 34].xywx, v2.zzzz, r20.xyzx + add r20.xyz, r20.xyzx, cb6[r17.w + 35].xywx + div_sat r19.yz, r20.xxyx, r20.zzzz + mad r19.yz, r19.yyzy, cb6[r18.z + 0].zzwz, cb6[r18.z + 0].xxyx + else + ishl r17.w, r18.z, l(2) + dp3 r20.x, -r22.yzwy, cb6[r17.w + 32].xyzx + dp3 r20.y, -r22.yzwy, cb6[r17.w + 33].xyzx + dp3 r20.z, -r22.yzwy, cb6[r17.w + 34].xyzx + lt r17.w, |r20.x|, |r20.y| + and r17.w, r17.w, l(1) + dp2 r20.w, |r20.xyxx|, icb[r17.w + 0].xyxx + lt r20.w, r20.w, |r20.z| + movc r17.w, r20.w, l(2), r17.w + dp3 r20.w, r20.xyzx, icb[r17.w + 0].xyzx + lt r20.w, r20.w, l(0.000000) + bfi r17.w, l(31), l(1), r17.w, r20.w + ushr r20.w, r17.w, l(1) + dp3 r20.w, r20.xyzx, icb[r20.w + 0].xyzx + div r21.y, l(0.000244140625), cb6[r18.z + 0].w + add r21.y, -r21.y, l(0.500000) + utof r22.y, r17.w + ult r22.z, r17.w, l(2) + and r22.z, r22.z, l(2) + dp2 r20.x, r20.xzxx, icb[r22.z + 0].xzxx + mul r20.x, r20.x, icb[r17.w + 4].z + div r20.x, r20.x, |r20.w| + mad r20.x, r20.x, r21.y, r22.y + add r20.x, r20.x, l(0.500000) + mul_sat r25.x, r20.x, l(0.166666672) + iadd r20.x, l(-1), icb[r17.w + 4].y + dp2 r20.x, r20.yzyy, icb[r20.x + 0].xyxx + mul r17.w, r20.x, icb[r17.w + 4].w + div r17.w, r17.w, |r20.w| + mad_sat r25.y, -r17.w, r21.y, l(0.500000) + mad r19.yz, r25.xxyx, cb6[r18.z + 0].zzwz, cb6[r18.z + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r17.w, r19.yzyy, t18.yzwx, s0, l(0.000000) + mul r18.y, r17.w, r18.y + endif + mul r14.x, r14.x, r18.y + lt r17.w, l(0.000100), r14.x + if_nz r17.w + if_nz r18.x + add r17.w, l(1.000000), -cb3[r17.z + 6].w + dp3 r18.y, r11.xyzx, r23.xyzx + add_sat r18.y, r18.y, l(0.500000) + mad r18.z, r18.y, l(-2.000000), l(3.000000) + mul r18.y, r18.y, r18.y + mul r18.y, r18.y, r18.z + mad r17.w, r18.y, cb3[r17.z + 6].w, r17.w + mul r17.w, r17.w, cb3[r17.z + 6].x + mul r17.w, r14.x, r17.w + add r20.xyz, -r16.xyzx, cb3[r14.y + 6].xyzx + mad r20.xyz, r17.wwww, r20.xyzx, r16.xyzx + endif + if_z r18.x + dp3 r17.w, r7.xyzx, r23.xyzx + mov_sat r18.y, r17.w + if_nz cb3[r14.z + 6].w + if_z r16.w + ftoi r16.w, cb3[r14.z + 6].x + else + add r22.yzw, v2.xxyz, -cb3[r19.x + 6].xxyz + lt r24.yzw, |r22.zzww|, |r22.yyyz| + and r18.z, r24.z, r24.y + lt r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r22.yyzw + ushr r19.y, cb3[r17.y + 6].w, l(24) + ubfe r24.yz, l(0, 8, 8, 0), l(0, 16, 8, 0), cb3[r17.y + 6].wwww + movc r19.y, r22.y, r19.y, r24.y + and r17.y, l(255), cb3[r17.y + 6].w + movc r17.y, r22.z, r24.z, r17.y + ubfe r19.z, l(8), l(8), cb3[r14.z + 6].x + and r20.w, l(255), cb3[r14.z + 6].x + movc r19.z, r22.w, r19.z, r20.w + movc r17.y, r24.w, r17.y, r19.z + movc r17.y, r18.z, r19.y, r17.y + ilt r18.z, r17.y, l(80) + movc r16.w, r18.z, r17.y, l(-1) + endif + ige r17.y, r16.w, l(0) + if_nz r17.y + add r19.xyz, v2.xyzx, -cb3[r19.x + 6].xyzx + ishl r17.y, r16.w, l(2) + dp3 r18.z, r19.xyzx, r19.xyzx + max r18.z, r18.z, l(1.175494351E-38) + rsq r18.z, r18.z + mul r19.xyz, r18.zzzz, r19.xyzx + mad r19.xyz, -r19.xyzx, cb4[r16.w + 288].xxxx, v2.xyzx + mul r18.z, l(5.000000), cb4[r16.w + 288].y + mad r19.xyz, r11.xyzx, r18.zzzz, r19.xyzx + mul r25.xyzw, r19.yyyy, cb4[r17.y + 65].xyzw + mad r25.xyzw, cb4[r17.y + 64].xyzw, r19.xxxx, r25.xyzw + mad r25.xyzw, cb4[r17.y + 66].xyzw, r19.zzzz, r25.xyzw + add r25.xyzw, r25.xyzw, cb4[r17.y + 67].xyzw + div r19.xyz, r25.xyzx, r25.wwww + ge r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxyz + ge r24.yzw, r19.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000) + add r25.xy, -cb4[r16.w + 344].xyxx, cb4[r16.w + 344].zwzz + mad r19.xy, r19.xyxx, r25.xyxx, cb4[r16.w + 344].xyxx + mad r25.xy, r19.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r25.xy, r25.xyxx + mad r19.xy, r19.xyxx, cb4[400].zwzz, -r25.xyxx + add r26.xyzw, r19.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r25.zw, -r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r26.xz, r19.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r19.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r19.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r19.xyxx + mul r30.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r19.xy, -r26.xzxx, r26.xzxx, r25.zwzz + add r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r31.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r19.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r30.z, r31.x + mov r30.w, r19.x + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r19.y + mov r28.z, r29.y + mov r28.w, r27.z + add r27.xyz, r28.zywz, r31.zywz + div r29.xyz, r29.xzwx, r26.zwyz + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.yxzy, cb4[400].xxxx + div r28.xyz, r28.zywz, r27.xyzx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb4[400].yyyy + mov r29.w, r28.x + mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r29.ywxw + mad r19.xy, r25.xyxx, cb4[400].xyxx, r29.zwzz + mov r28.w, r29.y + mov r29.yw, r28.yyyz + mad r31.xyzw, r25.xyxy, cb4[400].xyxy, r29.xyzy + mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz + mad r25.xyzw, r25.xyxy, cb4[400].xyxy, r29.xwzw + mul r29.xyzw, r26.zwyz, r27.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r30.xyxx, t2.xxxx, s2, r19.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r30.zwzz, t2.xxxx, s2, r19.z + mul r18.z, r18.z, r29.y + mad r17.y, r29.x, r17.y, r18.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r19.xyxx, t2.xxxx, s2, r19.z + mad r17.y, r29.z, r18.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.xyxx, t2.xxxx, s2, r19.z + mad r17.y, r29.w, r18.z, r17.y + mul r29.xyzw, r26.xyzw, r27.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r31.xyxx, t2.xxxx, s2, r19.z + mad r17.y, r29.x, r18.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r31.zwzz, t2.xxxx, s2, r19.z + mad r17.y, r29.y, r18.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.zwzz, t2.xxxx, s2, r19.z + mad r17.y, r29.z, r18.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r25.xyxx, t2.xxxx, s2, r19.z + mad r17.y, r29.w, r18.z, r17.y + or r22.yzw, r22.yyzw, r24.yyzw + or r18.z, r22.z, r22.y + or r18.z, r22.w, r18.z + and r19.x, r19.z, l(0x7fffffff) + ult r19.x, l(0x7f800000), r19.x + or r18.z, r18.z, r19.x + mul r19.x, r26.y, r27.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.y, r25.zwzz, t2.xxxx, s2, r19.z + mad r17.y, r19.x, r19.y, r17.y + add r17.y, r17.y, l(-1.000000) + mad r16.w, cb4[r16.w + 288].w, r17.y, l(1.000000) + movc r16.w, r18.z, l(1.000000), r16.w + else + dp3 r17.y, r9.xyzx, r23.xyzx + add_sat r16.w, r17.y, l(1.000000) + endif + else + mov r16.w, l(1.000000) + endif + if_z cb3[r14.z + 6].w + mul r19.xyz, r14.xxxx, cb3[r14.y + 6].xyzx + add r17.y, l(1.000000), -cb3[r17.z + 6].y + max r18.z, r19.y, r19.x + max r18.z, r19.z, r18.z + mul r18.z, r9.w, r18.z + max r18.z, r18.z, l(1.000000) + div r18.z, l(1.000000, 1.000000, 1.000000, 1.000000), r18.z + mad r17.y, r18.z, cb3[r17.z + 6].y, r17.y + mul r19.xyz, r17.yyyy, cb3[r14.y + 6].xyzx + mul r17.y, l(0.250000), cb3[r17.z + 6].x + add_sat r18.z, r17.w, l(0.500000) + mad r20.w, -cb3[r17.z + 6].x, l(0.250000), l(1.000000) + mad r17.y, r18.z, r20.w, r17.y + mul r19.xyz, r17.yyyy, r19.xyzx + mov r22.yzw, r21.xxzw + mov r24.yzw, r21.xxzw + mov r17.y, l(1.000000) + mov r18.z, l(0) + else + ieq r20.w, l(3), cb3[r14.z + 6].w + if_nz r20.w + mad r25.xy, cb3[r17.z + 6].xxxx, l(-0.600000, -0.399999976, 0.000000, 0.000000), l(0.800000, 0.900000, 0.000000, 0.000000) + add r20.w, -r25.x, r25.y + add r21.y, r22.x, -r25.x + div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w + mul_sat r20.w, r20.w, r21.y + mad r21.y, r20.w, l(-2.000000), l(3.000000) + mul r20.w, r20.w, r20.w + mul r20.w, r20.w, r21.y + mul r20.w, r16.w, r20.w + mul r14.x, r14.x, r20.w + mul r25.xyz, r23.zxyz, cb0[6].xyzx + mad r25.xyz, cb0[6].zxyz, r23.xyzx, -r25.xyzx + mul r26.xyz, r25.xyzx, cb0[6].zxyz + mad r25.xyz, cb0[6].yzxy, r25.yzxy, -r26.xyzx + dp3 r20.w, r25.xyzx, r25.xyzx + rsq r20.w, r20.w + mul r25.xyz, r20.wwww, r25.xyzx + dp3_sat r18.y, r7.xyzx, -r25.xyzx + mad r22.yzw, cb3[r17.z + 6].yyyy, r4.xxyz, l(0.000000, 0.500000, 0.500000, 0.500000) + mov r24.yzw, l(0,0,0,0) + mov r17.y, l(1.000000) + mov r18.z, l(0) + else + ieq r20.w, l(1), cb3[r14.z + 6].w + if_nz r20.w + add r17.w, r17.w, cb3[r17.z + 6].x + max_sat r17.w, r17.w, l(-1.000000) + mul r18.y, r16.w, r17.w + mul r24.yzw, r6.xxyz, cb3[r17.z + 6].yyyy + mov r17.y, l(1.000000) + mov r18.z, l(0) + else + ieq r16.w, l(2), cb3[r14.z + 6].w + if_nz r16.w + add r17.w, l(0.050000), cb3[r17.z + 6].x + add r17.w, r3.z, -r17.w + mul_sat r17.w, r17.w, l(-10.000000) + mad r21.y, r17.w, l(-2.000000), l(3.000000) + mul r17.w, r17.w, r17.w + mul r17.w, r17.w, r21.y + add r21.y, l(1.000000), -cb3[r17.z + 6].z + mad r21.y, r5.x, cb3[r17.z + 6].z, r21.y + mul r17.y, r17.w, r21.y + else + mov r17.y, l(1.000000) + endif + and r18.z, r16.w, cb3[r17.z + 6].y + mov r24.yzw, l(0,0,0,0) + endif + and r22.yzw, r10.yyzw, r20.wwww + endif + mov r19.xyz, cb3[r14.y + 6].xyzx + endif + ine r14.y, l(3), cb3[r14.z + 6].w + if_nz r14.y + mad r14.y, r18.z, r6.w, r5.y + mad r23.xyz, r0.xyzx, r1.wwww, r23.xyzx + dp3 r14.z, r23.xyzx, r23.xyzx + rsq r14.z, r14.z + mul r23.xyz, r14.zzzz, r23.xyzx + dp3 r14.z, r3.xywx, r23.xyzx + mul r16.w, r14.y, r14.y + mad r17.z, r14.z, r16.w, -r14.z + mad r14.z, r17.z, r14.z, l(1.000000) + mul r14.z, r14.z, r14.z + ne r17.z, r14.z, r16.w + div r14.z, r16.w, r14.z + movc r14.z, r17.z, r14.z, l(1.000000) + mad r14.y, r24.x, l(2.000000), r14.y + add r14.y, r14.y, l(0.000100) + div r14.y, l(0.500000), r14.y + mad r14.y, r14.z, r14.y, l(-0.0000610351562) + max r14.y, r14.y, l(0.000000) + min r14.y, r14.y, l(20.000000) + mul r23.xyz, r13.xyzx, r14.yyyy + mul r17.yzw, r17.yyyy, r23.xxyz + mul r17.yzw, r17.yyzw, cb3[r19.w + 6].zzzz + else + mov r17.yzw, l(0,0,0,0) + endif + mul r14.xyz, r14.xxxx, r19.xyzx + add r19.xyz, r22.yzwy, -r24.yzwy + mad r19.xyz, r18.yyyy, r19.xyzx, r24.yzwy + mul r19.xyz, r14.xyzx, r19.xyzx + mul r14.xyz, r17.yzwy, r14.xyzx + mul r14.xyz, r18.yyyy, r14.xyzx + mad r14.xyz, r19.xyzx, r15.zzzz, r14.xyzx + add r16.xyz, r14.xyzx, r16.xyzx + endif + else + mov r18.x, l(0) + endif + movc r16.xyz, r18.xxxx, r20.xyzx, r16.xyzx + endif + endif + mov r13.w, r17.x + endloop + mov r15.xyw, r16.xyxz + iadd r10.x, r10.x, l(1) +endloop +lt r0.x, l(0.500000), cb5[3].x +if_nz r0.x + dp3 r0.x, r15.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r3.xyz, -r0.xxxx, r15.xywx + mad r0.xyz, cb5[3].zzzz, r3.xyzx, r0.xxxx + add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) + mad r0.xyz, cb5[3].wwww, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mul r3.xyz, r0.xyzx, cb5[3].yyyy + mad r0.xyz, -r0.xyzx, cb5[3].yyyy, cb5[7].xyzx + mad r0.xyz, cb5[7].wwww, r0.xyzx, r3.xyzx + add r2.w, l(1.000000), -cb5[4].x + mov_sat r18.w, r18.w + add r3.x, -r18.w, l(1.000000) + add r3.y, -r2.w, l(1.000000) + add r2.w, -r2.w, r3.x + div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y + mul_sat r2.w, r2.w, r3.x + mad r3.x, r2.w, l(-2.000000), l(3.000000) + mul r2.w, r2.w, r2.w + mul r2.w, r2.w, r3.x + mul r3.xyz, r2.wwww, cb5[8].xyzx + mad r15.xyw, r3.xyxz, cb5[4].yyyy, r0.xyxz +endif +div r0.xyz, r15.xywx, cb0[109].xxxx +eq r2.w, l(1.000000), cb5[2].x +movc o0.w, r2.w, r4.w, l(1.000000) +lt r2.w, cb0[198].w, l(0.500000) +if_nz r2.w + mul r0.w, r0.w, r1.w + mad r1.w, v2.y, cb0[156].w, cb0[157].w + max r1.w, r1.w, l(0.010000) + mad r2.w, r0.w, cb0[154].w, -cb0[153].w + max r2.w, r2.w, l(0.000000) + mul r3.x, r1.w, l(-1.442695) + exp r3.x, r3.x + add r3.x, -r3.x, l(1.000000) + div r1.w, r3.x, r1.w + mad r3.x, v2.y, cb0[156].w, cb0[158].w + mul r3.x, r3.x, l(1.442695) + exp r3.x, r3.x + mul r1.w, r1.w, r3.x + mul r1.w, r1.w, -r2.w + mul r3.xyz, r1.wwww, cb0[155].xyzx + mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) + exp r3.xyz, r3.xyzx + dp3 r1.w, -r2.xyzx, cb0[154].xyzx + mad r2.w, cb0[155].w, cb0[155].w, l(1.000000) + dp2 r3.w, r1.wwww, cb0[155].wwww + add r2.w, r2.w, -r3.w + lt r3.w, l(0.000000), cb0[163].z + if_nz r3.w + and r12.w, l(7), cb0[108].w + imad r4.xyz, r12.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r3.w, r4.y, r4.z, r4.x + imad r4.x, r4.z, r3.w, r4.y + imad r4.y, r3.w, r4.x, r4.z + imad r5.x, r4.x, r4.y, r3.w + dp3 r1.x, -r2.xyzx, -r1.xyzx + add r1.y, v2.y, -cb0[44].y + lt r1.z, l(5.960464478E-08), r1.x + div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x + and r1.x, r1.x, r1.z + mul r1.x, r1.x, cb0[163].w + div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w + mul r2.x, r1.z, r1.x + mad r2.y, r2.x, r1.y, cb0[44].y + mad r1.y, -r2.x, r1.y, r1.y + mul r2.x, r1.y, cb0[159].z + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r2.z, r2.y, -cb0[159].x + mul r2.z, r2.z, cb0[159].z + max r2.xz, r2.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + exp r2.z, -r2.z + mul r2.z, r2.z, cb0[159].y + lt r3.w, l(5.960464478E-08), |r2.x| + exp r4.z, -r2.x + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r2.x + mad r2.x, -r2.x, l(0.240226507), l(0.693147182) + movc r2.x, r3.w, r4.z, r2.x + add r2.y, r2.y, -cb0[162].z + mul r2.y, r2.y, cb0[162].x + max r2.y, r2.y, l(-127.000000) + exp r2.y, -r2.y + mul r2.y, r2.y, cb0[162].y + lt r3.w, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r3.w, r4.z, r1.y + mul r1.y, r1.y, r2.y + mad r1.y, r2.z, r2.x, r1.y + mad r1.x, -r1.x, r1.z, l(1.000000) + mul r1.x, r0.w, r1.x + mul r1.x, r1.x, r1.y + exp r1.x, -r1.x + min r1.x, r1.x, l(1.000000) + max r1.x, r1.x, cb0[161].w + mad_sat r1.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx + add r1.x, r1.y, r1.x + add r1.x, r1.z, r1.x + min r1.x, r1.x, l(1.000000) + imad r5.y, r4.y, r5.x, r4.x + ushr r1.yz, r5.xxyx, l(0, 16, 16, 0) + utof r1.yz, r1.yyzy + mad r1.yz, r1.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + mad r1.yz, r1.yyzy, cb0[167].wwww, r5.zzwz + mul r2.xy, r1.yzyy, cb0[165].xyxx + mad r1.y, v0.w, cb0[164].x, cb0[164].y + log r1.y, r1.y + mul r1.y, r1.y, cb0[164].z + div r2.z, r1.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t19.xyzw, s0, l(0.000000) + add r1.y, v0.w, -cb0[166].z + mul_sat r1.y, r1.y, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r1.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.xyz, r1.yyyy, cb0[161].xyzx + mad r2.xyz, r2.xyzx, r4.wwww, r4.xyzx + mul r1.x, r1.x, r4.w + else + add r1.y, v2.y, -cb0[44].y + mul r1.z, r1.y, cb0[159].z + mul r1.y, r1.y, cb0[162].x + max r1.yz, r1.yyzy, l(0.000000, -127.000000, -127.000000, 0.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r1.z| + exp r4.y, -r1.z + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r1.z + mad r1.z, -r1.z, l(0.240226507), l(0.693147182) + movc r1.z, r4.x, r4.y, r1.z + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.y, r4.z, r1.y + mul r1.y, r1.y, r4.x + mad r1.y, r3.w, r1.z, r1.y + mul r1.y, r0.w, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.w, r1.y, r4.x + add r0.w, r4.y, r0.w + min r1.x, r0.w, l(1.000000) + add r0.w, -r1.x, l(1.000000) + mul r2.xyz, r0.wwww, cb0[161].xyzx + endif + mul r4.xyz, r1.xxxx, r3.xyzx + mad r0.w, r1.w, r1.w, l(1.000000) + mul r0.w, r0.w, l(0.0596831031) + mad r1.yzw, cb0[156].xxyz, r0.wwww, cb0[158].xxyz + mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) + mul r3.w, r2.w, l(12.566371) + sqrt r2.w, r2.w + mul r2.w, r2.w, r3.w + max r2.w, r2.w, l(0.001000) + div r0.w, r0.w, r2.w + mad_sat r1.yzw, cb0[157].xxyz, r0.wwww, r1.yyzw + mul r1.yzw, r1.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) + add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r1.yzw, r1.yyzw, r3.xxyz + mad r1.xyz, r1.yzwy, r1.xxxx, r2.xyzx + +// === Simplified Fog Modification (Anti-Banding) === +// Check if fog modification is enabled via cb13[12].y +lt r15.x, l(0.500000), cb13[12].y +if_nz r15.x + // r0.xyz = scene color, r4.xyz = transmittance, r1.xyz = fog inscatter + // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density + add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + + // Reduce fog inscatter intensity + mul r16.xyz, r1.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + + // Modified fog blend: scene * boostedTrans + reducedInscatter + mad o0.xyz, r0.xyzx, r15.xyzx, r16.xyzx +else + // Original fog blend + mad o0.xyz, r0.xyzx, r4.xyzx, r1.xyzx +endif +// === End Fog Modification === +else + mov o0.xyz, r0.xyzx +endif +mov o1.z, l(1.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..eb832b91d3 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0_original_backup.asm @@ -0,0 +1,1911 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 22:27:23 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy w +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 xyz 2 NONE float xyz +// TEXCOORD 2 xyz 3 NONE float xyz +// TEXCOORD 3 xyzw 4 NONE float xyzw +// TEXCOORD 4 xyz 5 NONE float xyz +// TEXCOORD 5 xyz 6 NONE float xyz +// TEXCOORD 6 xyz 7 NONE float xyz +// TEXCOORD 7 xyz 8 NONE float xyz +// TEXCOORD 8 x 9 NONE uint x +// SV_IsFrontFace 0 x 10 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[216], immediateIndexed +dcl_constantbuffer CB1[4093], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[14], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_comparison +dcl_sampler s3, mode_default +dcl_sampler s4, mode_default +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_sampler s7, mode_default +dcl_resource_structured t0, 4 +dcl_resource_structured t1, 16 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture3d (float,float,float,float) t4 +dcl_resource_texture3d (float,float,float,float) t5 +dcl_resource_texture3d (float,float,float,float) t6 +dcl_resource_texture3d (float,float,float,float) t7 +dcl_resource_texture3d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texturecube (float,float,float,float) t17 +dcl_resource_texture2d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_input_ps_siv linear noperspective v0.xyw, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyz +dcl_input_ps linear v4.xyzw +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps linear v7.xyz +dcl_input_ps linear v8.xyz +dcl_input_ps constant v9.x +dcl_input_ps_sgv constant v10.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 32 +add r0.xyz, -v2.xyzx, cb0[44].xyzx +mov r1.x, cb0[0].z +mov r1.y, cb0[1].z +mov r1.z, cb0[2].z +add r2.xyz, -r0.xyzx, r1.xyzx +mad r0.xyz, cb0[86].wwww, r2.xyzx, r0.xyzx +dp3 r0.w, r0.xyzx, r0.xyzx +max r1.w, r0.w, l(9.999999939E-09) +rsq r1.w, r1.w +mul r2.xyz, r0.xyzx, r1.wwww +ishl r2.w, v9.x, l(4) +and r3.x, l(16), cb1[r2.w + 4].w +if_nz r3.x + iadd r3.x, l(2), cb1[r2.w + 5].x + ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r3.x, l(12), t1.xxxx + ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.y, cb1[r2.w + 5].x, l(12), t1.xxxx +else + mov r3.xy, cb1[r2.w + 3].zxzz +endif +sample_b_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t13.xyzw, s4, cb0[108].x +sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t14.xyzw, s5, cb0[108].x +add r3.z, -r5.w, l(1.000000) +mul r4.xyzw, r4.xyzw, cb5[5].xyzw +mul r6.xyz, r4.xyzx, cb5[4].zzzz +dp3 r3.w, r6.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r6.xyz, r4.xyzx, cb5[4].zzzz, -r3.wwww +mad r6.xyz, cb5[4].wwww, r6.xyzx, r3.wwww +sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, v1.xyxx, t15.xywz, s6, cb0[108].x +mul r7.x, r7.x, r7.z +mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r3.w, r7.xyxx, r7.xyxx +min r3.w, r3.w, l(1.000000) +add r3.w, -r3.w, l(1.000000) +sqrt r3.w, r3.w +max r3.w, r3.w, l(1.000000017E-16) +mul r7.xy, r7.xyxx, cb5[0].wwww +sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, v1.xyxx, t16.xyzw, s7, cb0[108].x +add r9.xz, -r3.yyxy, v2.xxzx +mov r9.y, l(0.0000610351562) +dp3 r3.x, r9.xyzx, r9.xyzx +rsq r3.x, r3.x +mul r9.xyz, r3.xxxx, r9.xyzx +mul r10.xyz, v3.zxyz, v4.yzxy +mad r10.xyz, v3.yzxy, v4.zxyz, -r10.xyzx +mul r10.xyz, r10.xyzx, v4.wwww +mul r7.yzw, r7.yyyy, r10.xxyz +mad r7.xyz, r7.xxxx, v4.xyzx, r7.yzwy +mad r3.xyw, r3.wwww, v3.xyxz, r7.xyxz +mad r6.w, cb5[1].y, l(2.000000), l(-1.000000) +movc r6.w, v10.x, l(1.000000), r6.w +dp3 r7.x, r3.xywx, r3.xywx +max r7.x, r7.x, l(1.175494351E-38) +rsq r7.x, r7.x +mul r3.xyw, r3.xyxw, r7.xxxx +mul r7.xyz, r6.wwww, r3.xywx +dp3 r8.w, v3.xyzx, v3.xyzx +rsq r8.w, r8.w +mul r11.xyz, r8.wwww, v3.xyzx +mul r11.xyz, r6.wwww, r11.xyzx +ftou r12.xy, v0.xyxx +add r8.w, l(1.000000), -cb0[111].x +mad r8.w, cb0[198].w, r8.w, cb0[111].x +mul r8.w, r8.w, cb0[109].x +lt r9.w, cb0[187].y, l(0.500000) +if_nz r9.w + mad r13.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx + add r13.xyz, -r13.xyzx, v2.xzyx + max r9.w, |r13.y|, |r13.x| + add r9.w, r9.w, l(-464.000000) + mul_sat r9.w, r9.w, l(0.031250) + add r10.w, |r13.z|, l(-208.000000) + mul_sat r10.w, r10.w, l(0.031250) + max r9.w, r9.w, r10.w + ne r10.w, l(0.000000), cb0[210].w + lt r11.w, r9.w, l(1.000000) + and r10.w, r10.w, r11.w + if_nz r10.w + mad r13.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r13.xyz, -r13.xyzx, v2.xzyx + max r10.w, |r13.y|, |r13.x| + add r10.w, r10.w, l(-29.000000) + mul_sat r10.w, r10.w, l(0.500000) + add r11.w, |r13.z|, l(-13.000000) + mul_sat r11.w, r11.w, l(0.500000) + max r10.w, r10.w, r11.w + lt r11.w, r10.w, l(1.000000) + if_nz r11.w + mad r13.xyz, v2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r14.xyz, r13.xyzx, cb0[211].xyzx + round_ni r14.xyz, r14.xyzx + mad r13.xyz, r13.xyzx, cb0[211].xyzx, -r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r14.xyw, r13.xyzx, t4.yzwx, s1, l(0.000000) + add r11.w, -r10.w, l(1.000000) + mul r15.x, l(0.500000), cb0[211].y + mad r15.y, -cb0[211].y, l(0.500000), l(1.000000) + max r13.y, r13.y, r15.x + min r13.y, r15.y, r13.y + mul r13.w, r13.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r13.xwzx, t5.xyzw, s0, l(0.000000) + mad r13.y, r15.w, r11.w, r9.w + add r16.xyz, r13.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s0, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r14.yyyy, r16.xyzx + mov r16.w, r14.y + mul r16.xyzw, r11.wwww, r16.xyzw + add r13.xzw, r13.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t5.xwyz, s0, l(0.000000) + mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r17.xyz, r14.xxxx, r13.xzwx + mov r17.w, r14.x + mul r17.xyzw, r11.wwww, r17.xyzw + mad r13.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r14.xyz, r14.wwww, r13.xzwx + mul r14.xyzw, r11.wwww, r14.xyzw + else + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r13.y, r9.w + endif + mad r13.xzw, cb0[6].xxzy, -cb0[212].zzzz, cb0[210].xxzy + add r13.xzw, -r13.xxzw, v2.xxzy + max r11.w, |r13.z|, |r13.x| + add r11.w, r11.w, l(-116.000000) + mul_sat r11.w, r11.w, l(0.125000) + add r13.x, |r13.w|, l(-52.000000) + mul_sat r13.x, r13.x, l(0.125000) + max r11.w, r11.w, r13.x + lt r13.x, r11.w, l(1.000000) + if_nz r13.x + mad r13.xzw, v2.xxyz, l(0.500000, 0.000000, 0.500000, 0.500000), l(0.500000, 0.000000, 0.500000, 0.500000) + mul r15.xyz, r13.xzwx, cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r15.xyz, r13.xzwx, cb0[211].xyzx, -r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r15.xyzx, t6.yzwx, s1, l(0.000000) + add r13.x, -r11.w, l(1.000000) + mul r10.w, r10.w, r13.x + mul r13.x, l(0.500000), cb0[211].y + mad r13.z, -cb0[211].y, l(0.500000), l(1.000000) + max r13.x, r13.x, r15.y + min r13.x, r13.z, r13.x + mul r15.w, r13.x, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r15.xwzx, t7.xyzw, s0, l(0.000000) + mad r13.y, r19.w, r10.w, r13.y + add r13.xzw, r15.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t7.xwyz, s0, l(0.000000) + mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r20.xyz, r18.yyyy, r13.xzwx + mov r20.w, r18.y + mad r16.xyzw, r20.xyzw, r10.wwww, r16.xyzw + add r13.xzw, r15.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t7.xwyz, s0, l(0.000000) + mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r15.xyz, r18.xxxx, r13.xzwx + mov r15.w, r18.x + mad r17.xyzw, r15.xyzw, r10.wwww, r17.xyzw + mad r13.xzw, r19.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r18.xyz, r18.wwww, r13.xzwx + mad r14.xyzw, r18.xyzw, r10.wwww, r14.xyzw + endif + lt r10.w, l(0.000000), r11.w + if_nz r10.w + mad r13.xzw, v2.xxyz, l(0.125000, 0.000000, 0.125000, 0.125000), l(0.500000, 0.000000, 0.500000, 0.500000) + mul r15.xyz, r13.xzwx, cb0[211].xyzx + mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r13.xzw, r13.xxzw, cb0[211].xxyz, -r15.xxyz + mad r15.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r13.xzw, r18.xxyz, r13.xxzw + min r19.xyz, r15.xyzx, r13.xzwx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r19.xyzx, t8.yzwx, s1, l(0.000000) + add r10.w, -r9.w, l(1.000000) + mul r10.w, r10.w, r11.w + max r11.w, r18.y, r19.y + min r11.w, r15.y, r11.w + mul r19.w, r11.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r19.xwzx, t9.xyzw, s0, l(0.000000) + add r13.xzw, r19.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t9.xwyz, s0, l(0.000000) + mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r18.xyz, r20.yyyy, r13.xzwx + mov r18.w, r20.y + mad r16.xyzw, r18.xyzw, r10.wwww, r16.xyzw + add r13.xzw, r19.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t9.xwyz, s0, l(0.000000) + mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r18.xyz, r20.xxxx, r13.xzwx + mov r18.w, r20.x + mad r17.xyzw, r18.xyzw, r10.wwww, r17.xyzw + mad r13.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r20.xyz, r20.wwww, r13.xzwx + mad r14.xyzw, r20.xyzw, r10.wwww, r14.xyzw + mad r13.y, r15.w, r10.w, r13.y + endif + mad_sat r10.w, r13.y, l(2.000000), l(-1.000000) + add r13.x, -r9.w, r10.w + add r9.w, r9.w, r10.w + mul r13.y, r9.w, l(0.500000) + else + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r13.xy, l(0,1.000000,0,0) + endif + mul r15.xyzw, r13.yyyx, cb0[213].xyzw + mad r15.y, r15.w, l(0.500000), r15.y + mul r13.zw, r13.yyyx, cb0[213].wwwy + mad r15.w, r13.w, l(0.375000), r13.z + add r14.xyzw, r14.xyzw, r15.xyzw + mul r15.xyzw, r13.yyyx, cb0[214].xyzw + mad r15.y, r15.w, l(0.500000), r15.y + mul r13.zw, r13.yyyx, cb0[214].wwwy + mad r15.w, r13.w, l(0.375000), r13.z + add r15.xyzw, r15.xyzw, r17.xyzw + mul r17.xyzw, r13.yyyx, cb0[215].xyzw + mad r17.y, r17.w, l(0.500000), r17.y + mul r13.xy, r13.yxyy, cb0[215].wyww + mad r17.w, r13.y, l(0.375000), r13.x + add r13.xyzw, r16.xyzw, r17.xyzw + mov r7.w, l(1.000000) + dp4 r16.x, r14.xyzw, r7.xyzw + dp4 r16.y, r15.xyzw, r7.xyzw + dp4 r16.z, r13.xyzw, r7.xyzw + max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r17.xyz, r8.wwww, r16.xyzx + mul r18.xyz, r15.xyzx, l(0.715200, 0.715200, 0.715200, 0.000000) + mad r18.xyz, r14.xyzx, l(0.212600, 0.212600, 0.212600, 0.000000), r18.xyzx + mad r18.xyz, r13.xyzx, l(0.072200, 0.072200, 0.072200, 0.000000), r18.xyzx + dp3 r7.w, r18.xyzx, r18.xyzx + max r7.w, r7.w, l(1.175494351E-38) + rsq r7.w, r7.w + mul r18.xyz, r7.wwww, r18.xyzx + mov r18.y, |r18.y| + mov r18.w, l(1.000000) + dp4 r14.x, r14.xyzw, r18.xyzw + dp4 r14.y, r15.xyzw, r18.xyzw + dp4 r14.z, r13.xyzw, r18.xyzw + max r13.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + ge r7.w, r17.y, r17.z + and r7.w, r7.w, l(0x3f800000) + mov r14.xy, r17.zyzz + mov r14.zw, l(0,0,-1.000000,0.666666687) + mad r15.xy, r16.yzyy, r8.wwww, -r14.xyxx + mov r15.zw, l(0,0,1.000000,-1.000000) + mad r14.xyzw, r7.wwww, r15.xyzw, r14.xyzw + ge r7.w, r17.x, r14.x + and r7.w, r7.w, l(0x3f800000) + mov r15.xyz, r14.xywx + mov r15.w, r17.x + mov r14.xyw, r15.wywx + add r14.xyzw, -r15.xyzw, r14.xyzw + mad r14.xyzw, r7.wwww, r14.xyzw, r15.xyzw + min r7.w, r14.y, r14.w + add r7.w, -r7.w, r14.x + add r9.w, -r14.y, r14.w + mad r10.w, r7.w, l(6.000000), l(0.000100) + div r9.w, r9.w, r10.w + add r9.w, r9.w, r14.z + frc r9.w, |r9.w| + add r10.w, r14.x, l(0.000100) + div r7.w, r7.w, r10.w + add r15.xyzw, r9.wwww, l(-0.500000, 1.000000, 0.666666687, 0.333333343) + add r9.w, |r15.x|, l(-0.450000) + mul_sat r9.w, r9.w, l(-10.000001) + mad r10.w, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r10.w + mad r9.w, r9.w, l(-0.350000), l(0.700000) + mov_sat r14.x, r14.x + mul r9.w, r9.w, r14.x + min r7.w, r7.w, r9.w + add r9.w, -r7.w, l(2.000000) + div r9.w, l(2.000000), r9.w + frc r14.xyz, r15.yzwy + mad r14.xyz, r14.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) + add_sat r14.xyz, |r14.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) + add r14.xyz, r14.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) + mad r14.xyz, r7.wwww, r14.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r14.xyz, r9.wwww, r14.xyzx + max r7.w, r13.y, r13.x + max r7.w, r13.z, r7.w + mul r8.w, r8.w, r7.w + mov r7.w, l(1.000000) +else + mov r18.xyz, l(0,0,0,0) + mov r17.xyz, l(1.000000,1.000000,1.000000,0) + mov r14.xyz, cb0[188].xyzx + mov r7.w, l(0) +endif +dp3 r13.x, v4.xyzx, r2.xyzx +dp3 r13.y, r10.xyzx, r2.xyzx +dp3 r13.z, v3.xyzx, r2.xyzx +dp3 r9.w, r13.xyzx, r13.xyzx +max r9.w, r9.w, l(1.175494351E-38) +rsq r9.w, r9.w +mul r10.xyz, r9.wwww, r13.xyzx +mad r13.xy, v1.xyxx, cb5[13].xyxx, cb5[13].zwzz +deriv_rtx_coarse r13.zw, v1.xxxy +deriv_rty_coarse r15.xy, v1.xyxx +min r9.w, l(20.000000), cb5[11].x +div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w +max r10.z, r10.z, l(0.001000) +div r10.xy, r10.xyxx, r10.zzzz +mul r10.xy, r10.xyxx, -cb5[11].yyyy +mul r15.zw, r10.wwww, r10.xxxy +add r10.z, -r10.w, l(1.000000) +add r9.w, r9.w, l(1.000000) +mul r13.zw, r13.zzzw, cb0[108].yyyy +mul r15.xy, r15.xyxx, cb0[108].yyyy +mov r16.xy, r15.zwzz +mov r16.zw, l(0,0,0,0) +mov r11.w, r10.z +mov r14.w, l(0) +mov r17.w, l(1.000000) +mov r18.w, l(0) +mov r19.x, l(0) +loop + lt r19.y, r19.x, r9.w + if_nz r19.y + add r19.yz, r13.xxyx, r16.xxyx + sample_d_indexable(texture2d)(float,float,float,float) r19.y, r19.yzyy, t10.yxzw, s3, r13.zwzz, r15.xyxx + lt r19.z, r11.w, r19.y + if_nz r19.z + mov r18.w, r19.y + break + endif + add r19.x, r19.x, l(1.000000) + mad r19.zw, r10.xxxy, r10.wwww, r16.xxxy + add r20.x, -r10.w, r11.w + mov r16.zw, r16.xxxy + mov r14.w, r19.y + mov r17.w, r11.w + mov r11.w, r20.x + mov r16.xy, r19.zwzz + continue + else + mov r18.w, r14.w + break + endif +endloop +add r9.w, r14.w, -r17.w +add r10.x, r14.w, -r18.w +add r10.x, r11.w, r10.x +add r10.x, -r17.w, r10.x +div r9.w, r9.w, r10.x +mad r10.xy, r15.zwzz, r9.wwww, r16.zwzz +add r10.xy, r13.xyxx, r10.xyxx +sample_b_indexable(texture2d)(float,float,float,float) r9.w, r10.xyxx, t10.yzwx, s3, cb0[108].x +add r10.x, -v2.y, cb1[r2.w + 12].z +add r10.x, r10.x, l(0.200000) +mul_sat r10.x, r10.x, l(2.85714269) +mad r10.y, r10.x, l(-2.000000), l(3.000000) +mul r10.x, r10.x, r10.x +mul r10.x, r10.x, r10.y +mul r10.x, r10.x, cb1[r2.w + 12].y +max r10.x, r10.x, cb1[r2.w + 12].w +add r10.y, r10.x, cb1[r2.w + 12].x +lt r10.y, l(0.010000), r10.y +if_nz r10.y + add r10.y, -r5.x, l(1.000000) + mul r13.xyz, r4.xyzx, r10.yyyy + dp3 r10.z, r13.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r10.z, r10.z, l(-0.350000) + mul_sat r10.z, r10.z, l(-4.000000) + mad r10.w, r10.z, l(-2.000000), l(3.000000) + mul r10.z, r10.z, r10.z + mul r11.w, r10.z, r10.w + mul r13.xyzw, v8.xyxz, l(1.000000, -1.000000, 1.000000, 1.000000) + movc r13.xyzw, cb1[r2.w + 4].wwww, r13.xyzw, v8.xzxy + mul r15.xyzw, r13.xyzw, cb0[196].zzzz + movc r16.yz, cb1[r2.w + 4].wwww, v7.zzyz, v7.yyzy + mov r16.x, v7.x + add r19.xyz, |r16.xyzx|, l(-0.200000, -0.200000, -0.200000, 0.000000) + mul r20.xyz, r19.xyzx, r19.xyzx + mul r19.xyz, r19.xyzx, r20.xyzx + max r19.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + dp3 r13.x, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + div r19.xyz, r19.xyzx, r13.xxxx + sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r15.zyzz, t11.xyzw, s4, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.zwzz, t11.xyzw, s4, cb0[108].x + mul r22.xyzw, r19.zzzz, r22.xyzw + mad r21.xyzw, r21.xyzw, r19.yyyy, r22.xyzw + sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.ywyy, t11.xyzw, s4, cb0[108].x + mad r19.xyzw, r22.xyzw, r19.xxxx, r21.xyzw + add r16.yw, -r19.wwww, l(0.000000, 0.800000, 0.000000, 0.450000) + mul r21.xyz, r7.yyxy, l(0.200000, 0.000000, 1.000000, 0.000000) + mad_sat r13.x, cb1[r2.w + 12].x, r10.y, r21.x + add r13.x, -r16.y, r13.x + mul_sat r13.x, r13.x, l(3.33333325) + mad r14.w, r13.x, l(-2.000000), l(3.000000) + mul r13.x, r13.x, r13.x + mul r13.x, r13.x, r14.w + mul_sat r10.y, r10.y, r10.x + add r10.y, -r16.w, r10.y + mul_sat r10.y, r10.y, l(1.53846145) + mad r14.w, r10.y, l(-2.000000), l(3.000000) + mul r10.y, r10.y, r10.y + mul r10.y, r10.y, r14.w + max r10.y, r10.y, r13.x + add r13.x, r5.x, l(-0.500000) + mul_sat r13.x, r13.x, l(4.000000) + mad r14.w, r13.x, l(-2.000000), l(3.000000) + mul r13.x, r13.x, r13.x + mul r13.x, r13.x, r14.w + add r5.w, -r5.w, l(0.199999988) + mul_sat r5.w, r5.w, l(-5.00000048) + mad r14.w, r5.w, l(-2.000000), l(3.000000) + mul r5.w, r5.w, r5.w + mul r5.w, r5.w, r14.w + mad r14.w, r5.w, r11.w, r13.x + min r14.w, r14.w, l(1.000000) + max r10.x, r10.x, cb1[r2.w + 12].x + mad r16.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mul r19.xyw, r15.yzyw, l(20.000000, 20.000000, 0.000000, 20.000000) + mul r22.xyz, r15.yzwy, l(34.345600, 34.345600, 34.345600, 0.000000) + mul r23.xyz, r20.xyzx, r20.xyzx + mul r23.xyz, r23.xyzx, r23.xyzx + mul r20.xyz, r20.xyzx, r23.xyzx + dp3 r17.w, r20.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + div r20.xyz, r20.xyzx, r17.wwww + round_ni r23.xyzw, r19.yxyw + mul r24.xyzw, r23.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r24.xyzw, r24.xyzw + add r25.xyzw, r24.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r17.w, r24.xyxx, r25.xyxx + add r21.xw, r17.wwww, r24.xxxy + mul r17.w, r21.w, r21.x + add r18.w, r21.w, r21.x + frc r17.w, r17.w + frc r26.w, r18.w + add r27.xyzw, r23.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) + mul r27.xyzw, r27.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r27.xyzw, r27.xyzw + add r28.xyzw, r27.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r18.w, r27.xyxx, r28.xyxx + add r21.xw, r18.wwww, r27.xxxy + mul r18.w, r21.w, r21.x + add r19.y, r21.w, r21.x + frc r24.x, r18.w + frc r24.y, r19.y + mad r18.w, r17.w, l(0.399999976), l(0.600000) + mul r19.y, r18.w, l(0.250000) + mad r23.xyzw, r15.zyzw, l(20.000000, 20.000000, 20.000000, 20.000000), -r23.xyzw + mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.xxxy + add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) + mul r23.x, r21.x, l(1.250000) + lt r20.w, r21.w, l(0.000000) + movc r20.w, r20.w, l(1.250000), l(0.750000) + mul r23.y, r20.w, r21.w + mad r17.w, cb0[102].x, l(3.000000), r17.w + frc r17.w, r17.w + add r21.xw, r17.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) + mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) + mad r25.xy, r21.xwxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r21.xw, r21.xxxw, r21.xxxw + mul r21.xw, r21.xxxw, r25.xxxy + mul r17.w, r21.w, r21.x + dp2 r20.w, r23.xyxx, r23.xyxx + sqrt r20.w, r20.w + mad r18.w, -r18.w, l(0.250000), r20.w + div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.y + mul_sat r18.w, r18.w, r20.w + mad r20.w, r18.w, l(-2.000000), l(3.000000) + mul r18.w, r18.w, r18.w + mul r18.w, r18.w, r20.w + ge r18.w, r18.w, l(0.001000) + and r18.w, r18.w, l(0x3f800000) + mul r26.z, r17.w, r18.w + div r21.xw, r23.xxxy, r19.yyyy + max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) + min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + ge r17.w, r26.z, l(0.001000) + and r17.w, r17.w, l(0x3f800000) + mul r21.xw, r17.wwww, r21.xxxw + mad r17.w, r24.x, l(0.250000), l(0.250000) + mul r26.xy, r17.wwww, r21.xwxx + dp2 r17.w, r24.zwzz, r25.zwzz + add r21.xw, r17.wwww, r24.zzzw + mul r17.w, r21.w, r21.x + add r18.w, r21.w, r21.x + frc r17.w, r17.w + frc r24.w, r18.w + dp2 r18.w, r27.zwzz, r28.zwzz + add r21.xw, r18.wwww, r27.zzzw + mul r18.w, r21.w, r21.x + add r19.y, r21.w, r21.x + frc r23.x, r18.w + frc r23.y, r19.y + mad r18.w, r17.w, l(0.399999976), l(0.600000) + mul r19.y, r18.w, l(0.250000) + mad r21.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.zzzw + add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) + mul r25.x, r21.x, l(1.250000) + lt r20.w, r21.w, l(0.000000) + movc r20.w, r20.w, l(1.250000), l(0.750000) + mul r25.y, r20.w, r21.w + mad r17.w, cb0[102].x, l(3.000000), r17.w + frc r17.w, r17.w + add r21.xw, r17.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) + mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) + mad r23.yz, r21.xxwx, l(0.000000, -2.000000, -2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000) + mul r21.xw, r21.xxxw, r21.xxxw + mul r21.xw, r21.xxxw, r23.yyyz + mul r17.w, r21.w, r21.x + dp2 r20.w, r25.xyxx, r25.xyxx + sqrt r20.w, r20.w + mad r18.w, -r18.w, l(0.250000), r20.w + div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.y + mul_sat r18.w, r18.w, r20.w + mad r20.w, r18.w, l(-2.000000), l(3.000000) + mul r18.w, r18.w, r18.w + mul r18.w, r18.w, r20.w + ge r18.w, r18.w, l(0.001000) + and r18.w, r18.w, l(0x3f800000) + mul r24.z, r17.w, r18.w + div r21.xw, r25.xxxy, r19.yyyy + max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) + min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + ge r17.w, r24.z, l(0.001000) + and r17.w, r17.w, l(0x3f800000) + mul r21.xw, r17.wwww, r21.xxxw + mad r17.w, r23.x, l(0.250000), l(0.250000) + mul r24.xy, r17.wwww, r21.xwxx + round_ni r19.xy, r19.xwxx + mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r23.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r17.w, r21.xwxx, r23.xyxx + add r21.xw, r17.wwww, r21.xxxw + mul r17.w, r21.w, r21.x + add r18.w, r21.w, r21.x + frc r17.w, r17.w + frc r23.w, r18.w + add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) + mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r25.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r18.w, r21.xwxx, r25.xyxx + add r21.xw, r18.wwww, r21.xxxw + mul r18.w, r21.w, r21.x + add r19.w, r21.w, r21.x + frc r25.x, r18.w + frc r25.y, r19.w + mad r18.w, r17.w, l(0.399999976), l(0.600000) + mul r19.w, r18.w, l(0.250000) + mad r19.xy, r15.ywyy, l(20.000000, 20.000000, 0.000000, 0.000000), -r19.xyxx + mad r21.xw, r25.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx + add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) + mul r27.x, r19.x, l(1.250000) + lt r19.x, r19.y, l(0.000000) + movc r19.x, r19.x, l(1.250000), l(0.750000) + mul r27.y, r19.x, r19.y + mad r17.w, cb0[102].x, l(3.000000), r17.w + frc r17.w, r17.w + add r19.xy, r17.wwww, l(-0.200000, -0.850000, 0.000000, 0.000000) + mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) + mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.xy, r19.xyxx, r19.xyxx + mul r19.xy, r19.xyxx, r21.xwxx + mul r17.w, r19.y, r19.x + dp2 r19.x, r27.xyxx, r27.xyxx + sqrt r19.x, r19.x + mad r18.w, -r18.w, l(0.250000), r19.x + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.w + mul_sat r18.w, r18.w, r19.x + mad r19.x, r18.w, l(-2.000000), l(3.000000) + mul r18.w, r18.w, r18.w + mul r18.w, r18.w, r19.x + ge r18.w, r18.w, l(0.001000) + and r18.w, r18.w, l(0x3f800000) + mul r23.z, r17.w, r18.w + div r19.xy, r27.xyxx, r19.wwww + max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r17.w, r23.z, l(0.001000) + and r17.w, r17.w, l(0x3f800000) + mul r19.xy, r17.wwww, r19.xyxx + mad r17.w, r25.x, l(0.250000), l(0.250000) + mul r23.xy, r17.wwww, r19.xyxx + mul r24.xyzw, r20.zzzz, r24.xyzw + mad r24.xyzw, r26.xyzw, r20.yyyy, r24.xyzw + mad r23.xyzw, r23.xyzw, r20.xxxx, r24.xyzw + round_ni r24.xyzw, r22.yxyz + mul r25.xyzw, r24.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r25.xyzw, r25.xyzw + add r26.xyzw, r25.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r17.w, r25.xyxx, r26.xyxx + add r19.xy, r17.wwww, r25.xyxx + mul r17.w, r19.y, r19.x + add r18.w, r19.y, r19.x + frc r17.w, r17.w + frc r27.w, r18.w + add r28.xyzw, r24.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) + mul r28.xyzw, r28.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r28.xyzw, r28.xyzw + add r29.xyzw, r28.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r18.w, r28.xyxx, r29.xyxx + add r19.xy, r18.wwww, r28.xyxx + mul r18.w, r19.y, r19.x + add r19.x, r19.y, r19.x + frc r25.x, r18.w + frc r25.y, r19.x + mad r18.w, r17.w, l(0.399999976), l(0.600000) + mul r19.x, r18.w, l(0.250000) + mad r24.xyzw, r15.xyzw, l(34.345600, 34.345600, 34.345600, 34.345600), -r24.xyzw + mad r19.yw, r25.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.xxxy + add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) + mul r24.x, r19.y, l(1.250000) + lt r15.x, r19.w, l(0.000000) + movc r15.x, r15.x, l(1.250000), l(0.750000) + mul r24.y, r15.x, r19.w + mad r15.x, cb0[102].x, l(4.345600), r17.w + frc r15.x, r15.x + add r19.yw, r15.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) + mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) + mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.yw, r19.yyyw, r19.yyyw + mul r19.yw, r19.yyyw, r21.xxxw + mul r15.x, r19.w, r19.y + dp2 r17.w, r24.xyxx, r24.xyxx + sqrt r17.w, r17.w + mad r17.w, -r18.w, l(0.250000), r17.w + div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.x + mul_sat r17.w, r17.w, r18.w + mad r18.w, r17.w, l(-2.000000), l(3.000000) + mul r17.w, r17.w, r17.w + mul r17.w, r17.w, r18.w + ge r17.w, r17.w, l(0.001000) + and r17.w, r17.w, l(0x3f800000) + mul r27.z, r15.x, r17.w + div r19.xy, r24.xyxx, r19.xxxx + max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r15.x, r27.z, l(0.001000) + and r15.x, r15.x, l(0x3f800000) + mul r19.xy, r15.xxxx, r19.xyxx + mad r15.x, r25.x, l(0.250000), l(0.250000) + mul r27.xy, r15.xxxx, r19.xyxx + dp2 r15.x, r25.zwzz, r26.zwzz + add r19.xy, r15.xxxx, r25.zwzz + mul r15.x, r19.y, r19.x + add r17.w, r19.y, r19.x + frc r15.x, r15.x + frc r25.w, r17.w + dp2 r17.w, r28.zwzz, r29.zwzz + add r19.xy, r17.wwww, r28.zwzz + mul r17.w, r19.y, r19.x + add r18.w, r19.y, r19.x + frc r19.x, r17.w + frc r19.y, r18.w + mad r17.w, r15.x, l(0.399999976), l(0.600000) + mul r18.w, r17.w, l(0.250000) + mad r19.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.zzzw + add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) + mul r24.x, r19.y, l(1.250000) + lt r19.y, r19.w, l(0.000000) + movc r19.y, r19.y, l(1.250000), l(0.750000) + mul r24.y, r19.y, r19.w + mad r15.x, cb0[102].x, l(4.345600), r15.x + frc r15.x, r15.x + add r19.yw, r15.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) + mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) + mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.yw, r19.yyyw, r19.yyyw + mul r19.yw, r19.yyyw, r21.xxxw + mul r15.x, r19.w, r19.y + dp2 r19.y, r24.xyxx, r24.xyxx + sqrt r19.y, r19.y + mad r17.w, -r17.w, l(0.250000), r19.y + div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w + mul_sat r17.w, r17.w, r19.y + mad r19.y, r17.w, l(-2.000000), l(3.000000) + mul r17.w, r17.w, r17.w + mul r17.w, r17.w, r19.y + ge r17.w, r17.w, l(0.001000) + and r17.w, r17.w, l(0x3f800000) + mul r25.z, r15.x, r17.w + div r19.yw, r24.xxxy, r18.wwww + max r19.yw, r19.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) + min r19.yw, r19.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) + ge r15.x, r25.z, l(0.001000) + and r15.x, r15.x, l(0x3f800000) + mul r19.yw, r15.xxxx, r19.yyyw + mad r15.x, r19.x, l(0.250000), l(0.250000) + mul r25.xy, r15.xxxx, r19.ywyy + round_ni r19.xy, r22.xzxx + mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r22.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r15.x, r21.xwxx, r22.xyxx + add r21.xw, r15.xxxx, r21.xxxw + mul r15.x, r21.w, r21.x + add r17.w, r21.w, r21.x + frc r15.x, r15.x + frc r22.w, r17.w + add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) + mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r24.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r17.w, r21.xwxx, r24.xyxx + add r21.xw, r17.wwww, r21.xxxw + mul r17.w, r21.w, r21.x + add r18.w, r21.w, r21.x + frc r24.x, r17.w + frc r24.y, r18.w + mad r17.w, r15.x, l(0.399999976), l(0.600000) + mul r18.w, r17.w, l(0.250000) + mad r19.xy, r15.ywyy, l(34.345600, 34.345600, 0.000000, 0.000000), -r19.xyxx + mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx + add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) + mul r26.x, r19.x, l(1.250000) + lt r19.x, r19.y, l(0.000000) + movc r19.x, r19.x, l(1.250000), l(0.750000) + mul r26.y, r19.x, r19.y + mad r15.x, cb0[102].x, l(4.345600), r15.x + frc r15.x, r15.x + add r19.xy, r15.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) + mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) + mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.xy, r19.xyxx, r19.xyxx + mul r19.xy, r19.xyxx, r21.xwxx + mul r15.x, r19.y, r19.x + dp2 r19.x, r26.xyxx, r26.xyxx + sqrt r19.x, r19.x + mad r17.w, -r17.w, l(0.250000), r19.x + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w + mul_sat r17.w, r17.w, r19.x + mad r19.x, r17.w, l(-2.000000), l(3.000000) + mul r17.w, r17.w, r17.w + mul r17.w, r17.w, r19.x + ge r17.w, r17.w, l(0.001000) + and r17.w, r17.w, l(0x3f800000) + mul r22.z, r15.x, r17.w + div r19.xy, r26.xyxx, r18.wwww + max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r15.x, r22.z, l(0.001000) + and r15.x, r15.x, l(0x3f800000) + mul r19.xy, r15.xxxx, r19.xyxx + mad r15.x, r24.x, l(0.250000), l(0.250000) + mul r22.xy, r15.xxxx, r19.xyxx + mul r24.xyzw, r20.zzzz, r25.xyzw + mad r24.xyzw, r27.xyzw, r20.yyyy, r24.xyzw + mad r20.xyzw, r22.xyzw, r20.xxxx, r24.xyzw + max r19.xy, r20.zwzz, r23.zwzz + mad r20.zw, -r14.wwww, r10.xxxx, l(0.000000, 0.000000, 1.000000, 1.010000) + add r15.x, r19.y, l(-0.100000) + ge r15.x, r15.x, r20.z + and r15.x, r15.x, l(0x3f800000) + mul r15.x, r15.x, r19.x + ge r2.w, cb1[r2.w + 12].x, l(0.010000) + and r2.w, r2.w, l(0x3f800000) + mul r2.w, r2.w, r15.x + lt r15.x, l(0.001000), r2.w + add r19.xy, r20.xyxx, r23.xyxx + mul r17.w, cb0[102].x, cb0[196].z + mul r20.y, r17.w, l(0.750000) + dp2 r17.w, r16.xzxx, r16.xzxx + max r17.w, r17.w, l(1.175494351E-38) + rsq r17.w, r17.w + mul r16.xz, r16.xxzx, r17.wwww + add r16.xz, |r16.xxzx|, l(-0.200000, 0.000000, -0.200000, 0.000000) + mul r21.xw, r16.xxxz, r16.xxxz + mul r16.xz, r16.xxzx, r21.xxwx + max r16.xz, r16.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + dp2 r17.w, r16.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) + div r16.xz, r16.xxzx, r17.wwww + sample_b_indexable(texture2d)(float,float,float,float) r22.xyz, r15.zwzz, t12.xyzw, s4, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r15.yzw, r15.ywyy, t12.wxyz, s4, cb0[108].x + mul r15.yzw, r16.xxxx, r15.yyzw + mad r15.yzw, r22.xxyz, r16.zzzz, r15.yyzw + movc r16.yw, r15.xxxx, r19.xxxy, r16.yyyw + mad r15.xy, r15.yzyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mov r20.x, l(0) + mad r22.xyzw, r13.zwyw, cb0[196].zzzz, r20.xyxy + sample_b_indexable(texture2d)(float,float,float,float) r13.y, r22.xyxx, t12.xwyz, s4, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r13.z, r22.zwzz, t12.xywz, s4, cb0[108].x + mul r13.z, r16.x, r13.z + mad r13.y, r13.y, r16.z, r13.z + mad r13.yz, r15.xxyx, r13.yyyy, r16.yywy + ge r13.w, r19.z, r20.w + and r13.w, r13.w, l(0x3f800000) + max r2.w, r2.w, r13.w + add r13.w, -r15.w, l(1.000000) + mad r10.x, r14.w, r10.x, -r13.w + mul_sat r10.x, r10.x, l(9.999998) + mad r13.w, r10.x, l(-2.000000), l(3.000000) + mul r10.x, r10.x, r10.x + mul r10.x, r10.x, r13.w + max r2.w, r2.w, r10.x + mad r15.xy, -r7.zyzz, l(1.000000, 0.000000, 0.000000, 0.000000), r21.yzyy + dp2 r10.x, r15.xyxx, r15.xyxx + lt r13.w, l(0.0000610351562), r10.x + rsq r10.x, r10.x + mul r15.xy, r10.xxxx, r15.xyxx + mov r15.xy, -r15.xyxx + movc r16.z, r13.w, r15.x, l(-1.000000) + and r16.y, r13.w, r15.y + min r10.x, r3.z, l(0.050000) + add r13.w, -r3.z, r10.x + mad r13.w, r2.w, r13.w, r3.z + mad r10.z, -r10.w, r10.z, l(1.000000) + mul r10.z, r10.z, r10.y + mad r5.w, -r5.w, r11.w, l(1.000000) + mul r5.w, r5.w, r10.z + mad r5.w, r5.w, l(-0.500000), l(1.000000) + mov r16.x, l(0) + mad r3.xyw, -r3.xyxw, r6.wwww, r16.zxzy + mad r3.xyw, r13.yyyy, r3.xyxw, r7.xyxz + mul r15.xyz, r7.zxyz, r16.xyzx + mad r15.xyz, r7.yzxy, r16.yzxy, -r15.xyzx + add r15.xyz, -r3.xywx, r15.xyzx + mad r3.xyw, r13.zzzz, r15.xyxz, r3.xyxw + dp3 r6.w, r3.xywx, r3.xywx + rsq r6.w, r6.w + mad r3.xyw, r3.xyxw, r6.wwww, -r7.xyxz + mad r3.xyw, r2.wwww, r3.xyxw, r7.xyxz + dp3 r6.w, r3.xywx, r3.xywx + rsq r6.w, r6.w + mul r3.xyw, r3.xyxw, r6.wwww + mul r6.w, r11.w, r10.y + mad r6.w, -r6.w, l(0.200000), r13.w + min r10.y, r13.w, l(0.200000) + max r3.z, r6.w, r10.y + mul r6.xyz, r5.wwww, r6.xyzx + dp3 r6.w, r4.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r6.w, r6.w, l(-0.700000) + mul_sat r6.w, r6.w, l(-2.50000024) + mad r10.y, r6.w, l(-2.000000), l(3.000000) + mul r6.w, r6.w, r6.w + mul r6.w, r6.w, r10.y + mad r6.w, r6.w, l(0.500000), l(1.000000) + mul r10.y, r13.x, r2.w + mad r13.xyz, r4.xyzx, r6.wwww, -r4.xyzx + mad r10.yzw, r10.yyyy, r13.xxyz, r4.xxyz + mul r4.xyz, r5.wwww, r10.yzwy +else + mov r3.xyw, r7.xyxz + mov r10.x, l(0.010000) + mov r2.w, l(0) +endif +mul r5.w, r5.y, l(0.040000) +mad r6.w, -r5.x, l(0.960000), l(0.960000) +mul r10.yzw, r4.xxyz, r6.wwww +mad r13.xyz, -r5.yyyy, l(0.040000, 0.040000, 0.040000, 0.000000), r4.xyzx +mad r13.xyz, r5.xxxx, r13.xyzx, r5.wwww +mul r6.xyz, r6.wwww, r6.xyzx +mul r5.y, r3.z, r3.z +max r5.y, r5.y, l(0.00781250000) +max r5.w, v5.z, l(9.999999939E-09) +div r15.xy, v5.xyxx, r5.wwww +max r5.w, v6.z, l(9.999999939E-09) +div r15.zw, v6.xxxy, r5.wwww +add r15.xy, -r15.zwzz, r15.xyxx +mul r16.xy, r15.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r16.xy, |r16.xyxx| +sqrt r16.xy, r16.xyxx +mov r15.z, -r15.y +lt r15.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xxxz +lt r15.xz, r15.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r15.xy, -r15.ywyy, r15.xzxx +itof r15.xy, r15.xyxx +mul r15.xy, r15.xyxx, r16.xyxx +mad o1.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +lt r5.w, l(0.500000), r2.w +movc o1.w, r5.w, l(0.700000), l(0.400000) +add r15.xyz, cb0[197].xyzx, cb3[0].xyzx +mad r15.xyz, cb0[187].wwww, r15.xyzx, -cb3[0].xyzx +mov r15.w, l(0.0000610351562) +dp3 r5.w, r15.xzwx, r15.xzwx +rsq r5.w, r5.w +mul r16.xyz, r5.wwww, r15.xwzx +add r19.xyz, cb0[191].xyzx, -cb3[3].xyzx +mad r19.xyz, cb0[198].yyyy, r19.xyzx, cb3[3].xyzx +add r5.w, l(1.000000), -cb3[3].w +mad r5.w, cb0[198].w, r5.w, cb3[3].w +mul r20.xyz, r5.wwww, r19.xyzx +mov r12.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r21.xy, r12.xyzz, t3.xyzw +add r11.w, r21.x, l(-1.000000) +mad r11.w, cb4[34].x, r11.w, l(1.000000) +add r12.z, -r11.w, l(1.000000) +mad r11.w, cb0[187].z, r12.z, r11.w +dp3 r12.z, r7.xyzx, r15.xyzx +mul r21.xzw, r6.xxyz, cb0[186].zzzz +mul r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000) +dp3 r13.w, r10.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) +dp2 r14.w, cb0[6].xzxx, cb0[6].xzxx +rsq r14.w, r14.w +mul r23.xy, r14.wwww, cb0[6].xzxx +dp2 r14.w, r16.xzxx, r23.xyxx +mov_sat r14.w, -r14.w +add r23.xy, l(1.000000, 1.000000, 0.000000, 0.000000), -cb0[198].xyxx +mad r15.w, r12.z, l(0.500000), l(-1.000000) +mad r15.w, -r12.z, r15.w, -r12.z +add r16.w, l(0.750000), -|cb0[6].y| +add_sat r16.w, r16.w, r16.w +mad r17.w, r16.w, l(-2.000000), l(3.000000) +mul r16.w, r16.w, r16.w +mul r16.w, r16.w, r17.w +mul r16.w, r14.w, r16.w +mul r16.w, r23.x, r16.w +add r15.w, r15.w, l(0.500000) +mad r12.z, r16.w, r15.w, r12.z +mad r12.z, cb0[197].w, cb0[198].x, r12.z +max r12.z, r12.z, l(-1.000000) +min r12.z, r12.z, l(1.000000) +add r12.z, r12.z, l(-0.250000) +mul r12.z, r12.z, l(1.33333337) +max r12.z, r12.z, l(0.000000) +mad r15.w, r12.z, l(-2.000000), l(3.000000) +mul r12.z, r12.z, r12.z +mul r12.z, r12.z, r15.w +dp3 r15.w, r7.xyzx, cb0[6].xyzx +add r15.w, r15.w, l(-0.250000) +mul_sat r15.w, r15.w, l(1.33333337) +mad r16.w, r15.w, l(-2.000000), l(3.000000) +mul r15.w, r15.w, r15.w +mul r15.w, r15.w, r16.w +mul r16.w, r5.z, r21.y +min r17.w, r5.z, r21.y +min r18.w, r12.z, r17.w +mul r19.w, r15.w, r16.w +dp3 r20.w, r7.xyzx, cb0[192].xyzx +add_sat r20.w, r20.w, cb0[193].x +mad r20.w, r20.w, cb0[193].y, cb0[193].z +mul r22.w, r18.w, cb0[187].y +add r24.xyz, -r14.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r24.xyz, r22.wwww, r24.xyzx, r14.xyzx +mul r24.xyz, r20.wwww, r24.xyzx +mad r20.w, r8.w, l(0.350000024), l(0.650000) +min r20.w, r20.w, l(1.500000) +max r25.xyz, r8.wwww, l(1.250000, 0.000000, 0.500000, 0.000000) +min r25.xyz, r25.xyzx, l(1.750000, 1.500000, 1.500000, 0.000000) +add r8.w, -r20.w, r25.x +mad r8.w, cb0[187].x, r8.w, r20.w +mul r26.xyz, r8.wwww, r24.xyzx +mul r26.xyz, r26.xyzx, cb0[186].wwww +dp3 r8.w, r20.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r20.xyz, r19.xyzx, r5.wwww, -r8.wwww +mad r20.xyz, r18.wwww, r20.xyzx, r8.wwww +mul r24.xyz, r24.xyzx, r25.yyyy +mad r23.yzw, r19.xxyz, cb0[198].yyyy, r23.yyyy +mad r20.xyz, r24.xyzx, r23.yzwy, r20.xyzx +mad r20.xyz, r20.xyzx, cb0[186].yyyy, -r26.xyzx +mad r20.xyz, r11.wwww, r20.xyzx, r26.xyzx +dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000), -r8.wwww +mad r22.xyz, r22.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r8.wwww +mad_sat r8.w, r15.w, r16.w, r12.z +mad r23.yzw, r6.xxyz, cb0[186].zzzz, -r22.xxyz +mad r22.xyz, r8.wwww, r23.yzwy, r22.xyzx +mad r23.yzw, r4.xxyz, r6.wwww, -r22.xxyz +mad r22.xyz, r18.wwww, r23.yzwy, r22.xyzx +mad r23.yzw, r4.xxyz, r6.wwww, -r13.wwww +mad r23.yzw, r23.yyzw, l(0.000000, 1.200000, 1.200000, 1.200000), r13.wwww +mad r23.yzw, -r6.xxyz, cb0[186].zzzz, r23.yyzw +mad r21.xzw, r19.wwww, r23.yyzw, r21.xxzw +dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +max r12.z, r8.w, l(0.001000) +div r12.z, l(1.000000, 1.000000, 1.000000, 1.000000), r12.z +mul r8.w, r8.w, r12.z +max r8.w, r8.w, l(0.000000) +min r8.w, r8.w, l(1.500000) +mad r22.xyz, r22.xyzx, r8.wwww, -r21.xzwx +mad r21.xzw, r11.wwww, r22.xxyz, r21.xxzw +mad r8.w, -r15.w, r16.w, r18.w +mad r8.w, r11.w, r8.w, r19.w +add r12.z, l(1.000000), -cb0[186].z +mad r12.z, r8.w, r12.z, cb0[186].z +add r15.w, r15.y, l(-0.500000) +mad r22.y, r11.w, r15.w, l(0.500000) +dp3_sat r24.x, r3.xywx, r2.xyzx +mov r22.xz, cb0[6].xxzx +dp3 r15.w, r22.xyzx, r22.xyzx +max r15.w, r15.w, l(1.175494351E-38) +rsq r15.w, r15.w +mul r22.xyz, r15.wwww, r22.xyzx +add r22.xyz, r22.xyzx, r22.xyzx +mad r15.xyz, r15.xyzx, r11.wwww, r22.xyzx +add r15.w, r11.w, l(2.000000) +mad r15.xyz, r2.xyzx, r15.wwww, r15.xyzx +dp3 r15.w, r15.xyzx, r15.xyzx +rsq r15.w, r15.w +mul r15.xyz, r15.wwww, r15.xyzx +dp3 r15.x, r3.xywx, r15.xyzx +mul r15.y, r5.y, r5.y +mad r15.z, r15.x, r15.y, -r15.x +mad r15.x, r15.z, r15.x, l(1.000000) +mul r15.x, r15.x, r15.x +add r15.z, l(1.000000), -cb5[1].z +mad r15.z, r4.w, cb5[1].z, r15.z +mul r22.xyz, r20.xyzx, r21.xzwx +ne r15.w, r15.x, r15.y +div r15.x, r15.y, r15.x +movc r15.x, r15.w, r15.x, l(1.000000) +mad r15.y, r24.x, l(2.000000), r5.y +add r15.y, r15.y, l(0.000100) +div r15.y, l(0.500000), r15.y +mad r15.x, r15.x, r15.y, l(-0.0000610351562) +max r15.x, r15.x, l(0.000000) +min r15.x, r15.x, l(20.000000) +mul r15.xyw, r13.xyxz, r15.xxxx +mad r8.w, r8.w, l(0.500000), l(0.500000) +mul r8.w, r12.z, r8.w +mul r20.xyz, r8.wwww, r20.xyzx +mul r15.xyw, r15.xyxw, r20.xyxz +mul r15.xyw, r15.xyxw, cb0[199].wwww +mad r15.xyw, r22.xyxz, r15.zzzz, r15.xyxw +dp3 r8.w, r15.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r16.w, r8.w, l(-0.500000) +max r16.w, r16.w, l(0.000000) +min r16.w, r16.w, l(0.500000) +mov r20.y, l(0) +mov r20.xz, cb0[195].yyxy +mul r22.xyz, r20.xyzx, cb0[6].zxyz +mad r20.xyz, cb0[6].yzxy, r20.yzxy, -r22.xyzx +dp3 r18.w, r20.xyzx, r20.xyzx +rsq r18.w, r18.w +mul r20.xyz, r18.wwww, r20.xyzx +dp3 r18.w, r2.xyzx, r7.xyzx +add r22.xy, -|r18.wwww|, l(1.000000, 0.399999976, 0.000000, 0.000000) +dp3 r16.x, r16.xyzx, r7.xyzx +add r16.y, -r11.w, l(1.000000) +add r10.x, -r3.z, r10.x +mad r2.w, r2.w, r10.x, r3.z +mul r26.y, r2.w, r2.w +mul r27.x, r24.x, r24.x +mul r27.z, r24.x, r27.x +mul r10.x, r26.y, r26.y +mul r26.z, r26.y, r10.x +mov r24.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r25.x, l(3.327070, 1.000000, 0.000000, 0.000000), r24.xyxx +dp2 r25.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r24.xzxx +mov r26.x, l(1.000000) +dp2 r10.x, r25.xyxx, r26.xyxx +mov r27.yw, l(0,9.044010,0,1.000000) +dp3 r28.x, l(3.596850, -1.367720, 1.000000, 0.000000), r27.xzwx +dp3 r28.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r27.xyzx +mov r29.x, l(5.565890) +mov r29.yz, r27.xxzx +dp3 r28.z, l(1.000000, 19.788601, -20.212299, 0.000000), r29.xyzx +dp3 r16.z, r28.xyzx, r26.xyzx +div r10.x, r10.x, r16.z +dp2 r25.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r24.xwxx +mov r27.x, l(1.296780) +mov r27.y, r24.x +dp2 r25.y, l(1.000000, -0.755907, 0.000000, 0.000000), r27.xyxx +dp2 r16.z, r25.xyxx, r26.xyxx +dp3 r28.x, l(2.923380, 59.418800, 1.000000, 0.000000), r27.yzwy +mov r27.xw, l(20.322500,0,0,121.563004) +dp3 r28.y, l(1.000000, -27.030199, 222.591995, 0.000000), r27.xyzx +dp3 r28.z, l(626.130005, 316.627014, 1.000000, 0.000000), r27.yzwy +dp3 r19.w, r28.xyzx, r26.xyzx +div r16.z, r16.z, r19.w +mad r23.yzw, r13.xxyz, r10.xxxx, r16.zzzz +add r10.x, r10.x, r16.z +mad r16.z, r16.w, r16.w, l(1.000000) +add r15.xyw, -r8.wwww, r15.xyxw +mad r15.xyw, r16.zzzz, r15.xyxw, r8.wwww +mad r16.zw, cb0[195].wwww, l(0.000000, 0.000000, -0.600000, -0.399999976), l(0.000000, 0.000000, 0.800000, 0.900000) +add r8.w, -r16.z, r16.w +add r16.z, -r16.z, r22.x +div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w +mul_sat r8.w, r8.w, r16.z +mad r16.z, r8.w, l(-2.000000), l(3.000000) +mul r8.w, r8.w, r8.w +mul r8.w, r8.w, r16.z +mul r24.yzw, r8.wwww, cb0[194].xxyz +mul r24.yzw, r24.yyzw, cb0[194].wwww +dp3 r8.w, r9.xyzx, r20.xyzx +add_sat r8.w, r8.w, l(1.000000) +min r5.z, r5.z, r8.w +min r5.z, r21.y, r5.z +mul r24.yzw, r5.zzzz, r24.yyzw +mad r25.xyw, r4.xyxz, r6.wwww, l(-0.250000, -0.250000, 0.000000, -0.250000) +mad r25.xyw, cb0[195].zzzz, r25.xyxw, l(0.250000, 0.250000, 0.000000, 0.250000) +dp3_sat r5.z, r20.xyzx, r7.xyzx +mul r20.xyz, r5.zzzz, r25.xywx +max r5.z, r17.y, r17.x +max r5.z, r17.z, r5.z +mul r5.z, r5.z, l(0.500000) +max r5.z, r5.z, l(1.000000) +div r5.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z +mul r17.xyz, r5.zzzz, r17.xyzx +mad r19.xyz, r19.xyzx, r5.wwww, -r17.xyzx +mad r17.xyz, r11.wwww, r19.xyzx, r17.xyzx +dp3 r5.z, r18.xyzx, r7.xyzx +mul r5.w, r7.w, r5.z +mad r8.w, r16.x, l(0.500000), l(-1.000000) +mad r8.w, -r16.x, r8.w, l(0.500000) +mad r5.z, -r5.z, r7.w, r8.w +mad_sat r5.z, r11.w, r5.z, r5.w +mul r16.xzw, r5.zzzz, r17.xxyz +mad r5.z, r14.w, r11.w, r16.y +mul r5.z, r23.x, r5.z +mul r16.xzw, r5.zzzz, r16.xxzw +mul_sat r5.z, r22.y, l(5.00000048) +mad r5.w, r5.z, l(-2.000000), l(3.000000) +mul r5.z, r5.z, r5.z +mul r5.z, r5.z, r5.w +mul r16.xzw, r5.zzzz, r16.xxzw +mul r16.xzw, r17.wwww, r16.xxzw +add r5.z, r13.w, l(-0.100000) +mul_sat r5.z, r5.z, l(-16.666666) +mad r5.w, r5.z, l(-2.000000), l(3.000000) +mul r5.z, r5.z, r5.z +mul r5.z, r5.z, r5.w +mad r5.z, r5.z, r11.w, r16.y +mul r16.xzw, r5.zzzz, r16.xxzw +max r17.xyz, r10.yzwy, l(0.150000, 0.150000, 0.150000, 0.000000) +mul r16.xzw, r16.xxzw, r17.xxyz +mad r16.xzw, r24.yyzw, r20.xxyz, r16.xxzw +add r15.xyw, r15.xyxw, r16.xzxw +utof r5.zw, r12.xxxy +mul r16.xz, r5.zzwz, l(0.031250, 0.000000, 0.031250, 0.000000) +round_ni r16.xz, r16.xxzx +mad r7.w, r16.z, cb2[1].y, r16.x +mul r7.w, r7.w, l(8.000000) +ftoi r7.w, r7.w +mad r8.w, -cb0[85].y, cb2[2].w, v0.w +round_ni r8.w, r8.w +add r11.w, l(-1.000000), cb2[1].w +max r13.w, r8.w, l(0.000000) +min r11.w, r11.w, r13.w +mul r13.w, r11.w, l(8.000000) +ftoi r13.w, r13.w +mul r8.xyz, r8.xyzx, cb5[6].xyzx +mul r16.xzw, r9.wwww, cb5[12].xxyz +mul r16.xzw, r4.wwww, r16.xxzw +mad r8.xyz, r8.xyzx, cb5[1].wwww, r16.xzwx +mad r8.xyz, r8.xyzx, r15.zzzz, r15.xywx +dp3 r9.w, -r2.xyzx, r3.xywx +add r9.w, r9.w, r9.w +mad r15.xyw, r3.xyxw, -r9.wwww, -r2.xyxz +max r2.w, r2.w, l(0.001000) +log r2.w, r2.w +mad r2.w, r2.w, l(1.200000), l(5.000000) +sample_l_indexable(texturecube)(float,float,float,float) r15.xyw, r15.xywx, t17.xywz, s0, r2.w +add r2.w, -r10.x, l(1.000000) +div r2.w, r2.w, r10.x +mul r16.xzw, r2.wwww, r13.xxyz +mad r16.xzw, r16.xxzw, r23.yyzw, r23.yyzw +mul r15.xyw, r15.xyxw, r16.xzxw +mul r2.w, r25.z, cb0[186].w +mul r2.w, r12.z, r2.w +mul r15.xyw, r2.wwww, r15.xyxw +mad r8.xyz, r15.xywx, r14.xyzx, r8.xyzx +ge r2.w, r11.w, r8.w +iadd r8.w, r13.w, cb0[110].y +mad r9.w, r16.y, l(-0.250000), l(0.750000) +mad r4.xyz, r4.xyzx, r6.wwww, l(-0.500000, -0.500000, -0.500000, 0.000000) +add r6.w, -r5.y, l(0.010000) +ge r5.x, r5.x, l(0.500000) +and r5.x, r5.x, l(0x3f800000) +mov r14.w, l(1.000000) +mov r15.xyw, r8.xyxz +mov r10.x, l(0) +loop + ilt r11.w, l(7), r10.x + breakc_nz r11.w + iadd r11.w, r7.w, r10.x + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx + iadd r12.z, r8.w, r10.x + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.z, r12.z, l(0), t0.xxxx + and r11.w, r11.w, r12.z + and r11.w, r2.w, r11.w + ishl r12.z, r10.x, l(5) + mov r16.xyz, r15.xywx + mov r13.w, r11.w + loop + breakc_z r13.w + firstbit_lo r16.w, r13.w + ishl r17.x, l(1), r16.w + xor r17.x, r13.w, r17.x + iadd r16.w, r12.z, r16.w + bfi r19.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 5, 6, 7) + ftou r17.y, cb3[r19.y + 6].w + ieq r17.y, r17.y, l(1) + if_nz r17.y + add r14.xyz, v2.xyzx, -cb3[r19.x + 6].xyzx + and r17.yzw, l(0, 0x0000ffff, 0x0000ffff, 0x0000ffff), cb3[r19.y + 6].xxzy + and r18.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r19.z + 6].yxzy + ushr r20.xyz, cb3[r19.y + 6].xzyx, l(16, 16, 16, 0) + ushr r22.yzw, cb3[r19.z + 6].yyxz, l(0, 16, 16, 16) + f16tof32 r17.yzw, r17.yyzw + f16tof32 r18.xyz, r18.xyzx + f16tof32 r20.xyz, r20.xyzx + f16tof32 r23.xyw, r22.zyzw + mov r25.xz, r17.yywy + mov r25.yw, r20.xxxz + dp4 r17.y, r14.xyzw, r25.xyzw + mov r20.x, r17.z + mov r20.z, r18.y + mov r20.w, r23.x + dp4 r17.z, r14.xyzw, r20.xyzw + mov r23.xz, r18.xxzx + dp4 r14.x, r14.xyzw, r23.xyzw + max r14.y, |r17.z|, |r17.y| + max r14.x, |r14.x|, r14.y + mad r14.y, cb3[r19.w + 6].x, l(0.500000), l(0.500000) + add r14.x, -r14.y, r14.x + mad r14.y, -cb3[r19.w + 6].x, l(0.500000), l(0.500000) + div_sat r14.x, r14.x, r14.y + add r14.x, -r14.x, l(1.000000) + mul r14.x, r14.x, r14.x + else + mov r14.x, l(1.000000) + endif + lt r14.y, r14.x, l(0.001000) + if_nz r14.y + mov r13.w, r17.x + continue + endif + ishl r14.y, r16.w, l(3) + lt r14.z, cb3[r14.y + 6].w, l(1.500000) + if_nz r14.z + bfi r14.z, l(29), l(3), r16.w, l(3) + ieq r17.y, l(16), cb3[r14.z + 6].w + add r17.z, cb0[198].z, cb3[r14.z + 6].z + lt r17.z, r17.z, l(0.500000) + or r17.y, r17.z, r17.y + if_z r17.y + bfi r17.yz, l(0, 29, 29, 0), l(0, 3, 3, 0), r16.wwww, l(0, 2, 4, 0) + ftou r16.w, cb3[r14.y + 6].w + and r16.w, r16.w, l(1) + ieq r17.w, r16.w, l(0) + not r17.w, r17.w + lt r18.x, l(0.000000), cb3[r17.y + 6].z + and r17.w, r17.w, r18.x + ieq r18.x, l(4), cb3[r14.z + 6].w + movc r18.y, r16.w, l(0), l(1.000000) + mad r18.z, cb3[r17.y + 6].y, l(0.500000), l(0.500000) + add r20.z, r18.z, -|cb3[r17.y + 6].x| + add r20.x, -r20.z, cb3[r17.y + 6].y + add r18.z, -|r20.z|, l(1.000000) + add r18.z, -|r20.x|, r18.z + max r18.z, r18.z, l(0.000488281250) + ge r19.y, cb3[r17.y + 6].x, l(0.000000) + movc r20.y, r19.y, r18.z, -r18.z + dp3 r18.z, r20.xyzx, r20.xyzx + rsq r18.z, r18.z + mul r20.xyz, r18.zzzz, r20.xyzx + add r18.z, cb3[r17.z + 6].y, cb3[r17.z + 6].y + max r18.z, r18.z, l(0.100000) + and r19.y, r18.x, l(0x3f800000) + add r18.z, r18.z, -cb3[r19.z + 6].w + mad r18.z, r19.y, r18.z, cb3[r19.z + 6].w + add r22.yzw, -v2.xxyz, cb3[r19.x + 6].xxyz + dp3 r19.y, r22.zwyz, -r20.xyzx + lt r19.z, l(0.500000), cb3[r17.z + 6].z + and r19.z, r18.x, r19.z + and r19.z, r19.z, l(0x3f800000) + mul r19.z, r18.y, r19.z + mad r23.xyz, -r20.zxyz, r19.yyyy, -r22.yzwy + mad r22.yzw, r19.zzzz, r23.xxyz, r22.yyzw + dp3 r19.y, r22.yzwy, r22.yzwy + rsq r19.z, r19.y + mul r23.xyz, r19.zzzz, r22.yzwy + if_nz r17.w + mul r24.yzw, r20.zzxy, cb3[r17.y + 6].zzzz + mad r25.xyz, -r24.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), r22.yzwy + mad r24.yzw, r24.yyzw, l(0.000000, 0.500000, 0.500000, 0.500000), r22.yyzw + dp3 r19.z, r25.xyzx, r25.xyzx + sqrt r19.z, r19.z + dp3 r20.w, r24.yzwy, r24.yzwy + sqrt r20.w, r20.w + mul r26.xyz, r20.xyzx, r23.xyzx + mad r26.xyz, r20.zxyz, r23.yzxy, -r26.xyzx + mul r27.xyz, r20.xyzx, r26.xyzx + mad r26.xyz, r26.zxyz, r20.yzxy, -r27.xyzx + dp3 r21.y, r26.xyzx, r26.xyzx + rsq r21.y, r21.y + mul r23.xyz, r21.yyyy, r26.xyzx + dp3 r21.y, r25.xyzx, r24.yzwy + mad r21.y, r19.z, r20.w, r21.y + mad r21.y, r21.y, l(0.500000), l(1.000000) + div r21.y, l(1.000000, 1.000000, 1.000000, 1.000000), r21.y + dp3 r23.w, r23.xyzx, r25.xyzx + div r19.z, r23.w, r19.z + dp3 r23.w, r23.xyzx, r24.yzwy + div r20.w, r23.w, r20.w + add r19.z, r19.z, r20.w + mul_sat r19.z, r19.z, l(0.500000) + mul r19.z, r19.z, r21.y + else + mov r19.z, l(1.000000) + endif + lt r20.w, r18.z, l(0.000000) + if_nz r20.w + mul r20.w, cb3[r19.x + 6].w, cb3[r19.x + 6].w + mul r20.w, r19.y, r20.w + mad r20.w, -r20.w, r20.w, l(1.000000) + max r20.w, r20.w, l(0.000000) + add r19.y, r19.y, l(1.000000) + div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), r19.y + and r21.y, r17.w, l(0x3f800000) + add r23.w, -r19.y, r19.z + mad r19.y, r21.y, r23.w, r19.y + mul r20.w, r20.w, r20.w + mul r19.y, r19.y, r20.w + else + mul r24.yzw, r22.yyzw, cb3[r19.x + 6].wwww + dp3 r20.w, r24.yzwy, r24.yzwy + min r20.w, r20.w, l(1.000000) + add r20.w, -r20.w, l(1.000000) + log r20.w, r20.w + mul r18.z, r18.z, r20.w + exp r18.z, r18.z + mul r19.y, r18.z, r19.z + endif + dp3 r18.z, r23.yzxy, -r20.xyzx + add r18.z, r18.z, -cb3[r17.y + 6].z + mul_sat r18.z, r18.z, cb3[r17.y + 6].w + mad r18.z, r18.z, r18.z, l(-1.000000) + mad r18.y, r18.y, r18.z, l(1.000000) + mul r18.y, r18.y, r19.y + ftoi r18.z, cb3[r19.w + 6].w + not r17.w, r17.w + ige r19.y, r18.z, l(0) + and r17.w, r17.w, r19.y + if_nz r17.w + if_z r16.w + ishl r17.w, r18.z, l(2) + mul r20.xyz, v2.yyyy, cb6[r17.w + 33].xywx + mad r20.xyz, cb6[r17.w + 32].xywx, v2.xxxx, r20.xyzx + mad r20.xyz, cb6[r17.w + 34].xywx, v2.zzzz, r20.xyzx + add r20.xyz, r20.xyzx, cb6[r17.w + 35].xywx + div_sat r19.yz, r20.xxyx, r20.zzzz + mad r19.yz, r19.yyzy, cb6[r18.z + 0].zzwz, cb6[r18.z + 0].xxyx + else + ishl r17.w, r18.z, l(2) + dp3 r20.x, -r22.yzwy, cb6[r17.w + 32].xyzx + dp3 r20.y, -r22.yzwy, cb6[r17.w + 33].xyzx + dp3 r20.z, -r22.yzwy, cb6[r17.w + 34].xyzx + lt r17.w, |r20.x|, |r20.y| + and r17.w, r17.w, l(1) + dp2 r20.w, |r20.xyxx|, icb[r17.w + 0].xyxx + lt r20.w, r20.w, |r20.z| + movc r17.w, r20.w, l(2), r17.w + dp3 r20.w, r20.xyzx, icb[r17.w + 0].xyzx + lt r20.w, r20.w, l(0.000000) + bfi r17.w, l(31), l(1), r17.w, r20.w + ushr r20.w, r17.w, l(1) + dp3 r20.w, r20.xyzx, icb[r20.w + 0].xyzx + div r21.y, l(0.000244140625), cb6[r18.z + 0].w + add r21.y, -r21.y, l(0.500000) + utof r22.y, r17.w + ult r22.z, r17.w, l(2) + and r22.z, r22.z, l(2) + dp2 r20.x, r20.xzxx, icb[r22.z + 0].xzxx + mul r20.x, r20.x, icb[r17.w + 4].z + div r20.x, r20.x, |r20.w| + mad r20.x, r20.x, r21.y, r22.y + add r20.x, r20.x, l(0.500000) + mul_sat r25.x, r20.x, l(0.166666672) + iadd r20.x, l(-1), icb[r17.w + 4].y + dp2 r20.x, r20.yzyy, icb[r20.x + 0].xyxx + mul r17.w, r20.x, icb[r17.w + 4].w + div r17.w, r17.w, |r20.w| + mad_sat r25.y, -r17.w, r21.y, l(0.500000) + mad r19.yz, r25.xxyx, cb6[r18.z + 0].zzwz, cb6[r18.z + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r17.w, r19.yzyy, t18.yzwx, s0, l(0.000000) + mul r18.y, r17.w, r18.y + endif + mul r14.x, r14.x, r18.y + lt r17.w, l(0.000100), r14.x + if_nz r17.w + if_nz r18.x + add r17.w, l(1.000000), -cb3[r17.z + 6].w + dp3 r18.y, r11.xyzx, r23.xyzx + add_sat r18.y, r18.y, l(0.500000) + mad r18.z, r18.y, l(-2.000000), l(3.000000) + mul r18.y, r18.y, r18.y + mul r18.y, r18.y, r18.z + mad r17.w, r18.y, cb3[r17.z + 6].w, r17.w + mul r17.w, r17.w, cb3[r17.z + 6].x + mul r17.w, r14.x, r17.w + add r20.xyz, -r16.xyzx, cb3[r14.y + 6].xyzx + mad r20.xyz, r17.wwww, r20.xyzx, r16.xyzx + endif + if_z r18.x + dp3 r17.w, r7.xyzx, r23.xyzx + mov_sat r18.y, r17.w + if_nz cb3[r14.z + 6].w + if_z r16.w + ftoi r16.w, cb3[r14.z + 6].x + else + add r22.yzw, v2.xxyz, -cb3[r19.x + 6].xxyz + lt r24.yzw, |r22.zzww|, |r22.yyyz| + and r18.z, r24.z, r24.y + lt r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r22.yyzw + ushr r19.y, cb3[r17.y + 6].w, l(24) + ubfe r24.yz, l(0, 8, 8, 0), l(0, 16, 8, 0), cb3[r17.y + 6].wwww + movc r19.y, r22.y, r19.y, r24.y + and r17.y, l(255), cb3[r17.y + 6].w + movc r17.y, r22.z, r24.z, r17.y + ubfe r19.z, l(8), l(8), cb3[r14.z + 6].x + and r20.w, l(255), cb3[r14.z + 6].x + movc r19.z, r22.w, r19.z, r20.w + movc r17.y, r24.w, r17.y, r19.z + movc r17.y, r18.z, r19.y, r17.y + ilt r18.z, r17.y, l(80) + movc r16.w, r18.z, r17.y, l(-1) + endif + ige r17.y, r16.w, l(0) + if_nz r17.y + add r19.xyz, v2.xyzx, -cb3[r19.x + 6].xyzx + ishl r17.y, r16.w, l(2) + dp3 r18.z, r19.xyzx, r19.xyzx + max r18.z, r18.z, l(1.175494351E-38) + rsq r18.z, r18.z + mul r19.xyz, r18.zzzz, r19.xyzx + mad r19.xyz, -r19.xyzx, cb4[r16.w + 288].xxxx, v2.xyzx + mul r18.z, l(5.000000), cb4[r16.w + 288].y + mad r19.xyz, r11.xyzx, r18.zzzz, r19.xyzx + mul r25.xyzw, r19.yyyy, cb4[r17.y + 65].xyzw + mad r25.xyzw, cb4[r17.y + 64].xyzw, r19.xxxx, r25.xyzw + mad r25.xyzw, cb4[r17.y + 66].xyzw, r19.zzzz, r25.xyzw + add r25.xyzw, r25.xyzw, cb4[r17.y + 67].xyzw + div r19.xyz, r25.xyzx, r25.wwww + ge r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxyz + ge r24.yzw, r19.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000) + add r25.xy, -cb4[r16.w + 344].xyxx, cb4[r16.w + 344].zwzz + mad r19.xy, r19.xyxx, r25.xyxx, cb4[r16.w + 344].xyxx + mad r25.xy, r19.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r25.xy, r25.xyxx + mad r19.xy, r19.xyxx, cb4[400].zwzz, -r25.xyxx + add r26.xyzw, r19.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r25.zw, -r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r26.xz, r19.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r19.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r19.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r19.xyxx + mul r30.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r19.xy, -r26.xzxx, r26.xzxx, r25.zwzz + add r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r31.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r19.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r30.z, r31.x + mov r30.w, r19.x + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r19.y + mov r28.z, r29.y + mov r28.w, r27.z + add r27.xyz, r28.zywz, r31.zywz + div r29.xyz, r29.xzwx, r26.zwyz + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.yxzy, cb4[400].xxxx + div r28.xyz, r28.zywz, r27.xyzx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb4[400].yyyy + mov r29.w, r28.x + mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r29.ywxw + mad r19.xy, r25.xyxx, cb4[400].xyxx, r29.zwzz + mov r28.w, r29.y + mov r29.yw, r28.yyyz + mad r31.xyzw, r25.xyxy, cb4[400].xyxy, r29.xyzy + mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz + mad r25.xyzw, r25.xyxy, cb4[400].xyxy, r29.xwzw + mul r29.xyzw, r26.zwyz, r27.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r30.xyxx, t2.xxxx, s2, r19.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r30.zwzz, t2.xxxx, s2, r19.z + mul r18.z, r18.z, r29.y + mad r17.y, r29.x, r17.y, r18.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r19.xyxx, t2.xxxx, s2, r19.z + mad r17.y, r29.z, r18.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.xyxx, t2.xxxx, s2, r19.z + mad r17.y, r29.w, r18.z, r17.y + mul r29.xyzw, r26.xyzw, r27.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r31.xyxx, t2.xxxx, s2, r19.z + mad r17.y, r29.x, r18.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r31.zwzz, t2.xxxx, s2, r19.z + mad r17.y, r29.y, r18.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.zwzz, t2.xxxx, s2, r19.z + mad r17.y, r29.z, r18.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r25.xyxx, t2.xxxx, s2, r19.z + mad r17.y, r29.w, r18.z, r17.y + or r22.yzw, r22.yyzw, r24.yyzw + or r18.z, r22.z, r22.y + or r18.z, r22.w, r18.z + and r19.x, r19.z, l(0x7fffffff) + ult r19.x, l(0x7f800000), r19.x + or r18.z, r18.z, r19.x + mul r19.x, r26.y, r27.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.y, r25.zwzz, t2.xxxx, s2, r19.z + mad r17.y, r19.x, r19.y, r17.y + add r17.y, r17.y, l(-1.000000) + mad r16.w, cb4[r16.w + 288].w, r17.y, l(1.000000) + movc r16.w, r18.z, l(1.000000), r16.w + else + dp3 r17.y, r9.xyzx, r23.xyzx + add_sat r16.w, r17.y, l(1.000000) + endif + else + mov r16.w, l(1.000000) + endif + if_z cb3[r14.z + 6].w + mul r19.xyz, r14.xxxx, cb3[r14.y + 6].xyzx + add r17.y, l(1.000000), -cb3[r17.z + 6].y + max r18.z, r19.y, r19.x + max r18.z, r19.z, r18.z + mul r18.z, r9.w, r18.z + max r18.z, r18.z, l(1.000000) + div r18.z, l(1.000000, 1.000000, 1.000000, 1.000000), r18.z + mad r17.y, r18.z, cb3[r17.z + 6].y, r17.y + mul r19.xyz, r17.yyyy, cb3[r14.y + 6].xyzx + mul r17.y, l(0.250000), cb3[r17.z + 6].x + add_sat r18.z, r17.w, l(0.500000) + mad r20.w, -cb3[r17.z + 6].x, l(0.250000), l(1.000000) + mad r17.y, r18.z, r20.w, r17.y + mul r19.xyz, r17.yyyy, r19.xyzx + mov r22.yzw, r21.xxzw + mov r24.yzw, r21.xxzw + mov r17.y, l(1.000000) + mov r18.z, l(0) + else + ieq r20.w, l(3), cb3[r14.z + 6].w + if_nz r20.w + mad r25.xy, cb3[r17.z + 6].xxxx, l(-0.600000, -0.399999976, 0.000000, 0.000000), l(0.800000, 0.900000, 0.000000, 0.000000) + add r20.w, -r25.x, r25.y + add r21.y, r22.x, -r25.x + div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w + mul_sat r20.w, r20.w, r21.y + mad r21.y, r20.w, l(-2.000000), l(3.000000) + mul r20.w, r20.w, r20.w + mul r20.w, r20.w, r21.y + mul r20.w, r16.w, r20.w + mul r14.x, r14.x, r20.w + mul r25.xyz, r23.zxyz, cb0[6].xyzx + mad r25.xyz, cb0[6].zxyz, r23.xyzx, -r25.xyzx + mul r26.xyz, r25.xyzx, cb0[6].zxyz + mad r25.xyz, cb0[6].yzxy, r25.yzxy, -r26.xyzx + dp3 r20.w, r25.xyzx, r25.xyzx + rsq r20.w, r20.w + mul r25.xyz, r20.wwww, r25.xyzx + dp3_sat r18.y, r7.xyzx, -r25.xyzx + mad r22.yzw, cb3[r17.z + 6].yyyy, r4.xxyz, l(0.000000, 0.500000, 0.500000, 0.500000) + mov r24.yzw, l(0,0,0,0) + mov r17.y, l(1.000000) + mov r18.z, l(0) + else + ieq r20.w, l(1), cb3[r14.z + 6].w + if_nz r20.w + add r17.w, r17.w, cb3[r17.z + 6].x + max_sat r17.w, r17.w, l(-1.000000) + mul r18.y, r16.w, r17.w + mul r24.yzw, r6.xxyz, cb3[r17.z + 6].yyyy + mov r17.y, l(1.000000) + mov r18.z, l(0) + else + ieq r16.w, l(2), cb3[r14.z + 6].w + if_nz r16.w + add r17.w, l(0.050000), cb3[r17.z + 6].x + add r17.w, r3.z, -r17.w + mul_sat r17.w, r17.w, l(-10.000000) + mad r21.y, r17.w, l(-2.000000), l(3.000000) + mul r17.w, r17.w, r17.w + mul r17.w, r17.w, r21.y + add r21.y, l(1.000000), -cb3[r17.z + 6].z + mad r21.y, r5.x, cb3[r17.z + 6].z, r21.y + mul r17.y, r17.w, r21.y + else + mov r17.y, l(1.000000) + endif + and r18.z, r16.w, cb3[r17.z + 6].y + mov r24.yzw, l(0,0,0,0) + endif + and r22.yzw, r10.yyzw, r20.wwww + endif + mov r19.xyz, cb3[r14.y + 6].xyzx + endif + ine r14.y, l(3), cb3[r14.z + 6].w + if_nz r14.y + mad r14.y, r18.z, r6.w, r5.y + mad r23.xyz, r0.xyzx, r1.wwww, r23.xyzx + dp3 r14.z, r23.xyzx, r23.xyzx + rsq r14.z, r14.z + mul r23.xyz, r14.zzzz, r23.xyzx + dp3 r14.z, r3.xywx, r23.xyzx + mul r16.w, r14.y, r14.y + mad r17.z, r14.z, r16.w, -r14.z + mad r14.z, r17.z, r14.z, l(1.000000) + mul r14.z, r14.z, r14.z + ne r17.z, r14.z, r16.w + div r14.z, r16.w, r14.z + movc r14.z, r17.z, r14.z, l(1.000000) + mad r14.y, r24.x, l(2.000000), r14.y + add r14.y, r14.y, l(0.000100) + div r14.y, l(0.500000), r14.y + mad r14.y, r14.z, r14.y, l(-0.0000610351562) + max r14.y, r14.y, l(0.000000) + min r14.y, r14.y, l(20.000000) + mul r23.xyz, r13.xyzx, r14.yyyy + mul r17.yzw, r17.yyyy, r23.xxyz + mul r17.yzw, r17.yyzw, cb3[r19.w + 6].zzzz + else + mov r17.yzw, l(0,0,0,0) + endif + mul r14.xyz, r14.xxxx, r19.xyzx + add r19.xyz, r22.yzwy, -r24.yzwy + mad r19.xyz, r18.yyyy, r19.xyzx, r24.yzwy + mul r19.xyz, r14.xyzx, r19.xyzx + mul r14.xyz, r17.yzwy, r14.xyzx + mul r14.xyz, r18.yyyy, r14.xyzx + mad r14.xyz, r19.xyzx, r15.zzzz, r14.xyzx + add r16.xyz, r14.xyzx, r16.xyzx + endif + else + mov r18.x, l(0) + endif + movc r16.xyz, r18.xxxx, r20.xyzx, r16.xyzx + endif + endif + mov r13.w, r17.x + endloop + mov r15.xyw, r16.xyxz + iadd r10.x, r10.x, l(1) +endloop +lt r0.x, l(0.500000), cb5[3].x +if_nz r0.x + dp3 r0.x, r15.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r3.xyz, -r0.xxxx, r15.xywx + mad r0.xyz, cb5[3].zzzz, r3.xyzx, r0.xxxx + add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) + mad r0.xyz, cb5[3].wwww, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mul r3.xyz, r0.xyzx, cb5[3].yyyy + mad r0.xyz, -r0.xyzx, cb5[3].yyyy, cb5[7].xyzx + mad r0.xyz, cb5[7].wwww, r0.xyzx, r3.xyzx + add r2.w, l(1.000000), -cb5[4].x + mov_sat r18.w, r18.w + add r3.x, -r18.w, l(1.000000) + add r3.y, -r2.w, l(1.000000) + add r2.w, -r2.w, r3.x + div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y + mul_sat r2.w, r2.w, r3.x + mad r3.x, r2.w, l(-2.000000), l(3.000000) + mul r2.w, r2.w, r2.w + mul r2.w, r2.w, r3.x + mul r3.xyz, r2.wwww, cb5[8].xyzx + mad r15.xyw, r3.xyxz, cb5[4].yyyy, r0.xyxz +endif +div r0.xyz, r15.xywx, cb0[109].xxxx +eq r2.w, l(1.000000), cb5[2].x +movc o0.w, r2.w, r4.w, l(1.000000) +lt r2.w, cb0[198].w, l(0.500000) +if_nz r2.w + mul r0.w, r0.w, r1.w + mad r1.w, v2.y, cb0[156].w, cb0[157].w + max r1.w, r1.w, l(0.010000) + mad r2.w, r0.w, cb0[154].w, -cb0[153].w + max r2.w, r2.w, l(0.000000) + mul r3.x, r1.w, l(-1.442695) + exp r3.x, r3.x + add r3.x, -r3.x, l(1.000000) + div r1.w, r3.x, r1.w + mad r3.x, v2.y, cb0[156].w, cb0[158].w + mul r3.x, r3.x, l(1.442695) + exp r3.x, r3.x + mul r1.w, r1.w, r3.x + mul r1.w, r1.w, -r2.w + mul r3.xyz, r1.wwww, cb0[155].xyzx + mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) + exp r3.xyz, r3.xyzx + dp3 r1.w, -r2.xyzx, cb0[154].xyzx + mad r2.w, cb0[155].w, cb0[155].w, l(1.000000) + dp2 r3.w, r1.wwww, cb0[155].wwww + add r2.w, r2.w, -r3.w + lt r3.w, l(0.000000), cb0[163].z + if_nz r3.w + and r12.w, l(7), cb0[108].w + imad r4.xyz, r12.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r3.w, r4.y, r4.z, r4.x + imad r4.x, r4.z, r3.w, r4.y + imad r4.y, r3.w, r4.x, r4.z + imad r5.x, r4.x, r4.y, r3.w + dp3 r1.x, -r2.xyzx, -r1.xyzx + add r1.y, v2.y, -cb0[44].y + lt r1.z, l(5.960464478E-08), r1.x + div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x + and r1.x, r1.x, r1.z + mul r1.x, r1.x, cb0[163].w + div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w + mul r2.x, r1.z, r1.x + mad r2.y, r2.x, r1.y, cb0[44].y + mad r1.y, -r2.x, r1.y, r1.y + mul r2.x, r1.y, cb0[159].z + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r2.z, r2.y, -cb0[159].x + mul r2.z, r2.z, cb0[159].z + max r2.xz, r2.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + exp r2.z, -r2.z + mul r2.z, r2.z, cb0[159].y + lt r3.w, l(5.960464478E-08), |r2.x| + exp r4.z, -r2.x + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r2.x + mad r2.x, -r2.x, l(0.240226507), l(0.693147182) + movc r2.x, r3.w, r4.z, r2.x + add r2.y, r2.y, -cb0[162].z + mul r2.y, r2.y, cb0[162].x + max r2.y, r2.y, l(-127.000000) + exp r2.y, -r2.y + mul r2.y, r2.y, cb0[162].y + lt r3.w, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r3.w, r4.z, r1.y + mul r1.y, r1.y, r2.y + mad r1.y, r2.z, r2.x, r1.y + mad r1.x, -r1.x, r1.z, l(1.000000) + mul r1.x, r0.w, r1.x + mul r1.x, r1.x, r1.y + exp r1.x, -r1.x + min r1.x, r1.x, l(1.000000) + max r1.x, r1.x, cb0[161].w + mad_sat r1.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx + add r1.x, r1.y, r1.x + add r1.x, r1.z, r1.x + min r1.x, r1.x, l(1.000000) + imad r5.y, r4.y, r5.x, r4.x + ushr r1.yz, r5.xxyx, l(0, 16, 16, 0) + utof r1.yz, r1.yyzy + mad r1.yz, r1.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + mad r1.yz, r1.yyzy, cb0[167].wwww, r5.zzwz + mul r2.xy, r1.yzyy, cb0[165].xyxx + mad r1.y, v0.w, cb0[164].x, cb0[164].y + log r1.y, r1.y + mul r1.y, r1.y, cb0[164].z + div r2.z, r1.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t19.xyzw, s0, l(0.000000) + add r1.y, v0.w, -cb0[166].z + mul_sat r1.y, r1.y, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r1.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.xyz, r1.yyyy, cb0[161].xyzx + mad r2.xyz, r2.xyzx, r4.wwww, r4.xyzx + mul r1.x, r1.x, r4.w + else + add r1.y, v2.y, -cb0[44].y + mul r1.z, r1.y, cb0[159].z + mul r1.y, r1.y, cb0[162].x + max r1.yz, r1.yyzy, l(0.000000, -127.000000, -127.000000, 0.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r1.z| + exp r4.y, -r1.z + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r1.z + mad r1.z, -r1.z, l(0.240226507), l(0.693147182) + movc r1.z, r4.x, r4.y, r1.z + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.y, r4.z, r1.y + mul r1.y, r1.y, r4.x + mad r1.y, r3.w, r1.z, r1.y + mul r1.y, r0.w, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.w, r1.y, r4.x + add r0.w, r4.y, r0.w + min r1.x, r0.w, l(1.000000) + add r0.w, -r1.x, l(1.000000) + mul r2.xyz, r0.wwww, cb0[161].xyzx + endif + mul r4.xyz, r1.xxxx, r3.xyzx + mad r0.w, r1.w, r1.w, l(1.000000) + mul r0.w, r0.w, l(0.0596831031) + mad r1.yzw, cb0[156].xxyz, r0.wwww, cb0[158].xxyz + mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) + mul r3.w, r2.w, l(12.566371) + sqrt r2.w, r2.w + mul r2.w, r2.w, r3.w + max r2.w, r2.w, l(0.001000) + div r0.w, r0.w, r2.w + mad_sat r1.yzw, cb0[157].xxyz, r0.wwww, r1.yyzw + mul r1.yzw, r1.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) + add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r1.yzw, r1.yyzw, r3.xxyz + mad r1.xyz, r1.yzwy, r1.xxxx, r2.xyzx + mad o0.xyz, r0.xyzx, r4.xyzx, r1.xyzx +else + mov o0.xyz, r0.xyzx +endif +mov o1.z, l(1.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xD3FA93FC.cso b/src/games/endfield/deferred-lighting/0xD3FA93FC.cso index f7740c34d15134b0d10688be39dd46600384e9ce..243a01365cc91d14d04cc1c82dfd8ed16b50d32b 100644 GIT binary patch delta 86 zcmZ4SpJ~Q#CMlN)C+F>Ly$VxT^hN7!C@kH7E_V(i0|Ud1y%VJtao*U&zz_iBnQc5O gy@%V_c(WZ8Pky~el{+m>%^r#;OYha39I`(I0N42;6#xJL delta 558 zcmbR7n`y;=CMlN)CuiGl;Z;s&4Kn?{=)C5%e-O{ez`(F#|3s-poG=1e;%p8R@`Dz~w*u{{(|mfowWBEZ1F)x;pczzo#k#w5VN4y2hJ7#QZST4e{r zlkZeW)Poc-0wow28th@3Sb;o{CJ@c!z`$@}bEI9QxVim|yOV8!LO^37hO+_LAaxu- zn#loEorMAeJIE0r%dLPk$UKN$C!9k*hEmU88I+$g5*JLm=8fdhWQ*M4m6*u PNC6n=3=EU~_j&>V8n{|b diff --git a/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm index 7ead2ae6bf..2ab496bfc0 100644 --- a/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm @@ -1577,60 +1577,23 @@ if_z cb13[12].y ret endif -// === Custom Hue-Preserving Fog Blend === -// FOG_INTENSITY = 0.7, HUE_PRESERVATION = 0.6 +// === Simplified Fog Modification (Anti-Banding) === // r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter (0-255) // Normalize colors to 0-1 range mul r5.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r1/255 mul r6.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 -// Reduce fog intensity: transmittance = lerp(transmittance, 1, 0.3) +// Boost transmittance: transmittance = lerp(transmittance, 1, 0.35) to reduce fog density add r7.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r7.xyz, r7.xyzx, l(0.300000, 0.300000, 0.300000, 0.000000), r4.xyzx // adjusted transmittance +mad r7.xyz, r7.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx -// fogColor *= FOG_INTENSITY (0.7) -mul r6.xyz, r6.xyzx, l(0.700000, 0.700000, 0.700000, 0.000000) +// Reduce fog inscatter intensity +mul r6.xyz, r6.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) -// Standard fog blend: foggedScene = sceneColor * transmittance + fogColor +// Standard fog blend with reduced intensity mad r8.xyz, r5.xyzx, r7.xyzx, r6.xyzx -// Calculate fog amount: fogAmount = 1 - avg(transmittance) -dp3 r3.w, r7.xyzx, l(0.333333, 0.333333, 0.333333, 0.000000) -add r3.w, -r3.w, l(1.000000) - -// Scene luminance (BT.709) -dp3 r5.w, r5.xyzx, l(0.2126, 0.7152, 0.0722, 0.000000) - -// Fogged luminance -dp3 r6.w, r8.xyzx, l(0.2126, 0.7152, 0.0722, 0.000000) - -// lumaWeight = saturate(sceneLuma * 100) for smooth falloff -mul_sat r7.w, r5.w, l(100.000000) - -// Safe luma for division -max r5.w, r5.w, l(0.0001) - -// sceneRatios = sceneColor / safeLuma -div r9.xyz, r5.xyzx, r5.wwww - -// Clamp ratios to prevent artifacts -max r9.xyz, r9.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r9.xyz, r9.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000) - -// huePreserved = sceneRatios * foggedLuma -mul r9.xyz, r9.xyzx, r6.wwww - -// preserveAmount = HUE_PRESERVATION * saturate(1 - fogAmount*0.5) * lumaWeight -mul r5.w, r3.w, l(0.500000) -add_sat r5.w, -r5.w, l(1.000000) -mul r5.w, r5.w, l(0.600000) // HUE_PRESERVATION -mul r5.w, r5.w, r7.w - -// foggedScene = lerp(foggedScene, huePreserved, preserveAmount) -add r9.xyz, r9.xyzx, -r8.xyzx -mad r8.xyz, r5.wwww, r9.xyzx, r8.xyzx - // Output: scale back to 0-255 range mul o0.xyz, r8.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) diff --git a/src/games/endfield/deferred-lighting/0xD5B102A4.cso b/src/games/endfield/deferred-lighting/0xD5B102A4.cso new file mode 100644 index 0000000000000000000000000000000000000000..b4458e5229bcb17f80a3b10224da68d383598d06 GIT binary patch literal 38580 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm new file mode 100644 index 0000000000..c203b31c3e --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm @@ -0,0 +1,1283 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 22:30:13 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[5], immediateIndexed +dcl_constantbuffer CB4[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 23 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t24.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t25.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r2.xyw, r1.wwww, r3.xyxz +utof r4.xy, r0.xyxx +mul r4.zw, v0.xxxy, cb0[82].zzzw +mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r5.zw, r5.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) +mul r6.xyzw, -r5.yyyy, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw +mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r3.w, r5.y, cb0[1].z +mad r3.w, cb0[0].z, r5.x, r3.w +mad r3.w, cb0[2].z, r5.z, r3.w +add r3.w, r3.w, cb0[3].z +eq r6.x, l(0.000000), cb0[86].w +add r6.yzw, -r5.xxyz, cb0[44].xxyz +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r6.xyz, r6.xxxx, r6.yzwy, r7.xyzx +dp3 r6.w, r6.xyzx, r6.xyzx +max r7.w, r6.w, l(9.999999939E-09) +rsq r7.w, r7.w +mul r8.xyz, r6.xyzx, r7.wwww +mul r6.w, r6.w, r7.w +lt r8.w, l(0.000488281250), cb0[234].x +if_nz r8.w + sample_b_indexable(texture2d)(float,float,float,float) r9.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x +else + mov r9.xy, l(1.000000,1.000000,0,0) +endif +lt r9.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[226].xxxy +if_nz r9.z + add r9.z, |r2.y|, |r2.x| + add r9.z, |r2.w|, r9.z + div r9.z, l(1.000000, 1.000000, 1.000000, 1.000000), r9.z + mul r10.xyz, |r2.xywx|, r9.zzzz + mul r11.xyz, r5.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r9.z, r11.xyzx, t9.yzxw, s2, l(0.000000) + mul r11.xyzw, r10.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) + add r10.xyw, r11.zwzz, r11.xxxy + mad r10.xyz, r10.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r10.xywx + mad r10.w, r9.z, l(2.000000), l(-1.000000) + mul r10.xyz, r10.wwww, r10.xyzx + mov r10.w, |r2.y| + add r10.w, r10.w, l(-0.700000) + mul_sat r10.w, r10.w, l(4.000000) + mad r11.x, r10.w, l(-2.000000), l(3.000000) + mul r10.w, r10.w, r10.w + mul r10.w, r10.w, r11.x + add r11.x, -cb0[229].z, cb0[229].y + mad r10.w, r10.w, r11.x, cb0[229].z + mul r10.xyz, r10.wwww, r10.xyzx +else + mov r10.xyz, l(0,0,0,0) + mov r9.z, l(0) +endif +mad r10.w, -r3.y, r1.w, l(-0.200000) +if_nz r9.w + mul r11.xyz, r2.xywx, cb0[233].zzzz + mul r12.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r11.xyz, r11.xyzx, cb0[225].xxxx, r12.xyzx + max r9.w, -r2.y, l(0.000000) + min r9.w, r9.w, l(0.900000) + add r9.w, -r9.w, l(1.000000) + mul_sat r11.w, r10.w, l(-10.000000) + mad r12.x, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.x + max r11.w, r11.w, l(0.100000) + min r11.w, r11.w, l(1.000000) + mul r9.w, r9.w, r11.w + mad r11.xyz, r11.xyzx, r9.wwww, r5.xyzx + add r10.xyz, r10.xyzx, r11.xyzx + mul r11.xyz, r10.yyyy, cb3[1].xyzx + mad r11.xyz, cb3[0].xyzx, r10.xxxx, r11.xyzx + mad r10.xyz, cb3[2].xyzx, r10.zzzz, r11.xyzx + add r10.xyz, r10.xyzx, cb3[3].xyzx + mad r11.x, r10.x, l(0.500000), cb3[4].x + mad r9.w, r10.y, l(0.500000), l(0.500000) + add r11.z, -r9.w, cb3[4].y + add r10.xy, r11.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r9.w, r10.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r9.w, r10.xyxx, t8.xxxx, s4, r9.w +else + mov r9.w, l(1.000000) +endif +mov_sat r10.x, r2.y +add r10.y, l(1.000000), -cb0[230].w +mad r10.x, r10.x, r10.y, cb0[230].w +add r10.yz, r5.xxzx, -cb0[44].xxzx +max r10.y, |r10.z|, |r10.y| +mul r10.z, r9.w, r10.x +mul r11.x, l(0.0500000119), cb0[222].w +mad r11.y, -cb0[222].w, l(0.700000), r10.y +div r11.x, l(1.000000, 1.000000, 1.000000, 1.000000), r11.x +mul_sat r11.x, r11.x, r11.y +mad r11.y, r11.x, l(-2.000000), l(3.000000) +mul r11.x, r11.x, r11.x +mul r11.x, r11.x, r11.y +mad r9.w, -r10.x, r9.w, l(1.000000) +mad r9.w, r11.x, r9.w, r10.z +ge r10.z, r1.z, l(0.045000) +and r10.z, r10.z, l(0x3f800000) +mul r10.z, r9.w, r10.z +deriv_rty_coarse r11.xyz, r5.xyzx +deriv_rtx_coarse r12.xyz, r5.zxyz +mul r13.xyz, r11.xyzx, r12.xyzx +mad r11.xyz, r11.zxyz, r12.yzxy, -r13.xyzx +dp3 r11.w, r11.xyzx, r11.xyzx +max r11.w, r11.w, l(1.175494351E-38) +rsq r11.w, r11.w +mul r12.xyz, r11.wwww, r11.xzyx +mov_sat r11.y, r12.x +add r11.z, r11.y, l(-0.988000) +mul_sat r11.z, r11.z, l(1000.012878) +mad r12.w, r11.z, l(-2.000000), l(3.000000) +mul r11.z, r11.z, r11.z +mul r11.z, r11.z, r12.w +add r12.w, |r3.w|, l(-15.000000) +mul_sat r12.w, r12.w, l(0.015000) +add r12.w, -r12.w, l(1.000000) +lt r13.x, l(0.000488281250), cb0[223].y +mad r13.y, cb0[223].z, l(0.300000), l(0.687000) +add r11.y, r11.y, -r13.y +mul_sat r11.y, r11.y, l(-1000.012878) +mad r13.y, r11.y, l(-2.000000), l(3.000000) +mul r11.y, r11.y, r11.y +mul r11.y, r11.y, r13.y +mad r11.x, r11.x, r11.w, l(0.500000) +mul_sat r11.x, r11.x, l(2.500000) +mad r11.w, r11.x, l(-2.000000), l(3.000000) +mul r11.x, r11.x, r11.x +mul r11.x, r11.x, r11.w +mul r11.x, r11.x, r11.y +lt r11.x, l(0.000488281250), r11.x +and r11.x, r11.x, r13.x +if_nz r11.x + mul r11.xy, |r12.yzyy|, |r12.yzyy| + add r11.w, r11.y, r11.x + div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w + mul r11.xy, r11.wwww, r11.xyxx + mul r13.xyz, r12.xzyx, l(0.000000, 1.000000, 0.000000, 0.000000) + mad r13.xyz, r12.yxzy, l(1.000000, 0.000000, 0.000000, 0.000000), -r13.xyzx + dp2 r11.w, r13.xyxx, r13.xyxx + rsq r11.w, r11.w + mul r13.xyz, r11.wwww, r13.xyzx + mul r14.xyz, r12.xzyx, r13.xyzx + mad r14.xyz, r13.zxyz, r12.zyxz, -r14.xyzx + dp3 r11.w, r14.xyzx, r14.xyzx + rsq r11.w, r11.w + mul r14.xyz, r11.wwww, r14.xyzx + add r15.xyz, r5.xyzx, r5.xyzx + round_ni r15.xyz, r15.xyzx + add r15.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + add r13.zw, r15.yyyy, r15.xxxz + dp2 r11.w, r13.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + lt r13.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.zzzy + lt r15.xy, r12.zyzz, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r13.zw, r13.zzzw, -r15.xxxy + itof r13.zw, r13.zzzw + mul r15.xy, r5.xzxx, r13.zwzz + mul r13.z, r9.z, r11.w + add r13.w, -r11.w, l(1.000000) + mad r13.w, r13.w, l(0.700000), l(0.300000) + mul r16.xy, r13.zzzz, l(3.000000, 6.000000, 0.000000, 0.000000) + mad r13.z, -cb0[223].x, r13.w, r16.x + frc r17.x, r13.z + mad r13.z, cb0[223].x, l(-0.300000), r16.y + frc r17.y, r13.z + mul r11.w, r11.w, l(5.000000) + round_ni r11.w, r11.w + add r16.x, r11.w, l(1.000000) + mul r16.y, r5.y, r16.x + mov r5.w, l(0.100000) + mul r13.zw, r5.yyyw, r16.xxxy + frc r13.zw, r13.zzzw + add r16.xy, r17.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + add r16.xy, r13.zwzz, -r16.xyxx + add r16.xy, r16.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) + mul_sat r16.xy, r16.xyxx, l(5.00000048, 5.00000048, 0.000000, 0.000000) + mad r16.zw, r16.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) + mul r16.xy, r16.xyxx, r16.xyxx + mul r16.xy, r16.xyxx, r16.zwzz + add r16.zw, -r13.zzzw, r17.xxxy + max r16.xy, r16.zwzz, r16.xyxx + add r17.zw, -r17.xxxy, r13.zzzw + add r17.zw, r17.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) + mul r17.zw, r17.zzzw, l(0.000000, 0.000000, 5.00000048, 5.00000048) + max r17.zw, r17.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r18.xy, r17.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r17.zw, r17.zzzw, r17.zzzw + mul r17.zw, r17.zzzw, r18.xxxy + add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + max r16.zw, r16.zzzw, r17.zzzw + ge r13.zw, r13.zzzw, r17.xxxy + and r13.zw, r13.zzzw, l(0, 0, 0x3f800000, 0x3f800000) + add r16.zw, -r16.xxxy, r16.zzzw + mad r13.zw, r13.zzzw, r16.zzzw, r16.xxxy + mad r11.w, r13.z, r13.z, l(-0.400000) + mul_sat r11.w, r11.w, l(1.66666663) + mad r13.z, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r13.z + mad r13.z, r13.w, l(2.000000), l(-1.000000) + mul r16.x, r11.w, l(0.010000) + mul r16.y, r13.z, r16.x + mad r17.x, r9.z, l(0.100000), r16.y + mul r16.x, r11.w, r16.x + mad r16.x, r16.x, r13.z, r9.z + mul r17.y, r9.z, r16.x + mov r15.z, r5.y + mad r16.xy, r15.yzyy, cb0[224].xyxx, r17.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r16.xyxx, t10.xyzw, s2, cb0[108].x + mov r15.w, -r15.x + mad r15.xy, r15.wzww, cb0[224].xyxx, r17.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r15.xyzw, r15.xyxx, t10.xyzw, s2, cb0[108].x + mul r15.xyzw, r11.yyyy, r15.xyzw + mad r15.xyzw, r16.xyzw, r11.xxxx, r15.xyzw + mad r11.xy, r15.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mad r9.z, r11.w, l(2.000000), l(-1.000000) + mad_sat r9.z, r9.z, l(0.800000), r13.w + mad r13.w, -r15.w, l(0.500000), l(1.000000) + mad r9.z, r9.z, r13.w, l(-0.700000) + mul_sat r9.z, r9.z, l(3.33333325) + mad r13.w, r9.z, l(-2.000000), l(3.000000) + mul r9.z, r9.z, r9.z + mul r9.z, r9.z, r13.w + mul r13.z, r13.z, r15.w + mad_sat r11.w, r13.z, l(0.500000), r11.w + mad r11.w, r11.w, l(0.500000), l(0.100000) + max r9.z, r9.z, r11.w + add r11.w, -r9.z, l(1.000000) + max r11.w, r11.w, l(0.000000) + mul r13.z, r11.w, r11.w + mul r13.z, r13.z, r13.z + mul r11.w, r11.w, r13.z + ge r11.w, r15.z, r11.w + and r11.w, r11.w, l(0x3f800000) + mad r9.z, r9.z, l(0.700000), l(0.200000018) + mad r9.z, r11.w, r9.z, l(0.100000) + mul r9.z, r15.z, r9.z + mul r9.z, r9.z, cb0[223].y + mul r9.z, r9.z, l(0.330000) + mul r11.w, r10.z, cb0[222].x + mul r11.w, r12.w, r11.w + mul r9.z, r9.z, r11.w + dp2 r11.w, r11.xyxx, r11.xyxx + min r11.w, r11.w, l(1.000000) + add r11.w, -r11.w, l(1.000000) + sqrt r11.w, r11.w + max r11.w, r11.w, l(0.000488281250) + mul_sat r13.z, r9.z, l(10.000000) + mad r13.w, r13.z, l(-2.000000), l(3.000000) + mul r13.z, r13.z, r13.z + mul r13.z, r13.z, r13.w + mul r13.z, r13.z, cb0[223].y + mul r15.xy, r11.xyxx, r13.zzzz + add r11.x, l(-1.500000), cb0[223].y + mul_sat r11.x, r11.x, l(0.666666687) + mad r11.y, r11.x, l(-2.000000), l(3.000000) + mul r11.x, r11.x, r11.x + mul r11.x, r11.x, r11.y + mul r11.y, r11.x, l(-0.200000) + mad r11.x, -r11.x, l(-0.200000), r11.w + mad r15.z, r9.z, r11.x, r11.y + dp3 r11.x, r15.xyzx, r15.xyzx + max r11.x, r11.x, l(1.175494351E-38) + rsq r11.x, r11.x + mul r11.xyw, r11.xxxx, r15.xyxz + mov r15.x, r13.y + mov r15.y, r14.x + mov r15.z, r12.y + dp3 r15.x, r15.xyzx, r11.xywx + mov r14.w, r12.x + dp2 r15.y, r14.ywyy, r11.ywyy + mov r12.x, r13.x + mov r12.y, r14.z + dp3 r15.z, r12.xyzx, r11.xywx + mad r11.xyw, -r3.xyxz, r1.wwww, r15.xyxz + mad r13.xyz, r9.zzzz, r11.xywx, r2.xywx + mul r9.z, r9.z, cb0[223].y + mul r9.z, r9.z, l(0.330000) +else + mov r13.xyz, r2.xywx + mov r9.z, l(0) +endif +lt r11.xy, l(0.000488281250, 0.000488281250, 0.000000, 0.000000), cb0[227].ywyy +or r11.x, r11.y, r11.x +lt r11.y, l(0.000488281250), r11.z +and r11.x, r11.y, r11.x +if_nz r11.x + mul r11.xyw, r2.ywyx, l(1.000000, 0.000000, 0.000000, 0.000000) + mad r11.xyw, r2.xyxw, l(0.000000, 0.000000, 0.000000, 1.000000), -r11.xyxw + dp2 r12.x, r11.xwxx, r11.xwxx + rsq r12.x, r12.x + mul r11.xyw, r11.xyxw, r12.xxxx + mul r12.xyz, r2.ywxy, r11.xywx + mad r12.xyz, r11.wxyw, r2.wxyw, -r12.xyzx + dp3 r11.y, r12.xyzx, r12.xyzx + rsq r11.y, r11.y + mul r14.xyz, r11.yyyy, r12.xzyx + mul r12.xy, -r5.xzxx, cb0[228].xyxx + frc r15.xy, r12.xyxx + round_ni r12.xy, r12.xyxx + dp2 r11.y, r12.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.y, null, r11.y + mul r11.y, r11.y, l(43758.546875) + frc r11.y, r11.y + add r12.x, r11.y, cb0[227].x + frc r12.x, r12.x + mul r12.y, cb0[228].z, cb0[228].z + mul r12.x, r12.y, r12.x + round_ni r12.x, r12.x + div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[228].z + mad r15.zw, -r5.xxxz, cb0[228].xxxy, cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.xy, r15.zwzz, t11.zwxy, s2, cb0[108].x + mad r15.zw, -r5.xxxz, cb0[228].xxxy, -cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.zw, r15.zwzz, t11.xyzw, s2, cb0[108].x + mul r16.xyzw, r16.xyzw, cb0[227].wwww + mad r16.xyzw, r16.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -cb0[227].wwww + ge r11.y, l(0.500000), r11.y + and r11.y, r11.y, l(0x3f800000) + add r15.zw, -r15.xxxy, r15.yyyx + mad r15.xy, r11.yyyy, r15.zwzz, r15.xyxx + div r11.y, r12.x, cb0[228].z + ge r12.z, r11.y, -r11.y + frc r11.y, |r11.y| + movc r11.y, r12.z, r11.y, -r11.y + mul r11.y, r11.y, cb0[228].z + mul r17.x, r11.y, r12.y + add r15.zw, l(0.000000, 0.000000, -0.050000, -1.000000), cb0[228].wwwz + mul r11.y, r12.y, r12.x + round_ni r11.y, r11.y + add r11.y, -r11.y, r15.w + mul r17.y, r11.y, r12.y + mad r12.xy, r15.xyxx, r12.yyyy, r17.xyxx + frc r12.xy, r12.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r12.xy, r12.xyxx, t11.xyzw, s1, cb0[108].x + mul r12.xy, r12.xyxx, cb0[227].yyyy + mad r12.xy, r12.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[227].yyyy + add r15.xy, r16.zwzz, r16.xyxx + add r12.xy, r12.xyxx, r15.xyxx + dp2 r11.y, r12.xyxx, r12.xyxx + min r11.y, r11.y, l(1.000000) + add r11.y, -r11.y, l(1.000000) + sqrt r11.y, r11.y + max r12.z, r11.y, l(0.000488281250) + dp3 r11.y, r12.xyzx, r12.xyzx + rsq r11.y, r11.y + mul r12.xyz, r11.yyyy, r12.xyzx + mov r14.w, r2.x + dp2 r16.x, r14.xwxx, r12.yzyy + mov r17.x, r11.w + mov r17.y, r14.z + mov r17.z, r2.y + dp3 r16.y, r17.xyzx, r12.xyzx + mov r14.x, r11.x + mov r14.z, r2.w + dp3 r16.z, r14.xyzx, r12.xyzx + mul r10.z, r10.z, cb0[222].x + mul r10.z, r11.z, r10.z + max r11.x, l(0.000488281250), cb0[228].w + mov_sat r15.z, r15.z + add r11.y, -r11.x, r15.z + add r11.x, r2.z, -r11.x + div r11.y, l(1.000000, 1.000000, 1.000000, 1.000000), r11.y + mul_sat r11.x, r11.y, r11.x + mad r11.y, r11.x, l(-2.000000), l(3.000000) + mul r11.x, r11.x, r11.x + mul r11.x, r11.x, r11.y + mul r10.z, r10.z, r11.x + mul r10.z, r12.w, r10.z + mad r3.xyz, -r3.xyzx, r1.wwww, r16.xyzx + mad r13.xyz, r10.zzzz, r3.xyzx, r2.xywx +endif +min r1.w, r9.y, r9.x +mul r3.x, r10.x, cb0[230].z +mad r3.y, -cb0[230].z, r10.x, l(1.000000) +mad r3.x, r9.w, r3.y, r3.x +mad r3.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r3.z, r10.y, -cb0[222].w +div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y +mul_sat r3.y, r3.y, r3.z +mad r3.z, r3.y, l(-2.000000), l(3.000000) +mul r3.y, r3.y, r3.y +mul r3.y, r3.y, r3.z +add r3.z, -r3.x, cb0[230].y +mad r3.x, r3.y, r3.z, r3.x +add r3.x, -r3.x, l(1.000000) +mul r3.y, r3.x, r9.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r3.z, -r2.z, l(1.000000) +mad_sat r9.w, r3.z, cb0[222].z, cb0[222].y +mad_sat r9.w, r9.z, cb0[224].z, r9.w +add r10.x, -r9.w, l(1.000000) +mad r9.w, r1.x, r10.x, r9.w +mul_sat r10.x, r10.w, l(3.33333325) +mad r10.y, r10.x, l(-2.000000), l(3.000000) +mul r10.x, r10.x, r10.x +mad r10.x, -r10.y, r10.x, l(1.000000) +mul r10.y, r9.w, cb0[222].x +add r10.z, -r1.x, l(1.000000) +mul r10.y, r10.z, r10.y +mul r10.y, r10.x, r10.y +mad r10.y, r10.y, l(-0.750000), l(1.000000) +mad r9.w, r9.w, l(-0.299999952), l(0.900000) +sqrt r10.z, r3.z +add r9.w, r9.w, r10.z +add_sat r9.w, r9.w, l(-0.600000) +max r9.w, r3.z, r9.w +min r9.w, r9.w, l(0.990000) +add_sat r10.z, l(2.000000), -cb0[222].x +mul r10.z, r10.z, cb0[222].x +mul r10.x, r10.x, r10.z +mad r3.x, -r9.x, r3.x, l(1.000000) +mul r3.x, r3.x, r10.x +add r9.x, -r3.z, r9.w +mad r3.x, r3.x, r9.x, r3.z +add r3.x, -r3.x, l(1.000000) +mul_sat r3.z, r9.z, l(20.000000) +mad r9.x, r3.z, l(-2.000000), l(3.000000) +mul r3.z, r3.z, r3.z +mul r3.z, r3.z, r9.x +mad r3.z, r3.z, l(-0.900000), l(1.000000) +mul r9.x, r3.z, r3.x +add r9.y, r9.y, l(-1.000000) +mad r11.x, r1.z, r9.y, l(1.000000) +add r11.y, -r1.z, l(1.000000) +movc r9.yz, r8.wwww, r11.xxyx, l(0,1.000000,1.000000,0) +min r1.z, r9.x, r9.y +mad r3.x, r3.x, r3.z, -r1.z +mad r1.z, r1.w, r3.x, r1.z +add r2.z, -r1.z, r2.z +mad r11.z, r3.y, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r9.xyw, r0.xyzz, t26.xywz +min r1.z, r10.y, r9.z +add r2.z, -r1.z, r10.y +mad r1.z, r1.w, r2.z, r1.z +add r1.w, -r1.z, l(1.000000) +mad r1.z, r3.y, r1.w, r1.z +mul r3.xyz, r1.zzzz, r9.xywx +mul r10.xyz, r1.xxxx, r3.xyzx +mad r9.xyz, r9.xywx, r1.zzzz, -r10.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz +dp3 r2.z, r13.xyzx, r8.xyzx +max r10.x, r2.z, l(0.000000) +mul r3.y, r11.z, r11.z +mul r12.x, r10.x, r10.x +mul r12.z, r10.x, r12.x +mul r2.z, r3.y, r3.y +mul r3.z, r3.y, r2.z +mov r10.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r14.x, l(3.327070, 1.000000, 0.000000, 0.000000), r10.xyxx +dp2 r14.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r10.xzxx +mov r3.x, l(1.000000) +dp2 r8.w, r14.xyxx, r3.xyxx +mov r12.yw, l(0,9.044010,0,1.000000) +dp3 r14.x, l(3.596850, -1.367720, 1.000000, 0.000000), r12.xzwx +dp3 r14.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r12.xyzx +mov r15.x, l(5.565890) +mov r15.yz, r12.xxzx +dp3 r14.z, l(1.000000, 19.788601, -20.212299, 0.000000), r15.xyzx +dp3 r9.w, r14.xyzx, r3.xyzx +div r8.w, r8.w, r9.w +dp2 r14.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r10.xwxx +mov r12.x, l(1.296780) +mov r12.y, r10.x +dp2 r14.y, l(1.000000, -0.755907, 0.000000, 0.000000), r12.xyxx +dp2 r9.w, r14.xyxx, r3.xyxx +dp3 r14.x, l(2.923380, 59.418800, 1.000000, 0.000000), r12.yzwy +mov r12.xw, l(20.322500,0,0,121.563004) +dp3 r14.y, l(1.000000, -27.030199, 222.591995, 0.000000), r12.xyzx +dp3 r14.z, l(626.130005, 316.627014, 1.000000, 0.000000), r12.yzwy +dp3 r3.x, r14.xyzx, r3.xyzx +div r3.x, r9.w, r3.x +mad r10.yzw, r1.xxzw, r8.wwww, r3.xxxx +add r3.x, r3.x, r8.w +ld_indexable(texture2d)(float,float,float,float) r3.y, r0.xyzz, t6.zxyw +lt r0.z, l(0.001000), r3.y +if_nz r0.z + dp3 r0.z, -r8.xyzx, r13.xyzx + add r0.z, r0.z, r0.z + mad r12.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx + dp3 r0.z, -cb2[0].xyzx, r12.xyzx + mad r14.xyz, cb2[0].xyzx, r0.zzzz, r12.xyzx + lt r0.z, r0.z, cb2[4].z + dp3 r8.w, r14.xyzx, r14.xyzx + max r8.w, r8.w, l(0.0000610351562) + rsq r8.w, r8.w + mul r14.xyz, r8.wwww, r14.xyzx + mul r14.xyz, r14.xyzx, cb2[4].yyyy + mad r14.xyz, -cb2[0].xyzx, cb2[4].zzzz, r14.xyzx + dp3 r8.w, r14.xyzx, r14.xyzx + rsq r8.w, r8.w + mul r14.xyz, r8.wwww, r14.xyzx + movc r12.xyz, r0.zzzz, r14.xyzx, r12.xyzx + mad r6.xyz, r6.xyzx, r7.wwww, r12.xyzx + dp3 r0.z, r6.xyzx, r6.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r6.xyz, r0.zzzz, r6.xyzx + dp3_sat r11.x, r12.xyzx, r13.xyzx + dp3_sat r0.z, r13.xyzx, r6.xyzx + min r11.y, r10.x, l(1.000000) + mad r7.w, r0.z, r2.z, -r0.z + mad r0.z, r7.w, r0.z, l(1.000000) + dp3_sat r6.x, r8.xyzx, r6.xyzx + add r6.x, -r6.x, l(1.000000) + mul r6.y, r6.x, r6.x + mul r6.y, r6.y, r6.y + mul r6.z, r6.x, r6.y + add r7.w, -r11.z, l(1.000000) + mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) + mad r8.w, r7.w, r8.w, l(1.049970) + mad r7.w, r7.w, r8.w, l(0.409255) + min r7.w, r7.w, l(0.999000) + add r8.w, -r7.w, l(1.000000) + add r14.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r14.xyz, r14.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx + mad r6.x, -r6.y, r6.x, l(1.000000) + mad r6.xyz, r1.xzwx, r6.xxxx, r6.zzzz + mul r0.z, r0.z, r0.z + div r0.z, r2.z, r0.z + mad r15.xy, -r11.yxyy, r2.zzzz, r11.yxyy + mad r15.xy, r15.xyxx, r11.yxyy, r2.zzzz + sqrt r15.xy, r15.xyxx + mul r15.xy, r11.xyxx, r15.xyxx + add r2.z, r15.y, r15.x + add r2.z, r2.z, l(0.000100) + div r2.z, l(0.500000), r2.z + mul r0.z, r0.z, r2.z + mul r6.xyz, r0.zzzz, r6.xyzx + min r6.xyz, r6.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r15.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r15.xyxx, t12.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r15.zwzz, t12.yzxw, s1, l(0.000000) + mul r0.z, r0.z, r2.z + mul r0.z, r7.w, r0.z + div r0.z, r0.z, r8.w + mul r15.xyz, r14.xyzx, r14.xyzx + mul r15.xyz, r0.zzzz, r15.xyzx + mad r14.xyz, -r14.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r14.xyz, r15.xyzx, r14.xyzx + add r6.xyz, r6.xyzx, r14.xyzx + mul r6.xyz, r6.xyzx, cb2[4].xxxx + max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r6.xyz, r6.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + dp3_sat r0.z, r12.xyzx, r2.xywx + mul r12.xyz, r0.zzzz, r9.xyzx + mad r6.xyz, r6.xyzx, r11.xxxx, r12.xyzx + mul r6.xyz, r6.xyzx, cb2[1].xyzx + mov r3.z, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r3.yzyy, t7.xywz, s1, cb0[108].x + add r0.z, -r3.y, l(1.000000) + mad r11.xyw, r6.xyxz, r11.xyxw, -r6.xyxz + mad r6.xyz, r0.zzzz, r11.xywx, r6.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t13.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r6.xyz, r0.zzzz, r6.xyzx +else + mov r6.xyz, l(0,0,0,0) +endif +ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r3.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + dp3 r2.z, r2.xywx, r8.xyzx + max r2.z, r2.z, l(0.000000) + add r2.z, r0.z, r2.z + mad r3.y, r11.z, l(-16.000000), l(-1.000000) + exp r3.y, r3.y + log r2.z, |r2.z| + mul r2.z, r2.z, r3.y + exp r2.z, r2.z + add r2.z, r0.z, r2.z + add r2.z, r2.z, l(-1.000000) + mov_sat r11.xyw, r2.zzzz + mad r12.xyz, r9.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r9.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r9.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + max r12.xyz, r0.zzzz, r12.xyzx +else + mov r11.xyw, r1.yyyy + mov r12.xyz, r1.yyyy +endif +mad r14.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[212].x +mad r15.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx +dp2 r0.z, r15.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r14.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r14.xyzx +mad r15.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r15.xyz, r14.xzyx, -r15.xyzx +max r0.z, |r15.y|, |r15.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.y, |r15.z|, l(-208.000000) +mul_sat r1.y, r1.y, l(0.031250) +max r0.z, r0.z, r1.y +ne r1.y, l(0.000000), cb0[210].w +lt r2.z, r0.z, l(1.000000) +and r1.y, r1.y, r2.z +if_nz r1.y + mad r15.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r15.xyz, r14.xzyx, -r15.xyzx + max r1.y, |r15.y|, |r15.x| + add r1.y, r1.y, l(-29.000000) + mul_sat r1.y, r1.y, l(0.500000) + add r2.z, |r15.z|, l(-13.000000) + mul_sat r2.z, r2.z, l(0.500000) + max r1.y, r1.y, r2.z + lt r2.z, r1.y, l(1.000000) + if_nz r2.z + mad r15.xyz, r14.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r16.xyz, r15.xyzx, cb0[211].xyzx + round_ni r16.xyz, r16.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r16.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) + add r2.z, -r1.y, l(1.000000) + mul r3.y, l(0.500000), cb0[211].y + mad r7.w, -cb0[211].y, l(0.500000), l(1.000000) + max r3.y, r3.y, r15.y + min r3.y, r7.w, r3.y + mul r15.w, r3.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) + mad r3.y, r17.w, r2.z, r0.z + add r18.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r16.yyyy, r18.xyzx + mov r18.w, r16.y + mul r18.xyzw, r2.zzzz, r18.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r16.xxxx, r15.xyzx + mov r15.w, r16.x + mul r15.xyzw, r2.zzzz, r15.xyzw + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r16.wwww, r17.xyzx + mul r16.xyzw, r2.zzzz, r16.xyzw + else + mov r18.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r3.y, r0.z + endif + mad r17.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r17.xyz, r14.xzyx, -r17.xyzx + max r2.z, |r17.y|, |r17.x| + add r2.z, r2.z, l(-116.000000) + mul_sat r2.z, r2.z, l(0.125000) + add r7.w, |r17.z|, l(-52.000000) + mul_sat r7.w, r7.w, l(0.125000) + max r2.z, r2.z, r7.w + lt r7.w, r2.z, l(1.000000) + if_nz r7.w + mad r17.xyz, r14.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r17.xyzx, cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r19.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r17.xyzx, t19.yzwx, s2, l(0.000000) + add r7.w, -r2.z, l(1.000000) + mul r1.y, r1.y, r7.w + mul r7.w, l(0.500000), cb0[211].y + mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) + max r7.w, r7.w, r17.y + min r7.w, r8.w, r7.w + mul r17.w, r7.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t20.xyzw, s1, l(0.000000) + mad r3.y, r20.w, r1.y, r3.y + add r21.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t20.xyzw, s1, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r19.yyyy, r21.xyzx + mov r21.w, r19.y + mad r18.xyzw, r21.xyzw, r1.yyyy, r18.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t20.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r19.xxxx, r17.xyzx + mov r17.w, r19.x + mad r15.xyzw, r17.xyzw, r1.yyyy, r15.xyzw + mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r19.wwww, r17.xyzx + mad r16.xyzw, r19.xyzw, r1.yyyy, r16.xyzw + endif + lt r1.y, l(0.000000), r2.z + if_nz r1.y + mad r14.xyz, r14.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r14.xyzx, cb0[211].xyzx + mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r17.xyzx + mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r14.xyz, r19.xyzx, r14.xyzx + min r14.xyz, r17.xyzx, r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r14.xyzx, t21.yzwx, s2, l(0.000000) + add r1.y, -r0.z, l(1.000000) + mul r1.y, r1.y, r2.z + max r2.z, r19.y, r14.y + min r2.z, r17.y, r2.z + mul r14.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r14.xwzx, t22.xyzw, s1, l(0.000000) + add r19.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r20.yyyy, r19.xyzx + mov r19.w, r20.y + mad r18.xyzw, r19.xyzw, r1.yyyy, r18.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t22.xyzw, s1, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r20.xxxx, r14.xyzx + mov r14.w, r20.x + mad r15.xyzw, r14.xyzw, r1.yyyy, r15.xyzw + mad r14.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r14.xyzx + mad r16.xyzw, r20.xyzw, r1.yyyy, r16.xyzw + mad r3.y, r17.w, r1.y, r3.y + endif + mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) + add r14.x, -r0.z, r1.y + add r0.z, r0.z, r1.y + mul r14.y, r0.z, l(0.500000) +else + mov r18.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r14.xy, l(0,1.000000,0,0) +endif +mul r17.xyzw, r14.yxyy, cb0[213].ywzx +mad r17.y, r17.y, l(0.500000), r17.x +mul r14.zw, r14.yyyx, cb0[213].wwwy +mad r17.x, r14.w, l(0.375000), r14.z +add r16.xyzw, r16.xyzw, r17.wyzx +mul r17.xyzw, r14.yxyy, cb0[214].ywzx +mad r17.y, r17.y, l(0.500000), r17.x +mul r14.zw, r14.yyyx, cb0[214].wwwy +mad r17.x, r14.w, l(0.375000), r14.z +add r15.xyzw, r15.xyzw, r17.wyzx +mul r17.xyzw, r14.yxyy, cb0[215].ywzx +mad r17.y, r17.y, l(0.500000), r17.x +mul r14.xy, r14.yxyy, cb0[215].wyww +mad r17.x, r14.y, l(0.375000), r14.x +add r14.xyzw, r17.wyzx, r18.xyzw +ge r17.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r17.y, r17.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r4.zwzz, t16.xyzw, s1, l(0.000000) + lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| + or r4.zw, r18.zzzw, r18.xxxy + or r0.z, r4.w, r4.z + if_nz r0.z + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mov r4.z, l(1.000000) + mov r4.w, r0.z + mov r1.y, l(0) + loop + ge r2.z, l(4.600000), r4.w + breakc_nz r2.z + iadd r2.z, r1.y, l(1) + mul r18.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r4.zw, r18.xxxy + mov r1.y, r2.z + continue + endloop + mul r17.xyzw, r4.zzzz, r17.xyzw + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb4[3].x, cb4[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r18.x, r0.z, l(0.00390625000) + mov r18.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r18.xyxx, t15.zwxy, s1, l(0.000000) + mad r4.zw, r4.zzzw, cb4[2].xxxy, cb4[2].zzzw + mul r18.x, r4.z, l(3.54490781) + mul r18.yzw, r4.wwww, r17.yyzw + mul r0.z, r17.x, l(0.406976730) + exp r0.z, r0.z + mul r17.xyzw, r0.zzzz, r18.xyzw + mov r18.xyzw, r17.xyzw + mov r0.z, l(0) + loop + uge r2.z, r0.z, r1.y + breakc_nz r2.z + mul r19.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r2.z, r19.xyzw, r18.xyzw + dp2 r3.y, r19.yxyy, r18.xyxx + dp2 r4.z, r19.zxzz, r18.xzxx + dp2 r4.w, r19.wxww, r18.xwxx + iadd r7.w, r0.z, l(1) + mov r18.x, r2.z + mov r18.y, r3.y + mov r18.zw, r4.zzzw + mov r0.z, r7.w + continue + endloop + mul r17.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r18.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r17.xyzw, r18.xyzw + dp2 r1.y, r17.yxyy, r18.xyxx + dp2 r2.z, r17.zxzz, r18.xzxx + dp2 r3.y, r17.wxww, r18.xwxx + mul r18.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.z, r17.xyzw, r18.xyzw + dp2 r4.w, r17.yxyy, r18.xyxx + dp2 r7.w, r17.zxzz, r18.xzxx + dp2 r8.w, r17.wxww, r18.xwxx + mul r18.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r9.w, r17.xyzw, r18.xyzw + dp2 r10.x, r17.yxyy, r18.xyxx + dp2 r12.w, r17.zxzz, r18.xzxx + dp2 r17.x, r17.wxww, r18.xwxx + mul r16.w, r0.z, l(0.886226952) + mul r16.x, r3.y, l(-1.02332675) + mul r16.y, r1.y, l(-1.02332675) + mul r16.z, r2.z, l(1.02332675) + mul r15.x, r8.w, l(-1.02332675) + mul r15.yw, r4.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r15.z, r7.w, l(1.02332675) + mul r14.w, r9.w, l(0.886226952) + mul r14.x, r17.x, l(-1.02332675) + mul r14.y, r10.x, l(-1.02332675) + mul r14.z, r12.w, l(1.02332675) + endif +endif +dp3 r0.z, r16.xyzx, r2.xywx +add r0.z, r16.w, r0.z +max r16.x, r0.z, l(0.000000) +dp3 r0.z, r15.xyzx, r2.xywx +add r0.z, r15.w, r0.z +max r16.y, r0.z, l(0.000000) +dp3 r0.z, r14.xyzx, r2.xywx +add r0.z, r14.w, r0.z +max r16.z, r0.z, l(0.000000) +dp3 r0.z, -r8.xyzx, r13.xyzx +add r0.z, r0.z, r0.z +mad r2.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r1.y, r11.z, l(0.001000) +log r1.y, r1.y +mad r1.y, -r1.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.y +mul r4.zw, r4.xxxy, cb1[0].wwww +round_ni r4.zw, r4.zzzw +add r1.y, |r3.w|, -cb1[2].y +round_ni r1.y, r1.y +add r2.w, l(-1.000000), cb1[1].x +max r3.y, r1.y, l(0.000000) +min r2.w, r2.w, r3.y +ge r1.y, r2.w, r1.y +mad r3.y, r4.w, cb1[0].x, r4.z +ftoi r3.y, r3.y +iadd r3.y, r3.y, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.y, r3.y, l(0), t0.xxxx +ftoi r2.w, r2.w +iadd r2.w, r2.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.w, r2.w, l(0), t0.xxxx +and r2.w, r2.w, r3.y +and r1.y, r1.y, r2.w +mul r14.xyz, r16.xyzx, cb0[111].xxxx +dp3 r2.w, r14.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r5.w, l(1.000000) +mov r13.w, l(1.000000) +mov r14.xyz, l(0,0,0,0) +mov r3.y, l(1.000000) +mov r4.z, r1.y +mov r4.w, l(0) +loop + lt r7.w, l(0.010000), r3.y + ine r8.w, r4.z, l(0) + and r8.w, r7.w, r8.w + if_nz r8.w + firstbit_lo r8.w, r4.z + ishl r9.w, l(1), r8.w + xor r4.z, r4.z, r9.w + ishl r8.w, r8.w, l(3) + dp4 r15.x, cb1[r8.w + 6].xyzw, r5.xyzw + dp4 r15.y, cb1[r8.w + 7].xyzw, r5.xyzw + dp4 r15.z, cb1[r8.w + 8].xyzw, r5.xyzw + ge r17.xyz, cb1[r8.w + 5].xyzx, |r15.xyzx| + and r9.w, r17.y, r17.x + and r9.w, r17.z, r9.w + if_nz r9.w + mul r9.w, l(0.100000), cb1[r8.w + 5].x + mul r17.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r17.xy, r17.xyxx, r17.xyxx + add r18.xyz, -|r15.xyzx|, cb1[r8.w + 5].xyzx + mul r18.xyz, r18.xyzx, cb1[r8.w + 9].xyzx + eq r10.x, l(1.000000), cb1[r8.w + 10].x + if_nz r10.x + dp3 r19.x, cb1[r8.w + 6].xyzx, r2.xyzx + dp3 r19.y, cb1[r8.w + 7].xyzx, r2.xyzx + dp3 r19.z, cb1[r8.w + 8].xyzx, r2.xyzx + add r20.xyz, -r15.xyzx, cb1[r8.w + 5].xyzx + div r20.xyz, r20.xyzx, r19.xyzx + add r21.xyz, -r15.xyzx, -cb1[r8.w + 5].xyzx + div r21.xyz, r21.xyzx, r19.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx + min r10.x, r20.y, r20.x + min r10.x, r20.z, r10.x + mad r15.xyz, r19.xyzx, r10.xxxx, r15.xyzx + else + mov r15.xyz, r2.xyzx + endif + dp3 r10.x, r15.xyzx, r15.xyzx + rsq r10.x, r10.x + mul r15.xyz, r10.xxxx, r15.xyzx + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r20.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r19.xyz, -r19.xyzx, r20.xyzx + itof r19.xyz, r19.xyzx + dp3 r10.x, r15.xyzx, r19.xyzx + div r15.xyz, r15.xyzx, r10.xxxx + lt r10.x, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r19.xxxy + movc r15.xy, r10.xxxx, r15.zwzz, r15.xyxx + dp4 r10.x, cb1[r8.w + 4].xyzw, r13.xyzw + max r10.x, r10.x, l(0.000000) + max r10.x, r10.x, l(0.000100) + min r11.z, r18.z, r18.y + min r11.z, r11.z, r18.x + add r12.w, r17.y, r17.x + mad r12.w, r17.z, r17.z, r12.w + mad r9.w, r9.w, r9.w, -r12.w + mul r9.w, r9.w, cb1[r8.w + 9].x + mul r9.w, r9.w, cb1[r8.w + 9].x + add r12.w, l(1.000000), -cb1[r8.w + 10].y + mul r9.w, r9.w, r12.w + mul r9.w, r9.w, l(100.000000) + mad_sat r9.w, r11.z, cb1[r8.w + 10].y, r9.w + mul r11.z, r9.w, cb1[r8.w + 10].w + mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r15.xy, r15.xyxx, cb1[1].wwww, cb1[2].wwww + mov r15.z, cb1[r8.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z + mul r15.xyz, r15.xyzx, cb1[r8.w + 9].wwww + div r12.w, r2.w, r10.x + min r12.w, |r12.w|, l(1.000000) + mad r12.w, r12.w, l(2.000000), r2.w + add r10.x, r10.x, l(2.000000) + div r10.x, r12.w, r10.x + add r10.x, r10.x, l(-1.000000) + mad r10.x, r10.x, cb0[112].w, l(1.000000) + mul r15.xyz, r10.xxxx, r15.xyzx + mul r15.xyz, r11.zzzz, r15.xyzx + mad r14.xyz, r15.xyzx, r3.yyyy, r14.xyzx + mad r8.w, -r9.w, cb1[r8.w + 10].w, l(1.000000) + mul r3.y, r3.y, r8.w + endif + mov r4.w, l(-1) + continue + else + mov r4.w, r7.w + break + endif + mov r4.w, r7.w +endloop +if_nz r4.w + dp3 r1.y, r2.xyzx, r2.xyzx + rsq r1.y, r1.y + mul r2.xyz, r1.yyyy, r2.xyzx + lt r5.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r2.xxyz + lt r15.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r5.xzw, -r5.xxzw, r15.xxyz + itof r5.xzw, r5.xxzw + dp3 r1.y, r2.xyzx, r5.xzwx + div r2.xyz, r2.xyzx, r1.yyyy + lt r1.y, r2.z, l(0.000000) + add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r4.zw, r4.zzzw, r5.xxxz + movc r2.xy, r1.yyyy, r4.zwzz, r2.xyxx + mov r13.w, l(1.000000) + dp4 r1.y, cb1[3].xyzw, r13.xyzw + max r1.y, r1.y, l(0.000000) + max r1.y, r1.y, l(0.000100) + mad r2.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r2.xy, r2.xyxx, cb1[1].wwww, cb1[2].wwww + mov r2.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r2.xyz, r2.xyzx, t5.xyzw, s3, r0.z + div r0.z, r2.w, r1.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r2.w + add r1.y, r1.y, l(2.000000) + div r0.z, r0.z, r1.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r2.xyz, r0.zzzz, r2.xyzx + mad r14.xyz, r2.xyzx, r3.yyyy, r14.xyzx +endif +mul r2.xyz, r14.xyzx, cb0[112].zzzz +mul r2.xyz, r2.xyzx, cb0[111].yyyy +if_nz r3.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x + add r1.y, -r0.z, l(1.000000) + mul r13.xyz, r1.yyyy, r2.xyzx + mad r2.xyz, r5.xzwx, r0.zzzz, r13.xyzx +endif +mul r5.xzw, r9.xxyz, r16.xxyz +mul r5.xzw, r5.xxzw, cb0[111].xxxx +add r0.z, -r3.x, l(1.000000) +div r0.z, r0.z, r3.x +mul r1.xyz, r0.zzzz, r1.xzwx +mad r1.xyz, r1.xyzx, r10.yzwy, r10.yzwy +mul r1.xyz, r1.xyzx, r2.xyzx +mul r1.xyz, r11.xywx, r1.xyzx +mad r1.xyz, r5.xzwx, r12.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r6.xyzx +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r6.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r5.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r8.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[163].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r8.xyzx, -r7.xyzx + add r2.w, r5.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.w + mul r4.z, r0.x, r3.z + mad r4.w, r4.z, r2.w, cb0[44].y + mad r2.w, -r4.z, r2.w, r2.w + mul r4.z, r2.w, cb0[159].z + max r4.z, r4.z, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.x, r4.w, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.z, l(5.960464478E-08), |r4.z| + exp r5.w, -r4.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.z + mad r4.z, -r4.z, l(0.240226507), l(0.693147182) + movc r4.z, r5.z, r5.w, r4.z + add r4.w, r4.w, -cb0[162].z + mul r4.w, r4.w, cb0[162].x + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[162].y + lt r5.z, l(5.960464478E-08), |r2.w| + exp r5.w, -r2.w + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r5.z, r5.w, r2.w + mul r2.w, r2.w, r4.w + mad r2.w, r5.x, r4.z, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r0.x, r6.w, r0.x + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r6.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.xxxy + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r3.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r3.xyzx, t14.xyzw, s1, l(0.000000) + add r0.y, |r3.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r5.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r6.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r6.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx + +// === Simplified Fog Modification (Anti-Banding) === +// Check if fog modification is enabled via cb13[12].y +lt r15.x, l(0.500000), cb13[12].y +if_nz r15.x + // r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter + // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density + add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + + // Reduce fog inscatter intensity + mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + + // Modified fog blend: scene * boostedTrans + reducedInscatter + mad o0.xyz, r1.xyzx, r15.xyzx, r16.xyzx +else + // Original fog blend + mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +endif +// === End Fog Modification === +dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..cbebeb69e0 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0_original_backup.asm @@ -0,0 +1,1263 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 22:30:13 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[5], immediateIndexed +dcl_constantbuffer CB4[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 23 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t24.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t25.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r2.xyw, r1.wwww, r3.xyxz +utof r4.xy, r0.xyxx +mul r4.zw, v0.xxxy, cb0[82].zzzw +mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r5.zw, r5.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) +mul r6.xyzw, -r5.yyyy, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw +mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r3.w, r5.y, cb0[1].z +mad r3.w, cb0[0].z, r5.x, r3.w +mad r3.w, cb0[2].z, r5.z, r3.w +add r3.w, r3.w, cb0[3].z +eq r6.x, l(0.000000), cb0[86].w +add r6.yzw, -r5.xxyz, cb0[44].xxyz +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r6.xyz, r6.xxxx, r6.yzwy, r7.xyzx +dp3 r6.w, r6.xyzx, r6.xyzx +max r7.w, r6.w, l(9.999999939E-09) +rsq r7.w, r7.w +mul r8.xyz, r6.xyzx, r7.wwww +mul r6.w, r6.w, r7.w +lt r8.w, l(0.000488281250), cb0[234].x +if_nz r8.w + sample_b_indexable(texture2d)(float,float,float,float) r9.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x +else + mov r9.xy, l(1.000000,1.000000,0,0) +endif +lt r9.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[226].xxxy +if_nz r9.z + add r9.z, |r2.y|, |r2.x| + add r9.z, |r2.w|, r9.z + div r9.z, l(1.000000, 1.000000, 1.000000, 1.000000), r9.z + mul r10.xyz, |r2.xywx|, r9.zzzz + mul r11.xyz, r5.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r9.z, r11.xyzx, t9.yzxw, s2, l(0.000000) + mul r11.xyzw, r10.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) + add r10.xyw, r11.zwzz, r11.xxxy + mad r10.xyz, r10.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r10.xywx + mad r10.w, r9.z, l(2.000000), l(-1.000000) + mul r10.xyz, r10.wwww, r10.xyzx + mov r10.w, |r2.y| + add r10.w, r10.w, l(-0.700000) + mul_sat r10.w, r10.w, l(4.000000) + mad r11.x, r10.w, l(-2.000000), l(3.000000) + mul r10.w, r10.w, r10.w + mul r10.w, r10.w, r11.x + add r11.x, -cb0[229].z, cb0[229].y + mad r10.w, r10.w, r11.x, cb0[229].z + mul r10.xyz, r10.wwww, r10.xyzx +else + mov r10.xyz, l(0,0,0,0) + mov r9.z, l(0) +endif +mad r10.w, -r3.y, r1.w, l(-0.200000) +if_nz r9.w + mul r11.xyz, r2.xywx, cb0[233].zzzz + mul r12.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r11.xyz, r11.xyzx, cb0[225].xxxx, r12.xyzx + max r9.w, -r2.y, l(0.000000) + min r9.w, r9.w, l(0.900000) + add r9.w, -r9.w, l(1.000000) + mul_sat r11.w, r10.w, l(-10.000000) + mad r12.x, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.x + max r11.w, r11.w, l(0.100000) + min r11.w, r11.w, l(1.000000) + mul r9.w, r9.w, r11.w + mad r11.xyz, r11.xyzx, r9.wwww, r5.xyzx + add r10.xyz, r10.xyzx, r11.xyzx + mul r11.xyz, r10.yyyy, cb3[1].xyzx + mad r11.xyz, cb3[0].xyzx, r10.xxxx, r11.xyzx + mad r10.xyz, cb3[2].xyzx, r10.zzzz, r11.xyzx + add r10.xyz, r10.xyzx, cb3[3].xyzx + mad r11.x, r10.x, l(0.500000), cb3[4].x + mad r9.w, r10.y, l(0.500000), l(0.500000) + add r11.z, -r9.w, cb3[4].y + add r10.xy, r11.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r9.w, r10.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r9.w, r10.xyxx, t8.xxxx, s4, r9.w +else + mov r9.w, l(1.000000) +endif +mov_sat r10.x, r2.y +add r10.y, l(1.000000), -cb0[230].w +mad r10.x, r10.x, r10.y, cb0[230].w +add r10.yz, r5.xxzx, -cb0[44].xxzx +max r10.y, |r10.z|, |r10.y| +mul r10.z, r9.w, r10.x +mul r11.x, l(0.0500000119), cb0[222].w +mad r11.y, -cb0[222].w, l(0.700000), r10.y +div r11.x, l(1.000000, 1.000000, 1.000000, 1.000000), r11.x +mul_sat r11.x, r11.x, r11.y +mad r11.y, r11.x, l(-2.000000), l(3.000000) +mul r11.x, r11.x, r11.x +mul r11.x, r11.x, r11.y +mad r9.w, -r10.x, r9.w, l(1.000000) +mad r9.w, r11.x, r9.w, r10.z +ge r10.z, r1.z, l(0.045000) +and r10.z, r10.z, l(0x3f800000) +mul r10.z, r9.w, r10.z +deriv_rty_coarse r11.xyz, r5.xyzx +deriv_rtx_coarse r12.xyz, r5.zxyz +mul r13.xyz, r11.xyzx, r12.xyzx +mad r11.xyz, r11.zxyz, r12.yzxy, -r13.xyzx +dp3 r11.w, r11.xyzx, r11.xyzx +max r11.w, r11.w, l(1.175494351E-38) +rsq r11.w, r11.w +mul r12.xyz, r11.wwww, r11.xzyx +mov_sat r11.y, r12.x +add r11.z, r11.y, l(-0.988000) +mul_sat r11.z, r11.z, l(1000.012878) +mad r12.w, r11.z, l(-2.000000), l(3.000000) +mul r11.z, r11.z, r11.z +mul r11.z, r11.z, r12.w +add r12.w, |r3.w|, l(-15.000000) +mul_sat r12.w, r12.w, l(0.015000) +add r12.w, -r12.w, l(1.000000) +lt r13.x, l(0.000488281250), cb0[223].y +mad r13.y, cb0[223].z, l(0.300000), l(0.687000) +add r11.y, r11.y, -r13.y +mul_sat r11.y, r11.y, l(-1000.012878) +mad r13.y, r11.y, l(-2.000000), l(3.000000) +mul r11.y, r11.y, r11.y +mul r11.y, r11.y, r13.y +mad r11.x, r11.x, r11.w, l(0.500000) +mul_sat r11.x, r11.x, l(2.500000) +mad r11.w, r11.x, l(-2.000000), l(3.000000) +mul r11.x, r11.x, r11.x +mul r11.x, r11.x, r11.w +mul r11.x, r11.x, r11.y +lt r11.x, l(0.000488281250), r11.x +and r11.x, r11.x, r13.x +if_nz r11.x + mul r11.xy, |r12.yzyy|, |r12.yzyy| + add r11.w, r11.y, r11.x + div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w + mul r11.xy, r11.wwww, r11.xyxx + mul r13.xyz, r12.xzyx, l(0.000000, 1.000000, 0.000000, 0.000000) + mad r13.xyz, r12.yxzy, l(1.000000, 0.000000, 0.000000, 0.000000), -r13.xyzx + dp2 r11.w, r13.xyxx, r13.xyxx + rsq r11.w, r11.w + mul r13.xyz, r11.wwww, r13.xyzx + mul r14.xyz, r12.xzyx, r13.xyzx + mad r14.xyz, r13.zxyz, r12.zyxz, -r14.xyzx + dp3 r11.w, r14.xyzx, r14.xyzx + rsq r11.w, r11.w + mul r14.xyz, r11.wwww, r14.xyzx + add r15.xyz, r5.xyzx, r5.xyzx + round_ni r15.xyz, r15.xyzx + add r15.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + add r13.zw, r15.yyyy, r15.xxxz + dp2 r11.w, r13.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + lt r13.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.zzzy + lt r15.xy, r12.zyzz, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r13.zw, r13.zzzw, -r15.xxxy + itof r13.zw, r13.zzzw + mul r15.xy, r5.xzxx, r13.zwzz + mul r13.z, r9.z, r11.w + add r13.w, -r11.w, l(1.000000) + mad r13.w, r13.w, l(0.700000), l(0.300000) + mul r16.xy, r13.zzzz, l(3.000000, 6.000000, 0.000000, 0.000000) + mad r13.z, -cb0[223].x, r13.w, r16.x + frc r17.x, r13.z + mad r13.z, cb0[223].x, l(-0.300000), r16.y + frc r17.y, r13.z + mul r11.w, r11.w, l(5.000000) + round_ni r11.w, r11.w + add r16.x, r11.w, l(1.000000) + mul r16.y, r5.y, r16.x + mov r5.w, l(0.100000) + mul r13.zw, r5.yyyw, r16.xxxy + frc r13.zw, r13.zzzw + add r16.xy, r17.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + add r16.xy, r13.zwzz, -r16.xyxx + add r16.xy, r16.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) + mul_sat r16.xy, r16.xyxx, l(5.00000048, 5.00000048, 0.000000, 0.000000) + mad r16.zw, r16.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) + mul r16.xy, r16.xyxx, r16.xyxx + mul r16.xy, r16.xyxx, r16.zwzz + add r16.zw, -r13.zzzw, r17.xxxy + max r16.xy, r16.zwzz, r16.xyxx + add r17.zw, -r17.xxxy, r13.zzzw + add r17.zw, r17.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) + mul r17.zw, r17.zzzw, l(0.000000, 0.000000, 5.00000048, 5.00000048) + max r17.zw, r17.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r18.xy, r17.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r17.zw, r17.zzzw, r17.zzzw + mul r17.zw, r17.zzzw, r18.xxxy + add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + max r16.zw, r16.zzzw, r17.zzzw + ge r13.zw, r13.zzzw, r17.xxxy + and r13.zw, r13.zzzw, l(0, 0, 0x3f800000, 0x3f800000) + add r16.zw, -r16.xxxy, r16.zzzw + mad r13.zw, r13.zzzw, r16.zzzw, r16.xxxy + mad r11.w, r13.z, r13.z, l(-0.400000) + mul_sat r11.w, r11.w, l(1.66666663) + mad r13.z, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r13.z + mad r13.z, r13.w, l(2.000000), l(-1.000000) + mul r16.x, r11.w, l(0.010000) + mul r16.y, r13.z, r16.x + mad r17.x, r9.z, l(0.100000), r16.y + mul r16.x, r11.w, r16.x + mad r16.x, r16.x, r13.z, r9.z + mul r17.y, r9.z, r16.x + mov r15.z, r5.y + mad r16.xy, r15.yzyy, cb0[224].xyxx, r17.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r16.xyxx, t10.xyzw, s2, cb0[108].x + mov r15.w, -r15.x + mad r15.xy, r15.wzww, cb0[224].xyxx, r17.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r15.xyzw, r15.xyxx, t10.xyzw, s2, cb0[108].x + mul r15.xyzw, r11.yyyy, r15.xyzw + mad r15.xyzw, r16.xyzw, r11.xxxx, r15.xyzw + mad r11.xy, r15.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mad r9.z, r11.w, l(2.000000), l(-1.000000) + mad_sat r9.z, r9.z, l(0.800000), r13.w + mad r13.w, -r15.w, l(0.500000), l(1.000000) + mad r9.z, r9.z, r13.w, l(-0.700000) + mul_sat r9.z, r9.z, l(3.33333325) + mad r13.w, r9.z, l(-2.000000), l(3.000000) + mul r9.z, r9.z, r9.z + mul r9.z, r9.z, r13.w + mul r13.z, r13.z, r15.w + mad_sat r11.w, r13.z, l(0.500000), r11.w + mad r11.w, r11.w, l(0.500000), l(0.100000) + max r9.z, r9.z, r11.w + add r11.w, -r9.z, l(1.000000) + max r11.w, r11.w, l(0.000000) + mul r13.z, r11.w, r11.w + mul r13.z, r13.z, r13.z + mul r11.w, r11.w, r13.z + ge r11.w, r15.z, r11.w + and r11.w, r11.w, l(0x3f800000) + mad r9.z, r9.z, l(0.700000), l(0.200000018) + mad r9.z, r11.w, r9.z, l(0.100000) + mul r9.z, r15.z, r9.z + mul r9.z, r9.z, cb0[223].y + mul r9.z, r9.z, l(0.330000) + mul r11.w, r10.z, cb0[222].x + mul r11.w, r12.w, r11.w + mul r9.z, r9.z, r11.w + dp2 r11.w, r11.xyxx, r11.xyxx + min r11.w, r11.w, l(1.000000) + add r11.w, -r11.w, l(1.000000) + sqrt r11.w, r11.w + max r11.w, r11.w, l(0.000488281250) + mul_sat r13.z, r9.z, l(10.000000) + mad r13.w, r13.z, l(-2.000000), l(3.000000) + mul r13.z, r13.z, r13.z + mul r13.z, r13.z, r13.w + mul r13.z, r13.z, cb0[223].y + mul r15.xy, r11.xyxx, r13.zzzz + add r11.x, l(-1.500000), cb0[223].y + mul_sat r11.x, r11.x, l(0.666666687) + mad r11.y, r11.x, l(-2.000000), l(3.000000) + mul r11.x, r11.x, r11.x + mul r11.x, r11.x, r11.y + mul r11.y, r11.x, l(-0.200000) + mad r11.x, -r11.x, l(-0.200000), r11.w + mad r15.z, r9.z, r11.x, r11.y + dp3 r11.x, r15.xyzx, r15.xyzx + max r11.x, r11.x, l(1.175494351E-38) + rsq r11.x, r11.x + mul r11.xyw, r11.xxxx, r15.xyxz + mov r15.x, r13.y + mov r15.y, r14.x + mov r15.z, r12.y + dp3 r15.x, r15.xyzx, r11.xywx + mov r14.w, r12.x + dp2 r15.y, r14.ywyy, r11.ywyy + mov r12.x, r13.x + mov r12.y, r14.z + dp3 r15.z, r12.xyzx, r11.xywx + mad r11.xyw, -r3.xyxz, r1.wwww, r15.xyxz + mad r13.xyz, r9.zzzz, r11.xywx, r2.xywx + mul r9.z, r9.z, cb0[223].y + mul r9.z, r9.z, l(0.330000) +else + mov r13.xyz, r2.xywx + mov r9.z, l(0) +endif +lt r11.xy, l(0.000488281250, 0.000488281250, 0.000000, 0.000000), cb0[227].ywyy +or r11.x, r11.y, r11.x +lt r11.y, l(0.000488281250), r11.z +and r11.x, r11.y, r11.x +if_nz r11.x + mul r11.xyw, r2.ywyx, l(1.000000, 0.000000, 0.000000, 0.000000) + mad r11.xyw, r2.xyxw, l(0.000000, 0.000000, 0.000000, 1.000000), -r11.xyxw + dp2 r12.x, r11.xwxx, r11.xwxx + rsq r12.x, r12.x + mul r11.xyw, r11.xyxw, r12.xxxx + mul r12.xyz, r2.ywxy, r11.xywx + mad r12.xyz, r11.wxyw, r2.wxyw, -r12.xyzx + dp3 r11.y, r12.xyzx, r12.xyzx + rsq r11.y, r11.y + mul r14.xyz, r11.yyyy, r12.xzyx + mul r12.xy, -r5.xzxx, cb0[228].xyxx + frc r15.xy, r12.xyxx + round_ni r12.xy, r12.xyxx + dp2 r11.y, r12.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.y, null, r11.y + mul r11.y, r11.y, l(43758.546875) + frc r11.y, r11.y + add r12.x, r11.y, cb0[227].x + frc r12.x, r12.x + mul r12.y, cb0[228].z, cb0[228].z + mul r12.x, r12.y, r12.x + round_ni r12.x, r12.x + div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[228].z + mad r15.zw, -r5.xxxz, cb0[228].xxxy, cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.xy, r15.zwzz, t11.zwxy, s2, cb0[108].x + mad r15.zw, -r5.xxxz, cb0[228].xxxy, -cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.zw, r15.zwzz, t11.xyzw, s2, cb0[108].x + mul r16.xyzw, r16.xyzw, cb0[227].wwww + mad r16.xyzw, r16.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -cb0[227].wwww + ge r11.y, l(0.500000), r11.y + and r11.y, r11.y, l(0x3f800000) + add r15.zw, -r15.xxxy, r15.yyyx + mad r15.xy, r11.yyyy, r15.zwzz, r15.xyxx + div r11.y, r12.x, cb0[228].z + ge r12.z, r11.y, -r11.y + frc r11.y, |r11.y| + movc r11.y, r12.z, r11.y, -r11.y + mul r11.y, r11.y, cb0[228].z + mul r17.x, r11.y, r12.y + add r15.zw, l(0.000000, 0.000000, -0.050000, -1.000000), cb0[228].wwwz + mul r11.y, r12.y, r12.x + round_ni r11.y, r11.y + add r11.y, -r11.y, r15.w + mul r17.y, r11.y, r12.y + mad r12.xy, r15.xyxx, r12.yyyy, r17.xyxx + frc r12.xy, r12.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r12.xy, r12.xyxx, t11.xyzw, s1, cb0[108].x + mul r12.xy, r12.xyxx, cb0[227].yyyy + mad r12.xy, r12.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[227].yyyy + add r15.xy, r16.zwzz, r16.xyxx + add r12.xy, r12.xyxx, r15.xyxx + dp2 r11.y, r12.xyxx, r12.xyxx + min r11.y, r11.y, l(1.000000) + add r11.y, -r11.y, l(1.000000) + sqrt r11.y, r11.y + max r12.z, r11.y, l(0.000488281250) + dp3 r11.y, r12.xyzx, r12.xyzx + rsq r11.y, r11.y + mul r12.xyz, r11.yyyy, r12.xyzx + mov r14.w, r2.x + dp2 r16.x, r14.xwxx, r12.yzyy + mov r17.x, r11.w + mov r17.y, r14.z + mov r17.z, r2.y + dp3 r16.y, r17.xyzx, r12.xyzx + mov r14.x, r11.x + mov r14.z, r2.w + dp3 r16.z, r14.xyzx, r12.xyzx + mul r10.z, r10.z, cb0[222].x + mul r10.z, r11.z, r10.z + max r11.x, l(0.000488281250), cb0[228].w + mov_sat r15.z, r15.z + add r11.y, -r11.x, r15.z + add r11.x, r2.z, -r11.x + div r11.y, l(1.000000, 1.000000, 1.000000, 1.000000), r11.y + mul_sat r11.x, r11.y, r11.x + mad r11.y, r11.x, l(-2.000000), l(3.000000) + mul r11.x, r11.x, r11.x + mul r11.x, r11.x, r11.y + mul r10.z, r10.z, r11.x + mul r10.z, r12.w, r10.z + mad r3.xyz, -r3.xyzx, r1.wwww, r16.xyzx + mad r13.xyz, r10.zzzz, r3.xyzx, r2.xywx +endif +min r1.w, r9.y, r9.x +mul r3.x, r10.x, cb0[230].z +mad r3.y, -cb0[230].z, r10.x, l(1.000000) +mad r3.x, r9.w, r3.y, r3.x +mad r3.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r3.z, r10.y, -cb0[222].w +div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y +mul_sat r3.y, r3.y, r3.z +mad r3.z, r3.y, l(-2.000000), l(3.000000) +mul r3.y, r3.y, r3.y +mul r3.y, r3.y, r3.z +add r3.z, -r3.x, cb0[230].y +mad r3.x, r3.y, r3.z, r3.x +add r3.x, -r3.x, l(1.000000) +mul r3.y, r3.x, r9.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r3.z, -r2.z, l(1.000000) +mad_sat r9.w, r3.z, cb0[222].z, cb0[222].y +mad_sat r9.w, r9.z, cb0[224].z, r9.w +add r10.x, -r9.w, l(1.000000) +mad r9.w, r1.x, r10.x, r9.w +mul_sat r10.x, r10.w, l(3.33333325) +mad r10.y, r10.x, l(-2.000000), l(3.000000) +mul r10.x, r10.x, r10.x +mad r10.x, -r10.y, r10.x, l(1.000000) +mul r10.y, r9.w, cb0[222].x +add r10.z, -r1.x, l(1.000000) +mul r10.y, r10.z, r10.y +mul r10.y, r10.x, r10.y +mad r10.y, r10.y, l(-0.750000), l(1.000000) +mad r9.w, r9.w, l(-0.299999952), l(0.900000) +sqrt r10.z, r3.z +add r9.w, r9.w, r10.z +add_sat r9.w, r9.w, l(-0.600000) +max r9.w, r3.z, r9.w +min r9.w, r9.w, l(0.990000) +add_sat r10.z, l(2.000000), -cb0[222].x +mul r10.z, r10.z, cb0[222].x +mul r10.x, r10.x, r10.z +mad r3.x, -r9.x, r3.x, l(1.000000) +mul r3.x, r3.x, r10.x +add r9.x, -r3.z, r9.w +mad r3.x, r3.x, r9.x, r3.z +add r3.x, -r3.x, l(1.000000) +mul_sat r3.z, r9.z, l(20.000000) +mad r9.x, r3.z, l(-2.000000), l(3.000000) +mul r3.z, r3.z, r3.z +mul r3.z, r3.z, r9.x +mad r3.z, r3.z, l(-0.900000), l(1.000000) +mul r9.x, r3.z, r3.x +add r9.y, r9.y, l(-1.000000) +mad r11.x, r1.z, r9.y, l(1.000000) +add r11.y, -r1.z, l(1.000000) +movc r9.yz, r8.wwww, r11.xxyx, l(0,1.000000,1.000000,0) +min r1.z, r9.x, r9.y +mad r3.x, r3.x, r3.z, -r1.z +mad r1.z, r1.w, r3.x, r1.z +add r2.z, -r1.z, r2.z +mad r11.z, r3.y, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r9.xyw, r0.xyzz, t26.xywz +min r1.z, r10.y, r9.z +add r2.z, -r1.z, r10.y +mad r1.z, r1.w, r2.z, r1.z +add r1.w, -r1.z, l(1.000000) +mad r1.z, r3.y, r1.w, r1.z +mul r3.xyz, r1.zzzz, r9.xywx +mul r10.xyz, r1.xxxx, r3.xyzx +mad r9.xyz, r9.xywx, r1.zzzz, -r10.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz +dp3 r2.z, r13.xyzx, r8.xyzx +max r10.x, r2.z, l(0.000000) +mul r3.y, r11.z, r11.z +mul r12.x, r10.x, r10.x +mul r12.z, r10.x, r12.x +mul r2.z, r3.y, r3.y +mul r3.z, r3.y, r2.z +mov r10.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r14.x, l(3.327070, 1.000000, 0.000000, 0.000000), r10.xyxx +dp2 r14.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r10.xzxx +mov r3.x, l(1.000000) +dp2 r8.w, r14.xyxx, r3.xyxx +mov r12.yw, l(0,9.044010,0,1.000000) +dp3 r14.x, l(3.596850, -1.367720, 1.000000, 0.000000), r12.xzwx +dp3 r14.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r12.xyzx +mov r15.x, l(5.565890) +mov r15.yz, r12.xxzx +dp3 r14.z, l(1.000000, 19.788601, -20.212299, 0.000000), r15.xyzx +dp3 r9.w, r14.xyzx, r3.xyzx +div r8.w, r8.w, r9.w +dp2 r14.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r10.xwxx +mov r12.x, l(1.296780) +mov r12.y, r10.x +dp2 r14.y, l(1.000000, -0.755907, 0.000000, 0.000000), r12.xyxx +dp2 r9.w, r14.xyxx, r3.xyxx +dp3 r14.x, l(2.923380, 59.418800, 1.000000, 0.000000), r12.yzwy +mov r12.xw, l(20.322500,0,0,121.563004) +dp3 r14.y, l(1.000000, -27.030199, 222.591995, 0.000000), r12.xyzx +dp3 r14.z, l(626.130005, 316.627014, 1.000000, 0.000000), r12.yzwy +dp3 r3.x, r14.xyzx, r3.xyzx +div r3.x, r9.w, r3.x +mad r10.yzw, r1.xxzw, r8.wwww, r3.xxxx +add r3.x, r3.x, r8.w +ld_indexable(texture2d)(float,float,float,float) r3.y, r0.xyzz, t6.zxyw +lt r0.z, l(0.001000), r3.y +if_nz r0.z + dp3 r0.z, -r8.xyzx, r13.xyzx + add r0.z, r0.z, r0.z + mad r12.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx + dp3 r0.z, -cb2[0].xyzx, r12.xyzx + mad r14.xyz, cb2[0].xyzx, r0.zzzz, r12.xyzx + lt r0.z, r0.z, cb2[4].z + dp3 r8.w, r14.xyzx, r14.xyzx + max r8.w, r8.w, l(0.0000610351562) + rsq r8.w, r8.w + mul r14.xyz, r8.wwww, r14.xyzx + mul r14.xyz, r14.xyzx, cb2[4].yyyy + mad r14.xyz, -cb2[0].xyzx, cb2[4].zzzz, r14.xyzx + dp3 r8.w, r14.xyzx, r14.xyzx + rsq r8.w, r8.w + mul r14.xyz, r8.wwww, r14.xyzx + movc r12.xyz, r0.zzzz, r14.xyzx, r12.xyzx + mad r6.xyz, r6.xyzx, r7.wwww, r12.xyzx + dp3 r0.z, r6.xyzx, r6.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r6.xyz, r0.zzzz, r6.xyzx + dp3_sat r11.x, r12.xyzx, r13.xyzx + dp3_sat r0.z, r13.xyzx, r6.xyzx + min r11.y, r10.x, l(1.000000) + mad r7.w, r0.z, r2.z, -r0.z + mad r0.z, r7.w, r0.z, l(1.000000) + dp3_sat r6.x, r8.xyzx, r6.xyzx + add r6.x, -r6.x, l(1.000000) + mul r6.y, r6.x, r6.x + mul r6.y, r6.y, r6.y + mul r6.z, r6.x, r6.y + add r7.w, -r11.z, l(1.000000) + mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) + mad r8.w, r7.w, r8.w, l(1.049970) + mad r7.w, r7.w, r8.w, l(0.409255) + min r7.w, r7.w, l(0.999000) + add r8.w, -r7.w, l(1.000000) + add r14.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r14.xyz, r14.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx + mad r6.x, -r6.y, r6.x, l(1.000000) + mad r6.xyz, r1.xzwx, r6.xxxx, r6.zzzz + mul r0.z, r0.z, r0.z + div r0.z, r2.z, r0.z + mad r15.xy, -r11.yxyy, r2.zzzz, r11.yxyy + mad r15.xy, r15.xyxx, r11.yxyy, r2.zzzz + sqrt r15.xy, r15.xyxx + mul r15.xy, r11.xyxx, r15.xyxx + add r2.z, r15.y, r15.x + add r2.z, r2.z, l(0.000100) + div r2.z, l(0.500000), r2.z + mul r0.z, r0.z, r2.z + mul r6.xyz, r0.zzzz, r6.xyzx + min r6.xyz, r6.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r15.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r15.xyxx, t12.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r15.zwzz, t12.yzxw, s1, l(0.000000) + mul r0.z, r0.z, r2.z + mul r0.z, r7.w, r0.z + div r0.z, r0.z, r8.w + mul r15.xyz, r14.xyzx, r14.xyzx + mul r15.xyz, r0.zzzz, r15.xyzx + mad r14.xyz, -r14.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r14.xyz, r15.xyzx, r14.xyzx + add r6.xyz, r6.xyzx, r14.xyzx + mul r6.xyz, r6.xyzx, cb2[4].xxxx + max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r6.xyz, r6.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + dp3_sat r0.z, r12.xyzx, r2.xywx + mul r12.xyz, r0.zzzz, r9.xyzx + mad r6.xyz, r6.xyzx, r11.xxxx, r12.xyzx + mul r6.xyz, r6.xyzx, cb2[1].xyzx + mov r3.z, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r3.yzyy, t7.xywz, s1, cb0[108].x + add r0.z, -r3.y, l(1.000000) + mad r11.xyw, r6.xyxz, r11.xyxw, -r6.xyxz + mad r6.xyz, r0.zzzz, r11.xywx, r6.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t13.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r6.xyz, r0.zzzz, r6.xyzx +else + mov r6.xyz, l(0,0,0,0) +endif +ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r3.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + dp3 r2.z, r2.xywx, r8.xyzx + max r2.z, r2.z, l(0.000000) + add r2.z, r0.z, r2.z + mad r3.y, r11.z, l(-16.000000), l(-1.000000) + exp r3.y, r3.y + log r2.z, |r2.z| + mul r2.z, r2.z, r3.y + exp r2.z, r2.z + add r2.z, r0.z, r2.z + add r2.z, r2.z, l(-1.000000) + mov_sat r11.xyw, r2.zzzz + mad r12.xyz, r9.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r9.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r9.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + max r12.xyz, r0.zzzz, r12.xyzx +else + mov r11.xyw, r1.yyyy + mov r12.xyz, r1.yyyy +endif +mad r14.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[212].x +mad r15.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx +dp2 r0.z, r15.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r14.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r14.xyzx +mad r15.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r15.xyz, r14.xzyx, -r15.xyzx +max r0.z, |r15.y|, |r15.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.y, |r15.z|, l(-208.000000) +mul_sat r1.y, r1.y, l(0.031250) +max r0.z, r0.z, r1.y +ne r1.y, l(0.000000), cb0[210].w +lt r2.z, r0.z, l(1.000000) +and r1.y, r1.y, r2.z +if_nz r1.y + mad r15.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r15.xyz, r14.xzyx, -r15.xyzx + max r1.y, |r15.y|, |r15.x| + add r1.y, r1.y, l(-29.000000) + mul_sat r1.y, r1.y, l(0.500000) + add r2.z, |r15.z|, l(-13.000000) + mul_sat r2.z, r2.z, l(0.500000) + max r1.y, r1.y, r2.z + lt r2.z, r1.y, l(1.000000) + if_nz r2.z + mad r15.xyz, r14.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r16.xyz, r15.xyzx, cb0[211].xyzx + round_ni r16.xyz, r16.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r16.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) + add r2.z, -r1.y, l(1.000000) + mul r3.y, l(0.500000), cb0[211].y + mad r7.w, -cb0[211].y, l(0.500000), l(1.000000) + max r3.y, r3.y, r15.y + min r3.y, r7.w, r3.y + mul r15.w, r3.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) + mad r3.y, r17.w, r2.z, r0.z + add r18.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r16.yyyy, r18.xyzx + mov r18.w, r16.y + mul r18.xyzw, r2.zzzz, r18.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r16.xxxx, r15.xyzx + mov r15.w, r16.x + mul r15.xyzw, r2.zzzz, r15.xyzw + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r16.wwww, r17.xyzx + mul r16.xyzw, r2.zzzz, r16.xyzw + else + mov r18.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r3.y, r0.z + endif + mad r17.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r17.xyz, r14.xzyx, -r17.xyzx + max r2.z, |r17.y|, |r17.x| + add r2.z, r2.z, l(-116.000000) + mul_sat r2.z, r2.z, l(0.125000) + add r7.w, |r17.z|, l(-52.000000) + mul_sat r7.w, r7.w, l(0.125000) + max r2.z, r2.z, r7.w + lt r7.w, r2.z, l(1.000000) + if_nz r7.w + mad r17.xyz, r14.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r17.xyzx, cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r19.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r17.xyzx, t19.yzwx, s2, l(0.000000) + add r7.w, -r2.z, l(1.000000) + mul r1.y, r1.y, r7.w + mul r7.w, l(0.500000), cb0[211].y + mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) + max r7.w, r7.w, r17.y + min r7.w, r8.w, r7.w + mul r17.w, r7.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t20.xyzw, s1, l(0.000000) + mad r3.y, r20.w, r1.y, r3.y + add r21.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t20.xyzw, s1, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r19.yyyy, r21.xyzx + mov r21.w, r19.y + mad r18.xyzw, r21.xyzw, r1.yyyy, r18.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t20.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r19.xxxx, r17.xyzx + mov r17.w, r19.x + mad r15.xyzw, r17.xyzw, r1.yyyy, r15.xyzw + mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r19.wwww, r17.xyzx + mad r16.xyzw, r19.xyzw, r1.yyyy, r16.xyzw + endif + lt r1.y, l(0.000000), r2.z + if_nz r1.y + mad r14.xyz, r14.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r14.xyzx, cb0[211].xyzx + mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r17.xyzx + mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r14.xyz, r19.xyzx, r14.xyzx + min r14.xyz, r17.xyzx, r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r14.xyzx, t21.yzwx, s2, l(0.000000) + add r1.y, -r0.z, l(1.000000) + mul r1.y, r1.y, r2.z + max r2.z, r19.y, r14.y + min r2.z, r17.y, r2.z + mul r14.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r14.xwzx, t22.xyzw, s1, l(0.000000) + add r19.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r20.yyyy, r19.xyzx + mov r19.w, r20.y + mad r18.xyzw, r19.xyzw, r1.yyyy, r18.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t22.xyzw, s1, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r20.xxxx, r14.xyzx + mov r14.w, r20.x + mad r15.xyzw, r14.xyzw, r1.yyyy, r15.xyzw + mad r14.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r14.xyzx + mad r16.xyzw, r20.xyzw, r1.yyyy, r16.xyzw + mad r3.y, r17.w, r1.y, r3.y + endif + mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) + add r14.x, -r0.z, r1.y + add r0.z, r0.z, r1.y + mul r14.y, r0.z, l(0.500000) +else + mov r18.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r14.xy, l(0,1.000000,0,0) +endif +mul r17.xyzw, r14.yxyy, cb0[213].ywzx +mad r17.y, r17.y, l(0.500000), r17.x +mul r14.zw, r14.yyyx, cb0[213].wwwy +mad r17.x, r14.w, l(0.375000), r14.z +add r16.xyzw, r16.xyzw, r17.wyzx +mul r17.xyzw, r14.yxyy, cb0[214].ywzx +mad r17.y, r17.y, l(0.500000), r17.x +mul r14.zw, r14.yyyx, cb0[214].wwwy +mad r17.x, r14.w, l(0.375000), r14.z +add r15.xyzw, r15.xyzw, r17.wyzx +mul r17.xyzw, r14.yxyy, cb0[215].ywzx +mad r17.y, r17.y, l(0.500000), r17.x +mul r14.xy, r14.yxyy, cb0[215].wyww +mad r17.x, r14.y, l(0.375000), r14.x +add r14.xyzw, r17.wyzx, r18.xyzw +ge r17.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r17.y, r17.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r4.zwzz, t16.xyzw, s1, l(0.000000) + lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| + or r4.zw, r18.zzzw, r18.xxxy + or r0.z, r4.w, r4.z + if_nz r0.z + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mov r4.z, l(1.000000) + mov r4.w, r0.z + mov r1.y, l(0) + loop + ge r2.z, l(4.600000), r4.w + breakc_nz r2.z + iadd r2.z, r1.y, l(1) + mul r18.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r4.zw, r18.xxxy + mov r1.y, r2.z + continue + endloop + mul r17.xyzw, r4.zzzz, r17.xyzw + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb4[3].x, cb4[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r18.x, r0.z, l(0.00390625000) + mov r18.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r18.xyxx, t15.zwxy, s1, l(0.000000) + mad r4.zw, r4.zzzw, cb4[2].xxxy, cb4[2].zzzw + mul r18.x, r4.z, l(3.54490781) + mul r18.yzw, r4.wwww, r17.yyzw + mul r0.z, r17.x, l(0.406976730) + exp r0.z, r0.z + mul r17.xyzw, r0.zzzz, r18.xyzw + mov r18.xyzw, r17.xyzw + mov r0.z, l(0) + loop + uge r2.z, r0.z, r1.y + breakc_nz r2.z + mul r19.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r2.z, r19.xyzw, r18.xyzw + dp2 r3.y, r19.yxyy, r18.xyxx + dp2 r4.z, r19.zxzz, r18.xzxx + dp2 r4.w, r19.wxww, r18.xwxx + iadd r7.w, r0.z, l(1) + mov r18.x, r2.z + mov r18.y, r3.y + mov r18.zw, r4.zzzw + mov r0.z, r7.w + continue + endloop + mul r17.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r18.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r17.xyzw, r18.xyzw + dp2 r1.y, r17.yxyy, r18.xyxx + dp2 r2.z, r17.zxzz, r18.xzxx + dp2 r3.y, r17.wxww, r18.xwxx + mul r18.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.z, r17.xyzw, r18.xyzw + dp2 r4.w, r17.yxyy, r18.xyxx + dp2 r7.w, r17.zxzz, r18.xzxx + dp2 r8.w, r17.wxww, r18.xwxx + mul r18.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r9.w, r17.xyzw, r18.xyzw + dp2 r10.x, r17.yxyy, r18.xyxx + dp2 r12.w, r17.zxzz, r18.xzxx + dp2 r17.x, r17.wxww, r18.xwxx + mul r16.w, r0.z, l(0.886226952) + mul r16.x, r3.y, l(-1.02332675) + mul r16.y, r1.y, l(-1.02332675) + mul r16.z, r2.z, l(1.02332675) + mul r15.x, r8.w, l(-1.02332675) + mul r15.yw, r4.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r15.z, r7.w, l(1.02332675) + mul r14.w, r9.w, l(0.886226952) + mul r14.x, r17.x, l(-1.02332675) + mul r14.y, r10.x, l(-1.02332675) + mul r14.z, r12.w, l(1.02332675) + endif +endif +dp3 r0.z, r16.xyzx, r2.xywx +add r0.z, r16.w, r0.z +max r16.x, r0.z, l(0.000000) +dp3 r0.z, r15.xyzx, r2.xywx +add r0.z, r15.w, r0.z +max r16.y, r0.z, l(0.000000) +dp3 r0.z, r14.xyzx, r2.xywx +add r0.z, r14.w, r0.z +max r16.z, r0.z, l(0.000000) +dp3 r0.z, -r8.xyzx, r13.xyzx +add r0.z, r0.z, r0.z +mad r2.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r1.y, r11.z, l(0.001000) +log r1.y, r1.y +mad r1.y, -r1.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.y +mul r4.zw, r4.xxxy, cb1[0].wwww +round_ni r4.zw, r4.zzzw +add r1.y, |r3.w|, -cb1[2].y +round_ni r1.y, r1.y +add r2.w, l(-1.000000), cb1[1].x +max r3.y, r1.y, l(0.000000) +min r2.w, r2.w, r3.y +ge r1.y, r2.w, r1.y +mad r3.y, r4.w, cb1[0].x, r4.z +ftoi r3.y, r3.y +iadd r3.y, r3.y, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.y, r3.y, l(0), t0.xxxx +ftoi r2.w, r2.w +iadd r2.w, r2.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.w, r2.w, l(0), t0.xxxx +and r2.w, r2.w, r3.y +and r1.y, r1.y, r2.w +mul r14.xyz, r16.xyzx, cb0[111].xxxx +dp3 r2.w, r14.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r5.w, l(1.000000) +mov r13.w, l(1.000000) +mov r14.xyz, l(0,0,0,0) +mov r3.y, l(1.000000) +mov r4.z, r1.y +mov r4.w, l(0) +loop + lt r7.w, l(0.010000), r3.y + ine r8.w, r4.z, l(0) + and r8.w, r7.w, r8.w + if_nz r8.w + firstbit_lo r8.w, r4.z + ishl r9.w, l(1), r8.w + xor r4.z, r4.z, r9.w + ishl r8.w, r8.w, l(3) + dp4 r15.x, cb1[r8.w + 6].xyzw, r5.xyzw + dp4 r15.y, cb1[r8.w + 7].xyzw, r5.xyzw + dp4 r15.z, cb1[r8.w + 8].xyzw, r5.xyzw + ge r17.xyz, cb1[r8.w + 5].xyzx, |r15.xyzx| + and r9.w, r17.y, r17.x + and r9.w, r17.z, r9.w + if_nz r9.w + mul r9.w, l(0.100000), cb1[r8.w + 5].x + mul r17.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r17.xy, r17.xyxx, r17.xyxx + add r18.xyz, -|r15.xyzx|, cb1[r8.w + 5].xyzx + mul r18.xyz, r18.xyzx, cb1[r8.w + 9].xyzx + eq r10.x, l(1.000000), cb1[r8.w + 10].x + if_nz r10.x + dp3 r19.x, cb1[r8.w + 6].xyzx, r2.xyzx + dp3 r19.y, cb1[r8.w + 7].xyzx, r2.xyzx + dp3 r19.z, cb1[r8.w + 8].xyzx, r2.xyzx + add r20.xyz, -r15.xyzx, cb1[r8.w + 5].xyzx + div r20.xyz, r20.xyzx, r19.xyzx + add r21.xyz, -r15.xyzx, -cb1[r8.w + 5].xyzx + div r21.xyz, r21.xyzx, r19.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx + min r10.x, r20.y, r20.x + min r10.x, r20.z, r10.x + mad r15.xyz, r19.xyzx, r10.xxxx, r15.xyzx + else + mov r15.xyz, r2.xyzx + endif + dp3 r10.x, r15.xyzx, r15.xyzx + rsq r10.x, r10.x + mul r15.xyz, r10.xxxx, r15.xyzx + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r20.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r19.xyz, -r19.xyzx, r20.xyzx + itof r19.xyz, r19.xyzx + dp3 r10.x, r15.xyzx, r19.xyzx + div r15.xyz, r15.xyzx, r10.xxxx + lt r10.x, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r19.xxxy + movc r15.xy, r10.xxxx, r15.zwzz, r15.xyxx + dp4 r10.x, cb1[r8.w + 4].xyzw, r13.xyzw + max r10.x, r10.x, l(0.000000) + max r10.x, r10.x, l(0.000100) + min r11.z, r18.z, r18.y + min r11.z, r11.z, r18.x + add r12.w, r17.y, r17.x + mad r12.w, r17.z, r17.z, r12.w + mad r9.w, r9.w, r9.w, -r12.w + mul r9.w, r9.w, cb1[r8.w + 9].x + mul r9.w, r9.w, cb1[r8.w + 9].x + add r12.w, l(1.000000), -cb1[r8.w + 10].y + mul r9.w, r9.w, r12.w + mul r9.w, r9.w, l(100.000000) + mad_sat r9.w, r11.z, cb1[r8.w + 10].y, r9.w + mul r11.z, r9.w, cb1[r8.w + 10].w + mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r15.xy, r15.xyxx, cb1[1].wwww, cb1[2].wwww + mov r15.z, cb1[r8.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z + mul r15.xyz, r15.xyzx, cb1[r8.w + 9].wwww + div r12.w, r2.w, r10.x + min r12.w, |r12.w|, l(1.000000) + mad r12.w, r12.w, l(2.000000), r2.w + add r10.x, r10.x, l(2.000000) + div r10.x, r12.w, r10.x + add r10.x, r10.x, l(-1.000000) + mad r10.x, r10.x, cb0[112].w, l(1.000000) + mul r15.xyz, r10.xxxx, r15.xyzx + mul r15.xyz, r11.zzzz, r15.xyzx + mad r14.xyz, r15.xyzx, r3.yyyy, r14.xyzx + mad r8.w, -r9.w, cb1[r8.w + 10].w, l(1.000000) + mul r3.y, r3.y, r8.w + endif + mov r4.w, l(-1) + continue + else + mov r4.w, r7.w + break + endif + mov r4.w, r7.w +endloop +if_nz r4.w + dp3 r1.y, r2.xyzx, r2.xyzx + rsq r1.y, r1.y + mul r2.xyz, r1.yyyy, r2.xyzx + lt r5.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r2.xxyz + lt r15.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r5.xzw, -r5.xxzw, r15.xxyz + itof r5.xzw, r5.xxzw + dp3 r1.y, r2.xyzx, r5.xzwx + div r2.xyz, r2.xyzx, r1.yyyy + lt r1.y, r2.z, l(0.000000) + add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r4.zw, r4.zzzw, r5.xxxz + movc r2.xy, r1.yyyy, r4.zwzz, r2.xyxx + mov r13.w, l(1.000000) + dp4 r1.y, cb1[3].xyzw, r13.xyzw + max r1.y, r1.y, l(0.000000) + max r1.y, r1.y, l(0.000100) + mad r2.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r2.xy, r2.xyxx, cb1[1].wwww, cb1[2].wwww + mov r2.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r2.xyz, r2.xyzx, t5.xyzw, s3, r0.z + div r0.z, r2.w, r1.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r2.w + add r1.y, r1.y, l(2.000000) + div r0.z, r0.z, r1.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r2.xyz, r0.zzzz, r2.xyzx + mad r14.xyz, r2.xyzx, r3.yyyy, r14.xyzx +endif +mul r2.xyz, r14.xyzx, cb0[112].zzzz +mul r2.xyz, r2.xyzx, cb0[111].yyyy +if_nz r3.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x + add r1.y, -r0.z, l(1.000000) + mul r13.xyz, r1.yyyy, r2.xyzx + mad r2.xyz, r5.xzwx, r0.zzzz, r13.xyzx +endif +mul r5.xzw, r9.xxyz, r16.xxyz +mul r5.xzw, r5.xxzw, cb0[111].xxxx +add r0.z, -r3.x, l(1.000000) +div r0.z, r0.z, r3.x +mul r1.xyz, r0.zzzz, r1.xzwx +mad r1.xyz, r1.xyzx, r10.yzwy, r10.yzwy +mul r1.xyz, r1.xyzx, r2.xyzx +mul r1.xyz, r11.xywx, r1.xyzx +mad r1.xyz, r5.xzwx, r12.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r6.xyzx +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r6.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r5.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r8.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[163].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r8.xyzx, -r7.xyzx + add r2.w, r5.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.w + mul r4.z, r0.x, r3.z + mad r4.w, r4.z, r2.w, cb0[44].y + mad r2.w, -r4.z, r2.w, r2.w + mul r4.z, r2.w, cb0[159].z + max r4.z, r4.z, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.x, r4.w, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.z, l(5.960464478E-08), |r4.z| + exp r5.w, -r4.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.z + mad r4.z, -r4.z, l(0.240226507), l(0.693147182) + movc r4.z, r5.z, r5.w, r4.z + add r4.w, r4.w, -cb0[162].z + mul r4.w, r4.w, cb0[162].x + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[162].y + lt r5.z, l(5.960464478E-08), |r2.w| + exp r5.w, -r2.w + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r5.z, r5.w, r2.w + mul r2.w, r2.w, r4.w + mad r2.w, r5.x, r4.z, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r0.x, r6.w, r0.x + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r6.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.xxxy + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r3.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r3.xyzx, t14.xyzw, s1, l(0.000000) + add r0.y, |r3.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r5.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r6.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r6.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx +mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xD88CD7C9.cso b/src/games/endfield/deferred-lighting/0xD88CD7C9.cso index af5cc7c98ef9b0bdf81ff6f5e08bd645dd5c4b19..1b1a4f927eedc448aff36428c96821d0811308c3 100644 GIT binary patch delta 86 zcmZ2-fpN+iMk$vFC+9;}jaQ2%{@Nw_q+DdJ(ywkt1_lO^w24xSI73ny7y^L2(2Yl@ fr*In^Z?=Qt$?2)8+-YfQ_E0=|daCB+3+W*MdFCG; delta 523 zcmbPohH=RSMk$vFCug16x!%tWj57ftn zEXO%nkVSlQLJ|ijOf~1^LM`z~3p6u8vLG`+ZU)JL+y%266fh8XG1xOGFmNErH8=w0 z5bkcUx0tLOCZ0HJrldW(DKOJOz6Amf6juTTfIb161_~`B1_n-$JcteR8OWzFKX6Rm Hn;H%PjLTFL diff --git a/src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm index 9d463781ca..958caf9910 100644 --- a/src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm @@ -857,60 +857,23 @@ if_z cb13[12].y ret endif -// === Custom Hue-Preserving Fog Blend === -// FOG_INTENSITY = 0.7, HUE_PRESERVATION = 0.6 +// === Simplified Fog Modification (Anti-Banding) === // r1.xyz = scene color (0-255), r2.xyw = transmittance, r0.xyz = fog inscatter (0-255) // Normalize colors to 0-1 range mul r5.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r1/255 mul r6.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 -// Reduce fog intensity: transmittance = lerp(transmittance, 1, 0.3) +// Boost transmittance: transmittance = lerp(transmittance, 1, 0.35) to reduce fog density add r7.xyz, -r2.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r7.xyz, r7.xyzx, l(0.300000, 0.300000, 0.300000, 0.000000), r2.xywx // adjusted transmittance +mad r7.xyz, r7.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r2.xywx -// fogColor *= FOG_INTENSITY (0.7) -mul r6.xyz, r6.xyzx, l(0.700000, 0.700000, 0.700000, 0.000000) +// Reduce fog inscatter intensity +mul r6.xyz, r6.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) -// Standard fog blend: foggedScene = sceneColor * transmittance + fogColor +// Standard fog blend with reduced intensity mad r8.xyz, r5.xyzx, r7.xyzx, r6.xyzx -// Calculate fog amount: fogAmount = 1 - avg(transmittance) -dp3 r3.w, r7.xyzx, l(0.333333, 0.333333, 0.333333, 0.000000) -add r3.w, -r3.w, l(1.000000) - -// Scene luminance (BT.709) -dp3 r4.w, r5.xyzx, l(0.2126, 0.7152, 0.0722, 0.000000) - -// Fogged luminance -dp3 r5.w, r8.xyzx, l(0.2126, 0.7152, 0.0722, 0.000000) - -// lumaWeight = saturate(sceneLuma * 100) for smooth falloff -mul_sat r6.w, r4.w, l(100.000000) - -// Safe luma for division -max r4.w, r4.w, l(0.0001) - -// sceneRatios = sceneColor / safeLuma -div r9.xyz, r5.xyzx, r4.wwww - -// Clamp ratios to prevent artifacts -max r9.xyz, r9.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r9.xyz, r9.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000) - -// huePreserved = sceneRatios * foggedLuma -mul r9.xyz, r9.xyzx, r5.wwww - -// preserveAmount = HUE_PRESERVATION * saturate(1 - fogAmount*0.5) * lumaWeight -mul r4.w, r3.w, l(0.500000) -add_sat r4.w, -r4.w, l(1.000000) -mul r4.w, r4.w, l(0.600000) // HUE_PRESERVATION -mul r4.w, r4.w, r6.w - -// foggedScene = lerp(foggedScene, huePreserved, preserveAmount) -add r9.xyz, r9.xyzx, -r8.xyzx -mad r8.xyz, r4.wwww, r9.xyzx, r8.xyzx - // Output: scale back to 0-255 range mul o0.xyz, r8.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) dp3 o0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) diff --git a/src/games/endfield/deferred-lighting/0xE322C21D.cso b/src/games/endfield/deferred-lighting/0xE322C21D.cso new file mode 100644 index 0000000000000000000000000000000000000000..39ecd93f41f6438c6e163e7aad6b5f615cbf3249 GIT binary patch literal 49564 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0.asm new file mode 100644 index 0000000000..f0aa33b733 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0.asm @@ -0,0 +1,1634 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Jan 30 20:17:33 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[160], dynamicIndexed +dcl_constantbuffer CB6[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture3d (float,float,float,float) t25 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 38 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t22.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t23.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t24.xyzw +mul r1.xyzw, r1.xwyz, l(1023.000000, 3.000000, 1023.000000, 1023.000000) +ftou r1.xyw, r1.xyxw +ubfe r4.x, l(7), l(3), r1.x +bfi r4.yz, l(0, 3, 3, 0), l(0, 2, 2, 0), r1.xxwx, l(0, 0, 0, 0) +bfi r1.x, l(2), l(0), r1.y, r4.y +utof r1.x, r1.x +mul r1.y, r1.x, l(0.0322580636) +round_ne r1.z, r1.z +ftou r1.z, r1.z +ubfe r4.y, l(7), l(3), r1.z +utof r4.xy, r4.xyxx +mul r4.y, r4.y, l(0.00787401572) +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r4.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r5.y, -r4.w, l(1.000000) +lt r4.w, r5.y, l(0.000000) +ge r6.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r6.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r6.xy, r6.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r6.xy, r6.xyxx, r6.zwzz +movc r5.xz, r4.wwww, r6.xxyx, r2.xxyx +dp3 r2.x, r5.xyzx, r5.xyzx +rsq r2.x, r2.x +mul r5.xyz, r2.xxxx, r5.xyzx +and r1.z, r1.z, l(7) +utof r1.z, r1.z +mad r1.z, r1.z, l(0.107142866), l(0.500000) +utof r2.xy, r0.xyxx +mul r6.xy, v0.xyxx, cb0[82].zwzz +mad r6.zw, r6.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r7.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r7.xy, r7.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r4.w, r7.xyxx, t1.yzwx, s0, l(0.000000) +mul r7.xyzw, -r6.wwww, cb0[25].xyzw +mad r7.xyzw, cb0[24].xyzw, r6.zzzz, r7.xyzw +mad r7.xyzw, cb0[26].xyzw, r4.wwww, r7.xyzw +add r7.xyzw, r7.xyzw, cb0[27].xyzw +div r7.xyz, r7.xyzx, r7.wwww +mul r4.w, r7.y, cb0[1].z +mad r4.w, cb0[0].z, r7.x, r4.w +mad r4.w, cb0[2].z, r7.z, r4.w +add r4.w, r4.w, cb0[3].z +eq r6.z, l(0.000000), cb0[86].w +add r8.xyz, -r7.xyzx, cb0[44].xyzx +mov r9.x, cb0[0].z +mov r9.y, cb0[1].z +mov r9.z, cb0[2].z +movc r10.xyz, r6.zzzz, r8.xyzx, r9.xyzx +dp3 r6.z, r10.xyzx, r10.xyzx +max r6.w, r6.z, l(9.999999939E-09) +rsq r6.w, r6.w +mul r11.xyz, r6.wwww, r10.xyzx +mul r6.z, r6.w, r6.z +lt r8.w, l(0.000488281250), cb0[234].x +if_nz r8.w + sample_b_indexable(texture2d)(float,float,float,float) r8.w, v1.xyxx, t21.yzwx, s1, cb0[108].x +else + mov r8.w, l(1.000000) +endif +add r8.w, -r8.w, l(1.000000) +mul r2.w, r2.w, l(3.000000) +mad_sat r9.w, r2.z, l(0.300000), l(0.250000) +mul r9.w, r9.w, cb0[222].x +mul r9.w, r8.w, r9.w +mad r9.w, r9.w, l(-0.750000), l(1.000000) +mul r3.xyz, r3.xyzx, r9.wwww +min r9.w, r2.z, l(0.300000) +mul r8.w, r8.w, cb0[222].x +mul r8.w, r8.w, l(0.500000) +add r9.w, -r2.z, r9.w +mad r12.w, r8.w, r9.w, r2.z +mul r2.z, r1.z, l(0.080000) +dp3 r8.w, r5.xyzx, r11.xyzx +max r9.w, r8.w, l(0.000000) +mad r13.xyzw, r12.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r10.w, r13.x, r13.x +mul r11.w, r9.w, l(-9.280000) +exp r11.w, r11.w +min r10.w, r10.w, r11.w +mad r10.w, r10.w, r13.x, r13.y +mad r13.xy, r10.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz +ld_indexable(texture2d)(float,float,float,float) r13.z, r0.xyzz, t7.zwxy +lt r0.z, l(0.001000), r13.z +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r6.xyxx, t10.yzxw, s1, l(0.000000) + dp3 r10.w, -r11.xyzx, r5.xyzx + add r10.w, r10.w, r10.w + mad r14.xyz, r5.xyzx, -r10.wwww, -r11.xyzx + dp3 r10.w, -cb3[0].xyzx, r14.xyzx + mad r15.xyz, cb3[0].xyzx, r10.wwww, r14.xyzx + lt r10.w, r10.w, cb3[4].z + dp3 r11.w, r15.xyzx, r15.xyzx + max r11.w, r11.w, l(0.0000610351562) + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xyzx + mul r15.xyz, r15.xyzx, cb3[4].yyyy + mad r15.xyz, -cb3[0].xyzx, cb3[4].zzzz, r15.xyzx + dp3 r11.w, r15.xyzx, r15.xyzx + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xyzx + movc r14.xyz, r10.wwww, r15.xyzx, r14.xyzx + mad r15.xyz, r10.xyzx, r6.wwww, r14.xyzx + dp3 r10.w, r15.xyzx, r15.xyzx + max r10.w, r10.w, l(0.0000610351562) + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + dp3 r10.w, r5.xyzx, r14.xyzx + mov_sat r12.y, r10.w + dp3_sat r11.w, r5.xyzx, r15.xyzx + dp3 r14.x, r11.xyzx, r14.xyzx + min r12.z, r9.w, l(1.000000) + mul r14.y, r12.w, r12.w + mul r14.y, r14.y, r14.y + mad r14.z, r11.w, r14.y, -r11.w + mad r11.w, r14.z, r11.w, l(1.000000) + dp3_sat r14.z, r11.xyzx, r15.xyzx + add r14.z, -r14.z, l(1.000000) + mul r14.w, r14.z, r14.z + mul r14.w, r14.w, r14.w + mul r15.x, r14.z, r14.w + add r15.y, -r12.w, l(1.000000) + mad r15.z, -r15.y, l(0.383026), l(-0.0761947036) + mad r15.z, r15.y, r15.z, l(1.049970) + mad r15.y, r15.y, r15.z, l(0.409255) + min r15.y, r15.y, l(0.999000) + add r15.z, -r15.y, l(1.000000) + mad r15.w, -r1.z, l(0.080000), l(1.000000) + mad r15.w, r15.w, l(0.0476190485), r2.z + mov_sat r16.x, -r14.x + mul r16.x, r16.x, r16.x + mad r16.x, r16.x, l(-0.640000), l(1.000000) + mul r16.x, r16.x, r16.x + mad r14.z, -r14.w, r14.z, l(1.000000) + mad r14.z, r2.z, r14.z, r15.x + mul r11.w, r11.w, r11.w + div r11.w, r14.y, r11.w + mad r16.yz, -r12.zzyz, r14.yyyy, r12.zzyz + mad r14.yw, r16.yyyz, r12.zzzy, r14.yyyy + sqrt r14.yw, r14.yyyw + mul r14.yw, r12.yyyz, r14.yyyw + add r14.y, r14.w, r14.y + add r14.y, r14.y, l(0.000100) + div r14.y, l(0.500000), r14.y + mul r11.w, r11.w, r14.y + mul r11.w, r11.w, r14.z + min r11.w, r11.w, l(2048.000000) + mad r17.xyzw, r12.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r12.z, r17.xyxx, t9.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r14.y, r17.zwzz, t9.yxzw, s1, l(0.000000) + mul r12.z, r12.z, r14.y + mul r12.z, r15.y, r12.z + div r12.z, r12.z, r15.z + mul r14.y, r15.w, r15.w + mul r12.z, r12.z, r14.y + mad r14.y, -r15.w, r15.z, l(1.000000) + div r12.z, r12.z, r14.y + add r11.w, r11.w, r12.z + add_sat r12.z, r8.w, l(0.200000) + mov_sat r14.y, r14.x + add r14.y, r14.y, l(0.500000) + min r14.y, r14.y, l(1.000000) + mul r14.z, r12.z, r14.y + add_sat r14.x, r14.x, l(1.000000) + mad r12.z, -r12.z, r14.y, l(1.000000) + mad r12.z, r14.x, r12.z, r14.z + mul r11.w, r11.w, r12.z + mul r11.w, r4.y, r11.w + mul r14.xyz, r4.yyyy, r3.xyzx + ubfe r1.w, l(7), l(3), r1.w + utof r1.w, r1.w + mul r1.w, r1.w, l(0.00787401572) + mul r11.w, r11.w, cb3[4].x + max r11.w, r11.w, l(0.000000) + min r11.w, r11.w, l(1000.000000) + mul r11.w, r12.y, r11.w + mad r14.xyz, r14.xyzx, r1.wwww, r11.wwww + max r1.w, r3.y, r3.x + max r1.w, r3.z, r1.w + max r1.w, r1.w, l(0.010000) + div r15.xyz, r3.xyzx, r1.wwww + mul r1.w, r4.x, l(0.00393700786) + mul r15.xyz, r1.wwww, r15.xyzx + add_sat r1.w, -r10.w, l(0.500000) + ne r11.w, r16.x, l(0.360000) + div r12.z, l(0.360000), r16.x + movc r11.w, r11.w, r12.z, l(1.000000) + mul r1.w, r1.w, r11.w + mad_sat r10.w, r1.x, l(0.0322580636), r10.w + add r10.w, -r12.y, r10.w + mul r16.xyz, r3.xyzx, r10.wwww + mad r15.xyz, r15.xyzx, r1.wwww, r16.xyzx + mad r14.xyz, r15.xyzx, r4.yyyy, r14.xyzx + mul r14.xyz, r14.xyzx, cb3[1].xyzx + mov r13.w, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, r13.zwzz, t8.xyzw, s1, cb0[108].x + add r1.w, -r13.z, l(1.000000) + mad r15.xyz, r14.xyzx, r15.xyzx, -r14.xyzx + mad r14.xyz, r1.wwww, r15.xyzx, r14.xyzx + max r1.w, r4.y, r0.z + add r1.w, -r0.z, r1.w + mad r0.z, r1.y, r1.w, r0.z + mul r14.xyz, r0.zzzz, r14.xyzx +else + mov r14.xyz, l(0,0,0,0) +endif +mul r1.yw, r2.xxxy, l(0.000000, 0.031250, 0.000000, 0.031250) +round_ni r1.yw, r1.yyyw +mad r0.z, r1.w, cb2[1].y, r1.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r1.y, -cb0[85].y, cb2[2].w, |r4.w| +round_ni r1.y, r1.y +add r1.w, l(-1.000000), cb2[1].w +max r10.w, r1.y, l(0.000000) +min r1.w, r1.w, r10.w +mul r10.w, r1.w, l(8.000000) +ftoi r10.w, r10.w +ge r1.y, r1.w, r1.y +iadd r1.w, r10.w, cb0[110].y +mul r10.w, r12.w, r12.w +dp3 r11.w, -r11.xyzx, r5.xyzx +add r11.w, r11.w, r11.w +mad r15.xyz, r5.xyzx, -r11.wwww, -r11.xyzx +min r12.x, r9.w, l(1.000000) +add r11.w, -r12.w, l(1.000000) +mad r12.y, -r11.w, l(0.383026), l(-0.0761947036) +mad r12.y, r11.w, r12.y, l(1.049970) +mad r11.w, r11.w, r12.y, l(0.409255) +min r11.w, r11.w, l(0.999000) +add r12.y, -r11.w, l(1.000000) +mad r1.z, -r1.z, l(0.080000), l(1.000000) +mad r1.z, r1.z, l(0.0476190485), r2.z +mad r13.zw, r12.xxxw, l(0.000000, 0.000000, 0.968750, 0.968750), l(0.000000, 0.000000, 0.015625, 0.015625) +sample_l_indexable(texture2d)(float,float,float,float) r12.z, r13.zwzz, t9.yzxw, s1, l(0.000000) +mad r13.z, -r1.z, r12.y, l(1.000000) +add_sat r8.w, r8.w, l(0.200000) +max r13.w, r3.y, r3.x +max r13.w, r3.z, r13.w +max r13.w, r13.w, l(0.010000) +div r16.xyz, r3.xyzx, r13.wwww +mul r13.w, r4.x, l(0.00393700786) +mul r17.xyz, r13.wwww, r16.xyzx +mul r18.xyz, r4.yyyy, r3.xyzx +mul r1.z, r1.z, r1.z +mov r19.w, l(1.000000) +mov r20.y, l(1.000000) +mov r21.z, r12.w +mov r22.xyz, l(0,0,0,0) +mov r13.w, l(1.000000) +mov r14.w, l(0) +loop + ilt r15.w, l(7), r14.w + breakc_nz r15.w + iadd r15.w, r0.z, r14.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r15.w, r15.w, l(0), t0.xxxx + iadd r16.w, r1.w, r14.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r16.w, r16.w, l(0), t0.xxxx + and r15.w, r15.w, r16.w + and r15.w, r1.y, r15.w + ishl r16.w, r14.w, l(5) + mov r23.xyz, l(0,0,0,0) + mov r17.w, r13.w + mov r18.w, r15.w + loop + breakc_z r18.w + firstbit_lo r20.z, r18.w + ishl r20.w, l(1), r20.z + xor r20.w, r18.w, r20.w + iadd r20.z, r16.w, r20.z + bfi r24.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r20.zzzz, l(1, 3, 5, 6) + bfi r21.w, l(29), l(3), r20.z, l(7) + ftou r22.w, cb3[r24.z + 6].w + ieq r22.w, r22.w, l(1) + if_nz r22.w + add r19.xyz, r7.xyzx, -cb3[r24.x + 6].xyzx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.z + 6].xzyx + and r26.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.w + 6].yxzy + ushr r27.xyz, cb3[r24.z + 6].xzyx, l(16, 16, 16, 0) + ushr r28.xyz, cb3[r24.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyz, r27.xyzx + f16tof32 r28.xyw, r28.yxyz + mov r29.xz, r25.xxzx + mov r29.yw, r27.xxxz + dp4 r22.w, r19.xyzw, r29.xyzw + mov r27.x, r25.y + mov r27.z, r26.y + mov r27.w, r28.x + dp4 r23.w, r19.xyzw, r27.xyzw + mov r28.xz, r26.xxzx + dp4 r19.x, r19.xyzw, r28.xyzw + max r19.y, |r22.w|, |r23.w| + max r19.x, |r19.x|, r19.y + mad r19.y, cb3[r21.w + 6].x, l(0.500000), l(0.500000) + add r19.x, -r19.y, r19.x + mad r19.y, -cb3[r21.w + 6].x, l(0.500000), l(0.500000) + div_sat r19.x, r19.x, r19.y + add r19.x, -r19.x, l(1.000000) + mul r19.x, r19.x, r19.x + else + mov r19.x, l(1.000000) + endif + lt r19.y, l(0.500000), cb3[r24.y + 6].z + lt r19.z, r19.x, l(0.001000) + or r19.z, r19.y, r19.z + if_nz r19.z + mov r18.w, r20.w + continue + endif + ishl r19.z, r20.z, l(3) + bfi r20.z, l(29), l(3), r20.z, l(2) + lt r22.w, cb3[r19.z + 6].w, l(1.500000) + if_nz r22.w + mad r22.w, cb3[r20.z + 6].y, l(0.500000), l(0.500000) + add r25.x, r22.w, -|cb3[r20.z + 6].x| + add r25.y, -r25.x, cb3[r20.z + 6].y + add r22.w, -|r25.x|, l(1.000000) + add r22.w, -|r25.y|, r22.w + max r22.w, r22.w, l(0.000488281250) + ge r23.w, cb3[r20.z + 6].x, l(0.000000) + movc r25.z, r23.w, r22.w, -r22.w + dp3 r22.w, r25.xyzx, r25.xyzx + rsq r22.w, r22.w + mul r25.xyz, r22.wwww, r25.xyzx + add r26.xyz, -r7.xyzx, cb3[r24.x + 6].xyzx + dp3 r22.w, r26.xyzx, r26.xyzx + rsq r23.w, r22.w + mul r27.xyz, r23.wwww, r26.xyzx + ftoi r24.z, cb3[r21.w + 6].w + mul r28.xyz, r25.xyzx, cb3[r20.z + 6].zzzz + mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + mad r30.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + ftou r25.w, cb3[r19.z + 6].w + and r25.w, r25.w, l(1) + ieq r26.w, r25.w, l(0) + not r26.w, r26.w + lt r27.w, l(0.000000), cb3[r20.z + 6].z + and r26.w, r26.w, r27.w + dp3 r27.w, r29.xyzx, r29.xyzx + sqrt r27.w, r27.w + dp3 r28.w, r30.xyzx, r30.xyzx + sqrt r28.w, r28.w + dp3 r29.w, r5.xyzx, r29.xyzx + div r29.w, r29.w, r27.w + dp3 r30.w, r5.xyzx, r30.xyzx + div r30.w, r30.w, r28.w + add r29.w, r29.w, r30.w + mul_sat r31.x, r29.w, l(0.500000) + dp3 r29.w, r29.xyzx, r30.xyzx + mad r27.w, r27.w, r28.w, r29.w + mad r27.w, r27.w, l(0.500000), l(1.000000) + div r31.y, l(1.000000, 1.000000, 1.000000, 1.000000), r27.w + dp3_sat r20.x, r5.xyzx, r27.xyzx + movc r21.xy, r26.wwww, r31.xyxx, r20.xyxx + lt r20.x, cb3[r24.w + 6].w, l(0.000000) + if_nz r20.x + mul r20.x, cb3[r24.x + 6].w, cb3[r24.x + 6].w + mul r20.x, r20.x, r22.w + mad r20.x, -r20.x, r20.x, l(1.000000) + max r20.x, r20.x, l(0.000000) + add r22.w, r22.w, l(1.000000) + div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w + and r27.w, r26.w, l(0x3f800000) + add r28.w, r21.y, -r22.w + mad r22.w, r27.w, r28.w, r22.w + mul r20.x, r20.x, r20.x + mul r20.x, r20.x, r22.w + else + mul r30.xyz, r26.xyzx, cb3[r24.x + 6].wwww + dp3 r22.w, r30.xyzx, r30.xyzx + min r22.w, r22.w, l(1.000000) + add r22.w, -r22.w, l(1.000000) + log r22.w, r22.w + mul r22.w, r22.w, cb3[r24.w + 6].w + exp r22.w, r22.w + mul r20.x, r21.y, r22.w + endif + dp3 r21.y, r27.xyzx, -r25.xyzx + add r21.y, r21.y, -cb3[r20.z + 6].z + mul_sat r21.y, r21.y, cb3[r20.z + 6].w + mul r21.y, r21.y, r21.y + movc r21.y, r25.w, l(1.000000), r21.y + mul r20.x, r20.x, r21.y + not r21.y, r26.w + ige r22.w, r24.z, l(0) + and r21.y, r21.y, r22.w + if_nz r21.y + if_z r25.w + ishl r21.y, r24.z, l(2) + mul r25.xyz, r7.yyyy, cb5[r21.y + 33].xywx + mad r25.xyz, cb5[r21.y + 32].xywx, r7.xxxx, r25.xyzx + mad r25.xyz, cb5[r21.y + 34].xywx, r7.zzzz, r25.xyzx + add r25.xyz, r25.xyzx, cb5[r21.y + 35].xywx + div_sat r25.xy, r25.xyxx, r25.zzzz + mad r25.xy, r25.xyxx, cb5[r24.z + 0].zwzz, cb5[r24.z + 0].xyxx + else + ishl r21.y, r24.z, l(2) + dp3 r30.x, -r26.xyzx, cb5[r21.y + 32].xyzx + dp3 r30.y, -r26.xyzx, cb5[r21.y + 33].xyzx + dp3 r30.z, -r26.xyzx, cb5[r21.y + 34].xyzx + lt r21.y, |r30.x|, |r30.y| + and r21.y, r21.y, l(1) + dp2 r22.w, |r30.xyxx|, icb[r21.y + 0].xyxx + lt r22.w, r22.w, |r30.z| + movc r21.y, r22.w, l(2), r21.y + dp3 r22.w, r30.xyzx, icb[r21.y + 0].xyzx + lt r22.w, r22.w, l(0.000000) + bfi r21.y, l(31), l(1), r21.y, r22.w + ushr r22.w, r21.y, l(1) + dp3 r22.w, r30.xyzx, icb[r22.w + 0].xyzx + div r25.z, l(0.000244140625), cb5[r24.z + 0].w + add r25.z, -r25.z, l(0.500000) + utof r26.x, r21.y + ult r26.y, r21.y, l(2) + and r26.y, r26.y, l(2) + dp2 r26.y, r30.xzxx, icb[r26.y + 0].xzxx + mul r26.y, r26.y, icb[r21.y + 4].z + div r26.y, r26.y, |r22.w| + mad r26.x, r26.y, r25.z, r26.x + add r26.x, r26.x, l(0.500000) + mul_sat r26.x, r26.x, l(0.166666672) + iadd r26.z, l(-1), icb[r21.y + 4].y + dp2 r26.z, r30.yzyy, icb[r26.z + 0].xyxx + mul r21.y, r26.z, icb[r21.y + 4].w + div r21.y, r21.y, |r22.w| + mad_sat r26.y, -r21.y, r25.z, l(0.500000) + mad r25.xy, r26.xyxx, cb5[r24.z + 0].zwzz, cb5[r24.z + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r21.y, r25.xyxx, t11.yxzw, s1, l(0.000000) + mul r20.x, r20.x, r21.y + endif + lt r21.y, l(0.000000), r20.x + if_nz r21.y + if_z r25.w + ftoi r22.w, cb3[r24.y + 6].x + else + add r25.xyz, r7.xyzx, -cb3[r24.x + 6].xyzx + lt r26.xyz, |r25.yzzy|, |r25.xxyx| + and r24.z, r26.y, r26.x + lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ushr r25.w, cb3[r20.z + 6].w, l(24) + ubfe r26.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r20.z + 6].wwww + movc r25.x, r25.x, r25.w, r26.x + and r25.w, l(255), cb3[r20.z + 6].w + movc r25.y, r25.y, r26.y, r25.w + ubfe r25.w, l(8), l(8), cb3[r24.y + 6].x + and r26.x, l(255), cb3[r24.y + 6].x + movc r25.z, r25.z, r25.w, r26.x + movc r25.y, r26.z, r25.y, r25.z + movc r24.z, r24.z, r25.x, r25.y + ilt r25.x, r24.z, l(80) + movc r22.w, r25.x, r24.z, l(-1) + endif + ishl r24.z, r22.w, l(2) + mad r25.xyz, r27.xyzx, cb4[r22.w + 288].xxxx, r7.xyzx + mul r25.w, l(5.000000), cb4[r22.w + 288].y + mad r25.xyz, r5.xyzx, r25.wwww, r25.xyzx + mul r30.xyzw, r25.yyyy, cb4[r24.z + 65].xyzw + mad r30.xyzw, cb4[r24.z + 64].xyzw, r25.xxxx, r30.xyzw + mad r25.xyzw, cb4[r24.z + 66].xyzw, r25.zzzz, r30.xyzw + add r25.xyzw, r25.xyzw, cb4[r24.z + 67].xyzw + div r25.xyz, r25.xyzx, r25.wwww + ge r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ge r30.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r31.xy, -cb4[r22.w + 344].xyxx, cb4[r22.w + 344].zwzz + mad r25.xy, r25.xyxx, r31.xyxx, cb4[r22.w + 344].xyxx + mad r31.xy, r25.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r31.xy, r31.xyxx + mad r25.xy, r25.xyxx, cb4[400].zwzz, -r31.xyxx + add r32.xyzw, r25.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r33.xyzw, r32.xxzz, r32.xxzz + add r31.zw, -r25.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r32.xz, r25.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r34.xy, r25.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r35.xy, r31.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r34.xy, -r34.xyxx, r34.xyxx, r32.ywyy + add r34.xy, r34.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r34.xy, r34.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r33.xz, r33.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r25.xy, r33.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r25.xyxx + mul r36.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r25.xy, -r32.xzxx, r32.xzxx, r31.zwzz + add r25.xy, r25.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r37.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r25.xy, r32.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r36.z, r37.x + mov r36.w, r25.x + mov r35.z, r34.x + mov r35.w, r33.x + add r32.xyzw, r35.zwxz, r36.zwxz + mov r37.z, r36.y + mov r37.w, r25.y + mov r34.z, r35.y + mov r34.w, r33.z + add r25.xyw, r34.zyzw, r37.zyzw + div r33.xyz, r35.xzwx, r32.zwyz + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyz, r33.yxzy, cb4[400].xxxx + div r34.xyz, r34.zywz, r25.xywx + add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r34.xyz, r34.xyzx, cb4[400].yyyy + mov r33.w, r34.x + mad r35.xyzw, r31.xyxy, cb4[400].xyxy, r33.ywxw + mad r31.zw, r31.xxxy, cb4[400].xxxy, r33.zzzw + mov r34.w, r33.y + mov r33.yw, r34.yyyz + mad r36.xyzw, r31.xyxy, cb4[400].xyxy, r33.xyzy + mad r34.xyzw, r31.xyxy, cb4[400].xyxy, r34.wywz + mad r33.xyzw, r31.xyxy, cb4[400].xyxy, r33.xwzw + mul r37.xyzw, r25.xxxy, r32.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r35.xyxx, t6.xxxx, s4, r25.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r35.zwzz, t6.xxxx, s4, r25.z + mul r25.x, r25.x, r37.y + mad r24.z, r37.x, r24.z, r25.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r31.zwzz, t6.xxxx, s4, r25.z + mad r24.z, r37.z, r25.x, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r34.xyxx, t6.xxxx, s4, r25.z + mad r24.z, r37.w, r25.x, r24.z + mul r31.xyzw, r25.yyww, r32.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r36.xyxx, t6.xxxx, s4, r25.z + mad r24.z, r31.x, r25.x, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r36.zwzz, t6.xxxx, s4, r25.z + mad r24.z, r31.y, r25.x, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r34.zwzz, t6.xxxx, s4, r25.z + mad r24.z, r31.z, r25.x, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r33.xyxx, t6.xxxx, s4, r25.z + mad r24.z, r31.w, r25.x, r24.z + ige r25.x, r22.w, l(0) + or r26.xyz, r26.xyzx, r30.xyzx + or r25.y, r26.y, r26.x + or r25.y, r26.z, r25.y + and r26.x, r25.z, l(0x7fffffff) + ult r26.x, l(0x7f800000), r26.x + or r25.y, r25.y, r26.x + mul r25.w, r25.w, r32.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r33.zwzz, t6.xxxx, s4, r25.z + mad r24.z, r25.w, r25.z, r24.z + add r24.z, r24.z, l(-1.000000) + mad r22.w, cb4[r22.w + 288].w, r24.z, l(1.000000) + movc r22.w, r25.y, l(1.000000), r22.w + movc r22.w, r25.x, r22.w, l(1.000000) + else + mov r22.w, l(1.000000) + endif + if_nz r26.w + dp3 r24.z, r15.xyzx, r28.xyzx + mul_sat r25.x, r23.w, cb3[r20.z + 6].z + mad r25.x, r25.x, l(0.500000), r10.w + min r25.x, r25.x, l(1.000000) + div r25.x, r10.w, r25.x + mad r25.yzw, r15.xxyz, r24.zzzz, -r28.xxyz + dp3 r25.y, r29.xyzx, r25.yzwy + mul r24.z, r24.z, r24.z + mad r24.z, cb3[r20.z + 6].z, cb3[r20.z + 6].z, -r24.z + div_sat r24.z, r25.y, r24.z + mad r25.yzw, r28.xxyz, r24.zzzz, r29.xxyz + dp3 r24.z, r25.yzwy, r25.yzwy + rsq r24.z, r24.z + mul r27.xyz, r24.zzzz, r25.yzwy + else + mov r25.x, l(1.000000) + endif + if_nz r21.y + mul_sat r21.y, r23.w, cb3[r21.w + 6].y + mad r25.yzw, r10.xxyz, r6.wwww, r27.xxyz + dp3 r23.w, r25.yzwy, r25.yzwy + max r23.w, r23.w, l(0.0000610351562) + rsq r23.w, r23.w + mul r25.yzw, r23.wwww, r25.yyzw + dp3 r23.w, r5.xyzx, r27.xyzx + dp3_sat r24.z, r5.xyzx, r25.yzwy + dp3_sat r25.y, r11.xyzx, r25.yzwy + dp3 r25.z, r11.xyzx, r27.xyzx + lt r25.w, l(0.000000), r21.y + mul r21.y, r21.y, r21.y + mad r26.x, r25.y, l(3.600000), l(0.400000) + div r21.y, r21.y, r26.x + mad r21.y, r12.w, r12.w, r21.y + min r21.y, r21.y, l(1.000000) + movc r21.y, r25.w, r21.y, r10.w + mul r21.y, r21.y, r21.y + mad r25.w, r24.z, r21.y, -r24.z + mad r24.z, r25.w, r24.z, l(1.000000) + add r25.y, -r25.y, l(1.000000) + mul r25.w, r25.y, r25.y + mul r25.w, r25.w, r25.w + mul r26.x, r25.y, r25.w + mov_sat r26.y, -r25.z + mul r26.y, r26.y, r26.y + mad r26.y, r26.y, l(-0.640000), l(1.000000) + mul r26.y, r26.y, r26.y + mad r25.y, -r25.w, r25.y, l(1.000000) + mad r25.y, r2.z, r25.y, r26.x + mul r24.z, r24.z, r24.z + div r24.z, r21.y, r24.z + mul r24.z, r25.x, r24.z + mad r25.x, -r12.x, r21.y, r12.x + mad r25.x, r25.x, r12.x, r21.y + sqrt r25.x, r25.x + mad r25.w, -r21.x, r21.y, r21.x + mad r21.y, r25.w, r21.x, r21.y + sqrt r21.y, r21.y + mul r21.y, r12.x, r21.y + mad r21.y, r21.x, r25.x, r21.y + add r21.y, r21.y, l(0.000100) + div r21.y, l(0.500000), r21.y + mul r21.y, r21.y, r24.z + mul r21.y, r21.y, r25.y + min r21.y, r21.y, l(2048.000000) + mad r25.xy, r21.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r24.z, r25.xyxx, t9.yzxw, s1, l(0.000000) + mul r24.z, r12.z, r24.z + mul r24.z, r11.w, r24.z + div r24.z, r24.z, r12.y + mul r24.z, r1.z, r24.z + div r24.z, r24.z, r13.z + add r21.y, r21.y, r24.z + mov_sat r24.z, r25.z + add r24.z, r24.z, l(0.500000) + min r24.z, r24.z, l(1.000000) + mul r25.x, r8.w, r24.z + add_sat r25.y, r25.z, l(1.000000) + mad r24.z, -r8.w, r24.z, l(1.000000) + mad r24.z, r25.y, r24.z, r25.x + mul r21.y, r21.y, r24.z + mul r21.y, r4.y, r21.y + mul r21.y, r21.y, cb3[r21.w + 6].z + max r21.y, r21.y, l(0.000000) + min r21.y, r21.y, l(1000.000000) + add_sat r24.z, -r23.w, l(0.500000) + ne r25.x, r26.y, l(0.360000) + div r25.y, l(0.360000), r26.y + movc r25.x, r25.x, r25.y, l(1.000000) + mul r24.z, r24.z, r25.x + mad_sat r23.w, r1.x, l(0.0322580636), r23.w + add r23.w, -r21.x, r23.w + mul r25.xyz, r3.xyzx, r23.wwww + mad r25.xyz, r17.xyzx, r24.zzzz, r25.xyzx + mul r25.xyz, r4.yyyy, r25.xyzx + mad r25.xyz, r21.yyyy, r21.xxxx, r25.xyzx + mad r25.xyz, r18.xyzx, r21.xxxx, r25.xyzx + mul r26.xyz, r20.xxxx, cb3[r19.z + 6].xyzx + mul r26.xyz, r22.wwww, r26.xyzx + mul r26.xyz, r19.xxxx, r26.xyzx + mul r25.xyz, r25.xyzx, r26.xyzx + else + mov r25.xyz, l(0,0,0,0) + endif + else + if_z r19.y + mad r19.x, cb3[r20.z + 6].y, l(0.500000), l(0.500000) + add r26.x, r19.x, -|cb3[r20.z + 6].x| + add r26.y, -r26.x, cb3[r20.z + 6].y + add r19.x, -|r26.x|, l(1.000000) + add r19.x, -|r26.y|, r19.x + max r19.x, r19.x, l(0.000488281250) + ge r19.y, cb3[r20.z + 6].x, l(0.000000) + movc r26.z, r19.y, r19.x, -r19.x + dp3 r19.x, r26.xyzx, r26.xyzx + rsq r19.x, r19.x + mul r26.xyz, r19.xxxx, r26.xyzx + add r27.xyz, -r7.xyzx, cb3[r24.x + 6].xyzx + dp3 r19.x, r27.xyzx, r27.xyzx + rsq r19.y, r19.x + mul r28.xyz, r19.yyyy, r27.xyzx + ftoi r19.y, cb3[r21.w + 6].w + mul r21.xyw, r26.xyxz, cb3[r20.z + 6].zzzz + mad r29.xyz, -r21.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r27.xyzx + mad r21.xyw, r21.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r27.xyxz + ftou r19.z, cb3[r19.z + 6].w + and r19.z, r19.z, l(1) + ieq r20.x, r19.z, l(0) + not r20.x, r20.x + lt r22.w, l(0.000000), cb3[r20.z + 6].z + and r20.x, r20.x, r22.w + dp3 r22.w, r29.xyzx, r29.xyzx + sqrt r22.w, r22.w + dp3 r23.w, r21.xywx, r21.xywx + sqrt r23.w, r23.w + dp3 r21.x, r29.xyzx, r21.xywx + mad r21.x, r22.w, r23.w, r21.x + mad r21.x, r21.x, l(0.500000), l(1.000000) + div r21.x, l(1.000000, 1.000000, 1.000000, 1.000000), r21.x + movc r21.x, r20.x, r21.x, l(1.000000) + lt r21.y, cb3[r24.w + 6].w, l(0.000000) + if_nz r21.y + mul r21.y, cb3[r24.x + 6].w, cb3[r24.x + 6].w + mul r21.y, r19.x, r21.y + mad r21.y, -r21.y, r21.y, l(1.000000) + max r21.y, r21.y, l(0.000000) + add r19.x, r19.x, l(1.000000) + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x + and r21.w, r20.x, l(0x3f800000) + add r22.w, -r19.x, r21.x + mad r19.x, r21.w, r22.w, r19.x + mul r21.y, r21.y, r21.y + mul r19.x, r19.x, r21.y + else + mul r29.xyz, r27.xyzx, cb3[r24.x + 6].wwww + dp3 r21.y, r29.xyzx, r29.xyzx + min r21.y, r21.y, l(1.000000) + add r21.y, -r21.y, l(1.000000) + log r21.y, r21.y + mul r21.y, r21.y, cb3[r24.w + 6].w + exp r21.y, r21.y + mul r19.x, r21.y, r21.x + endif + dp3 r21.x, r28.xyzx, -r26.xyzx + add r21.x, r21.x, -cb3[r20.z + 6].z + mul_sat r21.x, r21.x, cb3[r20.z + 6].w + mul r21.x, r21.x, r21.x + movc r21.x, r19.z, l(1.000000), r21.x + mul r19.x, r19.x, r21.x + not r20.x, r20.x + ige r21.x, r19.y, l(0) + and r20.x, r20.x, r21.x + if_nz r20.x + if_z r19.z + ishl r20.x, r19.y, l(2) + mul r21.xyw, r7.yyyy, cb5[r20.x + 33].xyxw + mad r21.xyw, cb5[r20.x + 32].xyxw, r7.xxxx, r21.xyxw + mad r21.xyw, cb5[r20.x + 34].xyxw, r7.zzzz, r21.xyxw + add r21.xyw, r21.xyxw, cb5[r20.x + 35].xyxw + div_sat r21.xy, r21.xyxx, r21.wwww + mad r21.xy, r21.xyxx, cb5[r19.y + 0].zwzz, cb5[r19.y + 0].xyxx + else + ishl r20.x, r19.y, l(2) + dp3 r26.x, -r27.xyzx, cb5[r20.x + 32].xyzx + dp3 r26.y, -r27.xyzx, cb5[r20.x + 33].xyzx + dp3 r26.z, -r27.xyzx, cb5[r20.x + 34].xyzx + lt r20.x, |r26.x|, |r26.y| + and r20.x, r20.x, l(1) + dp2 r21.w, |r26.xyxx|, icb[r20.x + 0].xyxx + lt r21.w, r21.w, |r26.z| + movc r20.x, r21.w, l(2), r20.x + dp3 r21.w, r26.xyzx, icb[r20.x + 0].xyzx + lt r21.w, r21.w, l(0.000000) + bfi r20.x, l(31), l(1), r20.x, r21.w + ushr r21.w, r20.x, l(1) + dp3 r21.w, r26.xyzx, icb[r21.w + 0].xyzx + div r22.w, l(0.000244140625), cb5[r19.y + 0].w + add r22.w, -r22.w, l(0.500000) + utof r23.w, r20.x + ult r24.z, r20.x, l(2) + and r24.z, r24.z, l(2) + dp2 r24.z, r26.xzxx, icb[r24.z + 0].xzxx + mul r24.z, r24.z, icb[r20.x + 4].z + div r24.z, r24.z, |r21.w| + mad r23.w, r24.z, r22.w, r23.w + add r23.w, r23.w, l(0.500000) + mul_sat r27.x, r23.w, l(0.166666672) + iadd r23.w, l(-1), icb[r20.x + 4].y + dp2 r23.w, r26.yzyy, icb[r23.w + 0].xyxx + mul r20.x, r23.w, icb[r20.x + 4].w + div r20.x, r20.x, |r21.w| + mad_sat r27.y, -r20.x, r22.w, l(0.500000) + mad r21.xy, r27.xyxx, cb5[r19.y + 0].zwzz, cb5[r19.y + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r19.y, r21.xyxx, t11.yxzw, s1, l(0.000000) + mul r19.x, r19.y, r19.x + endif + lt r19.x, l(0.000000), r19.x + if_nz r19.x + if_z r19.z + ftoi r19.x, cb3[r24.y + 6].x + else + add r21.xyw, r7.xyxz, -cb3[r24.x + 6].xyxz + lt r24.xzw, |r21.yyww|, |r21.xxxy| + and r19.y, r24.z, r24.x + lt r21.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyxw + ushr r19.z, cb3[r20.z + 6].w, l(24) + ubfe r24.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r20.z + 6].wwww + movc r19.z, r21.x, r19.z, r24.x + and r20.x, l(255), cb3[r20.z + 6].w + movc r20.x, r21.y, r24.z, r20.x + ubfe r20.z, l(8), l(8), cb3[r24.y + 6].x + and r21.x, l(255), cb3[r24.y + 6].x + movc r20.z, r21.w, r20.z, r21.x + movc r20.x, r24.w, r20.x, r20.z + movc r19.y, r19.y, r19.z, r20.x + ilt r19.z, r19.y, l(80) + movc r19.x, r19.z, r19.y, l(-1) + endif + ishl r19.y, r19.x, l(2) + mad r21.xyw, r28.xyxz, cb4[r19.x + 288].xxxx, r7.xyxz + mul r19.z, l(5.000000), cb4[r19.x + 288].y + mad r21.xyw, r5.xyxz, r19.zzzz, r21.xyxw + mul r24.xyzw, r21.yyyy, cb4[r19.y + 65].xyzw + mad r24.xyzw, cb4[r19.y + 64].xyzw, r21.xxxx, r24.xyzw + mad r24.xyzw, cb4[r19.y + 66].xyzw, r21.wwww, r24.xyzw + add r24.xyzw, r24.xyzw, cb4[r19.y + 67].xyzw + div r21.xyw, r24.xyxz, r24.wwww + ge r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xywx + ge r26.xyz, r21.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r19.yz, -cb4[r19.x + 344].xxyx, cb4[r19.x + 344].zzwz + mad r19.yz, r21.xxyx, r19.yyzy, cb4[r19.x + 344].xxyx + mad r20.xz, r19.yyzy, cb4[400].zzwz, l(0.500000, 0.000000, 0.500000, 0.000000) + round_ni r20.xz, r20.xxzx + mad r19.yz, r19.yyzy, cb4[400].zzwz, -r20.xxzx + add r27.xyzw, r19.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r28.xyzw, r27.xxzz, r27.xxzz + add r21.xy, -r19.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) + min r27.xz, r19.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r29.xy, r19.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r30.xy, r21.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r29.xy, -r29.xyxx, r29.xyxx, r27.ywyy + add r29.xy, r29.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r29.xy, r29.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r28.xz, r28.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r19.yz, r28.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r19.yyzy + mul r31.xy, r19.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r19.yz, -r27.xxzx, r27.xxzx, r21.xxyx + add r19.yz, r19.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r32.xy, r19.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r19.yz, r27.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r31.z, r32.x + mov r31.w, r19.y + mov r30.z, r29.x + mov r30.w, r28.x + add r27.xyzw, r30.zwxz, r31.zwxz + mov r32.z, r31.y + mov r32.w, r19.z + mov r29.z, r30.y + mov r29.w, r28.z + add r28.xyz, r29.zywz, r32.zywz + div r30.xyz, r30.xzwx, r27.zwyz + add r30.xyz, r30.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r30.xyz, r30.yxzy, cb4[400].xxxx + div r29.xyz, r29.zywz, r28.xyzx + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.xyzx, cb4[400].yyyy + mov r30.w, r29.x + mad r31.xyzw, r20.xzxz, cb4[400].xyxy, r30.ywxw + mad r19.yz, r20.xxzx, cb4[400].xxyx, r30.zzwz + mov r29.w, r30.y + mov r30.yw, r29.yyyz + mad r32.xyzw, r20.xzxz, cb4[400].xyxy, r30.xyzy + mad r29.xyzw, r20.xzxz, cb4[400].xyxy, r29.wywz + mad r30.xyzw, r20.xzxz, cb4[400].xyxy, r30.xwzw + mul r33.xyzw, r27.zwyz, r28.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r31.xyxx, t6.xxxx, s4, r21.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r31.zwzz, t6.xxxx, s4, r21.w + mul r20.z, r20.z, r33.y + mad r20.x, r33.x, r20.x, r20.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.y, r19.yzyy, t6.xxxx, s4, r21.w + mad r19.y, r33.z, r19.y, r20.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r29.xyxx, t6.xxxx, s4, r21.w + mad r19.y, r33.w, r19.z, r19.y + mul r31.xyzw, r27.xyzw, r28.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r32.xyxx, t6.xxxx, s4, r21.w + mad r19.y, r31.x, r19.z, r19.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r32.zwzz, t6.xxxx, s4, r21.w + mad r19.y, r31.y, r19.z, r19.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r29.zwzz, t6.xxxx, s4, r21.w + mad r19.y, r31.z, r19.z, r19.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r30.xyxx, t6.xxxx, s4, r21.w + mad r19.y, r31.w, r19.z, r19.y + ige r19.z, r19.x, l(0) + or r24.xyz, r24.xyzx, r26.xyzx + or r20.x, r24.y, r24.x + or r20.x, r24.z, r20.x + and r20.z, r21.w, l(0x7fffffff) + ult r20.z, l(0x7f800000), r20.z + or r20.x, r20.z, r20.x + mul r20.z, r27.y, r28.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.x, r30.zwzz, t6.xxxx, s4, r21.w + mad r19.y, r20.z, r21.x, r19.y + add r19.y, r19.y, l(-1.000000) + mad r19.x, cb4[r19.x + 288].w, r19.y, l(1.000000) + movc r19.x, r20.x, l(1.000000), r19.x + movc r19.x, r19.z, r19.x, l(1.000000) + else + mov r19.x, l(1.000000) + endif + else + mov r19.x, l(1.000000) + endif + mul r17.w, r17.w, r19.x + mov r25.xyz, l(0,0,0,0) + endif + add r23.xyz, r23.xyzx, r25.xyzx + mov r18.w, r20.w + endloop + mov r13.w, r17.w + add r22.xyz, r22.xyzx, r23.xyzx + iadd r14.w, r14.w, l(1) +endloop +mad r1.xyz, r22.xyzx, r13.wwww, r14.xyzx +ne r10.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx +if_nz r10.x + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + mad r0.z, r0.z, l(0.750000), l(0.250000) + min r0.z, r3.w, r0.z + add r1.w, r0.z, r9.w + mad r4.y, r12.w, l(-16.000000), l(-1.000000) + exp r4.y, r4.y + log r1.w, |r1.w| + mul r1.w, r1.w, r4.y + exp r1.w, r1.w + add r1.w, r0.z, r1.w + add r1.w, r1.w, l(-1.000000) + mov_sat r10.xzw, r1.wwww + mad r14.xyz, r3.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r3.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r3.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r10.xzw, r3.wwww + mov r14.xyz, r3.wwww +endif +mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r17.xyz, r7.xzyx, -r17.xyzx +max r0.z, |r17.y|, |r17.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.w, |r17.z|, l(-208.000000) +mul_sat r1.w, r1.w, l(0.031250) +max r0.z, r0.z, r1.w +ne r1.w, l(0.000000), cb0[210].w +lt r3.w, r0.z, l(1.000000) +and r1.w, r1.w, r3.w +if_nz r1.w + mad r17.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r17.xyz, r7.xzyx, -r17.xyzx + max r1.w, |r17.y|, |r17.x| + add r1.w, r1.w, l(-29.000000) + mul_sat r1.w, r1.w, l(0.500000) + add r3.w, |r17.z|, l(-13.000000) + mul_sat r3.w, r3.w, l(0.500000) + max r1.w, r1.w, r3.w + lt r3.w, r1.w, l(1.000000) + if_nz r3.w + mad r17.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t15.yzwx, s2, l(0.000000) + add r3.w, -r1.w, l(1.000000) + mul r4.y, l(0.500000), cb0[211].y + mad r6.w, -cb0[211].y, l(0.500000), l(1.000000) + max r4.y, r4.y, r17.y + min r4.y, r6.w, r4.y + mul r17.w, r4.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t16.xyzw, s1, l(0.000000) + mad r4.y, r19.w, r3.w, r0.z + add r20.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t16.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.yyyy, r20.xyzx + mov r20.w, r18.y + mul r20.xyzw, r3.wwww, r20.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.xxxx, r17.xyzx + mov r17.w, r18.x + mul r17.xyzw, r3.wwww, r17.xyzw + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r19.xyzx + mul r18.xyzw, r3.wwww, r18.xyzw + else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r4.y, r0.z + endif + mad r19.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r19.xyz, r7.xzyx, -r19.xyzx + max r3.w, |r19.y|, |r19.x| + add r3.w, r3.w, l(-116.000000) + mul_sat r3.w, r3.w, l(0.125000) + add r6.w, |r19.z|, l(-52.000000) + mul_sat r6.w, r6.w, l(0.125000) + max r3.w, r3.w, r6.w + lt r6.w, r3.w, l(1.000000) + if_nz r6.w + mad r19.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r21.xyz, r19.xyzx, cb0[211].xyzx + round_ni r21.xyz, r21.xyzx + mad r19.xyz, r19.xyzx, cb0[211].xyzx, -r21.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r19.xyzx, t17.yzwx, s2, l(0.000000) + add r6.w, -r3.w, l(1.000000) + mul r1.w, r1.w, r6.w + mul r6.w, l(0.500000), cb0[211].y + mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) + max r6.w, r6.w, r19.y + min r6.w, r8.w, r6.w + mul r19.w, r6.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyzw, r19.xwzx, t18.xyzw, s1, l(0.000000) + mad r4.y, r22.w, r1.w, r4.y + add r23.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyz, r23.xyzx, t18.xyzw, s1, l(0.000000) + mad r23.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r21.yyyy, r23.xyzx + mov r23.w, r21.y + mad r20.xyzw, r23.xyzw, r1.wwww, r20.xyzw + add r19.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r21.xxxx, r19.xyzx + mov r19.w, r21.x + mad r17.xyzw, r19.xyzw, r1.wwww, r17.xyzw + mad r19.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r19.xyzx + mad r18.xyzw, r21.xyzw, r1.wwww, r18.xyzw + endif + lt r1.w, l(0.000000), r3.w + if_nz r1.w + mad r19.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r21.xyz, r19.xyzx, cb0[211].xyzx + mul r22.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r21.xyz, r21.xyzx + mad r19.xyz, r19.xyzx, cb0[211].xyzx, -r21.xyzx + mad r21.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r19.xyz, r22.xyzx, r19.xyzx + min r19.xyz, r21.xyzx, r19.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r23.xyw, r19.xyzx, t19.yzwx, s2, l(0.000000) + add r1.w, -r0.z, l(1.000000) + mul r1.w, r1.w, r3.w + max r3.w, r22.y, r19.y + min r3.w, r21.y, r3.w + mul r19.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r19.xwzx, t20.xyzw, s1, l(0.000000) + add r22.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t20.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r23.yyyy, r22.xyzx + mov r22.w, r23.y + mad r20.xyzw, r22.xyzw, r1.wwww, r20.xyzw + add r19.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r23.xxxx, r19.xyzx + mov r19.w, r23.x + mad r17.xyzw, r19.xyzw, r1.wwww, r17.xyzw + mad r19.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r23.wwww, r19.xyzx + mad r18.xyzw, r23.xyzw, r1.wwww, r18.xyzw + mad r4.y, r21.w, r1.w, r4.y + endif + mad_sat r1.w, r4.y, l(2.000000), l(-1.000000) + add r19.x, -r0.z, r1.w + add r0.z, r0.z, r1.w + mul r19.y, r0.z, l(0.500000) +else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r19.xy, l(0,1.000000,0,0) +endif +mul r21.xyzw, r19.yyyx, cb0[213].xyzw +mad r21.y, r21.w, l(0.500000), r21.y +mul r12.yz, r19.yyxy, cb0[213].wwyw +mad r21.w, r12.z, l(0.375000), r12.y +add r18.xyzw, r18.xyzw, r21.xyzw +mul r21.xyzw, r19.yyyx, cb0[214].xyzw +mad r21.y, r21.w, l(0.500000), r21.y +mul r12.yz, r19.yyxy, cb0[214].wwyw +mad r21.w, r12.z, l(0.375000), r12.y +add r17.xyzw, r17.xyzw, r21.xyzw +mul r21.xyzw, r19.yyyx, cb0[215].xyzw +mad r21.y, r21.w, l(0.500000), r21.y +mul r12.yz, r19.yyxy, cb0[215].wwyw +mad r21.w, r12.z, l(0.375000), r12.y +add r19.xyzw, r20.xyzw, r21.xyzw +ge r12.yz, r6.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r12.z, r12.y +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r20.xyzw, r6.xyxx, t14.xyzw, s1, l(0.000000) + lt r21.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r20.xyzw| + or r6.xy, r21.zwzz, r21.xyxx + or r0.z, r6.y, r6.x + if_nz r0.z + dp3 r0.z, r20.yzwy, r20.yzwy + sqrt r0.z, r0.z + mov r6.x, l(1.000000) + mov r6.y, r0.z + mov r1.w, l(0) + loop + ge r3.w, l(4.600000), r6.y + breakc_nz r3.w + iadd r3.w, r1.w, l(1) + mul r12.yz, r6.xxyx, l(0.000000, 0.500000, 0.500000, 0.000000) + mov r6.xy, r12.yzyy + mov r1.w, r3.w + continue + endloop + mul r20.xyzw, r6.xxxx, r20.xyzw + dp3 r0.z, r20.yzwy, r20.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb6[3].x, cb6[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r6.x, r0.z, l(0.00390625000) + mov r6.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r6.xy, r6.xyxx, t13.xyzw, s1, l(0.000000) + mad r6.xy, r6.xyxx, cb6[2].xyxx, cb6[2].zwzz + mul r21.x, r6.x, l(3.54490781) + mul r21.yzw, r6.yyyy, r20.yyzw + mul r0.z, r20.x, l(0.406976730) + exp r0.z, r0.z + mul r20.xyzw, r0.zzzz, r21.xyzw + mov r21.xyzw, r20.xyzw + mov r0.z, l(0) + loop + uge r3.w, r0.z, r1.w + breakc_nz r3.w + mul r22.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r3.w, r22.xyzw, r21.xyzw + dp2 r4.y, r22.yxyy, r21.xyxx + dp2 r6.x, r22.zxzz, r21.xzxx + dp2 r6.y, r22.wxww, r21.xwxx + iadd r6.w, r0.z, l(1) + mov r21.x, r3.w + mov r21.y, r4.y + mov r21.zw, r6.xxxy + mov r0.z, r6.w + continue + endloop + mul r20.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r21.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r20.xyzw, r21.xyzw + dp2 r1.w, r20.yxyy, r21.xyxx + dp2 r3.w, r20.zxzz, r21.xzxx + dp2 r4.y, r20.wxww, r21.xwxx + mul r21.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r6.x, r20.xyzw, r21.xyzw + dp2 r6.y, r20.yxyy, r21.xyxx + dp2 r6.w, r20.zxzz, r21.xzxx + dp2 r8.w, r20.wxww, r21.xwxx + mul r21.xyzw, r19.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r9.w, r20.xyzw, r21.xyzw + dp2 r11.w, r20.yxyy, r21.xyxx + dp2 r12.y, r20.zxzz, r21.xzxx + dp2 r12.z, r20.wxww, r21.xwxx + mul r18.w, r0.z, l(0.886226952) + mul r18.x, r4.y, l(-1.02332675) + mul r18.y, r1.w, l(-1.02332675) + mul r18.z, r3.w, l(1.02332675) + mul r17.x, r8.w, l(-1.02332675) + mul r17.yzw, r6.yywx, l(0.000000, -1.02332675, 1.02332675, 0.886226952) + mul r19.w, r9.w, l(0.886226952) + mul r19.y, r11.w, l(-1.02332675) + mul r19.xz, r12.zzyz, l(-1.02332675, 0.000000, 1.02332675, 0.000000) + endif +endif +mov r5.w, l(1.000000) +dp4 r20.x, r18.xyzw, r5.xyzw +dp4 r20.y, r17.xyzw, r5.xyzw +dp4 r20.z, r19.xyzw, r5.xyzw +max r6.xyw, r20.xyxz, l(0.000000, 0.000000, 0.000000, 0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.w, r12.w, l(0.001000) +log r1.w, r1.w +mad r1.w, -r1.w, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.w +mul r12.yz, r2.xxyx, cb1[0].wwww +round_ni r12.yz, r12.yyzy +add r1.w, |r4.w|, -cb1[2].y +round_ni r1.w, r1.w +add r3.w, l(-1.000000), cb1[1].x +max r4.y, r1.w, l(0.000000) +min r3.w, r3.w, r4.y +ge r1.w, r3.w, r1.w +mad r4.y, r12.z, cb1[0].x, r12.y +ftoi r4.y, r4.y +iadd r4.y, r4.y, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r4.y, r4.y, l(0), t0.xxxx +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +and r3.w, r3.w, r4.y +and r1.w, r1.w, r3.w +mul r12.yzw, r6.xxyw, cb0[111].xxxx +dp3 r3.w, r12.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r7.w, l(1.000000) +mov r12.yzw, l(0,0,0,0) +mov r4.y, l(1.000000) +mov r8.w, r1.w +mov r9.w, l(0) +loop + lt r11.w, l(0.010000), r4.y + ine r13.z, r8.w, l(0) + and r13.z, r11.w, r13.z + if_nz r13.z + firstbit_lo r13.z, r8.w + ishl r13.w, l(1), r13.z + xor r8.w, r8.w, r13.w + ishl r13.z, r13.z, l(3) + dp4 r20.x, cb1[r13.z + 6].xyzw, r7.xyzw + dp4 r20.y, cb1[r13.z + 7].xyzw, r7.xyzw + dp4 r20.z, cb1[r13.z + 8].xyzw, r7.xyzw + ge r21.xyz, cb1[r13.z + 5].xyzx, |r20.xyzx| + and r13.w, r21.y, r21.x + and r13.w, r21.z, r13.w + if_nz r13.w + mul r13.w, l(0.100000), cb1[r13.z + 5].x + mul r21.xyz, |r20.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r21.xy, r21.xyxx, r21.xyxx + add r22.xyz, -|r20.xyzx|, cb1[r13.z + 5].xyzx + mul r22.xyz, r22.xyzx, cb1[r13.z + 9].xyzx + eq r14.w, l(1.000000), cb1[r13.z + 10].x + if_nz r14.w + dp3 r23.x, cb1[r13.z + 6].xyzx, r15.xyzx + dp3 r23.y, cb1[r13.z + 7].xyzx, r15.xyzx + dp3 r23.z, cb1[r13.z + 8].xyzx, r15.xyzx + add r24.xyz, -r20.xyzx, cb1[r13.z + 5].xyzx + div r24.xyz, r24.xyzx, r23.xyzx + add r25.xyz, -r20.xyzx, -cb1[r13.z + 5].xyzx + div r25.xyz, r25.xyzx, r23.xyzx + lt r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + movc r24.xyz, r26.xyzx, r24.xyzx, r25.xyzx + min r14.w, r24.y, r24.x + min r14.w, r24.z, r14.w + mad r20.xyz, r23.xyzx, r14.wwww, r20.xyzx + else + mov r20.xyz, r15.xyzx + endif + dp3 r14.w, r20.xyzx, r20.xyzx + rsq r14.w, r14.w + mul r20.xyz, r14.wwww, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + lt r24.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r23.xyz, -r23.xyzx, r24.xyzx + itof r23.xyz, r23.xyzx + dp3 r14.w, r20.xyzx, r23.xyzx + div r20.xyz, r20.xyzx, r14.wwww + lt r14.w, r20.z, l(0.000000) + add r20.zw, -|r20.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r20.zw, r20.zzzw, r23.xxxy + movc r20.xy, r14.wwww, r20.zwzz, r20.xyxx + dp4 r14.w, cb1[r13.z + 4].xyzw, r5.xyzw + max r14.w, r14.w, l(0.000000) + max r14.w, r14.w, l(0.000100) + min r15.w, r22.z, r22.y + min r15.w, r15.w, r22.x + add r16.w, r21.y, r21.x + mad r16.w, r21.z, r21.z, r16.w + mad r13.w, r13.w, r13.w, -r16.w + mul r13.w, r13.w, cb1[r13.z + 9].x + mul r13.w, r13.w, cb1[r13.z + 9].x + add r16.w, l(1.000000), -cb1[r13.z + 10].y + mul r13.w, r13.w, r16.w + mul r13.w, r13.w, l(100.000000) + mad_sat r13.w, r15.w, cb1[r13.z + 10].y, r13.w + mul r15.w, r13.w, cb1[r13.z + 10].w + mad r20.xy, r20.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r20.xy, r20.xyxx, cb1[1].wwww, cb1[2].wwww + mov r20.z, cb1[r13.z + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r20.xyz, r20.xyzx, t5.xyzw, s3, r0.z + mul r20.xyz, r20.xyzx, cb1[r13.z + 9].wwww + div r16.w, r3.w, r14.w + min r16.w, |r16.w|, l(1.000000) + mad r16.w, r16.w, l(2.000000), r3.w + add r14.w, r14.w, l(2.000000) + div r14.w, r16.w, r14.w + add r14.w, r14.w, l(-1.000000) + mad r14.w, r14.w, cb0[112].w, l(1.000000) + mul r20.xyz, r14.wwww, r20.xyzx + mul r20.xyz, r15.wwww, r20.xyzx + mad r12.yzw, r20.xxyz, r4.yyyy, r12.yyzw + mad r13.z, -r13.w, cb1[r13.z + 10].w, l(1.000000) + mul r4.y, r4.y, r13.z + endif + mov r9.w, l(-1) + continue + else + mov r9.w, r11.w + break + endif + mov r9.w, r11.w +endloop +if_nz r9.w + dp3 r1.w, r15.xyzx, r15.xyzx + rsq r1.w, r1.w + mul r15.xyz, r1.wwww, r15.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r21.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r1.w, r15.xyzx, r20.xyzx + div r15.xyz, r15.xyzx, r1.wwww + lt r1.w, r15.z, l(0.000000) + add r13.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r13.zw, r13.zzzw, r20.xxxy + movc r13.zw, r1.wwww, r13.zzzw, r15.xxxy + dp4 r1.w, cb1[3].xyzw, r5.xyzw + max r1.w, r1.w, l(0.000000) + max r1.w, r1.w, l(0.000100) + mad r13.zw, r13.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r15.xy, r13.zwzz, cb1[1].wwww, cb1[2].wwww + mov r15.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z + div r0.z, r3.w, r1.w + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r3.w + add r1.w, r1.w, l(2.000000) + div r0.z, r0.z, r1.w + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r15.xyz, r0.zzzz, r15.xyzx + mad r12.yzw, r15.xxyz, r4.yyyy, r12.yyzw +endif +mul r12.yzw, r12.yyzw, cb0[112].zzzz +mul r12.yzw, r12.yyzw, cb0[111].yyyy +if_nz r10.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.w, -r0.z, l(1.000000) + mul r20.xyz, r1.wwww, r12.yzwy + mad r12.yzw, r15.xxyz, r0.zzzz, r20.xxyz +endif +mul r3.xyz, r3.xyzx, r6.xywx +mul r3.xyz, r3.xyzx, cb0[111].xxxx +mad r0.z, r2.z, r13.x, r13.y +mul r6.xyw, r0.zzzz, r12.yzyw +mul r6.xyw, r10.xzxw, r6.xyxw +mad r3.xyz, r3.xyzx, r14.xyzx, r6.xywx +mul r5.xyzw, r5.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) +dp4 r10.x, r18.xyzw, r5.xyzw +dp4 r10.y, r17.xyzw, r5.xyzw +dp4 r10.z, r19.xyzw, r5.xyzw +max r5.xyz, r10.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +mul r5.xyz, r5.xyzx, cb0[111].xxxx +mul r5.xyz, r14.xyzx, r5.xyzx +mul r5.xyz, r16.xyzx, r5.xyzx +mul r0.z, r4.x, r12.x +ftou r1.w, r2.w +bfi r1.w, l(2), l(0), r1.w, r4.z +utof r1.w, r1.w +mul r1.w, r1.w, l(0.0322580636) +mad r0.z, r0.z, l(0.00787401572), r1.w +mul r4.xyz, r0.zzzz, r5.xyzx +mad r3.xyz, r4.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000), r3.xyzx +add r1.xyz, r1.xyzx, r3.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r7.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r6.z, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.z, r0.z, l(-1.442695) +exp r2.z, r2.z +add r2.z, -r2.z, l(1.000000) +div r0.z, r2.z, r0.z +mad r2.z, r7.y, cb0[156].w, cb0[158].w +mul r2.z, r2.z, l(1.442695) +exp r2.z, r2.z +mul r0.z, r0.z, r2.z +mul r0.z, r0.z, -r1.w +mul r3.xyz, r0.zzzz, cb0[155].xyzx +mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r3.xyz, r3.xyzx +dp3 r0.z, -r11.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.z +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r4.x, r0.y, r0.w, r0.x + dp3 r0.x, -r11.xyzx, -r9.xyzx + add r2.z, r7.y, -cb0[44].y + lt r2.w, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r2.w + mul r0.x, r0.x, cb0[163].w + div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), r6.z + mul r3.w, r0.x, r2.w + mad r4.z, r3.w, r2.z, cb0[44].y + mad r2.z, -r3.w, r2.z, r2.z + mul r3.w, r2.z, cb0[159].z + max r3.w, r3.w, l(-127.000000) + mul r2.z, r2.z, cb0[162].x + max r2.z, r2.z, l(-127.000000) + add r5.x, r4.z, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.y, l(5.960464478E-08), |r3.w| + exp r5.z, -r3.w + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r5.y, r5.z, r3.w + add r4.z, r4.z, -cb0[162].z + mul r4.z, r4.z, cb0[162].x + max r4.z, r4.z, l(-127.000000) + exp r4.z, -r4.z + mul r4.z, r4.z, cb0[162].y + lt r5.y, l(5.960464478E-08), |r2.z| + exp r5.z, -r2.z + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r2.z + mad r2.z, -r2.z, l(0.240226507), l(0.693147182) + movc r2.z, r5.y, r5.z, r2.z + mul r2.z, r2.z, r4.z + mad r2.z, r5.x, r3.w, r2.z + mad r0.x, -r0.x, r2.w, l(1.000000) + mul r0.x, r6.z, r0.x + mul r0.x, r0.x, r2.z + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r2.zw, r6.zzzz, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r2.z + add r0.x, r2.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r4.y, r0.w, r4.x, r0.y + ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r2.xxxy + mul r2.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r4.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r2.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r2.xyzw, r2.xyzx, t12.xyzw, s1, l(0.000000) + add r0.y, |r4.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r2.xyzw, r2.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r2.xyzw, r0.yyyy, r2.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r2.xyz, r4.xyzx, r2.wwww, r2.xyzx + mul r0.x, r0.x, r2.w +else + add r0.y, r7.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r6.z, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r6.zzzz, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r2.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r3.xyzx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r3.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r2.xyzx +// Check fog modification toggle (cb13[12].y) +// If 0 (Original), skip fog modification and output original +if_z cb13[12].y + mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx + dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) + dp3 r1.w, r8.xyzx, r8.xyzx + sqrt r1.w, r1.w + mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) + mul r2.x, r1.w, cb0[169].x + mad r1.w, -cb0[169].x, r1.w, l(1.000000) + mul r2.yzw, cb0[168].xxyz, cb0[183].wwww + mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw + sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t25.xwyz, s2, l(0.000000) + dp2 r2.x, r2.yyyy, r2.xxxx + add r1.w, r1.w, r2.x + add r2.x, r0.w, l(1.000000) + min r1.w, r1.w, r2.x + add r0.xyz, -r1.xyzx, r0.xyzx + mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx + mov o0.w, r0.w + ret +endif + +// === Simplified Fog Modification (Anti-Banding) === +// r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter (0-255) + +// Normalize colors to 0-1 range +mul r9.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r1/255 +mul r10.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 + +// Boost transmittance: transmittance = lerp(transmittance, 1, 0.35) to reduce fog density +add r11.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r11.xyz, r11.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + +// Reduce fog inscatter intensity +mul r10.xyz, r10.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + +// Standard fog blend with reduced intensity +mad r12.xyz, r9.xyzx, r11.xyzx, r10.xyzx + +// Scale back to 0-255 +mul r0.xyz, r12.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) + +// Continue with original post-fog processing +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r8.xyzx, r8.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t25.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..b298deebbe --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0_original_backup.asm @@ -0,0 +1,1590 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Jan 30 20:17:33 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[160], dynamicIndexed +dcl_constantbuffer CB6[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture3d (float,float,float,float) t25 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 38 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t22.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t23.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t24.xyzw +mul r1.xyzw, r1.xwyz, l(1023.000000, 3.000000, 1023.000000, 1023.000000) +ftou r1.xyw, r1.xyxw +ubfe r4.x, l(7), l(3), r1.x +bfi r4.yz, l(0, 3, 3, 0), l(0, 2, 2, 0), r1.xxwx, l(0, 0, 0, 0) +bfi r1.x, l(2), l(0), r1.y, r4.y +utof r1.x, r1.x +mul r1.y, r1.x, l(0.0322580636) +round_ne r1.z, r1.z +ftou r1.z, r1.z +ubfe r4.y, l(7), l(3), r1.z +utof r4.xy, r4.xyxx +mul r4.y, r4.y, l(0.00787401572) +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r4.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r5.y, -r4.w, l(1.000000) +lt r4.w, r5.y, l(0.000000) +ge r6.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r6.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r6.xy, r6.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r6.xy, r6.xyxx, r6.zwzz +movc r5.xz, r4.wwww, r6.xxyx, r2.xxyx +dp3 r2.x, r5.xyzx, r5.xyzx +rsq r2.x, r2.x +mul r5.xyz, r2.xxxx, r5.xyzx +and r1.z, r1.z, l(7) +utof r1.z, r1.z +mad r1.z, r1.z, l(0.107142866), l(0.500000) +utof r2.xy, r0.xyxx +mul r6.xy, v0.xyxx, cb0[82].zwzz +mad r6.zw, r6.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r7.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r7.xy, r7.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r4.w, r7.xyxx, t1.yzwx, s0, l(0.000000) +mul r7.xyzw, -r6.wwww, cb0[25].xyzw +mad r7.xyzw, cb0[24].xyzw, r6.zzzz, r7.xyzw +mad r7.xyzw, cb0[26].xyzw, r4.wwww, r7.xyzw +add r7.xyzw, r7.xyzw, cb0[27].xyzw +div r7.xyz, r7.xyzx, r7.wwww +mul r4.w, r7.y, cb0[1].z +mad r4.w, cb0[0].z, r7.x, r4.w +mad r4.w, cb0[2].z, r7.z, r4.w +add r4.w, r4.w, cb0[3].z +eq r6.z, l(0.000000), cb0[86].w +add r8.xyz, -r7.xyzx, cb0[44].xyzx +mov r9.x, cb0[0].z +mov r9.y, cb0[1].z +mov r9.z, cb0[2].z +movc r10.xyz, r6.zzzz, r8.xyzx, r9.xyzx +dp3 r6.z, r10.xyzx, r10.xyzx +max r6.w, r6.z, l(9.999999939E-09) +rsq r6.w, r6.w +mul r11.xyz, r6.wwww, r10.xyzx +mul r6.z, r6.w, r6.z +lt r8.w, l(0.000488281250), cb0[234].x +if_nz r8.w + sample_b_indexable(texture2d)(float,float,float,float) r8.w, v1.xyxx, t21.yzwx, s1, cb0[108].x +else + mov r8.w, l(1.000000) +endif +add r8.w, -r8.w, l(1.000000) +mul r2.w, r2.w, l(3.000000) +mad_sat r9.w, r2.z, l(0.300000), l(0.250000) +mul r9.w, r9.w, cb0[222].x +mul r9.w, r8.w, r9.w +mad r9.w, r9.w, l(-0.750000), l(1.000000) +mul r3.xyz, r3.xyzx, r9.wwww +min r9.w, r2.z, l(0.300000) +mul r8.w, r8.w, cb0[222].x +mul r8.w, r8.w, l(0.500000) +add r9.w, -r2.z, r9.w +mad r12.w, r8.w, r9.w, r2.z +mul r2.z, r1.z, l(0.080000) +dp3 r8.w, r5.xyzx, r11.xyzx +max r9.w, r8.w, l(0.000000) +mad r13.xyzw, r12.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r10.w, r13.x, r13.x +mul r11.w, r9.w, l(-9.280000) +exp r11.w, r11.w +min r10.w, r10.w, r11.w +mad r10.w, r10.w, r13.x, r13.y +mad r13.xy, r10.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz +ld_indexable(texture2d)(float,float,float,float) r13.z, r0.xyzz, t7.zwxy +lt r0.z, l(0.001000), r13.z +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r6.xyxx, t10.yzxw, s1, l(0.000000) + dp3 r10.w, -r11.xyzx, r5.xyzx + add r10.w, r10.w, r10.w + mad r14.xyz, r5.xyzx, -r10.wwww, -r11.xyzx + dp3 r10.w, -cb3[0].xyzx, r14.xyzx + mad r15.xyz, cb3[0].xyzx, r10.wwww, r14.xyzx + lt r10.w, r10.w, cb3[4].z + dp3 r11.w, r15.xyzx, r15.xyzx + max r11.w, r11.w, l(0.0000610351562) + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xyzx + mul r15.xyz, r15.xyzx, cb3[4].yyyy + mad r15.xyz, -cb3[0].xyzx, cb3[4].zzzz, r15.xyzx + dp3 r11.w, r15.xyzx, r15.xyzx + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xyzx + movc r14.xyz, r10.wwww, r15.xyzx, r14.xyzx + mad r15.xyz, r10.xyzx, r6.wwww, r14.xyzx + dp3 r10.w, r15.xyzx, r15.xyzx + max r10.w, r10.w, l(0.0000610351562) + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + dp3 r10.w, r5.xyzx, r14.xyzx + mov_sat r12.y, r10.w + dp3_sat r11.w, r5.xyzx, r15.xyzx + dp3 r14.x, r11.xyzx, r14.xyzx + min r12.z, r9.w, l(1.000000) + mul r14.y, r12.w, r12.w + mul r14.y, r14.y, r14.y + mad r14.z, r11.w, r14.y, -r11.w + mad r11.w, r14.z, r11.w, l(1.000000) + dp3_sat r14.z, r11.xyzx, r15.xyzx + add r14.z, -r14.z, l(1.000000) + mul r14.w, r14.z, r14.z + mul r14.w, r14.w, r14.w + mul r15.x, r14.z, r14.w + add r15.y, -r12.w, l(1.000000) + mad r15.z, -r15.y, l(0.383026), l(-0.0761947036) + mad r15.z, r15.y, r15.z, l(1.049970) + mad r15.y, r15.y, r15.z, l(0.409255) + min r15.y, r15.y, l(0.999000) + add r15.z, -r15.y, l(1.000000) + mad r15.w, -r1.z, l(0.080000), l(1.000000) + mad r15.w, r15.w, l(0.0476190485), r2.z + mov_sat r16.x, -r14.x + mul r16.x, r16.x, r16.x + mad r16.x, r16.x, l(-0.640000), l(1.000000) + mul r16.x, r16.x, r16.x + mad r14.z, -r14.w, r14.z, l(1.000000) + mad r14.z, r2.z, r14.z, r15.x + mul r11.w, r11.w, r11.w + div r11.w, r14.y, r11.w + mad r16.yz, -r12.zzyz, r14.yyyy, r12.zzyz + mad r14.yw, r16.yyyz, r12.zzzy, r14.yyyy + sqrt r14.yw, r14.yyyw + mul r14.yw, r12.yyyz, r14.yyyw + add r14.y, r14.w, r14.y + add r14.y, r14.y, l(0.000100) + div r14.y, l(0.500000), r14.y + mul r11.w, r11.w, r14.y + mul r11.w, r11.w, r14.z + min r11.w, r11.w, l(2048.000000) + mad r17.xyzw, r12.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r12.z, r17.xyxx, t9.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r14.y, r17.zwzz, t9.yxzw, s1, l(0.000000) + mul r12.z, r12.z, r14.y + mul r12.z, r15.y, r12.z + div r12.z, r12.z, r15.z + mul r14.y, r15.w, r15.w + mul r12.z, r12.z, r14.y + mad r14.y, -r15.w, r15.z, l(1.000000) + div r12.z, r12.z, r14.y + add r11.w, r11.w, r12.z + add_sat r12.z, r8.w, l(0.200000) + mov_sat r14.y, r14.x + add r14.y, r14.y, l(0.500000) + min r14.y, r14.y, l(1.000000) + mul r14.z, r12.z, r14.y + add_sat r14.x, r14.x, l(1.000000) + mad r12.z, -r12.z, r14.y, l(1.000000) + mad r12.z, r14.x, r12.z, r14.z + mul r11.w, r11.w, r12.z + mul r11.w, r4.y, r11.w + mul r14.xyz, r4.yyyy, r3.xyzx + ubfe r1.w, l(7), l(3), r1.w + utof r1.w, r1.w + mul r1.w, r1.w, l(0.00787401572) + mul r11.w, r11.w, cb3[4].x + max r11.w, r11.w, l(0.000000) + min r11.w, r11.w, l(1000.000000) + mul r11.w, r12.y, r11.w + mad r14.xyz, r14.xyzx, r1.wwww, r11.wwww + max r1.w, r3.y, r3.x + max r1.w, r3.z, r1.w + max r1.w, r1.w, l(0.010000) + div r15.xyz, r3.xyzx, r1.wwww + mul r1.w, r4.x, l(0.00393700786) + mul r15.xyz, r1.wwww, r15.xyzx + add_sat r1.w, -r10.w, l(0.500000) + ne r11.w, r16.x, l(0.360000) + div r12.z, l(0.360000), r16.x + movc r11.w, r11.w, r12.z, l(1.000000) + mul r1.w, r1.w, r11.w + mad_sat r10.w, r1.x, l(0.0322580636), r10.w + add r10.w, -r12.y, r10.w + mul r16.xyz, r3.xyzx, r10.wwww + mad r15.xyz, r15.xyzx, r1.wwww, r16.xyzx + mad r14.xyz, r15.xyzx, r4.yyyy, r14.xyzx + mul r14.xyz, r14.xyzx, cb3[1].xyzx + mov r13.w, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, r13.zwzz, t8.xyzw, s1, cb0[108].x + add r1.w, -r13.z, l(1.000000) + mad r15.xyz, r14.xyzx, r15.xyzx, -r14.xyzx + mad r14.xyz, r1.wwww, r15.xyzx, r14.xyzx + max r1.w, r4.y, r0.z + add r1.w, -r0.z, r1.w + mad r0.z, r1.y, r1.w, r0.z + mul r14.xyz, r0.zzzz, r14.xyzx +else + mov r14.xyz, l(0,0,0,0) +endif +mul r1.yw, r2.xxxy, l(0.000000, 0.031250, 0.000000, 0.031250) +round_ni r1.yw, r1.yyyw +mad r0.z, r1.w, cb2[1].y, r1.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r1.y, -cb0[85].y, cb2[2].w, |r4.w| +round_ni r1.y, r1.y +add r1.w, l(-1.000000), cb2[1].w +max r10.w, r1.y, l(0.000000) +min r1.w, r1.w, r10.w +mul r10.w, r1.w, l(8.000000) +ftoi r10.w, r10.w +ge r1.y, r1.w, r1.y +iadd r1.w, r10.w, cb0[110].y +mul r10.w, r12.w, r12.w +dp3 r11.w, -r11.xyzx, r5.xyzx +add r11.w, r11.w, r11.w +mad r15.xyz, r5.xyzx, -r11.wwww, -r11.xyzx +min r12.x, r9.w, l(1.000000) +add r11.w, -r12.w, l(1.000000) +mad r12.y, -r11.w, l(0.383026), l(-0.0761947036) +mad r12.y, r11.w, r12.y, l(1.049970) +mad r11.w, r11.w, r12.y, l(0.409255) +min r11.w, r11.w, l(0.999000) +add r12.y, -r11.w, l(1.000000) +mad r1.z, -r1.z, l(0.080000), l(1.000000) +mad r1.z, r1.z, l(0.0476190485), r2.z +mad r13.zw, r12.xxxw, l(0.000000, 0.000000, 0.968750, 0.968750), l(0.000000, 0.000000, 0.015625, 0.015625) +sample_l_indexable(texture2d)(float,float,float,float) r12.z, r13.zwzz, t9.yzxw, s1, l(0.000000) +mad r13.z, -r1.z, r12.y, l(1.000000) +add_sat r8.w, r8.w, l(0.200000) +max r13.w, r3.y, r3.x +max r13.w, r3.z, r13.w +max r13.w, r13.w, l(0.010000) +div r16.xyz, r3.xyzx, r13.wwww +mul r13.w, r4.x, l(0.00393700786) +mul r17.xyz, r13.wwww, r16.xyzx +mul r18.xyz, r4.yyyy, r3.xyzx +mul r1.z, r1.z, r1.z +mov r19.w, l(1.000000) +mov r20.y, l(1.000000) +mov r21.z, r12.w +mov r22.xyz, l(0,0,0,0) +mov r13.w, l(1.000000) +mov r14.w, l(0) +loop + ilt r15.w, l(7), r14.w + breakc_nz r15.w + iadd r15.w, r0.z, r14.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r15.w, r15.w, l(0), t0.xxxx + iadd r16.w, r1.w, r14.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r16.w, r16.w, l(0), t0.xxxx + and r15.w, r15.w, r16.w + and r15.w, r1.y, r15.w + ishl r16.w, r14.w, l(5) + mov r23.xyz, l(0,0,0,0) + mov r17.w, r13.w + mov r18.w, r15.w + loop + breakc_z r18.w + firstbit_lo r20.z, r18.w + ishl r20.w, l(1), r20.z + xor r20.w, r18.w, r20.w + iadd r20.z, r16.w, r20.z + bfi r24.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r20.zzzz, l(1, 3, 5, 6) + bfi r21.w, l(29), l(3), r20.z, l(7) + ftou r22.w, cb3[r24.z + 6].w + ieq r22.w, r22.w, l(1) + if_nz r22.w + add r19.xyz, r7.xyzx, -cb3[r24.x + 6].xyzx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.z + 6].xzyx + and r26.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.w + 6].yxzy + ushr r27.xyz, cb3[r24.z + 6].xzyx, l(16, 16, 16, 0) + ushr r28.xyz, cb3[r24.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyz, r27.xyzx + f16tof32 r28.xyw, r28.yxyz + mov r29.xz, r25.xxzx + mov r29.yw, r27.xxxz + dp4 r22.w, r19.xyzw, r29.xyzw + mov r27.x, r25.y + mov r27.z, r26.y + mov r27.w, r28.x + dp4 r23.w, r19.xyzw, r27.xyzw + mov r28.xz, r26.xxzx + dp4 r19.x, r19.xyzw, r28.xyzw + max r19.y, |r22.w|, |r23.w| + max r19.x, |r19.x|, r19.y + mad r19.y, cb3[r21.w + 6].x, l(0.500000), l(0.500000) + add r19.x, -r19.y, r19.x + mad r19.y, -cb3[r21.w + 6].x, l(0.500000), l(0.500000) + div_sat r19.x, r19.x, r19.y + add r19.x, -r19.x, l(1.000000) + mul r19.x, r19.x, r19.x + else + mov r19.x, l(1.000000) + endif + lt r19.y, l(0.500000), cb3[r24.y + 6].z + lt r19.z, r19.x, l(0.001000) + or r19.z, r19.y, r19.z + if_nz r19.z + mov r18.w, r20.w + continue + endif + ishl r19.z, r20.z, l(3) + bfi r20.z, l(29), l(3), r20.z, l(2) + lt r22.w, cb3[r19.z + 6].w, l(1.500000) + if_nz r22.w + mad r22.w, cb3[r20.z + 6].y, l(0.500000), l(0.500000) + add r25.x, r22.w, -|cb3[r20.z + 6].x| + add r25.y, -r25.x, cb3[r20.z + 6].y + add r22.w, -|r25.x|, l(1.000000) + add r22.w, -|r25.y|, r22.w + max r22.w, r22.w, l(0.000488281250) + ge r23.w, cb3[r20.z + 6].x, l(0.000000) + movc r25.z, r23.w, r22.w, -r22.w + dp3 r22.w, r25.xyzx, r25.xyzx + rsq r22.w, r22.w + mul r25.xyz, r22.wwww, r25.xyzx + add r26.xyz, -r7.xyzx, cb3[r24.x + 6].xyzx + dp3 r22.w, r26.xyzx, r26.xyzx + rsq r23.w, r22.w + mul r27.xyz, r23.wwww, r26.xyzx + ftoi r24.z, cb3[r21.w + 6].w + mul r28.xyz, r25.xyzx, cb3[r20.z + 6].zzzz + mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + mad r30.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx + ftou r25.w, cb3[r19.z + 6].w + and r25.w, r25.w, l(1) + ieq r26.w, r25.w, l(0) + not r26.w, r26.w + lt r27.w, l(0.000000), cb3[r20.z + 6].z + and r26.w, r26.w, r27.w + dp3 r27.w, r29.xyzx, r29.xyzx + sqrt r27.w, r27.w + dp3 r28.w, r30.xyzx, r30.xyzx + sqrt r28.w, r28.w + dp3 r29.w, r5.xyzx, r29.xyzx + div r29.w, r29.w, r27.w + dp3 r30.w, r5.xyzx, r30.xyzx + div r30.w, r30.w, r28.w + add r29.w, r29.w, r30.w + mul_sat r31.x, r29.w, l(0.500000) + dp3 r29.w, r29.xyzx, r30.xyzx + mad r27.w, r27.w, r28.w, r29.w + mad r27.w, r27.w, l(0.500000), l(1.000000) + div r31.y, l(1.000000, 1.000000, 1.000000, 1.000000), r27.w + dp3_sat r20.x, r5.xyzx, r27.xyzx + movc r21.xy, r26.wwww, r31.xyxx, r20.xyxx + lt r20.x, cb3[r24.w + 6].w, l(0.000000) + if_nz r20.x + mul r20.x, cb3[r24.x + 6].w, cb3[r24.x + 6].w + mul r20.x, r20.x, r22.w + mad r20.x, -r20.x, r20.x, l(1.000000) + max r20.x, r20.x, l(0.000000) + add r22.w, r22.w, l(1.000000) + div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w + and r27.w, r26.w, l(0x3f800000) + add r28.w, r21.y, -r22.w + mad r22.w, r27.w, r28.w, r22.w + mul r20.x, r20.x, r20.x + mul r20.x, r20.x, r22.w + else + mul r30.xyz, r26.xyzx, cb3[r24.x + 6].wwww + dp3 r22.w, r30.xyzx, r30.xyzx + min r22.w, r22.w, l(1.000000) + add r22.w, -r22.w, l(1.000000) + log r22.w, r22.w + mul r22.w, r22.w, cb3[r24.w + 6].w + exp r22.w, r22.w + mul r20.x, r21.y, r22.w + endif + dp3 r21.y, r27.xyzx, -r25.xyzx + add r21.y, r21.y, -cb3[r20.z + 6].z + mul_sat r21.y, r21.y, cb3[r20.z + 6].w + mul r21.y, r21.y, r21.y + movc r21.y, r25.w, l(1.000000), r21.y + mul r20.x, r20.x, r21.y + not r21.y, r26.w + ige r22.w, r24.z, l(0) + and r21.y, r21.y, r22.w + if_nz r21.y + if_z r25.w + ishl r21.y, r24.z, l(2) + mul r25.xyz, r7.yyyy, cb5[r21.y + 33].xywx + mad r25.xyz, cb5[r21.y + 32].xywx, r7.xxxx, r25.xyzx + mad r25.xyz, cb5[r21.y + 34].xywx, r7.zzzz, r25.xyzx + add r25.xyz, r25.xyzx, cb5[r21.y + 35].xywx + div_sat r25.xy, r25.xyxx, r25.zzzz + mad r25.xy, r25.xyxx, cb5[r24.z + 0].zwzz, cb5[r24.z + 0].xyxx + else + ishl r21.y, r24.z, l(2) + dp3 r30.x, -r26.xyzx, cb5[r21.y + 32].xyzx + dp3 r30.y, -r26.xyzx, cb5[r21.y + 33].xyzx + dp3 r30.z, -r26.xyzx, cb5[r21.y + 34].xyzx + lt r21.y, |r30.x|, |r30.y| + and r21.y, r21.y, l(1) + dp2 r22.w, |r30.xyxx|, icb[r21.y + 0].xyxx + lt r22.w, r22.w, |r30.z| + movc r21.y, r22.w, l(2), r21.y + dp3 r22.w, r30.xyzx, icb[r21.y + 0].xyzx + lt r22.w, r22.w, l(0.000000) + bfi r21.y, l(31), l(1), r21.y, r22.w + ushr r22.w, r21.y, l(1) + dp3 r22.w, r30.xyzx, icb[r22.w + 0].xyzx + div r25.z, l(0.000244140625), cb5[r24.z + 0].w + add r25.z, -r25.z, l(0.500000) + utof r26.x, r21.y + ult r26.y, r21.y, l(2) + and r26.y, r26.y, l(2) + dp2 r26.y, r30.xzxx, icb[r26.y + 0].xzxx + mul r26.y, r26.y, icb[r21.y + 4].z + div r26.y, r26.y, |r22.w| + mad r26.x, r26.y, r25.z, r26.x + add r26.x, r26.x, l(0.500000) + mul_sat r26.x, r26.x, l(0.166666672) + iadd r26.z, l(-1), icb[r21.y + 4].y + dp2 r26.z, r30.yzyy, icb[r26.z + 0].xyxx + mul r21.y, r26.z, icb[r21.y + 4].w + div r21.y, r21.y, |r22.w| + mad_sat r26.y, -r21.y, r25.z, l(0.500000) + mad r25.xy, r26.xyxx, cb5[r24.z + 0].zwzz, cb5[r24.z + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r21.y, r25.xyxx, t11.yxzw, s1, l(0.000000) + mul r20.x, r20.x, r21.y + endif + lt r21.y, l(0.000000), r20.x + if_nz r21.y + if_z r25.w + ftoi r22.w, cb3[r24.y + 6].x + else + add r25.xyz, r7.xyzx, -cb3[r24.x + 6].xyzx + lt r26.xyz, |r25.yzzy|, |r25.xxyx| + and r24.z, r26.y, r26.x + lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ushr r25.w, cb3[r20.z + 6].w, l(24) + ubfe r26.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r20.z + 6].wwww + movc r25.x, r25.x, r25.w, r26.x + and r25.w, l(255), cb3[r20.z + 6].w + movc r25.y, r25.y, r26.y, r25.w + ubfe r25.w, l(8), l(8), cb3[r24.y + 6].x + and r26.x, l(255), cb3[r24.y + 6].x + movc r25.z, r25.z, r25.w, r26.x + movc r25.y, r26.z, r25.y, r25.z + movc r24.z, r24.z, r25.x, r25.y + ilt r25.x, r24.z, l(80) + movc r22.w, r25.x, r24.z, l(-1) + endif + ishl r24.z, r22.w, l(2) + mad r25.xyz, r27.xyzx, cb4[r22.w + 288].xxxx, r7.xyzx + mul r25.w, l(5.000000), cb4[r22.w + 288].y + mad r25.xyz, r5.xyzx, r25.wwww, r25.xyzx + mul r30.xyzw, r25.yyyy, cb4[r24.z + 65].xyzw + mad r30.xyzw, cb4[r24.z + 64].xyzw, r25.xxxx, r30.xyzw + mad r25.xyzw, cb4[r24.z + 66].xyzw, r25.zzzz, r30.xyzw + add r25.xyzw, r25.xyzw, cb4[r24.z + 67].xyzw + div r25.xyz, r25.xyzx, r25.wwww + ge r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ge r30.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r31.xy, -cb4[r22.w + 344].xyxx, cb4[r22.w + 344].zwzz + mad r25.xy, r25.xyxx, r31.xyxx, cb4[r22.w + 344].xyxx + mad r31.xy, r25.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r31.xy, r31.xyxx + mad r25.xy, r25.xyxx, cb4[400].zwzz, -r31.xyxx + add r32.xyzw, r25.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r33.xyzw, r32.xxzz, r32.xxzz + add r31.zw, -r25.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r32.xz, r25.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r34.xy, r25.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r35.xy, r31.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r34.xy, -r34.xyxx, r34.xyxx, r32.ywyy + add r34.xy, r34.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r34.xy, r34.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r33.xz, r33.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r25.xy, r33.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r25.xyxx + mul r36.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r25.xy, -r32.xzxx, r32.xzxx, r31.zwzz + add r25.xy, r25.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r37.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r25.xy, r32.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r36.z, r37.x + mov r36.w, r25.x + mov r35.z, r34.x + mov r35.w, r33.x + add r32.xyzw, r35.zwxz, r36.zwxz + mov r37.z, r36.y + mov r37.w, r25.y + mov r34.z, r35.y + mov r34.w, r33.z + add r25.xyw, r34.zyzw, r37.zyzw + div r33.xyz, r35.xzwx, r32.zwyz + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyz, r33.yxzy, cb4[400].xxxx + div r34.xyz, r34.zywz, r25.xywx + add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r34.xyz, r34.xyzx, cb4[400].yyyy + mov r33.w, r34.x + mad r35.xyzw, r31.xyxy, cb4[400].xyxy, r33.ywxw + mad r31.zw, r31.xxxy, cb4[400].xxxy, r33.zzzw + mov r34.w, r33.y + mov r33.yw, r34.yyyz + mad r36.xyzw, r31.xyxy, cb4[400].xyxy, r33.xyzy + mad r34.xyzw, r31.xyxy, cb4[400].xyxy, r34.wywz + mad r33.xyzw, r31.xyxy, cb4[400].xyxy, r33.xwzw + mul r37.xyzw, r25.xxxy, r32.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r35.xyxx, t6.xxxx, s4, r25.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r35.zwzz, t6.xxxx, s4, r25.z + mul r25.x, r25.x, r37.y + mad r24.z, r37.x, r24.z, r25.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r31.zwzz, t6.xxxx, s4, r25.z + mad r24.z, r37.z, r25.x, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r34.xyxx, t6.xxxx, s4, r25.z + mad r24.z, r37.w, r25.x, r24.z + mul r31.xyzw, r25.yyww, r32.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r36.xyxx, t6.xxxx, s4, r25.z + mad r24.z, r31.x, r25.x, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r36.zwzz, t6.xxxx, s4, r25.z + mad r24.z, r31.y, r25.x, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r34.zwzz, t6.xxxx, s4, r25.z + mad r24.z, r31.z, r25.x, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r33.xyxx, t6.xxxx, s4, r25.z + mad r24.z, r31.w, r25.x, r24.z + ige r25.x, r22.w, l(0) + or r26.xyz, r26.xyzx, r30.xyzx + or r25.y, r26.y, r26.x + or r25.y, r26.z, r25.y + and r26.x, r25.z, l(0x7fffffff) + ult r26.x, l(0x7f800000), r26.x + or r25.y, r25.y, r26.x + mul r25.w, r25.w, r32.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r33.zwzz, t6.xxxx, s4, r25.z + mad r24.z, r25.w, r25.z, r24.z + add r24.z, r24.z, l(-1.000000) + mad r22.w, cb4[r22.w + 288].w, r24.z, l(1.000000) + movc r22.w, r25.y, l(1.000000), r22.w + movc r22.w, r25.x, r22.w, l(1.000000) + else + mov r22.w, l(1.000000) + endif + if_nz r26.w + dp3 r24.z, r15.xyzx, r28.xyzx + mul_sat r25.x, r23.w, cb3[r20.z + 6].z + mad r25.x, r25.x, l(0.500000), r10.w + min r25.x, r25.x, l(1.000000) + div r25.x, r10.w, r25.x + mad r25.yzw, r15.xxyz, r24.zzzz, -r28.xxyz + dp3 r25.y, r29.xyzx, r25.yzwy + mul r24.z, r24.z, r24.z + mad r24.z, cb3[r20.z + 6].z, cb3[r20.z + 6].z, -r24.z + div_sat r24.z, r25.y, r24.z + mad r25.yzw, r28.xxyz, r24.zzzz, r29.xxyz + dp3 r24.z, r25.yzwy, r25.yzwy + rsq r24.z, r24.z + mul r27.xyz, r24.zzzz, r25.yzwy + else + mov r25.x, l(1.000000) + endif + if_nz r21.y + mul_sat r21.y, r23.w, cb3[r21.w + 6].y + mad r25.yzw, r10.xxyz, r6.wwww, r27.xxyz + dp3 r23.w, r25.yzwy, r25.yzwy + max r23.w, r23.w, l(0.0000610351562) + rsq r23.w, r23.w + mul r25.yzw, r23.wwww, r25.yyzw + dp3 r23.w, r5.xyzx, r27.xyzx + dp3_sat r24.z, r5.xyzx, r25.yzwy + dp3_sat r25.y, r11.xyzx, r25.yzwy + dp3 r25.z, r11.xyzx, r27.xyzx + lt r25.w, l(0.000000), r21.y + mul r21.y, r21.y, r21.y + mad r26.x, r25.y, l(3.600000), l(0.400000) + div r21.y, r21.y, r26.x + mad r21.y, r12.w, r12.w, r21.y + min r21.y, r21.y, l(1.000000) + movc r21.y, r25.w, r21.y, r10.w + mul r21.y, r21.y, r21.y + mad r25.w, r24.z, r21.y, -r24.z + mad r24.z, r25.w, r24.z, l(1.000000) + add r25.y, -r25.y, l(1.000000) + mul r25.w, r25.y, r25.y + mul r25.w, r25.w, r25.w + mul r26.x, r25.y, r25.w + mov_sat r26.y, -r25.z + mul r26.y, r26.y, r26.y + mad r26.y, r26.y, l(-0.640000), l(1.000000) + mul r26.y, r26.y, r26.y + mad r25.y, -r25.w, r25.y, l(1.000000) + mad r25.y, r2.z, r25.y, r26.x + mul r24.z, r24.z, r24.z + div r24.z, r21.y, r24.z + mul r24.z, r25.x, r24.z + mad r25.x, -r12.x, r21.y, r12.x + mad r25.x, r25.x, r12.x, r21.y + sqrt r25.x, r25.x + mad r25.w, -r21.x, r21.y, r21.x + mad r21.y, r25.w, r21.x, r21.y + sqrt r21.y, r21.y + mul r21.y, r12.x, r21.y + mad r21.y, r21.x, r25.x, r21.y + add r21.y, r21.y, l(0.000100) + div r21.y, l(0.500000), r21.y + mul r21.y, r21.y, r24.z + mul r21.y, r21.y, r25.y + min r21.y, r21.y, l(2048.000000) + mad r25.xy, r21.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r24.z, r25.xyxx, t9.yzxw, s1, l(0.000000) + mul r24.z, r12.z, r24.z + mul r24.z, r11.w, r24.z + div r24.z, r24.z, r12.y + mul r24.z, r1.z, r24.z + div r24.z, r24.z, r13.z + add r21.y, r21.y, r24.z + mov_sat r24.z, r25.z + add r24.z, r24.z, l(0.500000) + min r24.z, r24.z, l(1.000000) + mul r25.x, r8.w, r24.z + add_sat r25.y, r25.z, l(1.000000) + mad r24.z, -r8.w, r24.z, l(1.000000) + mad r24.z, r25.y, r24.z, r25.x + mul r21.y, r21.y, r24.z + mul r21.y, r4.y, r21.y + mul r21.y, r21.y, cb3[r21.w + 6].z + max r21.y, r21.y, l(0.000000) + min r21.y, r21.y, l(1000.000000) + add_sat r24.z, -r23.w, l(0.500000) + ne r25.x, r26.y, l(0.360000) + div r25.y, l(0.360000), r26.y + movc r25.x, r25.x, r25.y, l(1.000000) + mul r24.z, r24.z, r25.x + mad_sat r23.w, r1.x, l(0.0322580636), r23.w + add r23.w, -r21.x, r23.w + mul r25.xyz, r3.xyzx, r23.wwww + mad r25.xyz, r17.xyzx, r24.zzzz, r25.xyzx + mul r25.xyz, r4.yyyy, r25.xyzx + mad r25.xyz, r21.yyyy, r21.xxxx, r25.xyzx + mad r25.xyz, r18.xyzx, r21.xxxx, r25.xyzx + mul r26.xyz, r20.xxxx, cb3[r19.z + 6].xyzx + mul r26.xyz, r22.wwww, r26.xyzx + mul r26.xyz, r19.xxxx, r26.xyzx + mul r25.xyz, r25.xyzx, r26.xyzx + else + mov r25.xyz, l(0,0,0,0) + endif + else + if_z r19.y + mad r19.x, cb3[r20.z + 6].y, l(0.500000), l(0.500000) + add r26.x, r19.x, -|cb3[r20.z + 6].x| + add r26.y, -r26.x, cb3[r20.z + 6].y + add r19.x, -|r26.x|, l(1.000000) + add r19.x, -|r26.y|, r19.x + max r19.x, r19.x, l(0.000488281250) + ge r19.y, cb3[r20.z + 6].x, l(0.000000) + movc r26.z, r19.y, r19.x, -r19.x + dp3 r19.x, r26.xyzx, r26.xyzx + rsq r19.x, r19.x + mul r26.xyz, r19.xxxx, r26.xyzx + add r27.xyz, -r7.xyzx, cb3[r24.x + 6].xyzx + dp3 r19.x, r27.xyzx, r27.xyzx + rsq r19.y, r19.x + mul r28.xyz, r19.yyyy, r27.xyzx + ftoi r19.y, cb3[r21.w + 6].w + mul r21.xyw, r26.xyxz, cb3[r20.z + 6].zzzz + mad r29.xyz, -r21.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r27.xyzx + mad r21.xyw, r21.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r27.xyxz + ftou r19.z, cb3[r19.z + 6].w + and r19.z, r19.z, l(1) + ieq r20.x, r19.z, l(0) + not r20.x, r20.x + lt r22.w, l(0.000000), cb3[r20.z + 6].z + and r20.x, r20.x, r22.w + dp3 r22.w, r29.xyzx, r29.xyzx + sqrt r22.w, r22.w + dp3 r23.w, r21.xywx, r21.xywx + sqrt r23.w, r23.w + dp3 r21.x, r29.xyzx, r21.xywx + mad r21.x, r22.w, r23.w, r21.x + mad r21.x, r21.x, l(0.500000), l(1.000000) + div r21.x, l(1.000000, 1.000000, 1.000000, 1.000000), r21.x + movc r21.x, r20.x, r21.x, l(1.000000) + lt r21.y, cb3[r24.w + 6].w, l(0.000000) + if_nz r21.y + mul r21.y, cb3[r24.x + 6].w, cb3[r24.x + 6].w + mul r21.y, r19.x, r21.y + mad r21.y, -r21.y, r21.y, l(1.000000) + max r21.y, r21.y, l(0.000000) + add r19.x, r19.x, l(1.000000) + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x + and r21.w, r20.x, l(0x3f800000) + add r22.w, -r19.x, r21.x + mad r19.x, r21.w, r22.w, r19.x + mul r21.y, r21.y, r21.y + mul r19.x, r19.x, r21.y + else + mul r29.xyz, r27.xyzx, cb3[r24.x + 6].wwww + dp3 r21.y, r29.xyzx, r29.xyzx + min r21.y, r21.y, l(1.000000) + add r21.y, -r21.y, l(1.000000) + log r21.y, r21.y + mul r21.y, r21.y, cb3[r24.w + 6].w + exp r21.y, r21.y + mul r19.x, r21.y, r21.x + endif + dp3 r21.x, r28.xyzx, -r26.xyzx + add r21.x, r21.x, -cb3[r20.z + 6].z + mul_sat r21.x, r21.x, cb3[r20.z + 6].w + mul r21.x, r21.x, r21.x + movc r21.x, r19.z, l(1.000000), r21.x + mul r19.x, r19.x, r21.x + not r20.x, r20.x + ige r21.x, r19.y, l(0) + and r20.x, r20.x, r21.x + if_nz r20.x + if_z r19.z + ishl r20.x, r19.y, l(2) + mul r21.xyw, r7.yyyy, cb5[r20.x + 33].xyxw + mad r21.xyw, cb5[r20.x + 32].xyxw, r7.xxxx, r21.xyxw + mad r21.xyw, cb5[r20.x + 34].xyxw, r7.zzzz, r21.xyxw + add r21.xyw, r21.xyxw, cb5[r20.x + 35].xyxw + div_sat r21.xy, r21.xyxx, r21.wwww + mad r21.xy, r21.xyxx, cb5[r19.y + 0].zwzz, cb5[r19.y + 0].xyxx + else + ishl r20.x, r19.y, l(2) + dp3 r26.x, -r27.xyzx, cb5[r20.x + 32].xyzx + dp3 r26.y, -r27.xyzx, cb5[r20.x + 33].xyzx + dp3 r26.z, -r27.xyzx, cb5[r20.x + 34].xyzx + lt r20.x, |r26.x|, |r26.y| + and r20.x, r20.x, l(1) + dp2 r21.w, |r26.xyxx|, icb[r20.x + 0].xyxx + lt r21.w, r21.w, |r26.z| + movc r20.x, r21.w, l(2), r20.x + dp3 r21.w, r26.xyzx, icb[r20.x + 0].xyzx + lt r21.w, r21.w, l(0.000000) + bfi r20.x, l(31), l(1), r20.x, r21.w + ushr r21.w, r20.x, l(1) + dp3 r21.w, r26.xyzx, icb[r21.w + 0].xyzx + div r22.w, l(0.000244140625), cb5[r19.y + 0].w + add r22.w, -r22.w, l(0.500000) + utof r23.w, r20.x + ult r24.z, r20.x, l(2) + and r24.z, r24.z, l(2) + dp2 r24.z, r26.xzxx, icb[r24.z + 0].xzxx + mul r24.z, r24.z, icb[r20.x + 4].z + div r24.z, r24.z, |r21.w| + mad r23.w, r24.z, r22.w, r23.w + add r23.w, r23.w, l(0.500000) + mul_sat r27.x, r23.w, l(0.166666672) + iadd r23.w, l(-1), icb[r20.x + 4].y + dp2 r23.w, r26.yzyy, icb[r23.w + 0].xyxx + mul r20.x, r23.w, icb[r20.x + 4].w + div r20.x, r20.x, |r21.w| + mad_sat r27.y, -r20.x, r22.w, l(0.500000) + mad r21.xy, r27.xyxx, cb5[r19.y + 0].zwzz, cb5[r19.y + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r19.y, r21.xyxx, t11.yxzw, s1, l(0.000000) + mul r19.x, r19.y, r19.x + endif + lt r19.x, l(0.000000), r19.x + if_nz r19.x + if_z r19.z + ftoi r19.x, cb3[r24.y + 6].x + else + add r21.xyw, r7.xyxz, -cb3[r24.x + 6].xyxz + lt r24.xzw, |r21.yyww|, |r21.xxxy| + and r19.y, r24.z, r24.x + lt r21.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyxw + ushr r19.z, cb3[r20.z + 6].w, l(24) + ubfe r24.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r20.z + 6].wwww + movc r19.z, r21.x, r19.z, r24.x + and r20.x, l(255), cb3[r20.z + 6].w + movc r20.x, r21.y, r24.z, r20.x + ubfe r20.z, l(8), l(8), cb3[r24.y + 6].x + and r21.x, l(255), cb3[r24.y + 6].x + movc r20.z, r21.w, r20.z, r21.x + movc r20.x, r24.w, r20.x, r20.z + movc r19.y, r19.y, r19.z, r20.x + ilt r19.z, r19.y, l(80) + movc r19.x, r19.z, r19.y, l(-1) + endif + ishl r19.y, r19.x, l(2) + mad r21.xyw, r28.xyxz, cb4[r19.x + 288].xxxx, r7.xyxz + mul r19.z, l(5.000000), cb4[r19.x + 288].y + mad r21.xyw, r5.xyxz, r19.zzzz, r21.xyxw + mul r24.xyzw, r21.yyyy, cb4[r19.y + 65].xyzw + mad r24.xyzw, cb4[r19.y + 64].xyzw, r21.xxxx, r24.xyzw + mad r24.xyzw, cb4[r19.y + 66].xyzw, r21.wwww, r24.xyzw + add r24.xyzw, r24.xyzw, cb4[r19.y + 67].xyzw + div r21.xyw, r24.xyxz, r24.wwww + ge r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xywx + ge r26.xyz, r21.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r19.yz, -cb4[r19.x + 344].xxyx, cb4[r19.x + 344].zzwz + mad r19.yz, r21.xxyx, r19.yyzy, cb4[r19.x + 344].xxyx + mad r20.xz, r19.yyzy, cb4[400].zzwz, l(0.500000, 0.000000, 0.500000, 0.000000) + round_ni r20.xz, r20.xxzx + mad r19.yz, r19.yyzy, cb4[400].zzwz, -r20.xxzx + add r27.xyzw, r19.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r28.xyzw, r27.xxzz, r27.xxzz + add r21.xy, -r19.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) + min r27.xz, r19.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r29.xy, r19.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r30.xy, r21.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r29.xy, -r29.xyxx, r29.xyxx, r27.ywyy + add r29.xy, r29.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r29.xy, r29.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r28.xz, r28.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r19.yz, r28.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r19.yyzy + mul r31.xy, r19.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r19.yz, -r27.xxzx, r27.xxzx, r21.xxyx + add r19.yz, r19.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r32.xy, r19.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r19.yz, r27.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r31.z, r32.x + mov r31.w, r19.y + mov r30.z, r29.x + mov r30.w, r28.x + add r27.xyzw, r30.zwxz, r31.zwxz + mov r32.z, r31.y + mov r32.w, r19.z + mov r29.z, r30.y + mov r29.w, r28.z + add r28.xyz, r29.zywz, r32.zywz + div r30.xyz, r30.xzwx, r27.zwyz + add r30.xyz, r30.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r30.xyz, r30.yxzy, cb4[400].xxxx + div r29.xyz, r29.zywz, r28.xyzx + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.xyzx, cb4[400].yyyy + mov r30.w, r29.x + mad r31.xyzw, r20.xzxz, cb4[400].xyxy, r30.ywxw + mad r19.yz, r20.xxzx, cb4[400].xxyx, r30.zzwz + mov r29.w, r30.y + mov r30.yw, r29.yyyz + mad r32.xyzw, r20.xzxz, cb4[400].xyxy, r30.xyzy + mad r29.xyzw, r20.xzxz, cb4[400].xyxy, r29.wywz + mad r30.xyzw, r20.xzxz, cb4[400].xyxy, r30.xwzw + mul r33.xyzw, r27.zwyz, r28.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r31.xyxx, t6.xxxx, s4, r21.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r31.zwzz, t6.xxxx, s4, r21.w + mul r20.z, r20.z, r33.y + mad r20.x, r33.x, r20.x, r20.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.y, r19.yzyy, t6.xxxx, s4, r21.w + mad r19.y, r33.z, r19.y, r20.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r29.xyxx, t6.xxxx, s4, r21.w + mad r19.y, r33.w, r19.z, r19.y + mul r31.xyzw, r27.xyzw, r28.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r32.xyxx, t6.xxxx, s4, r21.w + mad r19.y, r31.x, r19.z, r19.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r32.zwzz, t6.xxxx, s4, r21.w + mad r19.y, r31.y, r19.z, r19.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r29.zwzz, t6.xxxx, s4, r21.w + mad r19.y, r31.z, r19.z, r19.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r30.xyxx, t6.xxxx, s4, r21.w + mad r19.y, r31.w, r19.z, r19.y + ige r19.z, r19.x, l(0) + or r24.xyz, r24.xyzx, r26.xyzx + or r20.x, r24.y, r24.x + or r20.x, r24.z, r20.x + and r20.z, r21.w, l(0x7fffffff) + ult r20.z, l(0x7f800000), r20.z + or r20.x, r20.z, r20.x + mul r20.z, r27.y, r28.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.x, r30.zwzz, t6.xxxx, s4, r21.w + mad r19.y, r20.z, r21.x, r19.y + add r19.y, r19.y, l(-1.000000) + mad r19.x, cb4[r19.x + 288].w, r19.y, l(1.000000) + movc r19.x, r20.x, l(1.000000), r19.x + movc r19.x, r19.z, r19.x, l(1.000000) + else + mov r19.x, l(1.000000) + endif + else + mov r19.x, l(1.000000) + endif + mul r17.w, r17.w, r19.x + mov r25.xyz, l(0,0,0,0) + endif + add r23.xyz, r23.xyzx, r25.xyzx + mov r18.w, r20.w + endloop + mov r13.w, r17.w + add r22.xyz, r22.xyzx, r23.xyzx + iadd r14.w, r14.w, l(1) +endloop +mad r1.xyz, r22.xyzx, r13.wwww, r14.xyzx +ne r10.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx +if_nz r10.x + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + mad r0.z, r0.z, l(0.750000), l(0.250000) + min r0.z, r3.w, r0.z + add r1.w, r0.z, r9.w + mad r4.y, r12.w, l(-16.000000), l(-1.000000) + exp r4.y, r4.y + log r1.w, |r1.w| + mul r1.w, r1.w, r4.y + exp r1.w, r1.w + add r1.w, r0.z, r1.w + add r1.w, r1.w, l(-1.000000) + mov_sat r10.xzw, r1.wwww + mad r14.xyz, r3.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r3.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r3.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r10.xzw, r3.wwww + mov r14.xyz, r3.wwww +endif +mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r17.xyz, r7.xzyx, -r17.xyzx +max r0.z, |r17.y|, |r17.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.w, |r17.z|, l(-208.000000) +mul_sat r1.w, r1.w, l(0.031250) +max r0.z, r0.z, r1.w +ne r1.w, l(0.000000), cb0[210].w +lt r3.w, r0.z, l(1.000000) +and r1.w, r1.w, r3.w +if_nz r1.w + mad r17.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r17.xyz, r7.xzyx, -r17.xyzx + max r1.w, |r17.y|, |r17.x| + add r1.w, r1.w, l(-29.000000) + mul_sat r1.w, r1.w, l(0.500000) + add r3.w, |r17.z|, l(-13.000000) + mul_sat r3.w, r3.w, l(0.500000) + max r1.w, r1.w, r3.w + lt r3.w, r1.w, l(1.000000) + if_nz r3.w + mad r17.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t15.yzwx, s2, l(0.000000) + add r3.w, -r1.w, l(1.000000) + mul r4.y, l(0.500000), cb0[211].y + mad r6.w, -cb0[211].y, l(0.500000), l(1.000000) + max r4.y, r4.y, r17.y + min r4.y, r6.w, r4.y + mul r17.w, r4.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t16.xyzw, s1, l(0.000000) + mad r4.y, r19.w, r3.w, r0.z + add r20.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t16.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.yyyy, r20.xyzx + mov r20.w, r18.y + mul r20.xyzw, r3.wwww, r20.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.xxxx, r17.xyzx + mov r17.w, r18.x + mul r17.xyzw, r3.wwww, r17.xyzw + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r19.xyzx + mul r18.xyzw, r3.wwww, r18.xyzw + else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r4.y, r0.z + endif + mad r19.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r19.xyz, r7.xzyx, -r19.xyzx + max r3.w, |r19.y|, |r19.x| + add r3.w, r3.w, l(-116.000000) + mul_sat r3.w, r3.w, l(0.125000) + add r6.w, |r19.z|, l(-52.000000) + mul_sat r6.w, r6.w, l(0.125000) + max r3.w, r3.w, r6.w + lt r6.w, r3.w, l(1.000000) + if_nz r6.w + mad r19.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r21.xyz, r19.xyzx, cb0[211].xyzx + round_ni r21.xyz, r21.xyzx + mad r19.xyz, r19.xyzx, cb0[211].xyzx, -r21.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r19.xyzx, t17.yzwx, s2, l(0.000000) + add r6.w, -r3.w, l(1.000000) + mul r1.w, r1.w, r6.w + mul r6.w, l(0.500000), cb0[211].y + mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) + max r6.w, r6.w, r19.y + min r6.w, r8.w, r6.w + mul r19.w, r6.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyzw, r19.xwzx, t18.xyzw, s1, l(0.000000) + mad r4.y, r22.w, r1.w, r4.y + add r23.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyz, r23.xyzx, t18.xyzw, s1, l(0.000000) + mad r23.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r21.yyyy, r23.xyzx + mov r23.w, r21.y + mad r20.xyzw, r23.xyzw, r1.wwww, r20.xyzw + add r19.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r21.xxxx, r19.xyzx + mov r19.w, r21.x + mad r17.xyzw, r19.xyzw, r1.wwww, r17.xyzw + mad r19.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r19.xyzx + mad r18.xyzw, r21.xyzw, r1.wwww, r18.xyzw + endif + lt r1.w, l(0.000000), r3.w + if_nz r1.w + mad r19.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r21.xyz, r19.xyzx, cb0[211].xyzx + mul r22.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r21.xyz, r21.xyzx + mad r19.xyz, r19.xyzx, cb0[211].xyzx, -r21.xyzx + mad r21.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r19.xyz, r22.xyzx, r19.xyzx + min r19.xyz, r21.xyzx, r19.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r23.xyw, r19.xyzx, t19.yzwx, s2, l(0.000000) + add r1.w, -r0.z, l(1.000000) + mul r1.w, r1.w, r3.w + max r3.w, r22.y, r19.y + min r3.w, r21.y, r3.w + mul r19.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r19.xwzx, t20.xyzw, s1, l(0.000000) + add r22.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t20.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r23.yyyy, r22.xyzx + mov r22.w, r23.y + mad r20.xyzw, r22.xyzw, r1.wwww, r20.xyzw + add r19.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r23.xxxx, r19.xyzx + mov r19.w, r23.x + mad r17.xyzw, r19.xyzw, r1.wwww, r17.xyzw + mad r19.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r23.wwww, r19.xyzx + mad r18.xyzw, r23.xyzw, r1.wwww, r18.xyzw + mad r4.y, r21.w, r1.w, r4.y + endif + mad_sat r1.w, r4.y, l(2.000000), l(-1.000000) + add r19.x, -r0.z, r1.w + add r0.z, r0.z, r1.w + mul r19.y, r0.z, l(0.500000) +else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r19.xy, l(0,1.000000,0,0) +endif +mul r21.xyzw, r19.yyyx, cb0[213].xyzw +mad r21.y, r21.w, l(0.500000), r21.y +mul r12.yz, r19.yyxy, cb0[213].wwyw +mad r21.w, r12.z, l(0.375000), r12.y +add r18.xyzw, r18.xyzw, r21.xyzw +mul r21.xyzw, r19.yyyx, cb0[214].xyzw +mad r21.y, r21.w, l(0.500000), r21.y +mul r12.yz, r19.yyxy, cb0[214].wwyw +mad r21.w, r12.z, l(0.375000), r12.y +add r17.xyzw, r17.xyzw, r21.xyzw +mul r21.xyzw, r19.yyyx, cb0[215].xyzw +mad r21.y, r21.w, l(0.500000), r21.y +mul r12.yz, r19.yyxy, cb0[215].wwyw +mad r21.w, r12.z, l(0.375000), r12.y +add r19.xyzw, r20.xyzw, r21.xyzw +ge r12.yz, r6.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r12.z, r12.y +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r20.xyzw, r6.xyxx, t14.xyzw, s1, l(0.000000) + lt r21.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r20.xyzw| + or r6.xy, r21.zwzz, r21.xyxx + or r0.z, r6.y, r6.x + if_nz r0.z + dp3 r0.z, r20.yzwy, r20.yzwy + sqrt r0.z, r0.z + mov r6.x, l(1.000000) + mov r6.y, r0.z + mov r1.w, l(0) + loop + ge r3.w, l(4.600000), r6.y + breakc_nz r3.w + iadd r3.w, r1.w, l(1) + mul r12.yz, r6.xxyx, l(0.000000, 0.500000, 0.500000, 0.000000) + mov r6.xy, r12.yzyy + mov r1.w, r3.w + continue + endloop + mul r20.xyzw, r6.xxxx, r20.xyzw + dp3 r0.z, r20.yzwy, r20.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb6[3].x, cb6[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r6.x, r0.z, l(0.00390625000) + mov r6.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r6.xy, r6.xyxx, t13.xyzw, s1, l(0.000000) + mad r6.xy, r6.xyxx, cb6[2].xyxx, cb6[2].zwzz + mul r21.x, r6.x, l(3.54490781) + mul r21.yzw, r6.yyyy, r20.yyzw + mul r0.z, r20.x, l(0.406976730) + exp r0.z, r0.z + mul r20.xyzw, r0.zzzz, r21.xyzw + mov r21.xyzw, r20.xyzw + mov r0.z, l(0) + loop + uge r3.w, r0.z, r1.w + breakc_nz r3.w + mul r22.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r3.w, r22.xyzw, r21.xyzw + dp2 r4.y, r22.yxyy, r21.xyxx + dp2 r6.x, r22.zxzz, r21.xzxx + dp2 r6.y, r22.wxww, r21.xwxx + iadd r6.w, r0.z, l(1) + mov r21.x, r3.w + mov r21.y, r4.y + mov r21.zw, r6.xxxy + mov r0.z, r6.w + continue + endloop + mul r20.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r21.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r20.xyzw, r21.xyzw + dp2 r1.w, r20.yxyy, r21.xyxx + dp2 r3.w, r20.zxzz, r21.xzxx + dp2 r4.y, r20.wxww, r21.xwxx + mul r21.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r6.x, r20.xyzw, r21.xyzw + dp2 r6.y, r20.yxyy, r21.xyxx + dp2 r6.w, r20.zxzz, r21.xzxx + dp2 r8.w, r20.wxww, r21.xwxx + mul r21.xyzw, r19.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r9.w, r20.xyzw, r21.xyzw + dp2 r11.w, r20.yxyy, r21.xyxx + dp2 r12.y, r20.zxzz, r21.xzxx + dp2 r12.z, r20.wxww, r21.xwxx + mul r18.w, r0.z, l(0.886226952) + mul r18.x, r4.y, l(-1.02332675) + mul r18.y, r1.w, l(-1.02332675) + mul r18.z, r3.w, l(1.02332675) + mul r17.x, r8.w, l(-1.02332675) + mul r17.yzw, r6.yywx, l(0.000000, -1.02332675, 1.02332675, 0.886226952) + mul r19.w, r9.w, l(0.886226952) + mul r19.y, r11.w, l(-1.02332675) + mul r19.xz, r12.zzyz, l(-1.02332675, 0.000000, 1.02332675, 0.000000) + endif +endif +mov r5.w, l(1.000000) +dp4 r20.x, r18.xyzw, r5.xyzw +dp4 r20.y, r17.xyzw, r5.xyzw +dp4 r20.z, r19.xyzw, r5.xyzw +max r6.xyw, r20.xyxz, l(0.000000, 0.000000, 0.000000, 0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.w, r12.w, l(0.001000) +log r1.w, r1.w +mad r1.w, -r1.w, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.w +mul r12.yz, r2.xxyx, cb1[0].wwww +round_ni r12.yz, r12.yyzy +add r1.w, |r4.w|, -cb1[2].y +round_ni r1.w, r1.w +add r3.w, l(-1.000000), cb1[1].x +max r4.y, r1.w, l(0.000000) +min r3.w, r3.w, r4.y +ge r1.w, r3.w, r1.w +mad r4.y, r12.z, cb1[0].x, r12.y +ftoi r4.y, r4.y +iadd r4.y, r4.y, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r4.y, r4.y, l(0), t0.xxxx +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +and r3.w, r3.w, r4.y +and r1.w, r1.w, r3.w +mul r12.yzw, r6.xxyw, cb0[111].xxxx +dp3 r3.w, r12.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r7.w, l(1.000000) +mov r12.yzw, l(0,0,0,0) +mov r4.y, l(1.000000) +mov r8.w, r1.w +mov r9.w, l(0) +loop + lt r11.w, l(0.010000), r4.y + ine r13.z, r8.w, l(0) + and r13.z, r11.w, r13.z + if_nz r13.z + firstbit_lo r13.z, r8.w + ishl r13.w, l(1), r13.z + xor r8.w, r8.w, r13.w + ishl r13.z, r13.z, l(3) + dp4 r20.x, cb1[r13.z + 6].xyzw, r7.xyzw + dp4 r20.y, cb1[r13.z + 7].xyzw, r7.xyzw + dp4 r20.z, cb1[r13.z + 8].xyzw, r7.xyzw + ge r21.xyz, cb1[r13.z + 5].xyzx, |r20.xyzx| + and r13.w, r21.y, r21.x + and r13.w, r21.z, r13.w + if_nz r13.w + mul r13.w, l(0.100000), cb1[r13.z + 5].x + mul r21.xyz, |r20.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r21.xy, r21.xyxx, r21.xyxx + add r22.xyz, -|r20.xyzx|, cb1[r13.z + 5].xyzx + mul r22.xyz, r22.xyzx, cb1[r13.z + 9].xyzx + eq r14.w, l(1.000000), cb1[r13.z + 10].x + if_nz r14.w + dp3 r23.x, cb1[r13.z + 6].xyzx, r15.xyzx + dp3 r23.y, cb1[r13.z + 7].xyzx, r15.xyzx + dp3 r23.z, cb1[r13.z + 8].xyzx, r15.xyzx + add r24.xyz, -r20.xyzx, cb1[r13.z + 5].xyzx + div r24.xyz, r24.xyzx, r23.xyzx + add r25.xyz, -r20.xyzx, -cb1[r13.z + 5].xyzx + div r25.xyz, r25.xyzx, r23.xyzx + lt r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + movc r24.xyz, r26.xyzx, r24.xyzx, r25.xyzx + min r14.w, r24.y, r24.x + min r14.w, r24.z, r14.w + mad r20.xyz, r23.xyzx, r14.wwww, r20.xyzx + else + mov r20.xyz, r15.xyzx + endif + dp3 r14.w, r20.xyzx, r20.xyzx + rsq r14.w, r14.w + mul r20.xyz, r14.wwww, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + lt r24.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r23.xyz, -r23.xyzx, r24.xyzx + itof r23.xyz, r23.xyzx + dp3 r14.w, r20.xyzx, r23.xyzx + div r20.xyz, r20.xyzx, r14.wwww + lt r14.w, r20.z, l(0.000000) + add r20.zw, -|r20.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r20.zw, r20.zzzw, r23.xxxy + movc r20.xy, r14.wwww, r20.zwzz, r20.xyxx + dp4 r14.w, cb1[r13.z + 4].xyzw, r5.xyzw + max r14.w, r14.w, l(0.000000) + max r14.w, r14.w, l(0.000100) + min r15.w, r22.z, r22.y + min r15.w, r15.w, r22.x + add r16.w, r21.y, r21.x + mad r16.w, r21.z, r21.z, r16.w + mad r13.w, r13.w, r13.w, -r16.w + mul r13.w, r13.w, cb1[r13.z + 9].x + mul r13.w, r13.w, cb1[r13.z + 9].x + add r16.w, l(1.000000), -cb1[r13.z + 10].y + mul r13.w, r13.w, r16.w + mul r13.w, r13.w, l(100.000000) + mad_sat r13.w, r15.w, cb1[r13.z + 10].y, r13.w + mul r15.w, r13.w, cb1[r13.z + 10].w + mad r20.xy, r20.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r20.xy, r20.xyxx, cb1[1].wwww, cb1[2].wwww + mov r20.z, cb1[r13.z + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r20.xyz, r20.xyzx, t5.xyzw, s3, r0.z + mul r20.xyz, r20.xyzx, cb1[r13.z + 9].wwww + div r16.w, r3.w, r14.w + min r16.w, |r16.w|, l(1.000000) + mad r16.w, r16.w, l(2.000000), r3.w + add r14.w, r14.w, l(2.000000) + div r14.w, r16.w, r14.w + add r14.w, r14.w, l(-1.000000) + mad r14.w, r14.w, cb0[112].w, l(1.000000) + mul r20.xyz, r14.wwww, r20.xyzx + mul r20.xyz, r15.wwww, r20.xyzx + mad r12.yzw, r20.xxyz, r4.yyyy, r12.yyzw + mad r13.z, -r13.w, cb1[r13.z + 10].w, l(1.000000) + mul r4.y, r4.y, r13.z + endif + mov r9.w, l(-1) + continue + else + mov r9.w, r11.w + break + endif + mov r9.w, r11.w +endloop +if_nz r9.w + dp3 r1.w, r15.xyzx, r15.xyzx + rsq r1.w, r1.w + mul r15.xyz, r1.wwww, r15.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r21.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r1.w, r15.xyzx, r20.xyzx + div r15.xyz, r15.xyzx, r1.wwww + lt r1.w, r15.z, l(0.000000) + add r13.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r13.zw, r13.zzzw, r20.xxxy + movc r13.zw, r1.wwww, r13.zzzw, r15.xxxy + dp4 r1.w, cb1[3].xyzw, r5.xyzw + max r1.w, r1.w, l(0.000000) + max r1.w, r1.w, l(0.000100) + mad r13.zw, r13.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r15.xy, r13.zwzz, cb1[1].wwww, cb1[2].wwww + mov r15.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z + div r0.z, r3.w, r1.w + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r3.w + add r1.w, r1.w, l(2.000000) + div r0.z, r0.z, r1.w + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r15.xyz, r0.zzzz, r15.xyzx + mad r12.yzw, r15.xxyz, r4.yyyy, r12.yyzw +endif +mul r12.yzw, r12.yyzw, cb0[112].zzzz +mul r12.yzw, r12.yyzw, cb0[111].yyyy +if_nz r10.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.w, -r0.z, l(1.000000) + mul r20.xyz, r1.wwww, r12.yzwy + mad r12.yzw, r15.xxyz, r0.zzzz, r20.xxyz +endif +mul r3.xyz, r3.xyzx, r6.xywx +mul r3.xyz, r3.xyzx, cb0[111].xxxx +mad r0.z, r2.z, r13.x, r13.y +mul r6.xyw, r0.zzzz, r12.yzyw +mul r6.xyw, r10.xzxw, r6.xyxw +mad r3.xyz, r3.xyzx, r14.xyzx, r6.xywx +mul r5.xyzw, r5.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) +dp4 r10.x, r18.xyzw, r5.xyzw +dp4 r10.y, r17.xyzw, r5.xyzw +dp4 r10.z, r19.xyzw, r5.xyzw +max r5.xyz, r10.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +mul r5.xyz, r5.xyzx, cb0[111].xxxx +mul r5.xyz, r14.xyzx, r5.xyzx +mul r5.xyz, r16.xyzx, r5.xyzx +mul r0.z, r4.x, r12.x +ftou r1.w, r2.w +bfi r1.w, l(2), l(0), r1.w, r4.z +utof r1.w, r1.w +mul r1.w, r1.w, l(0.0322580636) +mad r0.z, r0.z, l(0.00787401572), r1.w +mul r4.xyz, r0.zzzz, r5.xyzx +mad r3.xyz, r4.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000), r3.xyzx +add r1.xyz, r1.xyzx, r3.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r7.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r6.z, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.z, r0.z, l(-1.442695) +exp r2.z, r2.z +add r2.z, -r2.z, l(1.000000) +div r0.z, r2.z, r0.z +mad r2.z, r7.y, cb0[156].w, cb0[158].w +mul r2.z, r2.z, l(1.442695) +exp r2.z, r2.z +mul r0.z, r0.z, r2.z +mul r0.z, r0.z, -r1.w +mul r3.xyz, r0.zzzz, cb0[155].xyzx +mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r3.xyz, r3.xyzx +dp3 r0.z, -r11.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.z +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r4.x, r0.y, r0.w, r0.x + dp3 r0.x, -r11.xyzx, -r9.xyzx + add r2.z, r7.y, -cb0[44].y + lt r2.w, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r2.w + mul r0.x, r0.x, cb0[163].w + div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), r6.z + mul r3.w, r0.x, r2.w + mad r4.z, r3.w, r2.z, cb0[44].y + mad r2.z, -r3.w, r2.z, r2.z + mul r3.w, r2.z, cb0[159].z + max r3.w, r3.w, l(-127.000000) + mul r2.z, r2.z, cb0[162].x + max r2.z, r2.z, l(-127.000000) + add r5.x, r4.z, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.y, l(5.960464478E-08), |r3.w| + exp r5.z, -r3.w + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r5.y, r5.z, r3.w + add r4.z, r4.z, -cb0[162].z + mul r4.z, r4.z, cb0[162].x + max r4.z, r4.z, l(-127.000000) + exp r4.z, -r4.z + mul r4.z, r4.z, cb0[162].y + lt r5.y, l(5.960464478E-08), |r2.z| + exp r5.z, -r2.z + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r2.z + mad r2.z, -r2.z, l(0.240226507), l(0.693147182) + movc r2.z, r5.y, r5.z, r2.z + mul r2.z, r2.z, r4.z + mad r2.z, r5.x, r3.w, r2.z + mad r0.x, -r0.x, r2.w, l(1.000000) + mul r0.x, r6.z, r0.x + mul r0.x, r0.x, r2.z + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r2.zw, r6.zzzz, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r2.z + add r0.x, r2.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r4.y, r0.w, r4.x, r0.y + ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r2.xxxy + mul r2.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r4.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r2.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r2.xyzw, r2.xyzx, t12.xyzw, s1, l(0.000000) + add r0.y, |r4.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r2.xyzw, r2.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r2.xyzw, r0.yyyy, r2.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r2.xyz, r4.xyzx, r2.wwww, r2.xyzx + mul r0.x, r0.x, r2.w +else + add r0.y, r7.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r6.z, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r6.zzzz, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r2.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r3.xyzx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r3.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r2.xyzx +mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r8.xyzx, r8.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t25.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xEC0BE43D.cso b/src/games/endfield/deferred-lighting/0xEC0BE43D.cso new file mode 100644 index 0000000000000000000000000000000000000000..0971d7f54a00a5ad6ef38f8ea732bb82705bab71 GIT binary patch literal 57296 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0.asm new file mode 100644 index 0000000000..b0f8651c6c --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0.asm @@ -0,0 +1,1867 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 16:59:16 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy w +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 xyz 2 NONE float xyz +// TEXCOORD 2 xyz 3 NONE float xyz +// TEXCOORD 3 xyzw 4 NONE float xyzw +// TEXCOORD 4 xyz 5 NONE float xyz +// TEXCOORD 5 xyz 6 NONE float xyz +// TEXCOORD 6 xyz 7 NONE float xyz +// TEXCOORD 7 xyz 8 NONE float xyz +// TEXCOORD 8 x 9 NONE uint x +// SV_IsFrontFace 0 x 10 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[216], immediateIndexed +dcl_constantbuffer CB1[4093], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[9], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_comparison +dcl_sampler s3, mode_default +dcl_sampler s4, mode_default +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_resource_structured t0, 4 +dcl_resource_structured t1, 16 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture3d (float,float,float,float) t4 +dcl_resource_texture3d (float,float,float,float) t5 +dcl_resource_texture3d (float,float,float,float) t6 +dcl_resource_texture3d (float,float,float,float) t7 +dcl_resource_texture3d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texturecube (float,float,float,float) t16 +dcl_resource_texture2d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_input_ps_siv linear noperspective v0.xyw, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyz +dcl_input_ps linear v4.xyzw +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps linear v7.xyz +dcl_input_ps linear v8.xyz +dcl_input_ps constant v9.x +dcl_input_ps_sgv constant v10.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 32 +add r0.xyz, -v2.xyzx, cb0[44].xyzx +mov r1.x, cb0[0].z +mov r1.y, cb0[1].z +mov r1.z, cb0[2].z +add r2.xyz, -r0.xyzx, r1.xyzx +mad r0.xyz, cb0[86].wwww, r2.xyzx, r0.xyzx +dp3 r0.w, r0.xyzx, r0.xyzx +max r1.w, r0.w, l(9.999999939E-09) +rsq r1.w, r1.w +mul r2.xyz, r0.xyzx, r1.wwww +ishl r2.w, v9.x, l(4) +and r3.x, l(16), cb1[r2.w + 4].w +if_nz r3.x + iadd r3.x, l(2), cb1[r2.w + 5].x + ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r3.x, l(12), t1.xxxx + ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.y, cb1[r2.w + 5].x, l(12), t1.xxxx +else + mov r3.xy, cb1[r2.w + 3].zxzz +endif +sample_b_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t12.xyzw, s3, cb0[108].x +sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t13.xyzw, s4, cb0[108].x +add r3.z, -r5.w, l(1.000000) +mul r4.xyzw, r4.xyzw, cb5[5].xyzw +mul r6.xyz, r4.xyzx, cb5[4].zzzz +dp3 r3.w, r6.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r6.xyz, r4.xyzx, cb5[4].zzzz, -r3.wwww +mad r6.xyz, cb5[4].wwww, r6.xyzx, r3.wwww +sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, v1.xyxx, t14.xywz, s5, cb0[108].x +mul r7.x, r7.x, r7.z +mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r3.w, r7.xyxx, r7.xyxx +min r3.w, r3.w, l(1.000000) +add r3.w, -r3.w, l(1.000000) +sqrt r3.w, r3.w +max r3.w, r3.w, l(1.000000017E-16) +mul r7.xy, r7.xyxx, cb5[0].wwww +sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, v1.xyxx, t15.xyzw, s6, cb0[108].x +add r9.xz, -r3.yyxy, v2.xxzx +mov r9.y, l(0.0000610351562) +dp3 r3.x, r9.xyzx, r9.xyzx +rsq r3.x, r3.x +mul r9.xyz, r3.xxxx, r9.xyzx +mul r10.xyz, v3.zxyz, v4.yzxy +mad r10.xyz, v3.yzxy, v4.zxyz, -r10.xyzx +mul r10.xyz, r10.xyzx, v4.wwww +mul r7.yzw, r7.yyyy, r10.xxyz +mad r7.xyz, r7.xxxx, v4.xyzx, r7.yzwy +mad r3.xyw, r3.wwww, v3.xyxz, r7.xyxz +mad r6.w, cb5[1].y, l(2.000000), l(-1.000000) +movc r6.w, v10.x, l(1.000000), r6.w +dp3 r7.x, r3.xywx, r3.xywx +max r7.x, r7.x, l(1.175494351E-38) +rsq r7.x, r7.x +mul r3.xyw, r3.xyxw, r7.xxxx +mul r7.xyz, r6.wwww, r3.xywx +dp3 r8.w, v3.xyzx, v3.xyzx +rsq r8.w, r8.w +mul r10.xyz, r8.wwww, v3.xyzx +mul r10.xyz, r6.wwww, r10.xyzx +ftou r11.xy, v0.xyxx +add r8.w, l(1.000000), -cb0[111].x +mad r8.w, cb0[198].w, r8.w, cb0[111].x +mul r8.w, r8.w, cb0[109].x +lt r9.w, cb0[187].y, l(0.500000) +if_nz r9.w + mad r12.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx + add r12.xyz, -r12.xyzx, v2.xzyx + max r9.w, |r12.y|, |r12.x| + add r9.w, r9.w, l(-464.000000) + mul_sat r9.w, r9.w, l(0.031250) + add r10.w, |r12.z|, l(-208.000000) + mul_sat r10.w, r10.w, l(0.031250) + max r9.w, r9.w, r10.w + ne r10.w, l(0.000000), cb0[210].w + lt r12.x, r9.w, l(1.000000) + and r10.w, r10.w, r12.x + if_nz r10.w + mad r12.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r12.xyz, -r12.xyzx, v2.xzyx + max r10.w, |r12.y|, |r12.x| + add r10.w, r10.w, l(-29.000000) + mul_sat r10.w, r10.w, l(0.500000) + add r12.x, |r12.z|, l(-13.000000) + mul_sat r12.x, r12.x, l(0.500000) + max r10.w, r10.w, r12.x + lt r12.x, r10.w, l(1.000000) + if_nz r12.x + mad r12.xyz, v2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r13.xyz, r12.xyzx, cb0[211].xyzx + round_ni r13.xyz, r13.xyzx + mad r12.xyz, r12.xyzx, cb0[211].xyzx, -r13.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r13.xyw, r12.xyzx, t4.yzwx, s1, l(0.000000) + add r14.x, -r10.w, l(1.000000) + mul r14.y, l(0.500000), cb0[211].y + mad r14.z, -cb0[211].y, l(0.500000), l(1.000000) + max r12.y, r12.y, r14.y + min r12.y, r14.z, r12.y + mul r12.w, r12.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r12.xwzx, t5.xyzw, s0, l(0.000000) + mad r12.y, r15.w, r14.x, r9.w + add r14.yzw, r12.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.yzw, r14.yzwy, t5.wxyz, s0, l(0.000000) + mad r14.yzw, r14.yyzw, l(0.000000, 4.000000, 4.000000, 4.000000), l(0.000000, -2.000000, -2.000000, -2.000000) + mul r16.xyz, r13.yyyy, r14.yzwy + mov r16.w, r13.y + mul r16.xyzw, r14.xxxx, r16.xyzw + add r12.xzw, r12.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r12.xzw, r12.xzwx, t5.xwyz, s0, l(0.000000) + mad r12.xzw, r12.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r17.xyz, r13.xxxx, r12.xzwx + mov r17.w, r13.x + mul r17.xyzw, r14.xxxx, r17.xyzw + mad r12.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r13.xyz, r13.wwww, r12.xzwx + mul r13.xyzw, r14.xxxx, r13.xyzw + else + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r12.y, r9.w + endif + mad r12.xzw, cb0[6].xxzy, -cb0[212].zzzz, cb0[210].xxzy + add r12.xzw, -r12.xxzw, v2.xxzy + max r12.x, |r12.z|, |r12.x| + add r12.x, r12.x, l(-116.000000) + add r12.z, |r12.w|, l(-52.000000) + mul_sat r12.xz, r12.xxzx, l(0.125000, 0.000000, 0.125000, 0.000000) + max r12.x, r12.z, r12.x + lt r12.z, r12.x, l(1.000000) + if_nz r12.z + mad r14.xyz, v2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r15.xyz, r14.xyzx, cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r15.xyw, r14.xyzx, t6.yzwx, s1, l(0.000000) + add r12.z, -r12.x, l(1.000000) + mul r10.w, r10.w, r12.z + mul r12.z, l(0.500000), cb0[211].y + mad r12.w, -cb0[211].y, l(0.500000), l(1.000000) + max r12.z, r12.z, r14.y + min r12.z, r12.w, r12.z + mul r14.w, r12.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r14.xwzx, t7.xyzw, s0, l(0.000000) + mad r12.y, r18.w, r10.w, r12.y + add r19.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t7.xyzw, s0, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r15.yyyy, r19.xyzx + mov r19.w, r15.y + mad r16.xyzw, r19.xyzw, r10.wwww, r16.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t7.xyzw, s0, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r15.xxxx, r14.xyzx + mov r14.w, r15.x + mad r17.xyzw, r14.xyzw, r10.wwww, r17.xyzw + mad r14.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r15.wwww, r14.xyzx + mad r13.xyzw, r15.xyzw, r10.wwww, r13.xyzw + endif + lt r10.w, l(0.000000), r12.x + if_nz r10.w + mad r14.xyz, v2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r15.xyz, r14.xyzx, cb0[211].xyzx + mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx + mad r15.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r14.xyz, r18.xyzx, r14.xyzx + min r14.xyz, r15.xyzx, r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r14.xyzx, t8.yzwx, s1, l(0.000000) + add r10.w, -r9.w, l(1.000000) + mul r10.w, r10.w, r12.x + max r12.x, r18.y, r14.y + min r12.x, r15.y, r12.x + mul r14.w, r12.x, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r14.xwzx, t9.xyzw, s0, l(0.000000) + add r12.xzw, r14.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r12.xzw, r12.xzwx, t9.xwyz, s0, l(0.000000) + mad r12.xzw, r12.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r18.xyz, r19.yyyy, r12.xzwx + mov r18.w, r19.y + mad r16.xyzw, r18.xyzw, r10.wwww, r16.xyzw + add r12.xzw, r14.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r12.xzw, r12.xzwx, t9.xwyz, s0, l(0.000000) + mad r12.xzw, r12.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r14.xyz, r19.xxxx, r12.xzwx + mov r14.w, r19.x + mad r17.xyzw, r14.xyzw, r10.wwww, r17.xyzw + mad r12.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r19.xyz, r19.wwww, r12.xzwx + mad r13.xyzw, r19.xyzw, r10.wwww, r13.xyzw + mad r12.y, r15.w, r10.w, r12.y + endif + mad_sat r10.w, r12.y, l(2.000000), l(-1.000000) + add r12.x, -r9.w, r10.w + add r9.w, r9.w, r10.w + mul r12.y, r9.w, l(0.500000) + else + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r12.xy, l(0,1.000000,0,0) + endif + mul r14.xyzw, r12.yyyx, cb0[213].xyzw + mad r14.y, r14.w, l(0.500000), r14.y + mul r12.zw, r12.yyyx, cb0[213].wwwy + mad r14.w, r12.w, l(0.375000), r12.z + add r13.xyzw, r13.xyzw, r14.xyzw + mul r14.xyzw, r12.yyyx, cb0[214].xyzw + mad r14.y, r14.w, l(0.500000), r14.y + mul r12.zw, r12.yyyx, cb0[214].wwwy + mad r14.w, r12.w, l(0.375000), r12.z + add r14.xyzw, r14.xyzw, r17.xyzw + mul r15.xyzw, r12.yyyx, cb0[215].xyzw + mad r15.y, r15.w, l(0.500000), r15.y + mul r12.xy, r12.yxyy, cb0[215].wyww + mad r15.w, r12.y, l(0.375000), r12.x + add r12.xyzw, r15.xyzw, r16.xyzw + mov r7.w, l(1.000000) + dp4 r15.x, r13.xyzw, r7.xyzw + dp4 r15.y, r14.xyzw, r7.xyzw + dp4 r15.z, r12.xyzw, r7.xyzw + max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r16.xyz, r8.wwww, r15.xyzx + mul r17.xyz, r14.xyzx, l(0.715200, 0.715200, 0.715200, 0.000000) + mad r17.xyz, r13.xyzx, l(0.212600, 0.212600, 0.212600, 0.000000), r17.xyzx + mad r17.xyz, r12.xyzx, l(0.072200, 0.072200, 0.072200, 0.000000), r17.xyzx + dp3 r7.w, r17.xyzx, r17.xyzx + max r7.w, r7.w, l(1.175494351E-38) + rsq r7.w, r7.w + mul r17.xyz, r7.wwww, r17.xyzx + mov r17.y, |r17.y| + mov r17.w, l(1.000000) + dp4 r13.x, r13.xyzw, r17.xyzw + dp4 r13.y, r14.xyzw, r17.xyzw + dp4 r13.z, r12.xyzw, r17.xyzw + max r12.xyz, r13.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + ge r7.w, r16.y, r16.z + and r7.w, r7.w, l(0x3f800000) + mov r13.xy, r16.zyzz + mov r13.zw, l(0,0,-1.000000,0.666666687) + mad r14.xy, r15.yzyy, r8.wwww, -r13.xyxx + mov r14.zw, l(0,0,1.000000,-1.000000) + mad r13.xyzw, r7.wwww, r14.xyzw, r13.xyzw + ge r7.w, r16.x, r13.x + and r7.w, r7.w, l(0x3f800000) + mov r14.xyz, r13.xywx + mov r14.w, r16.x + mov r13.xyw, r14.wywx + add r13.xyzw, -r14.xyzw, r13.xyzw + mad r13.xyzw, r7.wwww, r13.xyzw, r14.xyzw + min r7.w, r13.y, r13.w + add r7.w, -r7.w, r13.x + add r9.w, -r13.y, r13.w + mad r10.w, r7.w, l(6.000000), l(0.000100) + div r9.w, r9.w, r10.w + add r9.w, r9.w, r13.z + frc r9.w, |r9.w| + add r10.w, r13.x, l(0.000100) + div r7.w, r7.w, r10.w + add r14.xyzw, r9.wwww, l(-0.500000, 1.000000, 0.666666687, 0.333333343) + add r9.w, |r14.x|, l(-0.450000) + mul_sat r9.w, r9.w, l(-10.000001) + mad r10.w, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r10.w + mad r9.w, r9.w, l(-0.350000), l(0.700000) + mov_sat r13.x, r13.x + mul r9.w, r9.w, r13.x + min r7.w, r7.w, r9.w + add r9.w, -r7.w, l(2.000000) + div r9.w, l(2.000000), r9.w + frc r13.xyz, r14.yzwy + mad r13.xyz, r13.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) + add_sat r13.xyz, |r13.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) + add r13.xyz, r13.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) + mad r13.xyz, r7.wwww, r13.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r13.xyz, r9.wwww, r13.xyzx + max r7.w, r12.y, r12.x + max r7.w, r12.z, r7.w + mul r8.w, r8.w, r7.w + mov r7.w, l(1.000000) +else + mov r17.xyz, l(0,0,0,0) + mov r16.xyz, l(1.000000,1.000000,1.000000,0) + mov r13.xyz, cb0[188].xyzx + mov r7.w, l(0) +endif +add r9.w, -v2.y, cb1[r2.w + 12].z +add r9.w, r9.w, l(0.200000) +mul_sat r9.w, r9.w, l(2.85714269) +mad r10.w, r9.w, l(-2.000000), l(3.000000) +mul r9.w, r9.w, r9.w +mul r9.w, r9.w, r10.w +mul r9.w, r9.w, cb1[r2.w + 12].y +max r9.w, r9.w, cb1[r2.w + 12].w +add r10.w, r9.w, cb1[r2.w + 12].x +lt r10.w, l(0.010000), r10.w +if_nz r10.w + add r10.w, -r5.x, l(1.000000) + mul r12.xyz, r4.xyzx, r10.wwww + dp3 r12.x, r12.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r12.x, r12.x, l(-0.350000) + mul_sat r12.x, r12.x, l(-4.000000) + mad r12.y, r12.x, l(-2.000000), l(3.000000) + mul r12.x, r12.x, r12.x + mul r12.z, r12.x, r12.y + mul r14.xyzw, v8.xyxz, l(1.000000, -1.000000, 1.000000, 1.000000) + movc r14.xyzw, cb1[r2.w + 4].wwww, r14.xyzw, v8.xzxy + mul r15.xyzw, r14.xyzw, cb0[196].zzzz + movc r18.yz, cb1[r2.w + 4].wwww, v7.zzyz, v7.yyzy + mov r18.x, v7.x + add r19.xyz, |r18.xyzx|, l(-0.200000, -0.200000, -0.200000, 0.000000) + mul r20.xyz, r19.xyzx, r19.xyzx + mul r19.xyz, r19.xyzx, r20.xyzx + max r19.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + dp3 r12.w, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + div r19.xyz, r19.xyzx, r12.wwww + sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r15.zyzz, t10.xyzw, s3, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.zwzz, t10.xyzw, s3, cb0[108].x + mul r22.xyzw, r19.zzzz, r22.xyzw + mad r21.xyzw, r21.xyzw, r19.yyyy, r22.xyzw + sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.ywyy, t10.xyzw, s3, cb0[108].x + mad r19.xyzw, r22.xyzw, r19.xxxx, r21.xyzw + add r18.yw, -r19.wwww, l(0.000000, 0.800000, 0.000000, 0.450000) + mul r21.xyz, r7.yyxy, l(0.200000, 0.000000, 1.000000, 0.000000) + mad_sat r12.w, cb1[r2.w + 12].x, r10.w, r21.x + add r12.w, -r18.y, r12.w + mul_sat r12.w, r12.w, l(3.33333325) + mad r13.w, r12.w, l(-2.000000), l(3.000000) + mul r12.w, r12.w, r12.w + mul r12.w, r12.w, r13.w + mul_sat r10.w, r9.w, r10.w + add r10.w, -r18.w, r10.w + mul_sat r10.w, r10.w, l(1.53846145) + mad r13.w, r10.w, l(-2.000000), l(3.000000) + mul r10.w, r10.w, r10.w + mul r10.w, r10.w, r13.w + max r10.w, r10.w, r12.w + add r12.w, r5.x, l(-0.500000) + mul_sat r12.w, r12.w, l(4.000000) + mad r13.w, r12.w, l(-2.000000), l(3.000000) + mul r12.w, r12.w, r12.w + mul r12.w, r12.w, r13.w + add r5.w, -r5.w, l(0.199999988) + mul_sat r5.w, r5.w, l(-5.00000048) + mad r13.w, r5.w, l(-2.000000), l(3.000000) + mul r5.w, r5.w, r5.w + mul r5.w, r5.w, r13.w + mad r13.w, r5.w, r12.z, r12.w + min r13.w, r13.w, l(1.000000) + max r9.w, r9.w, cb1[r2.w + 12].x + mad r18.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mul r19.xyw, r15.yzyw, l(20.000000, 20.000000, 0.000000, 20.000000) + mul r22.xyz, r15.yzwy, l(34.345600, 34.345600, 34.345600, 0.000000) + mul r23.xyz, r20.xyzx, r20.xyzx + mul r23.xyz, r23.xyzx, r23.xyzx + mul r20.xyz, r20.xyzx, r23.xyzx + dp3 r14.x, r20.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + div r20.xyz, r20.xyzx, r14.xxxx + round_ni r23.xyzw, r19.yxyw + mul r24.xyzw, r23.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r24.xyzw, r24.xyzw + add r25.xyzw, r24.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r14.x, r24.xyxx, r25.xyxx + add r21.xw, r14.xxxx, r24.xxxy + mul r14.x, r21.w, r21.x + add r16.w, r21.w, r21.x + frc r14.x, r14.x + frc r26.w, r16.w + add r27.xyzw, r23.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) + mul r27.xyzw, r27.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r27.xyzw, r27.xyzw + add r28.xyzw, r27.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r16.w, r27.xyxx, r28.xyxx + add r21.xw, r16.wwww, r27.xxxy + mul r16.w, r21.w, r21.x + add r17.w, r21.w, r21.x + frc r24.x, r16.w + frc r24.y, r17.w + mad r16.w, r14.x, l(0.399999976), l(0.600000) + mul r17.w, r16.w, l(0.250000) + mad r23.xyzw, r15.zyzw, l(20.000000, 20.000000, 20.000000, 20.000000), -r23.xyzw + mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.xxxy + add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) + mul r23.x, r21.x, l(1.250000) + lt r19.y, r21.w, l(0.000000) + movc r19.y, r19.y, l(1.250000), l(0.750000) + mul r23.y, r19.y, r21.w + mad r14.x, cb0[102].x, l(3.000000), r14.x + frc r14.x, r14.x + add r21.xw, r14.xxxx, l(-0.200000, 0.000000, 0.000000, -0.850000) + mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) + mad r25.xy, r21.xwxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r21.xw, r21.xxxw, r21.xxxw + mul r21.xw, r21.xxxw, r25.xxxy + mul r14.x, r21.w, r21.x + dp2 r19.y, r23.xyxx, r23.xyxx + sqrt r19.y, r19.y + mad r16.w, -r16.w, l(0.250000), r19.y + div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r17.w + mul_sat r16.w, r16.w, r19.y + mad r19.y, r16.w, l(-2.000000), l(3.000000) + mul r16.w, r16.w, r16.w + mul r16.w, r16.w, r19.y + ge r16.w, r16.w, l(0.001000) + and r16.w, r16.w, l(0x3f800000) + mul r26.z, r14.x, r16.w + div r21.xw, r23.xxxy, r17.wwww + max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) + min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + ge r14.x, r26.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r21.xw, r14.xxxx, r21.xxxw + mad r14.x, r24.x, l(0.250000), l(0.250000) + mul r26.xy, r14.xxxx, r21.xwxx + dp2 r14.x, r24.zwzz, r25.zwzz + add r21.xw, r14.xxxx, r24.zzzw + mul r14.x, r21.w, r21.x + add r16.w, r21.w, r21.x + frc r14.x, r14.x + frc r24.w, r16.w + dp2 r16.w, r27.zwzz, r28.zwzz + add r21.xw, r16.wwww, r27.zzzw + mul r16.w, r21.w, r21.x + add r17.w, r21.w, r21.x + frc r23.x, r16.w + frc r23.y, r17.w + mad r16.w, r14.x, l(0.399999976), l(0.600000) + mul r17.w, r16.w, l(0.250000) + mad r21.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.zzzw + add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) + mul r25.x, r21.x, l(1.250000) + lt r19.y, r21.w, l(0.000000) + movc r19.y, r19.y, l(1.250000), l(0.750000) + mul r25.y, r19.y, r21.w + mad r14.x, cb0[102].x, l(3.000000), r14.x + frc r14.x, r14.x + add r21.xw, r14.xxxx, l(-0.200000, 0.000000, 0.000000, -0.850000) + mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) + mad r23.yz, r21.xxwx, l(0.000000, -2.000000, -2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000) + mul r21.xw, r21.xxxw, r21.xxxw + mul r21.xw, r21.xxxw, r23.yyyz + mul r14.x, r21.w, r21.x + dp2 r19.y, r25.xyxx, r25.xyxx + sqrt r19.y, r19.y + mad r16.w, -r16.w, l(0.250000), r19.y + div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r17.w + mul_sat r16.w, r16.w, r19.y + mad r19.y, r16.w, l(-2.000000), l(3.000000) + mul r16.w, r16.w, r16.w + mul r16.w, r16.w, r19.y + ge r16.w, r16.w, l(0.001000) + and r16.w, r16.w, l(0x3f800000) + mul r24.z, r14.x, r16.w + div r21.xw, r25.xxxy, r17.wwww + max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) + min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + ge r14.x, r24.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r21.xw, r14.xxxx, r21.xxxw + mad r14.x, r23.x, l(0.250000), l(0.250000) + mul r24.xy, r14.xxxx, r21.xwxx + round_ni r19.xy, r19.xwxx + mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r23.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r14.x, r21.xwxx, r23.xyxx + add r21.xw, r14.xxxx, r21.xxxw + mul r14.x, r21.w, r21.x + add r16.w, r21.w, r21.x + frc r14.x, r14.x + frc r23.w, r16.w + add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) + mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r25.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r16.w, r21.xwxx, r25.xyxx + add r21.xw, r16.wwww, r21.xxxw + mul r16.w, r21.w, r21.x + add r17.w, r21.w, r21.x + frc r25.x, r16.w + frc r25.y, r17.w + mad r16.w, r14.x, l(0.399999976), l(0.600000) + mul r17.w, r16.w, l(0.250000) + mad r19.xy, r15.ywyy, l(20.000000, 20.000000, 0.000000, 0.000000), -r19.xyxx + mad r21.xw, r25.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx + add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) + mul r27.x, r19.x, l(1.250000) + lt r19.x, r19.y, l(0.000000) + movc r19.x, r19.x, l(1.250000), l(0.750000) + mul r27.y, r19.x, r19.y + mad r14.x, cb0[102].x, l(3.000000), r14.x + frc r14.x, r14.x + add r19.xy, r14.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) + mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) + mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.xy, r19.xyxx, r19.xyxx + mul r19.xy, r19.xyxx, r21.xwxx + mul r14.x, r19.y, r19.x + dp2 r19.x, r27.xyxx, r27.xyxx + sqrt r19.x, r19.x + mad r16.w, -r16.w, l(0.250000), r19.x + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r17.w + mul_sat r16.w, r16.w, r19.x + mad r19.x, r16.w, l(-2.000000), l(3.000000) + mul r16.w, r16.w, r16.w + mul r16.w, r16.w, r19.x + ge r16.w, r16.w, l(0.001000) + and r16.w, r16.w, l(0x3f800000) + mul r23.z, r14.x, r16.w + div r19.xy, r27.xyxx, r17.wwww + max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r14.x, r23.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r19.xy, r14.xxxx, r19.xyxx + mad r14.x, r25.x, l(0.250000), l(0.250000) + mul r23.xy, r14.xxxx, r19.xyxx + mul r24.xyzw, r20.zzzz, r24.xyzw + mad r24.xyzw, r26.xyzw, r20.yyyy, r24.xyzw + mad r23.xyzw, r23.xyzw, r20.xxxx, r24.xyzw + round_ni r24.xyzw, r22.yxyz + mul r25.xyzw, r24.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r25.xyzw, r25.xyzw + add r26.xyzw, r25.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r14.x, r25.xyxx, r26.xyxx + add r19.xy, r14.xxxx, r25.xyxx + mul r14.x, r19.y, r19.x + add r16.w, r19.y, r19.x + frc r14.x, r14.x + frc r27.w, r16.w + add r28.xyzw, r24.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) + mul r28.xyzw, r28.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r28.xyzw, r28.xyzw + add r29.xyzw, r28.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r16.w, r28.xyxx, r29.xyxx + add r19.xy, r16.wwww, r28.xyxx + mul r16.w, r19.y, r19.x + add r17.w, r19.y, r19.x + frc r19.x, r16.w + frc r19.y, r17.w + mad r16.w, r14.x, l(0.399999976), l(0.600000) + mul r17.w, r16.w, l(0.250000) + mad r24.xyzw, r15.xyzw, l(34.345600, 34.345600, 34.345600, 34.345600), -r24.xyzw + mad r19.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.xxxy + add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) + mul r24.x, r19.y, l(1.250000) + lt r15.x, r19.w, l(0.000000) + movc r15.x, r15.x, l(1.250000), l(0.750000) + mul r24.y, r15.x, r19.w + mad r14.x, cb0[102].x, l(4.345600), r14.x + frc r14.x, r14.x + add r19.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) + mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) + mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.yw, r19.yyyw, r19.yyyw + mul r19.yw, r19.yyyw, r21.xxxw + mul r14.x, r19.w, r19.y + dp2 r15.x, r24.xyxx, r24.xyxx + sqrt r15.x, r15.x + mad r15.x, -r16.w, l(0.250000), r15.x + div r16.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r17.w + mul_sat r15.x, r15.x, r16.w + mad r16.w, r15.x, l(-2.000000), l(3.000000) + mul r15.x, r15.x, r15.x + mul r15.x, r15.x, r16.w + ge r15.x, r15.x, l(0.001000) + and r15.x, r15.x, l(0x3f800000) + mul r27.z, r14.x, r15.x + div r19.yw, r24.xxxy, r17.wwww + max r19.yw, r19.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) + min r19.yw, r19.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) + ge r14.x, r27.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r19.yw, r14.xxxx, r19.yyyw + mad r14.x, r19.x, l(0.250000), l(0.250000) + mul r27.xy, r14.xxxx, r19.ywyy + dp2 r14.x, r25.zwzz, r26.zwzz + add r19.xy, r14.xxxx, r25.zwzz + mul r14.x, r19.y, r19.x + add r15.x, r19.y, r19.x + frc r14.x, r14.x + frc r25.w, r15.x + dp2 r15.x, r28.zwzz, r29.zwzz + add r19.xy, r15.xxxx, r28.zwzz + mul r15.x, r19.y, r19.x + add r16.w, r19.y, r19.x + frc r19.x, r15.x + frc r19.y, r16.w + mad r15.x, r14.x, l(0.399999976), l(0.600000) + mul r16.w, r15.x, l(0.250000) + mad r19.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.zzzw + add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) + mul r24.x, r19.y, l(1.250000) + lt r17.w, r19.w, l(0.000000) + movc r17.w, r17.w, l(1.250000), l(0.750000) + mul r24.y, r17.w, r19.w + mad r14.x, cb0[102].x, l(4.345600), r14.x + frc r14.x, r14.x + add r19.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) + mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) + mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.yw, r19.yyyw, r19.yyyw + mul r19.yw, r19.yyyw, r21.xxxw + mul r14.x, r19.w, r19.y + dp2 r17.w, r24.xyxx, r24.xyxx + sqrt r17.w, r17.w + mad r15.x, -r15.x, l(0.250000), r17.w + div r17.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w + mul_sat r15.x, r15.x, r17.w + mad r17.w, r15.x, l(-2.000000), l(3.000000) + mul r15.x, r15.x, r15.x + mul r15.x, r15.x, r17.w + ge r15.x, r15.x, l(0.001000) + and r15.x, r15.x, l(0x3f800000) + mul r25.z, r14.x, r15.x + div r19.yw, r24.xxxy, r16.wwww + max r19.yw, r19.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) + min r19.yw, r19.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) + ge r14.x, r25.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r19.yw, r14.xxxx, r19.yyyw + mad r14.x, r19.x, l(0.250000), l(0.250000) + mul r25.xy, r14.xxxx, r19.ywyy + round_ni r19.xy, r22.xzxx + mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r22.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r14.x, r21.xwxx, r22.xyxx + add r21.xw, r14.xxxx, r21.xxxw + mul r14.x, r21.w, r21.x + add r15.x, r21.w, r21.x + frc r14.x, r14.x + frc r22.w, r15.x + add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) + mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r24.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r15.x, r21.xwxx, r24.xyxx + add r21.xw, r15.xxxx, r21.xxxw + mul r15.x, r21.w, r21.x + add r16.w, r21.w, r21.x + frc r24.x, r15.x + frc r24.y, r16.w + mad r15.x, r14.x, l(0.399999976), l(0.600000) + mul r16.w, r15.x, l(0.250000) + mad r19.xy, r15.ywyy, l(34.345600, 34.345600, 0.000000, 0.000000), -r19.xyxx + mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx + add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) + mul r26.x, r19.x, l(1.250000) + lt r17.w, r19.y, l(0.000000) + movc r17.w, r17.w, l(1.250000), l(0.750000) + mul r26.y, r17.w, r19.y + mad r14.x, cb0[102].x, l(4.345600), r14.x + frc r14.x, r14.x + add r19.xy, r14.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) + mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) + mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.xy, r19.xyxx, r19.xyxx + mul r19.xy, r19.xyxx, r21.xwxx + mul r14.x, r19.y, r19.x + dp2 r17.w, r26.xyxx, r26.xyxx + sqrt r17.w, r17.w + mad r15.x, -r15.x, l(0.250000), r17.w + div r17.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w + mul_sat r15.x, r15.x, r17.w + mad r17.w, r15.x, l(-2.000000), l(3.000000) + mul r15.x, r15.x, r15.x + mul r15.x, r15.x, r17.w + ge r15.x, r15.x, l(0.001000) + and r15.x, r15.x, l(0x3f800000) + mul r22.z, r14.x, r15.x + div r19.xy, r26.xyxx, r16.wwww + max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r14.x, r22.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r19.xy, r14.xxxx, r19.xyxx + mad r14.x, r24.x, l(0.250000), l(0.250000) + mul r22.xy, r14.xxxx, r19.xyxx + mul r24.xyzw, r20.zzzz, r25.xyzw + mad r24.xyzw, r27.xyzw, r20.yyyy, r24.xyzw + mad r20.xyzw, r22.xyzw, r20.xxxx, r24.xyzw + max r19.xy, r20.zwzz, r23.zwzz + mad r20.zw, -r13.wwww, r9.wwww, l(0.000000, 0.000000, 1.000000, 1.010000) + add r14.x, r19.y, l(-0.100000) + ge r14.x, r14.x, r20.z + and r14.x, r14.x, l(0x3f800000) + mul r14.x, r14.x, r19.x + ge r2.w, cb1[r2.w + 12].x, l(0.010000) + and r2.w, r2.w, l(0x3f800000) + mul r2.w, r2.w, r14.x + lt r14.x, l(0.001000), r2.w + add r19.xy, r20.xyxx, r23.xyxx + mul r15.x, cb0[102].x, cb0[196].z + mul r20.y, r15.x, l(0.750000) + dp2 r15.x, r18.xzxx, r18.xzxx + max r15.x, r15.x, l(1.175494351E-38) + rsq r15.x, r15.x + mul r18.xz, r15.xxxx, r18.xxzx + add r18.xz, |r18.xxzx|, l(-0.200000, 0.000000, -0.200000, 0.000000) + mul r21.xw, r18.xxxz, r18.xxxz + mul r18.xz, r18.xxzx, r21.xxwx + max r18.xz, r18.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + dp2 r15.x, r18.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) + div r18.xz, r18.xxzx, r15.xxxx + sample_b_indexable(texture2d)(float,float,float,float) r22.xyz, r15.zwzz, t11.xyzw, s3, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, r15.ywyy, t11.xyzw, s3, cb0[108].x + mul r15.xyz, r18.xxxx, r15.xyzx + mad r15.xyz, r22.xyzx, r18.zzzz, r15.xyzx + movc r18.yw, r14.xxxx, r19.xxxy, r18.yyyw + mad r15.xy, r15.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mov r20.x, l(0) + mad r14.xyzw, r14.zwyw, cb0[196].zzzz, r20.xyxy + sample_b_indexable(texture2d)(float,float,float,float) r14.x, r14.xyxx, t11.wxyz, s3, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r14.y, r14.zwzz, t11.xwyz, s3, cb0[108].x + mul r14.y, r18.x, r14.y + mad r14.x, r14.x, r18.z, r14.y + mad r14.xy, r15.xyxx, r14.xxxx, r18.ywyy + ge r14.z, r19.z, r20.w + and r14.z, r14.z, l(0x3f800000) + max r2.w, r2.w, r14.z + add r14.z, -r15.z, l(1.000000) + mad r9.w, r13.w, r9.w, -r14.z + mul_sat r9.w, r9.w, l(9.999998) + mad r13.w, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r13.w + max r2.w, r2.w, r9.w + mad r14.zw, -r7.zzzy, l(0.000000, 0.000000, 1.000000, 0.000000), r21.yyyz + dp2 r9.w, r14.zwzz, r14.zwzz + lt r13.w, l(0.0000610351562), r9.w + rsq r9.w, r9.w + mul r14.zw, r9.wwww, r14.zzzw + mov r14.zw, -r14.zzzw + movc r15.z, r13.w, r14.z, l(-1.000000) + and r15.y, r13.w, r14.w + min r9.w, r3.z, l(0.050000) + add r13.w, -r3.z, r9.w + mad r13.w, r2.w, r13.w, r3.z + mad r12.x, -r12.y, r12.x, l(1.000000) + mul r12.x, r10.w, r12.x + mad r5.w, -r5.w, r12.z, l(1.000000) + mul r5.w, r5.w, r12.x + mad r5.w, r5.w, l(-0.500000), l(1.000000) + mov r15.x, l(0) + mad r3.xyw, -r3.xyxw, r6.wwww, r15.zxzy + mad r3.xyw, r14.xxxx, r3.xyxw, r7.xyxz + mul r14.xzw, r7.zzxy, r15.xxyz + mad r14.xzw, r7.yyzx, r15.yyzx, -r14.xxzw + add r14.xzw, -r3.xxyw, r14.xxzw + mad r3.xyw, r14.yyyy, r14.xzxw, r3.xyxw + dp3 r6.w, r3.xywx, r3.xywx + rsq r6.w, r6.w + mad r3.xyw, r3.xyxw, r6.wwww, -r7.xyxz + mad r3.xyw, r2.wwww, r3.xyxw, r7.xyxz + dp3 r6.w, r3.xywx, r3.xywx + rsq r6.w, r6.w + mul r3.xyw, r3.xyxw, r6.wwww + mul r6.w, r12.z, r10.w + mad r6.w, -r6.w, l(0.200000), r13.w + min r10.w, r13.w, l(0.200000) + max r3.z, r6.w, r10.w + mul r6.xyz, r5.wwww, r6.xyzx + dp3 r6.w, r4.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r6.w, r6.w, l(-0.700000) + mul_sat r6.w, r6.w, l(-2.50000024) + mad r10.w, r6.w, l(-2.000000), l(3.000000) + mul r6.w, r6.w, r6.w + mul r6.w, r6.w, r10.w + mad r6.w, r6.w, l(0.500000), l(1.000000) + mul r10.w, r12.w, r2.w + mad r12.xyz, r4.xyzx, r6.wwww, -r4.xyzx + mad r12.xyz, r10.wwww, r12.xyzx, r4.xyzx + mul r4.xyz, r5.wwww, r12.xyzx +else + mov r3.xyw, r7.xyxz + mov r9.w, l(0.010000) + mov r2.w, l(0) +endif +mul r5.w, r5.y, l(0.040000) +mad r6.w, -r5.x, l(0.960000), l(0.960000) +mul r12.xyz, r4.xyzx, r6.wwww +mad r14.xyz, -r5.yyyy, l(0.040000, 0.040000, 0.040000, 0.000000), r4.xyzx +mad r14.xyz, r5.xxxx, r14.xyzx, r5.wwww +mul r6.xyz, r6.wwww, r6.xyzx +mul r5.y, r3.z, r3.z +max r5.y, r5.y, l(0.00781250000) +max r5.w, v5.z, l(9.999999939E-09) +div r15.xy, v5.xyxx, r5.wwww +max r5.w, v6.z, l(9.999999939E-09) +div r15.zw, v6.xxxy, r5.wwww +add r15.xy, -r15.zwzz, r15.xyxx +mul r18.xy, r15.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r18.xy, |r18.xyxx| +sqrt r18.xy, r18.xyxx +mov r15.z, -r15.y +lt r15.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xxxz +lt r15.xz, r15.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r15.xy, -r15.ywyy, r15.xzxx +itof r15.xy, r15.xyxx +mul r15.xy, r15.xyxx, r18.xyxx +mad o1.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +lt r5.w, l(0.500000), r2.w +movc o1.w, r5.w, l(0.700000), l(0.400000) +add r15.xyz, cb0[197].xyzx, cb3[0].xyzx +mad r15.xyz, cb0[187].wwww, r15.xyzx, -cb3[0].xyzx +mov r15.w, l(0.0000610351562) +dp3 r5.w, r15.xzwx, r15.xzwx +rsq r5.w, r5.w +mul r18.xyz, r5.wwww, r15.xwzx +add r19.xyz, cb0[191].xyzx, -cb3[3].xyzx +mad r19.xyz, cb0[198].yyyy, r19.xyzx, cb3[3].xyzx +add r5.w, l(1.000000), -cb3[3].w +mad r5.w, cb0[198].w, r5.w, cb3[3].w +mul r20.xyz, r5.wwww, r19.xyzx +mov r11.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r21.xy, r11.xyzz, t3.xyzw +add r10.w, r21.x, l(-1.000000) +mad r10.w, cb4[34].x, r10.w, l(1.000000) +add r11.z, -r10.w, l(1.000000) +mad r10.w, cb0[187].z, r11.z, r10.w +dp3 r11.z, r7.xyzx, r15.xyzx +mul r21.xzw, r6.xxyz, cb0[186].zzzz +mul r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000) +dp3 r12.w, r12.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +dp2 r13.w, cb0[6].xzxx, cb0[6].xzxx +rsq r13.w, r13.w +mul r23.xy, r13.wwww, cb0[6].xzxx +dp2 r13.w, r18.xzxx, r23.xyxx +mov_sat r13.w, -r13.w +add r23.xy, l(1.000000, 1.000000, 0.000000, 0.000000), -cb0[198].xyxx +mad r14.w, r11.z, l(0.500000), l(-1.000000) +mad r14.w, -r11.z, r14.w, -r11.z +add r15.w, l(0.750000), -|cb0[6].y| +add_sat r15.w, r15.w, r15.w +mad r16.w, r15.w, l(-2.000000), l(3.000000) +mul r15.w, r15.w, r15.w +mul r15.w, r15.w, r16.w +mul r15.w, r13.w, r15.w +mul r15.w, r23.x, r15.w +add r14.w, r14.w, l(0.500000) +mad r11.z, r15.w, r14.w, r11.z +mad r11.z, cb0[197].w, cb0[198].x, r11.z +max r11.z, r11.z, l(-1.000000) +min r11.z, r11.z, l(1.000000) +add r11.z, r11.z, l(-0.250000) +mul r11.z, r11.z, l(1.33333337) +max r11.z, r11.z, l(0.000000) +mad r14.w, r11.z, l(-2.000000), l(3.000000) +mul r11.z, r11.z, r11.z +mul r11.z, r11.z, r14.w +dp3 r14.w, r7.xyzx, cb0[6].xyzx +add r14.w, r14.w, l(-0.250000) +mul_sat r14.w, r14.w, l(1.33333337) +mad r15.w, r14.w, l(-2.000000), l(3.000000) +mul r14.w, r14.w, r14.w +mul r14.w, r14.w, r15.w +mul r15.w, r5.z, r21.y +min r16.w, r5.z, r21.y +min r17.w, r11.z, r16.w +mul r18.w, r14.w, r15.w +dp3 r19.w, r7.xyzx, cb0[192].xyzx +add_sat r19.w, r19.w, cb0[193].x +mad r19.w, r19.w, cb0[193].y, cb0[193].z +mul r20.w, r17.w, cb0[187].y +add r24.xyz, -r13.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r24.xyz, r20.wwww, r24.xyzx, r13.xyzx +mul r24.xyz, r19.wwww, r24.xyzx +mad r19.w, r8.w, l(0.350000024), l(0.650000) +min r19.w, r19.w, l(1.500000) +max r25.xyz, r8.wwww, l(1.250000, 0.000000, 0.500000, 0.000000) +min r25.xyz, r25.xyzx, l(1.750000, 1.500000, 1.500000, 0.000000) +add r8.w, -r19.w, r25.x +mad r8.w, cb0[187].x, r8.w, r19.w +mul r26.xyz, r8.wwww, r24.xyzx +mul r26.xyz, r26.xyzx, cb0[186].wwww +dp3 r8.w, r20.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r20.xyz, r19.xyzx, r5.wwww, -r8.wwww +mad r20.xyz, r17.wwww, r20.xyzx, r8.wwww +mul r24.xyz, r24.xyzx, r25.yyyy +mad r23.yzw, r19.xxyz, cb0[198].yyyy, r23.yyyy +mad r20.xyz, r24.xyzx, r23.yzwy, r20.xyzx +mad r20.xyz, r20.xyzx, cb0[186].yyyy, -r26.xyzx +mad r20.xyz, r10.wwww, r20.xyzx, r26.xyzx +dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000), -r8.wwww +mad r22.xyz, r22.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r8.wwww +mad_sat r8.w, r14.w, r15.w, r11.z +mad r23.yzw, r6.xxyz, cb0[186].zzzz, -r22.xxyz +mad r22.xyz, r8.wwww, r23.yzwy, r22.xyzx +mad r23.yzw, r4.xxyz, r6.wwww, -r22.xxyz +mad r22.xyz, r17.wwww, r23.yzwy, r22.xyzx +mad r23.yzw, r4.xxyz, r6.wwww, -r12.wwww +mad r23.yzw, r23.yyzw, l(0.000000, 1.200000, 1.200000, 1.200000), r12.wwww +mad r23.yzw, -r6.xxyz, cb0[186].zzzz, r23.yyzw +mad r21.xzw, r18.wwww, r23.yyzw, r21.xxzw +dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +max r11.z, r8.w, l(0.001000) +div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z +mul r8.w, r8.w, r11.z +max r8.w, r8.w, l(0.000000) +min r8.w, r8.w, l(1.500000) +mad r22.xyz, r22.xyzx, r8.wwww, -r21.xzwx +mad r21.xzw, r10.wwww, r22.xxyz, r21.xxzw +mad r8.w, -r14.w, r15.w, r17.w +mad r8.w, r10.w, r8.w, r18.w +add r11.z, l(1.000000), -cb0[186].z +mad r11.z, r8.w, r11.z, cb0[186].z +add r14.w, r15.y, l(-0.500000) +mad r22.y, r10.w, r14.w, l(0.500000) +dp3_sat r24.x, r3.xywx, r2.xyzx +mov r22.xz, cb0[6].xxzx +dp3 r14.w, r22.xyzx, r22.xyzx +max r14.w, r14.w, l(1.175494351E-38) +rsq r14.w, r14.w +mul r22.xyz, r14.wwww, r22.xyzx +add r22.xyz, r22.xyzx, r22.xyzx +mad r15.xyz, r15.xyzx, r10.wwww, r22.xyzx +add r14.w, r10.w, l(2.000000) +mad r15.xyz, r2.xyzx, r14.wwww, r15.xyzx +dp3 r14.w, r15.xyzx, r15.xyzx +rsq r14.w, r14.w +mul r15.xyz, r14.wwww, r15.xyzx +dp3 r14.w, r3.xywx, r15.xyzx +mul r15.x, r5.y, r5.y +mad r15.y, r14.w, r15.x, -r14.w +mad r14.w, r15.y, r14.w, l(1.000000) +mul r14.w, r14.w, r14.w +add r15.y, l(1.000000), -cb5[1].z +mad r15.y, r4.w, cb5[1].z, r15.y +mul r22.xyz, r20.xyzx, r21.xzwx +ne r15.z, r14.w, r15.x +div r14.w, r15.x, r14.w +movc r14.w, r15.z, r14.w, l(1.000000) +mad r15.x, r24.x, l(2.000000), r5.y +add r15.x, r15.x, l(0.000100) +div r15.x, l(0.500000), r15.x +mad r14.w, r14.w, r15.x, l(-0.0000610351562) +max r14.w, r14.w, l(0.000000) +min r14.w, r14.w, l(20.000000) +mul r15.xzw, r14.wwww, r14.xxyz +mad r8.w, r8.w, l(0.500000), l(0.500000) +mul r8.w, r11.z, r8.w +mul r20.xyz, r8.wwww, r20.xyzx +mul r15.xzw, r15.xxzw, r20.xxyz +mul r15.xzw, r15.xxzw, cb0[199].wwww +mad r15.xzw, r22.xxyz, r15.yyyy, r15.xxzw +dp3 r8.w, r15.xzwx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r14.w, r8.w, l(-0.500000) +max r14.w, r14.w, l(0.000000) +min r14.w, r14.w, l(0.500000) +mov r20.y, l(0) +mov r20.xz, cb0[195].yyxy +mul r22.xyz, r20.xyzx, cb0[6].zxyz +mad r20.xyz, cb0[6].yzxy, r20.yzxy, -r22.xyzx +dp3 r17.w, r20.xyzx, r20.xyzx +rsq r17.w, r17.w +mul r20.xyz, r17.wwww, r20.xyzx +dp3 r17.w, r2.xyzx, r7.xyzx +add r22.xy, -|r17.wwww|, l(1.000000, 0.399999976, 0.000000, 0.000000) +dp3 r18.x, r18.xyzx, r7.xyzx +add r18.y, -r10.w, l(1.000000) +add r9.w, -r3.z, r9.w +mad r2.w, r2.w, r9.w, r3.z +mul r26.y, r2.w, r2.w +mul r27.x, r24.x, r24.x +mul r27.z, r24.x, r27.x +mul r9.w, r26.y, r26.y +mul r26.z, r26.y, r9.w +mov r24.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r25.x, l(3.327070, 1.000000, 0.000000, 0.000000), r24.xyxx +dp2 r25.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r24.xzxx +mov r26.x, l(1.000000) +dp2 r9.w, r25.xyxx, r26.xyxx +mov r27.yw, l(0,9.044010,0,1.000000) +dp3 r28.x, l(3.596850, -1.367720, 1.000000, 0.000000), r27.xzwx +dp3 r28.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r27.xyzx +mov r29.x, l(5.565890) +mov r29.yz, r27.xxzx +dp3 r28.z, l(1.000000, 19.788601, -20.212299, 0.000000), r29.xyzx +dp3 r18.z, r28.xyzx, r26.xyzx +div r9.w, r9.w, r18.z +dp2 r25.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r24.xwxx +mov r27.x, l(1.296780) +mov r27.y, r24.x +dp2 r25.y, l(1.000000, -0.755907, 0.000000, 0.000000), r27.xyxx +dp2 r18.z, r25.xyxx, r26.xyxx +dp3 r28.x, l(2.923380, 59.418800, 1.000000, 0.000000), r27.yzwy +mov r27.xw, l(20.322500,0,0,121.563004) +dp3 r28.y, l(1.000000, -27.030199, 222.591995, 0.000000), r27.xyzx +dp3 r28.z, l(626.130005, 316.627014, 1.000000, 0.000000), r27.yzwy +dp3 r18.w, r28.xyzx, r26.xyzx +div r18.z, r18.z, r18.w +mad r23.yzw, r14.xxyz, r9.wwww, r18.zzzz +add r9.w, r9.w, r18.z +mad r14.w, r14.w, r14.w, l(1.000000) +add r15.xzw, -r8.wwww, r15.xxzw +mad r15.xzw, r14.wwww, r15.xxzw, r8.wwww +mad r18.zw, cb0[195].wwww, l(0.000000, 0.000000, -0.600000, -0.399999976), l(0.000000, 0.000000, 0.800000, 0.900000) +add r8.w, -r18.z, r18.w +add r14.w, -r18.z, r22.x +div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w +mul_sat r8.w, r8.w, r14.w +mad r14.w, r8.w, l(-2.000000), l(3.000000) +mul r8.w, r8.w, r8.w +mul r8.w, r8.w, r14.w +mul r24.yzw, r8.wwww, cb0[194].xxyz +mul r24.yzw, r24.yyzw, cb0[194].wwww +dp3 r8.w, r9.xyzx, r20.xyzx +add_sat r8.w, r8.w, l(1.000000) +min r5.z, r5.z, r8.w +min r5.z, r21.y, r5.z +mul r24.yzw, r5.zzzz, r24.yyzw +mad r25.xyw, r4.xyxz, r6.wwww, l(-0.250000, -0.250000, 0.000000, -0.250000) +mad r25.xyw, cb0[195].zzzz, r25.xyxw, l(0.250000, 0.250000, 0.000000, 0.250000) +dp3_sat r5.z, r20.xyzx, r7.xyzx +mul r20.xyz, r5.zzzz, r25.xywx +max r5.z, r16.y, r16.x +max r5.z, r16.z, r5.z +mul r5.z, r5.z, l(0.500000) +max r5.z, r5.z, l(1.000000) +div r5.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z +mul r16.xyz, r5.zzzz, r16.xyzx +mad r19.xyz, r19.xyzx, r5.wwww, -r16.xyzx +mad r16.xyz, r10.wwww, r19.xyzx, r16.xyzx +dp3 r5.z, r17.xyzx, r7.xyzx +mul r5.w, r7.w, r5.z +mad r8.w, r18.x, l(0.500000), l(-1.000000) +mad r8.w, -r18.x, r8.w, l(0.500000) +mad r5.z, -r5.z, r7.w, r8.w +mad_sat r5.z, r10.w, r5.z, r5.w +mul r16.xyz, r5.zzzz, r16.xyzx +mad r5.z, r13.w, r10.w, r18.y +mul r5.z, r23.x, r5.z +mul r16.xyz, r5.zzzz, r16.xyzx +mul_sat r5.z, r22.y, l(5.00000048) +mad r5.w, r5.z, l(-2.000000), l(3.000000) +mul r5.z, r5.z, r5.z +mul r5.z, r5.z, r5.w +mul r16.xyz, r5.zzzz, r16.xyzx +mul r16.xyz, r16.wwww, r16.xyzx +add r5.z, r12.w, l(-0.100000) +mul_sat r5.z, r5.z, l(-16.666666) +mad r5.w, r5.z, l(-2.000000), l(3.000000) +mul r5.z, r5.z, r5.z +mul r5.z, r5.z, r5.w +mad r5.z, r5.z, r10.w, r18.y +mul r16.xyz, r5.zzzz, r16.xyzx +max r17.xyz, r12.xyzx, l(0.150000, 0.150000, 0.150000, 0.000000) +mul r16.xyz, r16.xyzx, r17.xyzx +mad r16.xyz, r24.yzwy, r20.xyzx, r16.xyzx +add r15.xzw, r15.xxzw, r16.xxyz +utof r5.zw, r11.xxxy +mul r16.xy, r5.zwzz, l(0.031250, 0.031250, 0.000000, 0.000000) +round_ni r16.xy, r16.xyxx +mad r7.w, r16.y, cb2[1].y, r16.x +mul r7.w, r7.w, l(8.000000) +ftoi r7.w, r7.w +mad r8.w, -cb0[85].y, cb2[2].w, v0.w +round_ni r8.w, r8.w +add r10.w, l(-1.000000), cb2[1].w +max r12.w, r8.w, l(0.000000) +min r10.w, r10.w, r12.w +mul r12.w, r10.w, l(8.000000) +ftoi r12.w, r12.w +mul r8.xyz, r8.xyzx, cb5[6].xyzx +mul r8.xyz, r8.xyzx, cb5[1].wwww +mad r8.xyz, r8.xyzx, r15.yyyy, r15.xzwx +dp3 r13.w, -r2.xyzx, r3.xywx +add r13.w, r13.w, r13.w +mad r15.xzw, r3.xxyw, -r13.wwww, -r2.xxyz +max r2.w, r2.w, l(0.001000) +log r2.w, r2.w +mad r2.w, r2.w, l(1.200000), l(5.000000) +sample_l_indexable(texturecube)(float,float,float,float) r15.xzw, r15.xzwx, t16.xwyz, s0, r2.w +add r2.w, -r9.w, l(1.000000) +div r2.w, r2.w, r9.w +mul r16.xyz, r2.wwww, r14.xyzx +mad r16.xyz, r16.xyzx, r23.yzwy, r23.yzwy +mul r15.xzw, r15.xxzw, r16.xxyz +mul r2.w, r25.z, cb0[186].w +mul r2.w, r11.z, r2.w +mul r15.xzw, r2.wwww, r15.xxzw +mad r8.xyz, r15.xzwx, r13.xyzx, r8.xyzx +ge r2.w, r10.w, r8.w +iadd r8.w, r12.w, cb0[110].y +mad r9.w, r18.y, l(-0.250000), l(0.750000) +mad r4.xyz, r4.xyzx, r6.wwww, l(-0.500000, -0.500000, -0.500000, 0.000000) +add r6.w, -r5.y, l(0.010000) +ge r5.x, r5.x, l(0.500000) +and r5.x, r5.x, l(0x3f800000) +mov r13.w, l(1.000000) +mov r15.xzw, r8.xxyz +mov r10.w, l(0) +loop + ilt r11.z, l(7), r10.w + breakc_nz r11.z + iadd r11.z, r7.w, r10.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.z, r11.z, l(0), t0.xxxx + iadd r12.w, r8.w, r10.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx + and r11.z, r11.z, r12.w + and r11.z, r2.w, r11.z + ishl r12.w, r10.w, l(5) + mov r16.xyz, r15.xzwx + mov r14.w, r11.z + loop + breakc_z r14.w + firstbit_lo r16.w, r14.w + ishl r17.x, l(1), r16.w + xor r17.x, r14.w, r17.x + iadd r16.w, r12.w, r16.w + bfi r18.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 5, 6, 7) + ftou r17.y, cb3[r18.y + 6].w + ieq r17.y, r17.y, l(1) + if_nz r17.y + add r13.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx + and r19.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r18.y + 6].xzyx + and r20.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r18.z + 6].yxzy + ushr r22.yzw, cb3[r18.y + 6].xxzy, l(0, 16, 16, 16) + ushr r23.xyz, cb3[r18.z + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r19.xyz, r19.xyzx + f16tof32 r20.xyz, r20.xyzx + f16tof32 r25.xyz, r22.yzwy + f16tof32 r23.xyw, r23.yxyz + mov r26.xz, r19.xxzx + mov r26.yw, r25.xxxz + dp4 r17.y, r13.xyzw, r26.xyzw + mov r25.x, r19.y + mov r25.z, r20.y + mov r25.w, r23.x + dp4 r17.z, r13.xyzw, r25.xyzw + mov r23.xz, r20.xxzx + dp4 r13.x, r13.xyzw, r23.xyzw + max r13.y, |r17.z|, |r17.y| + max r13.x, |r13.x|, r13.y + mad r13.y, cb3[r18.w + 6].x, l(0.500000), l(0.500000) + add r13.x, -r13.y, r13.x + mad r13.y, -cb3[r18.w + 6].x, l(0.500000), l(0.500000) + div_sat r13.x, r13.x, r13.y + add r13.x, -r13.x, l(1.000000) + mul r13.x, r13.x, r13.x + else + mov r13.x, l(1.000000) + endif + lt r13.y, r13.x, l(0.001000) + if_nz r13.y + mov r14.w, r17.x + continue + endif + ishl r13.y, r16.w, l(3) + lt r13.z, cb3[r13.y + 6].w, l(1.500000) + if_nz r13.z + bfi r13.z, l(29), l(3), r16.w, l(3) + ieq r17.y, l(16), cb3[r13.z + 6].w + add r17.z, cb0[198].z, cb3[r13.z + 6].z + lt r17.z, r17.z, l(0.500000) + or r17.y, r17.z, r17.y + if_z r17.y + bfi r17.yz, l(0, 29, 29, 0), l(0, 3, 3, 0), r16.wwww, l(0, 2, 4, 0) + ftou r16.w, cb3[r13.y + 6].w + and r16.w, r16.w, l(1) + ieq r18.y, r16.w, l(0) + not r18.y, r18.y + lt r19.x, l(0.000000), cb3[r17.y + 6].z + and r18.y, r18.y, r19.x + ieq r19.x, l(4), cb3[r13.z + 6].w + movc r19.y, r16.w, l(0), l(1.000000) + mad r19.z, cb3[r17.y + 6].y, l(0.500000), l(0.500000) + add r20.z, r19.z, -|cb3[r17.y + 6].x| + add r20.x, -r20.z, cb3[r17.y + 6].y + add r19.z, -|r20.z|, l(1.000000) + add r19.z, -|r20.x|, r19.z + max r19.z, r19.z, l(0.000488281250) + ge r19.w, cb3[r17.y + 6].x, l(0.000000) + movc r20.y, r19.w, r19.z, -r19.z + dp3 r19.z, r20.xyzx, r20.xyzx + rsq r19.z, r19.z + mul r20.xyz, r19.zzzz, r20.xyzx + add r19.z, cb3[r17.z + 6].y, cb3[r17.z + 6].y + max r19.z, r19.z, l(0.100000) + and r19.w, r19.x, l(0x3f800000) + add r19.z, r19.z, -cb3[r18.z + 6].w + mad r18.z, r19.w, r19.z, cb3[r18.z + 6].w + add r22.yzw, -v2.xxyz, cb3[r18.x + 6].xxyz + dp3 r19.z, r22.zwyz, -r20.xyzx + lt r19.w, l(0.500000), cb3[r17.z + 6].z + and r19.w, r19.w, r19.x + and r19.w, r19.w, l(0x3f800000) + mul r19.w, r19.y, r19.w + mad r23.xyz, -r20.zxyz, r19.zzzz, -r22.yzwy + mad r22.yzw, r19.wwww, r23.xxyz, r22.yyzw + dp3 r19.z, r22.yzwy, r22.yzwy + rsq r19.w, r19.z + mul r23.xyz, r19.wwww, r22.yzwy + if_nz r18.y + mul r24.yzw, r20.zzxy, cb3[r17.y + 6].zzzz + mad r25.xyz, -r24.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), r22.yzwy + mad r24.yzw, r24.yyzw, l(0.000000, 0.500000, 0.500000, 0.500000), r22.yyzw + dp3 r19.w, r25.xyzx, r25.xyzx + sqrt r19.w, r19.w + dp3 r20.w, r24.yzwy, r24.yzwy + sqrt r20.w, r20.w + mul r26.xyz, r20.xyzx, r23.xyzx + mad r26.xyz, r20.zxyz, r23.yzxy, -r26.xyzx + mul r27.xyz, r20.xyzx, r26.xyzx + mad r26.xyz, r26.zxyz, r20.yzxy, -r27.xyzx + dp3 r21.y, r26.xyzx, r26.xyzx + rsq r21.y, r21.y + mul r23.xyz, r21.yyyy, r26.xyzx + dp3 r21.y, r25.xyzx, r24.yzwy + mad r21.y, r19.w, r20.w, r21.y + mad r21.y, r21.y, l(0.500000), l(1.000000) + div r21.y, l(1.000000, 1.000000, 1.000000, 1.000000), r21.y + dp3 r23.w, r23.xyzx, r25.xyzx + div r19.w, r23.w, r19.w + dp3 r23.w, r23.xyzx, r24.yzwy + div r20.w, r23.w, r20.w + add r19.w, r19.w, r20.w + mul_sat r19.w, r19.w, l(0.500000) + mul r19.w, r19.w, r21.y + else + mov r19.w, l(1.000000) + endif + lt r20.w, r18.z, l(0.000000) + if_nz r20.w + mul r20.w, cb3[r18.x + 6].w, cb3[r18.x + 6].w + mul r20.w, r19.z, r20.w + mad r20.w, -r20.w, r20.w, l(1.000000) + max r20.w, r20.w, l(0.000000) + add r19.z, r19.z, l(1.000000) + div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z + and r21.y, r18.y, l(0x3f800000) + add r23.w, -r19.z, r19.w + mad r19.z, r21.y, r23.w, r19.z + mul r20.w, r20.w, r20.w + mul r19.z, r19.z, r20.w + else + mul r24.yzw, r22.yyzw, cb3[r18.x + 6].wwww + dp3 r20.w, r24.yzwy, r24.yzwy + min r20.w, r20.w, l(1.000000) + add r20.w, -r20.w, l(1.000000) + log r20.w, r20.w + mul r18.z, r18.z, r20.w + exp r18.z, r18.z + mul r19.z, r18.z, r19.w + endif + dp3 r18.z, r23.yzxy, -r20.xyzx + add r18.z, r18.z, -cb3[r17.y + 6].z + mul_sat r18.z, r18.z, cb3[r17.y + 6].w + mad r18.z, r18.z, r18.z, l(-1.000000) + mad r18.z, r19.y, r18.z, l(1.000000) + mul r18.z, r18.z, r19.z + ftoi r19.y, cb3[r18.w + 6].w + not r18.y, r18.y + ige r19.z, r19.y, l(0) + and r18.y, r18.y, r19.z + if_nz r18.y + if_z r16.w + ishl r18.y, r19.y, l(2) + mul r20.xyz, v2.yyyy, cb6[r18.y + 33].xywx + mad r20.xyz, cb6[r18.y + 32].xywx, v2.xxxx, r20.xyzx + mad r20.xyz, cb6[r18.y + 34].xywx, v2.zzzz, r20.xyzx + add r20.xyz, r20.xyzx, cb6[r18.y + 35].xywx + div_sat r19.zw, r20.xxxy, r20.zzzz + mad r19.zw, r19.zzzw, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy + else + ishl r18.y, r19.y, l(2) + dp3 r20.x, -r22.yzwy, cb6[r18.y + 32].xyzx + dp3 r20.y, -r22.yzwy, cb6[r18.y + 33].xyzx + dp3 r20.z, -r22.yzwy, cb6[r18.y + 34].xyzx + lt r18.y, |r20.x|, |r20.y| + and r18.y, r18.y, l(1) + dp2 r20.w, |r20.xyxx|, icb[r18.y + 0].xyxx + lt r20.w, r20.w, |r20.z| + movc r18.y, r20.w, l(2), r18.y + dp3 r20.w, r20.xyzx, icb[r18.y + 0].xyzx + lt r20.w, r20.w, l(0.000000) + bfi r18.y, l(31), l(1), r18.y, r20.w + ushr r20.w, r18.y, l(1) + dp3 r20.w, r20.xyzx, icb[r20.w + 0].xyzx + div r21.y, l(0.000244140625), cb6[r19.y + 0].w + add r21.y, -r21.y, l(0.500000) + utof r22.y, r18.y + ult r22.z, r18.y, l(2) + and r22.z, r22.z, l(2) + dp2 r20.x, r20.xzxx, icb[r22.z + 0].xzxx + mul r20.x, r20.x, icb[r18.y + 4].z + div r20.x, r20.x, |r20.w| + mad r20.x, r20.x, r21.y, r22.y + add r20.x, r20.x, l(0.500000) + mul_sat r25.x, r20.x, l(0.166666672) + iadd r20.x, l(-1), icb[r18.y + 4].y + dp2 r20.x, r20.yzyy, icb[r20.x + 0].xyxx + mul r18.y, r20.x, icb[r18.y + 4].w + div r18.y, r18.y, |r20.w| + mad_sat r25.y, -r18.y, r21.y, l(0.500000) + mad r19.zw, r25.xxxy, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy + endif + sample_l_indexable(texture2d)(float,float,float,float) r18.y, r19.zwzz, t17.yxzw, s0, l(0.000000) + mul r18.z, r18.y, r18.z + endif + mul r13.x, r13.x, r18.z + lt r18.y, l(0.000100), r13.x + if_nz r18.y + if_nz r19.x + add r18.y, l(1.000000), -cb3[r17.z + 6].w + dp3 r18.z, r10.xyzx, r23.xyzx + add_sat r18.z, r18.z, l(0.500000) + mad r19.y, r18.z, l(-2.000000), l(3.000000) + mul r18.z, r18.z, r18.z + mul r18.z, r18.z, r19.y + mad r18.y, r18.z, cb3[r17.z + 6].w, r18.y + mul r18.y, r18.y, cb3[r17.z + 6].x + mul r18.y, r13.x, r18.y + add r19.yzw, -r16.xxyz, cb3[r13.y + 6].xxyz + mad r19.yzw, r18.yyyy, r19.yyzw, r16.xxyz + endif + if_z r19.x + dp3 r18.y, r7.xyzx, r23.xyzx + mov_sat r18.z, r18.y + if_nz cb3[r13.z + 6].w + if_z r16.w + ftoi r16.w, cb3[r13.z + 6].x + else + add r20.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx + lt r22.yzw, |r20.yyzz|, |r20.xxxy| + and r20.w, r22.z, r22.y + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + ushr r21.y, cb3[r17.y + 6].w, l(24) + ubfe r22.yz, l(0, 8, 8, 0), l(0, 16, 8, 0), cb3[r17.y + 6].wwww + movc r20.x, r20.x, r21.y, r22.y + and r17.y, l(255), cb3[r17.y + 6].w + movc r17.y, r20.y, r22.z, r17.y + ubfe r20.y, l(8), l(8), cb3[r13.z + 6].x + and r21.y, l(255), cb3[r13.z + 6].x + movc r20.y, r20.z, r20.y, r21.y + movc r17.y, r22.w, r17.y, r20.y + movc r17.y, r20.w, r20.x, r17.y + ilt r20.x, r17.y, l(80) + movc r16.w, r20.x, r17.y, l(-1) + endif + ige r17.y, r16.w, l(0) + if_nz r17.y + add r20.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx + ishl r17.y, r16.w, l(2) + dp3 r18.x, r20.xyzx, r20.xyzx + max r18.x, r18.x, l(1.175494351E-38) + rsq r18.x, r18.x + mul r20.xyz, r18.xxxx, r20.xyzx + mad r20.xyz, -r20.xyzx, cb4[r16.w + 288].xxxx, v2.xyzx + mul r18.x, l(5.000000), cb4[r16.w + 288].y + mad r20.xyz, r10.xyzx, r18.xxxx, r20.xyzx + mul r25.xyzw, r20.yyyy, cb4[r17.y + 65].xyzw + mad r25.xyzw, cb4[r17.y + 64].xyzw, r20.xxxx, r25.xyzw + mad r20.xyzw, cb4[r17.y + 66].xyzw, r20.zzzz, r25.xyzw + add r20.xyzw, r20.xyzw, cb4[r17.y + 67].xyzw + div r20.xyz, r20.xyzx, r20.wwww + ge r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xxyz + ge r24.yzw, r20.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000) + add r25.xy, -cb4[r16.w + 344].xyxx, cb4[r16.w + 344].zwzz + mad r20.xy, r20.xyxx, r25.xyxx, cb4[r16.w + 344].xyxx + mad r25.xy, r20.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r25.xy, r25.xyxx + mad r20.xy, r20.xyxx, cb4[400].zwzz, -r25.xyxx + add r26.xyzw, r20.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r25.zw, -r20.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r26.xz, r20.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r20.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r20.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r20.xyxx + mul r30.xy, r20.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r20.xy, -r26.xzxx, r26.xzxx, r25.zwzz + add r20.xy, r20.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r31.xy, r20.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r20.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r30.z, r31.x + mov r30.w, r20.x + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r20.y + mov r28.z, r29.y + mov r28.w, r27.z + add r20.xyw, r28.zyzw, r31.zyzw + div r27.xyz, r29.xzwx, r26.zwyz + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyz, r27.yxzy, cb4[400].xxxx + div r28.xyz, r28.zywz, r20.xywx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb4[400].yyyy + mov r27.w, r28.x + mad r29.xyzw, r25.xyxy, cb4[400].xyxy, r27.ywxw + mad r25.zw, r25.xxxy, cb4[400].xxxy, r27.zzzw + mov r28.w, r27.y + mov r27.yw, r28.yyyz + mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r27.xyzy + mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz + mad r27.xyzw, r25.xyxy, cb4[400].xyxy, r27.xwzw + mul r31.xyzw, r20.xxxy, r26.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r29.xyxx, t2.xxxx, s2, r20.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r29.zwzz, t2.xxxx, s2, r20.z + mul r18.x, r18.x, r31.y + mad r17.y, r31.x, r17.y, r18.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r25.zwzz, t2.xxxx, s2, r20.z + mad r17.y, r31.z, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.xyxx, t2.xxxx, s2, r20.z + mad r17.y, r31.w, r18.x, r17.y + mul r25.xyzw, r20.yyww, r26.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.xyxx, t2.xxxx, s2, r20.z + mad r17.y, r25.x, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.zwzz, t2.xxxx, s2, r20.z + mad r17.y, r25.y, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.zwzz, t2.xxxx, s2, r20.z + mad r17.y, r25.z, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r27.xyxx, t2.xxxx, s2, r20.z + mad r17.y, r25.w, r18.x, r17.y + or r22.yzw, r22.yyzw, r24.yyzw + or r18.x, r22.z, r22.y + or r18.x, r22.w, r18.x + and r20.x, r20.z, l(0x7fffffff) + ult r20.x, l(0x7f800000), r20.x + or r18.x, r18.x, r20.x + mul r20.x, r20.w, r26.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.y, r27.zwzz, t2.xxxx, s2, r20.z + mad r17.y, r20.x, r20.y, r17.y + add r17.y, r17.y, l(-1.000000) + mad r16.w, cb4[r16.w + 288].w, r17.y, l(1.000000) + movc r16.w, r18.x, l(1.000000), r16.w + else + dp3 r17.y, r9.xyzx, r23.xyzx + add_sat r16.w, r17.y, l(1.000000) + endif + else + mov r16.w, l(1.000000) + endif + if_z cb3[r13.z + 6].w + mul r20.xyz, r13.xxxx, cb3[r13.y + 6].xyzx + add r17.y, l(1.000000), -cb3[r17.z + 6].y + max r18.x, r20.y, r20.x + max r18.x, r20.z, r18.x + mul r18.x, r9.w, r18.x + max r18.x, r18.x, l(1.000000) + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x + mad r17.y, r18.x, cb3[r17.z + 6].y, r17.y + mul r20.xyz, r17.yyyy, cb3[r13.y + 6].xyzx + mul r17.y, l(0.250000), cb3[r17.z + 6].x + add_sat r18.x, r18.y, l(0.500000) + mad r20.w, -cb3[r17.z + 6].x, l(0.250000), l(1.000000) + mad r17.y, r18.x, r20.w, r17.y + mul r20.xyz, r17.yyyy, r20.xyzx + mov r22.yzw, r21.xxzw + mov r24.yzw, r21.xxzw + mov r17.y, l(1.000000) + mov r18.x, l(0) + else + ieq r20.w, l(3), cb3[r13.z + 6].w + if_nz r20.w + mad r25.xy, cb3[r17.z + 6].xxxx, l(-0.600000, -0.399999976, 0.000000, 0.000000), l(0.800000, 0.900000, 0.000000, 0.000000) + add r20.w, -r25.x, r25.y + add r21.y, r22.x, -r25.x + div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w + mul_sat r20.w, r20.w, r21.y + mad r21.y, r20.w, l(-2.000000), l(3.000000) + mul r20.w, r20.w, r20.w + mul r20.w, r20.w, r21.y + mul r20.w, r16.w, r20.w + mul r13.x, r13.x, r20.w + mul r25.xyz, r23.zxyz, cb0[6].xyzx + mad r25.xyz, cb0[6].zxyz, r23.xyzx, -r25.xyzx + mul r26.xyz, r25.xyzx, cb0[6].zxyz + mad r25.xyz, cb0[6].yzxy, r25.yzxy, -r26.xyzx + dp3 r20.w, r25.xyzx, r25.xyzx + rsq r20.w, r20.w + mul r25.xyz, r20.wwww, r25.xyzx + dp3_sat r18.z, r7.xyzx, -r25.xyzx + mad r22.yzw, cb3[r17.z + 6].yyyy, r4.xxyz, l(0.000000, 0.500000, 0.500000, 0.500000) + mov r24.yzw, l(0,0,0,0) + mov r17.y, l(1.000000) + mov r18.x, l(0) + else + ieq r20.w, l(1), cb3[r13.z + 6].w + if_nz r20.w + add r18.y, r18.y, cb3[r17.z + 6].x + max_sat r18.y, r18.y, l(-1.000000) + mul r18.z, r16.w, r18.y + mul r24.yzw, r6.xxyz, cb3[r17.z + 6].yyyy + mov r17.y, l(1.000000) + mov r18.x, l(0) + else + ieq r16.w, l(2), cb3[r13.z + 6].w + if_nz r16.w + add r18.y, l(0.050000), cb3[r17.z + 6].x + add r18.y, r3.z, -r18.y + mul_sat r18.y, r18.y, l(-10.000000) + mad r21.y, r18.y, l(-2.000000), l(3.000000) + mul r18.y, r18.y, r18.y + mul r18.y, r18.y, r21.y + add r21.y, l(1.000000), -cb3[r17.z + 6].z + mad r21.y, r5.x, cb3[r17.z + 6].z, r21.y + mul r17.y, r18.y, r21.y + else + mov r17.y, l(1.000000) + endif + and r18.x, r16.w, cb3[r17.z + 6].y + mov r24.yzw, l(0,0,0,0) + endif + and r22.yzw, r12.xxyz, r20.wwww + endif + mov r20.xyz, cb3[r13.y + 6].xyzx + endif + ine r13.y, l(3), cb3[r13.z + 6].w + if_nz r13.y + mad r13.y, r18.x, r6.w, r5.y + mad r23.xyz, r0.xyzx, r1.wwww, r23.xyzx + dp3 r13.z, r23.xyzx, r23.xyzx + rsq r13.z, r13.z + mul r23.xyz, r13.zzzz, r23.xyzx + dp3 r13.z, r3.xywx, r23.xyzx + mul r16.w, r13.y, r13.y + mad r17.z, r13.z, r16.w, -r13.z + mad r13.z, r17.z, r13.z, l(1.000000) + mul r13.z, r13.z, r13.z + ne r17.z, r13.z, r16.w + div r13.z, r16.w, r13.z + movc r13.z, r17.z, r13.z, l(1.000000) + mad r13.y, r24.x, l(2.000000), r13.y + add r13.y, r13.y, l(0.000100) + div r13.y, l(0.500000), r13.y + mad r13.y, r13.z, r13.y, l(-0.0000610351562) + max r13.y, r13.y, l(0.000000) + min r13.y, r13.y, l(20.000000) + mul r23.xyz, r13.yyyy, r14.xyzx + mul r23.xyz, r17.yyyy, r23.xyzx + mul r18.xyw, r23.xyxz, cb3[r18.w + 6].zzzz + else + mov r18.xyw, l(0,0,0,0) + endif + mul r13.xyz, r13.xxxx, r20.xyzx + add r20.xyz, r22.yzwy, -r24.yzwy + mad r20.xyz, r18.zzzz, r20.xyzx, r24.yzwy + mul r20.xyz, r13.xyzx, r20.xyzx + mul r13.xyz, r18.xywx, r13.xyzx + mul r13.xyz, r18.zzzz, r13.xyzx + mad r13.xyz, r20.xyzx, r15.yyyy, r13.xyzx + add r16.xyz, r13.xyzx, r16.xyzx + endif + else + mov r19.x, l(0) + endif + movc r16.xyz, r19.xxxx, r19.yzwy, r16.xyzx + endif + endif + mov r14.w, r17.x + endloop + mov r15.xzw, r16.xxyz + iadd r10.w, r10.w, l(1) +endloop +lt r0.x, l(0.500000), cb5[3].x +if_nz r0.x + dp3 r0.x, r15.xzwx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r3.xyz, -r0.xxxx, r15.xzwx + mad r0.xyz, cb5[3].zzzz, r3.xyzx, r0.xxxx + add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) + mad r0.xyz, cb5[3].wwww, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mul r3.xyz, r0.xyzx, cb5[3].yyyy + mad r0.xyz, -r0.xyzx, cb5[3].yyyy, cb5[7].xyzx + mad r0.xyz, cb5[7].wwww, r0.xyzx, r3.xyzx + add r2.w, l(1.000000), -cb5[4].x + mov_sat r17.w, r17.w + add r3.x, -r17.w, l(1.000000) + add r3.y, -r2.w, l(1.000000) + add r2.w, -r2.w, r3.x + div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y + mul_sat r2.w, r2.w, r3.x + mad r3.x, r2.w, l(-2.000000), l(3.000000) + mul r2.w, r2.w, r2.w + mul r2.w, r2.w, r3.x + mul r3.xyz, r2.wwww, cb5[8].xyzx + mad r15.xzw, r3.xxyz, cb5[4].yyyy, r0.xxyz +endif +div r0.xyz, r15.xzwx, cb0[109].xxxx +eq r2.w, l(1.000000), cb5[2].x +movc o0.w, r2.w, r4.w, l(1.000000) +lt r2.w, cb0[198].w, l(0.500000) +if_nz r2.w + mul r0.w, r0.w, r1.w + mad r1.w, v2.y, cb0[156].w, cb0[157].w + max r1.w, r1.w, l(0.010000) + mad r2.w, r0.w, cb0[154].w, -cb0[153].w + max r2.w, r2.w, l(0.000000) + mul r3.x, r1.w, l(-1.442695) + exp r3.x, r3.x + add r3.x, -r3.x, l(1.000000) + div r1.w, r3.x, r1.w + mad r3.x, v2.y, cb0[156].w, cb0[158].w + mul r3.x, r3.x, l(1.442695) + exp r3.x, r3.x + mul r1.w, r1.w, r3.x + mul r1.w, r1.w, -r2.w + mul r3.xyz, r1.wwww, cb0[155].xyzx + mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) + exp r3.xyz, r3.xyzx + dp3 r1.w, -r2.xyzx, cb0[154].xyzx + mad r2.w, cb0[155].w, cb0[155].w, l(1.000000) + dp2 r3.w, r1.wwww, cb0[155].wwww + add r2.w, r2.w, -r3.w + lt r3.w, l(0.000000), cb0[163].z + if_nz r3.w + and r11.w, l(7), cb0[108].w + imad r4.xyz, r11.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r3.w, r4.y, r4.z, r4.x + imad r4.x, r4.z, r3.w, r4.y + imad r4.y, r3.w, r4.x, r4.z + imad r5.x, r4.x, r4.y, r3.w + dp3 r1.x, -r2.xyzx, -r1.xyzx + add r1.y, v2.y, -cb0[44].y + lt r1.z, l(5.960464478E-08), r1.x + div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x + and r1.x, r1.x, r1.z + mul r1.x, r1.x, cb0[163].w + div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w + mul r2.x, r1.z, r1.x + mad r2.y, r2.x, r1.y, cb0[44].y + mad r1.y, -r2.x, r1.y, r1.y + mul r2.x, r1.y, cb0[159].z + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r2.z, r2.y, -cb0[159].x + mul r2.z, r2.z, cb0[159].z + max r2.xz, r2.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + exp r2.z, -r2.z + mul r2.z, r2.z, cb0[159].y + lt r3.w, l(5.960464478E-08), |r2.x| + exp r4.z, -r2.x + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r2.x + mad r2.x, -r2.x, l(0.240226507), l(0.693147182) + movc r2.x, r3.w, r4.z, r2.x + add r2.y, r2.y, -cb0[162].z + mul r2.y, r2.y, cb0[162].x + max r2.y, r2.y, l(-127.000000) + exp r2.y, -r2.y + mul r2.y, r2.y, cb0[162].y + lt r3.w, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r3.w, r4.z, r1.y + mul r1.y, r1.y, r2.y + mad r1.y, r2.z, r2.x, r1.y + mad r1.x, -r1.x, r1.z, l(1.000000) + mul r1.x, r0.w, r1.x + mul r1.x, r1.x, r1.y + exp r1.x, -r1.x + min r1.x, r1.x, l(1.000000) + max r1.x, r1.x, cb0[161].w + mad_sat r1.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx + add r1.x, r1.y, r1.x + add r1.x, r1.z, r1.x + min r1.x, r1.x, l(1.000000) + imad r5.y, r4.y, r5.x, r4.x + ushr r1.yz, r5.xxyx, l(0, 16, 16, 0) + utof r1.yz, r1.yyzy + mad r1.yz, r1.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + mad r1.yz, r1.yyzy, cb0[167].wwww, r5.zzwz + mul r2.xy, r1.yzyy, cb0[165].xyxx + mad r1.y, v0.w, cb0[164].x, cb0[164].y + log r1.y, r1.y + mul r1.y, r1.y, cb0[164].z + div r2.z, r1.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t18.xyzw, s0, l(0.000000) + add r1.y, v0.w, -cb0[166].z + mul_sat r1.y, r1.y, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r1.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.xyz, r1.yyyy, cb0[161].xyzx + mad r2.xyz, r2.xyzx, r4.wwww, r4.xyzx + mul r1.x, r1.x, r4.w + else + add r1.y, v2.y, -cb0[44].y + mul r1.z, r1.y, cb0[159].z + mul r1.y, r1.y, cb0[162].x + max r1.yz, r1.yyzy, l(0.000000, -127.000000, -127.000000, 0.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r1.z| + exp r4.y, -r1.z + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r1.z + mad r1.z, -r1.z, l(0.240226507), l(0.693147182) + movc r1.z, r4.x, r4.y, r1.z + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.y, r4.z, r1.y + mul r1.y, r1.y, r4.x + mad r1.y, r3.w, r1.z, r1.y + mul r1.y, r0.w, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.w, r1.y, r4.x + add r0.w, r4.y, r0.w + min r1.x, r0.w, l(1.000000) + add r0.w, -r1.x, l(1.000000) + mul r2.xyz, r0.wwww, cb0[161].xyzx + endif + mul r4.xyz, r1.xxxx, r3.xyzx + mad r0.w, r1.w, r1.w, l(1.000000) + mul r0.w, r0.w, l(0.0596831031) + mad r1.yzw, cb0[156].xxyz, r0.wwww, cb0[158].xxyz + mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) + mul r3.w, r2.w, l(12.566371) + sqrt r2.w, r2.w + mul r2.w, r2.w, r3.w + max r2.w, r2.w, l(0.001000) + div r0.w, r0.w, r2.w + mad_sat r1.yzw, cb0[157].xxyz, r0.wwww, r1.yyzw + mul r1.yzw, r1.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) + add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r1.yzw, r1.yyzw, r3.xxyz + mad r1.xyz, r1.yzwy, r1.xxxx, r2.xyzx + +// === Simplified Fog Modification (Anti-Banding) === +// Check if fog modification is enabled via cb13[12].y +lt r15.x, l(0.500000), cb13[12].y +if_nz r15.x + // r0.xyz = scene color, r4.xyz = transmittance, r1.xyz = fog inscatter + // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density + add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + + // Reduce fog inscatter intensity + mul r16.xyz, r1.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + + // Modified fog blend: scene * boostedTrans + reducedInscatter + mad o0.xyz, r0.xyzx, r15.xyzx, r16.xyzx +else + // Original fog blend + mad o0.xyz, r0.xyzx, r4.xyzx, r1.xyzx +endif +// === End Fog Modification === +else + mov o0.xyz, r0.xyzx +endif +mov o1.z, l(1.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..72b3d48949 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0_original_backup.asm @@ -0,0 +1,1847 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 16:59:16 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy w +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 xyz 2 NONE float xyz +// TEXCOORD 2 xyz 3 NONE float xyz +// TEXCOORD 3 xyzw 4 NONE float xyzw +// TEXCOORD 4 xyz 5 NONE float xyz +// TEXCOORD 5 xyz 6 NONE float xyz +// TEXCOORD 6 xyz 7 NONE float xyz +// TEXCOORD 7 xyz 8 NONE float xyz +// TEXCOORD 8 x 9 NONE uint x +// SV_IsFrontFace 0 x 10 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[216], immediateIndexed +dcl_constantbuffer CB1[4093], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[9], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_comparison +dcl_sampler s3, mode_default +dcl_sampler s4, mode_default +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_resource_structured t0, 4 +dcl_resource_structured t1, 16 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture3d (float,float,float,float) t4 +dcl_resource_texture3d (float,float,float,float) t5 +dcl_resource_texture3d (float,float,float,float) t6 +dcl_resource_texture3d (float,float,float,float) t7 +dcl_resource_texture3d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texturecube (float,float,float,float) t16 +dcl_resource_texture2d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_input_ps_siv linear noperspective v0.xyw, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyz +dcl_input_ps linear v4.xyzw +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps linear v7.xyz +dcl_input_ps linear v8.xyz +dcl_input_ps constant v9.x +dcl_input_ps_sgv constant v10.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 32 +add r0.xyz, -v2.xyzx, cb0[44].xyzx +mov r1.x, cb0[0].z +mov r1.y, cb0[1].z +mov r1.z, cb0[2].z +add r2.xyz, -r0.xyzx, r1.xyzx +mad r0.xyz, cb0[86].wwww, r2.xyzx, r0.xyzx +dp3 r0.w, r0.xyzx, r0.xyzx +max r1.w, r0.w, l(9.999999939E-09) +rsq r1.w, r1.w +mul r2.xyz, r0.xyzx, r1.wwww +ishl r2.w, v9.x, l(4) +and r3.x, l(16), cb1[r2.w + 4].w +if_nz r3.x + iadd r3.x, l(2), cb1[r2.w + 5].x + ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r3.x, l(12), t1.xxxx + ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.y, cb1[r2.w + 5].x, l(12), t1.xxxx +else + mov r3.xy, cb1[r2.w + 3].zxzz +endif +sample_b_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t12.xyzw, s3, cb0[108].x +sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t13.xyzw, s4, cb0[108].x +add r3.z, -r5.w, l(1.000000) +mul r4.xyzw, r4.xyzw, cb5[5].xyzw +mul r6.xyz, r4.xyzx, cb5[4].zzzz +dp3 r3.w, r6.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r6.xyz, r4.xyzx, cb5[4].zzzz, -r3.wwww +mad r6.xyz, cb5[4].wwww, r6.xyzx, r3.wwww +sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, v1.xyxx, t14.xywz, s5, cb0[108].x +mul r7.x, r7.x, r7.z +mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r3.w, r7.xyxx, r7.xyxx +min r3.w, r3.w, l(1.000000) +add r3.w, -r3.w, l(1.000000) +sqrt r3.w, r3.w +max r3.w, r3.w, l(1.000000017E-16) +mul r7.xy, r7.xyxx, cb5[0].wwww +sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, v1.xyxx, t15.xyzw, s6, cb0[108].x +add r9.xz, -r3.yyxy, v2.xxzx +mov r9.y, l(0.0000610351562) +dp3 r3.x, r9.xyzx, r9.xyzx +rsq r3.x, r3.x +mul r9.xyz, r3.xxxx, r9.xyzx +mul r10.xyz, v3.zxyz, v4.yzxy +mad r10.xyz, v3.yzxy, v4.zxyz, -r10.xyzx +mul r10.xyz, r10.xyzx, v4.wwww +mul r7.yzw, r7.yyyy, r10.xxyz +mad r7.xyz, r7.xxxx, v4.xyzx, r7.yzwy +mad r3.xyw, r3.wwww, v3.xyxz, r7.xyxz +mad r6.w, cb5[1].y, l(2.000000), l(-1.000000) +movc r6.w, v10.x, l(1.000000), r6.w +dp3 r7.x, r3.xywx, r3.xywx +max r7.x, r7.x, l(1.175494351E-38) +rsq r7.x, r7.x +mul r3.xyw, r3.xyxw, r7.xxxx +mul r7.xyz, r6.wwww, r3.xywx +dp3 r8.w, v3.xyzx, v3.xyzx +rsq r8.w, r8.w +mul r10.xyz, r8.wwww, v3.xyzx +mul r10.xyz, r6.wwww, r10.xyzx +ftou r11.xy, v0.xyxx +add r8.w, l(1.000000), -cb0[111].x +mad r8.w, cb0[198].w, r8.w, cb0[111].x +mul r8.w, r8.w, cb0[109].x +lt r9.w, cb0[187].y, l(0.500000) +if_nz r9.w + mad r12.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx + add r12.xyz, -r12.xyzx, v2.xzyx + max r9.w, |r12.y|, |r12.x| + add r9.w, r9.w, l(-464.000000) + mul_sat r9.w, r9.w, l(0.031250) + add r10.w, |r12.z|, l(-208.000000) + mul_sat r10.w, r10.w, l(0.031250) + max r9.w, r9.w, r10.w + ne r10.w, l(0.000000), cb0[210].w + lt r12.x, r9.w, l(1.000000) + and r10.w, r10.w, r12.x + if_nz r10.w + mad r12.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r12.xyz, -r12.xyzx, v2.xzyx + max r10.w, |r12.y|, |r12.x| + add r10.w, r10.w, l(-29.000000) + mul_sat r10.w, r10.w, l(0.500000) + add r12.x, |r12.z|, l(-13.000000) + mul_sat r12.x, r12.x, l(0.500000) + max r10.w, r10.w, r12.x + lt r12.x, r10.w, l(1.000000) + if_nz r12.x + mad r12.xyz, v2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r13.xyz, r12.xyzx, cb0[211].xyzx + round_ni r13.xyz, r13.xyzx + mad r12.xyz, r12.xyzx, cb0[211].xyzx, -r13.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r13.xyw, r12.xyzx, t4.yzwx, s1, l(0.000000) + add r14.x, -r10.w, l(1.000000) + mul r14.y, l(0.500000), cb0[211].y + mad r14.z, -cb0[211].y, l(0.500000), l(1.000000) + max r12.y, r12.y, r14.y + min r12.y, r14.z, r12.y + mul r12.w, r12.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r12.xwzx, t5.xyzw, s0, l(0.000000) + mad r12.y, r15.w, r14.x, r9.w + add r14.yzw, r12.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.yzw, r14.yzwy, t5.wxyz, s0, l(0.000000) + mad r14.yzw, r14.yyzw, l(0.000000, 4.000000, 4.000000, 4.000000), l(0.000000, -2.000000, -2.000000, -2.000000) + mul r16.xyz, r13.yyyy, r14.yzwy + mov r16.w, r13.y + mul r16.xyzw, r14.xxxx, r16.xyzw + add r12.xzw, r12.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r12.xzw, r12.xzwx, t5.xwyz, s0, l(0.000000) + mad r12.xzw, r12.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r17.xyz, r13.xxxx, r12.xzwx + mov r17.w, r13.x + mul r17.xyzw, r14.xxxx, r17.xyzw + mad r12.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r13.xyz, r13.wwww, r12.xzwx + mul r13.xyzw, r14.xxxx, r13.xyzw + else + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r12.y, r9.w + endif + mad r12.xzw, cb0[6].xxzy, -cb0[212].zzzz, cb0[210].xxzy + add r12.xzw, -r12.xxzw, v2.xxzy + max r12.x, |r12.z|, |r12.x| + add r12.x, r12.x, l(-116.000000) + add r12.z, |r12.w|, l(-52.000000) + mul_sat r12.xz, r12.xxzx, l(0.125000, 0.000000, 0.125000, 0.000000) + max r12.x, r12.z, r12.x + lt r12.z, r12.x, l(1.000000) + if_nz r12.z + mad r14.xyz, v2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r15.xyz, r14.xyzx, cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r15.xyw, r14.xyzx, t6.yzwx, s1, l(0.000000) + add r12.z, -r12.x, l(1.000000) + mul r10.w, r10.w, r12.z + mul r12.z, l(0.500000), cb0[211].y + mad r12.w, -cb0[211].y, l(0.500000), l(1.000000) + max r12.z, r12.z, r14.y + min r12.z, r12.w, r12.z + mul r14.w, r12.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r14.xwzx, t7.xyzw, s0, l(0.000000) + mad r12.y, r18.w, r10.w, r12.y + add r19.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t7.xyzw, s0, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r15.yyyy, r19.xyzx + mov r19.w, r15.y + mad r16.xyzw, r19.xyzw, r10.wwww, r16.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t7.xyzw, s0, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r15.xxxx, r14.xyzx + mov r14.w, r15.x + mad r17.xyzw, r14.xyzw, r10.wwww, r17.xyzw + mad r14.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r15.wwww, r14.xyzx + mad r13.xyzw, r15.xyzw, r10.wwww, r13.xyzw + endif + lt r10.w, l(0.000000), r12.x + if_nz r10.w + mad r14.xyz, v2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r15.xyz, r14.xyzx, cb0[211].xyzx + mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx + mad r15.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r14.xyz, r18.xyzx, r14.xyzx + min r14.xyz, r15.xyzx, r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r14.xyzx, t8.yzwx, s1, l(0.000000) + add r10.w, -r9.w, l(1.000000) + mul r10.w, r10.w, r12.x + max r12.x, r18.y, r14.y + min r12.x, r15.y, r12.x + mul r14.w, r12.x, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r14.xwzx, t9.xyzw, s0, l(0.000000) + add r12.xzw, r14.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r12.xzw, r12.xzwx, t9.xwyz, s0, l(0.000000) + mad r12.xzw, r12.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r18.xyz, r19.yyyy, r12.xzwx + mov r18.w, r19.y + mad r16.xyzw, r18.xyzw, r10.wwww, r16.xyzw + add r12.xzw, r14.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r12.xzw, r12.xzwx, t9.xwyz, s0, l(0.000000) + mad r12.xzw, r12.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r14.xyz, r19.xxxx, r12.xzwx + mov r14.w, r19.x + mad r17.xyzw, r14.xyzw, r10.wwww, r17.xyzw + mad r12.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) + mul r19.xyz, r19.wwww, r12.xzwx + mad r13.xyzw, r19.xyzw, r10.wwww, r13.xyzw + mad r12.y, r15.w, r10.w, r12.y + endif + mad_sat r10.w, r12.y, l(2.000000), l(-1.000000) + add r12.x, -r9.w, r10.w + add r9.w, r9.w, r10.w + mul r12.y, r9.w, l(0.500000) + else + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r12.xy, l(0,1.000000,0,0) + endif + mul r14.xyzw, r12.yyyx, cb0[213].xyzw + mad r14.y, r14.w, l(0.500000), r14.y + mul r12.zw, r12.yyyx, cb0[213].wwwy + mad r14.w, r12.w, l(0.375000), r12.z + add r13.xyzw, r13.xyzw, r14.xyzw + mul r14.xyzw, r12.yyyx, cb0[214].xyzw + mad r14.y, r14.w, l(0.500000), r14.y + mul r12.zw, r12.yyyx, cb0[214].wwwy + mad r14.w, r12.w, l(0.375000), r12.z + add r14.xyzw, r14.xyzw, r17.xyzw + mul r15.xyzw, r12.yyyx, cb0[215].xyzw + mad r15.y, r15.w, l(0.500000), r15.y + mul r12.xy, r12.yxyy, cb0[215].wyww + mad r15.w, r12.y, l(0.375000), r12.x + add r12.xyzw, r15.xyzw, r16.xyzw + mov r7.w, l(1.000000) + dp4 r15.x, r13.xyzw, r7.xyzw + dp4 r15.y, r14.xyzw, r7.xyzw + dp4 r15.z, r12.xyzw, r7.xyzw + max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r16.xyz, r8.wwww, r15.xyzx + mul r17.xyz, r14.xyzx, l(0.715200, 0.715200, 0.715200, 0.000000) + mad r17.xyz, r13.xyzx, l(0.212600, 0.212600, 0.212600, 0.000000), r17.xyzx + mad r17.xyz, r12.xyzx, l(0.072200, 0.072200, 0.072200, 0.000000), r17.xyzx + dp3 r7.w, r17.xyzx, r17.xyzx + max r7.w, r7.w, l(1.175494351E-38) + rsq r7.w, r7.w + mul r17.xyz, r7.wwww, r17.xyzx + mov r17.y, |r17.y| + mov r17.w, l(1.000000) + dp4 r13.x, r13.xyzw, r17.xyzw + dp4 r13.y, r14.xyzw, r17.xyzw + dp4 r13.z, r12.xyzw, r17.xyzw + max r12.xyz, r13.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + ge r7.w, r16.y, r16.z + and r7.w, r7.w, l(0x3f800000) + mov r13.xy, r16.zyzz + mov r13.zw, l(0,0,-1.000000,0.666666687) + mad r14.xy, r15.yzyy, r8.wwww, -r13.xyxx + mov r14.zw, l(0,0,1.000000,-1.000000) + mad r13.xyzw, r7.wwww, r14.xyzw, r13.xyzw + ge r7.w, r16.x, r13.x + and r7.w, r7.w, l(0x3f800000) + mov r14.xyz, r13.xywx + mov r14.w, r16.x + mov r13.xyw, r14.wywx + add r13.xyzw, -r14.xyzw, r13.xyzw + mad r13.xyzw, r7.wwww, r13.xyzw, r14.xyzw + min r7.w, r13.y, r13.w + add r7.w, -r7.w, r13.x + add r9.w, -r13.y, r13.w + mad r10.w, r7.w, l(6.000000), l(0.000100) + div r9.w, r9.w, r10.w + add r9.w, r9.w, r13.z + frc r9.w, |r9.w| + add r10.w, r13.x, l(0.000100) + div r7.w, r7.w, r10.w + add r14.xyzw, r9.wwww, l(-0.500000, 1.000000, 0.666666687, 0.333333343) + add r9.w, |r14.x|, l(-0.450000) + mul_sat r9.w, r9.w, l(-10.000001) + mad r10.w, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r10.w + mad r9.w, r9.w, l(-0.350000), l(0.700000) + mov_sat r13.x, r13.x + mul r9.w, r9.w, r13.x + min r7.w, r7.w, r9.w + add r9.w, -r7.w, l(2.000000) + div r9.w, l(2.000000), r9.w + frc r13.xyz, r14.yzwy + mad r13.xyz, r13.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) + add_sat r13.xyz, |r13.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) + add r13.xyz, r13.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) + mad r13.xyz, r7.wwww, r13.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r13.xyz, r9.wwww, r13.xyzx + max r7.w, r12.y, r12.x + max r7.w, r12.z, r7.w + mul r8.w, r8.w, r7.w + mov r7.w, l(1.000000) +else + mov r17.xyz, l(0,0,0,0) + mov r16.xyz, l(1.000000,1.000000,1.000000,0) + mov r13.xyz, cb0[188].xyzx + mov r7.w, l(0) +endif +add r9.w, -v2.y, cb1[r2.w + 12].z +add r9.w, r9.w, l(0.200000) +mul_sat r9.w, r9.w, l(2.85714269) +mad r10.w, r9.w, l(-2.000000), l(3.000000) +mul r9.w, r9.w, r9.w +mul r9.w, r9.w, r10.w +mul r9.w, r9.w, cb1[r2.w + 12].y +max r9.w, r9.w, cb1[r2.w + 12].w +add r10.w, r9.w, cb1[r2.w + 12].x +lt r10.w, l(0.010000), r10.w +if_nz r10.w + add r10.w, -r5.x, l(1.000000) + mul r12.xyz, r4.xyzx, r10.wwww + dp3 r12.x, r12.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r12.x, r12.x, l(-0.350000) + mul_sat r12.x, r12.x, l(-4.000000) + mad r12.y, r12.x, l(-2.000000), l(3.000000) + mul r12.x, r12.x, r12.x + mul r12.z, r12.x, r12.y + mul r14.xyzw, v8.xyxz, l(1.000000, -1.000000, 1.000000, 1.000000) + movc r14.xyzw, cb1[r2.w + 4].wwww, r14.xyzw, v8.xzxy + mul r15.xyzw, r14.xyzw, cb0[196].zzzz + movc r18.yz, cb1[r2.w + 4].wwww, v7.zzyz, v7.yyzy + mov r18.x, v7.x + add r19.xyz, |r18.xyzx|, l(-0.200000, -0.200000, -0.200000, 0.000000) + mul r20.xyz, r19.xyzx, r19.xyzx + mul r19.xyz, r19.xyzx, r20.xyzx + max r19.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + dp3 r12.w, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + div r19.xyz, r19.xyzx, r12.wwww + sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r15.zyzz, t10.xyzw, s3, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.zwzz, t10.xyzw, s3, cb0[108].x + mul r22.xyzw, r19.zzzz, r22.xyzw + mad r21.xyzw, r21.xyzw, r19.yyyy, r22.xyzw + sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.ywyy, t10.xyzw, s3, cb0[108].x + mad r19.xyzw, r22.xyzw, r19.xxxx, r21.xyzw + add r18.yw, -r19.wwww, l(0.000000, 0.800000, 0.000000, 0.450000) + mul r21.xyz, r7.yyxy, l(0.200000, 0.000000, 1.000000, 0.000000) + mad_sat r12.w, cb1[r2.w + 12].x, r10.w, r21.x + add r12.w, -r18.y, r12.w + mul_sat r12.w, r12.w, l(3.33333325) + mad r13.w, r12.w, l(-2.000000), l(3.000000) + mul r12.w, r12.w, r12.w + mul r12.w, r12.w, r13.w + mul_sat r10.w, r9.w, r10.w + add r10.w, -r18.w, r10.w + mul_sat r10.w, r10.w, l(1.53846145) + mad r13.w, r10.w, l(-2.000000), l(3.000000) + mul r10.w, r10.w, r10.w + mul r10.w, r10.w, r13.w + max r10.w, r10.w, r12.w + add r12.w, r5.x, l(-0.500000) + mul_sat r12.w, r12.w, l(4.000000) + mad r13.w, r12.w, l(-2.000000), l(3.000000) + mul r12.w, r12.w, r12.w + mul r12.w, r12.w, r13.w + add r5.w, -r5.w, l(0.199999988) + mul_sat r5.w, r5.w, l(-5.00000048) + mad r13.w, r5.w, l(-2.000000), l(3.000000) + mul r5.w, r5.w, r5.w + mul r5.w, r5.w, r13.w + mad r13.w, r5.w, r12.z, r12.w + min r13.w, r13.w, l(1.000000) + max r9.w, r9.w, cb1[r2.w + 12].x + mad r18.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mul r19.xyw, r15.yzyw, l(20.000000, 20.000000, 0.000000, 20.000000) + mul r22.xyz, r15.yzwy, l(34.345600, 34.345600, 34.345600, 0.000000) + mul r23.xyz, r20.xyzx, r20.xyzx + mul r23.xyz, r23.xyzx, r23.xyzx + mul r20.xyz, r20.xyzx, r23.xyzx + dp3 r14.x, r20.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + div r20.xyz, r20.xyzx, r14.xxxx + round_ni r23.xyzw, r19.yxyw + mul r24.xyzw, r23.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r24.xyzw, r24.xyzw + add r25.xyzw, r24.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r14.x, r24.xyxx, r25.xyxx + add r21.xw, r14.xxxx, r24.xxxy + mul r14.x, r21.w, r21.x + add r16.w, r21.w, r21.x + frc r14.x, r14.x + frc r26.w, r16.w + add r27.xyzw, r23.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) + mul r27.xyzw, r27.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r27.xyzw, r27.xyzw + add r28.xyzw, r27.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r16.w, r27.xyxx, r28.xyxx + add r21.xw, r16.wwww, r27.xxxy + mul r16.w, r21.w, r21.x + add r17.w, r21.w, r21.x + frc r24.x, r16.w + frc r24.y, r17.w + mad r16.w, r14.x, l(0.399999976), l(0.600000) + mul r17.w, r16.w, l(0.250000) + mad r23.xyzw, r15.zyzw, l(20.000000, 20.000000, 20.000000, 20.000000), -r23.xyzw + mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.xxxy + add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) + mul r23.x, r21.x, l(1.250000) + lt r19.y, r21.w, l(0.000000) + movc r19.y, r19.y, l(1.250000), l(0.750000) + mul r23.y, r19.y, r21.w + mad r14.x, cb0[102].x, l(3.000000), r14.x + frc r14.x, r14.x + add r21.xw, r14.xxxx, l(-0.200000, 0.000000, 0.000000, -0.850000) + mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) + mad r25.xy, r21.xwxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r21.xw, r21.xxxw, r21.xxxw + mul r21.xw, r21.xxxw, r25.xxxy + mul r14.x, r21.w, r21.x + dp2 r19.y, r23.xyxx, r23.xyxx + sqrt r19.y, r19.y + mad r16.w, -r16.w, l(0.250000), r19.y + div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r17.w + mul_sat r16.w, r16.w, r19.y + mad r19.y, r16.w, l(-2.000000), l(3.000000) + mul r16.w, r16.w, r16.w + mul r16.w, r16.w, r19.y + ge r16.w, r16.w, l(0.001000) + and r16.w, r16.w, l(0x3f800000) + mul r26.z, r14.x, r16.w + div r21.xw, r23.xxxy, r17.wwww + max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) + min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + ge r14.x, r26.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r21.xw, r14.xxxx, r21.xxxw + mad r14.x, r24.x, l(0.250000), l(0.250000) + mul r26.xy, r14.xxxx, r21.xwxx + dp2 r14.x, r24.zwzz, r25.zwzz + add r21.xw, r14.xxxx, r24.zzzw + mul r14.x, r21.w, r21.x + add r16.w, r21.w, r21.x + frc r14.x, r14.x + frc r24.w, r16.w + dp2 r16.w, r27.zwzz, r28.zwzz + add r21.xw, r16.wwww, r27.zzzw + mul r16.w, r21.w, r21.x + add r17.w, r21.w, r21.x + frc r23.x, r16.w + frc r23.y, r17.w + mad r16.w, r14.x, l(0.399999976), l(0.600000) + mul r17.w, r16.w, l(0.250000) + mad r21.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.zzzw + add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) + mul r25.x, r21.x, l(1.250000) + lt r19.y, r21.w, l(0.000000) + movc r19.y, r19.y, l(1.250000), l(0.750000) + mul r25.y, r19.y, r21.w + mad r14.x, cb0[102].x, l(3.000000), r14.x + frc r14.x, r14.x + add r21.xw, r14.xxxx, l(-0.200000, 0.000000, 0.000000, -0.850000) + mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) + mad r23.yz, r21.xxwx, l(0.000000, -2.000000, -2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000) + mul r21.xw, r21.xxxw, r21.xxxw + mul r21.xw, r21.xxxw, r23.yyyz + mul r14.x, r21.w, r21.x + dp2 r19.y, r25.xyxx, r25.xyxx + sqrt r19.y, r19.y + mad r16.w, -r16.w, l(0.250000), r19.y + div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r17.w + mul_sat r16.w, r16.w, r19.y + mad r19.y, r16.w, l(-2.000000), l(3.000000) + mul r16.w, r16.w, r16.w + mul r16.w, r16.w, r19.y + ge r16.w, r16.w, l(0.001000) + and r16.w, r16.w, l(0x3f800000) + mul r24.z, r14.x, r16.w + div r21.xw, r25.xxxy, r17.wwww + max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) + min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + ge r14.x, r24.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r21.xw, r14.xxxx, r21.xxxw + mad r14.x, r23.x, l(0.250000), l(0.250000) + mul r24.xy, r14.xxxx, r21.xwxx + round_ni r19.xy, r19.xwxx + mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r23.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r14.x, r21.xwxx, r23.xyxx + add r21.xw, r14.xxxx, r21.xxxw + mul r14.x, r21.w, r21.x + add r16.w, r21.w, r21.x + frc r14.x, r14.x + frc r23.w, r16.w + add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) + mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r25.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r16.w, r21.xwxx, r25.xyxx + add r21.xw, r16.wwww, r21.xxxw + mul r16.w, r21.w, r21.x + add r17.w, r21.w, r21.x + frc r25.x, r16.w + frc r25.y, r17.w + mad r16.w, r14.x, l(0.399999976), l(0.600000) + mul r17.w, r16.w, l(0.250000) + mad r19.xy, r15.ywyy, l(20.000000, 20.000000, 0.000000, 0.000000), -r19.xyxx + mad r21.xw, r25.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx + add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) + mul r27.x, r19.x, l(1.250000) + lt r19.x, r19.y, l(0.000000) + movc r19.x, r19.x, l(1.250000), l(0.750000) + mul r27.y, r19.x, r19.y + mad r14.x, cb0[102].x, l(3.000000), r14.x + frc r14.x, r14.x + add r19.xy, r14.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) + mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) + mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.xy, r19.xyxx, r19.xyxx + mul r19.xy, r19.xyxx, r21.xwxx + mul r14.x, r19.y, r19.x + dp2 r19.x, r27.xyxx, r27.xyxx + sqrt r19.x, r19.x + mad r16.w, -r16.w, l(0.250000), r19.x + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r17.w + mul_sat r16.w, r16.w, r19.x + mad r19.x, r16.w, l(-2.000000), l(3.000000) + mul r16.w, r16.w, r16.w + mul r16.w, r16.w, r19.x + ge r16.w, r16.w, l(0.001000) + and r16.w, r16.w, l(0x3f800000) + mul r23.z, r14.x, r16.w + div r19.xy, r27.xyxx, r17.wwww + max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r14.x, r23.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r19.xy, r14.xxxx, r19.xyxx + mad r14.x, r25.x, l(0.250000), l(0.250000) + mul r23.xy, r14.xxxx, r19.xyxx + mul r24.xyzw, r20.zzzz, r24.xyzw + mad r24.xyzw, r26.xyzw, r20.yyyy, r24.xyzw + mad r23.xyzw, r23.xyzw, r20.xxxx, r24.xyzw + round_ni r24.xyzw, r22.yxyz + mul r25.xyzw, r24.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r25.xyzw, r25.xyzw + add r26.xyzw, r25.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r14.x, r25.xyxx, r26.xyxx + add r19.xy, r14.xxxx, r25.xyxx + mul r14.x, r19.y, r19.x + add r16.w, r19.y, r19.x + frc r14.x, r14.x + frc r27.w, r16.w + add r28.xyzw, r24.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) + mul r28.xyzw, r28.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) + frc r28.xyzw, r28.xyzw + add r29.xyzw, r28.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) + dp2 r16.w, r28.xyxx, r29.xyxx + add r19.xy, r16.wwww, r28.xyxx + mul r16.w, r19.y, r19.x + add r17.w, r19.y, r19.x + frc r19.x, r16.w + frc r19.y, r17.w + mad r16.w, r14.x, l(0.399999976), l(0.600000) + mul r17.w, r16.w, l(0.250000) + mad r24.xyzw, r15.xyzw, l(34.345600, 34.345600, 34.345600, 34.345600), -r24.xyzw + mad r19.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.xxxy + add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) + mul r24.x, r19.y, l(1.250000) + lt r15.x, r19.w, l(0.000000) + movc r15.x, r15.x, l(1.250000), l(0.750000) + mul r24.y, r15.x, r19.w + mad r14.x, cb0[102].x, l(4.345600), r14.x + frc r14.x, r14.x + add r19.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) + mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) + mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.yw, r19.yyyw, r19.yyyw + mul r19.yw, r19.yyyw, r21.xxxw + mul r14.x, r19.w, r19.y + dp2 r15.x, r24.xyxx, r24.xyxx + sqrt r15.x, r15.x + mad r15.x, -r16.w, l(0.250000), r15.x + div r16.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r17.w + mul_sat r15.x, r15.x, r16.w + mad r16.w, r15.x, l(-2.000000), l(3.000000) + mul r15.x, r15.x, r15.x + mul r15.x, r15.x, r16.w + ge r15.x, r15.x, l(0.001000) + and r15.x, r15.x, l(0x3f800000) + mul r27.z, r14.x, r15.x + div r19.yw, r24.xxxy, r17.wwww + max r19.yw, r19.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) + min r19.yw, r19.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) + ge r14.x, r27.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r19.yw, r14.xxxx, r19.yyyw + mad r14.x, r19.x, l(0.250000), l(0.250000) + mul r27.xy, r14.xxxx, r19.ywyy + dp2 r14.x, r25.zwzz, r26.zwzz + add r19.xy, r14.xxxx, r25.zwzz + mul r14.x, r19.y, r19.x + add r15.x, r19.y, r19.x + frc r14.x, r14.x + frc r25.w, r15.x + dp2 r15.x, r28.zwzz, r29.zwzz + add r19.xy, r15.xxxx, r28.zwzz + mul r15.x, r19.y, r19.x + add r16.w, r19.y, r19.x + frc r19.x, r15.x + frc r19.y, r16.w + mad r15.x, r14.x, l(0.399999976), l(0.600000) + mul r16.w, r15.x, l(0.250000) + mad r19.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.zzzw + add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) + mul r24.x, r19.y, l(1.250000) + lt r17.w, r19.w, l(0.000000) + movc r17.w, r17.w, l(1.250000), l(0.750000) + mul r24.y, r17.w, r19.w + mad r14.x, cb0[102].x, l(4.345600), r14.x + frc r14.x, r14.x + add r19.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) + mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) + mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.yw, r19.yyyw, r19.yyyw + mul r19.yw, r19.yyyw, r21.xxxw + mul r14.x, r19.w, r19.y + dp2 r17.w, r24.xyxx, r24.xyxx + sqrt r17.w, r17.w + mad r15.x, -r15.x, l(0.250000), r17.w + div r17.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w + mul_sat r15.x, r15.x, r17.w + mad r17.w, r15.x, l(-2.000000), l(3.000000) + mul r15.x, r15.x, r15.x + mul r15.x, r15.x, r17.w + ge r15.x, r15.x, l(0.001000) + and r15.x, r15.x, l(0x3f800000) + mul r25.z, r14.x, r15.x + div r19.yw, r24.xxxy, r16.wwww + max r19.yw, r19.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) + min r19.yw, r19.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) + ge r14.x, r25.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r19.yw, r14.xxxx, r19.yyyw + mad r14.x, r19.x, l(0.250000), l(0.250000) + mul r25.xy, r14.xxxx, r19.ywyy + round_ni r19.xy, r22.xzxx + mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r22.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r14.x, r21.xwxx, r22.xyxx + add r21.xw, r14.xxxx, r21.xxxw + mul r14.x, r21.w, r21.x + add r15.x, r21.w, r21.x + frc r14.x, r14.x + frc r22.w, r15.x + add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) + mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) + frc r21.xw, r21.xxxw + add r24.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) + dp2 r15.x, r21.xwxx, r24.xyxx + add r21.xw, r15.xxxx, r21.xxxw + mul r15.x, r21.w, r21.x + add r16.w, r21.w, r21.x + frc r24.x, r15.x + frc r24.y, r16.w + mad r15.x, r14.x, l(0.399999976), l(0.600000) + mul r16.w, r15.x, l(0.250000) + mad r19.xy, r15.ywyy, l(34.345600, 34.345600, 0.000000, 0.000000), -r19.xyxx + mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx + add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) + mul r26.x, r19.x, l(1.250000) + lt r17.w, r19.y, l(0.000000) + movc r17.w, r17.w, l(1.250000), l(0.750000) + mul r26.y, r17.w, r19.y + mad r14.x, cb0[102].x, l(4.345600), r14.x + frc r14.x, r14.x + add r19.xy, r14.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) + mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) + mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) + mul r19.xy, r19.xyxx, r19.xyxx + mul r19.xy, r19.xyxx, r21.xwxx + mul r14.x, r19.y, r19.x + dp2 r17.w, r26.xyxx, r26.xyxx + sqrt r17.w, r17.w + mad r15.x, -r15.x, l(0.250000), r17.w + div r17.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w + mul_sat r15.x, r15.x, r17.w + mad r17.w, r15.x, l(-2.000000), l(3.000000) + mul r15.x, r15.x, r15.x + mul r15.x, r15.x, r17.w + ge r15.x, r15.x, l(0.001000) + and r15.x, r15.x, l(0x3f800000) + mul r22.z, r14.x, r15.x + div r19.xy, r26.xyxx, r16.wwww + max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + ge r14.x, r22.z, l(0.001000) + and r14.x, r14.x, l(0x3f800000) + mul r19.xy, r14.xxxx, r19.xyxx + mad r14.x, r24.x, l(0.250000), l(0.250000) + mul r22.xy, r14.xxxx, r19.xyxx + mul r24.xyzw, r20.zzzz, r25.xyzw + mad r24.xyzw, r27.xyzw, r20.yyyy, r24.xyzw + mad r20.xyzw, r22.xyzw, r20.xxxx, r24.xyzw + max r19.xy, r20.zwzz, r23.zwzz + mad r20.zw, -r13.wwww, r9.wwww, l(0.000000, 0.000000, 1.000000, 1.010000) + add r14.x, r19.y, l(-0.100000) + ge r14.x, r14.x, r20.z + and r14.x, r14.x, l(0x3f800000) + mul r14.x, r14.x, r19.x + ge r2.w, cb1[r2.w + 12].x, l(0.010000) + and r2.w, r2.w, l(0x3f800000) + mul r2.w, r2.w, r14.x + lt r14.x, l(0.001000), r2.w + add r19.xy, r20.xyxx, r23.xyxx + mul r15.x, cb0[102].x, cb0[196].z + mul r20.y, r15.x, l(0.750000) + dp2 r15.x, r18.xzxx, r18.xzxx + max r15.x, r15.x, l(1.175494351E-38) + rsq r15.x, r15.x + mul r18.xz, r15.xxxx, r18.xxzx + add r18.xz, |r18.xxzx|, l(-0.200000, 0.000000, -0.200000, 0.000000) + mul r21.xw, r18.xxxz, r18.xxxz + mul r18.xz, r18.xxzx, r21.xxwx + max r18.xz, r18.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + dp2 r15.x, r18.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) + div r18.xz, r18.xxzx, r15.xxxx + sample_b_indexable(texture2d)(float,float,float,float) r22.xyz, r15.zwzz, t11.xyzw, s3, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, r15.ywyy, t11.xyzw, s3, cb0[108].x + mul r15.xyz, r18.xxxx, r15.xyzx + mad r15.xyz, r22.xyzx, r18.zzzz, r15.xyzx + movc r18.yw, r14.xxxx, r19.xxxy, r18.yyyw + mad r15.xy, r15.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mov r20.x, l(0) + mad r14.xyzw, r14.zwyw, cb0[196].zzzz, r20.xyxy + sample_b_indexable(texture2d)(float,float,float,float) r14.x, r14.xyxx, t11.wxyz, s3, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r14.y, r14.zwzz, t11.xwyz, s3, cb0[108].x + mul r14.y, r18.x, r14.y + mad r14.x, r14.x, r18.z, r14.y + mad r14.xy, r15.xyxx, r14.xxxx, r18.ywyy + ge r14.z, r19.z, r20.w + and r14.z, r14.z, l(0x3f800000) + max r2.w, r2.w, r14.z + add r14.z, -r15.z, l(1.000000) + mad r9.w, r13.w, r9.w, -r14.z + mul_sat r9.w, r9.w, l(9.999998) + mad r13.w, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r13.w + max r2.w, r2.w, r9.w + mad r14.zw, -r7.zzzy, l(0.000000, 0.000000, 1.000000, 0.000000), r21.yyyz + dp2 r9.w, r14.zwzz, r14.zwzz + lt r13.w, l(0.0000610351562), r9.w + rsq r9.w, r9.w + mul r14.zw, r9.wwww, r14.zzzw + mov r14.zw, -r14.zzzw + movc r15.z, r13.w, r14.z, l(-1.000000) + and r15.y, r13.w, r14.w + min r9.w, r3.z, l(0.050000) + add r13.w, -r3.z, r9.w + mad r13.w, r2.w, r13.w, r3.z + mad r12.x, -r12.y, r12.x, l(1.000000) + mul r12.x, r10.w, r12.x + mad r5.w, -r5.w, r12.z, l(1.000000) + mul r5.w, r5.w, r12.x + mad r5.w, r5.w, l(-0.500000), l(1.000000) + mov r15.x, l(0) + mad r3.xyw, -r3.xyxw, r6.wwww, r15.zxzy + mad r3.xyw, r14.xxxx, r3.xyxw, r7.xyxz + mul r14.xzw, r7.zzxy, r15.xxyz + mad r14.xzw, r7.yyzx, r15.yyzx, -r14.xxzw + add r14.xzw, -r3.xxyw, r14.xxzw + mad r3.xyw, r14.yyyy, r14.xzxw, r3.xyxw + dp3 r6.w, r3.xywx, r3.xywx + rsq r6.w, r6.w + mad r3.xyw, r3.xyxw, r6.wwww, -r7.xyxz + mad r3.xyw, r2.wwww, r3.xyxw, r7.xyxz + dp3 r6.w, r3.xywx, r3.xywx + rsq r6.w, r6.w + mul r3.xyw, r3.xyxw, r6.wwww + mul r6.w, r12.z, r10.w + mad r6.w, -r6.w, l(0.200000), r13.w + min r10.w, r13.w, l(0.200000) + max r3.z, r6.w, r10.w + mul r6.xyz, r5.wwww, r6.xyzx + dp3 r6.w, r4.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r6.w, r6.w, l(-0.700000) + mul_sat r6.w, r6.w, l(-2.50000024) + mad r10.w, r6.w, l(-2.000000), l(3.000000) + mul r6.w, r6.w, r6.w + mul r6.w, r6.w, r10.w + mad r6.w, r6.w, l(0.500000), l(1.000000) + mul r10.w, r12.w, r2.w + mad r12.xyz, r4.xyzx, r6.wwww, -r4.xyzx + mad r12.xyz, r10.wwww, r12.xyzx, r4.xyzx + mul r4.xyz, r5.wwww, r12.xyzx +else + mov r3.xyw, r7.xyxz + mov r9.w, l(0.010000) + mov r2.w, l(0) +endif +mul r5.w, r5.y, l(0.040000) +mad r6.w, -r5.x, l(0.960000), l(0.960000) +mul r12.xyz, r4.xyzx, r6.wwww +mad r14.xyz, -r5.yyyy, l(0.040000, 0.040000, 0.040000, 0.000000), r4.xyzx +mad r14.xyz, r5.xxxx, r14.xyzx, r5.wwww +mul r6.xyz, r6.wwww, r6.xyzx +mul r5.y, r3.z, r3.z +max r5.y, r5.y, l(0.00781250000) +max r5.w, v5.z, l(9.999999939E-09) +div r15.xy, v5.xyxx, r5.wwww +max r5.w, v6.z, l(9.999999939E-09) +div r15.zw, v6.xxxy, r5.wwww +add r15.xy, -r15.zwzz, r15.xyxx +mul r18.xy, r15.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r18.xy, |r18.xyxx| +sqrt r18.xy, r18.xyxx +mov r15.z, -r15.y +lt r15.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xxxz +lt r15.xz, r15.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r15.xy, -r15.ywyy, r15.xzxx +itof r15.xy, r15.xyxx +mul r15.xy, r15.xyxx, r18.xyxx +mad o1.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +lt r5.w, l(0.500000), r2.w +movc o1.w, r5.w, l(0.700000), l(0.400000) +add r15.xyz, cb0[197].xyzx, cb3[0].xyzx +mad r15.xyz, cb0[187].wwww, r15.xyzx, -cb3[0].xyzx +mov r15.w, l(0.0000610351562) +dp3 r5.w, r15.xzwx, r15.xzwx +rsq r5.w, r5.w +mul r18.xyz, r5.wwww, r15.xwzx +add r19.xyz, cb0[191].xyzx, -cb3[3].xyzx +mad r19.xyz, cb0[198].yyyy, r19.xyzx, cb3[3].xyzx +add r5.w, l(1.000000), -cb3[3].w +mad r5.w, cb0[198].w, r5.w, cb3[3].w +mul r20.xyz, r5.wwww, r19.xyzx +mov r11.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r21.xy, r11.xyzz, t3.xyzw +add r10.w, r21.x, l(-1.000000) +mad r10.w, cb4[34].x, r10.w, l(1.000000) +add r11.z, -r10.w, l(1.000000) +mad r10.w, cb0[187].z, r11.z, r10.w +dp3 r11.z, r7.xyzx, r15.xyzx +mul r21.xzw, r6.xxyz, cb0[186].zzzz +mul r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000) +dp3 r12.w, r12.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +dp2 r13.w, cb0[6].xzxx, cb0[6].xzxx +rsq r13.w, r13.w +mul r23.xy, r13.wwww, cb0[6].xzxx +dp2 r13.w, r18.xzxx, r23.xyxx +mov_sat r13.w, -r13.w +add r23.xy, l(1.000000, 1.000000, 0.000000, 0.000000), -cb0[198].xyxx +mad r14.w, r11.z, l(0.500000), l(-1.000000) +mad r14.w, -r11.z, r14.w, -r11.z +add r15.w, l(0.750000), -|cb0[6].y| +add_sat r15.w, r15.w, r15.w +mad r16.w, r15.w, l(-2.000000), l(3.000000) +mul r15.w, r15.w, r15.w +mul r15.w, r15.w, r16.w +mul r15.w, r13.w, r15.w +mul r15.w, r23.x, r15.w +add r14.w, r14.w, l(0.500000) +mad r11.z, r15.w, r14.w, r11.z +mad r11.z, cb0[197].w, cb0[198].x, r11.z +max r11.z, r11.z, l(-1.000000) +min r11.z, r11.z, l(1.000000) +add r11.z, r11.z, l(-0.250000) +mul r11.z, r11.z, l(1.33333337) +max r11.z, r11.z, l(0.000000) +mad r14.w, r11.z, l(-2.000000), l(3.000000) +mul r11.z, r11.z, r11.z +mul r11.z, r11.z, r14.w +dp3 r14.w, r7.xyzx, cb0[6].xyzx +add r14.w, r14.w, l(-0.250000) +mul_sat r14.w, r14.w, l(1.33333337) +mad r15.w, r14.w, l(-2.000000), l(3.000000) +mul r14.w, r14.w, r14.w +mul r14.w, r14.w, r15.w +mul r15.w, r5.z, r21.y +min r16.w, r5.z, r21.y +min r17.w, r11.z, r16.w +mul r18.w, r14.w, r15.w +dp3 r19.w, r7.xyzx, cb0[192].xyzx +add_sat r19.w, r19.w, cb0[193].x +mad r19.w, r19.w, cb0[193].y, cb0[193].z +mul r20.w, r17.w, cb0[187].y +add r24.xyz, -r13.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r24.xyz, r20.wwww, r24.xyzx, r13.xyzx +mul r24.xyz, r19.wwww, r24.xyzx +mad r19.w, r8.w, l(0.350000024), l(0.650000) +min r19.w, r19.w, l(1.500000) +max r25.xyz, r8.wwww, l(1.250000, 0.000000, 0.500000, 0.000000) +min r25.xyz, r25.xyzx, l(1.750000, 1.500000, 1.500000, 0.000000) +add r8.w, -r19.w, r25.x +mad r8.w, cb0[187].x, r8.w, r19.w +mul r26.xyz, r8.wwww, r24.xyzx +mul r26.xyz, r26.xyzx, cb0[186].wwww +dp3 r8.w, r20.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r20.xyz, r19.xyzx, r5.wwww, -r8.wwww +mad r20.xyz, r17.wwww, r20.xyzx, r8.wwww +mul r24.xyz, r24.xyzx, r25.yyyy +mad r23.yzw, r19.xxyz, cb0[198].yyyy, r23.yyyy +mad r20.xyz, r24.xyzx, r23.yzwy, r20.xyzx +mad r20.xyz, r20.xyzx, cb0[186].yyyy, -r26.xyzx +mad r20.xyz, r10.wwww, r20.xyzx, r26.xyzx +dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mad r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000), -r8.wwww +mad r22.xyz, r22.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r8.wwww +mad_sat r8.w, r14.w, r15.w, r11.z +mad r23.yzw, r6.xxyz, cb0[186].zzzz, -r22.xxyz +mad r22.xyz, r8.wwww, r23.yzwy, r22.xyzx +mad r23.yzw, r4.xxyz, r6.wwww, -r22.xxyz +mad r22.xyz, r17.wwww, r23.yzwy, r22.xyzx +mad r23.yzw, r4.xxyz, r6.wwww, -r12.wwww +mad r23.yzw, r23.yyzw, l(0.000000, 1.200000, 1.200000, 1.200000), r12.wwww +mad r23.yzw, -r6.xxyz, cb0[186].zzzz, r23.yyzw +mad r21.xzw, r18.wwww, r23.yyzw, r21.xxzw +dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +max r11.z, r8.w, l(0.001000) +div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z +mul r8.w, r8.w, r11.z +max r8.w, r8.w, l(0.000000) +min r8.w, r8.w, l(1.500000) +mad r22.xyz, r22.xyzx, r8.wwww, -r21.xzwx +mad r21.xzw, r10.wwww, r22.xxyz, r21.xxzw +mad r8.w, -r14.w, r15.w, r17.w +mad r8.w, r10.w, r8.w, r18.w +add r11.z, l(1.000000), -cb0[186].z +mad r11.z, r8.w, r11.z, cb0[186].z +add r14.w, r15.y, l(-0.500000) +mad r22.y, r10.w, r14.w, l(0.500000) +dp3_sat r24.x, r3.xywx, r2.xyzx +mov r22.xz, cb0[6].xxzx +dp3 r14.w, r22.xyzx, r22.xyzx +max r14.w, r14.w, l(1.175494351E-38) +rsq r14.w, r14.w +mul r22.xyz, r14.wwww, r22.xyzx +add r22.xyz, r22.xyzx, r22.xyzx +mad r15.xyz, r15.xyzx, r10.wwww, r22.xyzx +add r14.w, r10.w, l(2.000000) +mad r15.xyz, r2.xyzx, r14.wwww, r15.xyzx +dp3 r14.w, r15.xyzx, r15.xyzx +rsq r14.w, r14.w +mul r15.xyz, r14.wwww, r15.xyzx +dp3 r14.w, r3.xywx, r15.xyzx +mul r15.x, r5.y, r5.y +mad r15.y, r14.w, r15.x, -r14.w +mad r14.w, r15.y, r14.w, l(1.000000) +mul r14.w, r14.w, r14.w +add r15.y, l(1.000000), -cb5[1].z +mad r15.y, r4.w, cb5[1].z, r15.y +mul r22.xyz, r20.xyzx, r21.xzwx +ne r15.z, r14.w, r15.x +div r14.w, r15.x, r14.w +movc r14.w, r15.z, r14.w, l(1.000000) +mad r15.x, r24.x, l(2.000000), r5.y +add r15.x, r15.x, l(0.000100) +div r15.x, l(0.500000), r15.x +mad r14.w, r14.w, r15.x, l(-0.0000610351562) +max r14.w, r14.w, l(0.000000) +min r14.w, r14.w, l(20.000000) +mul r15.xzw, r14.wwww, r14.xxyz +mad r8.w, r8.w, l(0.500000), l(0.500000) +mul r8.w, r11.z, r8.w +mul r20.xyz, r8.wwww, r20.xyzx +mul r15.xzw, r15.xxzw, r20.xxyz +mul r15.xzw, r15.xxzw, cb0[199].wwww +mad r15.xzw, r22.xxyz, r15.yyyy, r15.xxzw +dp3 r8.w, r15.xzwx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r14.w, r8.w, l(-0.500000) +max r14.w, r14.w, l(0.000000) +min r14.w, r14.w, l(0.500000) +mov r20.y, l(0) +mov r20.xz, cb0[195].yyxy +mul r22.xyz, r20.xyzx, cb0[6].zxyz +mad r20.xyz, cb0[6].yzxy, r20.yzxy, -r22.xyzx +dp3 r17.w, r20.xyzx, r20.xyzx +rsq r17.w, r17.w +mul r20.xyz, r17.wwww, r20.xyzx +dp3 r17.w, r2.xyzx, r7.xyzx +add r22.xy, -|r17.wwww|, l(1.000000, 0.399999976, 0.000000, 0.000000) +dp3 r18.x, r18.xyzx, r7.xyzx +add r18.y, -r10.w, l(1.000000) +add r9.w, -r3.z, r9.w +mad r2.w, r2.w, r9.w, r3.z +mul r26.y, r2.w, r2.w +mul r27.x, r24.x, r24.x +mul r27.z, r24.x, r27.x +mul r9.w, r26.y, r26.y +mul r26.z, r26.y, r9.w +mov r24.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r25.x, l(3.327070, 1.000000, 0.000000, 0.000000), r24.xyxx +dp2 r25.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r24.xzxx +mov r26.x, l(1.000000) +dp2 r9.w, r25.xyxx, r26.xyxx +mov r27.yw, l(0,9.044010,0,1.000000) +dp3 r28.x, l(3.596850, -1.367720, 1.000000, 0.000000), r27.xzwx +dp3 r28.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r27.xyzx +mov r29.x, l(5.565890) +mov r29.yz, r27.xxzx +dp3 r28.z, l(1.000000, 19.788601, -20.212299, 0.000000), r29.xyzx +dp3 r18.z, r28.xyzx, r26.xyzx +div r9.w, r9.w, r18.z +dp2 r25.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r24.xwxx +mov r27.x, l(1.296780) +mov r27.y, r24.x +dp2 r25.y, l(1.000000, -0.755907, 0.000000, 0.000000), r27.xyxx +dp2 r18.z, r25.xyxx, r26.xyxx +dp3 r28.x, l(2.923380, 59.418800, 1.000000, 0.000000), r27.yzwy +mov r27.xw, l(20.322500,0,0,121.563004) +dp3 r28.y, l(1.000000, -27.030199, 222.591995, 0.000000), r27.xyzx +dp3 r28.z, l(626.130005, 316.627014, 1.000000, 0.000000), r27.yzwy +dp3 r18.w, r28.xyzx, r26.xyzx +div r18.z, r18.z, r18.w +mad r23.yzw, r14.xxyz, r9.wwww, r18.zzzz +add r9.w, r9.w, r18.z +mad r14.w, r14.w, r14.w, l(1.000000) +add r15.xzw, -r8.wwww, r15.xxzw +mad r15.xzw, r14.wwww, r15.xxzw, r8.wwww +mad r18.zw, cb0[195].wwww, l(0.000000, 0.000000, -0.600000, -0.399999976), l(0.000000, 0.000000, 0.800000, 0.900000) +add r8.w, -r18.z, r18.w +add r14.w, -r18.z, r22.x +div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w +mul_sat r8.w, r8.w, r14.w +mad r14.w, r8.w, l(-2.000000), l(3.000000) +mul r8.w, r8.w, r8.w +mul r8.w, r8.w, r14.w +mul r24.yzw, r8.wwww, cb0[194].xxyz +mul r24.yzw, r24.yyzw, cb0[194].wwww +dp3 r8.w, r9.xyzx, r20.xyzx +add_sat r8.w, r8.w, l(1.000000) +min r5.z, r5.z, r8.w +min r5.z, r21.y, r5.z +mul r24.yzw, r5.zzzz, r24.yyzw +mad r25.xyw, r4.xyxz, r6.wwww, l(-0.250000, -0.250000, 0.000000, -0.250000) +mad r25.xyw, cb0[195].zzzz, r25.xyxw, l(0.250000, 0.250000, 0.000000, 0.250000) +dp3_sat r5.z, r20.xyzx, r7.xyzx +mul r20.xyz, r5.zzzz, r25.xywx +max r5.z, r16.y, r16.x +max r5.z, r16.z, r5.z +mul r5.z, r5.z, l(0.500000) +max r5.z, r5.z, l(1.000000) +div r5.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z +mul r16.xyz, r5.zzzz, r16.xyzx +mad r19.xyz, r19.xyzx, r5.wwww, -r16.xyzx +mad r16.xyz, r10.wwww, r19.xyzx, r16.xyzx +dp3 r5.z, r17.xyzx, r7.xyzx +mul r5.w, r7.w, r5.z +mad r8.w, r18.x, l(0.500000), l(-1.000000) +mad r8.w, -r18.x, r8.w, l(0.500000) +mad r5.z, -r5.z, r7.w, r8.w +mad_sat r5.z, r10.w, r5.z, r5.w +mul r16.xyz, r5.zzzz, r16.xyzx +mad r5.z, r13.w, r10.w, r18.y +mul r5.z, r23.x, r5.z +mul r16.xyz, r5.zzzz, r16.xyzx +mul_sat r5.z, r22.y, l(5.00000048) +mad r5.w, r5.z, l(-2.000000), l(3.000000) +mul r5.z, r5.z, r5.z +mul r5.z, r5.z, r5.w +mul r16.xyz, r5.zzzz, r16.xyzx +mul r16.xyz, r16.wwww, r16.xyzx +add r5.z, r12.w, l(-0.100000) +mul_sat r5.z, r5.z, l(-16.666666) +mad r5.w, r5.z, l(-2.000000), l(3.000000) +mul r5.z, r5.z, r5.z +mul r5.z, r5.z, r5.w +mad r5.z, r5.z, r10.w, r18.y +mul r16.xyz, r5.zzzz, r16.xyzx +max r17.xyz, r12.xyzx, l(0.150000, 0.150000, 0.150000, 0.000000) +mul r16.xyz, r16.xyzx, r17.xyzx +mad r16.xyz, r24.yzwy, r20.xyzx, r16.xyzx +add r15.xzw, r15.xxzw, r16.xxyz +utof r5.zw, r11.xxxy +mul r16.xy, r5.zwzz, l(0.031250, 0.031250, 0.000000, 0.000000) +round_ni r16.xy, r16.xyxx +mad r7.w, r16.y, cb2[1].y, r16.x +mul r7.w, r7.w, l(8.000000) +ftoi r7.w, r7.w +mad r8.w, -cb0[85].y, cb2[2].w, v0.w +round_ni r8.w, r8.w +add r10.w, l(-1.000000), cb2[1].w +max r12.w, r8.w, l(0.000000) +min r10.w, r10.w, r12.w +mul r12.w, r10.w, l(8.000000) +ftoi r12.w, r12.w +mul r8.xyz, r8.xyzx, cb5[6].xyzx +mul r8.xyz, r8.xyzx, cb5[1].wwww +mad r8.xyz, r8.xyzx, r15.yyyy, r15.xzwx +dp3 r13.w, -r2.xyzx, r3.xywx +add r13.w, r13.w, r13.w +mad r15.xzw, r3.xxyw, -r13.wwww, -r2.xxyz +max r2.w, r2.w, l(0.001000) +log r2.w, r2.w +mad r2.w, r2.w, l(1.200000), l(5.000000) +sample_l_indexable(texturecube)(float,float,float,float) r15.xzw, r15.xzwx, t16.xwyz, s0, r2.w +add r2.w, -r9.w, l(1.000000) +div r2.w, r2.w, r9.w +mul r16.xyz, r2.wwww, r14.xyzx +mad r16.xyz, r16.xyzx, r23.yzwy, r23.yzwy +mul r15.xzw, r15.xxzw, r16.xxyz +mul r2.w, r25.z, cb0[186].w +mul r2.w, r11.z, r2.w +mul r15.xzw, r2.wwww, r15.xxzw +mad r8.xyz, r15.xzwx, r13.xyzx, r8.xyzx +ge r2.w, r10.w, r8.w +iadd r8.w, r12.w, cb0[110].y +mad r9.w, r18.y, l(-0.250000), l(0.750000) +mad r4.xyz, r4.xyzx, r6.wwww, l(-0.500000, -0.500000, -0.500000, 0.000000) +add r6.w, -r5.y, l(0.010000) +ge r5.x, r5.x, l(0.500000) +and r5.x, r5.x, l(0x3f800000) +mov r13.w, l(1.000000) +mov r15.xzw, r8.xxyz +mov r10.w, l(0) +loop + ilt r11.z, l(7), r10.w + breakc_nz r11.z + iadd r11.z, r7.w, r10.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.z, r11.z, l(0), t0.xxxx + iadd r12.w, r8.w, r10.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx + and r11.z, r11.z, r12.w + and r11.z, r2.w, r11.z + ishl r12.w, r10.w, l(5) + mov r16.xyz, r15.xzwx + mov r14.w, r11.z + loop + breakc_z r14.w + firstbit_lo r16.w, r14.w + ishl r17.x, l(1), r16.w + xor r17.x, r14.w, r17.x + iadd r16.w, r12.w, r16.w + bfi r18.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 5, 6, 7) + ftou r17.y, cb3[r18.y + 6].w + ieq r17.y, r17.y, l(1) + if_nz r17.y + add r13.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx + and r19.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r18.y + 6].xzyx + and r20.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r18.z + 6].yxzy + ushr r22.yzw, cb3[r18.y + 6].xxzy, l(0, 16, 16, 16) + ushr r23.xyz, cb3[r18.z + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r19.xyz, r19.xyzx + f16tof32 r20.xyz, r20.xyzx + f16tof32 r25.xyz, r22.yzwy + f16tof32 r23.xyw, r23.yxyz + mov r26.xz, r19.xxzx + mov r26.yw, r25.xxxz + dp4 r17.y, r13.xyzw, r26.xyzw + mov r25.x, r19.y + mov r25.z, r20.y + mov r25.w, r23.x + dp4 r17.z, r13.xyzw, r25.xyzw + mov r23.xz, r20.xxzx + dp4 r13.x, r13.xyzw, r23.xyzw + max r13.y, |r17.z|, |r17.y| + max r13.x, |r13.x|, r13.y + mad r13.y, cb3[r18.w + 6].x, l(0.500000), l(0.500000) + add r13.x, -r13.y, r13.x + mad r13.y, -cb3[r18.w + 6].x, l(0.500000), l(0.500000) + div_sat r13.x, r13.x, r13.y + add r13.x, -r13.x, l(1.000000) + mul r13.x, r13.x, r13.x + else + mov r13.x, l(1.000000) + endif + lt r13.y, r13.x, l(0.001000) + if_nz r13.y + mov r14.w, r17.x + continue + endif + ishl r13.y, r16.w, l(3) + lt r13.z, cb3[r13.y + 6].w, l(1.500000) + if_nz r13.z + bfi r13.z, l(29), l(3), r16.w, l(3) + ieq r17.y, l(16), cb3[r13.z + 6].w + add r17.z, cb0[198].z, cb3[r13.z + 6].z + lt r17.z, r17.z, l(0.500000) + or r17.y, r17.z, r17.y + if_z r17.y + bfi r17.yz, l(0, 29, 29, 0), l(0, 3, 3, 0), r16.wwww, l(0, 2, 4, 0) + ftou r16.w, cb3[r13.y + 6].w + and r16.w, r16.w, l(1) + ieq r18.y, r16.w, l(0) + not r18.y, r18.y + lt r19.x, l(0.000000), cb3[r17.y + 6].z + and r18.y, r18.y, r19.x + ieq r19.x, l(4), cb3[r13.z + 6].w + movc r19.y, r16.w, l(0), l(1.000000) + mad r19.z, cb3[r17.y + 6].y, l(0.500000), l(0.500000) + add r20.z, r19.z, -|cb3[r17.y + 6].x| + add r20.x, -r20.z, cb3[r17.y + 6].y + add r19.z, -|r20.z|, l(1.000000) + add r19.z, -|r20.x|, r19.z + max r19.z, r19.z, l(0.000488281250) + ge r19.w, cb3[r17.y + 6].x, l(0.000000) + movc r20.y, r19.w, r19.z, -r19.z + dp3 r19.z, r20.xyzx, r20.xyzx + rsq r19.z, r19.z + mul r20.xyz, r19.zzzz, r20.xyzx + add r19.z, cb3[r17.z + 6].y, cb3[r17.z + 6].y + max r19.z, r19.z, l(0.100000) + and r19.w, r19.x, l(0x3f800000) + add r19.z, r19.z, -cb3[r18.z + 6].w + mad r18.z, r19.w, r19.z, cb3[r18.z + 6].w + add r22.yzw, -v2.xxyz, cb3[r18.x + 6].xxyz + dp3 r19.z, r22.zwyz, -r20.xyzx + lt r19.w, l(0.500000), cb3[r17.z + 6].z + and r19.w, r19.w, r19.x + and r19.w, r19.w, l(0x3f800000) + mul r19.w, r19.y, r19.w + mad r23.xyz, -r20.zxyz, r19.zzzz, -r22.yzwy + mad r22.yzw, r19.wwww, r23.xxyz, r22.yyzw + dp3 r19.z, r22.yzwy, r22.yzwy + rsq r19.w, r19.z + mul r23.xyz, r19.wwww, r22.yzwy + if_nz r18.y + mul r24.yzw, r20.zzxy, cb3[r17.y + 6].zzzz + mad r25.xyz, -r24.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), r22.yzwy + mad r24.yzw, r24.yyzw, l(0.000000, 0.500000, 0.500000, 0.500000), r22.yyzw + dp3 r19.w, r25.xyzx, r25.xyzx + sqrt r19.w, r19.w + dp3 r20.w, r24.yzwy, r24.yzwy + sqrt r20.w, r20.w + mul r26.xyz, r20.xyzx, r23.xyzx + mad r26.xyz, r20.zxyz, r23.yzxy, -r26.xyzx + mul r27.xyz, r20.xyzx, r26.xyzx + mad r26.xyz, r26.zxyz, r20.yzxy, -r27.xyzx + dp3 r21.y, r26.xyzx, r26.xyzx + rsq r21.y, r21.y + mul r23.xyz, r21.yyyy, r26.xyzx + dp3 r21.y, r25.xyzx, r24.yzwy + mad r21.y, r19.w, r20.w, r21.y + mad r21.y, r21.y, l(0.500000), l(1.000000) + div r21.y, l(1.000000, 1.000000, 1.000000, 1.000000), r21.y + dp3 r23.w, r23.xyzx, r25.xyzx + div r19.w, r23.w, r19.w + dp3 r23.w, r23.xyzx, r24.yzwy + div r20.w, r23.w, r20.w + add r19.w, r19.w, r20.w + mul_sat r19.w, r19.w, l(0.500000) + mul r19.w, r19.w, r21.y + else + mov r19.w, l(1.000000) + endif + lt r20.w, r18.z, l(0.000000) + if_nz r20.w + mul r20.w, cb3[r18.x + 6].w, cb3[r18.x + 6].w + mul r20.w, r19.z, r20.w + mad r20.w, -r20.w, r20.w, l(1.000000) + max r20.w, r20.w, l(0.000000) + add r19.z, r19.z, l(1.000000) + div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z + and r21.y, r18.y, l(0x3f800000) + add r23.w, -r19.z, r19.w + mad r19.z, r21.y, r23.w, r19.z + mul r20.w, r20.w, r20.w + mul r19.z, r19.z, r20.w + else + mul r24.yzw, r22.yyzw, cb3[r18.x + 6].wwww + dp3 r20.w, r24.yzwy, r24.yzwy + min r20.w, r20.w, l(1.000000) + add r20.w, -r20.w, l(1.000000) + log r20.w, r20.w + mul r18.z, r18.z, r20.w + exp r18.z, r18.z + mul r19.z, r18.z, r19.w + endif + dp3 r18.z, r23.yzxy, -r20.xyzx + add r18.z, r18.z, -cb3[r17.y + 6].z + mul_sat r18.z, r18.z, cb3[r17.y + 6].w + mad r18.z, r18.z, r18.z, l(-1.000000) + mad r18.z, r19.y, r18.z, l(1.000000) + mul r18.z, r18.z, r19.z + ftoi r19.y, cb3[r18.w + 6].w + not r18.y, r18.y + ige r19.z, r19.y, l(0) + and r18.y, r18.y, r19.z + if_nz r18.y + if_z r16.w + ishl r18.y, r19.y, l(2) + mul r20.xyz, v2.yyyy, cb6[r18.y + 33].xywx + mad r20.xyz, cb6[r18.y + 32].xywx, v2.xxxx, r20.xyzx + mad r20.xyz, cb6[r18.y + 34].xywx, v2.zzzz, r20.xyzx + add r20.xyz, r20.xyzx, cb6[r18.y + 35].xywx + div_sat r19.zw, r20.xxxy, r20.zzzz + mad r19.zw, r19.zzzw, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy + else + ishl r18.y, r19.y, l(2) + dp3 r20.x, -r22.yzwy, cb6[r18.y + 32].xyzx + dp3 r20.y, -r22.yzwy, cb6[r18.y + 33].xyzx + dp3 r20.z, -r22.yzwy, cb6[r18.y + 34].xyzx + lt r18.y, |r20.x|, |r20.y| + and r18.y, r18.y, l(1) + dp2 r20.w, |r20.xyxx|, icb[r18.y + 0].xyxx + lt r20.w, r20.w, |r20.z| + movc r18.y, r20.w, l(2), r18.y + dp3 r20.w, r20.xyzx, icb[r18.y + 0].xyzx + lt r20.w, r20.w, l(0.000000) + bfi r18.y, l(31), l(1), r18.y, r20.w + ushr r20.w, r18.y, l(1) + dp3 r20.w, r20.xyzx, icb[r20.w + 0].xyzx + div r21.y, l(0.000244140625), cb6[r19.y + 0].w + add r21.y, -r21.y, l(0.500000) + utof r22.y, r18.y + ult r22.z, r18.y, l(2) + and r22.z, r22.z, l(2) + dp2 r20.x, r20.xzxx, icb[r22.z + 0].xzxx + mul r20.x, r20.x, icb[r18.y + 4].z + div r20.x, r20.x, |r20.w| + mad r20.x, r20.x, r21.y, r22.y + add r20.x, r20.x, l(0.500000) + mul_sat r25.x, r20.x, l(0.166666672) + iadd r20.x, l(-1), icb[r18.y + 4].y + dp2 r20.x, r20.yzyy, icb[r20.x + 0].xyxx + mul r18.y, r20.x, icb[r18.y + 4].w + div r18.y, r18.y, |r20.w| + mad_sat r25.y, -r18.y, r21.y, l(0.500000) + mad r19.zw, r25.xxxy, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy + endif + sample_l_indexable(texture2d)(float,float,float,float) r18.y, r19.zwzz, t17.yxzw, s0, l(0.000000) + mul r18.z, r18.y, r18.z + endif + mul r13.x, r13.x, r18.z + lt r18.y, l(0.000100), r13.x + if_nz r18.y + if_nz r19.x + add r18.y, l(1.000000), -cb3[r17.z + 6].w + dp3 r18.z, r10.xyzx, r23.xyzx + add_sat r18.z, r18.z, l(0.500000) + mad r19.y, r18.z, l(-2.000000), l(3.000000) + mul r18.z, r18.z, r18.z + mul r18.z, r18.z, r19.y + mad r18.y, r18.z, cb3[r17.z + 6].w, r18.y + mul r18.y, r18.y, cb3[r17.z + 6].x + mul r18.y, r13.x, r18.y + add r19.yzw, -r16.xxyz, cb3[r13.y + 6].xxyz + mad r19.yzw, r18.yyyy, r19.yyzw, r16.xxyz + endif + if_z r19.x + dp3 r18.y, r7.xyzx, r23.xyzx + mov_sat r18.z, r18.y + if_nz cb3[r13.z + 6].w + if_z r16.w + ftoi r16.w, cb3[r13.z + 6].x + else + add r20.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx + lt r22.yzw, |r20.yyzz|, |r20.xxxy| + and r20.w, r22.z, r22.y + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + ushr r21.y, cb3[r17.y + 6].w, l(24) + ubfe r22.yz, l(0, 8, 8, 0), l(0, 16, 8, 0), cb3[r17.y + 6].wwww + movc r20.x, r20.x, r21.y, r22.y + and r17.y, l(255), cb3[r17.y + 6].w + movc r17.y, r20.y, r22.z, r17.y + ubfe r20.y, l(8), l(8), cb3[r13.z + 6].x + and r21.y, l(255), cb3[r13.z + 6].x + movc r20.y, r20.z, r20.y, r21.y + movc r17.y, r22.w, r17.y, r20.y + movc r17.y, r20.w, r20.x, r17.y + ilt r20.x, r17.y, l(80) + movc r16.w, r20.x, r17.y, l(-1) + endif + ige r17.y, r16.w, l(0) + if_nz r17.y + add r20.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx + ishl r17.y, r16.w, l(2) + dp3 r18.x, r20.xyzx, r20.xyzx + max r18.x, r18.x, l(1.175494351E-38) + rsq r18.x, r18.x + mul r20.xyz, r18.xxxx, r20.xyzx + mad r20.xyz, -r20.xyzx, cb4[r16.w + 288].xxxx, v2.xyzx + mul r18.x, l(5.000000), cb4[r16.w + 288].y + mad r20.xyz, r10.xyzx, r18.xxxx, r20.xyzx + mul r25.xyzw, r20.yyyy, cb4[r17.y + 65].xyzw + mad r25.xyzw, cb4[r17.y + 64].xyzw, r20.xxxx, r25.xyzw + mad r20.xyzw, cb4[r17.y + 66].xyzw, r20.zzzz, r25.xyzw + add r20.xyzw, r20.xyzw, cb4[r17.y + 67].xyzw + div r20.xyz, r20.xyzx, r20.wwww + ge r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xxyz + ge r24.yzw, r20.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000) + add r25.xy, -cb4[r16.w + 344].xyxx, cb4[r16.w + 344].zwzz + mad r20.xy, r20.xyxx, r25.xyxx, cb4[r16.w + 344].xyxx + mad r25.xy, r20.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r25.xy, r25.xyxx + mad r20.xy, r20.xyxx, cb4[400].zwzz, -r25.xyxx + add r26.xyzw, r20.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r25.zw, -r20.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r26.xz, r20.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r20.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r20.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r20.xyxx + mul r30.xy, r20.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r20.xy, -r26.xzxx, r26.xzxx, r25.zwzz + add r20.xy, r20.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r31.xy, r20.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r20.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r30.z, r31.x + mov r30.w, r20.x + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r20.y + mov r28.z, r29.y + mov r28.w, r27.z + add r20.xyw, r28.zyzw, r31.zyzw + div r27.xyz, r29.xzwx, r26.zwyz + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyz, r27.yxzy, cb4[400].xxxx + div r28.xyz, r28.zywz, r20.xywx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb4[400].yyyy + mov r27.w, r28.x + mad r29.xyzw, r25.xyxy, cb4[400].xyxy, r27.ywxw + mad r25.zw, r25.xxxy, cb4[400].xxxy, r27.zzzw + mov r28.w, r27.y + mov r27.yw, r28.yyyz + mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r27.xyzy + mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz + mad r27.xyzw, r25.xyxy, cb4[400].xyxy, r27.xwzw + mul r31.xyzw, r20.xxxy, r26.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r29.xyxx, t2.xxxx, s2, r20.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r29.zwzz, t2.xxxx, s2, r20.z + mul r18.x, r18.x, r31.y + mad r17.y, r31.x, r17.y, r18.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r25.zwzz, t2.xxxx, s2, r20.z + mad r17.y, r31.z, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.xyxx, t2.xxxx, s2, r20.z + mad r17.y, r31.w, r18.x, r17.y + mul r25.xyzw, r20.yyww, r26.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.xyxx, t2.xxxx, s2, r20.z + mad r17.y, r25.x, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.zwzz, t2.xxxx, s2, r20.z + mad r17.y, r25.y, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.zwzz, t2.xxxx, s2, r20.z + mad r17.y, r25.z, r18.x, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r27.xyxx, t2.xxxx, s2, r20.z + mad r17.y, r25.w, r18.x, r17.y + or r22.yzw, r22.yyzw, r24.yyzw + or r18.x, r22.z, r22.y + or r18.x, r22.w, r18.x + and r20.x, r20.z, l(0x7fffffff) + ult r20.x, l(0x7f800000), r20.x + or r18.x, r18.x, r20.x + mul r20.x, r20.w, r26.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.y, r27.zwzz, t2.xxxx, s2, r20.z + mad r17.y, r20.x, r20.y, r17.y + add r17.y, r17.y, l(-1.000000) + mad r16.w, cb4[r16.w + 288].w, r17.y, l(1.000000) + movc r16.w, r18.x, l(1.000000), r16.w + else + dp3 r17.y, r9.xyzx, r23.xyzx + add_sat r16.w, r17.y, l(1.000000) + endif + else + mov r16.w, l(1.000000) + endif + if_z cb3[r13.z + 6].w + mul r20.xyz, r13.xxxx, cb3[r13.y + 6].xyzx + add r17.y, l(1.000000), -cb3[r17.z + 6].y + max r18.x, r20.y, r20.x + max r18.x, r20.z, r18.x + mul r18.x, r9.w, r18.x + max r18.x, r18.x, l(1.000000) + div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x + mad r17.y, r18.x, cb3[r17.z + 6].y, r17.y + mul r20.xyz, r17.yyyy, cb3[r13.y + 6].xyzx + mul r17.y, l(0.250000), cb3[r17.z + 6].x + add_sat r18.x, r18.y, l(0.500000) + mad r20.w, -cb3[r17.z + 6].x, l(0.250000), l(1.000000) + mad r17.y, r18.x, r20.w, r17.y + mul r20.xyz, r17.yyyy, r20.xyzx + mov r22.yzw, r21.xxzw + mov r24.yzw, r21.xxzw + mov r17.y, l(1.000000) + mov r18.x, l(0) + else + ieq r20.w, l(3), cb3[r13.z + 6].w + if_nz r20.w + mad r25.xy, cb3[r17.z + 6].xxxx, l(-0.600000, -0.399999976, 0.000000, 0.000000), l(0.800000, 0.900000, 0.000000, 0.000000) + add r20.w, -r25.x, r25.y + add r21.y, r22.x, -r25.x + div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w + mul_sat r20.w, r20.w, r21.y + mad r21.y, r20.w, l(-2.000000), l(3.000000) + mul r20.w, r20.w, r20.w + mul r20.w, r20.w, r21.y + mul r20.w, r16.w, r20.w + mul r13.x, r13.x, r20.w + mul r25.xyz, r23.zxyz, cb0[6].xyzx + mad r25.xyz, cb0[6].zxyz, r23.xyzx, -r25.xyzx + mul r26.xyz, r25.xyzx, cb0[6].zxyz + mad r25.xyz, cb0[6].yzxy, r25.yzxy, -r26.xyzx + dp3 r20.w, r25.xyzx, r25.xyzx + rsq r20.w, r20.w + mul r25.xyz, r20.wwww, r25.xyzx + dp3_sat r18.z, r7.xyzx, -r25.xyzx + mad r22.yzw, cb3[r17.z + 6].yyyy, r4.xxyz, l(0.000000, 0.500000, 0.500000, 0.500000) + mov r24.yzw, l(0,0,0,0) + mov r17.y, l(1.000000) + mov r18.x, l(0) + else + ieq r20.w, l(1), cb3[r13.z + 6].w + if_nz r20.w + add r18.y, r18.y, cb3[r17.z + 6].x + max_sat r18.y, r18.y, l(-1.000000) + mul r18.z, r16.w, r18.y + mul r24.yzw, r6.xxyz, cb3[r17.z + 6].yyyy + mov r17.y, l(1.000000) + mov r18.x, l(0) + else + ieq r16.w, l(2), cb3[r13.z + 6].w + if_nz r16.w + add r18.y, l(0.050000), cb3[r17.z + 6].x + add r18.y, r3.z, -r18.y + mul_sat r18.y, r18.y, l(-10.000000) + mad r21.y, r18.y, l(-2.000000), l(3.000000) + mul r18.y, r18.y, r18.y + mul r18.y, r18.y, r21.y + add r21.y, l(1.000000), -cb3[r17.z + 6].z + mad r21.y, r5.x, cb3[r17.z + 6].z, r21.y + mul r17.y, r18.y, r21.y + else + mov r17.y, l(1.000000) + endif + and r18.x, r16.w, cb3[r17.z + 6].y + mov r24.yzw, l(0,0,0,0) + endif + and r22.yzw, r12.xxyz, r20.wwww + endif + mov r20.xyz, cb3[r13.y + 6].xyzx + endif + ine r13.y, l(3), cb3[r13.z + 6].w + if_nz r13.y + mad r13.y, r18.x, r6.w, r5.y + mad r23.xyz, r0.xyzx, r1.wwww, r23.xyzx + dp3 r13.z, r23.xyzx, r23.xyzx + rsq r13.z, r13.z + mul r23.xyz, r13.zzzz, r23.xyzx + dp3 r13.z, r3.xywx, r23.xyzx + mul r16.w, r13.y, r13.y + mad r17.z, r13.z, r16.w, -r13.z + mad r13.z, r17.z, r13.z, l(1.000000) + mul r13.z, r13.z, r13.z + ne r17.z, r13.z, r16.w + div r13.z, r16.w, r13.z + movc r13.z, r17.z, r13.z, l(1.000000) + mad r13.y, r24.x, l(2.000000), r13.y + add r13.y, r13.y, l(0.000100) + div r13.y, l(0.500000), r13.y + mad r13.y, r13.z, r13.y, l(-0.0000610351562) + max r13.y, r13.y, l(0.000000) + min r13.y, r13.y, l(20.000000) + mul r23.xyz, r13.yyyy, r14.xyzx + mul r23.xyz, r17.yyyy, r23.xyzx + mul r18.xyw, r23.xyxz, cb3[r18.w + 6].zzzz + else + mov r18.xyw, l(0,0,0,0) + endif + mul r13.xyz, r13.xxxx, r20.xyzx + add r20.xyz, r22.yzwy, -r24.yzwy + mad r20.xyz, r18.zzzz, r20.xyzx, r24.yzwy + mul r20.xyz, r13.xyzx, r20.xyzx + mul r13.xyz, r18.xywx, r13.xyzx + mul r13.xyz, r18.zzzz, r13.xyzx + mad r13.xyz, r20.xyzx, r15.yyyy, r13.xyzx + add r16.xyz, r13.xyzx, r16.xyzx + endif + else + mov r19.x, l(0) + endif + movc r16.xyz, r19.xxxx, r19.yzwy, r16.xyzx + endif + endif + mov r14.w, r17.x + endloop + mov r15.xzw, r16.xxyz + iadd r10.w, r10.w, l(1) +endloop +lt r0.x, l(0.500000), cb5[3].x +if_nz r0.x + dp3 r0.x, r15.xzwx, l(0.212672904, 0.715152204, 0.072175, 0.000000) + add r3.xyz, -r0.xxxx, r15.xzwx + mad r0.xyz, cb5[3].zzzz, r3.xyzx, r0.xxxx + add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) + mad r0.xyz, cb5[3].wwww, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mul r3.xyz, r0.xyzx, cb5[3].yyyy + mad r0.xyz, -r0.xyzx, cb5[3].yyyy, cb5[7].xyzx + mad r0.xyz, cb5[7].wwww, r0.xyzx, r3.xyzx + add r2.w, l(1.000000), -cb5[4].x + mov_sat r17.w, r17.w + add r3.x, -r17.w, l(1.000000) + add r3.y, -r2.w, l(1.000000) + add r2.w, -r2.w, r3.x + div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y + mul_sat r2.w, r2.w, r3.x + mad r3.x, r2.w, l(-2.000000), l(3.000000) + mul r2.w, r2.w, r2.w + mul r2.w, r2.w, r3.x + mul r3.xyz, r2.wwww, cb5[8].xyzx + mad r15.xzw, r3.xxyz, cb5[4].yyyy, r0.xxyz +endif +div r0.xyz, r15.xzwx, cb0[109].xxxx +eq r2.w, l(1.000000), cb5[2].x +movc o0.w, r2.w, r4.w, l(1.000000) +lt r2.w, cb0[198].w, l(0.500000) +if_nz r2.w + mul r0.w, r0.w, r1.w + mad r1.w, v2.y, cb0[156].w, cb0[157].w + max r1.w, r1.w, l(0.010000) + mad r2.w, r0.w, cb0[154].w, -cb0[153].w + max r2.w, r2.w, l(0.000000) + mul r3.x, r1.w, l(-1.442695) + exp r3.x, r3.x + add r3.x, -r3.x, l(1.000000) + div r1.w, r3.x, r1.w + mad r3.x, v2.y, cb0[156].w, cb0[158].w + mul r3.x, r3.x, l(1.442695) + exp r3.x, r3.x + mul r1.w, r1.w, r3.x + mul r1.w, r1.w, -r2.w + mul r3.xyz, r1.wwww, cb0[155].xyzx + mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) + exp r3.xyz, r3.xyzx + dp3 r1.w, -r2.xyzx, cb0[154].xyzx + mad r2.w, cb0[155].w, cb0[155].w, l(1.000000) + dp2 r3.w, r1.wwww, cb0[155].wwww + add r2.w, r2.w, -r3.w + lt r3.w, l(0.000000), cb0[163].z + if_nz r3.w + and r11.w, l(7), cb0[108].w + imad r4.xyz, r11.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r3.w, r4.y, r4.z, r4.x + imad r4.x, r4.z, r3.w, r4.y + imad r4.y, r3.w, r4.x, r4.z + imad r5.x, r4.x, r4.y, r3.w + dp3 r1.x, -r2.xyzx, -r1.xyzx + add r1.y, v2.y, -cb0[44].y + lt r1.z, l(5.960464478E-08), r1.x + div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x + and r1.x, r1.x, r1.z + mul r1.x, r1.x, cb0[163].w + div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w + mul r2.x, r1.z, r1.x + mad r2.y, r2.x, r1.y, cb0[44].y + mad r1.y, -r2.x, r1.y, r1.y + mul r2.x, r1.y, cb0[159].z + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r2.z, r2.y, -cb0[159].x + mul r2.z, r2.z, cb0[159].z + max r2.xz, r2.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + exp r2.z, -r2.z + mul r2.z, r2.z, cb0[159].y + lt r3.w, l(5.960464478E-08), |r2.x| + exp r4.z, -r2.x + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r2.x + mad r2.x, -r2.x, l(0.240226507), l(0.693147182) + movc r2.x, r3.w, r4.z, r2.x + add r2.y, r2.y, -cb0[162].z + mul r2.y, r2.y, cb0[162].x + max r2.y, r2.y, l(-127.000000) + exp r2.y, -r2.y + mul r2.y, r2.y, cb0[162].y + lt r3.w, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r3.w, r4.z, r1.y + mul r1.y, r1.y, r2.y + mad r1.y, r2.z, r2.x, r1.y + mad r1.x, -r1.x, r1.z, l(1.000000) + mul r1.x, r0.w, r1.x + mul r1.x, r1.x, r1.y + exp r1.x, -r1.x + min r1.x, r1.x, l(1.000000) + max r1.x, r1.x, cb0[161].w + mad_sat r1.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx + add r1.x, r1.y, r1.x + add r1.x, r1.z, r1.x + min r1.x, r1.x, l(1.000000) + imad r5.y, r4.y, r5.x, r4.x + ushr r1.yz, r5.xxyx, l(0, 16, 16, 0) + utof r1.yz, r1.yyzy + mad r1.yz, r1.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + mad r1.yz, r1.yyzy, cb0[167].wwww, r5.zzwz + mul r2.xy, r1.yzyy, cb0[165].xyxx + mad r1.y, v0.w, cb0[164].x, cb0[164].y + log r1.y, r1.y + mul r1.y, r1.y, cb0[164].z + div r2.z, r1.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t18.xyzw, s0, l(0.000000) + add r1.y, v0.w, -cb0[166].z + mul_sat r1.y, r1.y, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r1.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.xyz, r1.yyyy, cb0[161].xyzx + mad r2.xyz, r2.xyzx, r4.wwww, r4.xyzx + mul r1.x, r1.x, r4.w + else + add r1.y, v2.y, -cb0[44].y + mul r1.z, r1.y, cb0[159].z + mul r1.y, r1.y, cb0[162].x + max r1.yz, r1.yyzy, l(0.000000, -127.000000, -127.000000, 0.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r1.z| + exp r4.y, -r1.z + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r1.z + mad r1.z, -r1.z, l(0.240226507), l(0.693147182) + movc r1.z, r4.x, r4.y, r1.z + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.y, r4.z, r1.y + mul r1.y, r1.y, r4.x + mad r1.y, r3.w, r1.z, r1.y + mul r1.y, r0.w, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.w, r1.y, r4.x + add r0.w, r4.y, r0.w + min r1.x, r0.w, l(1.000000) + add r0.w, -r1.x, l(1.000000) + mul r2.xyz, r0.wwww, cb0[161].xyzx + endif + mul r4.xyz, r1.xxxx, r3.xyzx + mad r0.w, r1.w, r1.w, l(1.000000) + mul r0.w, r0.w, l(0.0596831031) + mad r1.yzw, cb0[156].xxyz, r0.wwww, cb0[158].xxyz + mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) + mul r3.w, r2.w, l(12.566371) + sqrt r2.w, r2.w + mul r2.w, r2.w, r3.w + max r2.w, r2.w, l(0.001000) + div r0.w, r0.w, r2.w + mad_sat r1.yzw, cb0[157].xxyz, r0.wwww, r1.yyzw + mul r1.yzw, r1.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) + add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mul r1.yzw, r1.yyzw, r3.xxyz + mad r1.xyz, r1.yzwy, r1.xxxx, r2.xyzx + mad o0.xyz, r0.xyzx, r4.xyzx, r1.xyzx +else + mov o0.xyz, r0.xyzx +endif +mov o1.z, l(1.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xF901F0EC.cso b/src/games/endfield/deferred-lighting/0xF901F0EC.cso new file mode 100644 index 0000000000000000000000000000000000000000..e49e28b8933534b3935b54d5add55ae95eb2dd34 GIT binary patch literal 29572 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0.asm new file mode 100644 index 0000000000..96446dd9a0 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0.asm @@ -0,0 +1,993 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 22:35:08 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[5], immediateIndexed +dcl_constantbuffer CB4[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 25 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t22.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t23.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t24.xyzw +mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) +ftou r1.xz, r1.xxzx +ubfe r4.x, l(7), l(3), r1.x +utof r4.x, r4.x +round_ne r1.y, r1.y +ftou r1.y, r1.y +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r5.y, -r4.y, l(1.000000) +lt r4.y, r5.y, l(0.000000) +ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) +movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) +mul r4.zw, r4.zzzw, r6.xxxy +movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx +dp3 r2.x, r5.xyzx, r5.xyzx +rsq r2.x, r2.x +mul r6.xyz, r2.xxxx, r5.xyzx +and r2.y, r1.y, l(7) +utof r2.y, r2.y +mad r2.y, r2.y, l(0.107142866), l(0.500000) +utof r4.yz, r0.xxyx +mul r5.xz, v0.xxyx, cb0[82].zzwz +mad r7.xy, r5.xzxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r7.zw, r4.yyyz, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r7.zw, r7.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r4.w, r7.zwzz, t1.yzwx, s0, l(0.000000) +mul r8.xyzw, -r7.yyyy, cb0[25].xyzw +mad r7.xyzw, cb0[24].xyzw, r7.xxxx, r8.xyzw +mad r7.xyzw, cb0[26].xyzw, r4.wwww, r7.xyzw +add r7.xyzw, r7.xyzw, cb0[27].xyzw +div r7.xyz, r7.xyzx, r7.wwww +mul r4.w, r7.y, cb0[1].z +mad r4.w, cb0[0].z, r7.x, r4.w +mad r4.w, cb0[2].z, r7.z, r4.w +add r4.w, r4.w, cb0[3].z +eq r5.w, l(0.000000), cb0[86].w +add r8.xyz, -r7.xyzx, cb0[44].xyzx +mov r9.x, cb0[0].z +mov r9.y, cb0[1].z +mov r9.z, cb0[2].z +movc r8.xyz, r5.wwww, r8.xyzx, r9.xyzx +dp3 r5.w, r8.xyzx, r8.xyzx +max r8.w, r5.w, l(9.999999939E-09) +rsq r8.w, r8.w +mul r10.xyz, r8.wwww, r8.xyzx +mul r5.w, r5.w, r8.w +lt r9.w, l(0.000488281250), cb0[234].x +if_nz r9.w + sample_b_indexable(texture2d)(float,float,float,float) r9.w, v1.xyxx, t21.yzwx, s1, cb0[108].x +else + mov r9.w, l(1.000000) +endif +lt r11.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[226].xyxx +if_nz r11.x + add r10.w, |r6.y|, |r6.x| + add r10.w, |r6.z|, r10.w + div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r10.w + mul r11.xzw, |r6.xxyz|, r10.wwww + mul r12.xyzw, r11.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) + add r12.xyz, r12.zwzz, r12.xxyx + mad r11.xzw, r11.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r12.xxyz + mul r12.xyz, r7.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r10.w, r12.xyzx, t9.yzwx, s2, l(0.000000) + mad r10.w, r10.w, l(2.000000), l(-1.000000) + mul r11.xzw, r10.wwww, r11.xxzw + mov r10.w, |r6.y| + add r10.w, r10.w, l(-0.700000) + mul_sat r10.w, r10.w, l(4.000000) + mad r12.x, r10.w, l(-2.000000), l(3.000000) + mul r10.w, r10.w, r10.w + mul r10.w, r10.w, r12.x + add r12.x, -cb0[229].z, cb0[229].y + mad r10.w, r10.w, r12.x, cb0[229].z + mul r11.xzw, r10.wwww, r11.xxzw +else + mov r11.xzw, l(0,0,0,0) +endif +if_nz r11.y + mul r12.xyz, r6.xyzx, cb0[233].zzzz + mul r13.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r12.xyz, r12.xyzx, cb0[225].xxxx, r13.xyzx + max r10.w, -r6.y, l(0.000000) + min r10.w, r10.w, l(0.900000) + add r10.w, -r10.w, l(1.000000) + mad r2.x, -r5.y, r2.x, l(-0.200000) + mul_sat r2.x, r2.x, l(-10.000000) + mad r5.y, r2.x, l(-2.000000), l(3.000000) + mul r2.x, r2.x, r2.x + mul r2.x, r2.x, r5.y + max r2.x, r2.x, l(0.100000) + min r2.x, r2.x, l(1.000000) + mul r2.x, r2.x, r10.w + mad r12.xyz, r12.xyzx, r2.xxxx, r7.xyzx + add r11.xyz, r11.xzwx, r12.xyzx + mul r12.xyz, r11.yyyy, cb3[1].xyzx + mad r11.xyw, cb3[0].xyxz, r11.xxxx, r12.xyxz + mad r11.xyz, cb3[2].xyzx, r11.zzzz, r11.xywx + add r11.xyz, r11.xyzx, cb3[3].xyzx + mad r12.x, r11.x, l(0.500000), cb3[4].x + mad r2.x, r11.y, l(0.500000), l(0.500000) + add r12.z, -r2.x, cb3[4].y + add r11.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r2.x, r11.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r11.xyxx, t8.xxxx, s4, r2.x +else + mov r2.x, l(1.000000) +endif +mov_sat r5.y, r6.y +add r10.w, l(1.000000), -cb0[230].w +mad r5.y, r5.y, r10.w, cb0[230].w +add r11.xy, r7.xzxx, -cb0[44].xzxx +max r10.w, |r11.y|, |r11.x| +mul r11.x, r5.y, cb0[230].z +mul r11.y, r2.x, r5.y +mul r11.z, l(0.0500000119), cb0[222].w +mad r11.w, -cb0[222].w, l(0.700000), r10.w +div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z +mul_sat r11.z, r11.z, r11.w +mad r11.w, r11.z, l(-2.000000), l(3.000000) +mul r11.z, r11.z, r11.z +mul r11.z, r11.z, r11.w +mad r2.x, -r5.y, r2.x, l(1.000000) +mad r2.x, r11.z, r2.x, r11.y +mad r5.y, -cb0[230].z, r5.y, l(1.000000) +mad r2.x, r2.x, r5.y, r11.x +mad r5.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r10.w, r10.w, -cb0[222].w +div r5.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y +mul_sat r5.y, r5.y, r10.w +mad r10.w, r5.y, l(-2.000000), l(3.000000) +mul r5.y, r5.y, r5.y +mul r5.y, r5.y, r10.w +add r10.w, -r2.x, cb0[230].y +mad r2.x, r5.y, r10.w, r2.x +add r2.x, -r2.x, l(1.000000) +mad r2.x, -r9.w, r2.x, l(1.000000) +mad_sat r5.y, r2.z, l(0.300000), l(0.250000) +mul r5.y, r5.y, cb0[222].x +mul r5.y, r2.x, r5.y +mad r5.y, r5.y, l(-0.750000), l(1.000000) +mul r3.xyz, r3.xyzx, r5.yyyy +min r5.y, r2.z, l(0.300000) +mul r2.x, r2.x, cb0[222].x +mul r2.xw, r2.xxxw, l(0.500000, 0.000000, 0.000000, 3.000000) +add r5.y, -r2.z, r5.y +mad r11.z, r2.x, r5.y, r2.z +mul r2.x, r2.y, l(0.080000) +dp3 r2.z, r6.xyzx, r10.xyzx +max r5.y, r2.z, l(0.000000) +mad r12.xyzw, r11.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r9.w, r12.x, r12.x +mul r10.w, r5.y, l(-9.280000) +exp r10.w, r10.w +min r9.w, r9.w, r10.w +mad r9.w, r9.w, r12.x, r12.y +mad r12.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r12.zwzz +ld_indexable(texture2d)(float,float,float,float) r12.z, r0.xyzz, t6.zwxy +lt r0.z, l(0.001000), r12.z +if_nz r0.z + bfi r0.z, l(3), l(2), r1.x, l(0) + mul r1.x, r1.w, l(3.000000) + ftou r1.x, r1.x + bfi r0.z, l(2), l(0), r1.x, r0.z + utof r0.z, r0.z + mul r1.x, r0.z, l(0.0322580636) + ubfe r1.y, l(7), l(3), r1.y + utof r1.y, r1.y + mul r1.y, r1.y, l(0.00787401572) + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xzxx, t11.yzwx, s1, l(0.000000) + dp3 r9.w, -r10.xyzx, r6.xyzx + add r9.w, r9.w, r9.w + mad r13.xyz, r6.xyzx, -r9.wwww, -r10.xyzx + dp3 r9.w, -cb2[0].xyzx, r13.xyzx + mad r14.xyz, cb2[0].xyzx, r9.wwww, r13.xyzx + lt r9.w, r9.w, cb2[4].z + dp3 r10.w, r14.xyzx, r14.xyzx + max r10.w, r10.w, l(0.0000610351562) + rsq r10.w, r10.w + mul r14.xyz, r10.wwww, r14.xyzx + mul r14.xyz, r14.xyzx, cb2[4].yyyy + mad r14.xyz, -cb2[0].xyzx, cb2[4].zzzz, r14.xyzx + dp3 r10.w, r14.xyzx, r14.xyzx + rsq r10.w, r10.w + mul r14.xyz, r10.wwww, r14.xyzx + movc r13.xyz, r9.wwww, r14.xyzx, r13.xyzx + mad r8.xyz, r8.xyzx, r8.wwww, r13.xyzx + dp3 r8.w, r8.xyzx, r8.xyzx + max r8.w, r8.w, l(0.0000610351562) + rsq r8.w, r8.w + mul r8.xyz, r8.wwww, r8.xyzx + dp3 r8.w, r6.xyzx, r13.xyzx + mov_sat r11.x, r8.w + dp3_sat r9.w, r6.xyzx, r8.xyzx + dp3 r10.w, r10.xyzx, r13.xyzx + min r11.y, r5.y, l(1.000000) + mul r11.w, r11.z, r11.z + mul r11.w, r11.w, r11.w + mad r13.x, r9.w, r11.w, -r9.w + mad r9.w, r13.x, r9.w, l(1.000000) + dp3_sat r8.x, r10.xyzx, r8.xyzx + add r8.x, -r8.x, l(1.000000) + mul r8.y, r8.x, r8.x + mul r8.y, r8.y, r8.y + mul r8.z, r8.x, r8.y + add r13.x, -r11.z, l(1.000000) + mad r13.y, -r13.x, l(0.383026), l(-0.0761947036) + mad r13.y, r13.x, r13.y, l(1.049970) + mad r13.x, r13.x, r13.y, l(0.409255) + min r13.x, r13.x, l(0.999000) + add r13.y, -r13.x, l(1.000000) + mad r2.y, -r2.y, l(0.080000), l(1.000000) + mad r2.y, r2.y, l(0.0476190485), r2.x + mov_sat r13.z, -r10.w + mul r13.z, r13.z, r13.z + mad r13.z, r13.z, l(-0.640000), l(1.000000) + mul r13.z, r13.z, r13.z + mad r8.x, -r8.y, r8.x, l(1.000000) + mad r8.x, r2.x, r8.x, r8.z + mul r8.y, r9.w, r9.w + div r8.y, r11.w, r8.y + mad r14.xy, -r11.yxyy, r11.wwww, r11.yxyy + mad r14.xy, r14.xyxx, r11.yxyy, r11.wwww + sqrt r14.xy, r14.xyxx + mul r14.xy, r11.xyxx, r14.xyxx + add r8.z, r14.y, r14.x + add r8.z, r8.z, l(0.000100) + div r8.z, l(0.500000), r8.z + mul r8.y, r8.z, r8.y + mul r8.x, r8.y, r8.x + min r8.x, r8.x, l(2048.000000) + mad r14.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r8.y, r14.xyxx, t10.yxzw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r8.z, r14.zwzz, t10.yzxw, s1, l(0.000000) + mul r8.y, r8.z, r8.y + mul r8.y, r13.x, r8.y + div r8.y, r8.y, r13.y + mul r8.z, r2.y, r2.y + mul r8.y, r8.y, r8.z + mad r2.y, -r2.y, r13.y, l(1.000000) + div r2.y, r8.y, r2.y + add r2.y, r2.y, r8.x + add_sat r2.z, r2.z, l(0.200000) + mov_sat r8.x, r10.w + add r8.x, r8.x, l(0.500000) + min r8.x, r8.x, l(1.000000) + mul r8.y, r2.z, r8.x + add_sat r8.z, r10.w, l(1.000000) + mad r2.z, -r2.z, r8.x, l(1.000000) + mad r2.z, r8.z, r2.z, r8.y + mul r2.y, r2.z, r2.y + mul r2.y, r1.y, r2.y + mul r8.xyz, r1.yyyy, r3.xyzx + ubfe r2.z, l(7), l(3), r1.z + utof r2.z, r2.z + mul r2.z, r2.z, l(0.00787401572) + mul r2.y, r2.y, cb2[4].x + max r2.y, r2.y, l(0.000000) + min r2.y, r2.y, l(1000.000000) + mul r2.y, r11.x, r2.y + mad r8.xyz, r8.xyzx, r2.zzzz, r2.yyyy + max r2.y, r3.y, r3.x + max r2.y, r3.z, r2.y + max r2.y, r2.y, l(0.010000) + div r13.xyw, r3.xyxz, r2.yyyy + mul r2.y, r4.x, l(0.00393700786) + mul r13.xyw, r2.yyyy, r13.xyxw + add_sat r2.y, -r8.w, l(0.500000) + ne r2.z, r13.z, l(0.360000) + div r9.w, l(0.360000), r13.z + movc r2.z, r2.z, r9.w, l(1.000000) + mul r2.y, r2.z, r2.y + mad_sat r0.z, r0.z, l(0.0322580636), r8.w + add r0.z, -r11.x, r0.z + mul r11.xyw, r0.zzzz, r3.xyxz + mad r11.xyw, r13.xyxw, r2.yyyy, r11.xyxw + mad r8.xyz, r11.xywx, r1.yyyy, r8.xyzx + mul r8.xyz, r8.xyzx, cb2[1].xyzx + mov r12.w, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r12.zwzz, t7.xywz, s1, cb0[108].x + add r0.z, -r12.z, l(1.000000) + mad r11.xyw, r8.xyxz, r11.xyxw, -r8.xyxz + mad r8.xyz, r0.zzzz, r11.xywx, r8.xyzx + max r0.z, r1.y, r1.w + add r0.z, -r1.w, r0.z + mad r0.z, r1.x, r0.z, r1.w + mul r1.xyw, r0.zzzz, r8.xyxz +else + mov r1.xyw, l(0,0,0,0) +endif +ne r2.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r2.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + mad r0.z, r0.z, l(0.750000), l(0.250000) + min r0.z, r3.w, r0.z + add r2.y, r0.z, r5.y + mad r8.x, r11.z, l(-16.000000), l(-1.000000) + exp r8.x, r8.x + log r2.y, |r2.y| + mul r2.y, r2.y, r8.x + exp r2.y, r2.y + add r2.y, r0.z, r2.y + add r2.y, r2.y, l(-1.000000) + mov_sat r8.xyz, r2.yyyy + mad r11.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) + mul r11.xyw, r0.zzzz, r11.xyxw + mad r11.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r11.xyxw + add r11.xyw, r11.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) + mul r11.xyw, r0.zzzz, r11.xyxw + mad r11.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r11.xyxw + add r11.xyw, r11.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) + mul r11.xyw, r0.zzzz, r11.xyxw + max r11.xyw, r0.zzzz, r11.xyxw +else + mov r8.xyz, r3.wwww + mov r11.xyw, r3.wwww +endif +mad r13.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r13.xyz, r7.xzyx, -r13.xyzx +max r0.z, |r13.y|, |r13.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r2.y, |r13.z|, l(-208.000000) +mul_sat r2.y, r2.y, l(0.031250) +max r0.z, r0.z, r2.y +ne r2.y, l(0.000000), cb0[210].w +lt r3.w, r0.z, l(1.000000) +and r2.y, r2.y, r3.w +if_nz r2.y + mad r13.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r13.xyz, r7.xzyx, -r13.xyzx + max r2.y, |r13.y|, |r13.x| + add r2.y, r2.y, l(-29.000000) + mul_sat r2.y, r2.y, l(0.500000) + add r3.w, |r13.z|, l(-13.000000) + mul_sat r3.w, r3.w, l(0.500000) + max r2.y, r2.y, r3.w + lt r3.w, r2.y, l(1.000000) + if_nz r3.w + mad r13.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r14.xyz, r13.xyzx, cb0[211].xyzx + round_ni r14.xyz, r14.xyzx + mad r13.xyz, r13.xyzx, cb0[211].xyzx, -r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r14.xyw, r13.xyzx, t15.yzwx, s2, l(0.000000) + add r3.w, -r2.y, l(1.000000) + mul r8.w, l(0.500000), cb0[211].y + mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) + max r8.w, r8.w, r13.y + min r8.w, r9.w, r8.w + mul r13.w, r8.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r13.xwzx, t16.xyzw, s1, l(0.000000) + mad r8.w, r15.w, r3.w, r0.z + add r16.xyz, r13.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t16.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r14.yyyy, r16.xyzx + mov r16.w, r14.y + mul r16.xyzw, r3.wwww, r16.xyzw + add r13.xyz, r13.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xyz, r13.xyzx, t16.xyzw, s1, l(0.000000) + mad r13.xyz, r13.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r13.xyz, r14.xxxx, r13.xyzx + mov r13.w, r14.x + mul r13.xyzw, r3.wwww, r13.xyzw + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r14.wwww, r15.xyzx + mul r14.xyzw, r3.wwww, r14.xyzw + else + mov r16.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r8.w, r0.z + endif + mad r15.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r15.xyz, r7.xzyx, -r15.xyzx + max r3.w, |r15.y|, |r15.x| + add r3.w, r3.w, l(-116.000000) + mul_sat r3.w, r3.w, l(0.125000) + add r9.w, |r15.z|, l(-52.000000) + mul_sat r9.w, r9.w, l(0.125000) + max r3.w, r3.w, r9.w + lt r9.w, r3.w, l(1.000000) + if_nz r9.w + mad r15.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r15.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) + add r9.w, -r3.w, l(1.000000) + mul r2.y, r2.y, r9.w + mul r9.w, l(0.500000), cb0[211].y + mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) + max r9.w, r9.w, r15.y + min r9.w, r10.w, r9.w + mul r15.w, r9.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) + mad r8.w, r18.w, r2.y, r8.w + add r19.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mad r16.xyzw, r19.xyzw, r2.yyyy, r16.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r17.xxxx, r15.xyzx + mov r15.w, r17.x + mad r13.xyzw, r15.xyzw, r2.yyyy, r13.xyzw + mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r15.xyzx + mad r14.xyzw, r17.xyzw, r2.yyyy, r14.xyzw + endif + lt r2.y, l(0.000000), r3.w + if_nz r2.y + mad r15.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r15.xyzx, cb0[211].xyzx + mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r17.xyzx + mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r18.xyzx, r15.xyzx + min r15.xyz, r17.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r15.xyzx, t19.yzwx, s2, l(0.000000) + add r2.y, -r0.z, l(1.000000) + mul r2.y, r2.y, r3.w + max r3.w, r18.y, r15.y + min r3.w, r17.y, r3.w + mul r15.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t20.xyzw, s1, l(0.000000) + add r18.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t20.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r19.yyyy, r18.xyzx + mov r18.w, r19.y + mad r16.xyzw, r18.xyzw, r2.yyyy, r16.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t20.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r19.xxxx, r15.xyzx + mov r15.w, r19.x + mad r13.xyzw, r15.xyzw, r2.yyyy, r13.xyzw + mad r15.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r19.wwww, r15.xyzx + mad r14.xyzw, r19.xyzw, r2.yyyy, r14.xyzw + mad r8.w, r17.w, r2.y, r8.w + endif + mad_sat r2.y, r8.w, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r2.y + add r0.z, r0.z, r2.y + mul r15.y, r0.z, l(0.500000) +else + mov r16.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) +endif +mul r17.xyzw, r15.yyyx, cb0[213].xyzw +mad r17.y, r17.w, l(0.500000), r17.y +mul r12.zw, r15.yyyx, cb0[213].wwwy +mad r17.w, r12.w, l(0.375000), r12.z +add r14.xyzw, r14.xyzw, r17.xyzw +mul r17.xyzw, r15.yyyx, cb0[214].xyzw +mad r17.y, r17.w, l(0.500000), r17.y +mul r12.zw, r15.yyyx, cb0[214].wwwy +mad r17.w, r12.w, l(0.375000), r12.z +add r13.xyzw, r13.xyzw, r17.xyzw +mul r17.xyzw, r15.yyyx, cb0[215].xyzw +mad r17.y, r17.w, l(0.500000), r17.y +mul r12.zw, r15.yyyx, cb0[215].wwwy +mad r17.w, r12.w, l(0.375000), r12.z +add r15.xyzw, r16.xyzw, r17.xyzw +ge r12.zw, r5.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r12.w, r12.z +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r16.xyzw, r5.xzxx, t14.xyzw, s1, l(0.000000) + lt r17.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r16.xyzw| + or r5.xz, r17.zzwz, r17.xxyx + or r0.z, r5.z, r5.x + if_nz r0.z + dp3 r0.z, r16.yzwy, r16.yzwy + sqrt r0.z, r0.z + mov r5.x, l(1.000000) + mov r5.z, r0.z + mov r2.y, l(0) + loop + ge r3.w, l(4.600000), r5.z + breakc_nz r3.w + iadd r3.w, r2.y, l(1) + mul r12.zw, r5.xxxz, l(0.000000, 0.000000, 0.500000, 0.500000) + mov r5.xz, r12.zzwz + mov r2.y, r3.w + continue + endloop + mul r16.xyzw, r5.xxxx, r16.xyzw + dp3 r0.z, r16.yzwy, r16.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb4[3].x, cb4[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r17.x, r0.z, l(0.00390625000) + mov r17.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r5.xz, r17.xyxx, t13.xzyw, s1, l(0.000000) + mad r5.xz, r5.xxzx, cb4[2].xxyx, cb4[2].zzwz + mul r17.x, r5.x, l(3.54490781) + mul r17.yzw, r5.zzzz, r16.yyzw + mul r0.z, r16.x, l(0.406976730) + exp r0.z, r0.z + mul r16.xyzw, r0.zzzz, r17.xyzw + mov r17.xyzw, r16.xyzw + mov r0.z, l(0) + loop + uge r3.w, r0.z, r2.y + breakc_nz r3.w + mul r18.xyzw, r17.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r3.w, r18.xyzw, r17.xyzw + dp2 r5.x, r18.yxyy, r17.xyxx + dp2 r5.z, r18.zxzz, r17.xzxx + dp2 r8.w, r18.wxww, r17.xwxx + iadd r9.w, r0.z, l(1) + mov r17.x, r3.w + mov r17.yz, r5.xxzx + mov r17.w, r8.w + mov r0.z, r9.w + continue + endloop + mul r16.xyzw, r17.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r17.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r16.xyzw, r17.xyzw + dp2 r2.y, r16.yxyy, r17.xyxx + dp2 r3.w, r16.zxzz, r17.xzxx + dp2 r5.x, r16.wxww, r17.xwxx + mul r17.xyzw, r13.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r5.z, r16.xyzw, r17.xyzw + dp2 r8.w, r16.yxyy, r17.xyxx + dp2 r9.w, r16.zxzz, r17.xzxx + dp2 r10.w, r16.wxww, r17.xwxx + mul r17.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r12.z, r16.xyzw, r17.xyzw + dp2 r12.w, r16.yxyy, r17.xyxx + dp2 r16.y, r16.zxzz, r17.xzxx + dp2 r16.x, r16.wxww, r17.xwxx + mul r14.w, r0.z, l(0.886226952) + mul r14.x, r5.x, l(-1.02332675) + mul r14.y, r2.y, l(-1.02332675) + mul r14.z, r3.w, l(1.02332675) + mul r13.w, r5.z, l(0.886226952) + mul r13.x, r10.w, l(-1.02332675) + mul r13.y, r8.w, l(-1.02332675) + mul r13.z, r9.w, l(1.02332675) + mul r15.yw, r12.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r15.xz, r16.xxyx, l(-1.02332675, 0.000000, 1.02332675, 0.000000) + endif +endif +mov r6.w, l(1.000000) +dp4 r16.x, r14.xyzw, r6.xyzw +dp4 r16.y, r13.xyzw, r6.xyzw +dp4 r16.z, r15.xyzw, r6.xyzw +max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +dp3 r0.z, -r10.xyzx, r6.xyzx +add r0.z, r0.z, r0.z +mad r17.xyz, r6.xyzx, -r0.zzzz, -r10.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r2.y, r11.z, l(0.001000) +log r2.y, r2.y +mad r2.y, -r2.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r2.y +mul r5.xz, r4.yyzy, cb1[0].wwww +round_ni r5.xz, r5.xxzx +add r2.y, |r4.w|, -cb1[2].y +round_ni r2.y, r2.y +add r3.w, l(-1.000000), cb1[1].x +max r8.w, r2.y, l(0.000000) +min r3.w, r3.w, r8.w +ge r2.y, r3.w, r2.y +mad r5.x, r5.z, cb1[0].x, r5.x +ftoi r5.x, r5.x +iadd r5.x, r5.x, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.x, r5.x, l(0), t0.xxxx +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +and r3.w, r3.w, r5.x +and r2.y, r2.y, r3.w +mul r18.xyz, r16.xyzx, cb0[111].xxxx +dp3 r3.w, r18.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r7.w, l(1.000000) +mov r18.xyz, l(0,0,0,0) +mov r5.x, l(1.000000) +mov r5.z, r2.y +mov r8.w, l(0) +loop + lt r9.w, l(0.010000), r5.x + ine r10.w, r5.z, l(0) + and r10.w, r9.w, r10.w + if_nz r10.w + firstbit_lo r10.w, r5.z + ishl r11.z, l(1), r10.w + xor r5.z, r5.z, r11.z + ishl r10.w, r10.w, l(3) + dp4 r19.x, cb1[r10.w + 6].xyzw, r7.xyzw + dp4 r19.y, cb1[r10.w + 7].xyzw, r7.xyzw + dp4 r19.z, cb1[r10.w + 8].xyzw, r7.xyzw + ge r20.xyz, cb1[r10.w + 5].xyzx, |r19.xyzx| + and r11.z, r20.y, r20.x + and r11.z, r20.z, r11.z + if_nz r11.z + mul r11.z, l(0.100000), cb1[r10.w + 5].x + mul r20.xyz, |r19.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r12.zw, r20.xxxy, r20.xxxy + add r20.xyw, -|r19.xyxz|, cb1[r10.w + 5].xyxz + mul r20.xyw, r20.xyxw, cb1[r10.w + 9].xyxz + eq r16.w, l(1.000000), cb1[r10.w + 10].x + if_nz r16.w + dp3 r21.x, cb1[r10.w + 6].xyzx, r17.xyzx + dp3 r21.y, cb1[r10.w + 7].xyzx, r17.xyzx + dp3 r21.z, cb1[r10.w + 8].xyzx, r17.xyzx + add r22.xyz, -r19.xyzx, cb1[r10.w + 5].xyzx + div r22.xyz, r22.xyzx, r21.xyzx + add r23.xyz, -r19.xyzx, -cb1[r10.w + 5].xyzx + div r23.xyz, r23.xyzx, r21.xyzx + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx + movc r22.xyz, r24.xyzx, r22.xyzx, r23.xyzx + min r16.w, r22.y, r22.x + min r16.w, r22.z, r16.w + mad r19.xyz, r21.xyzx, r16.wwww, r19.xyzx + else + mov r19.xyz, r17.xyzx + endif + dp3 r16.w, r19.xyzx, r19.xyzx + rsq r16.w, r16.w + mul r19.xyz, r16.wwww, r19.xyzx + lt r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + lt r22.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r21.xyz, -r21.xyzx, r22.xyzx + itof r21.xyz, r21.xyzx + dp3 r16.w, r19.xyzx, r21.xyzx + div r19.xyz, r19.xyzx, r16.wwww + lt r16.w, r19.z, l(0.000000) + add r19.zw, -|r19.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r19.zw, r19.zzzw, r21.xxxy + movc r19.xy, r16.wwww, r19.zwzz, r19.xyxx + dp4 r16.w, cb1[r10.w + 4].xyzw, r6.xyzw + max r16.w, r16.w, l(0.000000) + max r16.w, r16.w, l(0.000100) + min r17.w, r20.w, r20.y + min r17.w, r17.w, r20.x + add r12.z, r12.w, r12.z + mad r12.z, r20.z, r20.z, r12.z + mad r11.z, r11.z, r11.z, -r12.z + mul r11.z, r11.z, cb1[r10.w + 9].x + mul r11.z, r11.z, cb1[r10.w + 9].x + add r12.z, l(1.000000), -cb1[r10.w + 10].y + mul r11.z, r11.z, r12.z + mul r11.z, r11.z, l(100.000000) + mad_sat r11.z, r17.w, cb1[r10.w + 10].y, r11.z + mul r12.z, r11.z, cb1[r10.w + 10].w + mad r19.xy, r19.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r19.xy, r19.xyxx, cb1[1].wwww, cb1[2].wwww + mov r19.z, cb1[r10.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r19.xyz, r19.xyzx, t5.xyzw, s3, r0.z + mul r19.xyz, r19.xyzx, cb1[r10.w + 9].wwww + div r12.w, r3.w, r16.w + min r12.w, |r12.w|, l(1.000000) + mad r12.w, r12.w, l(2.000000), r3.w + add r16.w, r16.w, l(2.000000) + div r12.w, r12.w, r16.w + add r12.w, r12.w, l(-1.000000) + mad r12.w, r12.w, cb0[112].w, l(1.000000) + mul r19.xyz, r12.wwww, r19.xyzx + mul r19.xyz, r12.zzzz, r19.xyzx + mad r18.xyz, r19.xyzx, r5.xxxx, r18.xyzx + mad r10.w, -r11.z, cb1[r10.w + 10].w, l(1.000000) + mul r5.x, r5.x, r10.w + endif + mov r8.w, l(-1) + continue + else + mov r8.w, r9.w + break + endif + mov r8.w, r9.w +endloop +if_nz r8.w + dp3 r2.y, r17.xyzx, r17.xyzx + rsq r2.y, r2.y + mul r7.xzw, r2.yyyy, r17.xxyz + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r7.xzwx + lt r19.xyz, r7.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r19.xyzx + itof r17.xyz, r17.xyzx + dp3 r2.y, r7.xzwx, r17.xyzx + div r7.xzw, r7.xxzw, r2.yyyy + lt r2.y, r7.w, l(0.000000) + add r12.zw, -|r7.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r12.zw, r12.zzzw, r17.xxxy + movc r7.xz, r2.yyyy, r12.zzwz, r7.xxzx + dp4 r2.y, cb1[3].xyzw, r6.xyzw + max r2.y, r2.y, l(0.000000) + max r2.y, r2.y, l(0.000100) + mad r7.xz, r7.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) + mad r17.xy, r7.xzxx, cb1[1].wwww, cb1[2].wwww + mov r17.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r7.xzw, r17.xyzx, t5.xwyz, s3, r0.z + div r0.z, r3.w, r2.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r3.w + add r2.y, r2.y, l(2.000000) + div r0.z, r0.z, r2.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r7.xzw, r0.zzzz, r7.xxzw + mad r18.xyz, r7.xzwx, r5.xxxx, r18.xyzx +endif +mul r7.xzw, r18.xxyz, cb0[112].zzzz +mul r7.xzw, r7.xxzw, cb0[111].yyyy +if_nz r2.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r17.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r2.y, -r0.z, l(1.000000) + mul r18.xyz, r2.yyyy, r7.xzwx + mad r7.xzw, r17.xxyz, r0.zzzz, r18.xxyz +endif +mul r16.xyz, r3.xyzx, r16.xyzx +mul r16.xyz, r16.xyzx, cb0[111].xxxx +mad r0.z, r2.x, r12.x, r12.y +mul r2.xyz, r0.zzzz, r7.xzwx +mul r2.xyz, r8.xyzx, r2.xyzx +mad r2.xyz, r16.xyzx, r11.xywx, r2.xyzx +mul r6.xyzw, r6.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) +dp4 r8.x, r14.xyzw, r6.xyzw +dp4 r8.y, r13.xyzw, r6.xyzw +dp4 r8.z, r15.xyzw, r6.xyzw +max r6.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +mul r6.xyz, r6.xyzx, cb0[111].xxxx +mul r6.xyz, r11.xywx, r6.xyzx +max r0.z, r3.y, r3.x +max r0.z, r3.z, r0.z +max r0.z, r0.z, l(0.010000) +div r3.xyz, r3.xyzx, r0.zzzz +mul r3.xyz, r3.xyzx, r6.xyzx +mul r0.z, r4.x, l(0.00787401572) +min r3.w, r5.y, l(1.000000) +bfi r1.z, l(3), l(2), r1.z, l(0) +ftou r2.w, r2.w +bfi r1.z, l(2), l(0), r2.w, r1.z +utof r1.z, r1.z +mul r1.z, r1.z, l(0.0322580636) +mad r0.z, r0.z, r3.w, r1.z +mul r3.xyz, r0.zzzz, r3.xyzx +mad r2.xyz, r3.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000), r2.xyzx +add r1.xyz, r1.xywx, r2.xyzx +mad r0.z, r7.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r5.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r7.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r10.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[163].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r10.xyzx, -r9.xyzx + add r2.w, r7.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w + mul r3.w, r0.x, r3.z + mad r4.x, r3.w, r2.w, cb0[44].y + mad r2.w, -r3.w, r2.w, r2.w + mul r3.w, r2.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.x, r4.x, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.y, l(5.960464478E-08), |r3.w| + exp r5.z, -r3.w + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r5.y, r5.z, r3.w + add r4.x, r4.x, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r5.y, l(5.960464478E-08), |r2.w| + exp r5.z, -r2.w + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r5.y, r5.z, r2.w + mul r2.w, r2.w, r4.x + mad r2.w, r5.x, r3.w, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r0.x, r5.w, r0.x + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r3.zw, r5.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r3.z + add r0.x, r3.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r4.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t12.xyzw, s1, l(0.000000) + add r0.y, |r4.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r7.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r5.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r5.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx + +// === Simplified Fog Modification (Anti-Banding) === +// Check if fog modification is enabled via cb13[12].y +lt r15.x, l(0.500000), cb13[12].y +if_nz r15.x + // r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter + // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density + add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + + // Reduce fog inscatter intensity + mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + + // Modified fog blend: scene * boostedTrans + reducedInscatter + mad o0.xyz, r1.xyzx, r15.xyzx, r16.xyzx +else + // Original fog blend + mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +endif +// === End Fog Modification === +dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..7c374cb429 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0_original_backup.asm @@ -0,0 +1,973 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sat Jan 31 22:35:08 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[5], immediateIndexed +dcl_constantbuffer CB4[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 25 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t22.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t23.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t24.xyzw +mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) +ftou r1.xz, r1.xxzx +ubfe r4.x, l(7), l(3), r1.x +utof r4.x, r4.x +round_ne r1.y, r1.y +ftou r1.y, r1.y +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r5.y, -r4.y, l(1.000000) +lt r4.y, r5.y, l(0.000000) +ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) +movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) +mul r4.zw, r4.zzzw, r6.xxxy +movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx +dp3 r2.x, r5.xyzx, r5.xyzx +rsq r2.x, r2.x +mul r6.xyz, r2.xxxx, r5.xyzx +and r2.y, r1.y, l(7) +utof r2.y, r2.y +mad r2.y, r2.y, l(0.107142866), l(0.500000) +utof r4.yz, r0.xxyx +mul r5.xz, v0.xxyx, cb0[82].zzwz +mad r7.xy, r5.xzxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r7.zw, r4.yyyz, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r7.zw, r7.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r4.w, r7.zwzz, t1.yzwx, s0, l(0.000000) +mul r8.xyzw, -r7.yyyy, cb0[25].xyzw +mad r7.xyzw, cb0[24].xyzw, r7.xxxx, r8.xyzw +mad r7.xyzw, cb0[26].xyzw, r4.wwww, r7.xyzw +add r7.xyzw, r7.xyzw, cb0[27].xyzw +div r7.xyz, r7.xyzx, r7.wwww +mul r4.w, r7.y, cb0[1].z +mad r4.w, cb0[0].z, r7.x, r4.w +mad r4.w, cb0[2].z, r7.z, r4.w +add r4.w, r4.w, cb0[3].z +eq r5.w, l(0.000000), cb0[86].w +add r8.xyz, -r7.xyzx, cb0[44].xyzx +mov r9.x, cb0[0].z +mov r9.y, cb0[1].z +mov r9.z, cb0[2].z +movc r8.xyz, r5.wwww, r8.xyzx, r9.xyzx +dp3 r5.w, r8.xyzx, r8.xyzx +max r8.w, r5.w, l(9.999999939E-09) +rsq r8.w, r8.w +mul r10.xyz, r8.wwww, r8.xyzx +mul r5.w, r5.w, r8.w +lt r9.w, l(0.000488281250), cb0[234].x +if_nz r9.w + sample_b_indexable(texture2d)(float,float,float,float) r9.w, v1.xyxx, t21.yzwx, s1, cb0[108].x +else + mov r9.w, l(1.000000) +endif +lt r11.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[226].xyxx +if_nz r11.x + add r10.w, |r6.y|, |r6.x| + add r10.w, |r6.z|, r10.w + div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r10.w + mul r11.xzw, |r6.xxyz|, r10.wwww + mul r12.xyzw, r11.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) + add r12.xyz, r12.zwzz, r12.xxyx + mad r11.xzw, r11.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r12.xxyz + mul r12.xyz, r7.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r10.w, r12.xyzx, t9.yzwx, s2, l(0.000000) + mad r10.w, r10.w, l(2.000000), l(-1.000000) + mul r11.xzw, r10.wwww, r11.xxzw + mov r10.w, |r6.y| + add r10.w, r10.w, l(-0.700000) + mul_sat r10.w, r10.w, l(4.000000) + mad r12.x, r10.w, l(-2.000000), l(3.000000) + mul r10.w, r10.w, r10.w + mul r10.w, r10.w, r12.x + add r12.x, -cb0[229].z, cb0[229].y + mad r10.w, r10.w, r12.x, cb0[229].z + mul r11.xzw, r10.wwww, r11.xxzw +else + mov r11.xzw, l(0,0,0,0) +endif +if_nz r11.y + mul r12.xyz, r6.xyzx, cb0[233].zzzz + mul r13.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r12.xyz, r12.xyzx, cb0[225].xxxx, r13.xyzx + max r10.w, -r6.y, l(0.000000) + min r10.w, r10.w, l(0.900000) + add r10.w, -r10.w, l(1.000000) + mad r2.x, -r5.y, r2.x, l(-0.200000) + mul_sat r2.x, r2.x, l(-10.000000) + mad r5.y, r2.x, l(-2.000000), l(3.000000) + mul r2.x, r2.x, r2.x + mul r2.x, r2.x, r5.y + max r2.x, r2.x, l(0.100000) + min r2.x, r2.x, l(1.000000) + mul r2.x, r2.x, r10.w + mad r12.xyz, r12.xyzx, r2.xxxx, r7.xyzx + add r11.xyz, r11.xzwx, r12.xyzx + mul r12.xyz, r11.yyyy, cb3[1].xyzx + mad r11.xyw, cb3[0].xyxz, r11.xxxx, r12.xyxz + mad r11.xyz, cb3[2].xyzx, r11.zzzz, r11.xywx + add r11.xyz, r11.xyzx, cb3[3].xyzx + mad r12.x, r11.x, l(0.500000), cb3[4].x + mad r2.x, r11.y, l(0.500000), l(0.500000) + add r12.z, -r2.x, cb3[4].y + add r11.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r2.x, r11.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r11.xyxx, t8.xxxx, s4, r2.x +else + mov r2.x, l(1.000000) +endif +mov_sat r5.y, r6.y +add r10.w, l(1.000000), -cb0[230].w +mad r5.y, r5.y, r10.w, cb0[230].w +add r11.xy, r7.xzxx, -cb0[44].xzxx +max r10.w, |r11.y|, |r11.x| +mul r11.x, r5.y, cb0[230].z +mul r11.y, r2.x, r5.y +mul r11.z, l(0.0500000119), cb0[222].w +mad r11.w, -cb0[222].w, l(0.700000), r10.w +div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z +mul_sat r11.z, r11.z, r11.w +mad r11.w, r11.z, l(-2.000000), l(3.000000) +mul r11.z, r11.z, r11.z +mul r11.z, r11.z, r11.w +mad r2.x, -r5.y, r2.x, l(1.000000) +mad r2.x, r11.z, r2.x, r11.y +mad r5.y, -cb0[230].z, r5.y, l(1.000000) +mad r2.x, r2.x, r5.y, r11.x +mad r5.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r10.w, r10.w, -cb0[222].w +div r5.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y +mul_sat r5.y, r5.y, r10.w +mad r10.w, r5.y, l(-2.000000), l(3.000000) +mul r5.y, r5.y, r5.y +mul r5.y, r5.y, r10.w +add r10.w, -r2.x, cb0[230].y +mad r2.x, r5.y, r10.w, r2.x +add r2.x, -r2.x, l(1.000000) +mad r2.x, -r9.w, r2.x, l(1.000000) +mad_sat r5.y, r2.z, l(0.300000), l(0.250000) +mul r5.y, r5.y, cb0[222].x +mul r5.y, r2.x, r5.y +mad r5.y, r5.y, l(-0.750000), l(1.000000) +mul r3.xyz, r3.xyzx, r5.yyyy +min r5.y, r2.z, l(0.300000) +mul r2.x, r2.x, cb0[222].x +mul r2.xw, r2.xxxw, l(0.500000, 0.000000, 0.000000, 3.000000) +add r5.y, -r2.z, r5.y +mad r11.z, r2.x, r5.y, r2.z +mul r2.x, r2.y, l(0.080000) +dp3 r2.z, r6.xyzx, r10.xyzx +max r5.y, r2.z, l(0.000000) +mad r12.xyzw, r11.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r9.w, r12.x, r12.x +mul r10.w, r5.y, l(-9.280000) +exp r10.w, r10.w +min r9.w, r9.w, r10.w +mad r9.w, r9.w, r12.x, r12.y +mad r12.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r12.zwzz +ld_indexable(texture2d)(float,float,float,float) r12.z, r0.xyzz, t6.zwxy +lt r0.z, l(0.001000), r12.z +if_nz r0.z + bfi r0.z, l(3), l(2), r1.x, l(0) + mul r1.x, r1.w, l(3.000000) + ftou r1.x, r1.x + bfi r0.z, l(2), l(0), r1.x, r0.z + utof r0.z, r0.z + mul r1.x, r0.z, l(0.0322580636) + ubfe r1.y, l(7), l(3), r1.y + utof r1.y, r1.y + mul r1.y, r1.y, l(0.00787401572) + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xzxx, t11.yzwx, s1, l(0.000000) + dp3 r9.w, -r10.xyzx, r6.xyzx + add r9.w, r9.w, r9.w + mad r13.xyz, r6.xyzx, -r9.wwww, -r10.xyzx + dp3 r9.w, -cb2[0].xyzx, r13.xyzx + mad r14.xyz, cb2[0].xyzx, r9.wwww, r13.xyzx + lt r9.w, r9.w, cb2[4].z + dp3 r10.w, r14.xyzx, r14.xyzx + max r10.w, r10.w, l(0.0000610351562) + rsq r10.w, r10.w + mul r14.xyz, r10.wwww, r14.xyzx + mul r14.xyz, r14.xyzx, cb2[4].yyyy + mad r14.xyz, -cb2[0].xyzx, cb2[4].zzzz, r14.xyzx + dp3 r10.w, r14.xyzx, r14.xyzx + rsq r10.w, r10.w + mul r14.xyz, r10.wwww, r14.xyzx + movc r13.xyz, r9.wwww, r14.xyzx, r13.xyzx + mad r8.xyz, r8.xyzx, r8.wwww, r13.xyzx + dp3 r8.w, r8.xyzx, r8.xyzx + max r8.w, r8.w, l(0.0000610351562) + rsq r8.w, r8.w + mul r8.xyz, r8.wwww, r8.xyzx + dp3 r8.w, r6.xyzx, r13.xyzx + mov_sat r11.x, r8.w + dp3_sat r9.w, r6.xyzx, r8.xyzx + dp3 r10.w, r10.xyzx, r13.xyzx + min r11.y, r5.y, l(1.000000) + mul r11.w, r11.z, r11.z + mul r11.w, r11.w, r11.w + mad r13.x, r9.w, r11.w, -r9.w + mad r9.w, r13.x, r9.w, l(1.000000) + dp3_sat r8.x, r10.xyzx, r8.xyzx + add r8.x, -r8.x, l(1.000000) + mul r8.y, r8.x, r8.x + mul r8.y, r8.y, r8.y + mul r8.z, r8.x, r8.y + add r13.x, -r11.z, l(1.000000) + mad r13.y, -r13.x, l(0.383026), l(-0.0761947036) + mad r13.y, r13.x, r13.y, l(1.049970) + mad r13.x, r13.x, r13.y, l(0.409255) + min r13.x, r13.x, l(0.999000) + add r13.y, -r13.x, l(1.000000) + mad r2.y, -r2.y, l(0.080000), l(1.000000) + mad r2.y, r2.y, l(0.0476190485), r2.x + mov_sat r13.z, -r10.w + mul r13.z, r13.z, r13.z + mad r13.z, r13.z, l(-0.640000), l(1.000000) + mul r13.z, r13.z, r13.z + mad r8.x, -r8.y, r8.x, l(1.000000) + mad r8.x, r2.x, r8.x, r8.z + mul r8.y, r9.w, r9.w + div r8.y, r11.w, r8.y + mad r14.xy, -r11.yxyy, r11.wwww, r11.yxyy + mad r14.xy, r14.xyxx, r11.yxyy, r11.wwww + sqrt r14.xy, r14.xyxx + mul r14.xy, r11.xyxx, r14.xyxx + add r8.z, r14.y, r14.x + add r8.z, r8.z, l(0.000100) + div r8.z, l(0.500000), r8.z + mul r8.y, r8.z, r8.y + mul r8.x, r8.y, r8.x + min r8.x, r8.x, l(2048.000000) + mad r14.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r8.y, r14.xyxx, t10.yxzw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r8.z, r14.zwzz, t10.yzxw, s1, l(0.000000) + mul r8.y, r8.z, r8.y + mul r8.y, r13.x, r8.y + div r8.y, r8.y, r13.y + mul r8.z, r2.y, r2.y + mul r8.y, r8.y, r8.z + mad r2.y, -r2.y, r13.y, l(1.000000) + div r2.y, r8.y, r2.y + add r2.y, r2.y, r8.x + add_sat r2.z, r2.z, l(0.200000) + mov_sat r8.x, r10.w + add r8.x, r8.x, l(0.500000) + min r8.x, r8.x, l(1.000000) + mul r8.y, r2.z, r8.x + add_sat r8.z, r10.w, l(1.000000) + mad r2.z, -r2.z, r8.x, l(1.000000) + mad r2.z, r8.z, r2.z, r8.y + mul r2.y, r2.z, r2.y + mul r2.y, r1.y, r2.y + mul r8.xyz, r1.yyyy, r3.xyzx + ubfe r2.z, l(7), l(3), r1.z + utof r2.z, r2.z + mul r2.z, r2.z, l(0.00787401572) + mul r2.y, r2.y, cb2[4].x + max r2.y, r2.y, l(0.000000) + min r2.y, r2.y, l(1000.000000) + mul r2.y, r11.x, r2.y + mad r8.xyz, r8.xyzx, r2.zzzz, r2.yyyy + max r2.y, r3.y, r3.x + max r2.y, r3.z, r2.y + max r2.y, r2.y, l(0.010000) + div r13.xyw, r3.xyxz, r2.yyyy + mul r2.y, r4.x, l(0.00393700786) + mul r13.xyw, r2.yyyy, r13.xyxw + add_sat r2.y, -r8.w, l(0.500000) + ne r2.z, r13.z, l(0.360000) + div r9.w, l(0.360000), r13.z + movc r2.z, r2.z, r9.w, l(1.000000) + mul r2.y, r2.z, r2.y + mad_sat r0.z, r0.z, l(0.0322580636), r8.w + add r0.z, -r11.x, r0.z + mul r11.xyw, r0.zzzz, r3.xyxz + mad r11.xyw, r13.xyxw, r2.yyyy, r11.xyxw + mad r8.xyz, r11.xywx, r1.yyyy, r8.xyzx + mul r8.xyz, r8.xyzx, cb2[1].xyzx + mov r12.w, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r12.zwzz, t7.xywz, s1, cb0[108].x + add r0.z, -r12.z, l(1.000000) + mad r11.xyw, r8.xyxz, r11.xyxw, -r8.xyxz + mad r8.xyz, r0.zzzz, r11.xywx, r8.xyzx + max r0.z, r1.y, r1.w + add r0.z, -r1.w, r0.z + mad r0.z, r1.x, r0.z, r1.w + mul r1.xyw, r0.zzzz, r8.xyxz +else + mov r1.xyw, l(0,0,0,0) +endif +ne r2.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r2.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + mad r0.z, r0.z, l(0.750000), l(0.250000) + min r0.z, r3.w, r0.z + add r2.y, r0.z, r5.y + mad r8.x, r11.z, l(-16.000000), l(-1.000000) + exp r8.x, r8.x + log r2.y, |r2.y| + mul r2.y, r2.y, r8.x + exp r2.y, r2.y + add r2.y, r0.z, r2.y + add r2.y, r2.y, l(-1.000000) + mov_sat r8.xyz, r2.yyyy + mad r11.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) + mul r11.xyw, r0.zzzz, r11.xyxw + mad r11.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r11.xyxw + add r11.xyw, r11.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) + mul r11.xyw, r0.zzzz, r11.xyxw + mad r11.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r11.xyxw + add r11.xyw, r11.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) + mul r11.xyw, r0.zzzz, r11.xyxw + max r11.xyw, r0.zzzz, r11.xyxw +else + mov r8.xyz, r3.wwww + mov r11.xyw, r3.wwww +endif +mad r13.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r13.xyz, r7.xzyx, -r13.xyzx +max r0.z, |r13.y|, |r13.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r2.y, |r13.z|, l(-208.000000) +mul_sat r2.y, r2.y, l(0.031250) +max r0.z, r0.z, r2.y +ne r2.y, l(0.000000), cb0[210].w +lt r3.w, r0.z, l(1.000000) +and r2.y, r2.y, r3.w +if_nz r2.y + mad r13.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r13.xyz, r7.xzyx, -r13.xyzx + max r2.y, |r13.y|, |r13.x| + add r2.y, r2.y, l(-29.000000) + mul_sat r2.y, r2.y, l(0.500000) + add r3.w, |r13.z|, l(-13.000000) + mul_sat r3.w, r3.w, l(0.500000) + max r2.y, r2.y, r3.w + lt r3.w, r2.y, l(1.000000) + if_nz r3.w + mad r13.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r14.xyz, r13.xyzx, cb0[211].xyzx + round_ni r14.xyz, r14.xyzx + mad r13.xyz, r13.xyzx, cb0[211].xyzx, -r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r14.xyw, r13.xyzx, t15.yzwx, s2, l(0.000000) + add r3.w, -r2.y, l(1.000000) + mul r8.w, l(0.500000), cb0[211].y + mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) + max r8.w, r8.w, r13.y + min r8.w, r9.w, r8.w + mul r13.w, r8.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r13.xwzx, t16.xyzw, s1, l(0.000000) + mad r8.w, r15.w, r3.w, r0.z + add r16.xyz, r13.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t16.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r14.yyyy, r16.xyzx + mov r16.w, r14.y + mul r16.xyzw, r3.wwww, r16.xyzw + add r13.xyz, r13.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xyz, r13.xyzx, t16.xyzw, s1, l(0.000000) + mad r13.xyz, r13.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r13.xyz, r14.xxxx, r13.xyzx + mov r13.w, r14.x + mul r13.xyzw, r3.wwww, r13.xyzw + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r14.wwww, r15.xyzx + mul r14.xyzw, r3.wwww, r14.xyzw + else + mov r16.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r8.w, r0.z + endif + mad r15.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r15.xyz, r7.xzyx, -r15.xyzx + max r3.w, |r15.y|, |r15.x| + add r3.w, r3.w, l(-116.000000) + mul_sat r3.w, r3.w, l(0.125000) + add r9.w, |r15.z|, l(-52.000000) + mul_sat r9.w, r9.w, l(0.125000) + max r3.w, r3.w, r9.w + lt r9.w, r3.w, l(1.000000) + if_nz r9.w + mad r15.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r15.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) + add r9.w, -r3.w, l(1.000000) + mul r2.y, r2.y, r9.w + mul r9.w, l(0.500000), cb0[211].y + mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) + max r9.w, r9.w, r15.y + min r9.w, r10.w, r9.w + mul r15.w, r9.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) + mad r8.w, r18.w, r2.y, r8.w + add r19.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mad r16.xyzw, r19.xyzw, r2.yyyy, r16.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r17.xxxx, r15.xyzx + mov r15.w, r17.x + mad r13.xyzw, r15.xyzw, r2.yyyy, r13.xyzw + mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r15.xyzx + mad r14.xyzw, r17.xyzw, r2.yyyy, r14.xyzw + endif + lt r2.y, l(0.000000), r3.w + if_nz r2.y + mad r15.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r15.xyzx, cb0[211].xyzx + mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r17.xyzx + mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r18.xyzx, r15.xyzx + min r15.xyz, r17.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r15.xyzx, t19.yzwx, s2, l(0.000000) + add r2.y, -r0.z, l(1.000000) + mul r2.y, r2.y, r3.w + max r3.w, r18.y, r15.y + min r3.w, r17.y, r3.w + mul r15.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t20.xyzw, s1, l(0.000000) + add r18.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t20.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r19.yyyy, r18.xyzx + mov r18.w, r19.y + mad r16.xyzw, r18.xyzw, r2.yyyy, r16.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t20.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r19.xxxx, r15.xyzx + mov r15.w, r19.x + mad r13.xyzw, r15.xyzw, r2.yyyy, r13.xyzw + mad r15.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r19.wwww, r15.xyzx + mad r14.xyzw, r19.xyzw, r2.yyyy, r14.xyzw + mad r8.w, r17.w, r2.y, r8.w + endif + mad_sat r2.y, r8.w, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r2.y + add r0.z, r0.z, r2.y + mul r15.y, r0.z, l(0.500000) +else + mov r16.xyzw, l(0,0,0,0) + mov r13.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) +endif +mul r17.xyzw, r15.yyyx, cb0[213].xyzw +mad r17.y, r17.w, l(0.500000), r17.y +mul r12.zw, r15.yyyx, cb0[213].wwwy +mad r17.w, r12.w, l(0.375000), r12.z +add r14.xyzw, r14.xyzw, r17.xyzw +mul r17.xyzw, r15.yyyx, cb0[214].xyzw +mad r17.y, r17.w, l(0.500000), r17.y +mul r12.zw, r15.yyyx, cb0[214].wwwy +mad r17.w, r12.w, l(0.375000), r12.z +add r13.xyzw, r13.xyzw, r17.xyzw +mul r17.xyzw, r15.yyyx, cb0[215].xyzw +mad r17.y, r17.w, l(0.500000), r17.y +mul r12.zw, r15.yyyx, cb0[215].wwwy +mad r17.w, r12.w, l(0.375000), r12.z +add r15.xyzw, r16.xyzw, r17.xyzw +ge r12.zw, r5.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r12.w, r12.z +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r16.xyzw, r5.xzxx, t14.xyzw, s1, l(0.000000) + lt r17.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r16.xyzw| + or r5.xz, r17.zzwz, r17.xxyx + or r0.z, r5.z, r5.x + if_nz r0.z + dp3 r0.z, r16.yzwy, r16.yzwy + sqrt r0.z, r0.z + mov r5.x, l(1.000000) + mov r5.z, r0.z + mov r2.y, l(0) + loop + ge r3.w, l(4.600000), r5.z + breakc_nz r3.w + iadd r3.w, r2.y, l(1) + mul r12.zw, r5.xxxz, l(0.000000, 0.000000, 0.500000, 0.500000) + mov r5.xz, r12.zzwz + mov r2.y, r3.w + continue + endloop + mul r16.xyzw, r5.xxxx, r16.xyzw + dp3 r0.z, r16.yzwy, r16.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb4[3].x, cb4[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r17.x, r0.z, l(0.00390625000) + mov r17.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r5.xz, r17.xyxx, t13.xzyw, s1, l(0.000000) + mad r5.xz, r5.xxzx, cb4[2].xxyx, cb4[2].zzwz + mul r17.x, r5.x, l(3.54490781) + mul r17.yzw, r5.zzzz, r16.yyzw + mul r0.z, r16.x, l(0.406976730) + exp r0.z, r0.z + mul r16.xyzw, r0.zzzz, r17.xyzw + mov r17.xyzw, r16.xyzw + mov r0.z, l(0) + loop + uge r3.w, r0.z, r2.y + breakc_nz r3.w + mul r18.xyzw, r17.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r3.w, r18.xyzw, r17.xyzw + dp2 r5.x, r18.yxyy, r17.xyxx + dp2 r5.z, r18.zxzz, r17.xzxx + dp2 r8.w, r18.wxww, r17.xwxx + iadd r9.w, r0.z, l(1) + mov r17.x, r3.w + mov r17.yz, r5.xxzx + mov r17.w, r8.w + mov r0.z, r9.w + continue + endloop + mul r16.xyzw, r17.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r17.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r16.xyzw, r17.xyzw + dp2 r2.y, r16.yxyy, r17.xyxx + dp2 r3.w, r16.zxzz, r17.xzxx + dp2 r5.x, r16.wxww, r17.xwxx + mul r17.xyzw, r13.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r5.z, r16.xyzw, r17.xyzw + dp2 r8.w, r16.yxyy, r17.xyxx + dp2 r9.w, r16.zxzz, r17.xzxx + dp2 r10.w, r16.wxww, r17.xwxx + mul r17.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r12.z, r16.xyzw, r17.xyzw + dp2 r12.w, r16.yxyy, r17.xyxx + dp2 r16.y, r16.zxzz, r17.xzxx + dp2 r16.x, r16.wxww, r17.xwxx + mul r14.w, r0.z, l(0.886226952) + mul r14.x, r5.x, l(-1.02332675) + mul r14.y, r2.y, l(-1.02332675) + mul r14.z, r3.w, l(1.02332675) + mul r13.w, r5.z, l(0.886226952) + mul r13.x, r10.w, l(-1.02332675) + mul r13.y, r8.w, l(-1.02332675) + mul r13.z, r9.w, l(1.02332675) + mul r15.yw, r12.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r15.xz, r16.xxyx, l(-1.02332675, 0.000000, 1.02332675, 0.000000) + endif +endif +mov r6.w, l(1.000000) +dp4 r16.x, r14.xyzw, r6.xyzw +dp4 r16.y, r13.xyzw, r6.xyzw +dp4 r16.z, r15.xyzw, r6.xyzw +max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +dp3 r0.z, -r10.xyzx, r6.xyzx +add r0.z, r0.z, r0.z +mad r17.xyz, r6.xyzx, -r0.zzzz, -r10.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r2.y, r11.z, l(0.001000) +log r2.y, r2.y +mad r2.y, -r2.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r2.y +mul r5.xz, r4.yyzy, cb1[0].wwww +round_ni r5.xz, r5.xxzx +add r2.y, |r4.w|, -cb1[2].y +round_ni r2.y, r2.y +add r3.w, l(-1.000000), cb1[1].x +max r8.w, r2.y, l(0.000000) +min r3.w, r3.w, r8.w +ge r2.y, r3.w, r2.y +mad r5.x, r5.z, cb1[0].x, r5.x +ftoi r5.x, r5.x +iadd r5.x, r5.x, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.x, r5.x, l(0), t0.xxxx +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +and r3.w, r3.w, r5.x +and r2.y, r2.y, r3.w +mul r18.xyz, r16.xyzx, cb0[111].xxxx +dp3 r3.w, r18.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r7.w, l(1.000000) +mov r18.xyz, l(0,0,0,0) +mov r5.x, l(1.000000) +mov r5.z, r2.y +mov r8.w, l(0) +loop + lt r9.w, l(0.010000), r5.x + ine r10.w, r5.z, l(0) + and r10.w, r9.w, r10.w + if_nz r10.w + firstbit_lo r10.w, r5.z + ishl r11.z, l(1), r10.w + xor r5.z, r5.z, r11.z + ishl r10.w, r10.w, l(3) + dp4 r19.x, cb1[r10.w + 6].xyzw, r7.xyzw + dp4 r19.y, cb1[r10.w + 7].xyzw, r7.xyzw + dp4 r19.z, cb1[r10.w + 8].xyzw, r7.xyzw + ge r20.xyz, cb1[r10.w + 5].xyzx, |r19.xyzx| + and r11.z, r20.y, r20.x + and r11.z, r20.z, r11.z + if_nz r11.z + mul r11.z, l(0.100000), cb1[r10.w + 5].x + mul r20.xyz, |r19.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r12.zw, r20.xxxy, r20.xxxy + add r20.xyw, -|r19.xyxz|, cb1[r10.w + 5].xyxz + mul r20.xyw, r20.xyxw, cb1[r10.w + 9].xyxz + eq r16.w, l(1.000000), cb1[r10.w + 10].x + if_nz r16.w + dp3 r21.x, cb1[r10.w + 6].xyzx, r17.xyzx + dp3 r21.y, cb1[r10.w + 7].xyzx, r17.xyzx + dp3 r21.z, cb1[r10.w + 8].xyzx, r17.xyzx + add r22.xyz, -r19.xyzx, cb1[r10.w + 5].xyzx + div r22.xyz, r22.xyzx, r21.xyzx + add r23.xyz, -r19.xyzx, -cb1[r10.w + 5].xyzx + div r23.xyz, r23.xyzx, r21.xyzx + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx + movc r22.xyz, r24.xyzx, r22.xyzx, r23.xyzx + min r16.w, r22.y, r22.x + min r16.w, r22.z, r16.w + mad r19.xyz, r21.xyzx, r16.wwww, r19.xyzx + else + mov r19.xyz, r17.xyzx + endif + dp3 r16.w, r19.xyzx, r19.xyzx + rsq r16.w, r16.w + mul r19.xyz, r16.wwww, r19.xyzx + lt r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + lt r22.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r21.xyz, -r21.xyzx, r22.xyzx + itof r21.xyz, r21.xyzx + dp3 r16.w, r19.xyzx, r21.xyzx + div r19.xyz, r19.xyzx, r16.wwww + lt r16.w, r19.z, l(0.000000) + add r19.zw, -|r19.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r19.zw, r19.zzzw, r21.xxxy + movc r19.xy, r16.wwww, r19.zwzz, r19.xyxx + dp4 r16.w, cb1[r10.w + 4].xyzw, r6.xyzw + max r16.w, r16.w, l(0.000000) + max r16.w, r16.w, l(0.000100) + min r17.w, r20.w, r20.y + min r17.w, r17.w, r20.x + add r12.z, r12.w, r12.z + mad r12.z, r20.z, r20.z, r12.z + mad r11.z, r11.z, r11.z, -r12.z + mul r11.z, r11.z, cb1[r10.w + 9].x + mul r11.z, r11.z, cb1[r10.w + 9].x + add r12.z, l(1.000000), -cb1[r10.w + 10].y + mul r11.z, r11.z, r12.z + mul r11.z, r11.z, l(100.000000) + mad_sat r11.z, r17.w, cb1[r10.w + 10].y, r11.z + mul r12.z, r11.z, cb1[r10.w + 10].w + mad r19.xy, r19.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r19.xy, r19.xyxx, cb1[1].wwww, cb1[2].wwww + mov r19.z, cb1[r10.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r19.xyz, r19.xyzx, t5.xyzw, s3, r0.z + mul r19.xyz, r19.xyzx, cb1[r10.w + 9].wwww + div r12.w, r3.w, r16.w + min r12.w, |r12.w|, l(1.000000) + mad r12.w, r12.w, l(2.000000), r3.w + add r16.w, r16.w, l(2.000000) + div r12.w, r12.w, r16.w + add r12.w, r12.w, l(-1.000000) + mad r12.w, r12.w, cb0[112].w, l(1.000000) + mul r19.xyz, r12.wwww, r19.xyzx + mul r19.xyz, r12.zzzz, r19.xyzx + mad r18.xyz, r19.xyzx, r5.xxxx, r18.xyzx + mad r10.w, -r11.z, cb1[r10.w + 10].w, l(1.000000) + mul r5.x, r5.x, r10.w + endif + mov r8.w, l(-1) + continue + else + mov r8.w, r9.w + break + endif + mov r8.w, r9.w +endloop +if_nz r8.w + dp3 r2.y, r17.xyzx, r17.xyzx + rsq r2.y, r2.y + mul r7.xzw, r2.yyyy, r17.xxyz + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r7.xzwx + lt r19.xyz, r7.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r19.xyzx + itof r17.xyz, r17.xyzx + dp3 r2.y, r7.xzwx, r17.xyzx + div r7.xzw, r7.xxzw, r2.yyyy + lt r2.y, r7.w, l(0.000000) + add r12.zw, -|r7.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r12.zw, r12.zzzw, r17.xxxy + movc r7.xz, r2.yyyy, r12.zzwz, r7.xxzx + dp4 r2.y, cb1[3].xyzw, r6.xyzw + max r2.y, r2.y, l(0.000000) + max r2.y, r2.y, l(0.000100) + mad r7.xz, r7.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) + mad r17.xy, r7.xzxx, cb1[1].wwww, cb1[2].wwww + mov r17.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r7.xzw, r17.xyzx, t5.xwyz, s3, r0.z + div r0.z, r3.w, r2.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r3.w + add r2.y, r2.y, l(2.000000) + div r0.z, r0.z, r2.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r7.xzw, r0.zzzz, r7.xxzw + mad r18.xyz, r7.xzwx, r5.xxxx, r18.xyzx +endif +mul r7.xzw, r18.xxyz, cb0[112].zzzz +mul r7.xzw, r7.xxzw, cb0[111].yyyy +if_nz r2.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r17.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r2.y, -r0.z, l(1.000000) + mul r18.xyz, r2.yyyy, r7.xzwx + mad r7.xzw, r17.xxyz, r0.zzzz, r18.xxyz +endif +mul r16.xyz, r3.xyzx, r16.xyzx +mul r16.xyz, r16.xyzx, cb0[111].xxxx +mad r0.z, r2.x, r12.x, r12.y +mul r2.xyz, r0.zzzz, r7.xzwx +mul r2.xyz, r8.xyzx, r2.xyzx +mad r2.xyz, r16.xyzx, r11.xywx, r2.xyzx +mul r6.xyzw, r6.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) +dp4 r8.x, r14.xyzw, r6.xyzw +dp4 r8.y, r13.xyzw, r6.xyzw +dp4 r8.z, r15.xyzw, r6.xyzw +max r6.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +mul r6.xyz, r6.xyzx, cb0[111].xxxx +mul r6.xyz, r11.xywx, r6.xyzx +max r0.z, r3.y, r3.x +max r0.z, r3.z, r0.z +max r0.z, r0.z, l(0.010000) +div r3.xyz, r3.xyzx, r0.zzzz +mul r3.xyz, r3.xyzx, r6.xyzx +mul r0.z, r4.x, l(0.00787401572) +min r3.w, r5.y, l(1.000000) +bfi r1.z, l(3), l(2), r1.z, l(0) +ftou r2.w, r2.w +bfi r1.z, l(2), l(0), r2.w, r1.z +utof r1.z, r1.z +mul r1.z, r1.z, l(0.0322580636) +mad r0.z, r0.z, r3.w, r1.z +mul r3.xyz, r0.zzzz, r3.xyzx +mad r2.xyz, r3.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000), r2.xyzx +add r1.xyz, r1.xywx, r2.xyzx +mad r0.z, r7.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r5.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r7.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r10.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[163].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r10.xyzx, -r9.xyzx + add r2.w, r7.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w + mul r3.w, r0.x, r3.z + mad r4.x, r3.w, r2.w, cb0[44].y + mad r2.w, -r3.w, r2.w, r2.w + mul r3.w, r2.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.x, r4.x, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.y, l(5.960464478E-08), |r3.w| + exp r5.z, -r3.w + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r5.y, r5.z, r3.w + add r4.x, r4.x, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r5.y, l(5.960464478E-08), |r2.w| + exp r5.z, -r2.w + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r5.y, r5.z, r2.w + mul r2.w, r2.w, r4.x + mad r2.w, r5.x, r3.w, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r0.x, r5.w, r0.x + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r3.zw, r5.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r3.z + add r0.x, r3.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r4.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t12.xyzw, s1, l(0.000000) + add r0.y, |r4.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r7.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r5.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r5.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx +mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/fog_blend_test.cso b/src/games/endfield/deferred-lighting/fog_blend_test.cso new file mode 100644 index 0000000000000000000000000000000000000000..805c3de3b1b9c7fbed2603595181fe4970e671bb GIT binary patch literal 1052 zcmZ`%Jxe1|6uo&aMqSZh69mEe0b3=4L2>4p#AIzYVuC~vL_u7(jJvIl;tvpPjE!Jt zQo68gFJkF}m9Ulg2Q0SO%5&b#HEQ(2nfK=2bH87)o-h2oJvl8_%fIg~&vv&)GqVX1 z8T%m8gYy$`09*j`)$*4WoYeOL3xEoBlw>l}GX{lv-c@g?giy~r^|iTrp;B2aO1s^z zAO~~OhdDezMRN>8QC(WCtu;0`zQd{dd9JVzV%6BJtaMjRLZ&PoiX*!+#4w4 z!HYOwQ4U&`oX9{!B3)@Db zG51u=Pk@*H^(U9}B&ji;+eEJNL-1oA^ee^jd*gq^bTz7tr?L3FlI**@(26KJJ#!}P znPRNSkNfPj0xHT!*2F!47tZ3OkFoej7<3?#5gB~qqJH`qD{|ay`UI2+cXZ^OM?uVW*}SbSus&_O&y= 0.05f && uv.x <= 0.13f) && (uv.y >= 0.97f); - if (isUuid) { - o0.xyzw = 0.0f; - } - } - if (PING_TEXT_OPACITY < 0.5f) { - bool isPing = (uv.x >= 0.02f && uv.x <= 0.05f) && (uv.y >= 0.97f); - if (isPing) { - o0.xyzw = 0.0f; - } } return; } \ No newline at end of file From dda5a20d65191e14c777de5218b96611cc673616 Mon Sep 17 00:00:00 2001 From: SGTForgery Date: Sun, 1 Feb 2026 22:41:50 +0000 Subject: [PATCH 08/40] feat(endfield) Added more deferred shaders, added missing UI shader for UI hiding toggle --- .../endfield/deferred-lighting/0xA4113DE8.cso | Bin 0 -> 39092 bytes .../deferred-lighting/0xA4113DE8.ps_5_0.asm | 1299 +++++++++++++++++ .../0xA4113DE8.ps_5_0_original_backup.asm | 1279 ++++++++++++++++ .../endfield/deferred-lighting/0xBD99F0C4.cso | Bin 0 -> 30100 bytes .../deferred-lighting/0xBD99F0C4.ps_5_0.asm | 1010 +++++++++++++ .../0xBD99F0C4.ps_5_0_original_backup.asm | 990 +++++++++++++ .../endfield/ui/ui13_0xFB212B37.ps_5_0.hlsl | 142 ++ .../endfield/ui/uid_0x6B8E9049.ps_5_0.hlsl | 3 +- 8 files changed, 4721 insertions(+), 2 deletions(-) create mode 100644 src/games/endfield/deferred-lighting/0xA4113DE8.cso create mode 100644 src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/0xBD99F0C4.cso create mode 100644 src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/ui/ui13_0xFB212B37.ps_5_0.hlsl diff --git a/src/games/endfield/deferred-lighting/0xA4113DE8.cso b/src/games/endfield/deferred-lighting/0xA4113DE8.cso new file mode 100644 index 0000000000000000000000000000000000000000..74ea597fdff8800487741bd5ce7b1c06f4b3d419 GIT binary patch literal 39092 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 Ds^f`7 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm new file mode 100644 index 0000000000..4c47fa4068 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm @@ -0,0 +1,1299 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sun Feb 1 03:43:52 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[5], immediateIndexed +dcl_constantbuffer CB4[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_resource_texture3d (float,float,float,float) t27 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 24 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t24.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t25.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r2.xyw, r1.wwww, r3.xyxz +utof r4.xy, r0.xyxx +mul r4.zw, v0.xxxy, cb0[82].zzzw +mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r5.zw, r5.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) +mul r6.xyzw, -r5.yyyy, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw +mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r3.w, r5.y, cb0[1].z +mad r3.w, cb0[0].z, r5.x, r3.w +mad r3.w, cb0[2].z, r5.z, r3.w +add r3.w, r3.w, cb0[3].z +eq r6.x, l(0.000000), cb0[86].w +add r6.yzw, -r5.xxyz, cb0[44].xxyz +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r8.xyz, r6.xxxx, r6.yzwy, r7.xyzx +dp3 r6.x, r8.xyzx, r8.xyzx +max r7.w, r6.x, l(9.999999939E-09) +rsq r7.w, r7.w +mul r9.xyz, r7.wwww, r8.xyzx +mul r6.x, r6.x, r7.w +lt r8.w, l(0.000488281250), cb0[234].x +if_nz r8.w + sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x +else + mov r10.xy, l(1.000000,1.000000,0,0) +endif +lt r10.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[226].xxxy +if_nz r10.z + add r9.w, |r2.y|, |r2.x| + add r9.w, |r2.w|, r9.w + div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w + mul r11.xyz, |r2.xywx|, r9.wwww + mul r12.xyz, r5.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r9.w, r12.xyzx, t9.yzwx, s2, l(0.000000) + mul r12.xyzw, r11.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) + add r11.xyw, r12.zwzz, r12.xxxy + mad r11.xyz, r11.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r11.xywx + mad r10.z, r9.w, l(2.000000), l(-1.000000) + mul r11.xyz, r10.zzzz, r11.xyzx + mov r10.z, |r2.y| + add r10.z, r10.z, l(-0.700000) + mul_sat r10.z, r10.z, l(4.000000) + mad r11.w, r10.z, l(-2.000000), l(3.000000) + mul r10.z, r10.z, r10.z + mul r10.z, r10.z, r11.w + add r11.w, -cb0[229].z, cb0[229].y + mad r10.z, r10.z, r11.w, cb0[229].z + mul r11.xyz, r10.zzzz, r11.xyzx +else + mov r11.xyz, l(0,0,0,0) + mov r9.w, l(0) +endif +mad r10.z, -r3.y, r1.w, l(-0.200000) +if_nz r10.w + mul r12.xyz, r2.xywx, cb0[233].zzzz + mul r13.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r12.xyz, r12.xyzx, cb0[225].xxxx, r13.xyzx + max r10.w, -r2.y, l(0.000000) + min r10.w, r10.w, l(0.900000) + add r10.w, -r10.w, l(1.000000) + mul_sat r11.w, r10.z, l(-10.000000) + mad r12.w, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.w + max r11.w, r11.w, l(0.100000) + min r11.w, r11.w, l(1.000000) + mul r10.w, r10.w, r11.w + mad r12.xyz, r12.xyzx, r10.wwww, r5.xyzx + add r11.xyz, r11.xyzx, r12.xyzx + mul r12.xyz, r11.yyyy, cb3[1].xyzx + mad r11.xyw, cb3[0].xyxz, r11.xxxx, r12.xyxz + mad r11.xyz, cb3[2].xyzx, r11.zzzz, r11.xywx + add r11.xyz, r11.xyzx, cb3[3].xyzx + mad r12.x, r11.x, l(0.500000), cb3[4].x + mad r10.w, r11.y, l(0.500000), l(0.500000) + add r12.z, -r10.w, cb3[4].y + add r11.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r10.w, r11.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r10.w, r11.xyxx, t8.xxxx, s4, r10.w +else + mov r10.w, l(1.000000) +endif +mov_sat r11.x, r2.y +add r11.y, l(1.000000), -cb0[230].w +mad r11.x, r11.x, r11.y, cb0[230].w +add r11.yz, r5.xxzx, -cb0[44].xxzx +max r11.y, |r11.z|, |r11.y| +mul r11.z, r10.w, r11.x +mul r11.w, l(0.0500000119), cb0[222].w +mad r12.x, -cb0[222].w, l(0.700000), r11.y +div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w +mul_sat r11.w, r11.w, r12.x +mad r12.x, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r12.x +mad r10.w, -r11.x, r10.w, l(1.000000) +mad r10.w, r11.w, r10.w, r11.z +ge r11.z, r1.z, l(0.045000) +and r11.z, r11.z, l(0x3f800000) +mul r11.z, r10.w, r11.z +deriv_rty_coarse r12.xyz, r5.xyzx +deriv_rtx_coarse r13.xyz, r5.zxyz +mul r14.xyz, r12.xyzx, r13.xyzx +mad r12.xyz, r12.zxyz, r13.yzxy, -r14.xyzx +dp3 r11.w, r12.xyzx, r12.xyzx +max r11.w, r11.w, l(1.175494351E-38) +rsq r11.w, r11.w +mul r12.yzw, r11.wwww, r12.xxzy +mov_sat r13.x, r12.y +add r13.y, r13.x, l(-0.988000) +mul_sat r13.y, r13.y, l(1000.012878) +mad r13.z, r13.y, l(-2.000000), l(3.000000) +mul r13.y, r13.y, r13.y +mul r13.y, r13.y, r13.z +add r13.z, |r3.w|, l(-15.000000) +mul_sat r13.z, r13.z, l(0.015000) +add r13.z, -r13.z, l(1.000000) +lt r13.w, l(0.000488281250), cb0[223].y +mad r14.x, cb0[223].z, l(0.300000), l(0.687000) +add r13.x, r13.x, -r14.x +mul_sat r13.x, r13.x, l(-1000.012878) +mad r14.x, r13.x, l(-2.000000), l(3.000000) +mul r13.x, r13.x, r13.x +mul r13.x, r13.x, r14.x +mad r11.w, r12.x, r11.w, l(0.500000) +mul_sat r11.w, r11.w, l(2.500000) +mad r12.x, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r12.x +mul r11.w, r11.w, r13.x +lt r11.w, l(0.000488281250), r11.w +and r11.w, r11.w, r13.w +if_nz r11.w + mul r13.xw, |r12.zzzw|, |r12.zzzw| + add r11.w, r13.w, r13.x + div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w + mul r13.xw, r11.wwww, r13.xxxw + mul r14.xyz, r12.ywzy, l(0.000000, 1.000000, 0.000000, 0.000000) + mad r14.xyz, r12.zywz, l(1.000000, 0.000000, 0.000000, 0.000000), -r14.xyzx + dp2 r11.w, r14.xyxx, r14.xyxx + rsq r11.w, r11.w + mul r14.xyz, r11.wwww, r14.xyzx + mul r15.xyz, r12.ywzy, r14.xyzx + mad r15.xyz, r14.zxyz, r12.wzyw, -r15.xyzx + dp3 r11.w, r15.xyzx, r15.xyzx + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xyzx + add r16.xyz, r5.xyzx, r5.xyzx + round_ni r16.xyz, r16.xyzx + add r16.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + add r14.zw, r16.yyyy, r16.xxxz + dp2 r11.w, r14.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + lt r14.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.wwwz + lt r16.xy, r12.wzww, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r14.zw, r14.zzzw, -r16.xxxy + itof r14.zw, r14.zzzw + mul r16.xy, r5.xzxx, r14.zwzz + mul r12.x, r9.w, r11.w + add r14.z, -r11.w, l(1.000000) + mad r14.z, r14.z, l(0.700000), l(0.300000) + mul r17.xy, r12.xxxx, l(3.000000, 6.000000, 0.000000, 0.000000) + mad r12.x, -cb0[223].x, r14.z, r17.x + frc r18.x, r12.x + mad r12.x, cb0[223].x, l(-0.300000), r17.y + frc r18.y, r12.x + mul r11.w, r11.w, l(5.000000) + round_ni r11.w, r11.w + add r17.x, r11.w, l(1.000000) + mul r17.y, r5.y, r17.x + mov r5.w, l(0.100000) + mul r14.zw, r5.yyyw, r17.xxxy + frc r14.zw, r14.zzzw + add r17.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + add r17.xy, r14.zwzz, -r17.xyxx + add r17.xy, r17.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) + mul_sat r17.xy, r17.xyxx, l(5.00000048, 5.00000048, 0.000000, 0.000000) + mad r17.zw, r17.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) + mul r17.xy, r17.xyxx, r17.xyxx + mul r17.xy, r17.xyxx, r17.zwzz + add r17.zw, -r14.zzzw, r18.xxxy + max r17.xy, r17.zwzz, r17.xyxx + add r18.zw, -r18.xxxy, r14.zzzw + add r18.zw, r18.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) + mul r18.zw, r18.zzzw, l(0.000000, 0.000000, 5.00000048, 5.00000048) + max r18.zw, r18.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r19.xy, r18.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r18.zw, r18.zzzw, r18.zzzw + mul r18.zw, r18.zzzw, r19.xxxy + add r17.zw, r17.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + max r17.zw, r17.zzzw, r18.zzzw + ge r14.zw, r14.zzzw, r18.xxxy + and r14.zw, r14.zzzw, l(0, 0, 0x3f800000, 0x3f800000) + add r17.zw, -r17.xxxy, r17.zzzw + mad r14.zw, r14.zzzw, r17.zzzw, r17.xxxy + mad r11.w, r14.z, r14.z, l(-0.400000) + mul_sat r11.w, r11.w, l(1.66666663) + mad r12.x, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.x + mad r12.x, r14.w, l(2.000000), l(-1.000000) + mul r14.z, r11.w, l(0.010000) + mul r17.x, r12.x, r14.z + mad r17.x, r9.w, l(0.100000), r17.x + mul r14.z, r11.w, r14.z + mad r14.z, r14.z, r12.x, r9.w + mul r17.y, r9.w, r14.z + mov r16.z, r5.y + mad r17.zw, r16.yyyz, cb0[224].xxxy, r17.xxxy + sample_b_indexable(texture2d)(float,float,float,float) r18.xyzw, r17.zwzz, t10.xyzw, s2, cb0[108].x + mov r16.w, -r16.x + mad r16.xy, r16.wzww, cb0[224].xyxx, r17.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r16.xyxx, t10.xyzw, s2, cb0[108].x + mul r16.xyzw, r13.wwww, r16.xyzw + mad r16.xyzw, r18.xyzw, r13.xxxx, r16.xyzw + mad r13.xw, r16.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r9.w, r11.w, l(2.000000), l(-1.000000) + mad_sat r9.w, r9.w, l(0.800000), r14.w + mad r14.z, -r16.w, l(0.500000), l(1.000000) + mad r9.w, r9.w, r14.z, l(-0.700000) + mul_sat r9.w, r9.w, l(3.33333325) + mad r14.z, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r14.z + mul r12.x, r12.x, r16.w + mad_sat r11.w, r12.x, l(0.500000), r11.w + mad r11.w, r11.w, l(0.500000), l(0.100000) + max r9.w, r9.w, r11.w + add r11.w, -r9.w, l(1.000000) + max r11.w, r11.w, l(0.000000) + mul r12.x, r11.w, r11.w + mul r12.x, r12.x, r12.x + mul r11.w, r11.w, r12.x + ge r11.w, r16.z, r11.w + and r11.w, r11.w, l(0x3f800000) + mad r9.w, r9.w, l(0.700000), l(0.200000018) + mad r9.w, r11.w, r9.w, l(0.100000) + mul r9.w, r16.z, r9.w + mul r9.w, r9.w, cb0[223].y + mul r9.w, r9.w, l(0.330000) + mul r11.w, r11.z, cb0[222].x + mul r11.w, r13.z, r11.w + mul r9.w, r9.w, r11.w + dp2 r11.w, r13.xwxx, r13.xwxx + min r11.w, r11.w, l(1.000000) + add r11.w, -r11.w, l(1.000000) + sqrt r11.w, r11.w + max r11.w, r11.w, l(0.000488281250) + mul_sat r12.x, r9.w, l(10.000000) + mad r14.z, r12.x, l(-2.000000), l(3.000000) + mul r12.x, r12.x, r12.x + mul r12.x, r12.x, r14.z + mul r12.x, r12.x, cb0[223].y + mul r16.xy, r12.xxxx, r13.xwxx + add r12.x, l(-1.500000), cb0[223].y + mul_sat r12.x, r12.x, l(0.666666687) + mad r13.x, r12.x, l(-2.000000), l(3.000000) + mul r12.x, r12.x, r12.x + mul r12.x, r12.x, r13.x + mul r13.x, r12.x, l(-0.200000) + mad r11.w, -r12.x, l(-0.200000), r11.w + mad r16.z, r9.w, r11.w, r13.x + dp3 r11.w, r16.xyzx, r16.xyzx + max r11.w, r11.w, l(1.175494351E-38) + rsq r11.w, r11.w + mul r16.xyz, r11.wwww, r16.xyzx + mov r17.x, r14.y + mov r17.y, r15.x + mov r17.z, r12.z + dp3 r17.x, r17.xyzx, r16.xyzx + mov r15.w, r12.y + dp2 r17.y, r15.ywyy, r16.yzyy + mov r12.y, r14.x + mov r12.z, r15.z + dp3 r17.z, r12.yzwy, r16.xyzx + mad r12.xyz, -r3.xyzx, r1.wwww, r17.xyzx + mad r12.xyz, r9.wwww, r12.xyzx, r2.xywx + mul r9.w, r9.w, cb0[223].y + mul r9.w, r9.w, l(0.330000) +else + mov r12.xyz, r2.xywx + mov r9.w, l(0) +endif +lt r13.xw, l(0.000488281250, 0.000000, 0.000000, 0.000488281250), cb0[227].yyyw +or r11.w, r13.w, r13.x +lt r13.x, l(0.000488281250), r13.y +and r11.w, r11.w, r13.x +if_nz r11.w + mul r14.xyz, r2.ywxy, l(1.000000, 0.000000, 0.000000, 0.000000) + mad r14.xyz, r2.xywx, l(0.000000, 0.000000, 1.000000, 0.000000), -r14.xyzx + dp2 r11.w, r14.xzxx, r14.xzxx + rsq r11.w, r11.w + mul r14.xyz, r11.wwww, r14.xyzx + mul r15.xyz, r2.ywxy, r14.xyzx + mad r15.xyz, r14.zxyz, r2.wxyw, -r15.xyzx + dp3 r11.w, r15.xyzx, r15.xyzx + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xzyx + mul r13.xw, -r5.xxxz, cb0[228].xxxy + frc r14.yw, r13.xxxw + round_ni r13.xw, r13.xxxw + dp2 r11.w, r13.xwxx, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + add r13.x, r11.w, cb0[227].x + frc r13.x, r13.x + mul r13.w, cb0[228].z, cb0[228].z + mul r13.x, r13.w, r13.x + round_ni r13.x, r13.x + div r13.w, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[228].z + mad r16.xy, -r5.xzxx, cb0[228].xyxx, cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.xy, r16.xyxx, t11.zwxy, s2, cb0[108].x + mad r17.xy, -r5.xzxx, cb0[228].xyxx, -cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.zw, r17.xyxx, t11.xyzw, s2, cb0[108].x + mul r16.xyzw, r16.xyzw, cb0[227].wwww + mad r16.xyzw, r16.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -cb0[227].wwww + ge r11.w, l(0.500000), r11.w + and r11.w, r11.w, l(0x3f800000) + add r17.xy, -r14.ywyy, r14.wyww + mad r14.yw, r11.wwww, r17.xxxy, r14.yyyw + div r11.w, r13.x, cb0[228].z + ge r17.x, r11.w, -r11.w + frc r11.w, |r11.w| + movc r11.w, r17.x, r11.w, -r11.w + mul r11.w, r11.w, cb0[228].z + mul r17.x, r11.w, r13.w + add r17.zw, l(0.000000, 0.000000, -0.050000, -1.000000), cb0[228].wwwz + mul r11.w, r13.w, r13.x + round_ni r11.w, r11.w + add r11.w, -r11.w, r17.w + mul r17.y, r11.w, r13.w + mad r13.xw, r14.yyyw, r13.wwww, r17.xxxy + frc r13.xw, r13.xxxw + sample_b_indexable(texture2d)(float,float,float,float) r13.xw, r13.xwxx, t11.xzwy, s1, cb0[108].x + mul r13.xw, r13.xxxw, cb0[227].yyyy + mad r13.xw, r13.xxxw, l(2.000000, 0.000000, 0.000000, 2.000000), -cb0[227].yyyy + add r14.yw, r16.zzzw, r16.xxxy + add r16.xy, r13.xwxx, r14.ywyy + dp2 r11.w, r16.xyxx, r16.xyxx + min r11.w, r11.w, l(1.000000) + add r11.w, -r11.w, l(1.000000) + sqrt r11.w, r11.w + max r16.z, r11.w, l(0.000488281250) + dp3 r11.w, r16.xyzx, r16.xyzx + rsq r11.w, r11.w + mul r16.xyz, r11.wwww, r16.xyzx + mov r15.w, r2.x + dp2 r18.x, r15.xwxx, r16.yzyy + mov r19.x, r14.z + mov r19.y, r15.z + mov r19.z, r2.y + dp3 r18.y, r19.xyzx, r16.xyzx + mov r15.x, r14.x + mov r15.z, r2.w + dp3 r18.z, r15.xyzx, r16.xyzx + mul r11.z, r11.z, cb0[222].x + mul r11.z, r13.y, r11.z + max r11.w, l(0.000488281250), cb0[228].w + mov_sat r17.z, r17.z + add r13.x, -r11.w, r17.z + add r11.w, r2.z, -r11.w + div r13.x, l(1.000000, 1.000000, 1.000000, 1.000000), r13.x + mul_sat r11.w, r11.w, r13.x + mad r13.x, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r13.x + mul r11.z, r11.w, r11.z + mul r11.z, r13.z, r11.z + mad r3.xyz, -r3.xyzx, r1.wwww, r18.xyzx + mad r12.xyz, r11.zzzz, r3.xyzx, r2.xywx +endif +min r1.w, r10.y, r10.x +mul r3.x, r11.x, cb0[230].z +mad r3.y, -cb0[230].z, r11.x, l(1.000000) +mad r3.x, r10.w, r3.y, r3.x +mad r3.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r3.z, r11.y, -cb0[222].w +div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y +mul_sat r3.y, r3.y, r3.z +mad r3.z, r3.y, l(-2.000000), l(3.000000) +mul r3.y, r3.y, r3.y +mul r3.y, r3.y, r3.z +add r3.z, -r3.x, cb0[230].y +mad r3.x, r3.y, r3.z, r3.x +add r3.x, -r3.x, l(1.000000) +mul r3.y, r3.x, r10.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r3.z, -r2.z, l(1.000000) +mad_sat r10.w, r3.z, cb0[222].z, cb0[222].y +mad_sat r10.w, r9.w, cb0[224].z, r10.w +add r11.x, -r10.w, l(1.000000) +mad r10.w, r1.x, r11.x, r10.w +mul_sat r10.z, r10.z, l(3.33333325) +mad r11.x, r10.z, l(-2.000000), l(3.000000) +mul r10.z, r10.z, r10.z +mad r10.z, -r11.x, r10.z, l(1.000000) +mul r11.x, r10.w, cb0[222].x +add r11.y, -r1.x, l(1.000000) +mul r11.x, r11.y, r11.x +mul r11.x, r10.z, r11.x +mad r11.x, r11.x, l(-0.750000), l(1.000000) +mad r10.w, r10.w, l(-0.299999952), l(0.900000) +sqrt r11.y, r3.z +add r10.w, r10.w, r11.y +add_sat r10.w, r10.w, l(-0.600000) +max r10.w, r3.z, r10.w +min r10.w, r10.w, l(0.990000) +add_sat r11.y, l(2.000000), -cb0[222].x +mul r11.y, r11.y, cb0[222].x +mul r10.z, r10.z, r11.y +mad r3.x, -r10.x, r3.x, l(1.000000) +mul r3.x, r3.x, r10.z +add r10.x, -r3.z, r10.w +mad r3.x, r3.x, r10.x, r3.z +add r3.x, -r3.x, l(1.000000) +mul_sat r3.z, r9.w, l(20.000000) +mad r9.w, r3.z, l(-2.000000), l(3.000000) +mul r3.z, r3.z, r3.z +mul r3.z, r3.z, r9.w +mad r3.z, r3.z, l(-0.900000), l(1.000000) +mul r9.w, r3.z, r3.x +add r10.x, r10.y, l(-1.000000) +mad r10.x, r1.z, r10.x, l(1.000000) +add r10.y, -r1.z, l(1.000000) +movc r10.xy, r8.wwww, r10.xyxx, l(1.000000,1.000000,0,0) +min r1.z, r9.w, r10.x +mad r3.x, r3.x, r3.z, -r1.z +mad r1.z, r1.w, r3.x, r1.z +add r2.z, -r1.z, r2.z +mad r13.z, r3.y, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r10.xzw, r0.xyzz, t26.xwyz +min r1.z, r11.x, r10.y +add r2.z, -r1.z, r11.x +mad r1.z, r1.w, r2.z, r1.z +add r1.w, -r1.z, l(1.000000) +mad r1.z, r3.y, r1.w, r1.z +mul r3.xyz, r1.zzzz, r10.xzwx +mul r11.xyz, r1.xxxx, r3.xyzx +mad r10.xyz, r10.xzwx, r1.zzzz, -r11.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz +dp3 r2.z, r12.xyzx, r9.xyzx +max r11.x, r2.z, l(0.000000) +mul r3.y, r13.z, r13.z +mul r14.x, r11.x, r11.x +mul r14.z, r11.x, r14.x +mul r2.z, r3.y, r3.y +mul r3.z, r3.y, r2.z +mov r11.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r15.x, l(3.327070, 1.000000, 0.000000, 0.000000), r11.xyxx +dp2 r15.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r11.xzxx +mov r3.x, l(1.000000) +dp2 r8.w, r15.xyxx, r3.xyxx +mov r14.yw, l(0,9.044010,0,1.000000) +dp3 r15.x, l(3.596850, -1.367720, 1.000000, 0.000000), r14.xzwx +dp3 r15.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r14.xyzx +mov r16.x, l(5.565890) +mov r16.yz, r14.xxzx +dp3 r15.z, l(1.000000, 19.788601, -20.212299, 0.000000), r16.xyzx +dp3 r9.w, r15.xyzx, r3.xyzx +div r8.w, r8.w, r9.w +dp2 r15.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r11.xwxx +mov r14.x, l(1.296780) +mov r14.y, r11.x +dp2 r15.y, l(1.000000, -0.755907, 0.000000, 0.000000), r14.xyxx +dp2 r9.w, r15.xyxx, r3.xyxx +dp3 r15.x, l(2.923380, 59.418800, 1.000000, 0.000000), r14.yzwy +mov r14.xw, l(20.322500,0,0,121.563004) +dp3 r15.y, l(1.000000, -27.030199, 222.591995, 0.000000), r14.xyzx +dp3 r15.z, l(626.130005, 316.627014, 1.000000, 0.000000), r14.yzwy +dp3 r3.x, r15.xyzx, r3.xyzx +div r3.x, r9.w, r3.x +mad r11.yzw, r1.xxzw, r8.wwww, r3.xxxx +add r3.x, r3.x, r8.w +ld_indexable(texture2d)(float,float,float,float) r3.y, r0.xyzz, t6.zxyw +lt r0.z, l(0.001000), r3.y +if_nz r0.z + dp3 r0.z, -r9.xyzx, r12.xyzx + add r0.z, r0.z, r0.z + mad r14.xyz, r12.xyzx, -r0.zzzz, -r9.xyzx + dp3 r0.z, -cb2[0].xyzx, r14.xyzx + mad r15.xyz, cb2[0].xyzx, r0.zzzz, r14.xyzx + lt r0.z, r0.z, cb2[4].z + dp3 r8.w, r15.xyzx, r15.xyzx + max r8.w, r8.w, l(0.0000610351562) + rsq r8.w, r8.w + mul r15.xyz, r8.wwww, r15.xyzx + mul r15.xyz, r15.xyzx, cb2[4].yyyy + mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx + dp3 r8.w, r15.xyzx, r15.xyzx + rsq r8.w, r8.w + mul r15.xyz, r8.wwww, r15.xyzx + movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx + mad r8.xyz, r8.xyzx, r7.wwww, r14.xyzx + dp3 r0.z, r8.xyzx, r8.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r8.xyz, r0.zzzz, r8.xyzx + dp3_sat r13.x, r14.xyzx, r12.xyzx + dp3_sat r0.z, r12.xyzx, r8.xyzx + min r13.y, r11.x, l(1.000000) + mad r7.w, r0.z, r2.z, -r0.z + mad r0.z, r7.w, r0.z, l(1.000000) + dp3_sat r7.w, r9.xyzx, r8.xyzx + add r7.w, -r7.w, l(1.000000) + mul r8.x, r7.w, r7.w + mul r8.x, r8.x, r8.x + mul r8.y, r7.w, r8.x + add r8.z, -r13.z, l(1.000000) + mad r8.w, -r8.z, l(0.383026), l(-0.0761947036) + mad r8.w, r8.z, r8.w, l(1.049970) + mad r8.z, r8.z, r8.w, l(0.409255) + min r8.z, r8.z, l(0.999000) + add r8.w, -r8.z, l(1.000000) + add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx + mad r7.w, -r8.x, r7.w, l(1.000000) + mad r16.xyz, r1.xzwx, r7.wwww, r8.yyyy + mul r0.z, r0.z, r0.z + div r0.z, r2.z, r0.z + mad r8.xy, -r13.yxyy, r2.zzzz, r13.yxyy + mad r8.xy, r8.xyxx, r13.yxyy, r2.zzzz + sqrt r8.xy, r8.xyxx + mul r8.xy, r8.xyxx, r13.xyxx + add r2.z, r8.y, r8.x + add r2.z, r2.z, l(0.000100) + div r2.z, l(0.500000), r2.z + mul r0.z, r0.z, r2.z + mul r16.xyz, r0.zzzz, r16.xyzx + min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r17.xyzw, r13.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r17.xyxx, t12.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r17.zwzz, t12.yzxw, s1, l(0.000000) + mul r0.z, r0.z, r2.z + mul r0.z, r8.z, r0.z + div r0.z, r0.z, r8.w + mul r8.xyz, r15.xyzx, r15.xyzx + mul r8.xyz, r0.zzzz, r8.xyzx + mad r15.xyz, -r15.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r8.xyz, r8.xyzx, r15.xyzx + add r8.xyz, r8.xyzx, r16.xyzx + mul r8.xyz, r8.xyzx, cb2[4].xxxx + max r8.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r8.xyz, r8.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + dp3_sat r0.z, r14.xyzx, r2.xywx + mul r14.xyz, r0.zzzz, r10.xyzx + mad r8.xyz, r8.xyzx, r13.xxxx, r14.xyzx + mul r8.xyz, r8.xyzx, cb2[1].xyzx + mov r3.z, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r13.xyw, r3.yzyy, t7.xywz, s1, cb0[108].x + add r0.z, -r3.y, l(1.000000) + mad r13.xyw, r8.xyxz, r13.xyxw, -r8.xyxz + mad r8.xyz, r0.zzzz, r13.xywx, r8.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t13.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r8.xyz, r0.zzzz, r8.xyzx +else + mov r8.xyz, l(0,0,0,0) +endif +ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r3.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + dp3 r2.z, r2.xywx, r9.xyzx + max r2.z, r2.z, l(0.000000) + add r2.z, r0.z, r2.z + mad r3.y, r13.z, l(-16.000000), l(-1.000000) + exp r3.y, r3.y + log r2.z, |r2.z| + mul r2.z, r2.z, r3.y + exp r2.z, r2.z + add r2.z, r0.z, r2.z + add r2.z, r2.z, l(-1.000000) + mov_sat r13.xyw, r2.zzzz + mad r14.xyz, r10.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r10.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r10.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r13.xyw, r1.yyyy + mov r14.xyz, r1.yyyy +endif +mad r15.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[212].x +mad r16.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx +dp2 r0.z, r16.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx +mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r16.xyz, r15.xzyx, -r16.xyzx +max r0.z, |r16.y|, |r16.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.y, |r16.z|, l(-208.000000) +mul_sat r1.y, r1.y, l(0.031250) +max r0.z, r0.z, r1.y +ne r1.y, l(0.000000), cb0[210].w +lt r2.z, r0.z, l(1.000000) +and r1.y, r1.y, r2.z +if_nz r1.y + mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r16.xyz, r15.xzyx, -r16.xyzx + max r1.y, |r16.y|, |r16.x| + add r1.y, r1.y, l(-29.000000) + mul_sat r1.y, r1.y, l(0.500000) + add r2.z, |r16.z|, l(-13.000000) + mul_sat r2.z, r2.z, l(0.500000) + max r1.y, r1.y, r2.z + lt r2.z, r1.y, l(1.000000) + if_nz r2.z + mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r16.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) + add r2.z, -r1.y, l(1.000000) + mul r3.y, l(0.500000), cb0[211].y + mad r7.w, -cb0[211].y, l(0.500000), l(1.000000) + max r3.y, r3.y, r16.y + min r3.y, r7.w, r3.y + mul r16.w, r3.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) + mad r3.y, r18.w, r2.z, r0.z + add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mul r19.xyzw, r2.zzzz, r19.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r17.xxxx, r16.xyzx + mov r16.w, r17.x + mul r16.xyzw, r2.zzzz, r16.xyzw + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r18.xyzx + mul r17.xyzw, r2.zzzz, r17.xyzw + else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r3.y, r0.z + endif + mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r18.xyz, r15.xzyx, -r18.xyzx + max r2.z, |r18.y|, |r18.x| + add r2.z, r2.z, l(-116.000000) + mul_sat r2.z, r2.z, l(0.125000) + add r7.w, |r18.z|, l(-52.000000) + mul_sat r7.w, r7.w, l(0.125000) + max r2.z, r2.z, r7.w + lt r7.w, r2.z, l(1.000000) + if_nz r7.w + mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r18.xyzx, cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t19.yzwx, s2, l(0.000000) + add r7.w, -r2.z, l(1.000000) + mul r1.y, r1.y, r7.w + mul r7.w, l(0.500000), cb0[211].y + mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) + max r7.w, r7.w, r18.y + min r7.w, r8.w, r7.w + mul r18.w, r7.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t20.xyzw, s1, l(0.000000) + mad r3.y, r21.w, r1.y, r3.y + add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t20.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r20.yyyy, r22.xyzx + mov r22.w, r20.y + mad r19.xyzw, r22.xyzw, r1.yyyy, r19.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t20.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.xxxx, r18.xyzx + mov r18.w, r20.x + mad r16.xyzw, r18.xyzw, r1.yyyy, r16.xyzw + mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r18.xyzx + mad r17.xyzw, r20.xyzw, r1.yyyy, r17.xyzw + endif + lt r1.y, l(0.000000), r2.z + if_nz r1.y + mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r15.xyzx, cb0[211].xyzx + mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r18.xyzx + mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r20.xyzx, r15.xyzx + min r15.xyz, r18.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t21.yzwx, s2, l(0.000000) + add r1.y, -r0.z, l(1.000000) + mul r1.y, r1.y, r2.z + max r2.z, r20.y, r15.y + min r2.z, r18.y, r2.z + mul r15.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t22.xyzw, s1, l(0.000000) + add r20.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t22.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r21.yyyy, r20.xyzx + mov r20.w, r21.y + mad r19.xyzw, r20.xyzw, r1.yyyy, r19.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t22.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r21.xxxx, r15.xyzx + mov r15.w, r21.x + mad r16.xyzw, r15.xyzw, r1.yyyy, r16.xyzw + mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r15.xyzx + mad r17.xyzw, r21.xyzw, r1.yyyy, r17.xyzw + mad r3.y, r18.w, r1.y, r3.y + endif + mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r1.y + add r0.z, r0.z, r1.y + mul r15.y, r0.z, l(0.500000) +else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r15.yxyy, cb0[213].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.zw, r15.yyyx, cb0[213].wwwy +mad r18.x, r15.w, l(0.375000), r15.z +add r17.xyzw, r17.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[214].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.zw, r15.yyyx, cb0[214].wwwy +mad r18.x, r15.w, l(0.375000), r15.z +add r16.xyzw, r16.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[215].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.xy, r15.yxyy, cb0[215].wyww +mad r18.x, r15.y, l(0.375000), r15.x +add r15.xyzw, r18.wyzx, r19.xyzw +ge r18.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r18.y, r18.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.zwzz, t16.xyzw, s1, l(0.000000) + lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| + or r4.zw, r19.zzzw, r19.xxxy + or r0.z, r4.w, r4.z + if_nz r0.z + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mov r4.z, l(1.000000) + mov r4.w, r0.z + mov r1.y, l(0) + loop + ge r2.z, l(4.600000), r4.w + breakc_nz r2.z + iadd r2.z, r1.y, l(1) + mul r19.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r4.zw, r19.xxxy + mov r1.y, r2.z + continue + endloop + mul r18.xyzw, r4.zzzz, r18.xyzw + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb4[3].x, cb4[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r19.x, r0.z, l(0.00390625000) + mov r19.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r19.xyxx, t15.zwxy, s1, l(0.000000) + mad r4.zw, r4.zzzw, cb4[2].xxxy, cb4[2].zzzw + mul r19.x, r4.z, l(3.54490781) + mul r19.yzw, r4.wwww, r18.yyzw + mul r0.z, r18.x, l(0.406976730) + exp r0.z, r0.z + mul r18.xyzw, r0.zzzz, r19.xyzw + mov r19.xyzw, r18.xyzw + mov r0.z, l(0) + loop + uge r2.z, r0.z, r1.y + breakc_nz r2.z + mul r20.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r2.z, r20.xyzw, r19.xyzw + dp2 r3.y, r20.yxyy, r19.xyxx + dp2 r4.z, r20.zxzz, r19.xzxx + dp2 r4.w, r20.wxww, r19.xwxx + iadd r7.w, r0.z, l(1) + mov r19.x, r2.z + mov r19.y, r3.y + mov r19.zw, r4.zzzw + mov r0.z, r7.w + continue + endloop + mul r18.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r19.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r18.xyzw, r19.xyzw + dp2 r1.y, r18.yxyy, r19.xyxx + dp2 r2.z, r18.zxzz, r19.xzxx + dp2 r3.y, r18.wxww, r19.xwxx + mul r19.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.z, r18.xyzw, r19.xyzw + dp2 r4.w, r18.yxyy, r19.xyxx + dp2 r7.w, r18.zxzz, r19.xzxx + dp2 r8.w, r18.wxww, r19.xwxx + mul r19.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r9.w, r18.xyzw, r19.xyzw + dp2 r10.w, r18.yxyy, r19.xyxx + dp2 r11.x, r18.zxzz, r19.xzxx + dp2 r14.w, r18.wxww, r19.xwxx + mul r17.w, r0.z, l(0.886226952) + mul r17.x, r3.y, l(-1.02332675) + mul r17.y, r1.y, l(-1.02332675) + mul r17.z, r2.z, l(1.02332675) + mul r16.x, r8.w, l(-1.02332675) + mul r16.yw, r4.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r16.z, r7.w, l(1.02332675) + mul r15.w, r9.w, l(0.886226952) + mul r15.x, r14.w, l(-1.02332675) + mul r15.y, r10.w, l(-1.02332675) + mul r15.z, r11.x, l(1.02332675) + endif +endif +dp3 r0.z, r17.xyzx, r2.xywx +add r0.z, r17.w, r0.z +max r17.x, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r2.xywx +add r0.z, r16.w, r0.z +max r17.y, r0.z, l(0.000000) +dp3 r0.z, r15.xyzx, r2.xywx +add r0.z, r15.w, r0.z +max r17.z, r0.z, l(0.000000) +dp3 r0.z, -r9.xyzx, r12.xyzx +add r0.z, r0.z, r0.z +mad r2.xyz, r12.xyzx, -r0.zzzz, -r9.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r1.y, r13.z, l(0.001000) +log r1.y, r1.y +mad r1.y, -r1.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.y +mul r4.zw, r4.xxxy, cb1[0].wwww +round_ni r4.zw, r4.zzzw +add r1.y, |r3.w|, -cb1[2].y +round_ni r1.y, r1.y +add r2.w, l(-1.000000), cb1[1].x +max r3.y, r1.y, l(0.000000) +min r2.w, r2.w, r3.y +ge r1.y, r2.w, r1.y +mad r3.y, r4.w, cb1[0].x, r4.z +ftoi r3.y, r3.y +iadd r3.y, r3.y, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.y, r3.y, l(0), t0.xxxx +ftoi r2.w, r2.w +iadd r2.w, r2.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.w, r2.w, l(0), t0.xxxx +and r2.w, r2.w, r3.y +and r1.y, r1.y, r2.w +mul r15.xyz, r17.xyzx, cb0[111].xxxx +dp3 r2.w, r15.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r5.w, l(1.000000) +mov r12.w, l(1.000000) +mov r15.xyz, l(0,0,0,0) +mov r3.y, l(1.000000) +mov r4.z, r1.y +mov r4.w, l(0) +loop + lt r7.w, l(0.010000), r3.y + ine r8.w, r4.z, l(0) + and r8.w, r7.w, r8.w + if_nz r8.w + firstbit_lo r8.w, r4.z + ishl r9.w, l(1), r8.w + xor r4.z, r4.z, r9.w + ishl r8.w, r8.w, l(3) + dp4 r16.x, cb1[r8.w + 6].xyzw, r5.xyzw + dp4 r16.y, cb1[r8.w + 7].xyzw, r5.xyzw + dp4 r16.z, cb1[r8.w + 8].xyzw, r5.xyzw + ge r18.xyz, cb1[r8.w + 5].xyzx, |r16.xyzx| + and r9.w, r18.y, r18.x + and r9.w, r18.z, r9.w + if_nz r9.w + mul r9.w, l(0.100000), cb1[r8.w + 5].x + mul r18.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r16.xyzx|, cb1[r8.w + 5].xyzx + mul r19.xyz, r19.xyzx, cb1[r8.w + 9].xyzx + eq r10.w, l(1.000000), cb1[r8.w + 10].x + if_nz r10.w + dp3 r20.x, cb1[r8.w + 6].xyzx, r2.xyzx + dp3 r20.y, cb1[r8.w + 7].xyzx, r2.xyzx + dp3 r20.z, cb1[r8.w + 8].xyzx, r2.xyzx + add r21.xyz, -r16.xyzx, cb1[r8.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r16.xyzx, -cb1[r8.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r10.w, r21.y, r21.x + min r10.w, r21.z, r10.w + mad r16.xyz, r20.xyzx, r10.wwww, r16.xyzx + else + mov r16.xyz, r2.xyzx + endif + dp3 r10.w, r16.xyzx, r16.xyzx + rsq r10.w, r10.w + mul r16.xyz, r10.wwww, r16.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r10.w, r16.xyzx, r20.xyzx + div r16.xyz, r16.xyzx, r10.wwww + lt r10.w, r16.z, l(0.000000) + add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r16.zw, r16.zzzw, r20.xxxy + movc r16.xy, r10.wwww, r16.zwzz, r16.xyxx + dp4 r10.w, cb1[r8.w + 4].xyzw, r12.xyzw + max r10.w, r10.w, l(0.000000) + max r10.w, r10.w, l(0.000100) + min r11.x, r19.z, r19.y + min r11.x, r11.x, r19.x + add r13.z, r18.y, r18.x + mad r13.z, r18.z, r18.z, r13.z + mad r9.w, r9.w, r9.w, -r13.z + mul r9.w, r9.w, cb1[r8.w + 9].x + mul r9.w, r9.w, cb1[r8.w + 9].x + add r13.z, l(1.000000), -cb1[r8.w + 10].y + mul r9.w, r9.w, r13.z + mul r9.w, r9.w, l(100.000000) + mad_sat r9.w, r11.x, cb1[r8.w + 10].y, r9.w + mul r11.x, r9.w, cb1[r8.w + 10].w + mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww + mov r16.z, cb1[r8.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z + mul r16.xyz, r16.xyzx, cb1[r8.w + 9].wwww + div r13.z, r2.w, r10.w + min r13.z, |r13.z|, l(1.000000) + mad r13.z, r13.z, l(2.000000), r2.w + add r10.w, r10.w, l(2.000000) + div r10.w, r13.z, r10.w + add r10.w, r10.w, l(-1.000000) + mad r10.w, r10.w, cb0[112].w, l(1.000000) + mul r16.xyz, r10.wwww, r16.xyzx + mul r16.xyz, r11.xxxx, r16.xyzx + mad r15.xyz, r16.xyzx, r3.yyyy, r15.xyzx + mad r8.w, -r9.w, cb1[r8.w + 10].w, l(1.000000) + mul r3.y, r3.y, r8.w + endif + mov r4.w, l(-1) + continue + else + mov r4.w, r7.w + break + endif + mov r4.w, r7.w +endloop +if_nz r4.w + dp3 r1.y, r2.xyzx, r2.xyzx + rsq r1.y, r1.y + mul r2.xyz, r1.yyyy, r2.xyzx + lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r2.xyzx + lt r18.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r16.xyz, -r16.xyzx, r18.xyzx + itof r16.xyz, r16.xyzx + dp3 r1.y, r2.xyzx, r16.xyzx + div r2.xyz, r2.xyzx, r1.yyyy + lt r1.y, r2.z, l(0.000000) + add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r4.zw, r4.zzzw, r16.xxxy + movc r2.xy, r1.yyyy, r4.zwzz, r2.xyxx + mov r12.w, l(1.000000) + dp4 r1.y, cb1[3].xyzw, r12.xyzw + max r1.y, r1.y, l(0.000000) + max r1.y, r1.y, l(0.000100) + mad r2.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r2.xy, r2.xyxx, cb1[1].wwww, cb1[2].wwww + mov r2.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r2.xyz, r2.xyzx, t5.xyzw, s3, r0.z + div r0.z, r2.w, r1.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r2.w + add r1.y, r1.y, l(2.000000) + div r0.z, r0.z, r1.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r2.xyz, r0.zzzz, r2.xyzx + mad r15.xyz, r2.xyzx, r3.yyyy, r15.xyzx +endif +mul r2.xyz, r15.xyzx, cb0[112].zzzz +mul r2.xyz, r2.xyzx, cb0[111].yyyy +if_nz r3.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r12.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.y, -r0.z, l(1.000000) + mul r15.xyz, r1.yyyy, r2.xyzx + mad r2.xyz, r12.xyzx, r0.zzzz, r15.xyzx +endif +mul r10.xyz, r10.xyzx, r17.xyzx +mul r10.xyz, r10.xyzx, cb0[111].xxxx +add r0.z, -r3.x, l(1.000000) +div r0.z, r0.z, r3.x +mul r1.xyz, r0.zzzz, r1.xzwx +mad r1.xyz, r1.xyzx, r11.yzwy, r11.yzwy +mul r1.xyz, r1.xyzx, r2.xyzx +mul r1.xyz, r13.xywx, r1.xyzx +mad r1.xyz, r10.xyzx, r14.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r8.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r6.x, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r5.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r9.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[163].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r9.xyzx, -r7.xyzx + add r2.w, r5.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.x + mul r4.z, r0.x, r3.z + mad r4.w, r4.z, r2.w, cb0[44].y + mad r2.w, -r4.z, r2.w, r2.w + mul r4.z, r2.w, cb0[159].z + max r4.z, r4.z, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.w, r4.w, -cb0[159].x + mul r5.w, r5.w, cb0[159].z + max r5.w, r5.w, l(-127.000000) + exp r5.w, -r5.w + mul r5.w, r5.w, cb0[159].y + lt r7.x, l(5.960464478E-08), |r4.z| + exp r7.y, -r4.z + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r4.z + mad r4.z, -r4.z, l(0.240226507), l(0.693147182) + movc r4.z, r7.x, r7.y, r4.z + add r4.w, r4.w, -cb0[162].z + mul r4.w, r4.w, cb0[162].x + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[162].y + lt r7.x, l(5.960464478E-08), |r2.w| + exp r7.y, -r2.w + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r7.x, r7.y, r2.w + mul r2.w, r2.w, r4.w + mad r2.w, r5.w, r4.z, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r0.x, r6.x, r0.x + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r6.xxxx, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.xxxy + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r3.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r3.xyzx, t14.xyzw, s1, l(0.000000) + add r0.y, |r3.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r5.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r6.x, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r6.xxxx, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xyzx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx + +// === Simplified Fog Modification (Anti-Banding) === +// Check if fog modification is enabled via cb13[12].y +lt r15.x, l(0.500000), cb13[12].y +if_nz r15.x + // r1.xyz = scene color, r4.xyz = transmittance, r0.xyz = fog inscatter + // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density + add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + + // Reduce fog inscatter intensity + mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + + // Modified fog blend: scene * boostedTrans + reducedInscatter + mad r0.xyz, r1.xyzx, r15.xyzx, r16.xyzx +else + // Original fog blend + mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +endif +// === End Fog Modification === +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r6.yzwy, r6.yzwy +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r5.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t27.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..5e400f1960 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0_original_backup.asm @@ -0,0 +1,1279 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sun Feb 1 03:43:52 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[5], immediateIndexed +dcl_constantbuffer CB4[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_resource_texture3d (float,float,float,float) t27 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 24 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t24.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t25.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r2.xyw, r1.wwww, r3.xyxz +utof r4.xy, r0.xyxx +mul r4.zw, v0.xxxy, cb0[82].zzzw +mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r5.zw, r5.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) +mul r6.xyzw, -r5.yyyy, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw +mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r3.w, r5.y, cb0[1].z +mad r3.w, cb0[0].z, r5.x, r3.w +mad r3.w, cb0[2].z, r5.z, r3.w +add r3.w, r3.w, cb0[3].z +eq r6.x, l(0.000000), cb0[86].w +add r6.yzw, -r5.xxyz, cb0[44].xxyz +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r8.xyz, r6.xxxx, r6.yzwy, r7.xyzx +dp3 r6.x, r8.xyzx, r8.xyzx +max r7.w, r6.x, l(9.999999939E-09) +rsq r7.w, r7.w +mul r9.xyz, r7.wwww, r8.xyzx +mul r6.x, r6.x, r7.w +lt r8.w, l(0.000488281250), cb0[234].x +if_nz r8.w + sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x +else + mov r10.xy, l(1.000000,1.000000,0,0) +endif +lt r10.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[226].xxxy +if_nz r10.z + add r9.w, |r2.y|, |r2.x| + add r9.w, |r2.w|, r9.w + div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w + mul r11.xyz, |r2.xywx|, r9.wwww + mul r12.xyz, r5.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r9.w, r12.xyzx, t9.yzwx, s2, l(0.000000) + mul r12.xyzw, r11.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) + add r11.xyw, r12.zwzz, r12.xxxy + mad r11.xyz, r11.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r11.xywx + mad r10.z, r9.w, l(2.000000), l(-1.000000) + mul r11.xyz, r10.zzzz, r11.xyzx + mov r10.z, |r2.y| + add r10.z, r10.z, l(-0.700000) + mul_sat r10.z, r10.z, l(4.000000) + mad r11.w, r10.z, l(-2.000000), l(3.000000) + mul r10.z, r10.z, r10.z + mul r10.z, r10.z, r11.w + add r11.w, -cb0[229].z, cb0[229].y + mad r10.z, r10.z, r11.w, cb0[229].z + mul r11.xyz, r10.zzzz, r11.xyzx +else + mov r11.xyz, l(0,0,0,0) + mov r9.w, l(0) +endif +mad r10.z, -r3.y, r1.w, l(-0.200000) +if_nz r10.w + mul r12.xyz, r2.xywx, cb0[233].zzzz + mul r13.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r12.xyz, r12.xyzx, cb0[225].xxxx, r13.xyzx + max r10.w, -r2.y, l(0.000000) + min r10.w, r10.w, l(0.900000) + add r10.w, -r10.w, l(1.000000) + mul_sat r11.w, r10.z, l(-10.000000) + mad r12.w, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.w + max r11.w, r11.w, l(0.100000) + min r11.w, r11.w, l(1.000000) + mul r10.w, r10.w, r11.w + mad r12.xyz, r12.xyzx, r10.wwww, r5.xyzx + add r11.xyz, r11.xyzx, r12.xyzx + mul r12.xyz, r11.yyyy, cb3[1].xyzx + mad r11.xyw, cb3[0].xyxz, r11.xxxx, r12.xyxz + mad r11.xyz, cb3[2].xyzx, r11.zzzz, r11.xywx + add r11.xyz, r11.xyzx, cb3[3].xyzx + mad r12.x, r11.x, l(0.500000), cb3[4].x + mad r10.w, r11.y, l(0.500000), l(0.500000) + add r12.z, -r10.w, cb3[4].y + add r11.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r10.w, r11.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r10.w, r11.xyxx, t8.xxxx, s4, r10.w +else + mov r10.w, l(1.000000) +endif +mov_sat r11.x, r2.y +add r11.y, l(1.000000), -cb0[230].w +mad r11.x, r11.x, r11.y, cb0[230].w +add r11.yz, r5.xxzx, -cb0[44].xxzx +max r11.y, |r11.z|, |r11.y| +mul r11.z, r10.w, r11.x +mul r11.w, l(0.0500000119), cb0[222].w +mad r12.x, -cb0[222].w, l(0.700000), r11.y +div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w +mul_sat r11.w, r11.w, r12.x +mad r12.x, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r12.x +mad r10.w, -r11.x, r10.w, l(1.000000) +mad r10.w, r11.w, r10.w, r11.z +ge r11.z, r1.z, l(0.045000) +and r11.z, r11.z, l(0x3f800000) +mul r11.z, r10.w, r11.z +deriv_rty_coarse r12.xyz, r5.xyzx +deriv_rtx_coarse r13.xyz, r5.zxyz +mul r14.xyz, r12.xyzx, r13.xyzx +mad r12.xyz, r12.zxyz, r13.yzxy, -r14.xyzx +dp3 r11.w, r12.xyzx, r12.xyzx +max r11.w, r11.w, l(1.175494351E-38) +rsq r11.w, r11.w +mul r12.yzw, r11.wwww, r12.xxzy +mov_sat r13.x, r12.y +add r13.y, r13.x, l(-0.988000) +mul_sat r13.y, r13.y, l(1000.012878) +mad r13.z, r13.y, l(-2.000000), l(3.000000) +mul r13.y, r13.y, r13.y +mul r13.y, r13.y, r13.z +add r13.z, |r3.w|, l(-15.000000) +mul_sat r13.z, r13.z, l(0.015000) +add r13.z, -r13.z, l(1.000000) +lt r13.w, l(0.000488281250), cb0[223].y +mad r14.x, cb0[223].z, l(0.300000), l(0.687000) +add r13.x, r13.x, -r14.x +mul_sat r13.x, r13.x, l(-1000.012878) +mad r14.x, r13.x, l(-2.000000), l(3.000000) +mul r13.x, r13.x, r13.x +mul r13.x, r13.x, r14.x +mad r11.w, r12.x, r11.w, l(0.500000) +mul_sat r11.w, r11.w, l(2.500000) +mad r12.x, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r12.x +mul r11.w, r11.w, r13.x +lt r11.w, l(0.000488281250), r11.w +and r11.w, r11.w, r13.w +if_nz r11.w + mul r13.xw, |r12.zzzw|, |r12.zzzw| + add r11.w, r13.w, r13.x + div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w + mul r13.xw, r11.wwww, r13.xxxw + mul r14.xyz, r12.ywzy, l(0.000000, 1.000000, 0.000000, 0.000000) + mad r14.xyz, r12.zywz, l(1.000000, 0.000000, 0.000000, 0.000000), -r14.xyzx + dp2 r11.w, r14.xyxx, r14.xyxx + rsq r11.w, r11.w + mul r14.xyz, r11.wwww, r14.xyzx + mul r15.xyz, r12.ywzy, r14.xyzx + mad r15.xyz, r14.zxyz, r12.wzyw, -r15.xyzx + dp3 r11.w, r15.xyzx, r15.xyzx + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xyzx + add r16.xyz, r5.xyzx, r5.xyzx + round_ni r16.xyz, r16.xyzx + add r16.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + add r14.zw, r16.yyyy, r16.xxxz + dp2 r11.w, r14.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + lt r14.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.wwwz + lt r16.xy, r12.wzww, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r14.zw, r14.zzzw, -r16.xxxy + itof r14.zw, r14.zzzw + mul r16.xy, r5.xzxx, r14.zwzz + mul r12.x, r9.w, r11.w + add r14.z, -r11.w, l(1.000000) + mad r14.z, r14.z, l(0.700000), l(0.300000) + mul r17.xy, r12.xxxx, l(3.000000, 6.000000, 0.000000, 0.000000) + mad r12.x, -cb0[223].x, r14.z, r17.x + frc r18.x, r12.x + mad r12.x, cb0[223].x, l(-0.300000), r17.y + frc r18.y, r12.x + mul r11.w, r11.w, l(5.000000) + round_ni r11.w, r11.w + add r17.x, r11.w, l(1.000000) + mul r17.y, r5.y, r17.x + mov r5.w, l(0.100000) + mul r14.zw, r5.yyyw, r17.xxxy + frc r14.zw, r14.zzzw + add r17.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) + add r17.xy, r14.zwzz, -r17.xyxx + add r17.xy, r17.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) + mul_sat r17.xy, r17.xyxx, l(5.00000048, 5.00000048, 0.000000, 0.000000) + mad r17.zw, r17.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) + mul r17.xy, r17.xyxx, r17.xyxx + mul r17.xy, r17.xyxx, r17.zwzz + add r17.zw, -r14.zzzw, r18.xxxy + max r17.xy, r17.zwzz, r17.xyxx + add r18.zw, -r18.xxxy, r14.zzzw + add r18.zw, r18.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) + mul r18.zw, r18.zzzw, l(0.000000, 0.000000, 5.00000048, 5.00000048) + max r18.zw, r18.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r19.xy, r18.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) + mul r18.zw, r18.zzzw, r18.zzzw + mul r18.zw, r18.zzzw, r19.xxxy + add r17.zw, r17.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + max r17.zw, r17.zzzw, r18.zzzw + ge r14.zw, r14.zzzw, r18.xxxy + and r14.zw, r14.zzzw, l(0, 0, 0x3f800000, 0x3f800000) + add r17.zw, -r17.xxxy, r17.zzzw + mad r14.zw, r14.zzzw, r17.zzzw, r17.xxxy + mad r11.w, r14.z, r14.z, l(-0.400000) + mul_sat r11.w, r11.w, l(1.66666663) + mad r12.x, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.x + mad r12.x, r14.w, l(2.000000), l(-1.000000) + mul r14.z, r11.w, l(0.010000) + mul r17.x, r12.x, r14.z + mad r17.x, r9.w, l(0.100000), r17.x + mul r14.z, r11.w, r14.z + mad r14.z, r14.z, r12.x, r9.w + mul r17.y, r9.w, r14.z + mov r16.z, r5.y + mad r17.zw, r16.yyyz, cb0[224].xxxy, r17.xxxy + sample_b_indexable(texture2d)(float,float,float,float) r18.xyzw, r17.zwzz, t10.xyzw, s2, cb0[108].x + mov r16.w, -r16.x + mad r16.xy, r16.wzww, cb0[224].xyxx, r17.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r16.xyxx, t10.xyzw, s2, cb0[108].x + mul r16.xyzw, r13.wwww, r16.xyzw + mad r16.xyzw, r18.xyzw, r13.xxxx, r16.xyzw + mad r13.xw, r16.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) + mad r9.w, r11.w, l(2.000000), l(-1.000000) + mad_sat r9.w, r9.w, l(0.800000), r14.w + mad r14.z, -r16.w, l(0.500000), l(1.000000) + mad r9.w, r9.w, r14.z, l(-0.700000) + mul_sat r9.w, r9.w, l(3.33333325) + mad r14.z, r9.w, l(-2.000000), l(3.000000) + mul r9.w, r9.w, r9.w + mul r9.w, r9.w, r14.z + mul r12.x, r12.x, r16.w + mad_sat r11.w, r12.x, l(0.500000), r11.w + mad r11.w, r11.w, l(0.500000), l(0.100000) + max r9.w, r9.w, r11.w + add r11.w, -r9.w, l(1.000000) + max r11.w, r11.w, l(0.000000) + mul r12.x, r11.w, r11.w + mul r12.x, r12.x, r12.x + mul r11.w, r11.w, r12.x + ge r11.w, r16.z, r11.w + and r11.w, r11.w, l(0x3f800000) + mad r9.w, r9.w, l(0.700000), l(0.200000018) + mad r9.w, r11.w, r9.w, l(0.100000) + mul r9.w, r16.z, r9.w + mul r9.w, r9.w, cb0[223].y + mul r9.w, r9.w, l(0.330000) + mul r11.w, r11.z, cb0[222].x + mul r11.w, r13.z, r11.w + mul r9.w, r9.w, r11.w + dp2 r11.w, r13.xwxx, r13.xwxx + min r11.w, r11.w, l(1.000000) + add r11.w, -r11.w, l(1.000000) + sqrt r11.w, r11.w + max r11.w, r11.w, l(0.000488281250) + mul_sat r12.x, r9.w, l(10.000000) + mad r14.z, r12.x, l(-2.000000), l(3.000000) + mul r12.x, r12.x, r12.x + mul r12.x, r12.x, r14.z + mul r12.x, r12.x, cb0[223].y + mul r16.xy, r12.xxxx, r13.xwxx + add r12.x, l(-1.500000), cb0[223].y + mul_sat r12.x, r12.x, l(0.666666687) + mad r13.x, r12.x, l(-2.000000), l(3.000000) + mul r12.x, r12.x, r12.x + mul r12.x, r12.x, r13.x + mul r13.x, r12.x, l(-0.200000) + mad r11.w, -r12.x, l(-0.200000), r11.w + mad r16.z, r9.w, r11.w, r13.x + dp3 r11.w, r16.xyzx, r16.xyzx + max r11.w, r11.w, l(1.175494351E-38) + rsq r11.w, r11.w + mul r16.xyz, r11.wwww, r16.xyzx + mov r17.x, r14.y + mov r17.y, r15.x + mov r17.z, r12.z + dp3 r17.x, r17.xyzx, r16.xyzx + mov r15.w, r12.y + dp2 r17.y, r15.ywyy, r16.yzyy + mov r12.y, r14.x + mov r12.z, r15.z + dp3 r17.z, r12.yzwy, r16.xyzx + mad r12.xyz, -r3.xyzx, r1.wwww, r17.xyzx + mad r12.xyz, r9.wwww, r12.xyzx, r2.xywx + mul r9.w, r9.w, cb0[223].y + mul r9.w, r9.w, l(0.330000) +else + mov r12.xyz, r2.xywx + mov r9.w, l(0) +endif +lt r13.xw, l(0.000488281250, 0.000000, 0.000000, 0.000488281250), cb0[227].yyyw +or r11.w, r13.w, r13.x +lt r13.x, l(0.000488281250), r13.y +and r11.w, r11.w, r13.x +if_nz r11.w + mul r14.xyz, r2.ywxy, l(1.000000, 0.000000, 0.000000, 0.000000) + mad r14.xyz, r2.xywx, l(0.000000, 0.000000, 1.000000, 0.000000), -r14.xyzx + dp2 r11.w, r14.xzxx, r14.xzxx + rsq r11.w, r11.w + mul r14.xyz, r11.wwww, r14.xyzx + mul r15.xyz, r2.ywxy, r14.xyzx + mad r15.xyz, r14.zxyz, r2.wxyw, -r15.xyzx + dp3 r11.w, r15.xyzx, r15.xyzx + rsq r11.w, r11.w + mul r15.xyz, r11.wwww, r15.xzyx + mul r13.xw, -r5.xxxz, cb0[228].xxxy + frc r14.yw, r13.xxxw + round_ni r13.xw, r13.xxxw + dp2 r11.w, r13.xwxx, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + add r13.x, r11.w, cb0[227].x + frc r13.x, r13.x + mul r13.w, cb0[228].z, cb0[228].z + mul r13.x, r13.w, r13.x + round_ni r13.x, r13.x + div r13.w, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[228].z + mad r16.xy, -r5.xzxx, cb0[228].xyxx, cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.xy, r16.xyxx, t11.zwxy, s2, cb0[108].x + mad r17.xy, -r5.xzxx, cb0[228].xyxx, -cb0[227].zzzz + sample_b_indexable(texture2d)(float,float,float,float) r16.zw, r17.xyxx, t11.xyzw, s2, cb0[108].x + mul r16.xyzw, r16.xyzw, cb0[227].wwww + mad r16.xyzw, r16.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -cb0[227].wwww + ge r11.w, l(0.500000), r11.w + and r11.w, r11.w, l(0x3f800000) + add r17.xy, -r14.ywyy, r14.wyww + mad r14.yw, r11.wwww, r17.xxxy, r14.yyyw + div r11.w, r13.x, cb0[228].z + ge r17.x, r11.w, -r11.w + frc r11.w, |r11.w| + movc r11.w, r17.x, r11.w, -r11.w + mul r11.w, r11.w, cb0[228].z + mul r17.x, r11.w, r13.w + add r17.zw, l(0.000000, 0.000000, -0.050000, -1.000000), cb0[228].wwwz + mul r11.w, r13.w, r13.x + round_ni r11.w, r11.w + add r11.w, -r11.w, r17.w + mul r17.y, r11.w, r13.w + mad r13.xw, r14.yyyw, r13.wwww, r17.xxxy + frc r13.xw, r13.xxxw + sample_b_indexable(texture2d)(float,float,float,float) r13.xw, r13.xwxx, t11.xzwy, s1, cb0[108].x + mul r13.xw, r13.xxxw, cb0[227].yyyy + mad r13.xw, r13.xxxw, l(2.000000, 0.000000, 0.000000, 2.000000), -cb0[227].yyyy + add r14.yw, r16.zzzw, r16.xxxy + add r16.xy, r13.xwxx, r14.ywyy + dp2 r11.w, r16.xyxx, r16.xyxx + min r11.w, r11.w, l(1.000000) + add r11.w, -r11.w, l(1.000000) + sqrt r11.w, r11.w + max r16.z, r11.w, l(0.000488281250) + dp3 r11.w, r16.xyzx, r16.xyzx + rsq r11.w, r11.w + mul r16.xyz, r11.wwww, r16.xyzx + mov r15.w, r2.x + dp2 r18.x, r15.xwxx, r16.yzyy + mov r19.x, r14.z + mov r19.y, r15.z + mov r19.z, r2.y + dp3 r18.y, r19.xyzx, r16.xyzx + mov r15.x, r14.x + mov r15.z, r2.w + dp3 r18.z, r15.xyzx, r16.xyzx + mul r11.z, r11.z, cb0[222].x + mul r11.z, r13.y, r11.z + max r11.w, l(0.000488281250), cb0[228].w + mov_sat r17.z, r17.z + add r13.x, -r11.w, r17.z + add r11.w, r2.z, -r11.w + div r13.x, l(1.000000, 1.000000, 1.000000, 1.000000), r13.x + mul_sat r11.w, r11.w, r13.x + mad r13.x, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r13.x + mul r11.z, r11.w, r11.z + mul r11.z, r13.z, r11.z + mad r3.xyz, -r3.xyzx, r1.wwww, r18.xyzx + mad r12.xyz, r11.zzzz, r3.xyzx, r2.xywx +endif +min r1.w, r10.y, r10.x +mul r3.x, r11.x, cb0[230].z +mad r3.y, -cb0[230].z, r11.x, l(1.000000) +mad r3.x, r10.w, r3.y, r3.x +mad r3.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r3.z, r11.y, -cb0[222].w +div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y +mul_sat r3.y, r3.y, r3.z +mad r3.z, r3.y, l(-2.000000), l(3.000000) +mul r3.y, r3.y, r3.y +mul r3.y, r3.y, r3.z +add r3.z, -r3.x, cb0[230].y +mad r3.x, r3.y, r3.z, r3.x +add r3.x, -r3.x, l(1.000000) +mul r3.y, r3.x, r10.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r3.z, -r2.z, l(1.000000) +mad_sat r10.w, r3.z, cb0[222].z, cb0[222].y +mad_sat r10.w, r9.w, cb0[224].z, r10.w +add r11.x, -r10.w, l(1.000000) +mad r10.w, r1.x, r11.x, r10.w +mul_sat r10.z, r10.z, l(3.33333325) +mad r11.x, r10.z, l(-2.000000), l(3.000000) +mul r10.z, r10.z, r10.z +mad r10.z, -r11.x, r10.z, l(1.000000) +mul r11.x, r10.w, cb0[222].x +add r11.y, -r1.x, l(1.000000) +mul r11.x, r11.y, r11.x +mul r11.x, r10.z, r11.x +mad r11.x, r11.x, l(-0.750000), l(1.000000) +mad r10.w, r10.w, l(-0.299999952), l(0.900000) +sqrt r11.y, r3.z +add r10.w, r10.w, r11.y +add_sat r10.w, r10.w, l(-0.600000) +max r10.w, r3.z, r10.w +min r10.w, r10.w, l(0.990000) +add_sat r11.y, l(2.000000), -cb0[222].x +mul r11.y, r11.y, cb0[222].x +mul r10.z, r10.z, r11.y +mad r3.x, -r10.x, r3.x, l(1.000000) +mul r3.x, r3.x, r10.z +add r10.x, -r3.z, r10.w +mad r3.x, r3.x, r10.x, r3.z +add r3.x, -r3.x, l(1.000000) +mul_sat r3.z, r9.w, l(20.000000) +mad r9.w, r3.z, l(-2.000000), l(3.000000) +mul r3.z, r3.z, r3.z +mul r3.z, r3.z, r9.w +mad r3.z, r3.z, l(-0.900000), l(1.000000) +mul r9.w, r3.z, r3.x +add r10.x, r10.y, l(-1.000000) +mad r10.x, r1.z, r10.x, l(1.000000) +add r10.y, -r1.z, l(1.000000) +movc r10.xy, r8.wwww, r10.xyxx, l(1.000000,1.000000,0,0) +min r1.z, r9.w, r10.x +mad r3.x, r3.x, r3.z, -r1.z +mad r1.z, r1.w, r3.x, r1.z +add r2.z, -r1.z, r2.z +mad r13.z, r3.y, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r10.xzw, r0.xyzz, t26.xwyz +min r1.z, r11.x, r10.y +add r2.z, -r1.z, r11.x +mad r1.z, r1.w, r2.z, r1.z +add r1.w, -r1.z, l(1.000000) +mad r1.z, r3.y, r1.w, r1.z +mul r3.xyz, r1.zzzz, r10.xzwx +mul r11.xyz, r1.xxxx, r3.xyzx +mad r10.xyz, r10.xzwx, r1.zzzz, -r11.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz +dp3 r2.z, r12.xyzx, r9.xyzx +max r11.x, r2.z, l(0.000000) +mul r3.y, r13.z, r13.z +mul r14.x, r11.x, r11.x +mul r14.z, r11.x, r14.x +mul r2.z, r3.y, r3.y +mul r3.z, r3.y, r2.z +mov r11.yzw, l(0,0.0365463011,9.063200,0.990440) +dp2 r15.x, l(3.327070, 1.000000, 0.000000, 0.000000), r11.xyxx +dp2 r15.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r11.xzxx +mov r3.x, l(1.000000) +dp2 r8.w, r15.xyxx, r3.xyxx +mov r14.yw, l(0,9.044010,0,1.000000) +dp3 r15.x, l(3.596850, -1.367720, 1.000000, 0.000000), r14.xzwx +dp3 r15.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r14.xyzx +mov r16.x, l(5.565890) +mov r16.yz, r14.xxzx +dp3 r15.z, l(1.000000, 19.788601, -20.212299, 0.000000), r16.xyzx +dp3 r9.w, r15.xyzx, r3.xyzx +div r8.w, r8.w, r9.w +dp2 r15.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r11.xwxx +mov r14.x, l(1.296780) +mov r14.y, r11.x +dp2 r15.y, l(1.000000, -0.755907, 0.000000, 0.000000), r14.xyxx +dp2 r9.w, r15.xyxx, r3.xyxx +dp3 r15.x, l(2.923380, 59.418800, 1.000000, 0.000000), r14.yzwy +mov r14.xw, l(20.322500,0,0,121.563004) +dp3 r15.y, l(1.000000, -27.030199, 222.591995, 0.000000), r14.xyzx +dp3 r15.z, l(626.130005, 316.627014, 1.000000, 0.000000), r14.yzwy +dp3 r3.x, r15.xyzx, r3.xyzx +div r3.x, r9.w, r3.x +mad r11.yzw, r1.xxzw, r8.wwww, r3.xxxx +add r3.x, r3.x, r8.w +ld_indexable(texture2d)(float,float,float,float) r3.y, r0.xyzz, t6.zxyw +lt r0.z, l(0.001000), r3.y +if_nz r0.z + dp3 r0.z, -r9.xyzx, r12.xyzx + add r0.z, r0.z, r0.z + mad r14.xyz, r12.xyzx, -r0.zzzz, -r9.xyzx + dp3 r0.z, -cb2[0].xyzx, r14.xyzx + mad r15.xyz, cb2[0].xyzx, r0.zzzz, r14.xyzx + lt r0.z, r0.z, cb2[4].z + dp3 r8.w, r15.xyzx, r15.xyzx + max r8.w, r8.w, l(0.0000610351562) + rsq r8.w, r8.w + mul r15.xyz, r8.wwww, r15.xyzx + mul r15.xyz, r15.xyzx, cb2[4].yyyy + mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx + dp3 r8.w, r15.xyzx, r15.xyzx + rsq r8.w, r8.w + mul r15.xyz, r8.wwww, r15.xyzx + movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx + mad r8.xyz, r8.xyzx, r7.wwww, r14.xyzx + dp3 r0.z, r8.xyzx, r8.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r8.xyz, r0.zzzz, r8.xyzx + dp3_sat r13.x, r14.xyzx, r12.xyzx + dp3_sat r0.z, r12.xyzx, r8.xyzx + min r13.y, r11.x, l(1.000000) + mad r7.w, r0.z, r2.z, -r0.z + mad r0.z, r7.w, r0.z, l(1.000000) + dp3_sat r7.w, r9.xyzx, r8.xyzx + add r7.w, -r7.w, l(1.000000) + mul r8.x, r7.w, r7.w + mul r8.x, r8.x, r8.x + mul r8.y, r7.w, r8.x + add r8.z, -r13.z, l(1.000000) + mad r8.w, -r8.z, l(0.383026), l(-0.0761947036) + mad r8.w, r8.z, r8.w, l(1.049970) + mad r8.z, r8.z, r8.w, l(0.409255) + min r8.z, r8.z, l(0.999000) + add r8.w, -r8.z, l(1.000000) + add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx + mad r7.w, -r8.x, r7.w, l(1.000000) + mad r16.xyz, r1.xzwx, r7.wwww, r8.yyyy + mul r0.z, r0.z, r0.z + div r0.z, r2.z, r0.z + mad r8.xy, -r13.yxyy, r2.zzzz, r13.yxyy + mad r8.xy, r8.xyxx, r13.yxyy, r2.zzzz + sqrt r8.xy, r8.xyxx + mul r8.xy, r8.xyxx, r13.xyxx + add r2.z, r8.y, r8.x + add r2.z, r2.z, l(0.000100) + div r2.z, l(0.500000), r2.z + mul r0.z, r0.z, r2.z + mul r16.xyz, r0.zzzz, r16.xyzx + min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r17.xyzw, r13.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r17.xyxx, t12.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r17.zwzz, t12.yzxw, s1, l(0.000000) + mul r0.z, r0.z, r2.z + mul r0.z, r8.z, r0.z + div r0.z, r0.z, r8.w + mul r8.xyz, r15.xyzx, r15.xyzx + mul r8.xyz, r0.zzzz, r8.xyzx + mad r15.xyz, -r15.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r8.xyz, r8.xyzx, r15.xyzx + add r8.xyz, r8.xyzx, r16.xyzx + mul r8.xyz, r8.xyzx, cb2[4].xxxx + max r8.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r8.xyz, r8.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + dp3_sat r0.z, r14.xyzx, r2.xywx + mul r14.xyz, r0.zzzz, r10.xyzx + mad r8.xyz, r8.xyzx, r13.xxxx, r14.xyzx + mul r8.xyz, r8.xyzx, cb2[1].xyzx + mov r3.z, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r13.xyw, r3.yzyy, t7.xywz, s1, cb0[108].x + add r0.z, -r3.y, l(1.000000) + mad r13.xyw, r8.xyxz, r13.xyxw, -r8.xyxz + mad r8.xyz, r0.zzzz, r13.xywx, r8.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t13.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r8.xyz, r0.zzzz, r8.xyzx +else + mov r8.xyz, l(0,0,0,0) +endif +ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r3.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + dp3 r2.z, r2.xywx, r9.xyzx + max r2.z, r2.z, l(0.000000) + add r2.z, r0.z, r2.z + mad r3.y, r13.z, l(-16.000000), l(-1.000000) + exp r3.y, r3.y + log r2.z, |r2.z| + mul r2.z, r2.z, r3.y + exp r2.z, r2.z + add r2.z, r0.z, r2.z + add r2.z, r2.z, l(-1.000000) + mov_sat r13.xyw, r2.zzzz + mad r14.xyz, r10.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r10.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r10.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r13.xyw, r1.yyyy + mov r14.xyz, r1.yyyy +endif +mad r15.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[212].x +mad r16.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx +dp2 r0.z, r16.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx +mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r16.xyz, r15.xzyx, -r16.xyzx +max r0.z, |r16.y|, |r16.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.y, |r16.z|, l(-208.000000) +mul_sat r1.y, r1.y, l(0.031250) +max r0.z, r0.z, r1.y +ne r1.y, l(0.000000), cb0[210].w +lt r2.z, r0.z, l(1.000000) +and r1.y, r1.y, r2.z +if_nz r1.y + mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r16.xyz, r15.xzyx, -r16.xyzx + max r1.y, |r16.y|, |r16.x| + add r1.y, r1.y, l(-29.000000) + mul_sat r1.y, r1.y, l(0.500000) + add r2.z, |r16.z|, l(-13.000000) + mul_sat r2.z, r2.z, l(0.500000) + max r1.y, r1.y, r2.z + lt r2.z, r1.y, l(1.000000) + if_nz r2.z + mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r16.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) + add r2.z, -r1.y, l(1.000000) + mul r3.y, l(0.500000), cb0[211].y + mad r7.w, -cb0[211].y, l(0.500000), l(1.000000) + max r3.y, r3.y, r16.y + min r3.y, r7.w, r3.y + mul r16.w, r3.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) + mad r3.y, r18.w, r2.z, r0.z + add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mul r19.xyzw, r2.zzzz, r19.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r17.xxxx, r16.xyzx + mov r16.w, r17.x + mul r16.xyzw, r2.zzzz, r16.xyzw + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r18.xyzx + mul r17.xyzw, r2.zzzz, r17.xyzw + else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r3.y, r0.z + endif + mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r18.xyz, r15.xzyx, -r18.xyzx + max r2.z, |r18.y|, |r18.x| + add r2.z, r2.z, l(-116.000000) + mul_sat r2.z, r2.z, l(0.125000) + add r7.w, |r18.z|, l(-52.000000) + mul_sat r7.w, r7.w, l(0.125000) + max r2.z, r2.z, r7.w + lt r7.w, r2.z, l(1.000000) + if_nz r7.w + mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r18.xyzx, cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t19.yzwx, s2, l(0.000000) + add r7.w, -r2.z, l(1.000000) + mul r1.y, r1.y, r7.w + mul r7.w, l(0.500000), cb0[211].y + mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) + max r7.w, r7.w, r18.y + min r7.w, r8.w, r7.w + mul r18.w, r7.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t20.xyzw, s1, l(0.000000) + mad r3.y, r21.w, r1.y, r3.y + add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t20.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r20.yyyy, r22.xyzx + mov r22.w, r20.y + mad r19.xyzw, r22.xyzw, r1.yyyy, r19.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t20.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.xxxx, r18.xyzx + mov r18.w, r20.x + mad r16.xyzw, r18.xyzw, r1.yyyy, r16.xyzw + mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r18.xyzx + mad r17.xyzw, r20.xyzw, r1.yyyy, r17.xyzw + endif + lt r1.y, l(0.000000), r2.z + if_nz r1.y + mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r15.xyzx, cb0[211].xyzx + mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r18.xyzx + mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r20.xyzx, r15.xyzx + min r15.xyz, r18.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t21.yzwx, s2, l(0.000000) + add r1.y, -r0.z, l(1.000000) + mul r1.y, r1.y, r2.z + max r2.z, r20.y, r15.y + min r2.z, r18.y, r2.z + mul r15.w, r2.z, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t22.xyzw, s1, l(0.000000) + add r20.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t22.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r21.yyyy, r20.xyzx + mov r20.w, r21.y + mad r19.xyzw, r20.xyzw, r1.yyyy, r19.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t22.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r21.xxxx, r15.xyzx + mov r15.w, r21.x + mad r16.xyzw, r15.xyzw, r1.yyyy, r16.xyzw + mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r15.xyzx + mad r17.xyzw, r21.xyzw, r1.yyyy, r17.xyzw + mad r3.y, r18.w, r1.y, r3.y + endif + mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r1.y + add r0.z, r0.z, r1.y + mul r15.y, r0.z, l(0.500000) +else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r15.yxyy, cb0[213].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.zw, r15.yyyx, cb0[213].wwwy +mad r18.x, r15.w, l(0.375000), r15.z +add r17.xyzw, r17.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[214].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.zw, r15.yyyx, cb0[214].wwwy +mad r18.x, r15.w, l(0.375000), r15.z +add r16.xyzw, r16.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[215].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.xy, r15.yxyy, cb0[215].wyww +mad r18.x, r15.y, l(0.375000), r15.x +add r15.xyzw, r18.wyzx, r19.xyzw +ge r18.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r18.y, r18.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.zwzz, t16.xyzw, s1, l(0.000000) + lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| + or r4.zw, r19.zzzw, r19.xxxy + or r0.z, r4.w, r4.z + if_nz r0.z + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mov r4.z, l(1.000000) + mov r4.w, r0.z + mov r1.y, l(0) + loop + ge r2.z, l(4.600000), r4.w + breakc_nz r2.z + iadd r2.z, r1.y, l(1) + mul r19.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r4.zw, r19.xxxy + mov r1.y, r2.z + continue + endloop + mul r18.xyzw, r4.zzzz, r18.xyzw + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb4[3].x, cb4[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r19.x, r0.z, l(0.00390625000) + mov r19.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r19.xyxx, t15.zwxy, s1, l(0.000000) + mad r4.zw, r4.zzzw, cb4[2].xxxy, cb4[2].zzzw + mul r19.x, r4.z, l(3.54490781) + mul r19.yzw, r4.wwww, r18.yyzw + mul r0.z, r18.x, l(0.406976730) + exp r0.z, r0.z + mul r18.xyzw, r0.zzzz, r19.xyzw + mov r19.xyzw, r18.xyzw + mov r0.z, l(0) + loop + uge r2.z, r0.z, r1.y + breakc_nz r2.z + mul r20.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r2.z, r20.xyzw, r19.xyzw + dp2 r3.y, r20.yxyy, r19.xyxx + dp2 r4.z, r20.zxzz, r19.xzxx + dp2 r4.w, r20.wxww, r19.xwxx + iadd r7.w, r0.z, l(1) + mov r19.x, r2.z + mov r19.y, r3.y + mov r19.zw, r4.zzzw + mov r0.z, r7.w + continue + endloop + mul r18.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r19.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r18.xyzw, r19.xyzw + dp2 r1.y, r18.yxyy, r19.xyxx + dp2 r2.z, r18.zxzz, r19.xzxx + dp2 r3.y, r18.wxww, r19.xwxx + mul r19.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r4.z, r18.xyzw, r19.xyzw + dp2 r4.w, r18.yxyy, r19.xyxx + dp2 r7.w, r18.zxzz, r19.xzxx + dp2 r8.w, r18.wxww, r19.xwxx + mul r19.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r9.w, r18.xyzw, r19.xyzw + dp2 r10.w, r18.yxyy, r19.xyxx + dp2 r11.x, r18.zxzz, r19.xzxx + dp2 r14.w, r18.wxww, r19.xwxx + mul r17.w, r0.z, l(0.886226952) + mul r17.x, r3.y, l(-1.02332675) + mul r17.y, r1.y, l(-1.02332675) + mul r17.z, r2.z, l(1.02332675) + mul r16.x, r8.w, l(-1.02332675) + mul r16.yw, r4.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) + mul r16.z, r7.w, l(1.02332675) + mul r15.w, r9.w, l(0.886226952) + mul r15.x, r14.w, l(-1.02332675) + mul r15.y, r10.w, l(-1.02332675) + mul r15.z, r11.x, l(1.02332675) + endif +endif +dp3 r0.z, r17.xyzx, r2.xywx +add r0.z, r17.w, r0.z +max r17.x, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r2.xywx +add r0.z, r16.w, r0.z +max r17.y, r0.z, l(0.000000) +dp3 r0.z, r15.xyzx, r2.xywx +add r0.z, r15.w, r0.z +max r17.z, r0.z, l(0.000000) +dp3 r0.z, -r9.xyzx, r12.xyzx +add r0.z, r0.z, r0.z +mad r2.xyz, r12.xyzx, -r0.zzzz, -r9.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r1.y, r13.z, l(0.001000) +log r1.y, r1.y +mad r1.y, -r1.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.y +mul r4.zw, r4.xxxy, cb1[0].wwww +round_ni r4.zw, r4.zzzw +add r1.y, |r3.w|, -cb1[2].y +round_ni r1.y, r1.y +add r2.w, l(-1.000000), cb1[1].x +max r3.y, r1.y, l(0.000000) +min r2.w, r2.w, r3.y +ge r1.y, r2.w, r1.y +mad r3.y, r4.w, cb1[0].x, r4.z +ftoi r3.y, r3.y +iadd r3.y, r3.y, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.y, r3.y, l(0), t0.xxxx +ftoi r2.w, r2.w +iadd r2.w, r2.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.w, r2.w, l(0), t0.xxxx +and r2.w, r2.w, r3.y +and r1.y, r1.y, r2.w +mul r15.xyz, r17.xyzx, cb0[111].xxxx +dp3 r2.w, r15.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r5.w, l(1.000000) +mov r12.w, l(1.000000) +mov r15.xyz, l(0,0,0,0) +mov r3.y, l(1.000000) +mov r4.z, r1.y +mov r4.w, l(0) +loop + lt r7.w, l(0.010000), r3.y + ine r8.w, r4.z, l(0) + and r8.w, r7.w, r8.w + if_nz r8.w + firstbit_lo r8.w, r4.z + ishl r9.w, l(1), r8.w + xor r4.z, r4.z, r9.w + ishl r8.w, r8.w, l(3) + dp4 r16.x, cb1[r8.w + 6].xyzw, r5.xyzw + dp4 r16.y, cb1[r8.w + 7].xyzw, r5.xyzw + dp4 r16.z, cb1[r8.w + 8].xyzw, r5.xyzw + ge r18.xyz, cb1[r8.w + 5].xyzx, |r16.xyzx| + and r9.w, r18.y, r18.x + and r9.w, r18.z, r9.w + if_nz r9.w + mul r9.w, l(0.100000), cb1[r8.w + 5].x + mul r18.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r16.xyzx|, cb1[r8.w + 5].xyzx + mul r19.xyz, r19.xyzx, cb1[r8.w + 9].xyzx + eq r10.w, l(1.000000), cb1[r8.w + 10].x + if_nz r10.w + dp3 r20.x, cb1[r8.w + 6].xyzx, r2.xyzx + dp3 r20.y, cb1[r8.w + 7].xyzx, r2.xyzx + dp3 r20.z, cb1[r8.w + 8].xyzx, r2.xyzx + add r21.xyz, -r16.xyzx, cb1[r8.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r16.xyzx, -cb1[r8.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r10.w, r21.y, r21.x + min r10.w, r21.z, r10.w + mad r16.xyz, r20.xyzx, r10.wwww, r16.xyzx + else + mov r16.xyz, r2.xyzx + endif + dp3 r10.w, r16.xyzx, r16.xyzx + rsq r10.w, r10.w + mul r16.xyz, r10.wwww, r16.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r10.w, r16.xyzx, r20.xyzx + div r16.xyz, r16.xyzx, r10.wwww + lt r10.w, r16.z, l(0.000000) + add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r16.zw, r16.zzzw, r20.xxxy + movc r16.xy, r10.wwww, r16.zwzz, r16.xyxx + dp4 r10.w, cb1[r8.w + 4].xyzw, r12.xyzw + max r10.w, r10.w, l(0.000000) + max r10.w, r10.w, l(0.000100) + min r11.x, r19.z, r19.y + min r11.x, r11.x, r19.x + add r13.z, r18.y, r18.x + mad r13.z, r18.z, r18.z, r13.z + mad r9.w, r9.w, r9.w, -r13.z + mul r9.w, r9.w, cb1[r8.w + 9].x + mul r9.w, r9.w, cb1[r8.w + 9].x + add r13.z, l(1.000000), -cb1[r8.w + 10].y + mul r9.w, r9.w, r13.z + mul r9.w, r9.w, l(100.000000) + mad_sat r9.w, r11.x, cb1[r8.w + 10].y, r9.w + mul r11.x, r9.w, cb1[r8.w + 10].w + mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww + mov r16.z, cb1[r8.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z + mul r16.xyz, r16.xyzx, cb1[r8.w + 9].wwww + div r13.z, r2.w, r10.w + min r13.z, |r13.z|, l(1.000000) + mad r13.z, r13.z, l(2.000000), r2.w + add r10.w, r10.w, l(2.000000) + div r10.w, r13.z, r10.w + add r10.w, r10.w, l(-1.000000) + mad r10.w, r10.w, cb0[112].w, l(1.000000) + mul r16.xyz, r10.wwww, r16.xyzx + mul r16.xyz, r11.xxxx, r16.xyzx + mad r15.xyz, r16.xyzx, r3.yyyy, r15.xyzx + mad r8.w, -r9.w, cb1[r8.w + 10].w, l(1.000000) + mul r3.y, r3.y, r8.w + endif + mov r4.w, l(-1) + continue + else + mov r4.w, r7.w + break + endif + mov r4.w, r7.w +endloop +if_nz r4.w + dp3 r1.y, r2.xyzx, r2.xyzx + rsq r1.y, r1.y + mul r2.xyz, r1.yyyy, r2.xyzx + lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r2.xyzx + lt r18.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r16.xyz, -r16.xyzx, r18.xyzx + itof r16.xyz, r16.xyzx + dp3 r1.y, r2.xyzx, r16.xyzx + div r2.xyz, r2.xyzx, r1.yyyy + lt r1.y, r2.z, l(0.000000) + add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r4.zw, r4.zzzw, r16.xxxy + movc r2.xy, r1.yyyy, r4.zwzz, r2.xyxx + mov r12.w, l(1.000000) + dp4 r1.y, cb1[3].xyzw, r12.xyzw + max r1.y, r1.y, l(0.000000) + max r1.y, r1.y, l(0.000100) + mad r2.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r2.xy, r2.xyxx, cb1[1].wwww, cb1[2].wwww + mov r2.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r2.xyz, r2.xyzx, t5.xyzw, s3, r0.z + div r0.z, r2.w, r1.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r2.w + add r1.y, r1.y, l(2.000000) + div r0.z, r0.z, r1.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r2.xyz, r0.zzzz, r2.xyzx + mad r15.xyz, r2.xyzx, r3.yyyy, r15.xyzx +endif +mul r2.xyz, r15.xyzx, cb0[112].zzzz +mul r2.xyz, r2.xyzx, cb0[111].yyyy +if_nz r3.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r12.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.y, -r0.z, l(1.000000) + mul r15.xyz, r1.yyyy, r2.xyzx + mad r2.xyz, r12.xyzx, r0.zzzz, r15.xyzx +endif +mul r10.xyz, r10.xyzx, r17.xyzx +mul r10.xyz, r10.xyzx, cb0[111].xxxx +add r0.z, -r3.x, l(1.000000) +div r0.z, r0.z, r3.x +mul r1.xyz, r0.zzzz, r1.xzwx +mad r1.xyz, r1.xyzx, r11.yzwy, r11.yzwy +mul r1.xyz, r1.xyzx, r2.xyzx +mul r1.xyz, r13.xywx, r1.xyzx +mad r1.xyz, r10.xyzx, r14.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r8.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r6.x, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r5.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r9.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[163].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r9.xyzx, -r7.xyzx + add r2.w, r5.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.x + mul r4.z, r0.x, r3.z + mad r4.w, r4.z, r2.w, cb0[44].y + mad r2.w, -r4.z, r2.w, r2.w + mul r4.z, r2.w, cb0[159].z + max r4.z, r4.z, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.w, r4.w, -cb0[159].x + mul r5.w, r5.w, cb0[159].z + max r5.w, r5.w, l(-127.000000) + exp r5.w, -r5.w + mul r5.w, r5.w, cb0[159].y + lt r7.x, l(5.960464478E-08), |r4.z| + exp r7.y, -r4.z + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r4.z + mad r4.z, -r4.z, l(0.240226507), l(0.693147182) + movc r4.z, r7.x, r7.y, r4.z + add r4.w, r4.w, -cb0[162].z + mul r4.w, r4.w, cb0[162].x + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[162].y + lt r7.x, l(5.960464478E-08), |r2.w| + exp r7.y, -r2.w + add r7.y, -r7.y, l(1.000000) + div r7.y, r7.y, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r7.x, r7.y, r2.w + mul r2.w, r2.w, r4.w + mad r2.w, r5.w, r4.z, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r0.x, r6.x, r0.x + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r4.zw, r6.xxxx, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r4.z + add r0.x, r4.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.xxxy + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r3.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r3.xyzx, t14.xyzw, s1, l(0.000000) + add r0.y, |r3.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r5.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r6.x, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r6.xxxx, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xyzx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx +mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r6.yzwy, r6.yzwy +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r5.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t27.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xBD99F0C4.cso b/src/games/endfield/deferred-lighting/0xBD99F0C4.cso new file mode 100644 index 0000000000000000000000000000000000000000..173ffb4f866d8ee41284ed2c3377cce0b022f619 GIT binary patch literal 30100 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0.asm new file mode 100644 index 0000000000..ded9140707 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0.asm @@ -0,0 +1,1010 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sun Feb 1 03:51:02 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[5], immediateIndexed +dcl_constantbuffer CB4[4], immediateIndexed +dcl_constantbuffer CB13[13], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture3d (float,float,float,float) t25 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 26 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t22.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t23.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t24.xyzw +mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) +ftou r1.xz, r1.xxzx +ubfe r4.x, l(7), l(3), r1.x +utof r4.x, r4.x +round_ne r1.y, r1.y +ftou r1.y, r1.y +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r5.y, -r4.y, l(1.000000) +lt r4.y, r5.y, l(0.000000) +ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) +movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) +mul r4.zw, r4.zzzw, r6.xxxy +movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx +dp3 r2.x, r5.xyzx, r5.xyzx +rsq r2.x, r2.x +mul r6.xyz, r2.xxxx, r5.xyzx +and r2.y, r1.y, l(7) +utof r2.y, r2.y +mad r2.y, r2.y, l(0.107142866), l(0.500000) +utof r4.yz, r0.xxyx +mul r5.xz, v0.xxyx, cb0[82].zzwz +mad r7.xy, r5.xzxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r7.zw, r4.yyyz, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r7.zw, r7.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r4.w, r7.zwzz, t1.yzwx, s0, l(0.000000) +mul r8.xyzw, -r7.yyyy, cb0[25].xyzw +mad r7.xyzw, cb0[24].xyzw, r7.xxxx, r8.xyzw +mad r7.xyzw, cb0[26].xyzw, r4.wwww, r7.xyzw +add r7.xyzw, r7.xyzw, cb0[27].xyzw +div r7.xyz, r7.xyzx, r7.wwww +mul r4.w, r7.y, cb0[1].z +mad r4.w, cb0[0].z, r7.x, r4.w +mad r4.w, cb0[2].z, r7.z, r4.w +add r4.w, r4.w, cb0[3].z +eq r5.w, l(0.000000), cb0[86].w +add r8.xyz, -r7.xyzx, cb0[44].xyzx +mov r9.x, cb0[0].z +mov r9.y, cb0[1].z +mov r9.z, cb0[2].z +movc r10.xyz, r5.wwww, r8.xyzx, r9.xyzx +dp3 r5.w, r10.xyzx, r10.xyzx +max r8.w, r5.w, l(9.999999939E-09) +rsq r8.w, r8.w +mul r11.xyz, r8.wwww, r10.xyzx +mul r5.w, r5.w, r8.w +lt r9.w, l(0.000488281250), cb0[234].x +if_nz r9.w + sample_b_indexable(texture2d)(float,float,float,float) r9.w, v1.xyxx, t21.yzwx, s1, cb0[108].x +else + mov r9.w, l(1.000000) +endif +lt r12.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[226].xyxx +if_nz r12.x + add r10.w, |r6.y|, |r6.x| + add r10.w, |r6.z|, r10.w + div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r10.w + mul r12.xzw, |r6.xxyz|, r10.wwww + mul r13.xyzw, r12.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) + add r13.xyz, r13.zwzz, r13.xxyx + mad r12.xzw, r12.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r13.xxyz + mul r13.xyz, r7.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r10.w, r13.xyzx, t9.yzwx, s2, l(0.000000) + mad r10.w, r10.w, l(2.000000), l(-1.000000) + mul r12.xzw, r10.wwww, r12.xxzw + mov r10.w, |r6.y| + add r10.w, r10.w, l(-0.700000) + mul_sat r10.w, r10.w, l(4.000000) + mad r11.w, r10.w, l(-2.000000), l(3.000000) + mul r10.w, r10.w, r10.w + mul r10.w, r10.w, r11.w + add r11.w, -cb0[229].z, cb0[229].y + mad r10.w, r10.w, r11.w, cb0[229].z + mul r12.xzw, r10.wwww, r12.xxzw +else + mov r12.xzw, l(0,0,0,0) +endif +if_nz r12.y + mul r13.xyz, r6.xyzx, cb0[233].zzzz + mul r14.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r13.xyz, r13.xyzx, cb0[225].xxxx, r14.xyzx + max r10.w, -r6.y, l(0.000000) + min r10.w, r10.w, l(0.900000) + add r10.w, -r10.w, l(1.000000) + mad r2.x, -r5.y, r2.x, l(-0.200000) + mul_sat r2.x, r2.x, l(-10.000000) + mad r5.y, r2.x, l(-2.000000), l(3.000000) + mul r2.x, r2.x, r2.x + mul r2.x, r2.x, r5.y + max r2.x, r2.x, l(0.100000) + min r2.x, r2.x, l(1.000000) + mul r2.x, r2.x, r10.w + mad r13.xyz, r13.xyzx, r2.xxxx, r7.xyzx + add r12.xyz, r12.xzwx, r13.xyzx + mul r13.xyz, r12.yyyy, cb3[1].xyzx + mad r12.xyw, cb3[0].xyxz, r12.xxxx, r13.xyxz + mad r12.xyz, cb3[2].xyzx, r12.zzzz, r12.xywx + add r12.xyz, r12.xyzx, cb3[3].xyzx + mad r13.x, r12.x, l(0.500000), cb3[4].x + mad r2.x, r12.y, l(0.500000), l(0.500000) + add r13.z, -r2.x, cb3[4].y + add r12.xy, r13.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r2.x, r12.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r12.xyxx, t8.xxxx, s4, r2.x +else + mov r2.x, l(1.000000) +endif +mov_sat r5.y, r6.y +add r10.w, l(1.000000), -cb0[230].w +mad r5.y, r5.y, r10.w, cb0[230].w +add r12.xy, r7.xzxx, -cb0[44].xzxx +max r10.w, |r12.y|, |r12.x| +mul r11.w, r5.y, cb0[230].z +mul r12.x, r2.x, r5.y +mul r12.y, l(0.0500000119), cb0[222].w +mad r12.z, -cb0[222].w, l(0.700000), r10.w +div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), r12.y +mul_sat r12.y, r12.y, r12.z +mad r12.z, r12.y, l(-2.000000), l(3.000000) +mul r12.y, r12.y, r12.y +mul r12.y, r12.y, r12.z +mad r2.x, -r5.y, r2.x, l(1.000000) +mad r2.x, r12.y, r2.x, r12.x +mad r5.y, -cb0[230].z, r5.y, l(1.000000) +mad r2.x, r2.x, r5.y, r11.w +mad r5.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r10.w, r10.w, -cb0[222].w +div r5.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y +mul_sat r5.y, r5.y, r10.w +mad r10.w, r5.y, l(-2.000000), l(3.000000) +mul r5.y, r5.y, r5.y +mul r5.y, r5.y, r10.w +add r10.w, -r2.x, cb0[230].y +mad r2.x, r5.y, r10.w, r2.x +add r2.x, -r2.x, l(1.000000) +mad r2.x, -r9.w, r2.x, l(1.000000) +mad_sat r5.y, r2.z, l(0.300000), l(0.250000) +mul r5.y, r5.y, cb0[222].x +mul r5.y, r2.x, r5.y +mad r5.y, r5.y, l(-0.750000), l(1.000000) +mul r3.xyz, r3.xyzx, r5.yyyy +min r5.y, r2.z, l(0.300000) +mul r2.x, r2.x, cb0[222].x +mul r2.xw, r2.xxxw, l(0.500000, 0.000000, 0.000000, 3.000000) +add r5.y, -r2.z, r5.y +mad r12.z, r2.x, r5.y, r2.z +mul r2.x, r2.y, l(0.080000) +dp3 r2.z, r6.xyzx, r11.xyzx +max r5.y, r2.z, l(0.000000) +mad r13.xyzw, r12.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r9.w, r13.x, r13.x +mul r10.w, r5.y, l(-9.280000) +exp r10.w, r10.w +min r9.w, r9.w, r10.w +mad r9.w, r9.w, r13.x, r13.y +mad r13.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz +ld_indexable(texture2d)(float,float,float,float) r13.z, r0.xyzz, t6.zwxy +lt r0.z, l(0.001000), r13.z +if_nz r0.z + bfi r0.z, l(3), l(2), r1.x, l(0) + mul r1.x, r1.w, l(3.000000) + ftou r1.x, r1.x + bfi r0.z, l(2), l(0), r1.x, r0.z + utof r0.z, r0.z + mul r1.x, r0.z, l(0.0322580636) + ubfe r1.y, l(7), l(3), r1.y + utof r1.y, r1.y + mul r1.y, r1.y, l(0.00787401572) + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xzxx, t11.yzwx, s1, l(0.000000) + dp3 r9.w, -r11.xyzx, r6.xyzx + add r9.w, r9.w, r9.w + mad r14.xyz, r6.xyzx, -r9.wwww, -r11.xyzx + dp3 r9.w, -cb2[0].xyzx, r14.xyzx + mad r15.xyz, cb2[0].xyzx, r9.wwww, r14.xyzx + lt r9.w, r9.w, cb2[4].z + dp3 r10.w, r15.xyzx, r15.xyzx + max r10.w, r10.w, l(0.0000610351562) + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + mul r15.xyz, r15.xyzx, cb2[4].yyyy + mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx + dp3 r10.w, r15.xyzx, r15.xyzx + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + movc r14.xyz, r9.wwww, r15.xyzx, r14.xyzx + mad r10.xyz, r10.xyzx, r8.wwww, r14.xyzx + dp3 r8.w, r10.xyzx, r10.xyzx + max r8.w, r8.w, l(0.0000610351562) + rsq r8.w, r8.w + mul r10.xyz, r8.wwww, r10.xyzx + dp3 r8.w, r6.xyzx, r14.xyzx + mov_sat r12.x, r8.w + dp3_sat r9.w, r6.xyzx, r10.xyzx + dp3 r10.w, r11.xyzx, r14.xyzx + min r12.y, r5.y, l(1.000000) + mul r11.w, r12.z, r12.z + mul r11.w, r11.w, r11.w + mad r12.w, r9.w, r11.w, -r9.w + mad r9.w, r12.w, r9.w, l(1.000000) + dp3_sat r10.x, r11.xyzx, r10.xyzx + add r10.x, -r10.x, l(1.000000) + mul r10.y, r10.x, r10.x + mul r10.y, r10.y, r10.y + mul r10.z, r10.x, r10.y + add r12.w, -r12.z, l(1.000000) + mad r14.x, -r12.w, l(0.383026), l(-0.0761947036) + mad r14.x, r12.w, r14.x, l(1.049970) + mad r12.w, r12.w, r14.x, l(0.409255) + min r12.w, r12.w, l(0.999000) + add r14.x, -r12.w, l(1.000000) + mad r2.y, -r2.y, l(0.080000), l(1.000000) + mad r2.y, r2.y, l(0.0476190485), r2.x + mov_sat r14.y, -r10.w + mul r14.y, r14.y, r14.y + mad r14.y, r14.y, l(-0.640000), l(1.000000) + mul r14.y, r14.y, r14.y + mad r10.x, -r10.y, r10.x, l(1.000000) + mad r10.x, r2.x, r10.x, r10.z + mul r9.w, r9.w, r9.w + div r9.w, r11.w, r9.w + mad r10.yz, -r12.yyxy, r11.wwww, r12.yyxy + mad r10.yz, r10.yyzy, r12.yyxy, r11.wwww + sqrt r10.yz, r10.yyzy + mul r10.yz, r10.yyzy, r12.xxyx + add r10.y, r10.z, r10.y + add r10.y, r10.y, l(0.000100) + div r10.y, l(0.500000), r10.y + mul r9.w, r9.w, r10.y + mul r9.w, r9.w, r10.x + min r9.w, r9.w, l(2048.000000) + mad r15.xyzw, r12.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r10.x, r15.xyxx, t10.xyzw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r10.y, r15.zwzz, t10.yxzw, s1, l(0.000000) + mul r10.x, r10.y, r10.x + mul r10.x, r12.w, r10.x + div r10.x, r10.x, r14.x + mul r10.y, r2.y, r2.y + mul r10.x, r10.x, r10.y + mad r2.y, -r2.y, r14.x, l(1.000000) + div r2.y, r10.x, r2.y + add r2.y, r2.y, r9.w + add_sat r2.z, r2.z, l(0.200000) + mov_sat r9.w, r10.w + add r9.w, r9.w, l(0.500000) + min r9.w, r9.w, l(1.000000) + mul r10.x, r2.z, r9.w + add_sat r10.y, r10.w, l(1.000000) + mad r2.z, -r2.z, r9.w, l(1.000000) + mad r2.z, r10.y, r2.z, r10.x + mul r2.y, r2.z, r2.y + mul r2.y, r1.y, r2.y + mul r10.xyz, r1.yyyy, r3.xyzx + ubfe r2.z, l(7), l(3), r1.z + utof r2.z, r2.z + mul r2.z, r2.z, l(0.00787401572) + mul r2.y, r2.y, cb2[4].x + max r2.y, r2.y, l(0.000000) + min r2.y, r2.y, l(1000.000000) + mul r2.y, r12.x, r2.y + mad r10.xyz, r10.xyzx, r2.zzzz, r2.yyyy + max r2.y, r3.y, r3.x + max r2.y, r3.z, r2.y + max r2.y, r2.y, l(0.010000) + div r14.xzw, r3.xxyz, r2.yyyy + mul r2.y, r4.x, l(0.00393700786) + mul r14.xzw, r2.yyyy, r14.xxzw + add_sat r2.y, -r8.w, l(0.500000) + ne r2.z, r14.y, l(0.360000) + div r9.w, l(0.360000), r14.y + movc r2.z, r2.z, r9.w, l(1.000000) + mul r2.y, r2.z, r2.y + mad_sat r0.z, r0.z, l(0.0322580636), r8.w + add r0.z, -r12.x, r0.z + mul r12.xyw, r0.zzzz, r3.xyxz + mad r12.xyw, r14.xzxw, r2.yyyy, r12.xyxw + mad r10.xyz, r12.xywx, r1.yyyy, r10.xyzx + mul r10.xyz, r10.xyzx, cb2[1].xyzx + mov r13.w, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r12.xyw, r13.zwzz, t7.xywz, s1, cb0[108].x + add r0.z, -r13.z, l(1.000000) + mad r12.xyw, r10.xyxz, r12.xyxw, -r10.xyxz + mad r10.xyz, r0.zzzz, r12.xywx, r10.xyzx + max r0.z, r1.y, r1.w + add r0.z, -r1.w, r0.z + mad r0.z, r1.x, r0.z, r1.w + mul r1.xyw, r0.zzzz, r10.xyxz +else + mov r1.xyw, l(0,0,0,0) +endif +ne r2.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r2.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + mad r0.z, r0.z, l(0.750000), l(0.250000) + min r0.z, r3.w, r0.z + add r2.y, r0.z, r5.y + mad r8.w, r12.z, l(-16.000000), l(-1.000000) + exp r8.w, r8.w + log r2.y, |r2.y| + mul r2.y, r2.y, r8.w + exp r2.y, r2.y + add r2.y, r0.z, r2.y + add r2.y, r2.y, l(-1.000000) + mov_sat r10.xyz, r2.yyyy + mad r12.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) + mul r12.xyw, r0.zzzz, r12.xyxw + mad r12.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r12.xyxw + add r12.xyw, r12.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) + mul r12.xyw, r0.zzzz, r12.xyxw + mad r12.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r12.xyxw + add r12.xyw, r12.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) + mul r12.xyw, r0.zzzz, r12.xyxw + max r12.xyw, r0.zzzz, r12.xyxw +else + mov r10.xyz, r3.wwww + mov r12.xyw, r3.wwww +endif +mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r14.xyz, r7.xzyx, -r14.xyzx +max r0.z, |r14.y|, |r14.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r2.y, |r14.z|, l(-208.000000) +mul_sat r2.y, r2.y, l(0.031250) +max r0.z, r0.z, r2.y +ne r2.y, l(0.000000), cb0[210].w +lt r3.w, r0.z, l(1.000000) +and r2.y, r2.y, r3.w +if_nz r2.y + mad r14.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r14.xyz, r7.xzyx, -r14.xyzx + max r2.y, |r14.y|, |r14.x| + add r2.y, r2.y, l(-29.000000) + mul_sat r2.y, r2.y, l(0.500000) + add r3.w, |r14.z|, l(-13.000000) + mul_sat r3.w, r3.w, l(0.500000) + max r2.y, r2.y, r3.w + lt r3.w, r2.y, l(1.000000) + if_nz r3.w + mad r14.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r15.xyz, r14.xyzx, cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r15.xyw, r14.xyzx, t15.yzwx, s2, l(0.000000) + add r3.w, -r2.y, l(1.000000) + mul r8.w, l(0.500000), cb0[211].y + mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) + max r8.w, r8.w, r14.y + min r8.w, r9.w, r8.w + mul r14.w, r8.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t16.xyzw, s1, l(0.000000) + mad r8.w, r16.w, r3.w, r0.z + add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r15.yyyy, r17.xyzx + mov r17.w, r15.y + mul r17.xyzw, r3.wwww, r17.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t16.xyzw, s1, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r15.xxxx, r14.xyzx + mov r14.w, r15.x + mul r14.xyzw, r3.wwww, r14.xyzw + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r15.wwww, r16.xyzx + mul r15.xyzw, r3.wwww, r15.xyzw + else + mov r17.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r8.w, r0.z + endif + mad r16.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r16.xyz, r7.xzyx, -r16.xyzx + max r3.w, |r16.y|, |r16.x| + add r3.w, r3.w, l(-116.000000) + mul_sat r3.w, r3.w, l(0.125000) + add r9.w, |r16.z|, l(-52.000000) + mul_sat r9.w, r9.w, l(0.125000) + max r3.w, r3.w, r9.w + lt r9.w, r3.w, l(1.000000) + if_nz r9.w + mad r16.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r16.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) + add r9.w, -r3.w, l(1.000000) + mul r2.y, r2.y, r9.w + mul r9.w, l(0.500000), cb0[211].y + mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) + max r9.w, r9.w, r16.y + min r9.w, r10.w, r9.w + mul r16.w, r9.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) + mad r8.w, r19.w, r2.y, r8.w + add r20.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t18.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.yyyy, r20.xyzx + mov r20.w, r18.y + mad r17.xyzw, r20.xyzw, r2.yyyy, r17.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r18.xxxx, r16.xyzx + mov r16.w, r18.x + mad r14.xyzw, r16.xyzw, r2.yyyy, r14.xyzw + mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r16.xyzx + mad r15.xyzw, r18.xyzw, r2.yyyy, r15.xyzw + endif + lt r2.y, l(0.000000), r3.w + if_nz r2.y + mad r16.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r16.xyzx, cb0[211].xyzx + mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx + mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r16.xyz, r19.xyzx, r16.xyzx + min r16.xyz, r18.xyzx, r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r16.xyzx, t19.yzwx, s2, l(0.000000) + add r2.y, -r0.z, l(1.000000) + mul r2.y, r2.y, r3.w + max r3.w, r19.y, r16.y + min r3.w, r18.y, r3.w + mul r16.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t20.xyzw, s1, l(0.000000) + add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r20.yyyy, r19.xyzx + mov r19.w, r20.y + mad r17.xyzw, r19.xyzw, r2.yyyy, r17.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t20.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r20.xxxx, r16.xyzx + mov r16.w, r20.x + mad r14.xyzw, r16.xyzw, r2.yyyy, r14.xyzw + mad r16.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r16.xyzx + mad r15.xyzw, r20.xyzw, r2.yyyy, r15.xyzw + mad r8.w, r18.w, r2.y, r8.w + endif + mad_sat r2.y, r8.w, l(2.000000), l(-1.000000) + add r16.x, -r0.z, r2.y + add r0.z, r0.z, r2.y + mul r16.y, r0.z, l(0.500000) +else + mov r17.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r16.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r16.yyyx, cb0[213].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r13.zw, r16.yyyx, cb0[213].wwwy +mad r18.w, r13.w, l(0.375000), r13.z +add r15.xyzw, r15.xyzw, r18.xyzw +mul r18.xyzw, r16.yyyx, cb0[214].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r13.zw, r16.yyyx, cb0[214].wwwy +mad r18.w, r13.w, l(0.375000), r13.z +add r14.xyzw, r14.xyzw, r18.xyzw +mul r18.xyzw, r16.yyyx, cb0[215].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r13.zw, r16.yyyx, cb0[215].wwwy +mad r18.w, r13.w, l(0.375000), r13.z +add r16.xyzw, r17.xyzw, r18.xyzw +ge r13.zw, r5.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r13.w, r13.z +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r5.xzxx, t14.xyzw, s1, l(0.000000) + lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| + or r5.xz, r18.zzwz, r18.xxyx + or r0.z, r5.z, r5.x + if_nz r0.z + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mov r5.x, l(1.000000) + mov r5.z, r0.z + mov r2.y, l(0) + loop + ge r3.w, l(4.600000), r5.z + breakc_nz r3.w + iadd r3.w, r2.y, l(1) + mul r13.zw, r5.xxxz, l(0.000000, 0.000000, 0.500000, 0.500000) + mov r5.xz, r13.zzwz + mov r2.y, r3.w + continue + endloop + mul r17.xyzw, r5.xxxx, r17.xyzw + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb4[3].x, cb4[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r18.x, r0.z, l(0.00390625000) + mov r18.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r5.xz, r18.xyxx, t13.xzyw, s1, l(0.000000) + mad r5.xz, r5.xxzx, cb4[2].xxyx, cb4[2].zzwz + mul r18.x, r5.x, l(3.54490781) + mul r18.yzw, r5.zzzz, r17.yyzw + mul r0.z, r17.x, l(0.406976730) + exp r0.z, r0.z + mul r17.xyzw, r0.zzzz, r18.xyzw + mov r18.xyzw, r17.xyzw + mov r0.z, l(0) + loop + uge r3.w, r0.z, r2.y + breakc_nz r3.w + mul r19.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r3.w, r19.xyzw, r18.xyzw + dp2 r5.x, r19.yxyy, r18.xyxx + dp2 r5.z, r19.zxzz, r18.xzxx + dp2 r8.w, r19.wxww, r18.xwxx + iadd r9.w, r0.z, l(1) + mov r18.x, r3.w + mov r18.yz, r5.xxzx + mov r18.w, r8.w + mov r0.z, r9.w + continue + endloop + mul r17.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r18.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r17.xyzw, r18.xyzw + dp2 r2.y, r17.yxyy, r18.xyxx + dp2 r3.w, r17.zxzz, r18.xzxx + dp2 r5.x, r17.wxww, r18.xwxx + mul r18.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r5.z, r17.xyzw, r18.xyzw + dp2 r8.w, r17.yxyy, r18.xyxx + dp2 r9.w, r17.zxzz, r18.xzxx + dp2 r10.w, r17.wxww, r18.xwxx + mul r18.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r11.w, r17.xyzw, r18.xyzw + dp2 r13.z, r17.yxyy, r18.xyxx + dp2 r13.w, r17.zxzz, r18.xzxx + dp2 r17.x, r17.wxww, r18.xwxx + mul r15.w, r0.z, l(0.886226952) + mul r15.x, r5.x, l(-1.02332675) + mul r15.y, r2.y, l(-1.02332675) + mul r15.z, r3.w, l(1.02332675) + mul r14.w, r5.z, l(0.886226952) + mul r14.x, r10.w, l(-1.02332675) + mul r14.y, r8.w, l(-1.02332675) + mul r14.z, r9.w, l(1.02332675) + mul r16.w, r11.w, l(0.886226952) + mul r16.x, r17.x, l(-1.02332675) + mul r16.yz, r13.zzwz, l(0.000000, -1.02332675, 1.02332675, 0.000000) + endif +endif +mov r6.w, l(1.000000) +dp4 r17.x, r15.xyzw, r6.xyzw +dp4 r17.y, r14.xyzw, r6.xyzw +dp4 r17.z, r16.xyzw, r6.xyzw +max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +dp3 r0.z, -r11.xyzx, r6.xyzx +add r0.z, r0.z, r0.z +mad r18.xyz, r6.xyzx, -r0.zzzz, -r11.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r2.y, r12.z, l(0.001000) +log r2.y, r2.y +mad r2.y, -r2.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r2.y +mul r5.xz, r4.yyzy, cb1[0].wwww +round_ni r5.xz, r5.xxzx +add r2.y, |r4.w|, -cb1[2].y +round_ni r2.y, r2.y +add r3.w, l(-1.000000), cb1[1].x +max r8.w, r2.y, l(0.000000) +min r3.w, r3.w, r8.w +ge r2.y, r3.w, r2.y +mad r5.x, r5.z, cb1[0].x, r5.x +ftoi r5.x, r5.x +iadd r5.x, r5.x, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.x, r5.x, l(0), t0.xxxx +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +and r3.w, r3.w, r5.x +and r2.y, r2.y, r3.w +mul r19.xyz, r17.xyzx, cb0[111].xxxx +dp3 r3.w, r19.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r7.w, l(1.000000) +mov r19.xyz, l(0,0,0,0) +mov r5.x, l(1.000000) +mov r5.z, r2.y +mov r8.w, l(0) +loop + lt r9.w, l(0.010000), r5.x + ine r10.w, r5.z, l(0) + and r10.w, r9.w, r10.w + if_nz r10.w + firstbit_lo r10.w, r5.z + ishl r11.w, l(1), r10.w + xor r5.z, r5.z, r11.w + ishl r10.w, r10.w, l(3) + dp4 r20.x, cb1[r10.w + 6].xyzw, r7.xyzw + dp4 r20.y, cb1[r10.w + 7].xyzw, r7.xyzw + dp4 r20.z, cb1[r10.w + 8].xyzw, r7.xyzw + ge r21.xyz, cb1[r10.w + 5].xyzx, |r20.xyzx| + and r11.w, r21.y, r21.x + and r11.w, r21.z, r11.w + if_nz r11.w + mul r11.w, l(0.100000), cb1[r10.w + 5].x + mul r21.xyz, |r20.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r13.zw, r21.xxxy, r21.xxxy + add r21.xyw, -|r20.xyxz|, cb1[r10.w + 5].xyxz + mul r21.xyw, r21.xyxw, cb1[r10.w + 9].xyxz + eq r12.z, l(1.000000), cb1[r10.w + 10].x + if_nz r12.z + dp3 r22.x, cb1[r10.w + 6].xyzx, r18.xyzx + dp3 r22.y, cb1[r10.w + 7].xyzx, r18.xyzx + dp3 r22.z, cb1[r10.w + 8].xyzx, r18.xyzx + add r23.xyz, -r20.xyzx, cb1[r10.w + 5].xyzx + div r23.xyz, r23.xyzx, r22.xyzx + add r24.xyz, -r20.xyzx, -cb1[r10.w + 5].xyzx + div r24.xyz, r24.xyzx, r22.xyzx + lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx + movc r23.xyz, r25.xyzx, r23.xyzx, r24.xyzx + min r12.z, r23.y, r23.x + min r12.z, r23.z, r12.z + mad r20.xyz, r22.xyzx, r12.zzzz, r20.xyzx + else + mov r20.xyz, r18.xyzx + endif + dp3 r12.z, r20.xyzx, r20.xyzx + rsq r12.z, r12.z + mul r20.xyz, r12.zzzz, r20.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + lt r23.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r22.xyz, -r22.xyzx, r23.xyzx + itof r22.xyz, r22.xyzx + dp3 r12.z, r20.xyzx, r22.xyzx + div r20.xyz, r20.xyzx, r12.zzzz + lt r12.z, r20.z, l(0.000000) + add r20.zw, -|r20.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r20.zw, r20.zzzw, r22.xxxy + movc r20.xy, r12.zzzz, r20.zwzz, r20.xyxx + dp4 r12.z, cb1[r10.w + 4].xyzw, r6.xyzw + max r12.z, r12.z, l(0.000000) + max r12.z, r12.z, l(0.000100) + min r17.w, r21.w, r21.y + min r17.w, r17.w, r21.x + add r13.z, r13.w, r13.z + mad r13.z, r21.z, r21.z, r13.z + mad r11.w, r11.w, r11.w, -r13.z + mul r11.w, r11.w, cb1[r10.w + 9].x + mul r11.w, r11.w, cb1[r10.w + 9].x + add r13.z, l(1.000000), -cb1[r10.w + 10].y + mul r11.w, r11.w, r13.z + mul r11.w, r11.w, l(100.000000) + mad_sat r11.w, r17.w, cb1[r10.w + 10].y, r11.w + mul r13.z, r11.w, cb1[r10.w + 10].w + mad r20.xy, r20.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r20.xy, r20.xyxx, cb1[1].wwww, cb1[2].wwww + mov r20.z, cb1[r10.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r20.xyz, r20.xyzx, t5.xyzw, s3, r0.z + mul r20.xyz, r20.xyzx, cb1[r10.w + 9].wwww + div r13.w, r3.w, r12.z + min r13.w, |r13.w|, l(1.000000) + mad r13.w, r13.w, l(2.000000), r3.w + add r12.z, r12.z, l(2.000000) + div r12.z, r13.w, r12.z + add r12.z, r12.z, l(-1.000000) + mad r12.z, r12.z, cb0[112].w, l(1.000000) + mul r20.xyz, r12.zzzz, r20.xyzx + mul r20.xyz, r13.zzzz, r20.xyzx + mad r19.xyz, r20.xyzx, r5.xxxx, r19.xyzx + mad r10.w, -r11.w, cb1[r10.w + 10].w, l(1.000000) + mul r5.x, r5.x, r10.w + endif + mov r8.w, l(-1) + continue + else + mov r8.w, r9.w + break + endif + mov r8.w, r9.w +endloop +if_nz r8.w + dp3 r2.y, r18.xyzx, r18.xyzx + rsq r2.y, r2.y + mul r18.xyz, r2.yyyy, r18.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyzx + lt r21.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r2.y, r18.xyzx, r20.xyzx + div r18.xyz, r18.xyzx, r2.yyyy + lt r2.y, r18.z, l(0.000000) + add r13.zw, -|r18.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r13.zw, r13.zzzw, r20.xxxy + movc r13.zw, r2.yyyy, r13.zzzw, r18.xxxy + dp4 r2.y, cb1[3].xyzw, r6.xyzw + max r2.y, r2.y, l(0.000000) + max r2.y, r2.y, l(0.000100) + mad r13.zw, r13.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r18.xy, r13.zwzz, cb1[1].wwww, cb1[2].wwww + mov r18.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r18.xyz, r18.xyzx, t5.xyzw, s3, r0.z + div r0.z, r3.w, r2.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r3.w + add r2.y, r2.y, l(2.000000) + div r0.z, r0.z, r2.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r18.xyz, r0.zzzz, r18.xyzx + mad r19.xyz, r18.xyzx, r5.xxxx, r19.xyzx +endif +mul r18.xyz, r19.xyzx, cb0[112].zzzz +mul r18.xyz, r18.xyzx, cb0[111].yyyy +if_nz r2.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r19.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r2.y, -r0.z, l(1.000000) + mul r20.xyz, r2.yyyy, r18.xyzx + mad r18.xyz, r19.xyzx, r0.zzzz, r20.xyzx +endif +mul r17.xyz, r3.xyzx, r17.xyzx +mul r17.xyz, r17.xyzx, cb0[111].xxxx +mad r0.z, r2.x, r13.x, r13.y +mul r2.xyz, r0.zzzz, r18.xyzx +mul r2.xyz, r10.xyzx, r2.xyzx +mad r2.xyz, r17.xyzx, r12.xywx, r2.xyzx +mul r6.xyzw, r6.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) +dp4 r10.x, r15.xyzw, r6.xyzw +dp4 r10.y, r14.xyzw, r6.xyzw +dp4 r10.z, r16.xyzw, r6.xyzw +max r6.xyz, r10.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +mul r6.xyz, r6.xyzx, cb0[111].xxxx +mul r6.xyz, r12.xywx, r6.xyzx +max r0.z, r3.y, r3.x +max r0.z, r3.z, r0.z +max r0.z, r0.z, l(0.010000) +div r3.xyz, r3.xyzx, r0.zzzz +mul r3.xyz, r3.xyzx, r6.xyzx +mul r0.z, r4.x, l(0.00787401572) +min r3.w, r5.y, l(1.000000) +bfi r1.z, l(3), l(2), r1.z, l(0) +ftou r2.w, r2.w +bfi r1.z, l(2), l(0), r2.w, r1.z +utof r1.z, r1.z +mul r1.z, r1.z, l(0.0322580636) +mad r0.z, r0.z, r3.w, r1.z +mul r3.xyz, r0.zzzz, r3.xyzx +mad r2.xyz, r3.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000), r2.xyzx +add r1.xyz, r1.xywx, r2.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r7.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r5.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r7.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r11.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[163].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r11.xyzx, -r9.xyzx + add r2.w, r7.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w + mul r3.w, r0.x, r3.z + mad r4.x, r3.w, r2.w, cb0[44].y + mad r2.w, -r3.w, r2.w, r2.w + mul r3.w, r2.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.x, r4.x, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.y, l(5.960464478E-08), |r3.w| + exp r5.z, -r3.w + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r5.y, r5.z, r3.w + add r4.x, r4.x, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r5.y, l(5.960464478E-08), |r2.w| + exp r5.z, -r2.w + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r5.y, r5.z, r2.w + mul r2.w, r2.w, r4.x + mad r2.w, r5.x, r3.w, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r0.x, r5.w, r0.x + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r3.zw, r5.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r3.z + add r0.x, r3.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r4.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t12.xyzw, s1, l(0.000000) + add r0.y, |r4.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r7.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r5.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r5.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xyzx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx + +// === Simplified Fog Modification (Anti-Banding) === +// Check if fog modification is enabled via cb13[12].y +lt r15.x, l(0.500000), cb13[12].y +if_nz r15.x + // r1.xyz = scene color, r4.xyz = transmittance, r0.xyz = fog inscatter + // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density + add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + + // Reduce fog inscatter intensity + mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + + // Modified fog blend: scene * boostedTrans + reducedInscatter + mad r0.xyz, r1.xyzx, r15.xyzx, r16.xyzx +else + // Original fog blend + mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +endif +// === End Fog Modification === +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r8.xyzx, r8.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t25.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..86cb2ba1e6 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0_original_backup.asm @@ -0,0 +1,990 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Sun Feb 1 03:51:02 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xy +// TEXCOORD 0 xy 1 NONE float xy +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[235], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[5], immediateIndexed +dcl_constantbuffer CB4[4], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture3d (float,float,float,float) t25 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 26 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t22.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t23.xyzw +ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t24.xyzw +mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) +ftou r1.xz, r1.xxzx +ubfe r4.x, l(7), l(3), r1.x +utof r4.x, r4.x +round_ne r1.y, r1.y +ftou r1.y, r1.y +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r5.y, -r4.y, l(1.000000) +lt r4.y, r5.y, l(0.000000) +ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) +add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) +movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) +mul r4.zw, r4.zzzw, r6.xxxy +movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx +dp3 r2.x, r5.xyzx, r5.xyzx +rsq r2.x, r2.x +mul r6.xyz, r2.xxxx, r5.xyzx +and r2.y, r1.y, l(7) +utof r2.y, r2.y +mad r2.y, r2.y, l(0.107142866), l(0.500000) +utof r4.yz, r0.xxyx +mul r5.xz, v0.xxyx, cb0[82].zzwz +mad r7.xy, r5.xzxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r7.zw, r4.yyyz, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r7.zw, r7.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r4.w, r7.zwzz, t1.yzwx, s0, l(0.000000) +mul r8.xyzw, -r7.yyyy, cb0[25].xyzw +mad r7.xyzw, cb0[24].xyzw, r7.xxxx, r8.xyzw +mad r7.xyzw, cb0[26].xyzw, r4.wwww, r7.xyzw +add r7.xyzw, r7.xyzw, cb0[27].xyzw +div r7.xyz, r7.xyzx, r7.wwww +mul r4.w, r7.y, cb0[1].z +mad r4.w, cb0[0].z, r7.x, r4.w +mad r4.w, cb0[2].z, r7.z, r4.w +add r4.w, r4.w, cb0[3].z +eq r5.w, l(0.000000), cb0[86].w +add r8.xyz, -r7.xyzx, cb0[44].xyzx +mov r9.x, cb0[0].z +mov r9.y, cb0[1].z +mov r9.z, cb0[2].z +movc r10.xyz, r5.wwww, r8.xyzx, r9.xyzx +dp3 r5.w, r10.xyzx, r10.xyzx +max r8.w, r5.w, l(9.999999939E-09) +rsq r8.w, r8.w +mul r11.xyz, r8.wwww, r10.xyzx +mul r5.w, r5.w, r8.w +lt r9.w, l(0.000488281250), cb0[234].x +if_nz r9.w + sample_b_indexable(texture2d)(float,float,float,float) r9.w, v1.xyxx, t21.yzwx, s1, cb0[108].x +else + mov r9.w, l(1.000000) +endif +lt r12.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[226].xyxx +if_nz r12.x + add r10.w, |r6.y|, |r6.x| + add r10.w, |r6.z|, r10.w + div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r10.w + mul r12.xzw, |r6.xxyz|, r10.wwww + mul r13.xyzw, r12.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) + add r13.xyz, r13.zwzz, r13.xxyx + mad r12.xzw, r12.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r13.xxyz + mul r13.xyz, r7.xyzx, cb0[229].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r10.w, r13.xyzx, t9.yzwx, s2, l(0.000000) + mad r10.w, r10.w, l(2.000000), l(-1.000000) + mul r12.xzw, r10.wwww, r12.xxzw + mov r10.w, |r6.y| + add r10.w, r10.w, l(-0.700000) + mul_sat r10.w, r10.w, l(4.000000) + mad r11.w, r10.w, l(-2.000000), l(3.000000) + mul r10.w, r10.w, r10.w + mul r10.w, r10.w, r11.w + add r11.w, -cb0[229].z, cb0[229].y + mad r10.w, r10.w, r11.w, cb0[229].z + mul r12.xzw, r10.wwww, r12.xxzw +else + mov r12.xzw, l(0,0,0,0) +endif +if_nz r12.y + mul r13.xyz, r6.xyzx, cb0[233].zzzz + mul r14.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy + mad r13.xyz, r13.xyzx, cb0[225].xxxx, r14.xyzx + max r10.w, -r6.y, l(0.000000) + min r10.w, r10.w, l(0.900000) + add r10.w, -r10.w, l(1.000000) + mad r2.x, -r5.y, r2.x, l(-0.200000) + mul_sat r2.x, r2.x, l(-10.000000) + mad r5.y, r2.x, l(-2.000000), l(3.000000) + mul r2.x, r2.x, r2.x + mul r2.x, r2.x, r5.y + max r2.x, r2.x, l(0.100000) + min r2.x, r2.x, l(1.000000) + mul r2.x, r2.x, r10.w + mad r13.xyz, r13.xyzx, r2.xxxx, r7.xyzx + add r12.xyz, r12.xzwx, r13.xyzx + mul r13.xyz, r12.yyyy, cb3[1].xyzx + mad r12.xyw, cb3[0].xyxz, r12.xxxx, r13.xyxz + mad r12.xyz, cb3[2].xyzx, r12.zzzz, r12.xywx + add r12.xyz, r12.xyzx, cb3[3].xyzx + mad r13.x, r12.x, l(0.500000), cb3[4].x + mad r2.x, r12.y, l(0.500000), l(0.500000) + add r13.z, -r2.x, cb3[4].y + add r12.xy, r13.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r2.x, r12.z, l(0.000488281250) + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r12.xyxx, t8.xxxx, s4, r2.x +else + mov r2.x, l(1.000000) +endif +mov_sat r5.y, r6.y +add r10.w, l(1.000000), -cb0[230].w +mad r5.y, r5.y, r10.w, cb0[230].w +add r12.xy, r7.xzxx, -cb0[44].xzxx +max r10.w, |r12.y|, |r12.x| +mul r11.w, r5.y, cb0[230].z +mul r12.x, r2.x, r5.y +mul r12.y, l(0.0500000119), cb0[222].w +mad r12.z, -cb0[222].w, l(0.700000), r10.w +div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), r12.y +mul_sat r12.y, r12.y, r12.z +mad r12.z, r12.y, l(-2.000000), l(3.000000) +mul r12.y, r12.y, r12.y +mul r12.y, r12.y, r12.z +mad r2.x, -r5.y, r2.x, l(1.000000) +mad r2.x, r12.y, r2.x, r12.x +mad r5.y, -cb0[230].z, r5.y, l(1.000000) +mad r2.x, r2.x, r5.y, r11.w +mad r5.y, cb0[230].x, cb0[222].w, -cb0[222].w +add r10.w, r10.w, -cb0[222].w +div r5.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y +mul_sat r5.y, r5.y, r10.w +mad r10.w, r5.y, l(-2.000000), l(3.000000) +mul r5.y, r5.y, r5.y +mul r5.y, r5.y, r10.w +add r10.w, -r2.x, cb0[230].y +mad r2.x, r5.y, r10.w, r2.x +add r2.x, -r2.x, l(1.000000) +mad r2.x, -r9.w, r2.x, l(1.000000) +mad_sat r5.y, r2.z, l(0.300000), l(0.250000) +mul r5.y, r5.y, cb0[222].x +mul r5.y, r2.x, r5.y +mad r5.y, r5.y, l(-0.750000), l(1.000000) +mul r3.xyz, r3.xyzx, r5.yyyy +min r5.y, r2.z, l(0.300000) +mul r2.x, r2.x, cb0[222].x +mul r2.xw, r2.xxxw, l(0.500000, 0.000000, 0.000000, 3.000000) +add r5.y, -r2.z, r5.y +mad r12.z, r2.x, r5.y, r2.z +mul r2.x, r2.y, l(0.080000) +dp3 r2.z, r6.xyzx, r11.xyzx +max r5.y, r2.z, l(0.000000) +mad r13.xyzw, r12.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r9.w, r13.x, r13.x +mul r10.w, r5.y, l(-9.280000) +exp r10.w, r10.w +min r9.w, r9.w, r10.w +mad r9.w, r9.w, r13.x, r13.y +mad r13.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz +ld_indexable(texture2d)(float,float,float,float) r13.z, r0.xyzz, t6.zwxy +lt r0.z, l(0.001000), r13.z +if_nz r0.z + bfi r0.z, l(3), l(2), r1.x, l(0) + mul r1.x, r1.w, l(3.000000) + ftou r1.x, r1.x + bfi r0.z, l(2), l(0), r1.x, r0.z + utof r0.z, r0.z + mul r1.x, r0.z, l(0.0322580636) + ubfe r1.y, l(7), l(3), r1.y + utof r1.y, r1.y + mul r1.y, r1.y, l(0.00787401572) + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xzxx, t11.yzwx, s1, l(0.000000) + dp3 r9.w, -r11.xyzx, r6.xyzx + add r9.w, r9.w, r9.w + mad r14.xyz, r6.xyzx, -r9.wwww, -r11.xyzx + dp3 r9.w, -cb2[0].xyzx, r14.xyzx + mad r15.xyz, cb2[0].xyzx, r9.wwww, r14.xyzx + lt r9.w, r9.w, cb2[4].z + dp3 r10.w, r15.xyzx, r15.xyzx + max r10.w, r10.w, l(0.0000610351562) + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + mul r15.xyz, r15.xyzx, cb2[4].yyyy + mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx + dp3 r10.w, r15.xyzx, r15.xyzx + rsq r10.w, r10.w + mul r15.xyz, r10.wwww, r15.xyzx + movc r14.xyz, r9.wwww, r15.xyzx, r14.xyzx + mad r10.xyz, r10.xyzx, r8.wwww, r14.xyzx + dp3 r8.w, r10.xyzx, r10.xyzx + max r8.w, r8.w, l(0.0000610351562) + rsq r8.w, r8.w + mul r10.xyz, r8.wwww, r10.xyzx + dp3 r8.w, r6.xyzx, r14.xyzx + mov_sat r12.x, r8.w + dp3_sat r9.w, r6.xyzx, r10.xyzx + dp3 r10.w, r11.xyzx, r14.xyzx + min r12.y, r5.y, l(1.000000) + mul r11.w, r12.z, r12.z + mul r11.w, r11.w, r11.w + mad r12.w, r9.w, r11.w, -r9.w + mad r9.w, r12.w, r9.w, l(1.000000) + dp3_sat r10.x, r11.xyzx, r10.xyzx + add r10.x, -r10.x, l(1.000000) + mul r10.y, r10.x, r10.x + mul r10.y, r10.y, r10.y + mul r10.z, r10.x, r10.y + add r12.w, -r12.z, l(1.000000) + mad r14.x, -r12.w, l(0.383026), l(-0.0761947036) + mad r14.x, r12.w, r14.x, l(1.049970) + mad r12.w, r12.w, r14.x, l(0.409255) + min r12.w, r12.w, l(0.999000) + add r14.x, -r12.w, l(1.000000) + mad r2.y, -r2.y, l(0.080000), l(1.000000) + mad r2.y, r2.y, l(0.0476190485), r2.x + mov_sat r14.y, -r10.w + mul r14.y, r14.y, r14.y + mad r14.y, r14.y, l(-0.640000), l(1.000000) + mul r14.y, r14.y, r14.y + mad r10.x, -r10.y, r10.x, l(1.000000) + mad r10.x, r2.x, r10.x, r10.z + mul r9.w, r9.w, r9.w + div r9.w, r11.w, r9.w + mad r10.yz, -r12.yyxy, r11.wwww, r12.yyxy + mad r10.yz, r10.yyzy, r12.yyxy, r11.wwww + sqrt r10.yz, r10.yyzy + mul r10.yz, r10.yyzy, r12.xxyx + add r10.y, r10.z, r10.y + add r10.y, r10.y, l(0.000100) + div r10.y, l(0.500000), r10.y + mul r9.w, r9.w, r10.y + mul r9.w, r9.w, r10.x + min r9.w, r9.w, l(2048.000000) + mad r15.xyzw, r12.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r10.x, r15.xyxx, t10.xyzw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r10.y, r15.zwzz, t10.yxzw, s1, l(0.000000) + mul r10.x, r10.y, r10.x + mul r10.x, r12.w, r10.x + div r10.x, r10.x, r14.x + mul r10.y, r2.y, r2.y + mul r10.x, r10.x, r10.y + mad r2.y, -r2.y, r14.x, l(1.000000) + div r2.y, r10.x, r2.y + add r2.y, r2.y, r9.w + add_sat r2.z, r2.z, l(0.200000) + mov_sat r9.w, r10.w + add r9.w, r9.w, l(0.500000) + min r9.w, r9.w, l(1.000000) + mul r10.x, r2.z, r9.w + add_sat r10.y, r10.w, l(1.000000) + mad r2.z, -r2.z, r9.w, l(1.000000) + mad r2.z, r10.y, r2.z, r10.x + mul r2.y, r2.z, r2.y + mul r2.y, r1.y, r2.y + mul r10.xyz, r1.yyyy, r3.xyzx + ubfe r2.z, l(7), l(3), r1.z + utof r2.z, r2.z + mul r2.z, r2.z, l(0.00787401572) + mul r2.y, r2.y, cb2[4].x + max r2.y, r2.y, l(0.000000) + min r2.y, r2.y, l(1000.000000) + mul r2.y, r12.x, r2.y + mad r10.xyz, r10.xyzx, r2.zzzz, r2.yyyy + max r2.y, r3.y, r3.x + max r2.y, r3.z, r2.y + max r2.y, r2.y, l(0.010000) + div r14.xzw, r3.xxyz, r2.yyyy + mul r2.y, r4.x, l(0.00393700786) + mul r14.xzw, r2.yyyy, r14.xxzw + add_sat r2.y, -r8.w, l(0.500000) + ne r2.z, r14.y, l(0.360000) + div r9.w, l(0.360000), r14.y + movc r2.z, r2.z, r9.w, l(1.000000) + mul r2.y, r2.z, r2.y + mad_sat r0.z, r0.z, l(0.0322580636), r8.w + add r0.z, -r12.x, r0.z + mul r12.xyw, r0.zzzz, r3.xyxz + mad r12.xyw, r14.xzxw, r2.yyyy, r12.xyxw + mad r10.xyz, r12.xywx, r1.yyyy, r10.xyzx + mul r10.xyz, r10.xyzx, cb2[1].xyzx + mov r13.w, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r12.xyw, r13.zwzz, t7.xywz, s1, cb0[108].x + add r0.z, -r13.z, l(1.000000) + mad r12.xyw, r10.xyxz, r12.xyxw, -r10.xyxz + mad r10.xyz, r0.zzzz, r12.xywx, r10.xyzx + max r0.z, r1.y, r1.w + add r0.z, -r1.w, r0.z + mad r0.z, r1.x, r0.z, r1.w + mul r1.xyw, r0.zzzz, r10.xyxz +else + mov r1.xyw, l(0,0,0,0) +endif +ne r2.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r2.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + mad r0.z, r0.z, l(0.750000), l(0.250000) + min r0.z, r3.w, r0.z + add r2.y, r0.z, r5.y + mad r8.w, r12.z, l(-16.000000), l(-1.000000) + exp r8.w, r8.w + log r2.y, |r2.y| + mul r2.y, r2.y, r8.w + exp r2.y, r2.y + add r2.y, r0.z, r2.y + add r2.y, r2.y, l(-1.000000) + mov_sat r10.xyz, r2.yyyy + mad r12.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) + mul r12.xyw, r0.zzzz, r12.xyxw + mad r12.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r12.xyxw + add r12.xyw, r12.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) + mul r12.xyw, r0.zzzz, r12.xyxw + mad r12.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r12.xyxw + add r12.xyw, r12.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) + mul r12.xyw, r0.zzzz, r12.xyxw + max r12.xyw, r0.zzzz, r12.xyxw +else + mov r10.xyz, r3.wwww + mov r12.xyw, r3.wwww +endif +mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r14.xyz, r7.xzyx, -r14.xyzx +max r0.z, |r14.y|, |r14.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r2.y, |r14.z|, l(-208.000000) +mul_sat r2.y, r2.y, l(0.031250) +max r0.z, r0.z, r2.y +ne r2.y, l(0.000000), cb0[210].w +lt r3.w, r0.z, l(1.000000) +and r2.y, r2.y, r3.w +if_nz r2.y + mad r14.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r14.xyz, r7.xzyx, -r14.xyzx + max r2.y, |r14.y|, |r14.x| + add r2.y, r2.y, l(-29.000000) + mul_sat r2.y, r2.y, l(0.500000) + add r3.w, |r14.z|, l(-13.000000) + mul_sat r3.w, r3.w, l(0.500000) + max r2.y, r2.y, r3.w + lt r3.w, r2.y, l(1.000000) + if_nz r3.w + mad r14.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r15.xyz, r14.xyzx, cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r15.xyw, r14.xyzx, t15.yzwx, s2, l(0.000000) + add r3.w, -r2.y, l(1.000000) + mul r8.w, l(0.500000), cb0[211].y + mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) + max r8.w, r8.w, r14.y + min r8.w, r9.w, r8.w + mul r14.w, r8.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t16.xyzw, s1, l(0.000000) + mad r8.w, r16.w, r3.w, r0.z + add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r15.yyyy, r17.xyzx + mov r17.w, r15.y + mul r17.xyzw, r3.wwww, r17.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t16.xyzw, s1, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r15.xxxx, r14.xyzx + mov r14.w, r15.x + mul r14.xyzw, r3.wwww, r14.xyzw + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r15.wwww, r16.xyzx + mul r15.xyzw, r3.wwww, r15.xyzw + else + mov r17.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r8.w, r0.z + endif + mad r16.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r16.xyz, r7.xzyx, -r16.xyzx + max r3.w, |r16.y|, |r16.x| + add r3.w, r3.w, l(-116.000000) + mul_sat r3.w, r3.w, l(0.125000) + add r9.w, |r16.z|, l(-52.000000) + mul_sat r9.w, r9.w, l(0.125000) + max r3.w, r3.w, r9.w + lt r9.w, r3.w, l(1.000000) + if_nz r9.w + mad r16.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r16.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) + add r9.w, -r3.w, l(1.000000) + mul r2.y, r2.y, r9.w + mul r9.w, l(0.500000), cb0[211].y + mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) + max r9.w, r9.w, r16.y + min r9.w, r10.w, r9.w + mul r16.w, r9.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) + mad r8.w, r19.w, r2.y, r8.w + add r20.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t18.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.yyyy, r20.xyzx + mov r20.w, r18.y + mad r17.xyzw, r20.xyzw, r2.yyyy, r17.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r18.xxxx, r16.xyzx + mov r16.w, r18.x + mad r14.xyzw, r16.xyzw, r2.yyyy, r14.xyzw + mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r16.xyzx + mad r15.xyzw, r18.xyzw, r2.yyyy, r15.xyzw + endif + lt r2.y, l(0.000000), r3.w + if_nz r2.y + mad r16.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r16.xyzx, cb0[211].xyzx + mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx + mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r16.xyz, r19.xyzx, r16.xyzx + min r16.xyz, r18.xyzx, r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r16.xyzx, t19.yzwx, s2, l(0.000000) + add r2.y, -r0.z, l(1.000000) + mul r2.y, r2.y, r3.w + max r3.w, r19.y, r16.y + min r3.w, r18.y, r3.w + mul r16.w, r3.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t20.xyzw, s1, l(0.000000) + add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r20.yyyy, r19.xyzx + mov r19.w, r20.y + mad r17.xyzw, r19.xyzw, r2.yyyy, r17.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t20.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r20.xxxx, r16.xyzx + mov r16.w, r20.x + mad r14.xyzw, r16.xyzw, r2.yyyy, r14.xyzw + mad r16.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r16.xyzx + mad r15.xyzw, r20.xyzw, r2.yyyy, r15.xyzw + mad r8.w, r18.w, r2.y, r8.w + endif + mad_sat r2.y, r8.w, l(2.000000), l(-1.000000) + add r16.x, -r0.z, r2.y + add r0.z, r0.z, r2.y + mul r16.y, r0.z, l(0.500000) +else + mov r17.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r16.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r16.yyyx, cb0[213].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r13.zw, r16.yyyx, cb0[213].wwwy +mad r18.w, r13.w, l(0.375000), r13.z +add r15.xyzw, r15.xyzw, r18.xyzw +mul r18.xyzw, r16.yyyx, cb0[214].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r13.zw, r16.yyyx, cb0[214].wwwy +mad r18.w, r13.w, l(0.375000), r13.z +add r14.xyzw, r14.xyzw, r18.xyzw +mul r18.xyzw, r16.yyyx, cb0[215].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r13.zw, r16.yyyx, cb0[215].wwwy +mad r18.w, r13.w, l(0.375000), r13.z +add r16.xyzw, r17.xyzw, r18.xyzw +ge r13.zw, r5.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r13.w, r13.z +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r5.xzxx, t14.xyzw, s1, l(0.000000) + lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| + or r5.xz, r18.zzwz, r18.xxyx + or r0.z, r5.z, r5.x + if_nz r0.z + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mov r5.x, l(1.000000) + mov r5.z, r0.z + mov r2.y, l(0) + loop + ge r3.w, l(4.600000), r5.z + breakc_nz r3.w + iadd r3.w, r2.y, l(1) + mul r13.zw, r5.xxxz, l(0.000000, 0.000000, 0.500000, 0.500000) + mov r5.xz, r13.zzwz + mov r2.y, r3.w + continue + endloop + mul r17.xyzw, r5.xxxx, r17.xyzw + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb4[3].x, cb4[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r18.x, r0.z, l(0.00390625000) + mov r18.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r5.xz, r18.xyxx, t13.xzyw, s1, l(0.000000) + mad r5.xz, r5.xxzx, cb4[2].xxyx, cb4[2].zzwz + mul r18.x, r5.x, l(3.54490781) + mul r18.yzw, r5.zzzz, r17.yyzw + mul r0.z, r17.x, l(0.406976730) + exp r0.z, r0.z + mul r17.xyzw, r0.zzzz, r18.xyzw + mov r18.xyzw, r17.xyzw + mov r0.z, l(0) + loop + uge r3.w, r0.z, r2.y + breakc_nz r3.w + mul r19.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + dp4 r3.w, r19.xyzw, r18.xyzw + dp2 r5.x, r19.yxyy, r18.xyxx + dp2 r5.z, r19.zxzz, r18.xzxx + dp2 r8.w, r19.wxww, r18.xwxx + iadd r9.w, r0.z, l(1) + mov r18.x, r3.w + mov r18.yz, r5.xxzx + mov r18.w, r8.w + mov r0.z, r9.w + continue + endloop + mul r17.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) + mul r18.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r17.xyzw, r18.xyzw + dp2 r2.y, r17.yxyy, r18.xyxx + dp2 r3.w, r17.zxzz, r18.xzxx + dp2 r5.x, r17.wxww, r18.xwxx + mul r18.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r5.z, r17.xyzw, r18.xyzw + dp2 r8.w, r17.yxyy, r18.xyxx + dp2 r9.w, r17.zxzz, r18.xzxx + dp2 r10.w, r17.wxww, r18.xwxx + mul r18.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) + dp4 r11.w, r17.xyzw, r18.xyzw + dp2 r13.z, r17.yxyy, r18.xyxx + dp2 r13.w, r17.zxzz, r18.xzxx + dp2 r17.x, r17.wxww, r18.xwxx + mul r15.w, r0.z, l(0.886226952) + mul r15.x, r5.x, l(-1.02332675) + mul r15.y, r2.y, l(-1.02332675) + mul r15.z, r3.w, l(1.02332675) + mul r14.w, r5.z, l(0.886226952) + mul r14.x, r10.w, l(-1.02332675) + mul r14.y, r8.w, l(-1.02332675) + mul r14.z, r9.w, l(1.02332675) + mul r16.w, r11.w, l(0.886226952) + mul r16.x, r17.x, l(-1.02332675) + mul r16.yz, r13.zzwz, l(0.000000, -1.02332675, 1.02332675, 0.000000) + endif +endif +mov r6.w, l(1.000000) +dp4 r17.x, r15.xyzw, r6.xyzw +dp4 r17.y, r14.xyzw, r6.xyzw +dp4 r17.z, r16.xyzw, r6.xyzw +max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +dp3 r0.z, -r11.xyzx, r6.xyzx +add r0.z, r0.z, r0.z +mad r18.xyz, r6.xyzx, -r0.zzzz, -r11.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r2.y, r12.z, l(0.001000) +log r2.y, r2.y +mad r2.y, -r2.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r2.y +mul r5.xz, r4.yyzy, cb1[0].wwww +round_ni r5.xz, r5.xxzx +add r2.y, |r4.w|, -cb1[2].y +round_ni r2.y, r2.y +add r3.w, l(-1.000000), cb1[1].x +max r8.w, r2.y, l(0.000000) +min r3.w, r3.w, r8.w +ge r2.y, r3.w, r2.y +mad r5.x, r5.z, cb1[0].x, r5.x +ftoi r5.x, r5.x +iadd r5.x, r5.x, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.x, r5.x, l(0), t0.xxxx +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +and r3.w, r3.w, r5.x +and r2.y, r2.y, r3.w +mul r19.xyz, r17.xyzx, cb0[111].xxxx +dp3 r3.w, r19.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r7.w, l(1.000000) +mov r19.xyz, l(0,0,0,0) +mov r5.x, l(1.000000) +mov r5.z, r2.y +mov r8.w, l(0) +loop + lt r9.w, l(0.010000), r5.x + ine r10.w, r5.z, l(0) + and r10.w, r9.w, r10.w + if_nz r10.w + firstbit_lo r10.w, r5.z + ishl r11.w, l(1), r10.w + xor r5.z, r5.z, r11.w + ishl r10.w, r10.w, l(3) + dp4 r20.x, cb1[r10.w + 6].xyzw, r7.xyzw + dp4 r20.y, cb1[r10.w + 7].xyzw, r7.xyzw + dp4 r20.z, cb1[r10.w + 8].xyzw, r7.xyzw + ge r21.xyz, cb1[r10.w + 5].xyzx, |r20.xyzx| + and r11.w, r21.y, r21.x + and r11.w, r21.z, r11.w + if_nz r11.w + mul r11.w, l(0.100000), cb1[r10.w + 5].x + mul r21.xyz, |r20.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r13.zw, r21.xxxy, r21.xxxy + add r21.xyw, -|r20.xyxz|, cb1[r10.w + 5].xyxz + mul r21.xyw, r21.xyxw, cb1[r10.w + 9].xyxz + eq r12.z, l(1.000000), cb1[r10.w + 10].x + if_nz r12.z + dp3 r22.x, cb1[r10.w + 6].xyzx, r18.xyzx + dp3 r22.y, cb1[r10.w + 7].xyzx, r18.xyzx + dp3 r22.z, cb1[r10.w + 8].xyzx, r18.xyzx + add r23.xyz, -r20.xyzx, cb1[r10.w + 5].xyzx + div r23.xyz, r23.xyzx, r22.xyzx + add r24.xyz, -r20.xyzx, -cb1[r10.w + 5].xyzx + div r24.xyz, r24.xyzx, r22.xyzx + lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx + movc r23.xyz, r25.xyzx, r23.xyzx, r24.xyzx + min r12.z, r23.y, r23.x + min r12.z, r23.z, r12.z + mad r20.xyz, r22.xyzx, r12.zzzz, r20.xyzx + else + mov r20.xyz, r18.xyzx + endif + dp3 r12.z, r20.xyzx, r20.xyzx + rsq r12.z, r12.z + mul r20.xyz, r12.zzzz, r20.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + lt r23.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r22.xyz, -r22.xyzx, r23.xyzx + itof r22.xyz, r22.xyzx + dp3 r12.z, r20.xyzx, r22.xyzx + div r20.xyz, r20.xyzx, r12.zzzz + lt r12.z, r20.z, l(0.000000) + add r20.zw, -|r20.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r20.zw, r20.zzzw, r22.xxxy + movc r20.xy, r12.zzzz, r20.zwzz, r20.xyxx + dp4 r12.z, cb1[r10.w + 4].xyzw, r6.xyzw + max r12.z, r12.z, l(0.000000) + max r12.z, r12.z, l(0.000100) + min r17.w, r21.w, r21.y + min r17.w, r17.w, r21.x + add r13.z, r13.w, r13.z + mad r13.z, r21.z, r21.z, r13.z + mad r11.w, r11.w, r11.w, -r13.z + mul r11.w, r11.w, cb1[r10.w + 9].x + mul r11.w, r11.w, cb1[r10.w + 9].x + add r13.z, l(1.000000), -cb1[r10.w + 10].y + mul r11.w, r11.w, r13.z + mul r11.w, r11.w, l(100.000000) + mad_sat r11.w, r17.w, cb1[r10.w + 10].y, r11.w + mul r13.z, r11.w, cb1[r10.w + 10].w + mad r20.xy, r20.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r20.xy, r20.xyxx, cb1[1].wwww, cb1[2].wwww + mov r20.z, cb1[r10.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r20.xyz, r20.xyzx, t5.xyzw, s3, r0.z + mul r20.xyz, r20.xyzx, cb1[r10.w + 9].wwww + div r13.w, r3.w, r12.z + min r13.w, |r13.w|, l(1.000000) + mad r13.w, r13.w, l(2.000000), r3.w + add r12.z, r12.z, l(2.000000) + div r12.z, r13.w, r12.z + add r12.z, r12.z, l(-1.000000) + mad r12.z, r12.z, cb0[112].w, l(1.000000) + mul r20.xyz, r12.zzzz, r20.xyzx + mul r20.xyz, r13.zzzz, r20.xyzx + mad r19.xyz, r20.xyzx, r5.xxxx, r19.xyzx + mad r10.w, -r11.w, cb1[r10.w + 10].w, l(1.000000) + mul r5.x, r5.x, r10.w + endif + mov r8.w, l(-1) + continue + else + mov r8.w, r9.w + break + endif + mov r8.w, r9.w +endloop +if_nz r8.w + dp3 r2.y, r18.xyzx, r18.xyzx + rsq r2.y, r2.y + mul r18.xyz, r2.yyyy, r18.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyzx + lt r21.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r2.y, r18.xyzx, r20.xyzx + div r18.xyz, r18.xyzx, r2.yyyy + lt r2.y, r18.z, l(0.000000) + add r13.zw, -|r18.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r13.zw, r13.zzzw, r20.xxxy + movc r13.zw, r2.yyyy, r13.zzzw, r18.xxxy + dp4 r2.y, cb1[3].xyzw, r6.xyzw + max r2.y, r2.y, l(0.000000) + max r2.y, r2.y, l(0.000100) + mad r13.zw, r13.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r18.xy, r13.zwzz, cb1[1].wwww, cb1[2].wwww + mov r18.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r18.xyz, r18.xyzx, t5.xyzw, s3, r0.z + div r0.z, r3.w, r2.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r3.w + add r2.y, r2.y, l(2.000000) + div r0.z, r0.z, r2.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r18.xyz, r0.zzzz, r18.xyzx + mad r19.xyz, r18.xyzx, r5.xxxx, r19.xyzx +endif +mul r18.xyz, r19.xyzx, cb0[112].zzzz +mul r18.xyz, r18.xyzx, cb0[111].yyyy +if_nz r2.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r19.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r2.y, -r0.z, l(1.000000) + mul r20.xyz, r2.yyyy, r18.xyzx + mad r18.xyz, r19.xyzx, r0.zzzz, r20.xyzx +endif +mul r17.xyz, r3.xyzx, r17.xyzx +mul r17.xyz, r17.xyzx, cb0[111].xxxx +mad r0.z, r2.x, r13.x, r13.y +mul r2.xyz, r0.zzzz, r18.xyzx +mul r2.xyz, r10.xyzx, r2.xyzx +mad r2.xyz, r17.xyzx, r12.xywx, r2.xyzx +mul r6.xyzw, r6.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) +dp4 r10.x, r15.xyzw, r6.xyzw +dp4 r10.y, r14.xyzw, r6.xyzw +dp4 r10.z, r16.xyzw, r6.xyzw +max r6.xyz, r10.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +mul r6.xyz, r6.xyzx, cb0[111].xxxx +mul r6.xyz, r12.xywx, r6.xyzx +max r0.z, r3.y, r3.x +max r0.z, r3.z, r0.z +max r0.z, r0.z, l(0.010000) +div r3.xyz, r3.xyzx, r0.zzzz +mul r3.xyz, r3.xyzx, r6.xyzx +mul r0.z, r4.x, l(0.00787401572) +min r3.w, r5.y, l(1.000000) +bfi r1.z, l(3), l(2), r1.z, l(0) +ftou r2.w, r2.w +bfi r1.z, l(2), l(0), r2.w, r1.z +utof r1.z, r1.z +mul r1.z, r1.z, l(0.0322580636) +mad r0.z, r0.z, r3.w, r1.z +mul r3.xyz, r0.zzzz, r3.xyzx +mad r2.xyz, r3.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000), r2.xyzx +add r1.xyz, r1.xywx, r2.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r7.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r5.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r7.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r11.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[163].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r11.xyzx, -r9.xyzx + add r2.w, r7.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w + mul r3.w, r0.x, r3.z + mad r4.x, r3.w, r2.w, cb0[44].y + mad r2.w, -r3.w, r2.w, r2.w + mul r3.w, r2.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.x, r4.x, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.y, l(5.960464478E-08), |r3.w| + exp r5.z, -r3.w + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r5.y, r5.z, r3.w + add r4.x, r4.x, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r5.y, l(5.960464478E-08), |r2.w| + exp r5.z, -r2.w + add r5.z, -r5.z, l(1.000000) + div r5.z, r5.z, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r5.y, r5.z, r2.w + mul r2.w, r2.w, r4.x + mad r2.w, r5.x, r3.w, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r0.x, r5.w, r0.x + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + max r0.x, r0.x, cb0[161].w + mad_sat r3.zw, r5.wwww, cb0[160].yyyw, cb0[160].xxxz + add r0.x, r0.x, r3.z + add r0.x, r3.w, r0.x + min r0.x, r0.x, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz + mul r3.xy, r0.ywyy, cb0[165].xyxx + mad r0.y, |r4.w|, cb0[164].x, cb0[164].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[164].z + div r3.z, r0.y, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t12.xyzw, s1, l(0.000000) + add r0.y, |r4.w|, -cb0[166].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r0.x, l(1.000000) + mul r4.xyz, r0.yyyy, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r0.x, r0.x, r3.w +else + add r0.y, r7.y, -cb0[44].y + mul r0.w, r0.y, cb0[159].z + mul r0.y, r0.y, cb0[162].x + max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r2.w, cb0[44].y, -cb0[159].x + mul r2.w, r2.w, cb0[159].z + max r2.w, r2.w, l(-127.000000) + exp r2.w, -r2.w + mul r2.w, r2.w, cb0[159].y + lt r3.w, l(5.960464478E-08), |r0.w| + exp r4.x, -r0.w + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r0.w + mad r0.w, -r0.w, l(0.240226507), l(0.693147182) + movc r0.w, r3.w, r4.x, r0.w + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(5.960464478E-08), |r0.y| + exp r4.y, -r0.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.x, r4.y, r0.y + mul r0.y, r0.y, r3.w + mad r0.y, r2.w, r0.w, r0.y + mul r0.y, r5.w, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r4.xy, r5.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.y, r0.y, r4.x + add r0.y, r4.y, r0.y + min r0.x, r0.y, l(1.000000) + add r0.y, -r0.x, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r0.xxxx, r2.xyzx +mad r0.y, r0.z, r0.z, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz +mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r1.w, r2.w, r1.w +mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw +mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r0.yzw, r0.yyzw, r2.xxyz +mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx +mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx +dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) +dp3 r1.w, r8.xyzx, r8.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) +mul r2.x, r1.w, cb0[169].x +mad r1.w, -cb0[169].x, r1.w, l(1.000000) +mul r2.yzw, cb0[168].xxyz, cb0[183].wwww +mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t25.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/ui/ui13_0xFB212B37.ps_5_0.hlsl b/src/games/endfield/ui/ui13_0xFB212B37.ps_5_0.hlsl new file mode 100644 index 0000000000..91725bd193 --- /dev/null +++ b/src/games/endfield/ui/ui13_0xFB212B37.ps_5_0.hlsl @@ -0,0 +1,142 @@ +// ---- Created with 3Dmigoto v1.4.1 on Sun Feb 1 19:44:23 2026 + +#include "../shared.h" + +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[12]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[1]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float4 v1 : TEXCOORD0, + float4 v2 : TEXCOORD1, + float4 v3 : TEXCOORD2, + float4 v4 : TEXCOORD3, + float4 v5 : TEXCOORD4, + out float4 o0 : SV_Target0) +{ + float4 r0,r1,r2; + uint4 bitmask, uiDest; + float4 fDest; + + r0.x = cb0[0].x * 0.00999999978; + r0.y = cmp(r0.x >= -r0.x); + r0.x = frac(abs(r0.x)); + r0.x = r0.y ? r0.x : -r0.x; + r0.y = 4000 * r0.x; + r0.y = floor(r0.y); + r0.y = 25 * r0.y; + r0.z = 8 * v2.y; + r0.z = floor(r0.z); + r0.y = r0.z * 0.125 + r0.y; + r0.y = dot(r0.yy, float2(12.9898005,78.2330017)); + r0.y = sin(r0.y); + r0.y = 43758.5469 * r0.y; + r0.y = frac(r0.y); + r0.y = 24 * r0.y; + r0.x = r0.x * r0.y; + r0.x = 1000 * r0.x; + r0.x = floor(r0.x); + r0.x = r0.x / r0.y; + r0.x = r0.x * 6 + v2.y; + r0.y = max(cb1[10].w, 0.00999999978); + r0.y = 8 * r0.y; + r0.z = r0.x * r0.y; + r0.x = 7 * r0.x; + r0.xz = floor(r0.xz); + r0.x = 0.142857149 * r0.x; + r0.x = dot(r0.xx, float2(12.9898005,78.2330017)); + r0.x = sin(r0.x); + r0.y = r0.z / r0.y; + r0.y = dot(r0.yy, float2(12.9898005,78.2330017)); + r0.y = sin(r0.y); + r0.xy = float2(43758.5469,43758.5469) * r0.xy; + r0.xy = frac(r0.xy); + r0.x = r0.y + r0.x; + r0.x = -1 + r0.x; + r0.y = cmp(0 < r0.x); + r0.z = cmp(r0.x < 0); + r0.x = -cb1[11].x + abs(r0.x); + r0.x = saturate(2.5 * r0.x); + r0.y = (int)-r0.y + (int)r0.z; + r0.y = (int)r0.y; + r0.x = r0.y * r0.x; + r0.x = cb1[11].y * r0.x; + r0.y = ceil(r0.x); + r1.x = 0.100000001 * r0.x; + r0.x = 1 + -r0.y; + r0.y = cmp(0.000000 == cb1[10].w); + r0.x = r0.y ? 1 : r0.x; + r1.yw = float2(0,0); + r0.yz = saturate(v2.xy + r1.xy); + r1.x = v2.y; + r1.y = cb0[0].x; + r0.w = dot(r1.xy, float2(12.9898005,78.2330017)); + r0.w = sin(r0.w); + r0.w = 43758.5469 * r0.w; + r0.w = frac(r0.w); + r0.w = r0.w * 2 + -1; + r1.x = cmp(abs(r0.w) >= cb1[11].z); + r1.x = r1.x ? 1.000000 : 0; + r1.x = cb1[11].w * r1.x; + r1.z = r1.x * r0.w; + r0.yz = r0.yz + r1.zw; + r0.yz = frac(r0.yz); + r1.xy = v2.xy + -r0.yz; + r0.xy = r0.xx * r1.xy + r0.yz; + r0.xyzw = t0.Sample(s0_s, r0.xy).xyzw; + r1.x = cmp(0.000000 != cb1[10].z); + r0.w = r1.x ? 1 : r0.w; + r0.xyzw = cb1[3].xyzw + r0.xyzw; + r1.x = 255 * v1.w; + r1.x = round(r1.x); + r1.w = 0.00392156886 * r1.x; + r1.xyz = v1.xyz; + r0.xyzw = r1.xyzw * r0.xyzw; + r1.xy = cb1[4].zw + -cb1[4].xy; + r1.xy = -abs(v4.xy) + r1.xy; + r1.xy = saturate(v4.zw * r1.xy); + r1.x = r1.x * r1.y; + r0.w = r1.x * r0.w; + r1.xyzw = max(cb1[4].xyzw, float4(-2e+10,-2e+10,-2e+10,-2e+10)); + r1.xyzw = min(float4(2e+10,2e+10,2e+10,2e+10), r1.xyzw); + r2.xy = v4.xy + r1.xy; + r2.xy = r2.xy + r1.zw; + r1.xy = r2.xy * float2(0.5,0.5) + -r1.xy; + r1.zw = -r2.xy * float2(0.5,0.5) + r1.zw; + r2.xyzw = float4(1,1,1,1) / cb1[8].xzyw; + r1.xyzw = saturate(r2.xzyw * r1.xyzw); + r2.xy = r1.xy * float2(-2,-2) + float2(3,3); + r1.xy = r1.xy * r1.xy; + r1.xy = r2.xy * r1.xy; + r2.xy = r1.zw * float2(-2,-2) + float2(3,3); + r1.zw = r1.zw * r1.zw; + r1.zw = r2.xy * r1.zw; + r1.x = r1.x * r1.z; + r1.x = r1.x * r1.y; + r1.x = r1.x * r1.w; + r0.w = r1.x * r0.w; + o0.xyz = r0.xyz * r0.www; + o0.w = cb1[9].z * -r0.w + r0.w; + + if (UI_VISIBILITY < 0.5f) o0 = 0; + + return; +} \ No newline at end of file diff --git a/src/games/endfield/ui/uid_0x6B8E9049.ps_5_0.hlsl b/src/games/endfield/ui/uid_0x6B8E9049.ps_5_0.hlsl index cedf2abf52..6507086401 100644 --- a/src/games/endfield/ui/uid_0x6B8E9049.ps_5_0.hlsl +++ b/src/games/endfield/ui/uid_0x6B8E9049.ps_5_0.hlsl @@ -78,8 +78,7 @@ void main( r0.x = 1 + -r0.x; r0.xyzw = r2.xyzw * r0.xxxx; o0.xyzw = v1.wwww * r0.xyzw; - - // UI visibility toggle (heuristic-based ping/UID hiding is handled by on_draw callbacks) + if (UI_VISIBILITY < 0.5f) { o0 = 0; } From 06e1bbc451c90274c4bc1ef359e6c3f877e539e4 Mon Sep 17 00:00:00 2001 From: spiwar <92001312+spiwar@users.noreply.github.com> Date: Sun, 1 Feb 2026 23:16:06 -0700 Subject: [PATCH 09/40] fix(endfield): change default white clip to 65.f --- src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl | 2 +- src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl index cb4f105ff0..76fba7310c 100644 --- a/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl @@ -225,7 +225,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl index 0b71772291..30d139f79a 100644 --- a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl @@ -253,7 +253,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl index 456684e8e1..7cc9546d25 100644 --- a/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl @@ -192,7 +192,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl index 933e10242f..743eabf6b4 100644 --- a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl @@ -263,7 +263,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl index 69b6c57dcc..48dd70fd0b 100644 --- a/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl @@ -207,7 +207,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl index ac3ea9efae..770a60c0ed 100644 --- a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl @@ -297,7 +297,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl index ba1649e85e..ddf8e6571f 100644 --- a/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl @@ -204,7 +204,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl index 62a0d96c47..6e1aa5df1e 100644 --- a/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl @@ -234,7 +234,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl index 1d01934cfa..46ed1b3db9 100644 --- a/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl @@ -209,7 +209,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl index 2f1a823427..fe612e4990 100644 --- a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl @@ -318,7 +318,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl index 17c70cb722..54afc1b0f7 100644 --- a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl @@ -195,7 +195,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl index 541c0165db..69596eab87 100644 --- a/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl @@ -250,7 +250,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl index 1a8d342f42..46eeac4a2e 100644 --- a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl @@ -271,7 +271,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl index 116477eca6..b06e852846 100644 --- a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl @@ -179,7 +179,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl index 33404169f5..1caed954e8 100644 --- a/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl @@ -219,7 +219,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl index 4f1d353c57..ae8b8d2472 100644 --- a/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl @@ -154,7 +154,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl index 85ae862dab..8deb6a674d 100644 --- a/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl @@ -156,7 +156,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl index 470836b4b7..3aefbecaac 100644 --- a/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl @@ -176,7 +176,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl index 4e8a53fceb..897dd371db 100644 --- a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl @@ -264,7 +264,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl index ae3724137b..61ed70f1a6 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl @@ -109,7 +109,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl index 2120a00472..b6bfa9ca5d 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl @@ -231,7 +231,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl index 2f105ee846..6ebba85a66 100644 --- a/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl @@ -169,7 +169,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl index 1ea2d938d4..a1e1682af9 100644 --- a/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl @@ -185,7 +185,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl index 9e8ff513a0..ed87501a65 100644 --- a/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl @@ -234,7 +234,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl index 8138b25aca..206cbea6e2 100644 --- a/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl @@ -93,7 +93,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl index f8f3fd2938..3844e7feda 100644 --- a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl @@ -189,7 +189,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { diff --git a/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl index b82b2ea78b..806262a93f 100644 --- a/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl @@ -128,7 +128,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } // Apply vignette after tonemapping diff --git a/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl index 69a5e03025..82cca59361 100644 --- a/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl @@ -126,7 +126,7 @@ void main( float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 50.f); + o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( From d9d2fd4a4a174fb0654de0665fb9fd67a03a2467 Mon Sep 17 00:00:00 2001 From: SGTForgery Date: Wed, 4 Feb 2026 05:57:42 +0000 Subject: [PATCH 10/40] feat(endfield): Added cubemap luminance, glass transparency, AO toggle, fixed contact shadow edge fading --- src/games/endfield/addon.cpp | 240 ++- .../endfield/ao-blur_0x80CD64F6.cs_5_0.hlsl | 71 + .../endfield/deferred-lighting/0x0E84DFD1.cso | Bin 59992 -> 60116 bytes .../deferred-lighting/0x0E84DFD1.ps_5_0.asm | 9 +- .../endfield/deferred-lighting/0x1E8A471E.cso | Bin 47020 -> 47144 bytes .../deferred-lighting/0x1E8A471E.ps_5_0.asm | 9 +- .../endfield/deferred-lighting/0x7010AF4B.cso | Bin 27140 -> 27264 bytes .../deferred-lighting/0x7010AF4B.ps_5_0.asm | 9 +- .../endfield/deferred-lighting/0x8BA3C806.cso | Bin 48028 -> 48152 bytes .../deferred-lighting/0x8BA3C806.ps_5_0.asm | 9 +- .../endfield/deferred-lighting/0x99725481.cso | Bin 60512 -> 60636 bytes .../deferred-lighting/0x99725481.ps_5_0.asm | 9 +- .../endfield/deferred-lighting/0xA4113DE8.cso | Bin 39092 -> 39216 bytes .../deferred-lighting/0xA4113DE8.ps_5_0.asm | 9 +- .../endfield/deferred-lighting/0xD88CD7C9.cso | Bin 26132 -> 26256 bytes .../deferred-lighting/0xD88CD7C9.ps_5_0.asm | 9 +- .../endfield/glass/0xB317E9E1.ps_5_0.hlsl | 1807 +++++++++++++++++ .../cloud-shadows_0x61FA72DD.ps_5_0.hlsl | 14 +- .../grass-shadowing_0x0C02AB31.cs_5_0.hlsl | 16 +- src/games/endfield/shared.h | 10 +- src/games/endfield/ssr/0xE92EE541.cs_5_0.hlsl | 465 +++++ .../ui/latencybar_0x9BDC181F.vs_5_0.hlsl | 148 ++ 22 files changed, 2793 insertions(+), 41 deletions(-) create mode 100644 src/games/endfield/ao-blur_0x80CD64F6.cs_5_0.hlsl create mode 100644 src/games/endfield/glass/0xB317E9E1.ps_5_0.hlsl create mode 100644 src/games/endfield/ssr/0xE92EE541.cs_5_0.hlsl create mode 100644 src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 9d44b0be0f..e98c0a6d70 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -8,6 +8,7 @@ #define DEBUG_LEVEL_0 #include +#include #include #include @@ -44,6 +45,85 @@ bool UsingSwapchainUtil() { || UsingSwapchainUpgrade()); } +// Helper to update resolution-based uniform variables in ReShade effects +void UpdateReshadeResolutionUniforms(reshade::api::effect_runtime* runtime, uint32_t width, uint32_t height) { + float fwidth = static_cast(width); + float fheight = static_cast(height); + + // Enumerate all uniform variables and update those with resolution-related source annotations + runtime->enumerate_uniform_variables(nullptr, [fwidth, fheight](reshade::api::effect_runtime* rt, reshade::api::effect_uniform_variable variable) { + char source[64] = {}; + if (rt->get_annotation_string_from_uniform_variable(variable, "source", source)) { + // Update BUFFER_WIDTH uniform + if (std::strcmp(source, "bufwidth") == 0) { + rt->set_uniform_value_float(variable, fwidth); + } + // Update BUFFER_HEIGHT uniform + else if (std::strcmp(source, "bufheight") == 0) { + rt->set_uniform_value_float(variable, fheight); + } + // Update reciprocal width (1.0 / BUFFER_WIDTH) + else if (std::strcmp(source, "rcpwidth") == 0 || std::strcmp(source, "bufwidth_rcp") == 0) { + rt->set_uniform_value_float(variable, 1.0f / fwidth); + } + // Update reciprocal height (1.0 / BUFFER_HEIGHT) + else if (std::strcmp(source, "rcpheight") == 0 || std::strcmp(source, "bufheight_rcp") == 0) { + rt->set_uniform_value_float(variable, 1.0f / fheight); + } + // Update BUFFER_RCP_WIDTH (alternative naming convention) + else if (std::strcmp(source, "buffer_rcp_width") == 0) { + rt->set_uniform_value_float(variable, 1.0f / fwidth); + } + // Update BUFFER_RCP_HEIGHT (alternative naming convention) + else if (std::strcmp(source, "buffer_rcp_height") == 0) { + rt->set_uniform_value_float(variable, 1.0f / fheight); + } + // Update pixel size (float2 with 1/width, 1/height) + else if (std::strcmp(source, "pixelsize") == 0) { + float pixel_size[2] = { 1.0f / fwidth, 1.0f / fheight }; + rt->set_uniform_value_float(variable, pixel_size, 2); + } + // Update screen size (float2 with width, height) + else if (std::strcmp(source, "screensize") == 0) { + float screen_size[2] = { fwidth, fheight }; + rt->set_uniform_value_float(variable, screen_size, 2); + } + } + }); +} + +// Track the last known RTV resolution to detect resolution changes +static uint32_t last_rtv_width = 0; +static uint32_t last_rtv_height = 0; + +// Flag to track if we're currently executing our bypass render +// This prevents ReShade from rendering during normal present while allowing our bypass to work +static bool bypass_render_active = false; + +// Callback to disable effects during normal present when bypass is enabled +// This prevents double-rendering (once via bypass, once via normal present) +void OnReshadeBeginEffects(reshade::api::effect_runtime* runtime, + reshade::api::command_list* cmd_list, + reshade::api::resource_view rtv, + reshade::api::resource_view rtv_srgb) { + // Only intercept if bypass is enabled AND we're not currently in bypass render + // When bypass is disabled (current_render_reshade_before_ui == 0), let ReShade render normally + if (current_render_reshade_before_ui != 0.f && !bypass_render_active) { + runtime->set_effects_state(false); + } +} + +// Callback to re-enable effects after present (keeps effects available for bypass) +void OnReshadeFinishEffects(reshade::api::effect_runtime* runtime, + reshade::api::command_list* cmd_list, + reshade::api::resource_view rtv, + reshade::api::resource_view rtv_srgb) { + // Only re-enable if bypass is enabled AND we disabled them + if (current_render_reshade_before_ui != 0.f && !bypass_render_active) { + runtime->set_effects_state(true); + } +} + bool ExecuteReshadeEffects(reshade::api::command_list* cmd_list) { if (current_render_reshade_before_ui == 0.f) return true; if (!UsingSwapchainUtil()) return true; @@ -52,42 +132,65 @@ bool ExecuteReshadeEffects(reshade::api::command_list* cmd_list) { if (cmd_list_data == nullptr) return true; if (cmd_list_data->current_render_targets.empty()) return true; + // Get the ORIGINAL RTV from deferred lighting - do NOT use the clone here + // The clone is at swapchain resolution (e.g., 3840x2160) but we want to render + // ReShade effects at the pre-upscale resolution auto rtv0 = cmd_list_data->current_render_targets[0]; if (rtv0.handle == 0) return true; - if (UsingSwapchainUpgrade()) { - auto* info = renodx::utils::resource::GetResourceViewInfo(rtv0); - if (info->clone.handle != 0u) { - rtv0 = info->clone; - } - } - - auto* data = renodx::utils::data::Get(cmd_list->get_device()); + auto* device = cmd_list->get_device(); + auto* data = renodx::utils::data::Get(device); if (data == nullptr) return true; + + // Get the render target resolution + auto resource = device->get_resource_from_view(rtv0); + auto resource_desc = device->get_resource_desc(resource); + uint32_t rtv_width = resource_desc.texture.width; + uint32_t rtv_height = resource_desc.texture.height; + const std::shared_lock lock(data->mutex); for (auto* runtime : data->effect_runtimes) { + if (rtv_width != last_rtv_width || rtv_height != last_rtv_height) { + uint32_t swapchain_width = 0, swapchain_height = 0; + runtime->get_screenshot_width_and_height(&swapchain_width, &swapchain_height); + + std::stringstream ss; + ss << "[Endfield] ExecuteReshadeEffects: Rendering at RTV=" << rtv_width << "x" << rtv_height + << " (Swapchain=" << swapchain_width << "x" << swapchain_height << ")"; + reshade::log::message(reshade::log::level::info, ss.str().c_str()); + + last_rtv_width = rtv_width; + last_rtv_height = rtv_height; + } + + UpdateReshadeResolutionUniforms(runtime, rtv_width, rtv_height); + bypass_render_active = true; + runtime->set_effects_state(true); runtime->render_effects(cmd_list, rtv0, rtv0); + bypass_render_active = false; } return true; } -// Hotkey state tracking (defined before settings array for use in on_draw lambdas) +// Hotkey state tracking bool ui_toggle_key_was_pressed = false; int ui_toggle_hotkey = 0; bool hotkey_input_active = false; -// Heuristic tracking for ping/UID UI +// Heuristic tracking for UID UI bool is_ping_input_candidate = false; bool is_ping_drawn = false; bool is_uid_input_candidate = false; +uint32_t draw_call_vertex_count = 0; // Track vertex count from draw calls (not draw_indexed) // on_draw callback for ping/latency bar shader (0xEF07F89A) +// Only used to set is_ping_drawn flag for UID detection - latency bar icon hiding is done in vertex shader bool OnPingDraw(reshade::api::command_list* cmd_list) { if (is_ping_input_candidate) { is_ping_drawn = true; - return shader_injection.ping_text_opacity >= 0.5f; + } else { + is_ping_drawn = false; } - is_ping_drawn = false; return true; } @@ -655,6 +758,16 @@ renodx::utils::settings::Settings settings = { .tooltip = "Executes ReShade effects before UI is drawn.", .labels = {"Off", "On"}, }, + new renodx::utils::settings::Setting{ + .key = "DisableGameAO", + .binding = &shader_injection.disable_game_ao, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 0.f, + .label = "Disable Game GTAO", + .section = "Effects", + .tooltip = "Disables the game's built-in GTAO (Ground Truth Ambient Occlusion).\nUseful when using ReShade-based AO instead.", + .labels = {"Off", "On"}, + }, new renodx::utils::settings::Setting{ .key = "HDRSun", .binding = &shader_injection.sun_intensity, @@ -696,6 +809,37 @@ renodx::utils::settings::Settings settings = { .tooltip = "Toggles alternative hue-preserving fog", .labels = {"Original", "Alt"}, }, + new renodx::utils::settings::Setting{ + .key = "MetallicIBLIntensity", + .binding = &shader_injection.metallic_ibl_intensity, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 0.f, + .label = "Metallic IBL Intensity", + .section = "Rendering Improvements", + .tooltip = "Controls image-based lighting intensity on metallic surfaces", + .labels = {"Vanilla", "Alt"}, + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "CubemapAmbientLink", + .binding = &shader_injection.cubemap_ambient_link, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 1.f, + .label = "Cubemap Ambient Link", + .section = "Rendering Improvements", + .tooltip = "Modulates cubemap reflections by ambient luminance", + .labels = {"Off", "On"}, + }, + new renodx::utils::settings::Setting{ + .key = "GlassTransparency", + .binding = &shader_injection.glass_transparency, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 1.f, + .label = "Glass Transparency", + .section = "Rendering Improvements", + .tooltip = "Improves glass rendering to look more transparent and less cloudy/glowing", + .labels = {"Vanilla", "Improved"}, + }, new renodx::utils::settings::Setting{ .key = "SwapChainCustomColorSpace", .binding = &shader_injection.swap_chain_custom_color_space, @@ -835,6 +979,17 @@ void OnPresetOff() { // renodx::utils::settings::UpdateSetting("colorGradeLUTScaling", 0.f); } +// OnDraw handler to track vertex count from draw calls +bool OnDraw( + reshade::api::command_list* cmd_list, + uint32_t vertex_count, + uint32_t instance_count, + uint32_t first_vertex, + uint32_t first_instance) { + draw_call_vertex_count = vertex_count; + return false; +} + // OnDrawIndexed event handler for heuristic-based ping/UID detection bool OnDrawIndexed( reshade::api::command_list* cmd_list, @@ -843,13 +998,34 @@ bool OnDrawIndexed( uint32_t first_index, int32_t vertex_offset, uint32_t first_instance) { - // Detect ping/latency bar: drawn with index_count=18, first_index=0, vertex_offset=0 - is_ping_input_candidate = ((index_count == 18) && (first_index == 0) && (vertex_offset == 0)); + // Constants for ping/latency bar detection + constexpr uint32_t PING_INDEX_COUNT = 18; + constexpr uint32_t PING_FIRST_INDEX = 0; + constexpr int32_t PING_VERTEX_OFFSET = 0; + + // Detect ping/latency bar + // This distinguishes it from menu backgrounds that also have 18 indices but have a preceding draw + is_ping_input_candidate = (index_count == PING_INDEX_COUNT) && + (first_index == PING_FIRST_INDEX) && + (vertex_offset == PING_VERTEX_OFFSET) && + (draw_call_vertex_count == 0); + + // Constants for UID text detection + constexpr uint32_t UID_FIRST_INDEX = 18; + constexpr uint32_t UID_MIN_INDEX_COUNT = 100; + constexpr int32_t UID_VERTEX_OFFSET = 12; + + // Detect UID text: drawn right after ping with specific parameters + // Use is_ping_drawn (set by OnPingDraw) since ping shader draws before UID shader + is_uid_input_candidate = (first_index == UID_FIRST_INDEX) && + (index_count > UID_MIN_INDEX_COUNT) && + (vertex_offset == UID_VERTEX_OFFSET) && + is_ping_drawn; - // Detect UID text: drawn right after ping (first_index=18) when ping was drawn - is_uid_input_candidate = ((first_index == 18) && is_ping_drawn); + // Reset vertex count after processing + draw_call_vertex_count = 0; - return false; // Don't skip the draw call + return false; } void OnPresent(reshade::api::command_queue* queue, @@ -867,6 +1043,7 @@ void OnPresent(reshade::api::command_queue* queue, is_ping_input_candidate = false; is_uid_input_candidate = false; is_ping_drawn = false; + draw_call_vertex_count = 0; // Check UI visibility hotkey (skip if user is currently setting a new hotkey) if (ui_toggle_hotkey != 0 && !hotkey_input_active) { @@ -990,6 +1167,10 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { shader_injection.custom_flip_uv_y = 0.f; } reshade::register_event(OnPresent); + // Register callbacks to ALWAYS disable ReShade during normal present + // This ensures ReShade only ever renders at internal resolution via bypass + reshade::register_event(OnReshadeBeginEffects); + reshade::register_event(OnReshadeFinishEffects); settings.push_back(setting); } @@ -1067,6 +1248,20 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { }); */ const uint32_t target_crcs[] = { + // Enviroment deferred (doesnt apply to grass/foliage) + /* + 0xD88CD7C9u, + 0x1E8A471Eu, + 0x8BA3C806u, + 0x7010AF4Bu, + 0x0E84DFD1u, + 0x99725481u, + 0xA4113DE8u, + }; + */ + + // grass/foliage deferred (grass, plants, trees will be included in AO) + 0x37837806u, 0xD3FA93FCu, 0x620A40FDu, @@ -1074,8 +1269,10 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { 0xB094C87Eu, 0xF901F0ECu, 0x518D3855u, - }; + 0xBD99F0C4u, + }; + // Uberpost /* 0x00C16AFBu, 0x039C28DAu, @@ -1107,6 +1304,7 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { 0xF8FA587Fu, */ + for (uint32_t crc : target_crcs) { // Ensure an entry exists for the shader hash even if we don't have compiled HLSL auto it = custom_shaders.find(crc); @@ -1136,7 +1334,8 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { } } - // Register draw_indexed event for heuristic ping/UID detection + // Register draw and draw_indexed events for heuristic ping/UID detection + reshade::register_event(OnDraw); reshade::register_event(OnDrawIndexed); initialized = true; @@ -1144,8 +1343,11 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { break; case DLL_PROCESS_DETACH: + reshade::unregister_event(OnDraw); reshade::unregister_event(OnDrawIndexed); reshade::unregister_event(OnPresent); + reshade::unregister_event(OnReshadeBeginEffects); + reshade::unregister_event(OnReshadeFinishEffects); reshade::unregister_addon(h_module); break; } diff --git a/src/games/endfield/ao-blur_0x80CD64F6.cs_5_0.hlsl b/src/games/endfield/ao-blur_0x80CD64F6.cs_5_0.hlsl new file mode 100644 index 0000000000..9f1054fe89 --- /dev/null +++ b/src/games/endfield/ao-blur_0x80CD64F6.cs_5_0.hlsl @@ -0,0 +1,71 @@ +// AO Blur Shader with toggle - Replacement for 0x80CD64F6 +// When disable_game_ao is enabled, outputs 1.0 (no occlusion) +// Otherwise runs normal blur + +#include "./shared.h" + +Texture2D t2 : register(t2); +Texture2D t1 : register(t1); +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb0 : register(b0) { + float4 cb0[4]; +} + +RWTexture2D u0 : register(u0); + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) { + // If game AO is disabled, just write 1.0 (no occlusion) + if (shader_injection.disable_game_ao >= 0.5f) { + u0[vThreadID.xy] = 1.0; + return; + } + + // Original ao-blur logic + float2 r0xy = float2(vThreadID.xy) + float2(0.5, 0.5); + float2 r0zw = cb0[3].zw * r0xy; + + float r1x = t1.SampleLevel(s0_s, r0zw, 0).z; + r1x = 1.0 - r1x; + r1x = saturate(r1x + r1x); + + float r1y = t0.SampleLevel(s0_s, r0zw, 0).x; + float r1z = cb0[3].z; + + float2 r2; + r2.y = 0; + + float3 r3 = float3(-3, 0, 0); + + [loop] + while (true) { + if (3 < r3.x) break; + + float r1w = r3.x * r1z; + r2.x = r1w * r1x; + float2 r2zw = r2.xy * cb0[3].zw + r0zw; + + r1w = t0.SampleLevel(s0_s, r2zw, 0).x; + r1w = r1w - r1y; + r1w = min(1.0, abs(r1w)); + r1w = 1.0 - r1w; + + float3 r4; + r4.x = r3.y + r1w; + + float2 r2xz = r0xy * cb0[3].zw + r2.xy; + float r2x_sample = t2.SampleLevel(s0_s, r2xz, 0).x; + r4.y = r2x_sample * r1w + r3.z; + r4.z = 1.0 + r3.x; + + r3 = r4.zxy; + } + + float result = max(9.99999975e-05, r3.y); + result = r3.z / result; + + u0[vThreadID.xy] = result; +} diff --git a/src/games/endfield/deferred-lighting/0x0E84DFD1.cso b/src/games/endfield/deferred-lighting/0x0E84DFD1.cso index 3be72fa0c524b9bba3a836d68adab5596d6f412d..bfdbc5a283965666e403caaf74dd2f10037c18b2 100644 GIT binary patch delta 164 zcmca{h55==W=WR_CugBQI)avGEVA^&Rg=G!Gp%K0U|_g1QF1Y-$SVeh03fGz<56oy zM!wCAO!0>}Re=Ir3<3;Hn?sLO@msN2H7GFf0>wbsgn@y*2`C3rV+Exd9e^AlFh-Y~ fe9>E2f(a<&#soACNPpvp=oDpOVBCD>a*r4QaGM{M delta 66 zcmca|mHEaMW=WR_Cuh!*r9MKzhHsdHwQr?-T78|7fq@}nqU2)E87~6@ah_0|R>#g8+jvkZlE}86AKeATUOk jo6NgFT*Qq@fPon(`;8x>OO%0uaq^Pyhe` dyRpS90RauO@c}=NvqX_^50j$_6|*p*_!b9a90ULW diff --git a/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm index 6da5862a3e..47ef11916f 100644 --- a/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm @@ -37,7 +37,7 @@ dcl_constantbuffer CB3[2054], dynamicIndexed dcl_constantbuffer CB4[401], dynamicIndexed dcl_constantbuffer CB5[160], dynamicIndexed dcl_constantbuffer CB6[4], immediateIndexed -dcl_constantbuffer CB13[13], immediateIndexed +dcl_constantbuffer CB13[14], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -1210,6 +1210,7 @@ and r1.x, r1.y, r1.x and r1.x, r1.x, r2.z mul r15.xyz, r4.xyzx, cb0[111].xxxx dp3 r1.y, r15.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r35.w, r1.y // Store ambient luminance for cubemap modulation mov r5.w, l(1.000000) mov r3.w, l(1.000000) mov r15.xyz, l(0,0,0,0) @@ -1342,6 +1343,12 @@ if_nz r7.w endif mul r3.xyz, r15.xyzx, cb0[112].zzzz mul r3.xyz, r3.xyzx, cb0[111].yyyy +// Cubemap ambient link modulation (cb13[13].w) +if_nz cb13[13].w + max r35.w, r35.w, l(0.000000) // saturate step 1 + min r35.w, r35.w, l(1.000000) // saturate step 2 + mul r3.xyz, r3.xyzx, r35.wwww // cubemap *= saturate(ambient_luminance) +endif if_nz r4.w sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x diff --git a/src/games/endfield/deferred-lighting/0x7010AF4B.cso b/src/games/endfield/deferred-lighting/0x7010AF4B.cso index 849917eb70e6f4148116f248d1ba84b739d24fdc..00e90042e5145ce2d7bb3eaa65bd21e6f112b36b 100644 GIT binary patch delta 172 zcmZp3_S#X#7Efq}gVCh5#V%+Qy^W zjEsDnKQj9FPv)`XU}W5EIihfq~)9M9IZmGH)0d0)QNL>y5{( z7#aCCGcuJQ;#32Qa4`rlFm28~QpIn@V%4C)zzY-uVH2R@CZHThjTMw;bO3UIz!+U_ f@d`@wofE9xP1JmY%1y%fVELIH)47@-w5H?|8U~dA-!PJOP4&)U!f%AYW j7#)BFLxa5qP-PLw6d=!y2||D4hv*aqD%)()P$K~VALAi5 delta 74 zcmdn6iD}D5CMlN)Cua*+R@1_5b{6S2Ob@zLt>hRP7#Oz9m?*V~>&tWoh5#V%uj<5O eNsPRkH5nJ@Z+=ja&(FlHH96K>ee;8c00{t!uNcb! diff --git a/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm index 4c47fa4068..461d62fd02 100644 --- a/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm @@ -25,7 +25,7 @@ dcl_constantbuffer CB1[259], dynamicIndexed dcl_constantbuffer CB2[5], immediateIndexed dcl_constantbuffer CB3[5], immediateIndexed dcl_constantbuffer CB4[4], immediateIndexed -dcl_constantbuffer CB13[13], immediateIndexed +dcl_constantbuffer CB13[14], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -958,6 +958,7 @@ and r2.w, r2.w, r3.y and r1.y, r1.y, r2.w mul r15.xyz, r17.xyzx, cb0[111].xxxx dp3 r2.w, r15.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r23.w, r2.w // Store ambient luminance for cubemap modulation mov r5.w, l(1.000000) mov r12.w, l(1.000000) mov r15.xyz, l(0,0,0,0) @@ -1090,6 +1091,12 @@ if_nz r4.w endif mul r2.xyz, r15.xyzx, cb0[112].zzzz mul r2.xyz, r2.xyzx, cb0[111].yyyy +// Cubemap ambient link modulation (cb13[13].w) +if_nz cb13[13].w + max r23.w, r23.w, l(0.000000) // saturate step 1 + min r23.w, r23.w, l(1.000000) // saturate step 2 + mul r2.xyz, r2.xyzx, r23.wwww // cubemap *= saturate(ambient_luminance) +endif if_nz r3.z sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x sample_b_indexable(texture2d)(float,float,float,float) r12.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x diff --git a/src/games/endfield/deferred-lighting/0xD88CD7C9.cso b/src/games/endfield/deferred-lighting/0xD88CD7C9.cso index 1b1a4f927eedc448aff36428c96821d0811308c3..b519a48d687c47be52c68c7ae3ec5ede4839d69f 100644 GIT binary patch delta 172 zcmbPohH=7KMoE_lC+G6q^^devT9|vkls~QfASBGlz`!tJqU2)E3#kkY0YFa4#G}EC ze48a1>+LwjfP5(i0S3m+z4lf7RxDNx3JknJF%ULkU|??o%7N5aL1{(@AO{GH(d8x^ nN(sv{17+Np1Q t18 : register(t18); + +Texture3D t17 : register(t17); + +Texture3D t16 : register(t16); + +Texture3D t15 : register(t15); + +Texture3D t14 : register(t14); + +Texture3D t13 : register(t13); + +Texture3D t12 : register(t12); + +Texture3D t11 : register(t11); + +Texture2D t10 : register(t10); + +Texture2D t9 : register(t9); + +Texture2D t8 : register(t8); + +Texture2D t7 : register(t7); + +Texture2D t6 : register(t6); + +Texture2D t5 : register(t5); + +Texture2D t4 : register(t4); + +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2DArray t1 : register(t1); + +struct t0_t { + float val[1]; +}; +StructuredBuffer t0 : register(t0); + +SamplerState s6_s : register(s6); + +SamplerState s5_s : register(s5); + +SamplerState s4_s : register(s4); + +SamplerComparisonState s3_s : register(s3); + +SamplerState s2_s : register(s2); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb7 : register(b7) +{ + float4 cb7[160]; +} + +cbuffer cb6 : register(b6) +{ + float4 cb6[715]; +} + +cbuffer cb5 : register(b5) +{ + float4 cb5[2054]; +} + +cbuffer cb4 : register(b4) +{ + float4 cb4[3]; +} + +cbuffer cb3 : register(b3) +{ + float4 cb3[259]; +} + +cbuffer cb2 : register(b2) +{ + float4 cb2[20]; +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[4085]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[244]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float2 v1 : TEXCOORD0, + float2 w1 : TEXCOORD1, + float4 v2 : TEXCOORD2, + float4 v3 : TEXCOORD3, + float4 v4 : TEXCOORD4, + float4 v5 : TEXCOORD5, + float4 v6 : TEXCOORD6, + nointerpolation uint v7 : TEXCOORD7, + uint v8 : SV_IsFrontFace0, + out float4 o0 : SV_Target0, + out float4 o1 : SV_Target1) +{ + const float4 icb[] = { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} }; + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r26,r27,r28,r29,r30,r31,r32,r33,r34,r35; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xy = cb0[82].zw * v0.xy; + r0.xy = r0.xy * float2(2,2) + float2(-1,-1); + r1.xyzw = cb0[25].xyzw * -r0.yyyy; + r0.xyzw = cb0[24].xyzw * r0.xxxx + r1.xyzw; + r0.xyzw = cb0[26].xyzw * v0.zzzz + r0.xyzw; + r0.xyzw = cb0[27].xyzw + r0.xyzw; + r0.xyz = r0.xyz / r0.www; + r1.x = cmp(0 < v3.w); + r1.x = r1.x ? 1 : -1; + r1.y = cmp(0.000000 == cb0[86].w); + r2.xyz = cb0[44].xyz + -r0.xyz; + r3.x = cb0[0].z; + r3.y = cb0[1].z; + r3.z = cb0[2].z; + r1.yzw = r1.yyy ? r2.xyz : r3.xyz; + r2.x = dot(r1.yzw, r1.yzw); + r2.y = max(9.99999994e-09, r2.x); + r2.y = rsqrt(r2.y); + r4.xyz = r2.yyy * r1.yzw; + r2.x = r2.x * r2.y; + r2.zw = w1.xy + -v1.xy; + r5.xy = cb2[3].xx * r2.zw + v1.xy; + r5.xy = r5.xy * cb2[12].xy + cb2[12].zw; + r2.zw = cb2[2].ww * r2.zw + v1.xy; + r2.zw = r2.zw * cb2[11].xy + cb2[11].zw; + r6.xyzw = t2.SampleBias(s4_s, r2.zw, cb0[108].x).xyzw; + r2.z = cb2[3].y + cb0[108].x; + r7.xyz = t3.SampleBias(s5_s, r5.xy, r2.z).xyw; + r7.x = r7.z * r7.x; + r2.zw = r7.xy * float2(2,2) + float2(-1,-1); + r5.zw = cb2[0].xx * r2.zw; + r7.xyz = t4.SampleBias(s6_s, r5.xy, cb0[108].x).xyz; + r6.xyzw = cb2[8].xyzw * r6.xyzw; + r6.xyz = saturate(cb2[4].zzz * r6.xyz); + r8.xyz = cb2[8].xyz + -r6.xyz; + r6.xyz = cb2[4].xxx * r8.xyz + r6.xyz; + r3.w = r6.w * v4.x + -r6.w; + r8.w = cb2[19].x * r3.w + r6.w; + r3.w = cb2[0].w + -cb2[0].z; + r9.w = r7.y * r3.w + cb2[0].z; + r3.w = saturate(cb2[3].w + -1); + r4.w = cb2[4].y + -r7.x; + r3.w = r3.w * r4.w + r7.x; + r7.xyw = v3.yzx * v2.zxy; + r7.xyw = v2.yzx * v3.zxy + -r7.xyw; + r7.xyw = r7.xyw * r1.xxx; + r5.xyw = r7.xyw * r5.www; + r5.xyz = v3.xyz * r5.zzz + r5.xyw; + r1.x = dot(r2.zw, r2.zw); + r1.x = min(1, r1.x); + r1.x = 1 + -r1.x; + r1.x = sqrt(r1.x); + r1.x = max(1.00000002e-16, r1.x); + r2.z = cmp(0 < cb2[1].w); + r2.z = r2.z ? -1 : 1; + r2.z = v8.x ? 1 : r2.z; + r1.x = r2.z * r1.x; + r5.xyz = v2.xyz * r1.xxx + r5.xyz; + r1.x = dot(r5.xyz, r5.xyz); + r1.x = rsqrt(r1.x); + r5.xyz = r5.xyz * r1.xxx; + r1.x = max(9.99999994e-09, v5.z); + r2.zw = v5.xy / r1.xx; + r1.x = max(9.99999994e-09, v6.z); + r7.xy = v6.xy / r1.xx; + r10.xy = -r7.xy + r2.zw; + r1.x = cb2[0].y * 0.0799999982; + r7.xyw = -r6.xyz * r3.www + r6.xyz; + r1.x = -r1.x * r3.w + r1.x; + r6.xyz = r6.xyz * r3.www + r1.xxx; + r1.x = dot(r5.xyz, r4.xyz); + r11.xyzw = r9.wwww * float4(-1,-0.0274999999,-0.572000027,0.0219999999) + float4(1,0.0425000004,1.03999996,-0.0399999991); + r2.z = r11.x * r11.x; + r1.x = max(0, r1.x); + r2.w = -9.27999973 * r1.x; + r2.w = exp2(r2.w); + r2.z = min(r2.z, r2.w); + r2.z = r2.z * r11.x + r11.y; + r2.zw = r2.zz * float2(-1.03999996,1.03999996) + r11.zw; + r3.w = cmp(1.000000 == cb0[113].y); + r11.xyzw = cb0[241].xyzw * r0.yyyy; + r11.xyzw = cb0[240].xyzw * r0.xxxx + r11.xyzw; + r11.xyzw = cb0[242].xyzw * r0.zzzz + r11.xyzw; + r11.xyzw = cb0[243].xyzw + r11.xyzw; + r4.w = 1 / r11.w; + r11.xyz = float3(1,-1,1) * r11.xyz; + r11.xyz = r11.xyz * r4.www; + r11.xy = saturate(r11.xy * float2(0.5,0.5) + float2(0.5,0.5)); + r11.xy = cb0[82].xy * r11.xy; + r12.xy = (uint2)r11.xy; + r4.w = cb0[84].z * r11.z + cb0[84].w; + r12.z = 1 / r4.w; + r11.xy = (uint2)v0.xy; + r4.w = cb0[1].z * r0.y; + r4.w = cb0[0].z * r0.x + r4.w; + r4.w = cb0[2].z * r0.z + r4.w; + r4.w = cb0[3].z + r4.w; + r11.z = abs(r4.w); + r11.xyz = r3.www ? r12.xyz : r11.xyz; + r12.xyz = r5.xyz * float3(0.25,0.25,0.25) + r0.xyz; + r13.xyz = cb0[6].xzy * -cb0[212].www + cb0[210].xzy; + r13.xyz = -r13.xyz + r12.xzy; + r3.w = max(abs(r13.x), abs(r13.y)); + r3.w = -464 + r3.w; + r3.w = saturate(0.03125 * r3.w); + r4.w = -208 + abs(r13.z); + r4.w = saturate(0.03125 * r4.w); + r3.w = max(r4.w, r3.w); + r4.w = cmp(0.000000 != cb0[210].w); + r6.w = cmp(r3.w < 1); + r4.w = r4.w ? r6.w : 0; + if (r4.w != 0) { + r13.xyz = cb0[6].xzy * -cb0[212].yyy + cb0[210].xzy; + r13.xyz = -r13.xyz + r12.xzy; + r4.w = max(abs(r13.x), abs(r13.y)); + r4.w = -29 + r4.w; + r4.w = saturate(0.5 * r4.w); + r6.w = -13 + abs(r13.z); + r6.w = saturate(0.5 * r6.w); + r4.w = max(r6.w, r4.w); + r6.w = cmp(r4.w < 1); + if (r6.w != 0) { + r13.xyz = r12.xyz * float3(2,2,2) + float3(0.5,0.5,0.5); + r14.xyz = cb0[211].xyz * r13.xyz; + r14.xyz = floor(r14.xyz); + r13.xyz = r13.xyz * cb0[211].xyz + -r14.xyz; + r14.xyz = t11.SampleLevel(s1_s, r13.xyz, 0).xyz; + r6.w = 1 + -r4.w; + r10.w = cb0[211].y * 0.5; + r12.w = -cb0[211].y * 0.5 + 1; + r10.w = max(r13.y, r10.w); + r10.w = min(r10.w, r12.w); + r13.w = 0.333333343 * r10.w; + r15.xyzw = t12.SampleLevel(s0_s, r13.xwz, 0).xyzw; + r15.xyz = r15.xyz * float3(4,4,4) + float3(-2,-2,-2); + r16.xyz = r15.xyz * r14.xxx; + r15.xyz = float3(0,0.333333343,0) + r13.xwz; + r15.xyz = t12.SampleLevel(s0_s, r15.xyz, 0).xyz; + r15.xyz = r15.xyz * float3(4,4,4) + float3(-2,-2,-2); + r17.xyz = r15.xyz * r14.yyy; + r13.xyz = float3(0,0.666666687,0) + r13.xwz; + r13.xyz = t12.SampleLevel(s0_s, r13.xyz, 0).xyz; + r13.xyz = r13.xyz * float3(4,4,4) + float3(-2,-2,-2); + r13.xyz = r13.xyz * r14.zzz; + r10.w = r15.w * r6.w + r3.w; + r13.w = r14.z; + r13.xyzw = r13.xyzw * r6.wwww; + r17.w = r14.y; + r15.xyzw = r17.xyzw * r6.wwww; + r16.w = r14.x; + r14.xyzw = r16.xyzw * r6.wwww; + } else { + r13.xyzw = float4(0,0,0,0); + r15.xyzw = float4(0,0,0,0); + r14.xyzw = float4(0,0,0,0); + r10.w = r3.w; + } + r16.xyz = cb0[6].xzy * -cb0[212].zzz + cb0[210].xzy; + r16.xyz = -r16.xyz + r12.xzy; + r6.w = max(abs(r16.x), abs(r16.y)); + r6.w = -116 + r6.w; + r6.w = saturate(0.125 * r6.w); + r12.w = -52 + abs(r16.z); + r12.w = saturate(0.125 * r12.w); + r6.w = max(r12.w, r6.w); + r12.w = cmp(r6.w < 1); + if (r12.w != 0) { + r16.xyz = r12.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5); + r17.xyz = cb0[211].xyz * r16.xyz; + r17.xyz = floor(r17.xyz); + r16.xyz = r16.xyz * cb0[211].xyz + -r17.xyz; + r17.xyz = t13.SampleLevel(s1_s, r16.xyz, 0).xyz; + r12.w = 1 + -r6.w; + r4.w = r12.w * r4.w; + r12.w = cb0[211].y * 0.5; + r17.w = -cb0[211].y * 0.5 + 1; + r12.w = max(r16.y, r12.w); + r12.w = min(r12.w, r17.w); + r16.w = 0.333333343 * r12.w; + r18.xyzw = t14.SampleLevel(s0_s, r16.xwz, 0).xyzw; + r18.xyz = r18.xyz * float3(4,4,4) + float3(-2,-2,-2); + r19.xyz = r18.xyz * r17.xxx; + r18.xyz = float3(0,0.333333343,0) + r16.xwz; + r18.xyz = t14.SampleLevel(s0_s, r18.xyz, 0).xyz; + r18.xyz = r18.xyz * float3(4,4,4) + float3(-2,-2,-2); + r20.xyz = r18.xyz * r17.yyy; + r16.xyz = float3(0,0.666666687,0) + r16.xwz; + r16.xyz = t14.SampleLevel(s0_s, r16.xyz, 0).xyz; + r16.xyz = r16.xyz * float3(4,4,4) + float3(-2,-2,-2); + r16.xyz = r16.xyz * r17.zzz; + r10.w = r18.w * r4.w + r10.w; + r16.w = r17.z; + r13.xyzw = r16.xyzw * r4.wwww + r13.xyzw; + r20.w = r17.y; + r15.xyzw = r20.xyzw * r4.wwww + r15.xyzw; + r19.w = r17.x; + r14.xyzw = r19.xyzw * r4.wwww + r14.xyzw; + } + r4.w = cmp(0 < r6.w); + if (r4.w != 0) { + r12.xyz = r12.xyz * float3(0.125,0.125,0.125) + float3(0.5,0.5,0.5); + r16.xyz = cb0[211].xyz * r12.xyz; + r17.xyz = cb0[211].xyz * float3(0.5,0.5,0.5); + r16.xyz = floor(r16.xyz); + r12.xyz = r12.xyz * cb0[211].xyz + -r16.xyz; + r16.xyz = -cb0[211].xyz * float3(0.5,0.5,0.5) + float3(1,1,1); + r12.xyz = max(r12.xyz, r17.xyz); + r12.xyz = min(r12.xyz, r16.xyz); + r18.xyw = t15.SampleLevel(s1_s, r12.xyz, 0).yzx; + r4.w = 1 + -r3.w; + r4.w = r6.w * r4.w; + r6.w = max(r12.y, r17.y); + r6.w = min(r6.w, r16.y); + r12.w = 0.333333343 * r6.w; + r16.xyzw = t16.SampleLevel(s0_s, r12.xwz, 0).xyzw; + r17.xyz = float3(0,0.666666687,0) + r12.xwz; + r17.xyz = t16.SampleLevel(s0_s, r17.xyz, 0).xyz; + r17.xyz = r17.xyz * float3(4,4,4) + float3(-2,-2,-2); + r17.xyz = r17.xyz * r18.yyy; + r17.w = r18.y; + r13.xyzw = r17.xyzw * r4.wwww + r13.xyzw; + r12.xyz = float3(0,0.333333343,0) + r12.xwz; + r12.xyz = t16.SampleLevel(s0_s, r12.xyz, 0).xyz; + r12.xyz = r12.xyz * float3(4,4,4) + float3(-2,-2,-2); + r12.xyz = r12.xyz * r18.xxx; + r12.w = r18.x; + r15.xyzw = r12.xyzw * r4.wwww + r15.xyzw; + r12.xyz = r16.xyz * float3(4,4,4) + float3(-2,-2,-2); + r18.xyz = r12.xyz * r18.www; + r14.xyzw = r18.xyzw * r4.wwww + r14.xyzw; + r10.w = r16.w * r4.w + r10.w; + } + r4.w = saturate(r10.w * 2 + -1); + r12.x = r4.w + -r3.w; + r3.w = r4.w + r3.w; + r12.y = 0.5 * r3.w; + } else { + r13.xyzw = float4(0,0,0,0); + r15.xyzw = float4(0,0,0,0); + r14.xyzw = float4(0,0,0,0); + r12.xy = float2(0,1); + } + r16.xyzw = cb0[213].xyzw * r12.yyyx; + r16.y = r16.w * 0.5 + r16.y; + r12.zw = cb0[213].wy * r12.yx; + r16.w = r12.w * 0.375 + r12.z; + r14.xyzw = r16.xyzw + r14.xyzw; + r16.xyzw = cb0[214].xyzw * r12.yyyx; + r16.y = r16.w * 0.5 + r16.y; + r12.zw = cb0[214].wy * r12.yx; + r16.w = r12.w * 0.375 + r12.z; + r15.xyzw = r16.xyzw + r15.xyzw; + r16.xyzw = cb0[215].xyzw * r12.yyyx; + r16.y = r16.w * 0.5 + r16.y; + r12.xy = cb0[215].wy * r12.yx; + r16.w = r12.y * 0.375 + r12.x; + r12.xyzw = r16.xyzw + r13.xyzw; + r3.w = dot(r14.xyz, r5.xyz); + r3.w = r3.w + r14.w; + r13.x = max(0, r3.w); + r3.w = dot(r15.xyz, r5.xyz); + r3.w = r3.w + r15.w; + r13.y = max(0, r3.w); + r3.w = dot(r12.xyz, r5.xyz); + r3.w = r3.w + r12.w; + r13.z = max(0, r3.w); + r3.w = dot(-r4.xyz, r5.xyz); + r3.w = r3.w + r3.w; + r12.xyz = r5.xyz * -r3.www + -r4.xyz; + r3.w = cb0[113].x + -1; + r4.w = max(0.00100000005, r9.w); + r4.w = log2(r4.w); + r4.w = -r4.w * 1.20000005 + 1; + r3.w = -r4.w + r3.w; + r14.xy = (uint2)r11.xy; + r14.zw = cb3[0].ww * r14.xy; + r14.zw = floor(r14.zw); + r4.w = -cb3[2].y + r11.z; + r4.w = floor(r4.w); + r6.w = cb3[1].x + -1; + r10.w = max(0, r4.w); + r6.w = min(r10.w, r6.w); + r4.w = cmp(r6.w >= r4.w); + r10.w = r14.w * cb3[0].x + r14.z; + r10.w = (int)r10.w; + r10.w = (int)r10.w + asint(cb0[110].z); + r10.w = t0[r10.w].val[0/4]; + r6.w = (int)r6.w; + r6.w = (int)r6.w + asint(cb0[110].w); + r6.w = t0[r6.w].val[0/4]; + r6.w = (int)r6.w & (int)r10.w; + r4.w = r4.w ? r6.w : 0; + r15.xyz = cb0[111].xxx * r13.xyz; + r6.w = dot(r15.xyz, float3(0.212672904,0.715152204,0.0721750036)); + r0.w = 1; + r5.w = 1; + r15.xyz = float3(0,0,0); + r10.w = 1; + r12.w = r4.w; + r13.w = 0; + while (true) { + r14.z = cmp(0.00999999978 < r10.w); + r14.w = cmp((int)r12.w != 0); + r14.w = r14.z ? r14.w : 0; + if (r14.w != 0) { + r14.w = firstbitlow((uint)r12.w); + r15.w = 1 << (int)r14.w; + r12.w = (int)r12.w ^ (int)r15.w; + r14.w = (uint)r14.w << 3; + r16.x = dot(cb3[r14.w+6].xyzw, r0.xyzw); + r16.y = dot(cb3[r14.w+7].xyzw, r0.xyzw); + r16.z = dot(cb3[r14.w+8].xyzw, r0.xyzw); + r17.xyz = cmp(cb3[r14.w+5].xyz >= abs(r16.xyz)); + r15.w = r17.y ? r17.x : 0; + r15.w = r17.z ? r15.w : 0; + if (r15.w != 0) { + r15.w = cb3[r14.w+5].x * 0.100000001; + r17.xyz = float3(0.100000001,0.100000001,0.100000001) * abs(r16.xyz); + r17.xy = r17.xy * r17.xy; + r18.xyz = cb3[r14.w+5].xyz + -abs(r16.xyz); + r18.xyz = cb3[r14.w+9].xyz * r18.xyz; + r16.w = cmp(1.000000 == cb3[r14.w+10].x); + if (r16.w != 0) { + r19.x = dot(cb3[r14.w+6].xyz, r12.xyz); + r19.y = dot(cb3[r14.w+7].xyz, r12.xyz); + r19.z = dot(cb3[r14.w+8].xyz, r12.xyz); + r20.xyz = cb3[r14.w+5].xyz + -r16.xyz; + r20.xyz = r20.xyz / r19.xyz; + r21.xyz = -cb3[r14.w+5].xyz + -r16.xyz; + r21.xyz = r21.xyz / r19.xyz; + r22.xyz = cmp(float3(0,0,0) < r19.xyz); + r20.xyz = r22.xyz ? r20.xyz : r21.xyz; + r16.w = min(r20.x, r20.y); + r16.w = min(r16.w, r20.z); + r16.xyz = r19.xyz * r16.www + r16.xyz; + } else { + r16.xyz = r12.xyz; + } + r16.w = dot(r16.xyz, r16.xyz); + r16.w = rsqrt(r16.w); + r16.xyz = r16.xyz * r16.www; + r19.xyz = cmp(float3(0,0,0) < r16.xyz); + r20.xyz = cmp(r16.xyz < float3(0,0,0)); + r19.xyz = (int3)-r19.xyz + (int3)r20.xyz; + r19.xyz = (int3)r19.xyz; + r16.w = dot(r16.xyz, r19.xyz); + r16.xyz = r16.xyz / r16.www; + r16.z = cmp(r16.z < 0); + r19.zw = float2(1,1) + -abs(r16.yx); + r19.xy = r19.xy * r19.zw; + r16.xy = r16.zz ? r19.xy : r16.xy; + r16.z = dot(cb3[r14.w+4].xyzw, r5.xyzw); + r16.z = max(0, r16.z); + r16.z = max(9.99999975e-05, r16.z); + r16.w = min(r18.y, r18.z); + r16.w = min(r18.x, r16.w); + r17.x = r17.x + r17.y; + r17.x = r17.z * r17.z + r17.x; + r15.w = r15.w * r15.w + -r17.x; + r15.w = cb3[r14.w+9].x * r15.w; + r15.w = cb3[r14.w+9].x * r15.w; + r17.x = -cb3[r14.w+10].y + 1; + r15.w = r17.x * r15.w; + r15.w = 100 * r15.w; + r15.w = saturate(r16.w * cb3[r14.w+10].y + r15.w); + r16.w = cb3[r14.w+10].w * r15.w; + r16.xy = r16.xy * float2(0.5,0.5) + float2(0.5,0.5); + r17.xy = r16.xy * cb3[1].ww + cb3[2].ww; + r17.z = cb3[r14.w+5].w; + r17.xyz = t1.SampleLevel(s2_s, r17.xyz, r3.w).xyz; + r17.xyz = cb3[r14.w+9].www * r17.xyz; + r16.x = r6.w / r16.z; + r16.x = min(1, abs(r16.x)); + r16.x = r16.x * 2 + r6.w; + r16.y = 2 + r16.z; + r16.x = r16.x / r16.y; + r16.x = -1 + r16.x; + r16.x = r16.x * cb0[112].w + 1; + r16.xyz = r17.xyz * r16.xxx; + r16.xyz = r16.xyz * r16.www; + r15.xyz = r16.xyz * r10.www + r15.xyz; + r14.w = -r15.w * cb3[r14.w+10].w + 1; + r10.w = r14.w * r10.w; + } + r13.w = -1; + continue; + } else { + r13.w = r14.z; + break; + } + r13.w = r14.z; + } + if (r13.w != 0) { + r0.w = dot(r12.xyz, r12.xyz); + r0.w = rsqrt(r0.w); + r16.xyz = r12.xyz * r0.www; + r17.xyz = cmp(float3(0,0,0) < r16.xyz); + r18.xyz = cmp(r16.xyz < float3(0,0,0)); + r17.xyz = (int3)-r17.xyz + (int3)r18.xyz; + r17.xyz = (int3)r17.xyz; + r0.w = dot(r16.xyz, r17.xyz); + r16.xyz = r16.xyz / r0.www; + r0.w = cmp(r16.z < 0); + r14.zw = float2(1,1) + -abs(r16.yx); + r14.zw = r17.xy * r14.zw; + r14.zw = r0.ww ? r14.zw : r16.xy; + r5.w = 1; + r0.w = dot(cb3[3].xyzw, r5.xyzw); + r0.w = max(0, r0.w); + r0.w = max(9.99999975e-05, r0.w); + r14.zw = r14.zw * float2(0.5,0.5) + float2(0.5,0.5); + r16.xy = r14.zw * cb3[1].ww + cb3[2].ww; + r16.z = 0; + r16.xyz = t1.SampleLevel(s2_s, r16.xyz, r3.w).xyz; + r3.w = r6.w / r0.w; + r3.w = min(1, abs(r3.w)); + r3.w = r3.w * 2 + r6.w; + r0.w = 2 + r0.w; + r0.w = r3.w / r0.w; + r0.w = -1 + r0.w; + r0.w = r0.w * cb0[112].w + 1; + r16.xyz = r16.xyz * r0.www; + r15.xyz = r16.xyz * r10.www + r15.xyz; + } + r13.xyz = r13.xyz * r7.xyw; + r0.w = -1 + r7.z; + r0.w = cb2[1].x * r0.w + 1; + r13.xyz = r13.xyz * r0.www; + + // Reduce reflection probe intensity for glass + if (GLASS_TRANSPARENCY > 0.5f) { + r15.xyz *= 0.4f; + } + + r15.xyz = cb0[112].zzz * r15.xyz; + r15.xyz = cb0[111].yyy * r15.xyz; + r0.w = saturate(50 * r6.y); + r0.w = r0.w * r2.w; + r16.xyz = r6.xyz * r2.zzz + r0.www; + r15.xyz = r16.xyz * r15.xyz; + r13.xyz = r13.xyz * cb0[111].xxx + r15.xyz; + r0.w = cmp(cb6[35].w < 0.99000001); + if (r0.w != 0) { + r0.w = (int)cb6[35].x; + r2.z = cmp((int)r0.w == 2); + r15.xyz = r2.zzz ? cb6[20].xyz : cb0[44].xyz; + r15.xyz = -r15.xyz + r0.xyz; + r2.z = dot(r15.xyz, r15.xyz); + r2.z = cb6[34].w + -r2.z; + r2.z = saturate(cb6[34].z * r2.z); + r2.w = cmp(0 < r2.z); + if (r2.w != 0) { + r0.w = cmp(0 < (int)r0.w); + if (r0.w != 0) { + r15.xyz = -cb6[20].xyz + r0.xyz; + r16.xyz = -cb6[21].xyz + r0.xyz; + r17.xyz = -cb6[22].xyz + r0.xyz; + r18.xyz = -cb6[23].xyz + r0.xyz; + r15.x = dot(r15.xyz, r15.xyz); + r15.y = dot(r16.xyz, r16.xyz); + r15.z = dot(r17.xyz, r17.xyz); + r15.w = dot(r18.xyz, r18.xyz); + r16.x = cmp(r15.x < cb6[20].w); + r16.y = cmp(r15.y < cb6[21].w); + r16.z = cmp(r15.z < cb6[22].w); + r16.w = cmp(r15.w < cb6[23].w); + r17.xyzw = r16.xyzw ? float4(1,1,1,1) : 0; + r16.xyz = r16.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0); + r16.xyz = r17.yzw + r16.xyz; + r17.yzw = max(float3(0,0,0), r16.xyz); + r0.w = dot(r17.xyzw, float4(4,3,2,1)); + r0.w = 4 + -r0.w; + r0.w = max(0, r0.w); + r0.w = min(3, r0.w); + r2.w = 1 + r0.w; + r2.w = min(3, r2.w); + r2.w = (uint)r2.w; + r3.w = dot(r15.yzw, icb[r2.w+0].yzw); + r2.w = r3.w / cb6[r2.w+20].w; + r3.w = cmp(r2.w >= 0); + r2.w = cmp(1 >= r2.w); + r2.w = r2.w ? r3.w : 0; + if (r2.w != 0) { + r2.w = (uint)r0.w; + r14.zw = float2(2.08299994,4.8670001) + r14.xy; + r3.w = dot(r14.zw, float2(0.0671105608,0.00583714992)); + r3.w = frac(r3.w); + r3.w = 52.9829178 * r3.w; + r3.w = frac(r3.w); + r4.w = dot(r15.xyzw, icb[r2.w+0].xyzw); + r2.w = r4.w / cb6[r2.w+20].w; + r2.w = sqrt(r2.w); + r2.w = -0.899999976 + r2.w; + r2.w = 12 * r2.w; + r2.w = cmp(r2.w >= r3.w); + r2.w = r2.w ? 1.000000 : 0; + r0.w = r2.w + r0.w; + } + r2.w = dot(r5.xyz, cb5[0].xyz); + r2.w = max(0, r2.w); + r2.w = min(0.899999976, r2.w); + r2.w = 1 + -r2.w; + r3.w = (uint)r0.w; + r4.w = (uint)r3.w << 2; + r14.zw = cb6[r3.w+24].xy * r2.ww; + r2.w = max(0, r14.z); + r15.xyz = -cb5[0].xyz * r2.www + r0.xyz; + r15.xyz = r5.xyz * r14.www + r15.xyz; + r16.xyz = cb6[r4.w+1].xyz * r15.yyy; + r15.xyw = cb6[r4.w+0].xyz * r15.xxx + r16.xyz; + r15.xyz = cb6[r4.w+2].xyz * r15.zzz + r15.xyw; + r15.xyz = cb6[r4.w+3].xyz + r15.xyz; + r16.xyz = cmp(float3(0,0,0) >= r15.xyz); + r17.xyz = cmp(r15.xyz >= float3(1,1,1)); + r16.xyz = (int3)r16.xyz | (int3)r17.xyz; + r2.w = (int)r16.y | (int)r16.x; + r2.w = (int)r16.z | (int)r2.w; + r3.w = (int)r15.z & 0x7fffffff; + r3.w = cmp(0x7f800000 < (uint)r3.w); + r16.z = (int)r2.w | (int)r3.w; + r0.w = (int)r0.w; + r14.zw = r15.xy * cb6[r0.w+28].zw + cb6[r0.w+28].xy; + r15.xy = r14.zw * cb6[32].zw + float2(0.5,0.5); + r15.xy = floor(r15.xy); + r14.zw = r14.zw * cb6[32].zw + -r15.xy; + r17.xyzw = float4(0.5,1,0.5,1) + r14.zzww; + r18.xw = r17.xz * r17.xz; + r17.xz = min(float2(0,0), r14.zw); + r19.xy = max(float2(0,0), r14.zw); + r19.zw = r18.xw * float2(0.5,0.5) + -r14.zw; + r14.zw = float2(1,1) + -r14.zw; + r14.zw = -r17.xz * r17.xz + r14.zw; + r17.xy = -r19.xy * r19.xy + r17.yw; + r20.x = r19.z; + r20.y = r14.z; + r20.z = r17.x; + r20.w = r18.x; + r20.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r20.xyzw; + r18.x = r19.w; + r18.y = r14.w; + r18.z = r17.y; + r17.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r18.xyzw; + r18.xyzw = r20.xzxz + r20.ywyw; + r19.xyzw = r17.xxzz + r17.yyww; + r14.zw = r20.yw / r18.zw; + r14.zw = float2(-1.5,0.5) + r14.zw; + r20.xy = cb6[32].xx * r14.zw; + r14.zw = r17.yw / r19.yw; + r14.zw = float2(-1.5,0.5) + r14.zw; + r20.zw = cb6[32].yy * r14.zw; + r17.xyzw = r19.xyzw * r18.xyzw; + r18.xyzw = r15.xyxy * cb6[32].xyxy + r20.xzyz; + r0.w = t5.SampleCmpLevelZero(s3_s, r18.xy, r15.z).x; + r2.w = t5.SampleCmpLevelZero(s3_s, r18.zw, r15.z).x; + r2.w = r17.y * r2.w; + r0.w = r17.x * r0.w + r2.w; + r18.xyzw = r15.xyxy * cb6[32].xyxy + r20.xwyw; + r2.w = t5.SampleCmpLevelZero(s3_s, r18.xy, r15.z).x; + r0.w = r17.z * r2.w + r0.w; + r2.w = t5.SampleCmpLevelZero(s3_s, r18.zw, r15.z).x; + r0.w = r17.w * r2.w + r0.w; + r16.x = r16.z ? 1 : r0.w; + } else { + r16.xz = float2(1,0); + } + } else { + r16.xz = float2(1,0); + } + r0.w = cmp(r2.z < 1); + if (r0.w != 0) { + r0.w = dot(r5.xyz, cb5[0].xyz); + r0.w = max(0, r0.w); + r0.w = min(0.899999976, r0.w); + r0.w = 1 + -r0.w; + r14.zw = cb6[584].xy * r0.ww; + r15.xyz = -cb5[0].xyz * r14.zzz + r0.xyz; + r15.xyz = r5.xyz * r14.www + r15.xyz; + r14.zw = cb6[581].xy * r15.yy; + r14.zw = cb6[580].xy * r15.xx + r14.zw; + r14.zw = cb6[582].xy * r15.zz + r14.zw; + r14.zw = cb6[583].xy + r14.zw; + r17.xy = cmp(float2(0,0) < r14.zw); + r0.w = r17.y ? r17.x : 0; + r17.xy = cmp(r14.zw < float2(1,1)); + r2.w = r17.y ? r17.x : 0; + r0.w = (int)r0.w & (int)r2.w; + if (r0.w != 0) { + r0.w = cb6[585].z * r14.w; + r0.w = floor(r0.w); + r0.w = r0.w + r14.z; + r0.w = cb6[585].y * r0.w; + r0.w = (uint)r0.w; + r0.w = min(127, (uint)r0.w); + r2.w = 0x0000ffff & asint(cb6[r0.w+587].x); + r17.x = f16tof32(r2.w); + r2.w = cmp(r17.x >= 0); + if (r2.w != 0) { + r18.x = cb6[576].x; + r18.y = cb6[577].x; + r18.z = cb6[578].x; + r18.w = cb6[r0.w+587].y; + r15.w = 1; + r18.x = dot(r18.xyzw, r15.xyzw); + r19.x = cb6[576].y; + r19.y = cb6[577].y; + r19.z = cb6[578].y; + r19.w = cb6[r0.w+587].z; + r18.y = dot(r19.xyzw, r15.xyzw); + r19.x = cb6[576].z; + r19.y = cb6[577].z; + r19.z = cb6[578].z; + r19.w = cb6[r0.w+587].w; + r2.w = dot(r19.xyzw, r15.xyzw); + r14.zw = cmp(float2(0,0) < r18.xy); + r3.w = cmp(0 < r2.w); + r4.w = r14.w ? r14.z : 0; + r3.w = r3.w ? r4.w : 0; + r14.zw = cmp(r18.xy < float2(1,1)); + r4.w = cmp(r2.w < 1); + r5.w = r14.w ? r14.z : 0; + r4.w = r4.w ? r5.w : 0; + r3.w = r3.w ? r4.w : 0; + if (r3.w != 0) { + r0.w = asuint(cb6[r0.w+587].x) >> 16; + r17.y = f16tof32(r0.w); + r14.zw = r18.xy * cb6[584].zw + r17.xy; + r15.xy = r14.zw * cb6[586].zw + float2(0.5,0.5); + r15.xy = floor(r15.xy); + r14.zw = r14.zw * cb6[586].zw + -r15.xy; + r17.xyzw = float4(0.5,1,0.5,1) + r14.zzww; + r18.xw = r17.xz * r17.xz; + r15.zw = min(float2(0,0), r14.zw); + r17.xz = max(float2(0,0), r14.zw); + r19.xy = r18.xw * float2(0.5,0.5) + -r14.zw; + r14.zw = float2(1,1) + -r14.zw; + r14.zw = -r15.zw * r15.zw + r14.zw; + r15.zw = -r17.xz * r17.xz + r17.yw; + r17.x = r19.x; + r17.y = r14.z; + r17.z = r15.z; + r17.w = r18.x; + r17.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r17.xyzw; + r18.x = r19.y; + r18.y = r14.w; + r18.z = r15.w; + r18.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r18.xyzw; + r19.xyzw = r17.xzxz + r17.ywyw; + r20.xyzw = r18.xxzz + r18.yyww; + r14.zw = r17.yw / r19.zw; + r14.zw = float2(-1.5,0.5) + r14.zw; + r17.xy = cb6[586].xx * r14.zw; + r14.zw = r18.yw / r20.yw; + r14.zw = float2(-1.5,0.5) + r14.zw; + r17.zw = cb6[586].yy * r14.zw; + r18.xyzw = r20.xyzw * r19.xyzw; + r19.xyzw = r15.xyxy * cb6[586].xyxy + r17.xzyz; + r0.w = t8.SampleCmpLevelZero(s3_s, r19.xy, r2.w).x; + r3.w = t8.SampleCmpLevelZero(s3_s, r19.zw, r2.w).x; + r3.w = r18.y * r3.w; + r0.w = r18.x * r0.w + r3.w; + r15.xyzw = r15.xyxy * cb6[586].xyxy + r17.xwyw; + r3.w = t8.SampleCmpLevelZero(s3_s, r15.xy, r2.w).x; + r0.w = r18.z * r3.w + r0.w; + r2.w = t8.SampleCmpLevelZero(s3_s, r15.zw, r2.w).x; + r16.y = r18.w * r2.w + r0.w; + } else { + r16.y = 1; + } + } else { + r16.y = 1; + } + } else { + r16.y = 1; + } + r16.x = r16.z ? r16.y : r16.x; + } else { + r16.y = 1; + } + r0.w = r16.x + -r16.y; + r0.w = r2.z * r0.w + r16.y; + r2.z = cmp(0.00100000005 < r0.w); + if (r2.z != 0) { + r15.xyz = -cb0[173].xyz + r0.xyz; + r2.zw = cb0[176].xz * r15.yy + r15.xz; + r14.zw = cb0[174].zz * r2.zw; + r15.yw = cb0[183].ww * cb0[175].xy; + r2.zw = r2.zw * cb0[174].zz + r15.yw; + r2.z = t7.SampleLevel(s1_s, r2.zw, 0).x; + r14.zw = r14.zw * cb0[175].ww + r15.yw; + r2.w = t7.SampleLevel(s1_s, r14.zw, 0).x; + r3.w = dot(r15.xz, r15.xz); + r3.w = sqrt(r3.w); + r4.w = cb0[174].y + -cb0[174].x; + r3.w = -cb0[174].x + r3.w; + r4.w = 1 / r4.w; + r3.w = saturate(r4.w * r3.w); + r4.w = r3.w * -2 + 3; + r3.w = r3.w * r3.w; + r3.w = r4.w * r3.w; + r2.w = r2.w + -r2.z; + r2.z = r3.w * r2.w + r2.z; + r2.z = -1 + r2.z; + r2.z = cb0[175].z * r2.z + 1; + r0.w = r2.z * r0.w; + } + r2.z = cb6[35].z + -r0.w; + r0.w = cb6[35].w * r2.z + r0.w; + } else { + r0.w = cb6[35].z; + } + r0.w = min(1, r0.w); + r0.w = -1 + r0.w; + r15.x = cb6[34].x * r0.w + 1; + r0.w = cmp(0.00100000005 < r15.x); + if (r0.w != 0) { + r0.w = dot(-cb5[0].xyz, r12.xyz); + r16.xyz = cb5[0].xyz * r0.www + r12.xyz; + r0.w = cmp(r0.w < cb5[4].z); + r2.z = dot(r16.xyz, r16.xyz); + r2.z = max(6.10351562e-05, r2.z); + r2.z = rsqrt(r2.z); + r16.xyz = r16.xyz * r2.zzz; + r16.xyz = cb5[4].yyy * r16.xyz; + r16.xyz = -cb5[0].xyz * cb5[4].zzz + r16.xyz; + r2.z = dot(r16.xyz, r16.xyz); + r2.z = rsqrt(r2.z); + r16.xyz = r16.xyz * r2.zzz; + r16.xyz = r0.www ? r16.xyz : r12.xyz; + r17.xyz = r1.yzw * r2.yyy + r16.xyz; + r0.w = dot(r17.xyz, r17.xyz); + r0.w = max(6.10351562e-05, r0.w); + r0.w = rsqrt(r0.w); + r17.xyz = r17.xyz * r0.www; + r9.y = saturate(dot(r16.xyz, r5.xyz)); + r0.w = saturate(dot(r5.xyz, r17.xyz)); + r9.z = min(1, r1.x); + r2.z = r9.w * r9.w; + r2.z = r2.z * r2.z; + r2.w = r0.w * r2.z + -r0.w; + r0.w = r2.w * r0.w + 1; + r2.w = saturate(dot(r4.xyz, r17.xyz)); + r2.w = 1 + -r2.w; + r3.w = r2.w * r2.w; + r3.w = r3.w * r3.w; + r4.w = r3.w * r2.w; + r5.w = 1 + -r9.w; + r6.w = -r5.w * 0.383026004 + -0.0761947036; + r6.w = r5.w * r6.w + 1.04997003; + r5.w = r5.w * r6.w + 0.409254998; + r5.w = min(0.999000013, r5.w); + r6.w = 1 + -r5.w; + r16.xyz = float3(1,1,1) + -r6.xyz; + r16.xyz = r16.xyz * float3(0.0476190485,0.0476190485,0.0476190485) + r6.xyz; + r2.w = -r3.w * r2.w + 1; + r17.xyz = r6.xyz * r2.www + r4.www; + r0.w = r0.w * r0.w; + r0.w = r2.z / r0.w; + r14.zw = -r9.zy * r2.zz + r9.zy; + r2.zw = r14.zw * r9.zy + r2.zz; + r2.zw = sqrt(r2.zw); + r2.zw = r9.yz * r2.zw; + r2.z = r2.z + r2.w; + r2.z = 9.99999975e-05 + r2.z; + r2.z = 0.5 / r2.z; + r0.w = r2.z * r0.w; + r17.xyz = r17.xyz * r0.www; + r17.xyz = min(float3(2048,2048,2048), r17.xyz); + r18.xyzw = r9.zwyw * float4(0.96875,0.96875,0.96875,0.96875) + float4(0.015625,0.015625,0.015625,0.015625); + r0.w = t10.SampleLevel(s0_s, r18.xy, 0).x; + r2.z = t10.SampleLevel(s0_s, r18.zw, 0).x; + r0.w = r2.z * r0.w; + r0.w = r0.w * r5.w; + r0.w = r0.w / r6.w; + r18.xyz = r16.xyz * r16.xyz; + r18.xyz = r18.xyz * r0.www; + r16.xyz = -r16.xyz * r6.www + float3(1,1,1); + r16.xyz = r18.xyz / r16.xyz; + r16.xyz = r17.xyz + r16.xyz; + r16.xyz = cb5[4].xxx * r16.xyz; + r16.xyz = max(float3(0,0,0), r16.xyz); + r16.xyz = min(float3(1000,1000,1000), r16.xyz); + + // Reduce sun specular intensity on glass + if (GLASS_TRANSPARENCY > 0.5f) { + r16.xyz *= 0.5f; + } + + r17.xyz = r9.yyy * r7.xyw; + r16.xyz = r16.xyz * r9.yyy + r17.xyz; + r16.xyz = cb5[1].xyz * r16.xyz; + r15.y = 0.5; + r15.yzw = t9.SampleBias(s0_s, r15.xy, cb0[108].x).xyz; + r0.w = 1 + -r15.x; + r15.xyz = r16.xyz * r15.yzw + -r16.xyz; + r15.xyz = r0.www * r15.xyz + r16.xyz; + } else { + r15.xyz = float3(0,0,0); + } + r2.zw = float2(0.03125,0.03125) * r14.xy; + r2.zw = floor(r2.zw); + r0.w = r2.w * cb4[1].y + r2.z; + r0.w = 8 * r0.w; + r0.w = (int)r0.w; + r2.z = -cb0[85].y * cb4[2].w + r11.z; + r2.z = floor(r2.z); + r2.w = cb4[1].w + -1; + r3.w = max(0, r2.z); + r2.w = min(r3.w, r2.w); + r3.w = 8 * r2.w; + r3.w = (int)r3.w; + r2.z = cmp(r2.w >= r2.z); + r2.w = (int)r3.w + asint(cb0[110].y); + r3.w = r9.w * r9.w; + r9.x = min(1, r1.x); + r1.x = 1 + -r9.w; + r4.w = -r1.x * 0.383026004 + -0.0761947036; + r4.w = r1.x * r4.w + 1.04997003; + r1.x = r1.x * r4.w + 0.409254998; + r1.x = min(0.999000013, r1.x); + r4.w = 1 + -r1.x; + r16.xyz = float3(1,1,1) + -r6.xyz; + r16.xyz = r16.xyz * float3(0.0476190485,0.0476190485,0.0476190485) + r6.xyz; + r9.yz = r9.xw * float2(0.96875,0.96875) + float2(0.015625,0.015625); + r5.w = t10.SampleLevel(s0_s, r9.yz, 0).x; + r17.xyz = -r16.xyz * r4.www + float3(1,1,1); + r16.xyz = r16.xyz * r16.xyz; + r18.w = 1; + r19.y = 1; + r20.z = r9.w; + r21.xyz = float3(0,0,0); + r6.w = 1; + r7.z = 0; + while (true) { + r9.y = cmp(7 < (int)r7.z); + if (r9.y != 0) break; + r9.y = (int)r0.w + (int)r7.z; + r9.y = t0[r9.y].val[0/4]; + r9.z = (int)r2.w + (int)r7.z; + r9.z = t0[r9.z].val[0/4]; + r9.y = (int)r9.z & (int)r9.y; + r9.y = r2.z ? r9.y : 0; + r9.z = (uint)r7.z << 5; + r22.xyz = float3(0,0,0); + r10.w = r6.w; + r12.w = r9.y; + while (true) { + if (r12.w == 0) break; + r13.w = firstbitlow((uint)r12.w); + r14.z = 1 << (int)r13.w; + r14.z = (int)r12.w ^ (int)r14.z; + r13.w = (int)r9.z + (int)r13.w; + bitmask.x = ((~(-1 << 29)) << 3) & 0xffffffff; r23.x = (((uint)r13.w << 3) & bitmask.x) | ((uint)1 & ~bitmask.x); + bitmask.y = ((~(-1 << 29)) << 3) & 0xffffffff; r23.y = (((uint)r13.w << 3) & bitmask.y) | ((uint)3 & ~bitmask.y); + bitmask.z = ((~(-1 << 29)) << 3) & 0xffffffff; r23.z = (((uint)r13.w << 3) & bitmask.z) | ((uint)5 & ~bitmask.z); + bitmask.w = ((~(-1 << 29)) << 3) & 0xffffffff; r23.w = (((uint)r13.w << 3) & bitmask.w) | ((uint)6 & ~bitmask.w); + bitmask.w = ((~(-1 << 29)) << 3) & 0xffffffff; r14.w = (((uint)r13.w << 3) & bitmask.w) | ((uint)7 & ~bitmask.w); + r15.w = (uint)cb5[r23.z+6].w; + r15.w = cmp((int)r15.w == 1); + if (r15.w != 0) { + r18.xyz = -cb5[r23.x+6].xyz + r0.xyz; + r24.xyz = int3(0xffff,0xffff,0xffff) & asint(cb5[r23.z+6].xzy); + r25.xyz = int3(0xffff,0xffff,0xffff) & asint(cb5[r23.w+6].yxz); + r26.xyz = asuint(cb5[r23.z+6].xzy) >> int3(16,16,16); + r27.xyz = asuint(cb5[r23.w+6].yxz) >> int3(16,16,16); + r24.xyz = f16tof32(r24.xyz); + r25.xyz = f16tof32(r25.xyz); + r26.xyz = f16tof32(r26.xyz); + r27.xyw = f16tof32(r27.yxz); + r28.xz = r24.xz; + r28.yw = r26.xz; + r15.w = dot(r18.xyzw, r28.xyzw); + r26.x = r24.y; + r26.z = r25.y; + r26.w = r27.x; + r16.w = dot(r18.xyzw, r26.xyzw); + r27.xz = r25.xz; + r17.w = dot(r18.xyzw, r27.xyzw); + r15.w = max(abs(r16.w), abs(r15.w)); + r15.w = max(r15.w, abs(r17.w)); + r16.w = cb5[r14.w+6].x * 0.5 + 0.5; + r15.w = -r16.w + r15.w; + r16.w = -cb5[r14.w+6].x * 0.5 + 0.5; + r15.w = saturate(r15.w / r16.w); + r15.w = 1 + -r15.w; + r15.w = r15.w * r15.w; + } else { + r15.w = 1; + } + r16.w = cmp(0.5 < cb5[r23.y+6].z); + r17.w = cmp(r15.w < 0.00100000005); + r17.w = (int)r16.w | (int)r17.w; + if (r17.w != 0) { + r12.w = r14.z; + continue; + } + r17.w = (uint)r13.w << 3; + bitmask.w = ((~(-1 << 29)) << 3) & 0xffffffff; r13.w = (((uint)r13.w << 3) & bitmask.w) | ((uint)2 & ~bitmask.w); + r18.x = cmp(cb5[r17.w+6].w < 1.5); + if (r18.x != 0) { + r18.x = cb5[r13.w+6].y * 0.5 + 0.5; + r18.x = -abs(cb5[r13.w+6].x) + r18.x; + r18.y = cb5[r13.w+6].y + -r18.x; + r19.z = 1 + -abs(r18.x); + r19.z = r19.z + -abs(r18.y); + r19.z = max(0.00048828125, r19.z); + r19.w = cmp(cb5[r13.w+6].x >= 0); + r18.z = r19.w ? r19.z : -r19.z; + r19.z = dot(r18.xyz, r18.xyz); + r19.z = rsqrt(r19.z); + r18.xyz = r19.zzz * r18.xyz; + r24.xyz = cb5[r23.x+6].xyz + -r0.xyz; + r19.z = dot(r24.xyz, r24.xyz); + r19.w = rsqrt(r19.z); + r25.xyz = r24.xyz * r19.www; + r20.w = (int)cb5[r14.w+6].w; + r26.xyz = cb5[r13.w+6].zzz * r18.xyz; + r27.xyz = -r26.xyz * float3(0.5,0.5,0.5) + r24.xyz; + r28.xyz = r26.xyz * float3(0.5,0.5,0.5) + r24.xyz; + r21.w = (uint)cb5[r17.w+6].w; + r21.w = (int)r21.w & 1; + r22.w = cmp((int)r21.w == 0); + r22.w = ~(int)r22.w; + r23.z = cmp(0 < cb5[r13.w+6].z); + r22.w = r22.w ? r23.z : 0; + r23.z = dot(r27.xyz, r27.xyz); + r23.z = sqrt(r23.z); + r24.w = dot(r28.xyz, r28.xyz); + r24.w = sqrt(r24.w); + r25.w = dot(r5.xyz, r27.xyz); + r25.w = r25.w / r23.z; + r26.w = dot(r5.xyz, r28.xyz); + r26.w = r26.w / r24.w; + r25.w = r26.w + r25.w; + r29.x = saturate(0.5 * r25.w); + r25.w = dot(r27.xyz, r28.xyz); + r23.z = r23.z * r24.w + r25.w; + r23.z = r23.z * 0.5 + 1; + r29.y = 1 / r23.z; + r19.x = saturate(dot(r5.xyz, r25.xyz)); + r20.xy = r22.ww ? r29.xy : r19.xy; + r19.x = cmp(cb5[r23.w+6].w < 0); + if (r19.x != 0) { + r19.x = cb5[r23.x+6].w * cb5[r23.x+6].w; + r19.x = r19.z * r19.x; + r19.x = -r19.x * r19.x + 1; + r19.x = max(0, r19.x); + r19.z = 1 + r19.z; + r19.z = 1 / r19.z; + r23.z = r22.w ? 1.000000 : 0; + r24.w = r20.y + -r19.z; + r19.z = r23.z * r24.w + r19.z; + r19.x = r19.x * r19.x; + r19.x = r19.z * r19.x; + } else { + r28.xyz = cb5[r23.x+6].www * r24.xyz; + r19.z = dot(r28.xyz, r28.xyz); + r19.z = min(1, r19.z); + r19.z = 1 + -r19.z; + r19.z = log2(r19.z); + r19.z = cb5[r23.w+6].w * r19.z; + r19.z = exp2(r19.z); + r19.x = r20.y * r19.z; + } + r18.x = dot(r25.xyz, -r18.xyz); + r18.x = -cb5[r13.w+6].z + r18.x; + r18.x = saturate(cb5[r13.w+6].w * r18.x); + r18.x = r18.x * r18.x; + r18.x = r21.w ? 1 : r18.x; + r18.x = r19.x * r18.x; + r18.y = ~(int)r22.w; + r18.z = cmp((int)r20.w >= 0); + r18.y = r18.z ? r18.y : 0; + if (r18.y != 0) { + if (r21.w == 0) { + r18.y = (uint)r20.w << 2; + r28.xyz = cb7[r18.y+33].xyw * r0.yyy; + r28.xyz = cb7[r18.y+32].xyw * r0.xxx + r28.xyz; + r28.xyz = cb7[r18.y+34].xyw * r0.zzz + r28.xyz; + r28.xyz = cb7[r18.y+35].xyw + r28.xyz; + r18.yz = saturate(r28.xy / r28.zz); + r18.yz = r18.yz * cb7[r20.w+0].zw + cb7[r20.w+0].xy; + } else { + r19.x = (uint)r20.w << 2; + r28.x = dot(-r24.xyz, cb7[r19.x+32].xyz); + r28.y = dot(-r24.xyz, cb7[r19.x+33].xyz); + r28.z = dot(-r24.xyz, cb7[r19.x+34].xyz); + r19.x = cmp(abs(r28.x) < abs(r28.y)); + r19.x = r19.x ? 0.000000 : 0; + r19.z = dot(abs(r28.xy), icb[r19.x+0].xy); + r19.z = cmp(r19.z < abs(r28.z)); + r19.x = r19.z ? 2 : r19.x; + r19.z = dot(r28.xyz, icb[r19.x+0].xyz); + r19.z = cmp(r19.z < 0); + bitmask.x = ((~(-1 << 31)) << 1) & 0xffffffff; r19.x = (((uint)r19.x << 1) & bitmask.x) | ((uint)r19.z & ~bitmask.x); + r19.z = (uint)r19.x >> 1; + r19.z = dot(r28.xyz, icb[r19.z+0].xyz); + r20.y = 0.000244140625 / cb7[r20.w+0].w; + r20.y = 0.5 + -r20.y; + r23.z = (uint)r19.x; + r24.x = cmp((uint)r19.x < 2); + r24.x = r24.x ? 0.000000 : 0; + r24.x = dot(r28.xz, icb[r24.x+0].xz); + r24.x = icb[r19.x+4].z * r24.x; + r24.x = r24.x / abs(r19.z); + r23.z = r24.x * r20.y + r23.z; + r23.z = 0.5 + r23.z; + r24.x = saturate(0.166666672 * r23.z); + r23.z = -1 + (int)icb[r19.x+4].y; + r23.z = dot(r28.yz, icb[r23.z+0].xy); + r19.x = icb[r19.x+4].w * r23.z; + r19.x = r19.x / abs(r19.z); + r24.y = saturate(-r19.x * r20.y + 0.5); + r18.yz = r24.xy * cb7[r20.w+0].zw + cb7[r20.w+0].xy; + } + r18.y = t18.SampleLevel(s0_s, r18.yz, 0).x; + r18.x = r18.x * r18.y; + } + r18.y = cmp(0 < r18.x); + if (r18.y != 0) { + if (r21.w == 0) { + r18.z = (int)cb5[r23.y+6].x; + } else { + r24.xyz = -cb5[r23.x+6].xyz + r0.xyz; + r28.xyz = cmp(abs(r24.yzz) < abs(r24.xxy)); + r19.x = r28.y ? r28.x : 0; + r24.xyz = cmp(float3(0,0,0) < r24.xyz); + r19.z = asuint(cb5[r13.w+6].w) >> 24; + if (8 == 0) r20.y = 0; else if (8+16 < 32) { r20.y = (uint)cb5[r13.w+6].w << (32-(8 + 16)); r20.y = (uint)r20.y >> (32-8); } else r20.y = (uint)cb5[r13.w+6].w >> 16; + if (8 == 0) r20.w = 0; else if (8+8 < 32) { r20.w = (uint)cb5[r13.w+6].w << (32-(8 + 8)); r20.w = (uint)r20.w >> (32-8); } else r20.w = (uint)cb5[r13.w+6].w >> 8; + r19.z = r24.x ? r19.z : r20.y; + r20.y = 255 & asint(cb5[r13.w+6].w); + r20.y = r24.y ? r20.w : r20.y; + if (8 == 0) r20.w = 0; else if (8+8 < 32) { r20.w = (uint)cb5[r23.y+6].x << (32-(8 + 8)); r20.w = (uint)r20.w >> (32-8); } else r20.w = (uint)cb5[r23.y+6].x >> 8; + r21.w = 255 & asint(cb5[r23.y+6].x); + r20.w = r24.z ? r20.w : r21.w; + r20.y = r28.z ? r20.y : r20.w; + r19.x = r19.x ? r19.z : r20.y; + r19.z = cmp((int)r19.x < 80); + r18.z = r19.z ? r19.x : -1; + } + r24.xyz = r25.xyz * cb6[r18.z+288].xxx + r0.xyz; + r19.x = cb6[r18.z+288].y * 5; + r24.xyz = r5.xyz * r19.xxx + r24.xyz; + r19.x = (uint)r18.z << 2; + r28.xyzw = cb6[r19.x+65].xyzw * r24.yyyy; + r28.xyzw = cb6[r19.x+64].xyzw * r24.xxxx + r28.xyzw; + r24.xyzw = cb6[r19.x+66].xyzw * r24.zzzz + r28.xyzw; + r24.xyzw = cb6[r19.x+67].xyzw + r24.xyzw; + r24.xyz = r24.xyz / r24.www; + r28.xyz = cmp(float3(0,0,0) >= r24.xyz); + r29.xyz = cmp(r24.xyz >= float3(1,1,1)); + r19.xz = cb6[r18.z+344].zw + -cb6[r18.z+344].xy; + r19.xz = r24.xy * r19.xz + cb6[r18.z+344].xy; + r20.yw = r19.xz * cb6[400].zw + float2(0.5,0.5); + r20.yw = floor(r20.yw); + r19.xz = r19.xz * cb6[400].zw + -r20.yw; + r30.xyzw = float4(0.5,1,0.5,1) + r19.xxzz; + r31.xyzw = r30.xxzz * r30.xxzz; + r24.xy = float2(1,1) + -r19.xz; + r30.xz = min(float2(0,0), r19.xz); + r32.xy = max(float2(0,0), r19.xz); + r33.xy = float2(0.159999996,0.159999996) * r24.xy; + r32.xy = -r32.xy * r32.xy + r30.yw; + r32.xy = float2(1,1) + r32.xy; + r32.xy = float2(0.159999996,0.159999996) * r32.xy; + r31.xz = float2(0.0799999982,0.0799999982) * r31.xz; + r19.xz = r31.yw * float2(0.5,0.5) + -r19.xz; + r34.xy = float2(0.159999996,0.159999996) * r19.xz; + r19.xz = -r30.xz * r30.xz + r24.xy; + r19.xz = float2(1,1) + r19.xz; + r35.xy = float2(0.159999996,0.159999996) * r19.xz; + r19.xz = float2(0.159999996,0.159999996) * r30.yw; + r34.z = r35.x; + r34.w = r19.x; + r33.z = r32.x; + r33.w = r31.x; + r30.xyzw = r34.zwxz + r33.zwxz; + r35.z = r34.y; + r35.w = r19.z; + r32.z = r33.y; + r32.w = r31.z; + r24.xyw = r35.zyw + r32.zyw; + r31.xyz = r33.xzw / r30.zwy; + r31.xyz = float3(-2.5,-0.5,1.5) + r31.xyz; + r31.xyz = cb6[400].xxx * r31.xyz; + r32.xyz = r32.zyw / r24.xyw; + r32.xyz = float3(-2.5,-0.5,1.5) + r32.xyz; + r32.xyw = cb6[400].yyy * r32.xyz; + r33.xyzw = r30.zwyz * r24.xxxy; + r31.w = r32.x; + r34.xyzw = r20.ywyw * cb6[400].xyxy + r31.xwyw; + r19.x = t6.SampleCmpLevelZero(s3_s, r34.xy, r24.z).x; + r19.z = t6.SampleCmpLevelZero(s3_s, r34.zw, r24.z).x; + r19.z = r33.y * r19.z; + r19.x = r33.x * r19.x + r19.z; + r33.xy = r20.yw * cb6[400].xy + r31.zw; + r19.z = t6.SampleCmpLevelZero(s3_s, r33.xy, r24.z).x; + r19.x = r33.z * r19.z + r19.x; + r32.z = r31.x; + r34.xyzw = r20.ywyw * cb6[400].xyxy + r32.zyzw; + r19.z = t6.SampleCmpLevelZero(s3_s, r34.xy, r24.z).x; + r19.x = r33.w * r19.z + r19.x; + r33.xyzw = r30.xyzw * r24.yyww; + r32.xz = r31.yz; + r31.xyzw = r20.ywyw * cb6[400].xyxy + r32.xyzy; + r19.z = t6.SampleCmpLevelZero(s3_s, r31.xy, r24.z).x; + r19.x = r33.x * r19.z + r19.x; + r19.z = t6.SampleCmpLevelZero(s3_s, r31.zw, r24.z).x; + r19.x = r33.y * r19.z + r19.x; + r19.z = t6.SampleCmpLevelZero(s3_s, r34.zw, r24.z).x; + r19.x = r33.z * r19.z + r19.x; + r19.z = cmp((int)r18.z >= 0); + r28.xyz = (int3)r28.xyz | (int3)r29.xyz; + r21.w = (int)r28.y | (int)r28.x; + r21.w = (int)r28.z | (int)r21.w; + r23.z = (int)r24.z & 0x7fffffff; + r23.z = cmp(0x7f800000 < (uint)r23.z); + r21.w = (int)r21.w | (int)r23.z; + r28.xyzw = r20.ywyw * cb6[400].xyxy + r32.xwzw; + r20.y = t6.SampleCmpLevelZero(s3_s, r28.xy, r24.z).x; + r19.x = r33.w * r20.y + r19.x; + r20.y = r30.y * r24.w; + r20.w = t6.SampleCmpLevelZero(s3_s, r28.zw, r24.z).x; + r19.x = r20.y * r20.w + r19.x; + r19.x = -1 + r19.x; + r18.z = cb6[r18.z+288].w * r19.x + 1; + r18.z = r21.w ? 1 : r18.z; + r18.z = r19.z ? r18.z : 1; + } else { + r18.z = 1; + } + if (r22.w != 0) { + r19.x = dot(r12.xyz, r26.xyz); + r19.z = saturate(cb5[r13.w+6].z * r19.w); + r19.z = r19.z * 0.5 + r3.w; + r19.z = min(1, r19.z); + r19.z = r3.w / r19.z; + r24.xyz = r12.xyz * r19.xxx + -r26.xyz; + r20.y = dot(r27.xyz, r24.xyz); + r19.x = r19.x * r19.x; + r19.x = cb5[r13.w+6].z * cb5[r13.w+6].z + -r19.x; + r19.x = saturate(r20.y / r19.x); + r24.xyz = r26.xyz * r19.xxx + r27.xyz; + r19.x = dot(r24.xyz, r24.xyz); + r19.x = rsqrt(r19.x); + r25.xyz = r24.xyz * r19.xxx; + } else { + r19.z = 1; + } + if (r18.y != 0) { + r18.y = saturate(cb5[r14.w+6].y * r19.w); + r24.xyz = r1.yzw * r2.yyy + r25.xyz; + r19.x = dot(r24.xyz, r24.xyz); + r19.x = max(6.10351562e-05, r19.x); + r19.x = rsqrt(r19.x); + r24.xyz = r24.xyz * r19.xxx; + r19.x = saturate(dot(r5.xyz, r24.xyz)); + r19.w = saturate(dot(r4.xyz, r24.xyz)); + r20.y = cmp(0 < r18.y); + r18.y = r18.y * r18.y; + r20.w = r19.w * 3.5999999 + 0.400000006; + r18.y = r18.y / r20.w; + r18.y = r9.w * r9.w + r18.y; + r18.y = min(1, r18.y); + r18.y = r20.y ? r18.y : r3.w; + r18.y = r18.y * r18.y; + r20.y = r19.x * r18.y + -r19.x; + r19.x = r20.y * r19.x + 1; + r19.w = 1 + -r19.w; + r20.y = r19.w * r19.w; + r20.y = r20.y * r20.y; + r20.w = r20.y * r19.w; + r19.w = -r20.y * r19.w + 1; + r24.xyz = r6.xyz * r19.www + r20.www; + r19.x = r19.x * r19.x; + r19.x = r18.y / r19.x; + r19.x = r19.x * r19.z; + r19.z = -r9.x * r18.y + r9.x; + r19.z = r19.z * r9.x + r18.y; + r19.z = sqrt(r19.z); + r19.w = -r20.x * r18.y + r20.x; + r18.y = r19.w * r20.x + r18.y; + r18.y = sqrt(r18.y); + r18.y = r18.y * r9.x; + r18.y = r20.x * r19.z + r18.y; + r18.y = 9.99999975e-05 + r18.y; + r18.y = 0.5 / r18.y; + r18.y = r19.x * r18.y; + r19.xzw = r24.xyz * r18.yyy; + r19.xzw = min(float3(2048,2048,2048), r19.xzw); + r20.yw = r20.xz * float2(0.96875,0.96875) + float2(0.015625,0.015625); + r18.y = t10.SampleLevel(s0_s, r20.yw, 0).x; + r18.y = r18.y * r5.w; + r18.y = r18.y * r1.x; + r18.y = r18.y / r4.w; + r24.xyz = r18.yyy * r16.xyz; + r24.xyz = r24.xyz / r17.xyz; + r19.xzw = r24.xyz + r19.xzw; + r19.xzw = cb5[r14.w+6].zzz * r19.xzw; + r19.xzw = max(float3(0,0,0), r19.xzw); + r19.xzw = min(float3(1000,1000,1000), r19.xzw); + r24.xyz = r20.xxx * r7.xyw; + r19.xzw = r19.xzw * r20.xxx + r24.xyz; + r20.xyw = cb5[r17.w+6].xyz * r18.xxx; + r18.xyz = r20.xyw * r18.zzz; + r18.xyz = r18.xyz * r15.www; + r18.xyz = r19.xzw * r18.xyz; + } else { + r18.xyz = float3(0,0,0); + } + } else { + if (r16.w == 0) { + r15.w = cb5[r13.w+6].y * 0.5 + 0.5; + r24.x = -abs(cb5[r13.w+6].x) + r15.w; + r24.y = cb5[r13.w+6].y + -r24.x; + r15.w = 1 + -abs(r24.x); + r15.w = r15.w + -abs(r24.y); + r15.w = max(0.00048828125, r15.w); + r16.w = cmp(cb5[r13.w+6].x >= 0); + r24.z = r16.w ? r15.w : -r15.w; + r15.w = dot(r24.xyz, r24.xyz); + r15.w = rsqrt(r15.w); + r19.xzw = r24.xyz * r15.www; + r20.xyw = cb5[r23.x+6].xyz + -r0.xyz; + r15.w = dot(r20.xyw, r20.xyw); + r16.w = rsqrt(r15.w); + r24.xyz = r20.xyw * r16.www; + r14.w = (int)cb5[r14.w+6].w; + r25.xyz = cb5[r13.w+6].zzz * r19.xzw; + r26.xyz = -r25.xyz * float3(0.5,0.5,0.5) + r20.xyw; + r25.xyz = r25.xyz * float3(0.5,0.5,0.5) + r20.xyw; + r16.w = (uint)cb5[r17.w+6].w; + r16.w = (int)r16.w & 1; + r17.w = cmp((int)r16.w == 0); + r17.w = ~(int)r17.w; + r21.w = cmp(0 < cb5[r13.w+6].z); + r17.w = r17.w ? r21.w : 0; + r21.w = dot(r26.xyz, r26.xyz); + r21.w = sqrt(r21.w); + r22.w = dot(r25.xyz, r25.xyz); + r22.w = sqrt(r22.w); + r23.z = dot(r26.xyz, r25.xyz); + r21.w = r21.w * r22.w + r23.z; + r21.w = r21.w * 0.5 + 1; + r21.w = 1 / r21.w; + r21.w = r17.w ? r21.w : 1; + r22.w = cmp(cb5[r23.w+6].w < 0); + if (r22.w != 0) { + r22.w = cb5[r23.x+6].w * cb5[r23.x+6].w; + r22.w = r22.w * r15.w; + r22.w = -r22.w * r22.w + 1; + r22.w = max(0, r22.w); + r15.w = 1 + r15.w; + r15.w = 1 / r15.w; + r23.z = r17.w ? 1.000000 : 0; + r24.w = r21.w + -r15.w; + r15.w = r23.z * r24.w + r15.w; + r22.w = r22.w * r22.w; + r15.w = r22.w * r15.w; + } else { + r25.xyz = cb5[r23.x+6].www * r20.xyw; + r22.w = dot(r25.xyz, r25.xyz); + r22.w = min(1, r22.w); + r22.w = 1 + -r22.w; + r22.w = log2(r22.w); + r22.w = cb5[r23.w+6].w * r22.w; + r22.w = exp2(r22.w); + r15.w = r22.w * r21.w; + } + r19.x = dot(r24.xyz, -r19.xzw); + r19.x = -cb5[r13.w+6].z + r19.x; + r19.x = saturate(cb5[r13.w+6].w * r19.x); + r19.x = r19.x * r19.x; + r19.x = r16.w ? 1 : r19.x; + r15.w = r19.x * r15.w; + r17.w = ~(int)r17.w; + r19.x = cmp((int)r14.w >= 0); + r17.w = r17.w ? r19.x : 0; + if (r17.w != 0) { + if (r16.w == 0) { + r17.w = (uint)r14.w << 2; + r19.xzw = cb7[r17.w+33].xyw * r0.yyy; + r19.xzw = cb7[r17.w+32].xyw * r0.xxx + r19.xzw; + r19.xzw = cb7[r17.w+34].xyw * r0.zzz + r19.xzw; + r19.xzw = cb7[r17.w+35].xyw + r19.xzw; + r19.xz = saturate(r19.xz / r19.ww); + r19.xz = r19.xz * cb7[r14.w+0].zw + cb7[r14.w+0].xy; + } else { + r17.w = (uint)r14.w << 2; + r25.x = dot(-r20.xyw, cb7[r17.w+32].xyz); + r25.y = dot(-r20.xyw, cb7[r17.w+33].xyz); + r25.z = dot(-r20.xyw, cb7[r17.w+34].xyz); + r17.w = cmp(abs(r25.x) < abs(r25.y)); + r17.w = r17.w ? 0.000000 : 0; + r19.w = dot(abs(r25.xy), icb[r17.w+0].xy); + r19.w = cmp(r19.w < abs(r25.z)); + r17.w = r19.w ? 2 : r17.w; + r19.w = dot(r25.xyz, icb[r17.w+0].xyz); + r19.w = cmp(r19.w < 0); + bitmask.w = ((~(-1 << 31)) << 1) & 0xffffffff; r17.w = (((uint)r17.w << 1) & bitmask.w) | ((uint)r19.w & ~bitmask.w); + r19.w = (uint)r17.w >> 1; + r19.w = dot(r25.xyz, icb[r19.w+0].xyz); + r20.x = 0.000244140625 / cb7[r14.w+0].w; + r20.x = 0.5 + -r20.x; + r20.y = (uint)r17.w; + r20.w = cmp((uint)r17.w < 2); + r20.w = r20.w ? 0.000000 : 0; + r20.w = dot(r25.xz, icb[r20.w+0].xz); + r20.w = icb[r17.w+4].z * r20.w; + r20.w = r20.w / abs(r19.w); + r20.y = r20.w * r20.x + r20.y; + r20.y = 0.5 + r20.y; + r26.x = saturate(0.166666672 * r20.y); + r20.y = -1 + (int)icb[r17.w+4].y; + r20.y = dot(r25.yz, icb[r20.y+0].xy); + r17.w = icb[r17.w+4].w * r20.y; + r17.w = r17.w / abs(r19.w); + r26.y = saturate(-r17.w * r20.x + 0.5); + r19.xz = r26.xy * cb7[r14.w+0].zw + cb7[r14.w+0].xy; + } + r14.w = t18.SampleLevel(s0_s, r19.xz, 0).x; + r15.w = r15.w * r14.w; + } + r14.w = cmp(0 < r15.w); + if (r14.w != 0) { + if (r16.w == 0) { + r14.w = (int)cb5[r23.y+6].x; + } else { + r19.xzw = -cb5[r23.x+6].xyz + r0.xyz; + r20.xyw = cmp(abs(r19.zww) < abs(r19.xxz)); + r15.w = r20.y ? r20.x : 0; + r19.xzw = cmp(float3(0,0,0) < r19.xzw); + r16.w = asuint(cb5[r13.w+6].w) >> 24; + if (8 == 0) r20.x = 0; else if (8+16 < 32) { r20.x = (uint)cb5[r13.w+6].w << (32-(8 + 16)); r20.x = (uint)r20.x >> (32-8); } else r20.x = (uint)cb5[r13.w+6].w >> 16; + if (8 == 0) r20.y = 0; else if (8+8 < 32) { r20.y = (uint)cb5[r13.w+6].w << (32-(8 + 8)); r20.y = (uint)r20.y >> (32-8); } else r20.y = (uint)cb5[r13.w+6].w >> 8; + r16.w = r19.x ? r16.w : r20.x; + r13.w = 255 & asint(cb5[r13.w+6].w); + r13.w = r19.z ? r20.y : r13.w; + if (8 == 0) r17.w = 0; else if (8+8 < 32) { r17.w = (uint)cb5[r23.y+6].x << (32-(8 + 8)); r17.w = (uint)r17.w >> (32-8); } else r17.w = (uint)cb5[r23.y+6].x >> 8; + r19.x = 255 & asint(cb5[r23.y+6].x); + r17.w = r19.w ? r17.w : r19.x; + r13.w = r20.w ? r13.w : r17.w; + r13.w = r15.w ? r16.w : r13.w; + r15.w = cmp((int)r13.w < 80); + r14.w = r15.w ? r13.w : -1; + } + r19.xzw = r24.xyz * cb6[r14.w+288].xxx + r0.xyz; + r13.w = cb6[r14.w+288].y * 5; + r19.xzw = r5.xyz * r13.www + r19.xzw; + r13.w = (uint)r14.w << 2; + r23.xyzw = cb6[r13.w+65].xyzw * r19.zzzz; + r23.xyzw = cb6[r13.w+64].xyzw * r19.xxxx + r23.xyzw; + r23.xyzw = cb6[r13.w+66].xyzw * r19.wwww + r23.xyzw; + r23.xyzw = cb6[r13.w+67].xyzw + r23.xyzw; + r19.xzw = r23.xyz / r23.www; + r20.xyw = cmp(float3(0,0,0) >= r19.xzw); + r23.xyz = cmp(r19.xzw >= float3(1,1,1)); + r24.xy = cb6[r14.w+344].zw + -cb6[r14.w+344].xy; + r19.xz = r19.xz * r24.xy + cb6[r14.w+344].xy; + r24.xy = r19.xz * cb6[400].zw + float2(0.5,0.5); + r24.xy = floor(r24.xy); + r19.xz = r19.xz * cb6[400].zw + -r24.xy; + r25.xyzw = float4(0.5,1,0.5,1) + r19.xxzz; + r26.xyzw = r25.xxzz * r25.xxzz; + r24.zw = float2(1,1) + -r19.xz; + r25.xz = min(float2(0,0), r19.xz); + r27.xy = max(float2(0,0), r19.xz); + r28.xy = float2(0.159999996,0.159999996) * r24.zw; + r27.xy = -r27.xy * r27.xy + r25.yw; + r27.xy = float2(1,1) + r27.xy; + r27.xy = float2(0.159999996,0.159999996) * r27.xy; + r26.xz = float2(0.0799999982,0.0799999982) * r26.xz; + r19.xz = r26.yw * float2(0.5,0.5) + -r19.xz; + r29.xy = float2(0.159999996,0.159999996) * r19.xz; + r19.xz = -r25.xz * r25.xz + r24.zw; + r19.xz = float2(1,1) + r19.xz; + r30.xy = float2(0.159999996,0.159999996) * r19.xz; + r19.xz = float2(0.159999996,0.159999996) * r25.yw; + r29.z = r30.x; + r29.w = r19.x; + r28.z = r27.x; + r28.w = r26.x; + r25.xyzw = r29.zwxz + r28.zwxz; + r30.z = r29.y; + r30.w = r19.z; + r27.z = r28.y; + r27.w = r26.z; + r26.xyz = r30.zyw + r27.zyw; + r28.xyz = r28.xzw / r25.zwy; + r28.xyz = float3(-2.5,-0.5,1.5) + r28.xyz; + r28.xyz = cb6[400].xxx * r28.xyz; + r27.xyz = r27.zyw / r26.xyz; + r27.xyz = float3(-2.5,-0.5,1.5) + r27.xyz; + r27.xyw = cb6[400].yyy * r27.xyz; + r29.xyzw = r26.xxxy * r25.zwyz; + r28.w = r27.x; + r30.xyzw = r24.xyxy * cb6[400].xyxy + r28.xwyw; + r13.w = t6.SampleCmpLevelZero(s3_s, r30.xy, r19.w).x; + r15.w = t6.SampleCmpLevelZero(s3_s, r30.zw, r19.w).x; + r15.w = r29.y * r15.w; + r13.w = r29.x * r13.w + r15.w; + r19.xz = r24.xy * cb6[400].xy + r28.zw; + r15.w = t6.SampleCmpLevelZero(s3_s, r19.xz, r19.w).x; + r13.w = r29.z * r15.w + r13.w; + r27.z = r28.x; + r30.xyzw = r24.xyxy * cb6[400].xyxy + r27.zyzw; + r15.w = t6.SampleCmpLevelZero(s3_s, r30.xy, r19.w).x; + r13.w = r29.w * r15.w + r13.w; + r29.xyzw = r26.yyzz * r25.xyzw; + r27.xz = r28.yz; + r28.xyzw = r24.xyxy * cb6[400].xyxy + r27.xyzy; + r15.w = t6.SampleCmpLevelZero(s3_s, r28.xy, r19.w).x; + r13.w = r29.x * r15.w + r13.w; + r15.w = t6.SampleCmpLevelZero(s3_s, r28.zw, r19.w).x; + r13.w = r29.y * r15.w + r13.w; + r15.w = t6.SampleCmpLevelZero(s3_s, r30.zw, r19.w).x; + r13.w = r29.z * r15.w + r13.w; + r15.w = cmp((int)r14.w >= 0); + r20.xyw = (int3)r20.xyw | (int3)r23.xyz; + r16.w = (int)r20.y | (int)r20.x; + r16.w = (int)r20.w | (int)r16.w; + r17.w = (int)r19.w & 0x7fffffff; + r17.w = cmp(0x7f800000 < (uint)r17.w); + r16.w = (int)r16.w | (int)r17.w; + r23.xyzw = r24.xyxy * cb6[400].xyxy + r27.xwzw; + r17.w = t6.SampleCmpLevelZero(s3_s, r23.xy, r19.w).x; + r13.w = r29.w * r17.w + r13.w; + r17.w = r26.z * r25.y; + r19.x = t6.SampleCmpLevelZero(s3_s, r23.zw, r19.w).x; + r13.w = r17.w * r19.x + r13.w; + r13.w = -1 + r13.w; + r13.w = cb6[r14.w+288].w * r13.w + 1; + r13.w = r16.w ? 1 : r13.w; + r13.w = r15.w ? r13.w : 1; + } else { + r13.w = 1; + } + } else { + r13.w = 1; + } + r10.w = r13.w * r10.w; + r18.xyz = float3(0,0,0); + } + r22.xyz = r22.xyz + r18.xyz; + r12.w = r14.z; + } + r6.w = r10.w; + r21.xyz = r22.xyz + r21.xyz; + r7.z = (int)r7.z + 1; + } + r0.x = dot(r13.xyz, float3(0.212672904,0.715152204,0.0721750036)); + r1.xyz = r13.xyz + -r0.xxx; + r0.xzw = cb0[184].www * r1.xyz + r0.xxx; + + // Reduce clustered light contribution on glass + if (GLASS_TRANSPARENCY > 0.5f) { + r21.xyz *= 0.5f; + } + + r1.xyz = r21.xyz * r6.www + r15.xyz; + r0.xzw = r0.xzw * cb0[184].xyz + r1.xyz; + + // Apply glass brightness reduction + if (GLASS_TRANSPARENCY > 0.5f) { + r0.xzw *= 0.65f; + } + r1.x = r0.y * cb0[156].w + cb0[157].w; + r1.y = r2.x * cb0[154].w + -cb0[153].w; + r1.xy = max(float2(0.00999999978,0), r1.xy); + r1.z = -1.44269502 * r1.x; + r1.z = exp2(r1.z); + r1.z = 1 + -r1.z; + r1.x = r1.z / r1.x; + r1.z = r0.y * cb0[156].w + cb0[158].w; + r1.z = 1.44269502 * r1.z; + r1.z = exp2(r1.z); + r1.x = r1.x * r1.z; + r1.x = -r1.y * r1.x; + r1.xyz = cb0[155].xyz * r1.xxx; + r1.xyz = float3(1.44269502,1.44269502,1.44269502) * r1.xyz; + r1.xyz = exp2(r1.xyz); + r1.w = dot(-r4.xyz, cb0[154].xyz); + r2.y = cb0[155].w * cb0[155].w + 1; + r2.z = dot(r1.ww, cb0[155].ww); + r2.y = r2.y + -r2.z; + r2.z = cmp(0 < cb0[163].z); + if (r2.z != 0) { + r11.w = 7 & asint(cb0[108].w); + r5.xyz = mad((int3)r11.xyw, int3(0x19660d,0x19660d,0x19660d), int3(0x3c6ef35f,0x3c6ef35f,0x3c6ef35f)); + r2.z = mad((int)r5.y, (int)r5.z, (int)r5.x); + r2.w = mad((int)r5.z, (int)r2.z, (int)r5.y); + r3.w = mad((int)r2.z, (int)r2.w, (int)r5.z); + r5.x = mad((int)r2.w, (int)r3.w, (int)r2.z); + r2.z = dot(-r4.xyz, -r3.xyz); + r3.x = -cb0[44].y + r0.y; + r3.y = cmp(5.96046448e-08 < r2.z); + r2.z = 1 / r2.z; + r2.z = r3.y ? r2.z : 0; + r2.z = cb0[163].w * r2.z; + r3.y = 1 / r2.x; + r3.z = r3.y * r2.z; + r4.x = r3.z * r3.x + cb0[44].y; + r3.x = -r3.z * r3.x + r3.x; + r3.z = cb0[159].z * r3.x; + r3.x = cb0[162].x * r3.x; + r3.xz = max(float2(-127,-127), r3.xz); + r4.y = -cb0[159].x + r4.x; + r4.y = cb0[159].z * r4.y; + r4.y = max(-127, r4.y); + r4.y = exp2(-r4.y); + r4.y = cb0[159].y * r4.y; + r4.z = cmp(5.96046448e-08 < abs(r3.z)); + r4.w = exp2(-r3.z); + r4.w = 1 + -r4.w; + r4.w = r4.w / r3.z; + r3.z = -r3.z * 0.240226507 + 0.693147182; + r3.z = r4.z ? r4.w : r3.z; + r4.x = -cb0[162].z + r4.x; + r4.x = cb0[162].x * r4.x; + r4.x = max(-127, r4.x); + r4.x = exp2(-r4.x); + r4.x = cb0[162].y * r4.x; + r4.z = cmp(5.96046448e-08 < abs(r3.x)); + r4.w = exp2(-r3.x); + r4.w = 1 + -r4.w; + r4.w = r4.w / r3.x; + r3.x = -r3.x * 0.240226507 + 0.693147182; + r3.x = r4.z ? r4.w : r3.x; + r3.x = r4.x * r3.x; + r3.x = r4.y * r3.z + r3.x; + r2.z = -r2.z * r3.y + 1; + r2.z = r2.z * r2.x; + r2.z = r3.x * r2.z; + r2.z = exp2(-r2.z); + r2.z = min(1, r2.z); + r2.z = max(cb0[161].w, r2.z); + r3.xy = saturate(r2.xx * cb0[160].yw + cb0[160].xz); + r2.z = r3.x + r2.z; + r2.z = r2.z + r3.y; + r2.z = min(1, r2.z); + r5.y = mad((int)r3.w, (int)r5.x, (int)r2.w); + r3.xy = (uint2)r5.xy >> int2(16,16); + r3.xy = (uint2)r3.xy; + r3.xy = r3.xy * float2(3.05180438e-05,3.05180438e-05) + float2(-1,-1); + r3.xy = r3.xy * cb0[167].ww + r14.xy; + r3.xy = cb0[165].xy * r3.xy; + r2.w = r11.z * cb0[164].x + cb0[164].y; + r2.w = log2(r2.w); + r2.w = cb0[164].z * r2.w; + r3.z = r2.w / cb0[163].z; + r3.xyzw = t17.SampleLevel(s0_s, r3.xyz, 0).xyzw; + r2.w = -cb0[166].z + r11.z; + r2.w = saturate(1000000 * r2.w); + r3.xyzw = float4(-0,-0,-0,-1) + r3.xyzw; + r3.xyzw = r2.wwww * r3.xyzw + float4(0,0,0,1); + r2.w = 1 + -r2.z; + r4.xyz = cb0[161].xyz * r2.www; + r3.xyz = r4.xyz * r3.www + r3.xyz; + r2.z = r3.w * r2.z; + } else { + r0.y = -cb0[44].y + r0.y; + r2.w = cb0[159].z * r0.y; + r2.w = max(-127, r2.w); + r0.y = cb0[162].x * r0.y; + r0.y = max(-127, r0.y); + r3.w = -cb0[159].x + cb0[44].y; + r3.w = cb0[159].z * r3.w; + r3.w = max(-127, r3.w); + r3.w = exp2(-r3.w); + r3.w = cb0[159].y * r3.w; + r4.x = cmp(5.96046448e-08 < abs(r2.w)); + r4.y = exp2(-r2.w); + r4.y = 1 + -r4.y; + r4.y = r4.y / r2.w; + r2.w = -r2.w * 0.240226507 + 0.693147182; + r2.w = r4.x ? r4.y : r2.w; + r4.x = -cb0[162].z + cb0[44].y; + r4.x = cb0[162].x * r4.x; + r4.x = max(-127, r4.x); + r4.x = exp2(-r4.x); + r4.x = cb0[162].y * r4.x; + r4.y = cmp(5.96046448e-08 < abs(r0.y)); + r4.z = exp2(-r0.y); + r4.z = 1 + -r4.z; + r4.z = r4.z / r0.y; + r0.y = -r0.y * 0.240226507 + 0.693147182; + r0.y = r4.y ? r4.z : r0.y; + r0.y = r4.x * r0.y; + r0.y = r3.w * r2.w + r0.y; + r0.y = r0.y * r2.x; + r0.y = exp2(-r0.y); + r0.y = min(1, r0.y); + r0.y = max(cb0[161].w, r0.y); + r2.xw = saturate(r2.xx * cb0[160].yw + cb0[160].xz); + r0.y = r2.x + r0.y; + r0.y = r0.y + r2.w; + r2.z = min(1, r0.y); + r0.y = 1 + -r2.z; + r3.xyz = cb0[161].xyz * r0.yyy; + } + r4.xyz = r2.zzz * r1.xyz; + r0.y = r1.w * r1.w + 1; + r0.y = 0.0596831031 * r0.y; + r5.xyz = cb0[156].xyz * r0.yyy + cb0[158].xyz; + r0.y = -cb0[155].w * cb0[155].w + 1; + r1.w = 12.566371 * r2.y; + r2.x = sqrt(r2.y); + r1.w = r2.x * r1.w; + r1.w = max(0.00100000005, r1.w); + r0.y = r0.y / r1.w; + r2.xyw = saturate(cb0[157].xyz * r0.yyy + r5.xyz); + r2.xyw = float3(255,255,255) * r2.xyw; + r1.xyz = float3(1,1,1) + -r1.xyz; + r1.xyz = r2.xyw * r1.xyz; + r1.xyz = r1.xyz * r2.zzz + r3.xyz; + + // Reduce fog/atmospheric contribution + if (GLASS_TRANSPARENCY > 0.5f) { + // Boost transmittance to reduce fog density on glass + float3 boostedTrans = lerp(r4.xyz, float3(1,1,1), 0.5f); + float3 reducedInscatter = r1.xyz * 0.35f; + r8.xyz = r0.xzw * boostedTrans + reducedInscatter; + } else { + // Vanilla behavior + r8.xyz = r0.xzw * r4.xyz + r1.xyz; + } + r0.xy = float2(0.5,-0.5) * r10.xy; + r0.xy = sqrt(abs(r0.xy)); + r0.xy = sqrt(r0.xy); + r10.z = -r10.y; + r0.zw = cmp(float2(0,0) < r10.xz); + r1.xy = cmp(r10.xz < float2(0,0)); + r0.zw = (int2)-r0.zw + (int2)r1.xy; + r0.zw = (int2)r0.zw; + r0.xy = r0.xy * r0.zw; + r0.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); + r0.z = (uint)v7.x << 4; + r0.z = max(cb1[r0.z+4].y, cb1[r0.z+4].z); + r0.z = -0.100000024 + r0.z; + r0.w = cmp(0 < r0.z); + r0.z = cmp(r0.z < 0); + r0.z = (int)-r0.w + (int)r0.z; + r0.z = (int)r0.z; + r0.z = saturate(r0.z); + r1.xy = float2(0.5,0.5) + -r0.xy; + r0.xy = r0.zz * r1.xy + r0.xy; + o1.xy = min(float2(1,1), r0.xy); + r0.x = dot(r8.xyz, float3(0.212672904,0.715152204,0.0721750036)); + r0.x = r0.x * r8.w; + r0.x = max(r0.x, r8.w); + r0.x = saturate(10 * r0.x); + r0.x = cmp(0.5 < r0.x); + o1.z = r0.x ? 1.000000 : 0; + + // Modifed Glass Final Output + if (GLASS_TRANSPARENCY > 0.5f) { + float3 glassColor = r8.xyz; + float glassLuma = dot(glassColor, float3(0.2126f, 0.7152f, 0.0722f)); + float maxBrightness = 2.0f; + if (glassLuma > 0.5f) { + float compression = 0.5f + (maxBrightness - 0.5f) * (1.0f - exp(-(glassLuma - 0.5f) / (maxBrightness - 0.5f))); + float scale = compression / max(glassLuma, 0.001f); + glassColor *= scale; + } + + o0.xyz = glassColor; + o0.w = r8.w; + } else { + // Vanilla output + o0.xyzw = r8.xyzw; + } + o1.w = 0; + return; +} \ No newline at end of file diff --git a/src/games/endfield/shadows/cloud-shadows_0x61FA72DD.ps_5_0.hlsl b/src/games/endfield/shadows/cloud-shadows_0x61FA72DD.ps_5_0.hlsl index c4f83f6005..1225476fee 100644 --- a/src/games/endfield/shadows/cloud-shadows_0x61FA72DD.ps_5_0.hlsl +++ b/src/games/endfield/shadows/cloud-shadows_0x61FA72DD.ps_5_0.hlsl @@ -372,13 +372,13 @@ void main( r0.y = -1 + r0.y; r0.y = cb0[175].z * r0.y + 1; - if (SHADOW_HARDENING >= 1.f) { - r0.y = 1.0 + (r0.y - 1.0) * 2.0; - - // Soften cloud shadow transitions for diffused look - //r0.y = smoothstep(0.0, 1.0, r0.y); - //r0.y = lerp(r0.y, 1.0, 0.25); - } + //if (SHADOW_HARDENING >= 1.f) { + // r0.y = 1.0 + (r0.y - 1.0) * 2.0; + // + // // Soften cloud shadow transitions for diffused look + // //r0.y = smoothstep(0.0, 1.0, r0.y); + // //r0.y = lerp(r0.y, 1.0, 0.25); + //} r0.x = r0.x * r0.y; } diff --git a/src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl b/src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl index 28cfa687e9..674518ae94 100644 --- a/src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl +++ b/src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl @@ -380,13 +380,15 @@ void main(uint3 vThreadIDInGroup : SV_GroupThreadID, uint3 vThreadGroupID : SV_G r0.y = saturate(r1.w * cb1[0].z + r0.y); r0.y = min(r0.y, r2.y); r0.y = -1 + r0.y; - r5.yw = r1.xy * cb1[3].zw + float2(-0.5,-0.5); - r5.yw = abs(r5.yw) * float2(12,12) + float2(-4.80000019,-4.80000019); - r5.yw = max(float2(0,0), r5.yw); - r1.w = dot(r5.yw, r5.yw); - r1.w = 1 + -r1.w; - r1.w = max(0, r1.w); - r0.y = r1.w * r0.y; + + // Removed screen edge fade for contact shadows + // r5.yw = r1.xy * cb1[3].zw + float2(-0.5,-0.5); + // r5.yw = abs(r5.yw) * float2(12,12) + float2(-4.80000019,-4.80000019); + // r5.yw = max(float2(0,0), r5.yw); + // r1.w = dot(r5.yw, r5.yw); + // r1.w = 1 + -r1.w; + // r1.w = max(0, r1.w); + // r0.y = r1.w * r0.y; if (SHADOW_HARDENING>= 1.f) { r0.y = r0.y * 4.0; diff --git a/src/games/endfield/shared.h b/src/games/endfield/shared.h index 471a406e33..8e301166ca 100644 --- a/src/games/endfield/shared.h +++ b/src/games/endfield/shared.h @@ -79,6 +79,8 @@ struct ShaderInjectData { float reno_drt_tone_map_method; float status_text_opacity; float ping_text_opacity; + float ui_disable_ping; + float ui_disable_uid; float custom_random; float custom_grain_strength; float vignette_strength; @@ -87,9 +89,14 @@ struct ShaderInjectData { float bloom_strength; float godrays_intensity; float perchannelblowout; + float fog_modification; float shadow_hardening; float chromatic_aberration_strength; - float fog_modification; + float disable_game_ao; + float ssr_gi_intensity; + float metallic_ibl_intensity; + float cubemap_ambient_link; + float glass_transparency; }; #ifndef __cplusplus @@ -149,6 +156,7 @@ cbuffer shader_injection : register(b13) { #define SHADOW_HARDENING shader_injection.shadow_hardening #define CHROMATIC_ABERRATION_STRENGTH shader_injection.chromatic_aberration_strength #define FOG_MODIFICATION shader_injection.fog_modification +#define GLASS_TRANSPARENCY shader_injection.glass_transparency #include "../../shaders/renodx.hlsl" diff --git a/src/games/endfield/ssr/0xE92EE541.cs_5_0.hlsl b/src/games/endfield/ssr/0xE92EE541.cs_5_0.hlsl new file mode 100644 index 0000000000..92c81bd918 --- /dev/null +++ b/src/games/endfield/ssr/0xE92EE541.cs_5_0.hlsl @@ -0,0 +1,465 @@ +// ---- Created with 3Dmigoto v1.4.1 on Tue Feb 3 19:30:39 2026 +#include "../shared.h" + +RWTexture2D u0 : register(u0); +RWTexture2D u1 : register(u1); +RWTexture2D u2 : register(u2); + +Texture2D t5 : register(t5); + +Texture3D t4 : register(t4); + +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerComparisonState s3_s : register(s3); + +SamplerState s2_s : register(s2); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb2 : register(b2) +{ + float4 cb2[5]; +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[6]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[234]; +} + +// 3Dmigoto declarations +#define cmp - + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xy = (int2)vThreadID.xy; + r0.xy = float2(0.5,0.5) + r0.xy; + r0.zw = cb1[0].zw * r0.xy; + r1.z = t0.SampleLevel(s0_s, r0.zw, 0).x; + r2.x = cb0[84].z * r1.z + cb0[84].w; + r1.xy = r0.zw * float2(2,2) + float2(-1,-1); + r3.xyzw = cb0[13].xyzw * r1.yyyy; + r3.xyzw = cb0[12].xyzw * r1.xxxx + r3.xyzw; + r3.xyzw = cb0[14].xyzw * r1.zzzz + r3.xyzw; + r3.xyzw = cb0[15].xyzw + r3.xyzw; + r3.xyz = r3.xyz / r3.www; + r2.yzw = t1.SampleLevel(s0_s, r0.zw, 0).xyz; + r2.yz = r2.yz * float2(2,2) + float2(-1,-1); + r4.x = dot(float2(1,1), abs(r2.yz)); + r4.y = 1 + -r4.x; + r4.w = cmp(r4.y < 0); + r5.xy = cmp(r2.yz >= float2(0,0)); + r5.zw = float2(1,1) + -abs(r2.zy); + r5.xy = r5.xy ? float2(1,1) : float2(-1,-1); + r5.xy = r5.zw * r5.xy; + r4.xz = r4.ww ? r5.xy : r2.yz; + r2.y = dot(r4.xyz, r4.xyz); + r2.y = rsqrt(r2.y); + r4.xzw = r4.xyz * r2.yyy; + r5.xy = t5.SampleLevel(s1_s, r0.zw, 0).xy; + r6.xyz = cb0[5].xyz * -r3.yyy; + r6.xyz = cb0[4].xyz * r3.xxx + r6.xyz; + r6.xyz = cb0[6].xyz * r3.zzz + r6.xyz; + r6.xyz = cb0[7].xyz + r6.xyz; + r5.zw = cmp(float2(0.5,0.5) < cb0[226].xy); + if (r5.z != 0) { + r2.z = abs(r4.x) + abs(r4.z); + r2.z = r2.z + abs(r4.w); + r2.z = 1 / r2.z; + r7.xyz = abs(r4.xzw) * r2.zzz; + r8.xyzw = float4(0,1,0.707105994,0) * r7.xxyy; + r7.xyw = r8.xxy + r8.zwz; + r7.xyz = r7.zzz * float3(1,0,0) + r7.xyw; + r8.xyz = cb0[229].xxx * r6.xyz; + r2.z = t4.SampleLevel(s2_s, r8.xyz, 0).x; + r2.z = r2.z * 2 + -1; + r7.xyz = r7.xyz * r2.zzz; + r2.z = abs(r4.z); + r2.z = -0.699999988 + r2.z; + r2.z = saturate(4 * r2.z); + r5.z = r2.z * -2 + 3; + r2.z = r2.z * r2.z; + r2.z = r5.z * r2.z; + r5.z = cb0[229].y + -cb0[229].z; + r2.z = r2.z * r5.z + cb0[229].z; + r7.xyz = r7.xyz * r2.zzz; + } else { + r7.xyz = float3(0,0,0); + } + r2.y = -r4.y * r2.y + -0.200000003; + if (r5.w != 0) { + r8.xyz = cb0[233].zzz * r4.xzw; + r9.xyz = cb0[225].yyy * float3(0,1,0); + r8.xyz = r8.xyz * cb0[225].xxx + r9.xyz; + r2.z = max(0, -r4.z); + r2.z = min(0.899999976, r2.z); + r2.z = 1 + -r2.z; + r4.y = saturate(-10 * r2.y); + r5.z = r4.y * -2 + 3; + r4.y = r4.y * r4.y; + r4.y = r5.z * r4.y; + r4.y = max(0.100000001, r4.y); + r4.y = min(1, r4.y); + r2.z = r4.y * r2.z; + r8.xyz = r8.xyz * r2.zzz + r6.xyz; + r7.xyz = r8.xyz + r7.xyz; + r8.xyz = cb2[1].xyz * r7.yyy; + r7.xyw = cb2[0].xyz * r7.xxx + r8.xyz; + r7.xyz = cb2[2].xyz * r7.zzz + r7.xyw; + r7.xyz = cb2[3].xyz + r7.xyz; + r8.x = r7.x * 0.5 + cb2[4].x; + r2.z = r7.y * 0.5 + 0.5; + r8.z = cb2[4].y + -r2.z; + r5.zw = float2(0.5,1) + r8.xz; + r2.z = max(0.00048828125, r7.z); + r2.z = t3.SampleCmpLevelZero(s3_s, r5.zw, r2.z).x; + } else { + r2.z = 1; + } + r5.zw = -cb0[44].xz + r6.xz; + r4.y = saturate(r4.z); + r6.x = -cb0[230].w + 1; + r4.y = r4.y * r6.x + cb0[230].w; + r6.x = r4.y * r2.z; + r6.y = cb0[222].w * 0.0500000119; + r5.z = max(abs(r5.z), abs(r5.w)); + r5.z = -cb0[222].w * 0.699999988 + r5.z; + r5.w = 1 / r6.y; + r5.z = saturate(r5.z * r5.w); + r5.w = r5.z * -2 + 3; + r5.z = r5.z * r5.z; + r5.z = r5.w * r5.z; + r2.z = -r4.y * r2.z + 1; + r2.z = r5.z * r2.z + r6.x; + r2.z = 1 + -r2.z; + r4.y = r5.x * r2.z; + r5.z = 1 + -r2.w; + r5.w = saturate(r5.z * cb0[222].z + cb0[222].y); + r5.w = r5.w * -0.299999952 + 0.899999976; + r6.x = sqrt(r5.z); + r5.w = r6.x + r5.w; + r5.w = -0.600000024 + r5.w; + r5.w = min(1, r5.w); + r5.w = max(r5.w, r5.z); + r5.w = min(0.99000001, r5.w); + r6.x = saturate(-cb0[222].x + 2); + r6.x = cb0[222].x * r6.x; + r2.y = saturate(3.33333325 * r2.y); + r6.y = r2.y * -2 + 3; + r2.y = r2.y * r2.y; + r2.y = -r6.y * r2.y + 1; + r2.y = r6.x * r2.y; + r2.z = -r5.x * r2.z + 1; + r2.y = r2.y * r2.z; + r2.z = r5.w + -r5.z; + r2.y = r2.y * r2.z + r5.z; + r2.y = 1 + -r2.y; + r2.z = min(1, r2.y); + r5.x = min(r5.x, r5.y); + r2.y = r2.y + -r2.z; + r2.y = r5.x * r2.y + r2.z; + r2.z = r2.w + -r2.y; + r2.y = r4.y * r2.z + r2.y; + r2.z = r2.y * r2.y; + r2.z = r2.z * r2.z; + r5.xyz = cb0[1].xyz * r4.zzz; + r5.xyz = cb0[0].xyz * r4.xxx + r5.xyz; + r5.xyz = cb0[2].xyz * r4.www + r5.xyz; + r6.xy = float2(-0.0700000003,0.0199999996) / r2.xx; + r4.y = 1.44269502 * r6.x; + r4.y = exp2(r4.y); + r4.y = r4.y + r4.y; + r4.y = max(0.125, r4.y); + r4.y = min(1, r4.y); + r4.y = cb1[3].x * r4.y; + r4.y = ceil(r4.y); + r4.y = max(32, r4.y); + r2.w = cmp(r2.w >= 0.300000012); + r5.w = 0.125 * r4.y; + r2.w = r2.w ? r5.w : r4.y; + r3.w = -r3.y; + r3.y = dot(r3.xzw, r3.xzw); + r3.y = rsqrt(r3.y); + r3.xyz = r3.xwz * r3.yyy; + r3.w = dot(r3.xyz, r5.xyz); + r4.y = r3.w + r3.w; + r3.xyz = r5.xyz * -r4.yyy + r3.xyz; + r5.xyzw = cb0[9].xyzw * r3.yyyy; + r5.xyzw = cb0[8].xyzw * r3.xxxx + r5.xyzw; + r5.xyzw = cb0[10].xyzw * r3.zzzz + r5.xyzw; + r1.w = 1; + r5.xyzw = r5.xyzw * float4(1,-1,1,1) + r1.xyzw; + r3.xyz = r5.xyz / r5.www; + r3.xyz = r3.xyz + -r1.xyz; + r1.w = dot(r3.xy, r3.xy); + r1.w = sqrt(r1.w); + r4.y = 0.5 * r1.w; + r5.xy = r1.xy * r4.yy + r3.xy; + r5.xy = -r1.ww * float2(0.5,0.5) + abs(r5.xy); + r5.xy = max(float2(0,0), r5.xy); + r5.xy = r5.xy / abs(r3.xy); + r5.xy = float2(1,1) + -r5.xy; + r1.w = min(r5.x, r5.y); + r1.w = r1.w / r4.y; + r3.xyz = r3.xyz * r1.www; + r1.w = abs(r3.z) / r2.w; + r1.w = max(9.99999975e-05, r1.w); + r4.y = 1 / r2.w; + r3.xyz = float3(0.5,0.5,1) * r3.xyz; + r3.xyz = r3.xyz * r4.yyy; + r5.xy = cb1[0].xy * r3.xy; + r4.y = max(abs(r5.x), abs(r5.y)); + r5.x = cmp(r4.y < 1); + r4.y = 0.00100000005 + r4.y; + r4.y = 1 / r4.y; + r5.y = trunc(cb1[1].x); + r0.xy = r5.yy * float2(2.08299994,4.8670001) + r0.xy; + r0.x = dot(r0.xy, float2(0.0671105608,0.00583714992)); + r0.x = frac(r0.x); + r0.x = 52.9829178 * r0.x; + r0.x = frac(r0.x); + r0.x = r5.x ? r4.y : r0.x; + r5.xyz = r1.xyz * float3(0.5,0.5,1) + float3(0.5,0.5,0); + r5.xyz = r3.xyz * r0.xxx + r5.xyz; + r0.x = t0.SampleLevel(s0_s, r5.xy, 0).x; + r0.x = r5.z + -r0.x; + r6.xzw = float3(0,0,0); + r7.xyz = float3(0,0,0); + r8.xyz = r5.xyz; + r0.y = 0; + r4.y = 0; + r5.w = r0.x; + while (true) { + r7.w = cmp(r4.y < r2.w); + if (r7.w != 0) { + r9.xyzw = r3.xyxy * float4(1,1,2,2) + r8.xyxy; + r10.xyzw = r3.xyxy * float4(3,3,4,4) + r8.xyxy; + r11.xyzw = r3.zzzz * float4(1,2,3,4) + r8.zzzz; + r12.x = t0.SampleLevel(s0_s, r9.xy, 0).x; + r12.y = t0.SampleLevel(s0_s, r9.zw, 0).x; + r12.z = t0.SampleLevel(s0_s, r10.xy, 0).x; + r12.w = t0.SampleLevel(s0_s, r10.zw, 0).x; + r9.xyzw = -r12.xyzw + r11.xyzw; + r10.xyzw = r9.xyzw + r1.wwww; + r10.xyzw = cmp(abs(r10.xyzw) < r1.wwww); + r11.xy = (int2)r10.zw | (int2)r10.xy; + r7.w = (int)r11.y | (int)r11.x; + if (r7.w != 0) { + r11.xy = r10.zz ? r9.zy : r9.wz; + r9.yz = r10.yy ? r9.yx : r11.xy; + r7.w = r10.x ? r9.x : r9.y; + r8.w = r10.x ? r5.w : r9.z; + r9.x = r10.z ? 2 : 3; + r9.x = r10.y ? 1 : r9.x; + r9.x = r10.x ? 0 : r9.x; + r7.w = r8.w + -r7.w; + r7.w = saturate(r8.w / r7.w); + r7.w = r9.x + r7.w; + r9.xyz = r3.xyz * r7.www + r8.xyz; + r0.y = -1; + r7.xyz = r9.xyz; + break; + } + r8.xyz = r3.xyz * float3(4,4,4) + r8.xyz; + r4.y = 4 + r4.y; + r6.xzw = r8.xyz; + r0.y = 0; + r5.w = r9.w; + continue; + } else { + r7.xyz = r6.xzw; + r0.y = 0; + break; + } + r0.y = 0; + } + if (r0.y != 0) { + r0.x = max(r7.x, r7.y); + r0.x = 1 + -r0.x; + r0.y = min(r7.x, r7.y); + r0.x = min(r0.x, r0.y); + r3.xy = t2.SampleLevel(s0_s, r7.xy, 0).xy; + r5.xy = abs(r3.xy) * float2(2,2) + float2(-1,-1); + r5.xy = r5.xy * r5.xy; + r5.xy = r5.xy * r5.xy; + r3.xy = float2(-0.5,-0.5) + r3.xy; + r5.zw = cmp(float2(0,0) < r3.xy); + r3.xy = cmp(r3.xy < float2(0,0)); + r3.xy = (int2)-r5.zw + (int2)r3.xy; + r3.xy = (int2)r3.xy; + r3.xy = r5.xy * r3.xy; + r0.y = -cb1[2].z + 1; + r5.xy = r3.xy * r0.yy; + r1.w = cmp(cb1[1].y < r0.x); + r0.x = saturate(r0.x / cb1[1].y); + r0.x = r1.w ? 1 : r0.x; + r1.w = saturate(abs(r3.w) * cb1[1].z + cb1[1].w); + r1.w = 1 + -r1.w; + r0.x = r1.w * r0.x; + r1.w = cmp(r2.y < 0.100000001); + r2.x = 1 / r2.x; + r2.x = 100 + -r2.x; + r2.x = saturate(0.100000001 * r2.x); + r1.w = r1.w ? 1 : r2.x; + r0.x = r1.w * r0.x; + r0.zw = -r3.xy * r0.yy + r7.xy; + } else { + r5.xy = float2(0,0); + r0.x = 0; + } + r2.xy = t2.SampleLevel(s0_s, r0.zw, 0).xy; + r3.xy = abs(r2.xy) * float2(2,2) + float2(-1,-1); + r3.xy = r3.xy * r3.xy; + r0.y = 2 / r2.z; + r0.y = -1 + r0.y; + r0.y = 1 / r0.y; + r0.y = -2.03504682 * r0.y; + r0.y = exp2(r0.y); + r1.w = 1 + -r0.y; + r1.w = sqrt(r1.w); + r2.w = r0.y * -0.0187292993 + 0.0742610022; + r2.w = r2.w * r0.y + -0.212114394; + r0.y = r2.w * r0.y + 1.57072878; + r0.y = r0.y * r1.w; + r8.xyzw = cb0[25].xyzw * r1.yyyy; + r8.xyzw = cb0[24].xyzw * r1.xxxx + r8.xyzw; + r1.xyzw = cb0[26].xyzw * r1.zzzz + r8.xyzw; + r1.xyzw = cb0[27].xyzw + r1.xyzw; + r1.xyzw = r1.xyzw / r1.wwww; + r3.zw = r7.xy * float2(2,2) + float2(-1,-1); + r8.xyzw = cb0[25].xyzw * r3.wwww; + r8.xyzw = cb0[24].xyzw * r3.zzzz + r8.xyzw; + r7.xyzw = cb0[26].xyzw * r7.zzzz + r8.xyzw; + r7.xyzw = cb0[27].xyzw + r7.xyzw; + r6.xzw = cb0[44].xyz + -r1.xyz; + r2.w = dot(r6.xzw, r6.xzw); + r3.z = rsqrt(r2.w); + r8.xyz = r6.xzw * r3.zzz; + r2.w = sqrt(r2.w); + r3.w = cmp(abs(r4.w) < 0.999000013); + r9.z = r3.w ? 0 : 1; + r9.y = r3.w ? 1.000000 : 0; + r9.x = 0; + r10.xyz = r9.xyz * r4.xzw; + r9.xyz = r9.zxy * r4.zwx + -r10.xyz; + r3.w = dot(r9.xyz, r9.xyz); + r3.w = rsqrt(r3.w); + r9.xyz = r9.xyz * r3.www; + r7.xyzw = r7.xyzw / r7.wwww; + r1.xyzw = r7.xyzw + -r1.xyzw; + r1.x = dot(r1.xyzw, r1.xyzw); + r1.x = sqrt(r1.x); + r1.yzw = r9.zxy * r8.xyz; + r1.yzw = r9.yzx * r8.yzx + -r1.yzw; + sincos(r0.y, r7.x, r10.x); + r7.yzw = -r8.xyz * r2.www + cb0[44].xyz; + r10.yzw = r9.xyz * r4.xzw; + r4.xyz = r4.wxz * r9.yzx + -r10.yzw; + r9.xyz = r4.xyz * r8.xyz; + r4.xyz = r4.zxy * r8.yzx + -r9.xyz; + r0.y = r1.x + r2.w; + r9.xyz = r8.xyz * r0.yyy; + r10.yzw = cb0[21].xyw * -r9.yyy; + r9.xyw = cb0[20].xyw * -r9.xxx + r10.yzw; + r9.xyz = cb0[22].xyw * -r9.zzz + r9.xyw; + r9.xyz = cb0[23].xyw + r9.xyz; + r5.zw = r9.xy / r9.zz; + r5.zw = r5.zw * float2(0.5,0.5) + float2(0.5,0.5); + r5.zw = cb1[0].xy * r5.zw; + r0.y = dot(r1.zwy, -r8.xyz); + r9.xyz = r1.zwy * r0.yyy; + r10.yzw = -r6.xzw * r3.zzz + -r9.xyz; + r9.xyz = r10.xxx * r10.yzw + r9.xyz; + r10.yzw = r1.yzw * -r8.yzx; + r1.yzw = r1.wyz * -r8.zxy + -r10.yzw; + r1.yzw = r1.yzw * r7.xxx + r9.xyz; + r1.yzw = r1.yzw * r1.xxx + r7.yzw; + r1.yzw = -cb0[44].xyz + r1.yzw; + r9.xyz = cb0[21].xyw * r1.zzz; + r9.xyz = cb0[20].xyw * r1.yyy + r9.xyz; + r1.yzw = cb0[22].xyw * r1.www + r9.xyz; + r1.yzw = cb0[23].xyw + r1.yzw; + r0.y = dot(r4.yzx, -r8.xyz); + r9.xyz = r4.yzx * r0.yyy; + r6.xzw = -r6.xzw * r3.zzz + -r9.xyz; + r6.xzw = r10.xxx * r6.xzw + r9.xyz; + r9.xyz = r4.xyz * -r8.yzx; + r4.xyz = r4.zxy * -r8.zxy + -r9.xyz; + r4.xyz = r4.xyz * r7.xxx + r6.xzw; + r4.xyz = r4.xyz * r1.xxx + r7.yzw; + r4.xyz = -cb0[44].xyz + r4.xyz; + r6.xzw = cb0[21].xyw * r4.yyy; + r4.xyw = cb0[20].xyw * r4.xxx + r6.xzw; + r4.xyz = cb0[22].xyw * r4.zzz + r4.xyw; + r4.xyz = cb0[23].xyw + r4.xyz; + + // Write UV coords to u0 + u0[vThreadID.xy] = r0.zwzz; + + r0.yz = r3.xy * r3.xy; + r2.xy = float2(-0.5,-0.5) + r2.xy; + r3.xy = cmp(float2(0,0) < r2.xy); + r2.xy = cmp(r2.xy < float2(0,0)); + r2.xy = (int2)-r3.xy + (int2)r2.xy; + r2.xy = (int2)r2.xy; + r0.yz = r0.yz * r2.xy + r5.xy; + r0.yz = cb0[82].xy * r0.yz; + r0.y = dot(r0.yz, r0.yz); + r0.y = sqrt(r0.y); + r0.z = log2(r6.y); + r0.z = saturate(r0.z * 0.693147182 + 0.00999999978); + r0.y = -r0.y * r0.z; + r0.y = 1.44269502 * r0.y; + r3.xzw = exp2(r0.yyy); + r0.y = cmp(9.99999975e-05 >= r2.z); + r0.zw = r1.yz / r1.ww; + r0.zw = r0.zw * float2(0.5,0.5) + float2(0.5,0.5); + r0.zw = -r0.zw * cb1[0].xy + r5.zw; + r0.z = dot(r0.zw, r0.zw); + r1.xy = r4.xy / r4.zz; + r1.xy = r1.xy * float2(0.5,0.5) + float2(0.5,0.5); + r1.xy = -r1.xy * cb1[0].xy + r5.zw; + r0.w = dot(r1.xy, r1.xy); + r0.z = r0.z + r0.w; + r0.z = sqrt(r0.z); + r0.z = 0.5 * r0.z; + r0.z = log2(r0.z); + r0.z = max(0, r0.z); + r0.z = min(cb1[5].y, r0.z); + r0.z = r0.z / cb1[5].y; + r3.y = r0.y ? 0 : r0.z; + + // Write blend weights to u1 + u1[vThreadID.xy] = r3.xyzw; + + // Metallic IBL intensity control + // r0.x is the vanilla SSR blend factor (0 = full IBL, 1 = full SSR/no IBL) + // To reduce IBL intensity, we increase this value + float ssr_blend = r0.x; + + if (shader_injection.metallic_ibl_intensity == 1.f) { + // set minimum blend of 0.75 + ssr_blend = max(ssr_blend, 0.75); + } + // else: metallic_ibl_intensity == 0.f = Vanilla (no change) + + u2[vThreadID.xy] = ssr_blend.xxxx; +} \ No newline at end of file diff --git a/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl b/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl new file mode 100644 index 0000000000..c8e819337b --- /dev/null +++ b/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl @@ -0,0 +1,148 @@ +// Latency bar icon vertex shader - selective hiding based on vertex positions +// Original shader: 0x9BDC181F + +#include "../shared.h" + +cbuffer cb5 : register(b5) +{ + float4 cb5[45]; +} + +cbuffer cb4 : register(b4) +{ + float4 cb4[1]; +} + +cbuffer cb3 : register(b3) +{ + float4 cb3[11]; +} + +cbuffer cb2 : register(b2) +{ + float4 cb2[21]; +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[4]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[7]; +} + +// Latency bar icon vertex positions (12 vertices = 3 bars) +// These are the same coordinates from Vulkan implementation +static const float2 latency_bar_verts[12] = { + float2(-1167.0001220703, -653.4990234375), + float2(-1167.0001220703, -644.4990234375), + float2(-1162.0001220703, -644.4990234375), + float2(-1162.0001220703, -653.4990234375), + float2(-1160.5, -653.4990234375), + float2(-1160.5, -640.4990234375), + float2(-1155.5, -640.4990234375), + float2(-1155.5, -653.4990234375), + float2(-1154.0, -653.4990234375), + float2(-1154.0, -636.4990234375), + float2(-1149.0, -636.4990234375), + float2(-1149.0, -653.4990234375) +}; + +// Check if this vertex is part of the latency bar icon +bool IsLatencyBarVertex(float2 pos) +{ + [unroll] + for (int i = 0; i < 12; i++) + { + float2 diff = abs(latency_bar_verts[i] - pos); + if (dot(diff, diff) < 0.001) + { + return true; + } + } + return false; +} + +void main( + float4 v0 : POSITION0, + float4 v1 : COLOR0, + float2 v2 : TEXCOORD0, + out float4 o0 : SV_Position0, + out float4 o1 : TEXCOORD0, + out float4 o2 : TEXCOORD1, + out float4 o3 : TEXCOORD2, + out float4 o4 : TEXCOORD3, + out float4 o5 : TEXCOORD4) +{ + float4 r0,r1,r2,r3; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xy = -cb4[0].yz * float2(2,2) + float2(1,1); + r1.xyz = cb1[1].xyz * v0.yyy; + r1.xyz = cb1[0].xyz * v0.xxx + r1.xyz; + r1.xyz = cb1[2].xyz * v0.zzz + r1.xyz; + r1.xyz = cb1[3].xyz + r1.xyz; + r1.xyz = -cb5[44].xyz * cb4[0].xxx + r1.xyz; + r1.w = 1; + r0.z = 0 < cb4[0].x ? 1.0 : 0.0; + r2.x = r0.z != 0 ? cb5[32].x : cb2[17].x; + r2.y = r0.z != 0 ? cb5[33].x : cb2[18].x; + r2.z = r0.z != 0 ? cb5[34].x : cb2[19].x; + r2.w = r0.z != 0 ? cb5[35].x : cb2[20].x; + r2.x = dot(r2.xyzw, r1.xyzw); + r3.x = r0.z != 0 ? cb5[32].y : cb2[17].y; + r3.y = r0.z != 0 ? cb5[33].y : cb2[18].y; + r3.z = r0.z != 0 ? cb5[34].y : cb2[19].y; + r3.w = r0.z != 0 ? cb5[35].y : cb2[20].y; + r2.y = dot(r3.xyzw, r1.xyzw); + r0.xy = r2.xy * r0.xy; + r2.xy = r0.zz != 0 ? r0.xy : r2.xy; + r3.x = r0.z != 0 ? cb5[32].z : cb2[17].z; + r3.y = r0.z != 0 ? cb5[33].z : cb2[18].z; + r3.z = r0.z != 0 ? cb5[34].z : cb2[19].z; + r3.w = r0.z != 0 ? cb5[35].z : cb2[20].z; + r2.z = dot(r3.xyzw, r1.xyzw); + r3.x = r0.z != 0 ? cb5[32].w : cb2[17].w; + r3.y = r0.z != 0 ? cb5[33].w : cb2[18].w; + r3.z = r0.z != 0 ? cb5[34].w : cb2[19].w; + r3.w = r0.z != 0 ? cb5[35].w : cb2[20].w; + r2.w = dot(r3.xyzw, r1.xyzw); + o0.xyzw = r2.xyzw; + o5.zw = r2.zw; + r0.x = cb3[9].w != 0.000000 ? 1.0 : 0.0; + r1.xyzw = r0.xxxx != 0 ? cb3[10].xxxy : float4(1,1,1,1); + r3.xyzw = cb3[2].xyzw * v1.xyzw; + o1.xyzw = r3.xyzw * r1.xyzw; + o2.xy = v2.xy * cb3[5].xy + cb3[5].zw; + o2.zw = float2(0, 0); + o3.xyzw = v0.xyzw; + r1.xz = r0.zz != 0 ? cb5[8].yx : cb2[5].yx; + r1.yw = r0.zz != 0 ? cb5[9].yx : cb2[6].yx; + r0.z = dot(r1.zw, cb0[6].xy); + r0.w = dot(r1.xy, cb0[6].xy); + r0.xy = r2.ww / abs(r0.zw); + r1.xz = float2(0.5,0.5) * r2.xw; + r0.z = cb0[5].x * r2.y; + r1.w = 0.5 * r0.z; + o5.xy = r1.xw + r1.zz; + r0.xy = cb3[9].xy * float2(0.25,0.25) + abs(r0.xy); + o4.zw = float2(0.25,0.25) / r0.xy; + r0.xyzw = max(cb3[4].xyzw, float4(-2e+10,-2e+10,-2e+10,-2e+10)); + r0.xyzw = min(float4(2e+10,2e+10,2e+10,2e+10), r0.xyzw); + r0.xy = v0.xy * float2(2,2) + -r0.xy; + o4.xy = r0.xy + -r0.zw; + + if (PING_TEXT_OPACITY < 0.5) + { + if (IsLatencyBarVertex(v0.xy)) + { + + o0 = float4(0, 0, 0, 0); + } + } + + return; +} From 2142823e7cbfa53e32fd35a0a3a9825457ae1539 Mon Sep 17 00:00:00 2001 From: SGTForgery Date: Wed, 4 Feb 2026 06:30:53 +0000 Subject: [PATCH 11/40] feat(endfield): Added second glass transparency shader --- .../endfield/glass/0x754218B1.ps_5_0.hlsl | 1880 +++++++++++++++++ 1 file changed, 1880 insertions(+) create mode 100644 src/games/endfield/glass/0x754218B1.ps_5_0.hlsl diff --git a/src/games/endfield/glass/0x754218B1.ps_5_0.hlsl b/src/games/endfield/glass/0x754218B1.ps_5_0.hlsl new file mode 100644 index 0000000000..2e151b40b5 --- /dev/null +++ b/src/games/endfield/glass/0x754218B1.ps_5_0.hlsl @@ -0,0 +1,1880 @@ +// ---- Created with 3Dmigoto v1.4.1 on Wed Feb 4 06:20:19 2026 +#include "../common.hlsl" + +Texture2D t23 : register(t23); + +Texture3D t22 : register(t22); + +Texture3D t21 : register(t21); + +Texture3D t20 : register(t20); + +Texture3D t19 : register(t19); + +Texture3D t18 : register(t18); + +Texture3D t17 : register(t17); + +Texture3D t16 : register(t16); + +Texture2D t15 : register(t15); + +Texture2D t14 : register(t14); + +Texture2D t13 : register(t13); + +Texture2D t12 : register(t12); + +Texture2D t11 : register(t11); + +Texture2D t10 : register(t10); + +Texture2D t9 : register(t9); + +Texture2D t8 : register(t8); + +Texture2D t7 : register(t7); + +Texture2D t6 : register(t6); + +Texture2D t5 : register(t5); + +Texture2DArray t4 : register(t4); + +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +struct t0_t { + float val[1]; +}; +StructuredBuffer t0 : register(t0); + +SamplerState s9_s : register(s9); + +SamplerState s8_s : register(s8); + +SamplerState s7_s : register(s7); + +SamplerState s6_s : register(s6); + +SamplerState s5_s : register(s5); + +SamplerComparisonState s4_s : register(s4); + +SamplerState s3_s : register(s3); + +SamplerState s2_s : register(s2); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb7 : register(b7) +{ + float4 cb7[160]; +} + +cbuffer cb6 : register(b6) +{ + float4 cb6[715]; +} + +cbuffer cb5 : register(b5) +{ + float4 cb5[2054]; +} + +cbuffer cb4 : register(b4) +{ + float4 cb4[3]; +} + +cbuffer cb3 : register(b3) +{ + float4 cb3[259]; +} + +cbuffer cb2 : register(b2) +{ + float4 cb2[24]; +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[4085]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[244]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float2 v1 : TEXCOORD0, + float2 w1 : TEXCOORD1, + float4 v2 : TEXCOORD2, + float4 v3 : TEXCOORD3, + float4 v4 : TEXCOORD4, + float4 v5 : TEXCOORD5, + float4 v6 : TEXCOORD6, + nointerpolation uint v7 : TEXCOORD7, + uint v8 : SV_IsFrontFace0, + out float4 o0 : SV_Target0, + out float4 o1 : SV_Target1) +{ + const float4 icb[] = { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} }; + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r26,r27,r28,r29,r30,r31,r32,r33,r34,r35,r36; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xy = cb0[82].zw * v0.xy; + r0.zw = r0.xy * float2(2,2) + float2(-1,-1); + r1.xyzw = cb0[25].xyzw * -r0.wwww; + r1.xyzw = cb0[24].xyzw * r0.zzzz + r1.xyzw; + r1.xyzw = cb0[26].xyzw * v0.zzzz + r1.xyzw; + r1.xyzw = cb0[27].xyzw + r1.xyzw; + r1.xyz = r1.xyz / r1.www; + r0.z = cb0[1].z * r1.y; + r0.z = cb0[0].z * r1.x + r0.z; + r0.z = cb0[2].z * r1.z + r0.z; + r0.z = cb0[3].z + r0.z; + r2.z = abs(r0.z); + r0.z = cmp(0 < v3.w); + r0.z = r0.z ? 1 : -1; + r0.w = cmp(0.000000 == cb0[86].w); + r3.xyz = cb0[44].xyz + -r1.xyz; + r4.x = cb0[0].z; + r4.y = cb0[1].z; + r4.z = cb0[2].z; + r3.xyz = r0.www ? r3.xyz : r4.xyz; + r0.w = dot(r3.xyz, r3.xyz); + r2.w = max(9.99999994e-09, r0.w); + r2.w = rsqrt(r2.w); + r5.xyz = r3.xyz * r2.www; + r0.w = r2.w * r0.w; + r6.xy = w1.xy + -v1.xy; + r6.zw = cb2[3].xx * r6.xy + v1.xy; + r6.zw = r6.zw * cb2[12].xy + cb2[12].zw; + r6.xy = cb2[2].ww * r6.xy + v1.xy; + r6.xy = r6.xy * cb2[11].xy + cb2[11].zw; + r7.xyzw = t5.SampleBias(s5_s, r6.xy, cb0[108].x).xyzw; + r3.w = cb2[3].y + cb0[108].x; + r8.xyz = t6.SampleBias(s6_s, r6.zw, r3.w).xyw; + r8.x = r8.z * r8.x; + r6.xy = r8.xy * float2(2,2) + float2(-1,-1); + r8.xy = cb2[0].xx * r6.xy; + r9.xyz = t7.SampleBias(s7_s, r6.zw, cb0[108].x).xyz; + r7.xyzw = cb2[8].xyzw * r7.xyzw; + r7.xyz = saturate(cb2[4].zzz * r7.xyz); + r10.xyz = cb2[8].xyz + -r7.xyz; + r7.xyz = cb2[4].xxx * r10.xyz + r7.xyz; + r3.w = r7.w * v4.x + -r7.w; + r10.w = cb2[23].x * r3.w + r7.w; + r3.w = cb2[0].w + -cb2[0].z; + r11.w = r9.y * r3.w + cb2[0].z; + r3.w = saturate(cb2[3].w + -1); + r4.w = cb2[4].y + -r9.x; + r3.w = r3.w * r4.w + r9.x; + r9.xyw = v3.yzx * v2.zxy; + r9.xyw = v2.yzx * v3.zxy + -r9.xyw; + r9.xyw = r9.xyw * r0.zzz; + r8.yzw = r9.xyw * r8.yyy; + r8.xyz = v3.xyz * r8.xxx + r8.yzw; + r0.z = dot(r6.xy, r6.xy); + r0.z = min(1, r0.z); + r0.z = 1 + -r0.z; + r0.z = sqrt(r0.z); + r0.z = max(1.00000002e-16, r0.z); + r4.w = cmp(0 < cb2[1].w); + r4.w = r4.w ? -1 : 1; + r4.w = v8.x ? 1 : r4.w; + r0.z = r4.w * r0.z; + r6.xyz = v2.xyz * r0.zzz + r8.xyz; + r0.z = dot(r6.xyz, r6.xyz); + r0.z = rsqrt(r0.z); + r6.xyz = r6.xyz * r0.zzz; + r0.z = dot(r6.xyz, r5.xyz); + r4.w = dot(-r5.xyz, r6.xyz); + r5.w = cb2[19].z * cb2[19].z; + r7.w = -r4.w * r4.w + 1; + r5.w = -r5.w * r7.w + 1; + r7.w = sqrt(r5.w); + r7.w = cb2[19].z * r4.w + r7.w; + r5.w = cmp(r5.w >= 0); + r8.xyz = r7.www * r6.xyz; + r8.xyz = cb2[19].zzz * -r5.xyz + -r8.xyz; + r8.xyz = r5.www ? r8.xyz : 0; + r5.w = v0.z * r0.z; + r5.w = max(0.5, r5.w); + r5.w = cb2[19].w / r5.w; + r5.w = -cb2[19].w + r5.w; + r5.w = cb2[20].x * r5.w + cb2[19].w; + r8.xyz = r8.xyz * r5.www; + r8.yw = cb0[1].xy * r8.yy; + r8.xy = cb0[0].xy * r8.xx + r8.yw; + r8.xy = cb0[2].xy * r8.zz + r8.xy; + r8.zw = v1.xy * cb2[22].xy + cb2[22].zw; + r8.zw = t9.SampleBias(s8_s, r8.zw, cb0[108].x).xy; + r8.zw = r8.zw * float2(2,2) + float2(-1,-1); + r8.zw = r8.zw * cb2[19].yy + -r8.xy; + r8.xy = cb2[19].xx * r8.zw + r8.xy; + r8.zw = v0.xy * cb0[82].zw + r8.xy; + r8.xy = float2(0.25,0.25) * r8.xy; + r9.xy = v0.xy * cb0[82].zw + r8.xy; + r5.w = t1.SampleBias(s0_s, r8.zw, cb0[108].x).x; + r7.w = t1.SampleBias(s0_s, r9.xy, cb0[108].x).x; + r7.w = cb0[84].z * r7.w + cb0[84].w; + r7.w = 1 / r7.w; + r7.w = cmp(r7.w >= r2.z); + r7.w = r7.w ? 1.000000 : 0; + r8.xy = r7.ww * r8.xy + r0.xy; + r5.w = cb0[84].z * r5.w + cb0[84].w; + r5.w = 1 / r5.w; + r5.w = cmp(r5.w >= r2.z); + r5.w = r5.w ? 1.000000 : 0; + r8.zw = r8.zw + -r8.xy; + r8.xy = r5.ww * r8.zw + r8.xy; + r8.xyz = t8.SampleBias(s9_s, r8.xy, cb0[108].x).xyz; + r5.w = max(9.99999994e-09, v5.z); + r9.xy = v5.xy / r5.ww; + r5.w = max(9.99999994e-09, v6.z); + r12.xy = v6.xy / r5.ww; + r12.xy = -r12.xy + r9.xy; + r5.w = cb2[0].y * 0.0799999982; + r9.xyw = -r7.xyz * r3.www + r7.xyz; + r5.w = -r5.w * r3.w + r5.w; + r7.xyz = r7.xyz * r3.www + r5.www; + r13.xyzw = r11.wwww * float4(-1,-0.0274999999,-0.572000027,0.0219999999) + float4(1,0.0425000004,1.03999996,-0.0399999991); + r3.w = r13.x * r13.x; + r0.z = max(0, r0.z); + r5.w = -9.27999973 * r0.z; + r5.w = exp2(r5.w); + r3.w = min(r5.w, r3.w); + r3.w = r3.w * r13.x + r13.y; + r13.xy = r3.ww * float2(-1.03999996,1.03999996) + r13.zw; + r3.w = cmp(1.000000 == cb0[113].y); + r14.xyzw = cb0[241].xyzw * r1.yyyy; + r14.xyzw = cb0[240].xyzw * r1.xxxx + r14.xyzw; + r14.xyzw = cb0[242].xyzw * r1.zzzz + r14.xyzw; + r14.xyzw = cb0[243].xyzw + r14.xyzw; + r5.w = 1 / r14.w; + r14.xyz = float3(1,-1,1) * r14.xyz; + r14.xyz = r14.xyz * r5.www; + r13.zw = saturate(r14.xy * float2(0.5,0.5) + float2(0.5,0.5)); + r13.zw = cb0[82].xy * r13.zw; + r15.xy = (uint2)r13.zw; + r5.w = cb0[84].z * r14.z + cb0[84].w; + r15.z = 1 / r5.w; + r2.xy = (uint2)v0.xy; + r14.xyz = r3.www ? r15.xyz : r2.xyz; + r2.xyz = r6.xyz * float3(0.25,0.25,0.25) + r1.xyz; + r15.xyz = cb0[6].xzy * -cb0[212].www + cb0[210].xzy; + r15.xyz = -r15.xyz + r2.xzy; + r3.w = max(abs(r15.x), abs(r15.y)); + r3.w = -464 + r3.w; + r3.w = saturate(0.03125 * r3.w); + r5.w = -208 + abs(r15.z); + r5.w = saturate(0.03125 * r5.w); + r3.w = max(r5.w, r3.w); + r5.w = cmp(0.000000 != cb0[210].w); + r7.w = cmp(r3.w < 1); + r5.w = r5.w ? r7.w : 0; + if (r5.w != 0) { + r15.xyz = cb0[6].xzy * -cb0[212].yyy + cb0[210].xzy; + r15.xyz = -r15.xyz + r2.xzy; + r5.w = max(abs(r15.x), abs(r15.y)); + r5.w = -29 + r5.w; + r5.w = saturate(0.5 * r5.w); + r7.w = -13 + abs(r15.z); + r7.w = saturate(0.5 * r7.w); + r5.w = max(r7.w, r5.w); + r7.w = cmp(r5.w < 1); + if (r7.w != 0) { + r15.xyz = r2.xyz * float3(2,2,2) + float3(0.5,0.5,0.5); + r16.xyz = cb0[211].xyz * r15.xyz; + r16.xyz = floor(r16.xyz); + r15.xyz = r15.xyz * cb0[211].xyz + -r16.xyz; + r16.xyz = t16.SampleLevel(s2_s, r15.xyz, 0).xyz; + r7.w = 1 + -r5.w; + r8.w = cb0[211].y * 0.5; + r12.w = -cb0[211].y * 0.5 + 1; + r8.w = max(r15.y, r8.w); + r8.w = min(r8.w, r12.w); + r15.w = 0.333333343 * r8.w; + r17.xyzw = t17.SampleLevel(s1_s, r15.xwz, 0).xyzw; + r17.xyz = r17.xyz * float3(4,4,4) + float3(-2,-2,-2); + r18.xyz = r17.xyz * r16.xxx; + r17.xyz = float3(0,0.333333343,0) + r15.xwz; + r17.xyz = t17.SampleLevel(s1_s, r17.xyz, 0).xyz; + r17.xyz = r17.xyz * float3(4,4,4) + float3(-2,-2,-2); + r19.xyz = r17.xyz * r16.yyy; + r15.xyz = float3(0,0.666666687,0) + r15.xwz; + r15.xyz = t17.SampleLevel(s1_s, r15.xyz, 0).xyz; + r15.xyz = r15.xyz * float3(4,4,4) + float3(-2,-2,-2); + r15.xyz = r15.xyz * r16.zzz; + r8.w = r17.w * r7.w + r3.w; + r15.w = r16.z; + r15.xyzw = r15.xyzw * r7.wwww; + r19.w = r16.y; + r17.xyzw = r19.xyzw * r7.wwww; + r18.w = r16.x; + r16.xyzw = r18.xyzw * r7.wwww; + } else { + r15.xyzw = float4(0,0,0,0); + r17.xyzw = float4(0,0,0,0); + r16.xyzw = float4(0,0,0,0); + r8.w = r3.w; + } + r18.xyz = cb0[6].xzy * -cb0[212].zzz + cb0[210].xzy; + r18.xyz = -r18.xyz + r2.xzy; + r7.w = max(abs(r18.x), abs(r18.y)); + r7.w = -116 + r7.w; + r7.w = saturate(0.125 * r7.w); + r12.w = -52 + abs(r18.z); + r12.w = saturate(0.125 * r12.w); + r7.w = max(r12.w, r7.w); + r12.w = cmp(r7.w < 1); + if (r12.w != 0) { + r18.xyz = r2.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5); + r19.xyz = cb0[211].xyz * r18.xyz; + r19.xyz = floor(r19.xyz); + r18.xyz = r18.xyz * cb0[211].xyz + -r19.xyz; + r19.xyz = t18.SampleLevel(s2_s, r18.xyz, 0).xyz; + r12.w = 1 + -r7.w; + r5.w = r12.w * r5.w; + r12.w = cb0[211].y * 0.5; + r13.z = -cb0[211].y * 0.5 + 1; + r12.w = max(r18.y, r12.w); + r12.w = min(r12.w, r13.z); + r18.w = 0.333333343 * r12.w; + r20.xyzw = t19.SampleLevel(s1_s, r18.xwz, 0).xyzw; + r20.xyz = r20.xyz * float3(4,4,4) + float3(-2,-2,-2); + r21.xyz = r20.xyz * r19.xxx; + r20.xyz = float3(0,0.333333343,0) + r18.xwz; + r20.xyz = t19.SampleLevel(s1_s, r20.xyz, 0).xyz; + r20.xyz = r20.xyz * float3(4,4,4) + float3(-2,-2,-2); + r22.xyz = r20.xyz * r19.yyy; + r18.xyz = float3(0,0.666666687,0) + r18.xwz; + r18.xyz = t19.SampleLevel(s1_s, r18.xyz, 0).xyz; + r18.xyz = r18.xyz * float3(4,4,4) + float3(-2,-2,-2); + r18.xyz = r18.xyz * r19.zzz; + r8.w = r20.w * r5.w + r8.w; + r18.w = r19.z; + r15.xyzw = r18.xyzw * r5.wwww + r15.xyzw; + r22.w = r19.y; + r17.xyzw = r22.xyzw * r5.wwww + r17.xyzw; + r21.w = r19.x; + r16.xyzw = r21.xyzw * r5.wwww + r16.xyzw; + } + r5.w = cmp(0 < r7.w); + if (r5.w != 0) { + r2.xyz = r2.xyz * float3(0.125,0.125,0.125) + float3(0.5,0.5,0.5); + r18.xyz = cb0[211].xyz * r2.xyz; + r19.xyz = cb0[211].xyz * float3(0.5,0.5,0.5); + r18.xyz = floor(r18.xyz); + r2.xyz = r2.xyz * cb0[211].xyz + -r18.xyz; + r18.xyz = -cb0[211].xyz * float3(0.5,0.5,0.5) + float3(1,1,1); + r2.xyz = max(r2.xyz, r19.xyz); + r20.xyz = min(r2.xyz, r18.xyz); + r21.xyw = t20.SampleLevel(s2_s, r20.xyz, 0).yzx; + r2.x = 1 + -r3.w; + r2.x = r7.w * r2.x; + r2.y = max(r20.y, r19.y); + r2.y = min(r2.y, r18.y); + r20.w = 0.333333343 * r2.y; + r18.xyzw = t21.SampleLevel(s1_s, r20.xwz, 0).xyzw; + r19.xyz = float3(0,0.666666687,0) + r20.xwz; + r19.xyz = t21.SampleLevel(s1_s, r19.xyz, 0).xyz; + r19.xyz = r19.xyz * float3(4,4,4) + float3(-2,-2,-2); + r19.xyz = r19.xyz * r21.yyy; + r19.w = r21.y; + r15.xyzw = r19.xyzw * r2.xxxx + r15.xyzw; + r19.xyz = float3(0,0.333333343,0) + r20.xwz; + r19.xyz = t21.SampleLevel(s1_s, r19.xyz, 0).xyz; + r19.xyz = r19.xyz * float3(4,4,4) + float3(-2,-2,-2); + r19.xyz = r19.xyz * r21.xxx; + r19.w = r21.x; + r17.xyzw = r19.xyzw * r2.xxxx + r17.xyzw; + r18.xyz = r18.xyz * float3(4,4,4) + float3(-2,-2,-2); + r21.xyz = r18.xyz * r21.www; + r16.xyzw = r21.xyzw * r2.xxxx + r16.xyzw; + r8.w = r18.w * r2.x + r8.w; + } + r2.x = saturate(r8.w * 2 + -1); + r18.x = r2.x + -r3.w; + r2.x = r2.x + r3.w; + r18.y = 0.5 * r2.x; + } else { + r15.xyzw = float4(0,0,0,0); + r17.xyzw = float4(0,0,0,0); + r16.xyzw = float4(0,0,0,0); + r18.xy = float2(0,1); + } + r19.xyzw = cb0[213].xyzw * r18.yyyx; + r19.y = r19.w * 0.5 + r19.y; + r2.xy = cb0[213].wy * r18.yx; + r19.w = r2.y * 0.375 + r2.x; + r16.xyzw = r19.xyzw + r16.xyzw; + r19.xyzw = cb0[214].xyzw * r18.yyyx; + r19.y = r19.w * 0.5 + r19.y; + r2.xy = cb0[214].wy * r18.yx; + r19.w = r2.y * 0.375 + r2.x; + r17.xyzw = r19.xyzw + r17.xyzw; + r19.xyzw = cb0[215].xyzw * r18.yyyx; + r19.y = r19.w * 0.5 + r19.y; + r2.xy = cb0[215].wy * r18.yx; + r19.w = r2.y * 0.375 + r2.x; + r15.xyzw = r19.xyzw + r15.xyzw; + r2.x = dot(r16.xyz, r6.xyz); + r2.x = r2.x + r16.w; + r2.x = max(0, r2.x); + r3.w = dot(r17.xyz, r6.xyz); + r3.w = r3.w + r17.w; + r2.y = max(0, r3.w); + r3.w = dot(r15.xyz, r6.xyz); + r3.w = r3.w + r15.w; + r2.z = max(0, r3.w); + r3.w = r4.w + r4.w; + r15.xyz = r6.xyz * -r3.www + -r5.xyz; + r3.w = cb0[113].x + -1; + r4.w = max(0.00100000005, r11.w); + r4.w = log2(r4.w); + r4.w = -r4.w * 1.20000005 + 1; + r3.w = -r4.w + r3.w; + r13.zw = (uint2)r14.xy; + r16.xy = cb3[0].ww * r13.zw; + r16.xy = floor(r16.xy); + r4.w = -cb3[2].y + r14.z; + r4.w = floor(r4.w); + r5.w = cb3[1].x + -1; + r7.w = max(0, r4.w); + r5.w = min(r7.w, r5.w); + r4.w = cmp(r5.w >= r4.w); + r7.w = r16.y * cb3[0].x + r16.x; + r7.w = (int)r7.w; + r7.w = (int)r7.w + asint(cb0[110].z); + r7.w = t0[r7.w].val[0/4]; + r5.w = (int)r5.w; + r5.w = (int)r5.w + asint(cb0[110].w); + r5.w = t0[r5.w].val[0/4]; + r5.w = (int)r5.w & (int)r7.w; + r4.w = r4.w ? r5.w : 0; + r16.xyz = cb0[111].xxx * r2.xyz; + r5.w = dot(r16.xyz, float3(0.212672904,0.715152204,0.0721750036)); + r1.w = 1; + r6.w = 1; + r16.xyz = float3(0,0,0); + r7.w = 1; + r8.w = r4.w; + r12.w = 0; + while (true) { + r15.w = cmp(0.00999999978 < r7.w); + r16.w = cmp((int)r8.w != 0); + r16.w = r15.w ? r16.w : 0; + if (r16.w != 0) { + r16.w = firstbitlow((uint)r8.w); + r17.x = 1 << (int)r16.w; + r8.w = (int)r8.w ^ (int)r17.x; + r16.w = (uint)r16.w << 3; + r17.x = dot(cb3[r16.w+6].xyzw, r1.xyzw); + r17.y = dot(cb3[r16.w+7].xyzw, r1.xyzw); + r17.z = dot(cb3[r16.w+8].xyzw, r1.xyzw); + r18.xyz = cmp(cb3[r16.w+5].xyz >= abs(r17.xyz)); + r17.w = r18.y ? r18.x : 0; + r17.w = r18.z ? r17.w : 0; + if (r17.w != 0) { + r17.w = cb3[r16.w+5].x * 0.100000001; + r18.xyz = float3(0.100000001,0.100000001,0.100000001) * abs(r17.xyz); + r18.xy = r18.xy * r18.xy; + r19.xyz = cb3[r16.w+5].xyz + -abs(r17.xyz); + r19.xyz = cb3[r16.w+9].xyz * r19.xyz; + r18.w = cmp(1.000000 == cb3[r16.w+10].x); + if (r18.w != 0) { + r20.x = dot(cb3[r16.w+6].xyz, r15.xyz); + r20.y = dot(cb3[r16.w+7].xyz, r15.xyz); + r20.z = dot(cb3[r16.w+8].xyz, r15.xyz); + r21.xyz = cb3[r16.w+5].xyz + -r17.xyz; + r21.xyz = r21.xyz / r20.xyz; + r22.xyz = -cb3[r16.w+5].xyz + -r17.xyz; + r22.xyz = r22.xyz / r20.xyz; + r23.xyz = cmp(float3(0,0,0) < r20.xyz); + r21.xyz = r23.xyz ? r21.xyz : r22.xyz; + r18.w = min(r21.x, r21.y); + r18.w = min(r18.w, r21.z); + r17.xyz = r20.xyz * r18.www + r17.xyz; + } else { + r17.xyz = r15.xyz; + } + r18.w = dot(r17.xyz, r17.xyz); + r18.w = rsqrt(r18.w); + r17.xyz = r18.www * r17.xyz; + r20.xyz = cmp(float3(0,0,0) < r17.xyz); + r21.xyz = cmp(r17.xyz < float3(0,0,0)); + r20.xyz = (int3)-r20.xyz + (int3)r21.xyz; + r20.xyz = (int3)r20.xyz; + r18.w = dot(r17.xyz, r20.xyz); + r17.xyz = r17.xyz / r18.www; + r17.z = cmp(r17.z < 0); + r20.zw = float2(1,1) + -abs(r17.yx); + r20.xy = r20.xy * r20.zw; + r17.xy = r17.zz ? r20.xy : r17.xy; + r17.z = dot(cb3[r16.w+4].xyzw, r6.xyzw); + r17.z = max(0, r17.z); + r17.z = max(9.99999975e-05, r17.z); + r18.w = min(r19.y, r19.z); + r18.w = min(r19.x, r18.w); + r18.x = r18.x + r18.y; + r18.x = r18.z * r18.z + r18.x; + r17.w = r17.w * r17.w + -r18.x; + r17.w = cb3[r16.w+9].x * r17.w; + r17.w = cb3[r16.w+9].x * r17.w; + r18.x = -cb3[r16.w+10].y + 1; + r17.w = r18.x * r17.w; + r17.w = 100 * r17.w; + r17.w = saturate(r18.w * cb3[r16.w+10].y + r17.w); + r18.x = cb3[r16.w+10].w * r17.w; + r17.xy = r17.xy * float2(0.5,0.5) + float2(0.5,0.5); + r19.xy = r17.xy * cb3[1].ww + cb3[2].ww; + r19.z = cb3[r16.w+5].w; + r18.yzw = t4.SampleLevel(s3_s, r19.xyz, r3.w).xyz; + r18.yzw = cb3[r16.w+9].www * r18.yzw; + r17.x = r5.w / r17.z; + r17.x = min(1, abs(r17.x)); + r17.x = r17.x * 2 + r5.w; + r17.y = 2 + r17.z; + r17.x = r17.x / r17.y; + r17.x = -1 + r17.x; + r17.x = r17.x * cb0[112].w + 1; + r17.xyz = r18.yzw * r17.xxx; + r17.xyz = r17.xyz * r18.xxx; + r16.xyz = r17.xyz * r7.www + r16.xyz; + r16.w = -r17.w * cb3[r16.w+10].w + 1; + r7.w = r16.w * r7.w; + } + r12.w = -1; + continue; + } else { + r12.w = r15.w; + break; + } + r12.w = r15.w; + } + if (r12.w != 0) { + r1.w = dot(r15.xyz, r15.xyz); + r1.w = rsqrt(r1.w); + r17.xyz = r15.xyz * r1.www; + r18.xyz = cmp(float3(0,0,0) < r17.xyz); + r19.xyz = cmp(r17.xyz < float3(0,0,0)); + r18.xyz = (int3)-r18.xyz + (int3)r19.xyz; + r18.xyz = (int3)r18.xyz; + r1.w = dot(r17.xyz, r18.xyz); + r17.xyz = r17.xyz / r1.www; + r1.w = cmp(r17.z < 0); + r17.zw = float2(1,1) + -abs(r17.yx); + r17.zw = r18.xy * r17.zw; + r17.xy = r1.ww ? r17.zw : r17.xy; + r6.w = 1; + r1.w = dot(cb3[3].xyzw, r6.xyzw); + r1.w = max(0, r1.w); + r1.w = max(9.99999975e-05, r1.w); + r17.xy = r17.xy * float2(0.5,0.5) + float2(0.5,0.5); + r17.xy = r17.xy * cb3[1].ww + cb3[2].ww; + r17.z = 0; + r17.xyz = t4.SampleLevel(s3_s, r17.xyz, r3.w).xyz; + r3.w = r5.w / r1.w; + r3.w = min(1, abs(r3.w)); + r3.w = r3.w * 2 + r5.w; + r1.w = 2 + r1.w; + r1.w = r3.w / r1.w; + r1.w = -1 + r1.w; + r1.w = r1.w * cb0[112].w + 1; + r17.xyz = r17.xyz * r1.www; + r16.xyz = r17.xyz * r7.www + r16.xyz; + } + + // Reduce reflection probe intensity for glass + if (GLASS_TRANSPARENCY > 0.5f) { + r16.xyz *= 0.4f; + } + + r16.xyz = cb0[112].zzz * r16.xyz; + r16.xyz = cb0[111].yyy * r16.xyz; + r1.w = cmp(0.000000 != cb0[112].y); + if (r1.w != 0) { + r1.w = t3.SampleBias(s1_s, r0.xy, cb0[108].x).x; + r17.xyz = t2.SampleBias(s1_s, r0.xy, cb0[108].x).xyz; + r0.x = 1 + -r1.w; + r18.xyz = r16.xyz * r0.xxx; + r16.xyz = r17.xyz * r1.www + r18.xyz; + } + r2.xyz = r2.xyz * r9.xyw; + r0.x = -1 + r9.z; + r0.x = cb2[1].x * r0.x + 1; + r2.xyz = r2.xyz * r0.xxx; + r0.x = saturate(50 * r7.y); + r0.x = r0.x * r13.y; + r17.xyz = r7.xyz * r13.xxx + r0.xxx; + r16.xyz = r17.xyz * r16.xyz; + r2.xyz = r2.xyz * cb0[111].xxx + r16.xyz; + r0.x = cmp(cb6[35].w < 0.99000001); + if (r0.x != 0) { + r0.x = (int)cb6[35].x; + r0.y = cmp((int)r0.x == 2); + r16.xyz = r0.yyy ? cb6[20].xyz : cb0[44].xyz; + r16.xyz = -r16.xyz + r1.xyz; + r0.y = dot(r16.xyz, r16.xyz); + r0.y = cb6[34].w + -r0.y; + r0.y = saturate(cb6[34].z * r0.y); + r1.w = cmp(0 < r0.y); + if (r1.w != 0) { + r0.x = cmp(0 < (int)r0.x); + if (r0.x != 0) { + r16.xyz = -cb6[20].xyz + r1.xyz; + r17.xyz = -cb6[21].xyz + r1.xyz; + r18.xyz = -cb6[22].xyz + r1.xyz; + r19.xyz = -cb6[23].xyz + r1.xyz; + r16.x = dot(r16.xyz, r16.xyz); + r16.y = dot(r17.xyz, r17.xyz); + r16.z = dot(r18.xyz, r18.xyz); + r16.w = dot(r19.xyz, r19.xyz); + r17.x = cmp(r16.x < cb6[20].w); + r17.y = cmp(r16.y < cb6[21].w); + r17.z = cmp(r16.z < cb6[22].w); + r17.w = cmp(r16.w < cb6[23].w); + r18.xyzw = r17.xyzw ? float4(1,1,1,1) : 0; + r17.xyz = r17.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0); + r17.xyz = r18.yzw + r17.xyz; + r18.yzw = max(float3(0,0,0), r17.xyz); + r0.x = dot(r18.xyzw, float4(4,3,2,1)); + r0.x = 4 + -r0.x; + r0.x = max(0, r0.x); + r0.x = min(3, r0.x); + r1.w = 1 + r0.x; + r1.w = min(3, r1.w); + r1.w = (uint)r1.w; + r3.w = dot(r16.yzw, icb[r1.w+0].yzw); + r1.w = r3.w / cb6[r1.w+20].w; + r3.w = cmp(r1.w >= 0); + r1.w = cmp(1 >= r1.w); + r1.w = r1.w ? r3.w : 0; + if (r1.w != 0) { + r1.w = (uint)r0.x; + r13.xy = float2(2.08299994,4.8670001) + r13.zw; + r3.w = dot(r13.xy, float2(0.0671105608,0.00583714992)); + r3.w = frac(r3.w); + r3.w = 52.9829178 * r3.w; + r3.w = frac(r3.w); + r4.w = dot(r16.xyzw, icb[r1.w+0].xyzw); + r1.w = r4.w / cb6[r1.w+20].w; + r1.w = sqrt(r1.w); + r1.w = -0.899999976 + r1.w; + r1.w = 12 * r1.w; + r1.w = cmp(r1.w >= r3.w); + r1.w = r1.w ? 1.000000 : 0; + r0.x = r1.w + r0.x; + } + r1.w = dot(r6.xyz, cb5[0].xyz); + r1.w = max(0, r1.w); + r1.w = min(0.899999976, r1.w); + r1.w = 1 + -r1.w; + r3.w = (uint)r0.x; + r4.w = (uint)r3.w << 2; + r13.xy = cb6[r3.w+24].xy * r1.ww; + r1.w = max(0, r13.x); + r16.xyz = -cb5[0].xyz * r1.www + r1.xyz; + r16.xyz = r6.xyz * r13.yyy + r16.xyz; + r17.xyz = cb6[r4.w+1].xyz * r16.yyy; + r16.xyw = cb6[r4.w+0].xyz * r16.xxx + r17.xyz; + r16.xyz = cb6[r4.w+2].xyz * r16.zzz + r16.xyw; + r16.xyz = cb6[r4.w+3].xyz + r16.xyz; + r17.xyz = cmp(float3(0,0,0) >= r16.xyz); + r18.xyz = cmp(r16.xyz >= float3(1,1,1)); + r17.xyz = (int3)r17.xyz | (int3)r18.xyz; + r1.w = (int)r17.y | (int)r17.x; + r1.w = (int)r17.z | (int)r1.w; + r3.w = (int)r16.z & 0x7fffffff; + r3.w = cmp(0x7f800000 < (uint)r3.w); + r17.z = (int)r1.w | (int)r3.w; + r0.x = (int)r0.x; + r13.xy = r16.xy * cb6[r0.x+28].zw + cb6[r0.x+28].xy; + r16.xy = r13.xy * cb6[32].zw + float2(0.5,0.5); + r16.xy = floor(r16.xy); + r13.xy = r13.xy * cb6[32].zw + -r16.xy; + r18.xyzw = float4(0.5,1,0.5,1) + r13.xxyy; + r19.xw = r18.xz * r18.xz; + r18.xz = min(float2(0,0), r13.xy); + r20.xy = max(float2(0,0), r13.xy); + r20.zw = r19.xw * float2(0.5,0.5) + -r13.xy; + r13.xy = float2(1,1) + -r13.xy; + r13.xy = -r18.xz * r18.xz + r13.xy; + r18.xy = -r20.xy * r20.xy + r18.yw; + r21.x = r20.z; + r21.y = r13.x; + r21.z = r18.x; + r21.w = r19.x; + r21.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r21.xyzw; + r19.x = r20.w; + r19.y = r13.y; + r19.z = r18.y; + r18.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r19.xyzw; + r19.xyzw = r21.xzxz + r21.ywyw; + r20.xyzw = r18.xxzz + r18.yyww; + r13.xy = r21.yw / r19.zw; + r13.xy = float2(-1.5,0.5) + r13.xy; + r21.xy = cb6[32].xx * r13.xy; + r13.xy = r18.yw / r20.yw; + r13.xy = float2(-1.5,0.5) + r13.xy; + r21.zw = cb6[32].yy * r13.xy; + r18.xyzw = r20.xyzw * r19.xyzw; + r19.xyzw = r16.xyxy * cb6[32].xyxy + r21.xzyz; + r0.x = t10.SampleCmpLevelZero(s4_s, r19.xy, r16.z).x; + r1.w = t10.SampleCmpLevelZero(s4_s, r19.zw, r16.z).x; + r1.w = r18.y * r1.w; + r0.x = r18.x * r0.x + r1.w; + r19.xyzw = r16.xyxy * cb6[32].xyxy + r21.xwyw; + r1.w = t10.SampleCmpLevelZero(s4_s, r19.xy, r16.z).x; + r0.x = r18.z * r1.w + r0.x; + r1.w = t10.SampleCmpLevelZero(s4_s, r19.zw, r16.z).x; + r0.x = r18.w * r1.w + r0.x; + r17.x = r17.z ? 1 : r0.x; + } else { + r17.xz = float2(1,0); + } + } else { + r17.xz = float2(1,0); + } + r0.x = cmp(r0.y < 1); + if (r0.x != 0) { + r0.x = dot(r6.xyz, cb5[0].xyz); + r0.x = max(0, r0.x); + r0.x = min(0.899999976, r0.x); + r0.x = 1 + -r0.x; + r13.xy = cb6[584].xy * r0.xx; + r16.xyz = -cb5[0].xyz * r13.xxx + r1.xyz; + r16.xyz = r6.xyz * r13.yyy + r16.xyz; + r13.xy = cb6[581].xy * r16.yy; + r13.xy = cb6[580].xy * r16.xx + r13.xy; + r13.xy = cb6[582].xy * r16.zz + r13.xy; + r13.xy = cb6[583].xy + r13.xy; + r18.xy = cmp(float2(0,0) < r13.xy); + r0.x = r18.y ? r18.x : 0; + r18.xy = cmp(r13.xy < float2(1,1)); + r1.w = r18.y ? r18.x : 0; + r0.x = (int)r0.x & (int)r1.w; + if (r0.x != 0) { + r0.x = cb6[585].z * r13.y; + r0.x = floor(r0.x); + r0.x = r0.x + r13.x; + r0.x = cb6[585].y * r0.x; + r0.x = (uint)r0.x; + r0.x = min(127, (uint)r0.x); + r1.w = 0x0000ffff & asint(cb6[r0.x+587].x); + r13.x = f16tof32(r1.w); + r1.w = cmp(r13.x >= 0); + if (r1.w != 0) { + r18.x = cb6[576].x; + r18.y = cb6[577].x; + r18.z = cb6[578].x; + r18.w = cb6[r0.x+587].y; + r16.w = 1; + r18.x = dot(r18.xyzw, r16.xyzw); + r19.x = cb6[576].y; + r19.y = cb6[577].y; + r19.z = cb6[578].y; + r19.w = cb6[r0.x+587].z; + r18.y = dot(r19.xyzw, r16.xyzw); + r19.x = cb6[576].z; + r19.y = cb6[577].z; + r19.z = cb6[578].z; + r19.w = cb6[r0.x+587].w; + r1.w = dot(r19.xyzw, r16.xyzw); + r16.xy = cmp(float2(0,0) < r18.xy); + r3.w = cmp(0 < r1.w); + r4.w = r16.y ? r16.x : 0; + r3.w = r3.w ? r4.w : 0; + r16.xy = cmp(r18.xy < float2(1,1)); + r4.w = cmp(r1.w < 1); + r5.w = r16.y ? r16.x : 0; + r4.w = r4.w ? r5.w : 0; + r3.w = r3.w ? r4.w : 0; + if (r3.w != 0) { + r0.x = asuint(cb6[r0.x+587].x) >> 16; + r13.y = f16tof32(r0.x); + r13.xy = r18.xy * cb6[584].zw + r13.xy; + r16.xy = r13.xy * cb6[586].zw + float2(0.5,0.5); + r16.xy = floor(r16.xy); + r13.xy = r13.xy * cb6[586].zw + -r16.xy; + r18.xyzw = float4(0.5,1,0.5,1) + r13.xxyy; + r19.xw = r18.xz * r18.xz; + r16.zw = min(float2(0,0), r13.xy); + r18.xz = max(float2(0,0), r13.xy); + r20.xy = r19.xw * float2(0.5,0.5) + -r13.xy; + r13.xy = float2(1,1) + -r13.xy; + r13.xy = -r16.zw * r16.zw + r13.xy; + r16.zw = -r18.xz * r18.xz + r18.yw; + r18.x = r20.x; + r18.y = r13.x; + r18.z = r16.z; + r18.w = r19.x; + r18.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r18.xyzw; + r19.x = r20.y; + r19.y = r13.y; + r19.z = r16.w; + r19.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r19.xyzw; + r20.xyzw = r18.xzxz + r18.ywyw; + r21.xyzw = r19.xxzz + r19.yyww; + r13.xy = r18.yw / r20.zw; + r13.xy = float2(-1.5,0.5) + r13.xy; + r18.xy = cb6[586].xx * r13.xy; + r13.xy = r19.yw / r21.yw; + r13.xy = float2(-1.5,0.5) + r13.xy; + r18.zw = cb6[586].yy * r13.xy; + r19.xyzw = r21.xyzw * r20.xyzw; + r20.xyzw = r16.xyxy * cb6[586].xyxy + r18.xzyz; + r0.x = t13.SampleCmpLevelZero(s4_s, r20.xy, r1.w).x; + r3.w = t13.SampleCmpLevelZero(s4_s, r20.zw, r1.w).x; + r3.w = r19.y * r3.w; + r0.x = r19.x * r0.x + r3.w; + r16.xyzw = r16.xyxy * cb6[586].xyxy + r18.xwyw; + r3.w = t13.SampleCmpLevelZero(s4_s, r16.xy, r1.w).x; + r0.x = r19.z * r3.w + r0.x; + r1.w = t13.SampleCmpLevelZero(s4_s, r16.zw, r1.w).x; + r17.y = r19.w * r1.w + r0.x; + } else { + r17.y = 1; + } + } else { + r17.y = 1; + } + } else { + r17.y = 1; + } + r17.x = r17.z ? r17.y : r17.x; + } else { + r17.y = 1; + } + r0.x = r17.x + -r17.y; + r0.x = r0.y * r0.x + r17.y; + r0.y = cmp(0.00100000005 < r0.x); + if (r0.y != 0) { + r16.xyz = -cb0[173].xyz + r1.xyz; + r13.xy = cb0[176].xz * r16.yy + r16.xz; + r16.yw = cb0[174].zz * r13.xy; + r17.xy = cb0[183].ww * cb0[175].xy; + r13.xy = r13.xy * cb0[174].zz + r17.xy; + r0.y = t12.SampleLevel(s2_s, r13.xy, 0).x; + r13.xy = r16.yw * cb0[175].ww + r17.xy; + r1.w = t12.SampleLevel(s2_s, r13.xy, 0).x; + r3.w = dot(r16.xz, r16.xz); + r3.w = sqrt(r3.w); + r4.w = cb0[174].y + -cb0[174].x; + r3.w = -cb0[174].x + r3.w; + r4.w = 1 / r4.w; + r3.w = saturate(r4.w * r3.w); + r4.w = r3.w * -2 + 3; + r3.w = r3.w * r3.w; + r3.w = r4.w * r3.w; + r1.w = r1.w + -r0.y; + r0.y = r3.w * r1.w + r0.y; + r0.y = -1 + r0.y; + r0.y = cb0[175].z * r0.y + 1; + r0.x = r0.x * r0.y; + } + r0.y = cb6[35].z + -r0.x; + r0.x = cb6[35].w * r0.y + r0.x; + } else { + r0.x = cb6[35].z; + } + r0.x = min(1, r0.x); + r0.x = -1 + r0.x; + r0.x = cb6[34].x * r0.x + 1; + r1.w = cmp(0.00100000005 < r0.x); + if (r1.w != 0) { + r1.w = dot(-cb5[0].xyz, r15.xyz); + r16.xyz = cb5[0].xyz * r1.www + r15.xyz; + r1.w = cmp(r1.w < cb5[4].z); + r3.w = dot(r16.xyz, r16.xyz); + r3.w = max(6.10351562e-05, r3.w); + r3.w = rsqrt(r3.w); + r16.xyz = r16.xyz * r3.www; + r16.xyz = cb5[4].yyy * r16.xyz; + r16.xyz = -cb5[0].xyz * cb5[4].zzz + r16.xyz; + r3.w = dot(r16.xyz, r16.xyz); + r3.w = rsqrt(r3.w); + r16.xyz = r16.xyz * r3.www; + r16.xyz = r1.www ? r16.xyz : r15.xyz; + r17.xyz = r3.xyz * r2.www + r16.xyz; + r1.w = dot(r17.xyz, r17.xyz); + r1.w = max(6.10351562e-05, r1.w); + r1.w = rsqrt(r1.w); + r17.xyz = r17.xyz * r1.www; + r11.y = saturate(dot(r16.xyz, r6.xyz)); + r1.w = saturate(dot(r6.xyz, r17.xyz)); + r11.z = min(1, r0.z); + r3.w = r11.w * r11.w; + r3.w = r3.w * r3.w; + r4.w = r1.w * r3.w + -r1.w; + r1.w = r4.w * r1.w + 1; + r4.w = saturate(dot(r5.xyz, r17.xyz)); + r4.w = 1 + -r4.w; + r5.w = r4.w * r4.w; + r5.w = r5.w * r5.w; + r6.w = r5.w * r4.w; + r7.w = 1 + -r11.w; + r8.w = -r7.w * 0.383026004 + -0.0761947036; + r8.w = r7.w * r8.w + 1.04997003; + r7.w = r7.w * r8.w + 0.409254998; + r7.w = min(0.999000013, r7.w); + r8.w = 1 + -r7.w; + r16.xyz = float3(1,1,1) + -r7.xyz; + r16.xyz = r16.xyz * float3(0.0476190485,0.0476190485,0.0476190485) + r7.xyz; + r4.w = -r5.w * r4.w + 1; + r17.xyz = r7.xyz * r4.www + r6.www; + r1.w = r1.w * r1.w; + r1.w = r3.w / r1.w; + r13.xy = -r11.zy * r3.ww + r11.zy; + r13.xy = r13.xy * r11.zy + r3.ww; + r13.xy = sqrt(r13.xy); + r13.xy = r13.xy * r11.yz; + r3.w = r13.x + r13.y; + r3.w = 9.99999975e-05 + r3.w; + r3.w = 0.5 / r3.w; + r1.w = r3.w * r1.w; + r17.xyz = r17.xyz * r1.www; + r17.xyz = min(float3(2048,2048,2048), r17.xyz); + r18.xyzw = r11.zwyw * float4(0.96875,0.96875,0.96875,0.96875) + float4(0.015625,0.015625,0.015625,0.015625); + r1.w = t15.SampleLevel(s1_s, r18.xy, 0).x; + r3.w = t15.SampleLevel(s1_s, r18.zw, 0).x; + r1.w = r3.w * r1.w; + r1.w = r1.w * r7.w; + r1.w = r1.w / r8.w; + r18.xyz = r16.xyz * r16.xyz; + r18.xyz = r18.xyz * r1.www; + r16.xyz = -r16.xyz * r8.www + float3(1,1,1); + r16.xyz = r18.xyz / r16.xyz; + r16.xyz = r17.xyz + r16.xyz; + r16.xyz = cb5[4].xxx * r16.xyz; + r16.xyz = max(float3(0,0,0), r16.xyz); + r16.xyz = min(float3(1000,1000,1000), r16.xyz); + + // Reduce sun specular intensity on glass + if (GLASS_TRANSPARENCY > 0.5f) { + r16.xyz *= 0.5f; + } + + r1.w = max(0.00999999978, r10.w); + r16.xyz = r16.xyz / r1.www; + r16.xyz = min(float3(1000,1000,1000), r16.xyz); + r17.xyz = r11.yyy * r9.xyw; + r16.xyz = r16.xyz * r11.yyy + r17.xyz; + r16.xyz = cb5[1].xyz * r16.xyz; + r0.y = 0.5; + r17.xyz = t14.SampleBias(s1_s, r0.xy, cb0[108].x).xyz; + r0.x = 1 + -r0.x; + r17.xyz = r16.xyz * r17.xyz + -r16.xyz; + r16.xyz = r0.xxx * r17.xyz + r16.xyz; + } else { + r16.xyz = float3(0,0,0); + } + r0.xy = float2(0.03125,0.03125) * r13.zw; + r0.xy = floor(r0.xy); + r0.x = r0.y * cb4[1].y + r0.x; + r0.x = 8 * r0.x; + r0.x = (int)r0.x; + r0.y = -cb0[85].y * cb4[2].w + r14.z; + r0.y = floor(r0.y); + r1.w = cb4[1].w + -1; + r3.w = max(0, r0.y); + r1.w = min(r3.w, r1.w); + r3.w = 8 * r1.w; + r3.w = (int)r3.w; + r0.y = cmp(r1.w >= r0.y); + r1.w = (int)r3.w + asint(cb0[110].y); + r3.w = r11.w * r11.w; + r11.x = min(1, r0.z); + r0.z = 1 + -r11.w; + r4.w = -r0.z * 0.383026004 + -0.0761947036; + r4.w = r0.z * r4.w + 1.04997003; + r0.z = r0.z * r4.w + 0.409254998; + r0.z = min(0.999000013, r0.z); + r4.w = 1 + -r0.z; + r17.xyz = float3(1,1,1) + -r7.xyz; + r17.xyz = r17.xyz * float3(0.0476190485,0.0476190485,0.0476190485) + r7.xyz; + r11.yz = r11.xw * float2(0.96875,0.96875) + float2(0.015625,0.015625); + r5.w = t15.SampleLevel(s1_s, r11.yz, 0).x; + r18.xyz = -r17.xyz * r4.www + float3(1,1,1); + r17.xyz = r17.xyz * r17.xyz; + r19.w = 1; + r13.y = 1; + r20.z = r11.w; + r21.xyz = float3(0,0,0); + r6.w = 1; + r7.w = 0; + while (true) { + r8.w = cmp(7 < (int)r7.w); + if (r8.w != 0) break; + r8.w = (int)r0.x + (int)r7.w; + r8.w = t0[r8.w].val[0/4]; + r9.z = (int)r1.w + (int)r7.w; + r9.z = t0[r9.z].val[0/4]; + r8.w = (int)r8.w & (int)r9.z; + r8.w = r0.y ? r8.w : 0; + r9.z = (uint)r7.w << 5; + r22.xyz = float3(0,0,0); + r11.y = r6.w; + r11.z = r8.w; + while (true) { + if (r11.z == 0) break; + r12.w = firstbitlow((uint)r11.z); + r15.w = 1 << (int)r12.w; + r15.w = (int)r11.z ^ (int)r15.w; + r12.w = (int)r9.z + (int)r12.w; + bitmask.x = ((~(-1 << 29)) << 3) & 0xffffffff; r23.x = (((uint)r12.w << 3) & bitmask.x) | ((uint)1 & ~bitmask.x); + bitmask.y = ((~(-1 << 29)) << 3) & 0xffffffff; r23.y = (((uint)r12.w << 3) & bitmask.y) | ((uint)3 & ~bitmask.y); + bitmask.z = ((~(-1 << 29)) << 3) & 0xffffffff; r23.z = (((uint)r12.w << 3) & bitmask.z) | ((uint)5 & ~bitmask.z); + bitmask.w = ((~(-1 << 29)) << 3) & 0xffffffff; r23.w = (((uint)r12.w << 3) & bitmask.w) | ((uint)6 & ~bitmask.w); + bitmask.w = ((~(-1 << 29)) << 3) & 0xffffffff; r16.w = (((uint)r12.w << 3) & bitmask.w) | ((uint)7 & ~bitmask.w); + r17.w = (uint)cb5[r23.z+6].w; + r17.w = cmp((int)r17.w == 1); + if (r17.w != 0) { + r19.xyz = -cb5[r23.x+6].xyz + r1.xyz; + r24.xyz = int3(0xffff,0xffff,0xffff) & asint(cb5[r23.z+6].xzy); + r25.xyz = int3(0xffff,0xffff,0xffff) & asint(cb5[r23.w+6].yxz); + r26.xyz = asuint(cb5[r23.z+6].xzy) >> int3(16,16,16); + r27.xyz = asuint(cb5[r23.w+6].yxz) >> int3(16,16,16); + r24.xyz = f16tof32(r24.xyz); + r25.xyz = f16tof32(r25.xyz); + r26.xyz = f16tof32(r26.xyz); + r27.xyw = f16tof32(r27.yxz); + r28.xz = r24.xz; + r28.yw = r26.xz; + r17.w = dot(r19.xyzw, r28.xyzw); + r26.x = r24.y; + r26.z = r25.y; + r26.w = r27.x; + r18.w = dot(r19.xyzw, r26.xyzw); + r27.xz = r25.xz; + r19.x = dot(r19.xyzw, r27.xyzw); + r17.w = max(abs(r18.w), abs(r17.w)); + r17.w = max(r17.w, abs(r19.x)); + r18.w = cb5[r16.w+6].x * 0.5 + 0.5; + r17.w = -r18.w + r17.w; + r18.w = -cb5[r16.w+6].x * 0.5 + 0.5; + r17.w = saturate(r17.w / r18.w); + r17.w = 1 + -r17.w; + r17.w = r17.w * r17.w; + } else { + r17.w = 1; + } + r18.w = cmp(0.5 < cb5[r23.y+6].z); + r19.x = cmp(r17.w < 0.00100000005); + r19.x = (int)r18.w | (int)r19.x; + if (r19.x != 0) { + r11.z = r15.w; + continue; + } + r19.x = (uint)r12.w << 3; + bitmask.w = ((~(-1 << 29)) << 3) & 0xffffffff; r12.w = (((uint)r12.w << 3) & bitmask.w) | ((uint)2 & ~bitmask.w); + r19.y = cmp(cb5[r19.x+6].w < 1.5); + if (r19.y != 0) { + r19.y = cb5[r12.w+6].y * 0.5 + 0.5; + r24.x = -abs(cb5[r12.w+6].x) + r19.y; + r24.y = cb5[r12.w+6].y + -r24.x; + r19.y = 1 + -abs(r24.x); + r19.y = r19.y + -abs(r24.y); + r19.y = max(0.00048828125, r19.y); + r19.z = cmp(cb5[r12.w+6].x >= 0); + r24.z = r19.z ? r19.y : -r19.y; + r19.y = dot(r24.xyz, r24.xyz); + r19.y = rsqrt(r19.y); + r24.xyz = r24.xyz * r19.yyy; + r25.xyz = cb5[r23.x+6].xyz + -r1.xyz; + r19.y = dot(r25.xyz, r25.xyz); + r19.z = rsqrt(r19.y); + r26.xyz = r25.xyz * r19.zzz; + r20.w = (int)cb5[r16.w+6].w; + r27.xyz = cb5[r12.w+6].zzz * r24.xyz; + r28.xyz = -r27.xyz * float3(0.5,0.5,0.5) + r25.xyz; + r29.xyz = r27.xyz * float3(0.5,0.5,0.5) + r25.xyz; + r21.w = (uint)cb5[r19.x+6].w; + r21.w = (int)r21.w & 1; + r22.w = cmp((int)r21.w == 0); + r22.w = ~(int)r22.w; + r23.z = cmp(0 < cb5[r12.w+6].z); + r22.w = r22.w ? r23.z : 0; + r23.z = dot(r28.xyz, r28.xyz); + r23.z = sqrt(r23.z); + r24.w = dot(r29.xyz, r29.xyz); + r24.w = sqrt(r24.w); + r25.w = dot(r6.xyz, r28.xyz); + r25.w = r25.w / r23.z; + r26.w = dot(r6.xyz, r29.xyz); + r26.w = r26.w / r24.w; + r25.w = r26.w + r25.w; + r30.x = saturate(0.5 * r25.w); + r25.w = dot(r28.xyz, r29.xyz); + r23.z = r23.z * r24.w + r25.w; + r23.z = r23.z * 0.5 + 1; + r30.y = 1 / r23.z; + r13.x = saturate(dot(r6.xyz, r26.xyz)); + r20.xy = r22.ww ? r30.xy : r13.xy; + r13.x = cmp(cb5[r23.w+6].w < 0); + if (r13.x != 0) { + r13.x = cb5[r23.x+6].w * cb5[r23.x+6].w; + r13.x = r19.y * r13.x; + r13.x = -r13.x * r13.x + 1; + r13.x = max(0, r13.x); + r19.y = 1 + r19.y; + r19.y = 1 / r19.y; + r23.z = r22.w ? 1.000000 : 0; + r24.w = r20.y + -r19.y; + r19.y = r23.z * r24.w + r19.y; + r13.x = r13.x * r13.x; + r13.x = r19.y * r13.x; + } else { + r29.xyz = cb5[r23.x+6].www * r25.xyz; + r19.y = dot(r29.xyz, r29.xyz); + r19.y = min(1, r19.y); + r19.y = 1 + -r19.y; + r19.y = log2(r19.y); + r19.y = cb5[r23.w+6].w * r19.y; + r19.y = exp2(r19.y); + r13.x = r20.y * r19.y; + } + r19.y = dot(r26.xyz, -r24.xyz); + r19.y = -cb5[r12.w+6].z + r19.y; + r19.y = saturate(cb5[r12.w+6].w * r19.y); + r19.y = r19.y * r19.y; + r19.y = r21.w ? 1 : r19.y; + r13.x = r19.y * r13.x; + r19.y = ~(int)r22.w; + r20.y = cmp((int)r20.w >= 0); + r19.y = r20.y ? r19.y : 0; + if (r19.y != 0) { + if (r21.w == 0) { + r19.y = (uint)r20.w << 2; + r24.xyz = cb7[r19.y+33].xyw * r1.yyy; + r24.xyz = cb7[r19.y+32].xyw * r1.xxx + r24.xyz; + r24.xyz = cb7[r19.y+34].xyw * r1.zzz + r24.xyz; + r24.xyz = cb7[r19.y+35].xyw + r24.xyz; + r24.xy = saturate(r24.xy / r24.zz); + r24.xy = r24.xy * cb7[r20.w+0].zw + cb7[r20.w+0].xy; + } else { + r19.y = (uint)r20.w << 2; + r29.x = dot(-r25.xyz, cb7[r19.y+32].xyz); + r29.y = dot(-r25.xyz, cb7[r19.y+33].xyz); + r29.z = dot(-r25.xyz, cb7[r19.y+34].xyz); + r19.y = cmp(abs(r29.x) < abs(r29.y)); + r19.y = r19.y ? 0.000000 : 0; + r20.y = dot(abs(r29.xy), icb[r19.y+0].xy); + r20.y = cmp(r20.y < abs(r29.z)); + r19.y = r20.y ? 2 : r19.y; + r20.y = dot(r29.xyz, icb[r19.y+0].xyz); + r20.y = cmp(r20.y < 0); + bitmask.y = ((~(-1 << 31)) << 1) & 0xffffffff; r19.y = (((uint)r19.y << 1) & bitmask.y) | ((uint)r20.y & ~bitmask.y); + r20.y = (uint)r19.y >> 1; + r20.y = dot(r29.xyz, icb[r20.y+0].xyz); + r23.z = 0.000244140625 / cb7[r20.w+0].w; + r23.z = 0.5 + -r23.z; + r24.z = (uint)r19.y; + r24.w = cmp((uint)r19.y < 2); + r24.w = r24.w ? 0.000000 : 0; + r24.w = dot(r29.xz, icb[r24.w+0].xz); + r24.w = icb[r19.y+4].z * r24.w; + r24.w = r24.w / abs(r20.y); + r24.z = r24.w * r23.z + r24.z; + r24.z = 0.5 + r24.z; + r25.x = saturate(0.166666672 * r24.z); + r24.z = -1 + (int)icb[r19.y+4].y; + r24.z = dot(r29.yz, icb[r24.z+0].xy); + r19.y = icb[r19.y+4].w * r24.z; + r19.y = r19.y / abs(r20.y); + r25.y = saturate(-r19.y * r23.z + 0.5); + r24.xy = r25.xy * cb7[r20.w+0].zw + cb7[r20.w+0].xy; + } + r19.y = t23.SampleLevel(s1_s, r24.xy, 0).x; + r13.x = r19.y * r13.x; + } + r19.y = cmp(0 < r13.x); + if (r19.y != 0) { + if (r21.w == 0) { + r20.y = (int)cb5[r23.y+6].x; + } else { + r24.xyz = -cb5[r23.x+6].xyz + r1.xyz; + r25.xyz = cmp(abs(r24.yzz) < abs(r24.xxy)); + r20.w = r25.y ? r25.x : 0; + r24.xyz = cmp(float3(0,0,0) < r24.xyz); + r21.w = asuint(cb5[r12.w+6].w) >> 24; + if (8 == 0) r25.x = 0; else if (8+16 < 32) { r25.x = (uint)cb5[r12.w+6].w << (32-(8 + 16)); r25.x = (uint)r25.x >> (32-8); } else r25.x = (uint)cb5[r12.w+6].w >> 16; + if (8 == 0) r25.y = 0; else if (8+8 < 32) { r25.y = (uint)cb5[r12.w+6].w << (32-(8 + 8)); r25.y = (uint)r25.y >> (32-8); } else r25.y = (uint)cb5[r12.w+6].w >> 8; + r21.w = r24.x ? r21.w : r25.x; + r23.z = 255 & asint(cb5[r12.w+6].w); + r23.z = r24.y ? r25.y : r23.z; + if (8 == 0) r24.x = 0; else if (8+8 < 32) { r24.x = (uint)cb5[r23.y+6].x << (32-(8 + 8)); r24.x = (uint)r24.x >> (32-8); } else r24.x = (uint)cb5[r23.y+6].x >> 8; + r24.y = 255 & asint(cb5[r23.y+6].x); + r24.x = r24.z ? r24.x : r24.y; + r23.z = r25.z ? r23.z : r24.x; + r20.w = r20.w ? r21.w : r23.z; + r21.w = cmp((int)r20.w < 80); + r20.y = r21.w ? r20.w : -1; + } + r24.xyz = r26.xyz * cb6[r20.y+288].xxx + r1.xyz; + r20.w = cb6[r20.y+288].y * 5; + r24.xyz = r6.xyz * r20.www + r24.xyz; + r20.w = (uint)r20.y << 2; + r25.xyzw = cb6[r20.w+65].xyzw * r24.yyyy; + r25.xyzw = cb6[r20.w+64].xyzw * r24.xxxx + r25.xyzw; + r24.xyzw = cb6[r20.w+66].xyzw * r24.zzzz + r25.xyzw; + r24.xyzw = cb6[r20.w+67].xyzw + r24.xyzw; + r24.xyz = r24.xyz / r24.www; + r25.xyz = cmp(float3(0,0,0) >= r24.xyz); + r29.xyz = cmp(r24.xyz >= float3(1,1,1)); + r30.xy = cb6[r20.y+344].zw + -cb6[r20.y+344].xy; + r24.xy = r24.xy * r30.xy + cb6[r20.y+344].xy; + r30.xy = r24.xy * cb6[400].zw + float2(0.5,0.5); + r30.xy = floor(r30.xy); + r24.xy = r24.xy * cb6[400].zw + -r30.xy; + r31.xyzw = float4(0.5,1,0.5,1) + r24.xxyy; + r32.xyzw = r31.xxzz * r31.xxzz; + r30.zw = float2(1,1) + -r24.xy; + r31.xz = min(float2(0,0), r24.xy); + r33.xy = max(float2(0,0), r24.xy); + r34.xy = float2(0.159999996,0.159999996) * r30.zw; + r33.xy = -r33.xy * r33.xy + r31.yw; + r33.xy = float2(1,1) + r33.xy; + r33.xy = float2(0.159999996,0.159999996) * r33.xy; + r32.xz = float2(0.0799999982,0.0799999982) * r32.xz; + r24.xy = r32.yw * float2(0.5,0.5) + -r24.xy; + r35.xy = float2(0.159999996,0.159999996) * r24.xy; + r24.xy = -r31.xz * r31.xz + r30.zw; + r24.xy = float2(1,1) + r24.xy; + r36.xy = float2(0.159999996,0.159999996) * r24.xy; + r24.xy = float2(0.159999996,0.159999996) * r31.yw; + r35.z = r36.x; + r35.w = r24.x; + r34.z = r33.x; + r34.w = r32.x; + r31.xyzw = r35.zwxz + r34.zwxz; + r36.z = r35.y; + r36.w = r24.y; + r33.z = r34.y; + r33.w = r32.z; + r24.xyw = r36.zyw + r33.zyw; + r32.xyz = r34.xzw / r31.zwy; + r32.xyz = float3(-2.5,-0.5,1.5) + r32.xyz; + r32.xyz = cb6[400].xxx * r32.xyz; + r33.xyz = r33.zyw / r24.xyw; + r33.xyz = float3(-2.5,-0.5,1.5) + r33.xyz; + r33.xyw = cb6[400].yyy * r33.xyz; + r34.xyzw = r31.zwyz * r24.xxxy; + r32.w = r33.x; + r35.xyzw = r30.xyxy * cb6[400].xyxy + r32.xwyw; + r20.w = t11.SampleCmpLevelZero(s4_s, r35.xy, r24.z).x; + r21.w = t11.SampleCmpLevelZero(s4_s, r35.zw, r24.z).x; + r21.w = r34.y * r21.w; + r20.w = r34.x * r20.w + r21.w; + r30.zw = r30.xy * cb6[400].xy + r32.zw; + r21.w = t11.SampleCmpLevelZero(s4_s, r30.zw, r24.z).x; + r20.w = r34.z * r21.w + r20.w; + r33.z = r32.x; + r35.xyzw = r30.xyxy * cb6[400].xyxy + r33.zyzw; + r21.w = t11.SampleCmpLevelZero(s4_s, r35.xy, r24.z).x; + r20.w = r34.w * r21.w + r20.w; + r34.xyzw = r31.xyzw * r24.yyww; + r33.xz = r32.yz; + r32.xyzw = r30.xyxy * cb6[400].xyxy + r33.xyzy; + r21.w = t11.SampleCmpLevelZero(s4_s, r32.xy, r24.z).x; + r20.w = r34.x * r21.w + r20.w; + r21.w = t11.SampleCmpLevelZero(s4_s, r32.zw, r24.z).x; + r20.w = r34.y * r21.w + r20.w; + r21.w = t11.SampleCmpLevelZero(s4_s, r35.zw, r24.z).x; + r20.w = r34.z * r21.w + r20.w; + r21.w = cmp((int)r20.y >= 0); + r25.xyz = (int3)r25.xyz | (int3)r29.xyz; + r23.z = (int)r25.y | (int)r25.x; + r23.z = (int)r25.z | (int)r23.z; + r24.x = (int)r24.z & 0x7fffffff; + r24.x = cmp(0x7f800000 < (uint)r24.x); + r23.z = (int)r23.z | (int)r24.x; + r25.xyzw = r30.xyxy * cb6[400].xyxy + r33.xwzw; + r24.x = t11.SampleCmpLevelZero(s4_s, r25.xy, r24.z).x; + r20.w = r34.w * r24.x + r20.w; + r24.x = r31.y * r24.w; + r24.y = t11.SampleCmpLevelZero(s4_s, r25.zw, r24.z).x; + r20.w = r24.x * r24.y + r20.w; + r20.w = -1 + r20.w; + r20.y = cb6[r20.y+288].w * r20.w + 1; + r20.y = r23.z ? 1 : r20.y; + r20.y = r21.w ? r20.y : 1; + } else { + r20.y = 1; + } + if (r22.w != 0) { + r20.w = dot(r15.xyz, r27.xyz); + r21.w = saturate(cb5[r12.w+6].z * r19.z); + r21.w = r21.w * 0.5 + r3.w; + r21.w = min(1, r21.w); + r21.w = r3.w / r21.w; + r24.xyz = r15.xyz * r20.www + -r27.xyz; + r22.w = dot(r28.xyz, r24.xyz); + r20.w = r20.w * r20.w; + r20.w = cb5[r12.w+6].z * cb5[r12.w+6].z + -r20.w; + r20.w = saturate(r22.w / r20.w); + r24.xyz = r27.xyz * r20.www + r28.xyz; + r20.w = dot(r24.xyz, r24.xyz); + r20.w = rsqrt(r20.w); + r26.xyz = r24.xyz * r20.www; + } else { + r21.w = 1; + } + if (r19.y != 0) { + r19.y = saturate(cb5[r16.w+6].y * r19.z); + r24.xyz = r3.xyz * r2.www + r26.xyz; + r19.z = dot(r24.xyz, r24.xyz); + r19.z = max(6.10351562e-05, r19.z); + r19.z = rsqrt(r19.z); + r24.xyz = r24.xyz * r19.zzz; + r19.z = saturate(dot(r6.xyz, r24.xyz)); + r20.w = saturate(dot(r5.xyz, r24.xyz)); + r22.w = cmp(0 < r19.y); + r19.y = r19.y * r19.y; + r23.z = r20.w * 3.5999999 + 0.400000006; + r19.y = r19.y / r23.z; + r19.y = r11.w * r11.w + r19.y; + r19.y = min(1, r19.y); + r19.y = r22.w ? r19.y : r3.w; + r19.y = r19.y * r19.y; + r22.w = r19.z * r19.y + -r19.z; + r19.z = r22.w * r19.z + 1; + r20.w = 1 + -r20.w; + r22.w = r20.w * r20.w; + r22.w = r22.w * r22.w; + r23.z = r22.w * r20.w; + r20.w = -r22.w * r20.w + 1; + r24.xyz = r7.xyz * r20.www + r23.zzz; + r19.z = r19.z * r19.z; + r19.z = r19.y / r19.z; + r19.z = r19.z * r21.w; + r20.w = -r11.x * r19.y + r11.x; + r20.w = r20.w * r11.x + r19.y; + r20.w = sqrt(r20.w); + r21.w = -r20.x * r19.y + r20.x; + r19.y = r21.w * r20.x + r19.y; + r19.y = sqrt(r19.y); + r19.y = r19.y * r11.x; + r19.y = r20.x * r20.w + r19.y; + r19.y = 9.99999975e-05 + r19.y; + r19.y = 0.5 / r19.y; + r19.y = r19.z * r19.y; + r24.xyz = r24.xyz * r19.yyy; + r24.xyz = min(float3(2048,2048,2048), r24.xyz); + r19.yz = r20.xz * float2(0.96875,0.96875) + float2(0.015625,0.015625); + r19.y = t15.SampleLevel(s1_s, r19.yz, 0).x; + r19.y = r19.y * r5.w; + r19.y = r19.y * r0.z; + r19.y = r19.y / r4.w; + r25.xyz = r19.yyy * r17.xyz; + r25.xyz = r25.xyz / r18.xyz; + r24.xyz = r25.xyz + r24.xyz; + r24.xyz = cb5[r16.w+6].zzz * r24.xyz; + r24.xyz = max(float3(0,0,0), r24.xyz); + r24.xyz = min(float3(1000,1000,1000), r24.xyz); + r25.xyz = r20.xxx * r9.xyw; + r24.xyz = r24.xyz * r20.xxx + r25.xyz; + r25.xyz = cb5[r19.x+6].xyz * r13.xxx; + r20.xyw = r25.xyz * r20.yyy; + r20.xyw = r20.xyw * r17.www; + r20.xyw = r24.xyz * r20.xyw; + } else { + r20.xyw = float3(0,0,0); + } + } else { + if (r18.w == 0) { + r13.x = cb5[r12.w+6].y * 0.5 + 0.5; + r24.x = -abs(cb5[r12.w+6].x) + r13.x; + r24.y = cb5[r12.w+6].y + -r24.x; + r13.x = 1 + -abs(r24.x); + r13.x = r13.x + -abs(r24.y); + r13.x = max(0.00048828125, r13.x); + r17.w = cmp(cb5[r12.w+6].x >= 0); + r24.z = r17.w ? r13.x : -r13.x; + r13.x = dot(r24.xyz, r24.xyz); + r13.x = rsqrt(r13.x); + r24.xyz = r24.xyz * r13.xxx; + r25.xyz = cb5[r23.x+6].xyz + -r1.xyz; + r13.x = dot(r25.xyz, r25.xyz); + r17.w = rsqrt(r13.x); + r26.xyz = r25.xyz * r17.www; + r16.w = (int)cb5[r16.w+6].w; + r27.xyz = cb5[r12.w+6].zzz * r24.xyz; + r28.xyz = -r27.xyz * float3(0.5,0.5,0.5) + r25.xyz; + r27.xyz = r27.xyz * float3(0.5,0.5,0.5) + r25.xyz; + r17.w = (uint)cb5[r19.x+6].w; + r17.w = (int)r17.w & 1; + r18.w = cmp((int)r17.w == 0); + r18.w = ~(int)r18.w; + r19.x = cmp(0 < cb5[r12.w+6].z); + r18.w = r18.w ? r19.x : 0; + r19.x = dot(r28.xyz, r28.xyz); + r19.y = dot(r27.xyz, r27.xyz); + r19.xy = sqrt(r19.xy); + r19.z = dot(r28.xyz, r27.xyz); + r19.x = r19.x * r19.y + r19.z; + r19.x = r19.x * 0.5 + 1; + r19.x = 1 / r19.x; + r19.x = r18.w ? r19.x : 1; + r19.y = cmp(cb5[r23.w+6].w < 0); + if (r19.y != 0) { + r19.y = cb5[r23.x+6].w * cb5[r23.x+6].w; + r19.y = r19.y * r13.x; + r19.y = -r19.y * r19.y + 1; + r19.y = max(0, r19.y); + r13.x = 1 + r13.x; + r13.x = 1 / r13.x; + r19.z = r18.w ? 1.000000 : 0; + r21.w = r19.x + -r13.x; + r13.x = r19.z * r21.w + r13.x; + r19.y = r19.y * r19.y; + r13.x = r19.y * r13.x; + } else { + r27.xyz = cb5[r23.x+6].www * r25.xyz; + r19.y = dot(r27.xyz, r27.xyz); + r19.y = min(1, r19.y); + r19.y = 1 + -r19.y; + r19.y = log2(r19.y); + r19.y = cb5[r23.w+6].w * r19.y; + r19.y = exp2(r19.y); + r13.x = r19.x * r19.y; + } + r19.x = dot(r26.xyz, -r24.xyz); + r19.x = -cb5[r12.w+6].z + r19.x; + r19.x = saturate(cb5[r12.w+6].w * r19.x); + r19.x = r19.x * r19.x; + r19.x = r17.w ? 1 : r19.x; + r13.x = r19.x * r13.x; + r18.w = ~(int)r18.w; + r19.x = cmp((int)r16.w >= 0); + r18.w = r18.w ? r19.x : 0; + if (r18.w != 0) { + if (r17.w == 0) { + r18.w = (uint)r16.w << 2; + r19.xyz = cb7[r18.w+33].xyw * r1.yyy; + r19.xyz = cb7[r18.w+32].xyw * r1.xxx + r19.xyz; + r19.xyz = cb7[r18.w+34].xyw * r1.zzz + r19.xyz; + r19.xyz = cb7[r18.w+35].xyw + r19.xyz; + r19.xy = saturate(r19.xy / r19.zz); + r19.xy = r19.xy * cb7[r16.w+0].zw + cb7[r16.w+0].xy; + } else { + r18.w = (uint)r16.w << 2; + r24.x = dot(-r25.xyz, cb7[r18.w+32].xyz); + r24.y = dot(-r25.xyz, cb7[r18.w+33].xyz); + r24.z = dot(-r25.xyz, cb7[r18.w+34].xyz); + r18.w = cmp(abs(r24.x) < abs(r24.y)); + r18.w = r18.w ? 0.000000 : 0; + r19.z = dot(abs(r24.xy), icb[r18.w+0].xy); + r19.z = cmp(r19.z < abs(r24.z)); + r18.w = r19.z ? 2 : r18.w; + r19.z = dot(r24.xyz, icb[r18.w+0].xyz); + r19.z = cmp(r19.z < 0); + bitmask.w = ((~(-1 << 31)) << 1) & 0xffffffff; r18.w = (((uint)r18.w << 1) & bitmask.w) | ((uint)r19.z & ~bitmask.w); + r19.z = (uint)r18.w >> 1; + r19.z = dot(r24.xyz, icb[r19.z+0].xyz); + r21.w = 0.000244140625 / cb7[r16.w+0].w; + r21.w = 0.5 + -r21.w; + r22.w = (uint)r18.w; + r23.z = cmp((uint)r18.w < 2); + r23.z = r23.z ? 0.000000 : 0; + r23.z = dot(r24.xz, icb[r23.z+0].xz); + r23.z = icb[r18.w+4].z * r23.z; + r23.z = r23.z / abs(r19.z); + r22.w = r23.z * r21.w + r22.w; + r22.w = 0.5 + r22.w; + r25.x = saturate(0.166666672 * r22.w); + r22.w = -1 + (int)icb[r18.w+4].y; + r22.w = dot(r24.yz, icb[r22.w+0].xy); + r18.w = icb[r18.w+4].w * r22.w; + r18.w = r18.w / abs(r19.z); + r25.y = saturate(-r18.w * r21.w + 0.5); + r19.xy = r25.xy * cb7[r16.w+0].zw + cb7[r16.w+0].xy; + } + r16.w = t23.SampleLevel(s1_s, r19.xy, 0).x; + r13.x = r16.w * r13.x; + } + r13.x = cmp(0 < r13.x); + if (r13.x != 0) { + if (r17.w == 0) { + r13.x = (int)cb5[r23.y+6].x; + } else { + r19.xyz = -cb5[r23.x+6].xyz + r1.xyz; + r23.xzw = cmp(abs(r19.yzz) < abs(r19.xxy)); + r16.w = r23.z ? r23.x : 0; + r19.xyz = cmp(float3(0,0,0) < r19.xyz); + r17.w = asuint(cb5[r12.w+6].w) >> 24; + if (8 == 0) r23.x = 0; else if (8+16 < 32) { r23.x = (uint)cb5[r12.w+6].w << (32-(8 + 16)); r23.x = (uint)r23.x >> (32-8); } else r23.x = (uint)cb5[r12.w+6].w >> 16; + if (8 == 0) r23.z = 0; else if (8+8 < 32) { r23.z = (uint)cb5[r12.w+6].w << (32-(8 + 8)); r23.z = (uint)r23.z >> (32-8); } else r23.z = (uint)cb5[r12.w+6].w >> 8; + r17.w = r19.x ? r17.w : r23.x; + r12.w = 255 & asint(cb5[r12.w+6].w); + r12.w = r19.y ? r23.z : r12.w; + if (8 == 0) r18.w = 0; else if (8+8 < 32) { r18.w = (uint)cb5[r23.y+6].x << (32-(8 + 8)); r18.w = (uint)r18.w >> (32-8); } else r18.w = (uint)cb5[r23.y+6].x >> 8; + r19.x = 255 & asint(cb5[r23.y+6].x); + r18.w = r19.z ? r18.w : r19.x; + r12.w = r23.w ? r12.w : r18.w; + r12.w = r16.w ? r17.w : r12.w; + r16.w = cmp((int)r12.w < 80); + r13.x = r16.w ? r12.w : -1; + } + r19.xyz = r26.xyz * cb6[r13.x+288].xxx + r1.xyz; + r12.w = cb6[r13.x+288].y * 5; + r19.xyz = r6.xyz * r12.www + r19.xyz; + r12.w = (uint)r13.x << 2; + r23.xyzw = cb6[r12.w+65].xyzw * r19.yyyy; + r23.xyzw = cb6[r12.w+64].xyzw * r19.xxxx + r23.xyzw; + r23.xyzw = cb6[r12.w+66].xyzw * r19.zzzz + r23.xyzw; + r23.xyzw = cb6[r12.w+67].xyzw + r23.xyzw; + r19.xyz = r23.xyz / r23.www; + r23.xyz = cmp(float3(0,0,0) >= r19.xyz); + r24.xyz = cmp(r19.xyz >= float3(1,1,1)); + r25.xy = cb6[r13.x+344].zw + -cb6[r13.x+344].xy; + r19.xy = r19.xy * r25.xy + cb6[r13.x+344].xy; + r25.xy = r19.xy * cb6[400].zw + float2(0.5,0.5); + r25.xy = floor(r25.xy); + r19.xy = r19.xy * cb6[400].zw + -r25.xy; + r26.xyzw = float4(0.5,1,0.5,1) + r19.xxyy; + r27.xyzw = r26.xxzz * r26.xxzz; + r25.zw = float2(1,1) + -r19.xy; + r26.xz = min(float2(0,0), r19.xy); + r28.xy = max(float2(0,0), r19.xy); + r29.xy = float2(0.159999996,0.159999996) * r25.zw; + r28.xy = -r28.xy * r28.xy + r26.yw; + r28.xy = float2(1,1) + r28.xy; + r28.xy = float2(0.159999996,0.159999996) * r28.xy; + r27.xz = float2(0.0799999982,0.0799999982) * r27.xz; + r19.xy = r27.yw * float2(0.5,0.5) + -r19.xy; + r30.xy = float2(0.159999996,0.159999996) * r19.xy; + r19.xy = -r26.xz * r26.xz + r25.zw; + r19.xy = float2(1,1) + r19.xy; + r31.xy = float2(0.159999996,0.159999996) * r19.xy; + r19.xy = float2(0.159999996,0.159999996) * r26.yw; + r30.z = r31.x; + r30.w = r19.x; + r29.z = r28.x; + r29.w = r27.x; + r26.xyzw = r30.zwxz + r29.zwxz; + r31.z = r30.y; + r31.w = r19.y; + r28.z = r29.y; + r28.w = r27.z; + r27.xyz = r31.zyw + r28.zyw; + r29.xyz = r29.xzw / r26.zwy; + r29.xyz = float3(-2.5,-0.5,1.5) + r29.xyz; + r29.xyz = cb6[400].xxx * r29.xyz; + r28.xyz = r28.zyw / r27.xyz; + r28.xyz = float3(-2.5,-0.5,1.5) + r28.xyz; + r28.xyw = cb6[400].yyy * r28.xyz; + r30.xyzw = r27.xxxy * r26.zwyz; + r29.w = r28.x; + r31.xyzw = r25.xyxy * cb6[400].xyxy + r29.xwyw; + r12.w = t11.SampleCmpLevelZero(s4_s, r31.xy, r19.z).x; + r16.w = t11.SampleCmpLevelZero(s4_s, r31.zw, r19.z).x; + r16.w = r30.y * r16.w; + r12.w = r30.x * r12.w + r16.w; + r19.xy = r25.xy * cb6[400].xy + r29.zw; + r16.w = t11.SampleCmpLevelZero(s4_s, r19.xy, r19.z).x; + r12.w = r30.z * r16.w + r12.w; + r28.z = r29.x; + r31.xyzw = r25.xyxy * cb6[400].xyxy + r28.zyzw; + r16.w = t11.SampleCmpLevelZero(s4_s, r31.xy, r19.z).x; + r12.w = r30.w * r16.w + r12.w; + r30.xyzw = r27.yyzz * r26.xyzw; + r28.xz = r29.yz; + r29.xyzw = r25.xyxy * cb6[400].xyxy + r28.xyzy; + r16.w = t11.SampleCmpLevelZero(s4_s, r29.xy, r19.z).x; + r12.w = r30.x * r16.w + r12.w; + r16.w = t11.SampleCmpLevelZero(s4_s, r29.zw, r19.z).x; + r12.w = r30.y * r16.w + r12.w; + r16.w = t11.SampleCmpLevelZero(s4_s, r31.zw, r19.z).x; + r12.w = r30.z * r16.w + r12.w; + r16.w = cmp((int)r13.x >= 0); + r23.xyz = (int3)r23.xyz | (int3)r24.xyz; + r17.w = (int)r23.y | (int)r23.x; + r17.w = (int)r23.z | (int)r17.w; + r18.w = (int)r19.z & 0x7fffffff; + r18.w = cmp(0x7f800000 < (uint)r18.w); + r17.w = (int)r17.w | (int)r18.w; + r23.xyzw = r25.xyxy * cb6[400].xyxy + r28.xwzw; + r18.w = t11.SampleCmpLevelZero(s4_s, r23.xy, r19.z).x; + r12.w = r30.w * r18.w + r12.w; + r18.w = r27.z * r26.y; + r19.x = t11.SampleCmpLevelZero(s4_s, r23.zw, r19.z).x; + r12.w = r18.w * r19.x + r12.w; + r12.w = -1 + r12.w; + r12.w = cb6[r13.x+288].w * r12.w + 1; + r12.w = r17.w ? 1 : r12.w; + r12.w = r16.w ? r12.w : 1; + } else { + r12.w = 1; + } + } else { + r12.w = 1; + } + r11.y = r12.w * r11.y; + r20.xyw = float3(0,0,0); + } + r22.xyz = r22.xyz + r20.xyw; + r11.z = r15.w; + } + r6.w = r11.y; + r21.xyz = r22.xyz + r21.xyz; + r7.w = (int)r7.w + 1; + } + r0.x = dot(r2.xyz, float3(0.212672904,0.715152204,0.0721750036)); + r1.xzw = r2.xyz + -r0.xxx; + r0.xyz = cb0[184].www * r1.xzw + r0.xxx; + + // Reduce clustered light contribution on glass + if (GLASS_TRANSPARENCY > 0.5f) { + r21.xyz *= 0.5f; + } + + r1.xzw = r21.xyz * r6.www + r16.xyz; + r2.xyz = cb2[21].xyz * cb2[20].zzz; + r2.w = 1 + -r10.w; + r3.x = -cb2[20].y + 1; + r3.x = max(0.00999999978, r3.x); + r2.w = saturate(r2.w / r3.x); + r2.xyz = r8.xyz * r2.xyz + -r1.xzw; + r1.xzw = r2.www * r2.xyz + r1.xzw; + r0.xyz = r0.xyz * cb0[184].xyz + r1.xzw; + + // Apply glass brightness reduction + if (GLASS_TRANSPARENCY > 0.5f) { + r0.xyz *= 0.65f; + } + r1.x = r1.y * cb0[156].w + cb0[157].w; + r1.z = r0.w * cb0[154].w + -cb0[153].w; + r1.xz = max(float2(0.00999999978,0), r1.xz); + r1.w = -1.44269502 * r1.x; + r1.w = exp2(r1.w); + r1.w = 1 + -r1.w; + r1.x = r1.w / r1.x; + r1.w = r1.y * cb0[156].w + cb0[158].w; + r1.w = 1.44269502 * r1.w; + r1.w = exp2(r1.w); + r1.x = r1.x * r1.w; + r1.x = -r1.z * r1.x; + r1.xzw = cb0[155].xyz * r1.xxx; + r1.xzw = float3(1.44269502,1.44269502,1.44269502) * r1.xzw; + r1.xzw = exp2(r1.xzw); + r2.x = dot(-r5.xyz, cb0[154].xyz); + r2.y = cb0[155].w * cb0[155].w + 1; + r2.z = dot(r2.xx, cb0[155].ww); + r2.y = r2.y + -r2.z; + r2.z = cmp(0 < cb0[163].z); + if (r2.z != 0) { + r14.w = 7 & asint(cb0[108].w); + r3.xyz = mad((int3)r14.xyw, int3(0x19660d,0x19660d,0x19660d), int3(0x3c6ef35f,0x3c6ef35f,0x3c6ef35f)); + r2.z = mad((int)r3.y, (int)r3.z, (int)r3.x); + r2.w = mad((int)r3.z, (int)r2.z, (int)r3.y); + r3.x = mad((int)r2.z, (int)r2.w, (int)r3.z); + r6.x = mad((int)r2.w, (int)r3.x, (int)r2.z); + r2.z = dot(-r5.xyz, -r4.xyz); + r3.y = -cb0[44].y + r1.y; + r3.z = cmp(5.96046448e-08 < r2.z); + r2.z = 1 / r2.z; + r2.z = r3.z ? r2.z : 0; + r2.z = cb0[163].w * r2.z; + r3.z = 1 / r0.w; + r3.w = r3.z * r2.z; + r4.x = r3.w * r3.y + cb0[44].y; + r3.y = -r3.w * r3.y + r3.y; + r3.w = cb0[159].z * r3.y; + r3.y = cb0[162].x * r3.y; + r3.yw = max(float2(-127,-127), r3.yw); + r4.y = -cb0[159].x + r4.x; + r4.y = cb0[159].z * r4.y; + r4.y = max(-127, r4.y); + r4.y = exp2(-r4.y); + r4.y = cb0[159].y * r4.y; + r4.z = cmp(5.96046448e-08 < abs(r3.w)); + r4.w = exp2(-r3.w); + r4.w = 1 + -r4.w; + r4.w = r4.w / r3.w; + r3.w = -r3.w * 0.240226507 + 0.693147182; + r3.w = r4.z ? r4.w : r3.w; + r4.x = -cb0[162].z + r4.x; + r4.x = cb0[162].x * r4.x; + r4.x = max(-127, r4.x); + r4.x = exp2(-r4.x); + r4.x = cb0[162].y * r4.x; + r4.z = cmp(5.96046448e-08 < abs(r3.y)); + r4.w = exp2(-r3.y); + r4.w = 1 + -r4.w; + r4.w = r4.w / r3.y; + r3.y = -r3.y * 0.240226507 + 0.693147182; + r3.y = r4.z ? r4.w : r3.y; + r3.y = r4.x * r3.y; + r3.y = r4.y * r3.w + r3.y; + r2.z = -r2.z * r3.z + 1; + r2.z = r2.z * r0.w; + r2.z = r3.y * r2.z; + r2.z = exp2(-r2.z); + r2.z = min(1, r2.z); + r2.z = max(cb0[161].w, r2.z); + r3.yz = saturate(r0.ww * cb0[160].yw + cb0[160].xz); + r2.z = r3.y + r2.z; + r2.z = r2.z + r3.z; + r2.z = min(1, r2.z); + r6.y = mad((int)r3.x, (int)r6.x, (int)r2.w); + r3.xy = (uint2)r6.xy >> int2(16,16); + r3.xy = (uint2)r3.xy; + r3.xy = r3.xy * float2(3.05180438e-05,3.05180438e-05) + float2(-1,-1); + r3.xy = r3.xy * cb0[167].ww + r13.zw; + r3.xy = cb0[165].xy * r3.xy; + r2.w = r14.z * cb0[164].x + cb0[164].y; + r2.w = log2(r2.w); + r2.w = cb0[164].z * r2.w; + r3.z = r2.w / cb0[163].z; + r3.xyzw = t22.SampleLevel(s1_s, r3.xyz, 0).xyzw; + r2.w = -cb0[166].z + r14.z; + r2.w = saturate(1000000 * r2.w); + r3.xyzw = float4(-0,-0,-0,-1) + r3.xyzw; + r3.xyzw = r2.wwww * r3.xyzw + float4(0,0,0,1); + r2.w = 1 + -r2.z; + r4.xyz = cb0[161].xyz * r2.www; + r3.xyz = r4.xyz * r3.www + r3.xyz; + r2.z = r3.w * r2.z; + } else { + r1.y = -cb0[44].y + r1.y; + r2.w = cb0[159].z * r1.y; + r2.w = max(-127, r2.w); + r1.y = cb0[162].x * r1.y; + r1.y = max(-127, r1.y); + r3.w = -cb0[159].x + cb0[44].y; + r3.w = cb0[159].z * r3.w; + r3.w = max(-127, r3.w); + r3.w = exp2(-r3.w); + r3.w = cb0[159].y * r3.w; + r4.x = cmp(5.96046448e-08 < abs(r2.w)); + r4.y = exp2(-r2.w); + r4.y = 1 + -r4.y; + r4.y = r4.y / r2.w; + r2.w = -r2.w * 0.240226507 + 0.693147182; + r2.w = r4.x ? r4.y : r2.w; + r4.x = -cb0[162].z + cb0[44].y; + r4.x = cb0[162].x * r4.x; + r4.x = max(-127, r4.x); + r4.x = exp2(-r4.x); + r4.x = cb0[162].y * r4.x; + r4.y = cmp(5.96046448e-08 < abs(r1.y)); + r4.z = exp2(-r1.y); + r4.z = 1 + -r4.z; + r4.z = r4.z / r1.y; + r1.y = -r1.y * 0.240226507 + 0.693147182; + r1.y = r4.y ? r4.z : r1.y; + r1.y = r4.x * r1.y; + r1.y = r3.w * r2.w + r1.y; + r1.y = r1.y * r0.w; + r1.y = exp2(-r1.y); + r1.y = min(1, r1.y); + r1.y = max(cb0[161].w, r1.y); + r4.xy = saturate(r0.ww * cb0[160].yw + cb0[160].xz); + r0.w = r4.x + r1.y; + r0.w = r0.w + r4.y; + r2.z = min(1, r0.w); + r0.w = 1 + -r2.z; + r3.xyz = cb0[161].xyz * r0.www; + } + r4.xyz = r2.zzz * r1.xzw; + r0.w = r2.x * r2.x + 1; + r0.w = 0.0596831031 * r0.w; + r5.xyz = cb0[156].xyz * r0.www + cb0[158].xyz; + r0.w = -cb0[155].w * cb0[155].w + 1; + r1.y = 12.566371 * r2.y; + r2.x = sqrt(r2.y); + r1.y = r2.x * r1.y; + r1.y = max(0.00100000005, r1.y); + r0.w = r0.w / r1.y; + r2.xyw = saturate(cb0[157].xyz * r0.www + r5.xyz); + r2.xyw = float3(255,255,255) * r2.xyw; + r1.xyz = float3(1,1,1) + -r1.xzw; + r1.xyz = r2.xyw * r1.xyz; + r1.xyz = r1.xyz * r2.zzz + r3.xyz; + + // Reduce fog/atmospheric contributin + if (GLASS_TRANSPARENCY > 0.5f) { + // Boost transmittance to reduce fog density on glass + float3 boostedTrans = lerp(r4.xyz, float3(1,1,1), 0.5f); + float3 reducedInscatter = r1.xyz * 0.35f; + r10.xyz = r0.xyz * boostedTrans + reducedInscatter; + } else { + // Vanilla behavior + r10.xyz = r0.xyz * r4.xyz + r1.xyz; + } + r0.xy = float2(0.5,-0.5) * r12.xy; + r0.xy = sqrt(abs(r0.xy)); + r0.xy = sqrt(r0.xy); + r12.z = -r12.y; + r0.zw = cmp(float2(0,0) < r12.xz); + r1.xy = cmp(r12.xz < float2(0,0)); + r0.zw = (int2)-r0.zw + (int2)r1.xy; + r0.zw = (int2)r0.zw; + r0.xy = r0.xy * r0.zw; + r0.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); + r0.z = (uint)v7.x << 4; + r0.z = max(cb1[r0.z+4].y, cb1[r0.z+4].z); + r0.z = -0.100000024 + r0.z; + r0.w = cmp(0 < r0.z); + r0.z = cmp(r0.z < 0); + r0.z = (int)-r0.w + (int)r0.z; + r0.z = (int)r0.z; + r0.z = saturate(r0.z); + r1.xy = float2(0.5,0.5) + -r0.xy; + r0.xy = r0.zz * r1.xy + r0.xy; + o1.xy = min(float2(1,1), r0.xy); + r0.x = dot(r10.xyz, float3(0.212672904,0.715152204,0.0721750036)); + r0.x = r0.x * r10.w; + r0.x = max(r0.x, r10.w); + r0.x = saturate(10 * r0.x); + r0.x = cmp(0.5 < r0.x); + o1.z = r0.x ? 1.000000 : 0; + + // Modifed Glass Final Output + if (GLASS_TRANSPARENCY > 0.5f) { + float3 glassColor = r10.xyz; + float glassLuma = dot(glassColor, float3(0.2126f, 0.7152f, 0.0722f)); + float maxBrightness = 2.0f; + if (glassLuma > 0.5f) { + float compression = 0.5f + (maxBrightness - 0.5f) * (1.0f - exp(-(glassLuma - 0.5f) / (maxBrightness - 0.5f))); + float scale = compression / max(glassLuma, 0.001f); + glassColor *= scale; + } + + o0.xyz = glassColor; + o0.w = r10.w; + } else { + // Vanilla output + o0.xyzw = r10.xyzw; + } + o1.w = 0; + return; +} \ No newline at end of file From 969110b06f187d25d31fa6ea197761107ecc2e45 Mon Sep 17 00:00:00 2001 From: SGTForgery Date: Wed, 4 Feb 2026 09:12:37 +0000 Subject: [PATCH 12/40] chore(endfield): Added glass shader backup ASM --- .../0xB8941FB1.ps_5_0_original_backup.asm | 1754 +++++++++++++++++ 1 file changed, 1754 insertions(+) create mode 100644 src/games/endfield/glass/0xB8941FB1.ps_5_0_original_backup.asm diff --git a/src/games/endfield/glass/0xB8941FB1.ps_5_0_original_backup.asm b/src/games/endfield/glass/0xB8941FB1.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..8b6a16c557 --- /dev/null +++ b/src/games/endfield/glass/0xB8941FB1.ps_5_0_original_backup.asm @@ -0,0 +1,1754 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Wed Feb 4 07:24:18 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xyz +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 zw 1 NONE float zw +// TEXCOORD 2 xyz 2 NONE float xyz +// TEXCOORD 3 xyzw 3 NONE float xyzw +// TEXCOORD 4 xyzw 4 NONE float x +// TEXCOORD 5 xyz 5 NONE float xyz +// TEXCOORD 6 xyz 6 NONE float xyz +// TEXCOORD 7 x 7 NONE uint x +// SV_IsFrontFace 0 x 8 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[244], immediateIndexed +dcl_constantbuffer CB1[4096], dynamicIndexed +dcl_constantbuffer CB2[24], immediateIndexed +dcl_constantbuffer CB3[259], dynamicIndexed +dcl_constantbuffer CB4[3], immediateIndexed +dcl_constantbuffer CB5[2054], dynamicIndexed +dcl_constantbuffer CB6[715], dynamicIndexed +dcl_constantbuffer CB7[160], dynamicIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_comparison +dcl_sampler s4, mode_default +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2darray (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2d (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture3d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture2d (float,float,float,float) t18 +dcl_input_ps_siv linear noperspective v0.xyz, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v1.zw +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyzw +dcl_input_ps linear v4.x +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps constant v7.x +dcl_input_ps_sgv constant v8.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 40 +mul r0.xy, v0.xyxx, cb0[82].zwzz +mad r0.zw, r0.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +mul r1.xyzw, -r0.wwww, cb0[25].xyzw +mad r1.xyzw, cb0[24].xyzw, r0.zzzz, r1.xyzw +mad r1.xyzw, cb0[26].xyzw, v0.zzzz, r1.xyzw +add r1.xyzw, r1.xyzw, cb0[27].xyzw +div r1.xyz, r1.xyzx, r1.wwww +lt r0.z, l(0.000000), v3.w +movc r0.z, r0.z, l(1.000000), l(-1.000000) +eq r0.w, l(0.000000), cb0[86].w +add r2.xyz, -r1.xyzx, cb0[44].xyzx +mov r3.x, cb0[0].z +mov r3.y, cb0[1].z +mov r3.z, cb0[2].z +movc r2.xyz, r0.wwww, r2.xyzx, r3.xyzx +dp3 r0.w, r2.xyzx, r2.xyzx +max r2.w, r0.w, l(9.999999939E-09) +rsq r2.w, r2.w +mul r4.xyz, r2.wwww, r2.xyzx +mul r0.w, r0.w, r2.w +add r5.xy, -v1.xyxx, v1.zwzz +mad r5.zw, cb2[2].wwww, r5.xxxy, v1.xxxy +mad r5.zw, r5.zzzw, cb2[11].xxxy, cb2[11].zzzw +sample_b_indexable(texture2d)(float,float,float,float) r6.xyzw, r5.zwzz, t2.xyzw, s4, cb0[108].x +mad r5.xy, cb2[3].xxxx, r5.xyxx, v1.xyxx +mad r5.xy, r5.xyxx, cb2[12].xyxx, cb2[12].zwzz +add r3.w, cb0[108].x, cb2[3].y +sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, r5.xyxx, t3.xyzw, s5, r3.w +mad r5.xy, r5.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +lt r7.xy, |r5.xyxx|, l(0.012000, 0.012000, 0.000000, 0.000000) +movc r5.xy, r7.xyxx, l(0,0,0,0), r5.xyxx +mul r7.xy, r5.xyxx, cb2[0].xxxx +add r7.zw, -r6.wwww, r5.wwwz +mad r3.w, cb2[1].z, r7.z, r6.w +mul r3.w, r3.w, cb2[8].w +mad r4.w, r3.w, v4.x, -r3.w +mad r8.w, cb2[23].x, r4.w, r3.w +add r3.w, -cb2[0].z, cb2[0].w +mad r9.w, r5.z, r3.w, cb2[0].z +add_sat r3.w, l(-1.000000), cb2[3].w +add r4.w, -r6.w, cb2[4].y +mad r3.w, r3.w, r4.w, r6.w +mov_sat r4.w, cb2[21].y +add_sat r10.xy, l(-1.000000, -2.000000, 0.000000, 0.000000), cb2[21].yyyy +mad r5.z, r10.x, r7.w, r6.w +add r6.w, -r5.z, r5.w +mad r5.z, r10.y, r6.w, r5.z +add r5.z, r5.z, l(-1.000000) +mad r5.z, r4.w, r5.z, l(1.000000) +mad_sat r5.z, r5.z, l(1.11111116), l(-0.0555555597) +ishl r6.w, v7.x, l(4) +ge r7.z, r5.z, l(0.100000) +and r7.z, r7.z, l(0x3f800000) +mul r7.w, r7.z, cb1[r6.w + 15].w +mul r6.xyz, r6.xyzx, cb2[8].xyzx +mul_sat r6.xyz, r6.xyzx, cb2[4].zzzz +add r10.xyz, -r6.xyzx, cb2[8].xyzx +mad r6.xyz, cb2[4].xxxx, r10.xyzx, r6.xyzx +mad r7.z, -cb1[r6.w + 15].w, r7.z, l(1.000000) +mad r10.xyz, cb1[r6.w + 15].xyzx, r7.wwww, r7.zzzz +mul r11.xyz, r6.xyzx, r10.xyzx +mul r12.xyz, v2.zxyz, v3.yzxy +mad r12.xyz, v2.yzxy, v3.zxyz, -r12.xyzx +mul r12.xyz, r0.zzzz, r12.xyzx +mul r7.yzw, r7.yyyy, r12.xxyz +mad r7.xyz, v3.xyzx, r7.xxxx, r7.yzwy +dp2 r0.z, r5.xyxx, r5.xyxx +add r0.z, -r0.z, l(1.000000) +max r0.z, r0.z, l(0.000000) +sqrt r0.z, r0.z +lt r5.x, l(0.000000), cb2[1].w +movc r5.x, r5.x, l(-1.000000), l(1.000000) +movc r5.x, v8.x, l(1.000000), r5.x +mul r0.z, r0.z, r5.x +mad r7.xyz, v2.xyzx, r0.zzzz, r7.xyzx +dp3 r0.z, r7.xyzx, r7.xyzx +rsq r0.z, r0.z +mul r7.xyz, r0.zzzz, r7.xyzx +dp3 r0.z, -r4.xyzx, r7.xyzx +mul r5.x, cb2[22].x, cb2[22].x +mad r5.y, -r0.z, r0.z, l(1.000000) +mad r5.x, -r5.x, r5.y, l(1.000000) +sqrt r5.y, r5.x +mad r5.y, cb2[22].x, r0.z, r5.y +ge r5.x, r5.x, l(0.000000) +mul r12.xyz, r7.xyzx, r5.yyyy +mad r12.xyz, cb2[22].xxxx, -r4.xyzx, -r12.xyzx +and r12.xyz, r5.xxxx, r12.xyzx +mul r5.xy, r12.yyyy, cb0[1].xyxx +mad r5.xy, cb0[0].xyxx, r12.xxxx, r5.xyxx +mad r5.xy, cb0[2].xyxx, r12.zzzz, r5.xyxx +mul r5.xy, r5.xyxx, cb2[22].yyyy +mad r0.xy, r5.xyxx, r8.wwww, r0.xyxx +sample_b_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xyxx, t4.xyzw, s6, cb0[108].x +max r0.x, v5.z, l(9.999999939E-09) +div r0.xy, v5.xyxx, r0.xxxx +max r5.x, v6.z, l(9.999999939E-09) +div r5.xy, v6.xyxx, r5.xxxx +add r13.xy, r0.xyxx, -r5.xyxx +mul r0.x, l(0.080000), cb2[0].y +mul r14.xyz, r3.wwww, r11.xyzx +mad r14.xyz, r6.xyzx, r10.xyzx, -r14.xyzx +mad r0.x, -r0.x, r3.w, r0.x +mad r15.xyz, r11.xyzx, r3.wwww, r0.xxxx +dp3 r0.x, r7.xyzx, r4.xyzx +mad r16.xyzw, r9.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r0.y, r16.x, r16.x +max r0.x, r0.x, l(0.000000) +mul r3.w, r0.x, l(-9.280000) +exp r3.w, r3.w +min r0.y, r0.y, r3.w +mad r0.y, r0.y, r16.x, r16.y +mad r5.xy, r0.yyyy, l(-1.040000, 1.040000, 0.000000, 0.000000), r16.zwzz +eq r0.y, l(1.000000), cb0[113].y +mul r16.xyzw, r1.yyyy, cb0[241].xyzw +mad r16.xyzw, cb0[240].xyzw, r1.xxxx, r16.xyzw +mad r16.xyzw, cb0[242].xyzw, r1.zzzz, r16.xyzw +add r16.xyzw, r16.xyzw, cb0[243].xyzw +div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r16.w +mul r16.xyz, r16.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) +mul r16.xyz, r3.wwww, r16.xyzx +mad_sat r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +mul r16.xy, r16.xyxx, cb0[82].xyxx +ftou r17.xy, r16.xyxx +mad r3.w, cb0[84].z, r16.z, cb0[84].w +div r17.z, l(1.000000, 1.000000, 1.000000, 1.000000), r3.w +ftou r16.xy, v0.xyxx +mul r3.w, r1.y, cb0[1].z +mad r3.w, cb0[0].z, r1.x, r3.w +mad r3.w, cb0[2].z, r1.z, r3.w +add r3.w, r3.w, cb0[3].z +mov r16.z, |r3.w| +movc r16.xyz, r0.yyyy, r17.xyzx, r16.xyzx +mad r17.xyz, r7.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r1.xyzx +mad r18.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r18.xyz, r17.xzyx, -r18.xyzx +max r0.y, |r18.y|, |r18.x| +add r0.y, r0.y, l(-464.000000) +mul_sat r0.y, r0.y, l(0.031250) +add r3.w, |r18.z|, l(-208.000000) +mul_sat r3.w, r3.w, l(0.031250) +max r0.y, r0.y, r3.w +ne r3.w, l(0.000000), cb0[210].w +lt r10.w, r0.y, l(1.000000) +and r3.w, r3.w, r10.w +if_nz r3.w + mad r18.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r18.xyz, r17.xzyx, -r18.xyzx + max r3.w, |r18.y|, |r18.x| + add r3.w, r3.w, l(-29.000000) + mul_sat r3.w, r3.w, l(0.500000) + add r10.w, |r18.z|, l(-13.000000) + mul_sat r10.w, r10.w, l(0.500000) + max r3.w, r3.w, r10.w + lt r10.w, r3.w, l(1.000000) + if_nz r10.w + mad r18.xyz, r17.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r18.xyzx, cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r19.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r18.xyzx, t11.yzwx, s1, l(0.000000) + add r10.w, -r3.w, l(1.000000) + mul r11.w, l(0.500000), cb0[211].y + mad r12.w, -cb0[211].y, l(0.500000), l(1.000000) + max r11.w, r11.w, r18.y + min r11.w, r12.w, r11.w + mul r18.w, r11.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t12.xyzw, s0, l(0.000000) + mad r11.w, r20.w, r10.w, r0.y + add r21.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t12.xyzw, s0, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r19.yyyy, r21.xyzx + mov r21.w, r19.y + mul r21.xyzw, r10.wwww, r21.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t12.xyzw, s0, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r19.xxxx, r18.xyzx + mov r18.w, r19.x + mul r18.xyzw, r10.wwww, r18.xyzw + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r19.wwww, r20.xyzx + mul r19.xyzw, r10.wwww, r19.xyzw + else + mov r21.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r19.xyzw, l(0,0,0,0) + mov r11.w, r0.y + endif + mad r20.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r20.xyz, r17.xzyx, -r20.xyzx + max r10.w, |r20.y|, |r20.x| + add r10.w, r10.w, l(-116.000000) + mul_sat r10.w, r10.w, l(0.125000) + add r12.w, |r20.z|, l(-52.000000) + mul_sat r12.w, r12.w, l(0.125000) + max r10.w, r10.w, r12.w + lt r12.w, r10.w, l(1.000000) + if_nz r12.w + mad r20.xyz, r17.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r22.xyz, r20.xyzx, cb0[211].xyzx + round_ni r22.xyz, r22.xyzx + mad r20.xyz, r20.xyzx, cb0[211].xyzx, -r22.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r20.xyzx, t13.yzwx, s1, l(0.000000) + add r12.w, -r10.w, l(1.000000) + mul r3.w, r3.w, r12.w + mul r12.w, l(0.500000), cb0[211].y + mad r13.w, -cb0[211].y, l(0.500000), l(1.000000) + max r12.w, r12.w, r20.y + min r12.w, r13.w, r12.w + mul r20.w, r12.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyzw, r20.xwzx, t14.xyzw, s0, l(0.000000) + mad r11.w, r23.w, r3.w, r11.w + add r24.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t14.xyzw, s0, l(0.000000) + mad r24.xyz, r24.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r24.xyz, r22.yyyy, r24.xyzx + mov r24.w, r22.y + mad r21.xyzw, r24.xyzw, r3.wwww, r21.xyzw + add r20.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t14.xyzw, s0, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r22.xxxx, r20.xyzx + mov r20.w, r22.x + mad r18.xyzw, r20.xyzw, r3.wwww, r18.xyzw + mad r20.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r20.xyzx + mad r19.xyzw, r22.xyzw, r3.wwww, r19.xyzw + endif + lt r3.w, l(0.000000), r10.w + if_nz r3.w + mad r17.xyz, r17.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r17.xyzx, cb0[211].xyzx + mul r22.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r20.xyzx + mad r20.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r17.xyz, r22.xyzx, r17.xyzx + min r17.xyz, r20.xyzx, r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r23.xyw, r17.xyzx, t15.yzwx, s1, l(0.000000) + add r3.w, -r0.y, l(1.000000) + mul r3.w, r3.w, r10.w + max r10.w, r22.y, r17.y + min r10.w, r20.y, r10.w + mul r17.w, r10.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t16.xyzw, s0, l(0.000000) + add r22.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t16.xyzw, s0, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r23.yyyy, r22.xyzx + mov r22.w, r23.y + mad r21.xyzw, r22.xyzw, r3.wwww, r21.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s0, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r23.xxxx, r17.xyzx + mov r17.w, r23.x + mad r18.xyzw, r17.xyzw, r3.wwww, r18.xyzw + mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r23.wwww, r17.xyzx + mad r19.xyzw, r23.xyzw, r3.wwww, r19.xyzw + mad r11.w, r20.w, r3.w, r11.w + endif + mad_sat r3.w, r11.w, l(2.000000), l(-1.000000) + add r17.x, -r0.y, r3.w + add r0.y, r0.y, r3.w + mul r17.y, r0.y, l(0.500000) +else + mov r21.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r19.xyzw, l(0,0,0,0) + mov r17.xy, l(0,1.000000,0,0) +endif +mul r20.xyzw, r17.yyyx, cb0[213].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r17.zw, r17.yyyx, cb0[213].wwwy +mad r20.w, r17.w, l(0.375000), r17.z +add r19.xyzw, r19.xyzw, r20.xyzw +mul r20.xyzw, r17.yyyx, cb0[214].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r17.zw, r17.yyyx, cb0[214].wwwy +mad r20.w, r17.w, l(0.375000), r17.z +add r18.xyzw, r18.xyzw, r20.xyzw +mul r20.xyzw, r17.yyyx, cb0[215].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r17.xy, r17.yxyy, cb0[215].wyww +mad r20.w, r17.y, l(0.375000), r17.x +add r17.xyzw, r20.xyzw, r21.xyzw +dp3 r0.y, r19.xyzx, r7.xyzx +add r0.y, r19.w, r0.y +max r19.x, r0.y, l(0.000000) +dp3 r0.y, r18.xyzx, r7.xyzx +add r0.y, r18.w, r0.y +max r19.y, r0.y, l(0.000000) +dp3 r0.y, r17.xyzx, r7.xyzx +add r0.y, r17.w, r0.y +max r19.z, r0.y, l(0.000000) +add r0.y, r0.z, r0.z +mad r17.xyz, r7.xyzx, -r0.yyyy, -r4.xyzx +add r0.y, l(-1.000000), cb0[113].x +max r0.z, r9.w, l(0.001000) +log r0.z, r0.z +mad r0.z, -r0.z, l(1.200000), l(1.000000) +add r0.y, -r0.z, r0.y +utof r18.xy, r16.xyxx +mul r18.zw, r18.xxxy, cb3[0].wwww +round_ni r18.zw, r18.zzzw +add r0.z, r16.z, -cb3[2].y +round_ni r0.z, r0.z +add r3.w, l(-1.000000), cb3[1].x +max r10.w, r0.z, l(0.000000) +min r3.w, r3.w, r10.w +ge r0.z, r3.w, r0.z +mad r10.w, r18.w, cb3[0].x, r18.z +ftoi r10.w, r10.w +iadd r10.w, r10.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.w, r10.w, l(0), t0.xxxx +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +and r3.w, r3.w, r10.w +and r0.z, r0.z, r3.w +mul r20.xyz, r19.xyzx, cb0[111].xxxx +dp3 r3.w, r20.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r1.w, l(1.000000) +mov r7.w, l(1.000000) +mov r20.xyz, l(0,0,0,0) +mov r10.w, l(1.000000) +mov r11.w, r0.z +mov r12.w, l(0) +loop + lt r13.w, l(0.010000), r10.w + ine r14.w, r11.w, l(0) + and r14.w, r13.w, r14.w + if_nz r14.w + firstbit_lo r14.w, r11.w + ishl r15.w, l(1), r14.w + xor r11.w, r11.w, r15.w + ishl r14.w, r14.w, l(3) + dp4 r21.x, cb3[r14.w + 6].xyzw, r1.xyzw + dp4 r21.y, cb3[r14.w + 7].xyzw, r1.xyzw + dp4 r21.z, cb3[r14.w + 8].xyzw, r1.xyzw + ge r22.xyz, cb3[r14.w + 5].xyzx, |r21.xyzx| + and r15.w, r22.y, r22.x + and r15.w, r22.z, r15.w + if_nz r15.w + mul r15.w, l(0.100000), cb3[r14.w + 5].x + mul r22.xyz, |r21.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.zw, r22.xxxy, r22.xxxy + add r22.xyw, -|r21.xyxz|, cb3[r14.w + 5].xyxz + mul r22.xyw, r22.xyxw, cb3[r14.w + 9].xyxz + eq r17.w, l(1.000000), cb3[r14.w + 10].x + if_nz r17.w + dp3 r23.x, cb3[r14.w + 6].xyzx, r17.xyzx + dp3 r23.y, cb3[r14.w + 7].xyzx, r17.xyzx + dp3 r23.z, cb3[r14.w + 8].xyzx, r17.xyzx + add r24.xyz, -r21.xyzx, cb3[r14.w + 5].xyzx + div r24.xyz, r24.xyzx, r23.xyzx + add r25.xyz, -r21.xyzx, -cb3[r14.w + 5].xyzx + div r25.xyz, r25.xyzx, r23.xyzx + lt r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + movc r24.xyz, r26.xyzx, r24.xyzx, r25.xyzx + min r17.w, r24.y, r24.x + min r17.w, r24.z, r17.w + mad r21.xyz, r23.xyzx, r17.wwww, r21.xyzx + else + mov r21.xyz, r17.xyzx + endif + dp3 r17.w, r21.xyzx, r21.xyzx + rsq r17.w, r17.w + mul r21.xyz, r17.wwww, r21.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx + lt r24.xyz, r21.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r23.xyz, -r23.xyzx, r24.xyzx + itof r23.xyz, r23.xyzx + dp3 r17.w, r21.xyzx, r23.xyzx + div r21.xyz, r21.xyzx, r17.wwww + lt r17.w, r21.z, l(0.000000) + add r21.zw, -|r21.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r21.zw, r21.zzzw, r23.xxxy + movc r21.xy, r17.wwww, r21.zwzz, r21.xyxx + dp4 r17.w, cb3[r14.w + 4].xyzw, r7.xyzw + max r17.w, r17.w, l(0.000000) + max r17.w, r17.w, l(0.000100) + min r19.w, r22.w, r22.y + min r19.w, r19.w, r22.x + add r18.z, r18.w, r18.z + mad r18.z, r22.z, r22.z, r18.z + mad r15.w, r15.w, r15.w, -r18.z + mul r15.w, r15.w, cb3[r14.w + 9].x + mul r15.w, r15.w, cb3[r14.w + 9].x + add r18.z, l(1.000000), -cb3[r14.w + 10].y + mul r15.w, r15.w, r18.z + mul r15.w, r15.w, l(100.000000) + mad_sat r15.w, r19.w, cb3[r14.w + 10].y, r15.w + mul r18.z, r15.w, cb3[r14.w + 10].w + mad r21.xy, r21.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r21.xy, r21.xyxx, cb3[1].wwww, cb3[2].wwww + mov r21.z, cb3[r14.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r21.xyz, r21.xyzx, t1.xyzw, s2, r0.y + mul r21.xyz, r21.xyzx, cb3[r14.w + 9].wwww + div r18.w, r3.w, r17.w + min r18.w, |r18.w|, l(1.000000) + mad r18.w, r18.w, l(2.000000), r3.w + add r17.w, r17.w, l(2.000000) + div r17.w, r18.w, r17.w + add r17.w, r17.w, l(-1.000000) + mad r17.w, r17.w, cb0[112].w, l(1.000000) + mul r21.xyz, r17.wwww, r21.xyzx + mul r21.xyz, r18.zzzz, r21.xyzx + mad r20.xyz, r21.xyzx, r10.wwww, r20.xyzx + mad r14.w, -r15.w, cb3[r14.w + 10].w, l(1.000000) + mul r10.w, r10.w, r14.w + endif + mov r12.w, l(-1) + continue + else + mov r12.w, r13.w + break + endif + mov r12.w, r13.w +endloop +if_nz r12.w + dp3 r0.z, r17.xyzx, r17.xyzx + rsq r0.z, r0.z + mul r21.xyz, r0.zzzz, r17.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx + lt r23.xyz, r21.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r22.xyz, -r22.xyzx, r23.xyzx + itof r22.xyz, r22.xyzx + dp3 r0.z, r21.xyzx, r22.xyzx + div r21.xyz, r21.xyzx, r0.zzzz + lt r0.z, r21.z, l(0.000000) + add r18.zw, -|r21.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r18.zw, r18.zzzw, r22.xxxy + movc r18.zw, r0.zzzz, r18.zzzw, r21.xxxy + mov r7.w, l(1.000000) + dp4 r0.z, cb3[3].xyzw, r7.xyzw + max r0.z, r0.z, l(0.000000) + max r0.z, r0.z, l(0.000100) + mad r18.zw, r18.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r21.xy, r18.zwzz, cb3[1].wwww, cb3[2].wwww + mov r21.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r21.xyz, r21.xyzx, t1.xyzw, s2, r0.y + div r0.y, r3.w, r0.z + min r0.y, |r0.y|, l(1.000000) + mad r0.y, r0.y, l(2.000000), r3.w + add r0.z, r0.z, l(2.000000) + div r0.y, r0.y, r0.z + add r0.y, r0.y, l(-1.000000) + mad r0.y, r0.y, cb0[112].w, l(1.000000) + mul r21.xyz, r0.yyyy, r21.xyzx + mad r20.xyz, r21.xyzx, r10.wwww, r20.xyzx +endif +mul r19.xyz, r14.xyzx, r19.xyzx +add r0.y, r5.w, l(-1.000000) +mad r0.y, cb2[1].x, r0.y, l(1.000000) +mul r19.xyz, r0.yyyy, r19.xyzx +mul r20.xyz, r20.xyzx, cb0[112].zzzz +mul r20.xyz, r20.xyzx, cb0[111].yyyy +mul_sat r0.y, r15.y, l(50.000000) +mul r0.y, r5.y, r0.y +mad r5.xyw, r15.xyxz, r5.xxxx, r0.yyyy +mul r5.xyw, r5.xyxw, r20.xyxz +mad r5.xyw, r19.xyxz, cb0[111].xxxx, r5.xyxw +lt r0.y, cb6[35].w, l(0.990000) +if_nz r0.y + ftoi r0.y, cb6[35].x + ieq r0.z, r0.y, l(2) + movc r19.xyz, r0.zzzz, cb6[20].xyzx, cb0[44].xyzx + add r19.xyz, r1.xyzx, -r19.xyzx + dp3 r0.z, r19.xyzx, r19.xyzx + add r0.z, -r0.z, cb6[34].w + mul_sat r0.z, r0.z, cb6[34].z + lt r1.w, l(0.000000), r0.z + if_nz r1.w + ilt r0.y, l(0), r0.y + if_nz r0.y + add r19.xyz, r1.xyzx, -cb6[20].xyzx + add r20.xyz, r1.xyzx, -cb6[21].xyzx + add r21.xyz, r1.xyzx, -cb6[22].xyzx + add r22.xyz, r1.xyzx, -cb6[23].xyzx + dp3 r19.x, r19.xyzx, r19.xyzx + dp3 r19.y, r20.xyzx, r20.xyzx + dp3 r19.z, r21.xyzx, r21.xyzx + dp3 r19.w, r22.xyzx, r22.xyzx + lt r20.x, r19.x, cb6[20].w + lt r20.y, r19.y, cb6[21].w + lt r20.z, r19.z, cb6[22].w + lt r20.w, r19.w, cb6[23].w + and r21.xyzw, r20.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) + movc r20.xyz, r20.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) + add r20.xyz, r20.xyzx, r21.yzwy + max r21.yzw, r20.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) + dp4 r0.y, r21.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) + add r0.y, -r0.y, l(4.000000) + max r0.y, r0.y, l(0.000000) + min r0.y, r0.y, l(3.000000) + add r1.w, r0.y, l(1.000000) + min r1.w, r1.w, l(3.000000) + ftou r1.w, r1.w + dp3 r3.w, r19.yzwy, icb[r1.w + 0].yzwy + div r1.w, r3.w, cb6[r1.w + 20].w + ge r3.w, r1.w, l(0.000000) + ge r1.w, l(1.000000), r1.w + and r1.w, r1.w, r3.w + if_nz r1.w + ftou r1.w, r0.y + add r18.zw, r18.xxxy, l(0.000000, 0.000000, 2.083000, 4.867000) + dp2 r3.w, r18.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r3.w, r3.w + mul r3.w, r3.w, l(52.982918) + frc r3.w, r3.w + dp4 r7.w, r19.xyzw, icb[r1.w + 0].xyzw + div r1.w, r7.w, cb6[r1.w + 20].w + sqrt r1.w, r1.w + add r1.w, r1.w, l(-0.900000) + mul r1.w, r1.w, l(12.000000) + ge r1.w, r1.w, r3.w + and r1.w, r1.w, l(0x3f800000) + add r0.y, r0.y, r1.w + endif + dp3 r1.w, r7.xyzx, cb5[0].xyzx + max r1.w, r1.w, l(0.000000) + min r1.w, r1.w, l(0.900000) + add r1.w, -r1.w, l(1.000000) + ftou r3.w, r0.y + ishl r7.w, r3.w, l(2) + mul r18.zw, r1.wwww, cb6[r3.w + 24].xxxy + max r1.w, r18.z, l(0.000000) + mad r19.xyz, -cb5[0].xyzx, r1.wwww, r1.xyzx + mad r19.xyz, r7.xyzx, r18.wwww, r19.xyzx + mul r20.xyz, r19.yyyy, cb6[r7.w + 1].xyzx + mad r19.xyw, cb6[r7.w + 0].xyxz, r19.xxxx, r20.xyxz + mad r19.xyz, cb6[r7.w + 2].xyzx, r19.zzzz, r19.xywx + add r19.xyz, r19.xyzx, cb6[r7.w + 3].xyzx + ge r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + ge r21.xyz, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + or r20.xyz, r20.xyzx, r21.xyzx + or r1.w, r20.y, r20.x + or r1.w, r20.z, r1.w + and r3.w, r19.z, l(0x7fffffff) + ult r3.w, l(0x7f800000), r3.w + or r20.z, r1.w, r3.w + ftoi r0.y, r0.y + mad r18.zw, r19.xxxy, cb6[r0.y + 28].zzzw, cb6[r0.y + 28].xxxy + mad r19.xy, r18.zwzz, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r19.xy, r19.xyxx + mad r18.zw, r18.zzzw, cb6[32].zzzw, -r19.xxxy + add r21.xyzw, r18.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r22.xw, r21.xxxz, r21.xxxz + min r21.xz, r18.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + max r23.xy, r18.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r23.zw, r22.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r18.zzzw + add r18.zw, -r18.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r18.zw, -r21.xxxz, r21.xxxz, r18.zzzw + mad r21.xy, -r23.xyxx, r23.xyxx, r21.ywyy + mov r24.x, r23.z + mov r24.y, r18.z + mov r24.z, r21.x + mov r24.w, r22.x + mul r24.xyzw, r24.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r22.x, r23.w + mov r22.y, r18.w + mov r22.z, r21.y + mul r21.xyzw, r22.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r22.xyzw, r24.ywyw, r24.xzxz + add r23.xyzw, r21.yyww, r21.xxzz + div r18.zw, r24.yyyw, r22.zzzw + add r18.zw, r18.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r24.xy, r18.zwzz, cb6[32].xxxx + div r18.zw, r21.yyyw, r23.yyyw + add r18.zw, r18.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r24.zw, r18.zzzw, cb6[32].yyyy + mul r21.xyzw, r22.xyzw, r23.xyzw + mad r22.xyzw, r19.xyxy, cb6[32].xyxy, r24.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.y, r22.xyxx, t5.xxxx, s3, r19.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r22.zwzz, t5.xxxx, s3, r19.z + mul r1.w, r1.w, r21.y + mad r0.y, r21.x, r0.y, r1.w + mad r22.xyzw, r19.xyxy, cb6[32].xyxy, r24.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r22.xyxx, t5.xxxx, s3, r19.z + mad r0.y, r21.z, r1.w, r0.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r22.zwzz, t5.xxxx, s3, r19.z + mad r0.y, r21.w, r1.w, r0.y + movc r20.x, r20.z, l(1.000000), r0.y + else + mov r20.xz, l(1.000000,0,0,0) + endif + else + mov r20.xz, l(1.000000,0,0,0) + endif + lt r0.y, r0.z, l(1.000000) + if_nz r0.y + dp3 r0.y, r7.xyzx, cb5[0].xyzx + max r0.y, r0.y, l(0.000000) + min r0.y, r0.y, l(0.900000) + add r0.y, -r0.y, l(1.000000) + mul r18.zw, r0.yyyy, cb6[584].xxxy + mad r19.xyz, -cb5[0].xyzx, r18.zzzz, r1.xyzx + mad r19.xyz, r7.xyzx, r18.wwww, r19.xyzx + mul r18.zw, r19.yyyy, cb6[581].xxxy + mad r18.zw, cb6[580].xxxy, r19.xxxx, r18.zzzw + mad r18.zw, cb6[582].xxxy, r19.zzzz, r18.zzzw + add r18.zw, r18.zzzw, cb6[583].xxxy + lt r21.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r18.zwzz + and r0.y, r21.y, r21.x + lt r21.xy, r18.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000) + and r1.w, r21.y, r21.x + and r0.y, r0.y, r1.w + if_nz r0.y + mul r0.y, r18.w, cb6[585].z + round_ni r0.y, r0.y + add r0.y, r18.z, r0.y + mul r0.y, r0.y, cb6[585].y + ftou r0.y, r0.y + umin r0.y, r0.y, l(127) + and r1.w, l(0x0000ffff), cb6[r0.y + 587].x + f16tof32 r21.x, r1.w + ge r1.w, r21.x, l(0.000000) + if_nz r1.w + mov r22.x, cb6[576].x + mov r22.y, cb6[577].x + mov r22.z, cb6[578].x + mov r22.w, cb6[r0.y + 587].y + mov r19.w, l(1.000000) + dp4 r22.x, r22.xyzw, r19.xyzw + mov r23.x, cb6[576].y + mov r23.y, cb6[577].y + mov r23.z, cb6[578].y + mov r23.w, cb6[r0.y + 587].z + dp4 r22.y, r23.xyzw, r19.xyzw + mov r23.x, cb6[576].z + mov r23.y, cb6[577].z + mov r23.z, cb6[578].z + mov r23.w, cb6[r0.y + 587].w + dp4 r1.w, r23.xyzw, r19.xyzw + lt r18.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xxxy + lt r3.w, l(0.000000), r1.w + and r7.w, r18.w, r18.z + and r3.w, r3.w, r7.w + lt r18.zw, r22.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + lt r7.w, r1.w, l(1.000000) + and r10.w, r18.w, r18.z + and r7.w, r7.w, r10.w + and r3.w, r3.w, r7.w + if_nz r3.w + ushr r0.y, cb6[r0.y + 587].x, l(16) + f16tof32 r21.y, r0.y + mad r18.zw, r22.xxxy, cb6[584].zzzw, r21.xxxy + mad r19.xy, r18.zwzz, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r19.xy, r19.xyxx + mad r18.zw, r18.zzzw, cb6[586].zzzw, -r19.xxxy + add r21.xyzw, r18.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r22.xw, r21.xxxz, r21.xxxz + min r19.zw, r18.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + max r21.xz, r18.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r23.xy, r22.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r18.zwzz + add r18.zw, -r18.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r18.zw, -r19.zzzw, r19.zzzw, r18.zzzw + mad r19.zw, -r21.xxxz, r21.xxxz, r21.yyyw + mov r21.x, r23.x + mov r21.y, r18.z + mov r21.z, r19.z + mov r21.w, r22.x + mul r21.xyzw, r21.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r22.x, r23.y + mov r22.y, r18.w + mov r22.z, r19.w + mul r22.xyzw, r22.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r23.xyzw, r21.ywyw, r21.xzxz + add r24.xyzw, r22.yyww, r22.xxzz + div r18.zw, r21.yyyw, r23.zzzw + add r18.zw, r18.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r21.xy, r18.zwzz, cb6[586].xxxx + div r18.zw, r22.yyyw, r24.yyyw + add r18.zw, r18.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r21.zw, r18.zzzw, cb6[586].yyyy + mad r22.xyzw, r19.xyxy, cb6[586].xyxy, r21.xzyz + mad r19.xyzw, r19.xyxy, cb6[586].xyxy, r21.xwyw + mul r21.xyzw, r23.xyzw, r24.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.y, r22.xyxx, t8.xxxx, s3, r1.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r22.zwzz, t8.xxxx, s3, r1.w + mul r3.w, r3.w, r21.y + mad r0.y, r21.x, r0.y, r3.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r19.xyxx, t8.xxxx, s3, r1.w + mad r0.y, r21.z, r3.w, r0.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t8.xxxx, s3, r1.w + mad r20.y, r21.w, r1.w, r0.y + else + mov r20.y, l(1.000000) + endif + else + mov r20.y, l(1.000000) + endif + else + mov r20.y, l(1.000000) + endif + movc r20.x, r20.z, r20.y, r20.x + else + mov r20.y, l(1.000000) + endif + add r0.y, -r20.y, r20.x + mad r0.y, r0.z, r0.y, r20.y + lt r0.z, l(0.001000), r0.y + if_nz r0.z + add r19.xyz, r1.xyzx, -cb0[173].xyzx + mad r18.zw, cb0[176].xxxz, r19.yyyy, r19.xxxz + mul r19.yw, r18.zzzw, cb0[174].zzzz + mul r20.xy, cb0[175].xyxx, cb0[183].wwww + mad r18.zw, r18.zzzw, cb0[174].zzzz, r20.xxxy + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r18.zwzz, t7.yzxw, s1, l(0.000000) + mad r18.zw, r19.yyyw, cb0[175].wwww, r20.xxxy + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r18.zwzz, t7.yzwx, s1, l(0.000000) + dp2 r3.w, r19.xzxx, r19.xzxx + sqrt r3.w, r3.w + add r7.w, -cb0[174].x, cb0[174].y + add r3.w, r3.w, -cb0[174].x + div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w + mul_sat r3.w, r3.w, r7.w + mad r7.w, r3.w, l(-2.000000), l(3.000000) + mul r3.w, r3.w, r3.w + mul r3.w, r3.w, r7.w + add r1.w, -r0.z, r1.w + mad r0.z, r3.w, r1.w, r0.z + add r0.z, r0.z, l(-1.000000) + mad r0.z, cb0[175].z, r0.z, l(1.000000) + mul r0.y, r0.z, r0.y + endif + add r0.z, -r0.y, cb6[35].z + mad r0.y, cb6[35].w, r0.z, r0.y +else + mov r0.y, cb6[35].z +endif +min r0.y, r0.y, l(1.000000) +add r0.y, r0.y, l(-1.000000) +mad r19.x, cb6[34].x, r0.y, l(1.000000) +lt r0.y, l(0.001000), r19.x +if_nz r0.y + dp3 r0.y, -cb5[0].xyzx, r17.xyzx + mad r20.xyz, cb5[0].xyzx, r0.yyyy, r17.xyzx + lt r0.y, r0.y, cb5[4].z + dp3 r0.z, r20.xyzx, r20.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r20.xyz, r0.zzzz, r20.xyzx + mul r20.xyz, r20.xyzx, cb5[4].yyyy + mad r20.xyz, -cb5[0].xyzx, cb5[4].zzzz, r20.xyzx + dp3 r0.z, r20.xyzx, r20.xyzx + rsq r0.z, r0.z + mul r20.xyz, r0.zzzz, r20.xyzx + movc r20.xyz, r0.yyyy, r20.xyzx, r17.xyzx + mad r21.xyz, r2.xyzx, r2.wwww, r20.xyzx + dp3 r0.y, r21.xyzx, r21.xyzx + max r0.y, r0.y, l(0.0000610351562) + rsq r0.y, r0.y + mul r21.xyz, r0.yyyy, r21.xyzx + dp3_sat r9.y, r20.xyzx, r7.xyzx + dp3_sat r0.y, r7.xyzx, r21.xyzx + min r9.z, r0.x, l(1.000000) + mul r0.z, r9.w, r9.w + mul r0.z, r0.z, r0.z + mad r1.w, r0.y, r0.z, -r0.y + mad r0.y, r1.w, r0.y, l(1.000000) + dp3_sat r1.w, r4.xyzx, r21.xyzx + add r1.w, -r1.w, l(1.000000) + mul r3.w, r1.w, r1.w + mul r3.w, r3.w, r3.w + mul r7.w, r1.w, r3.w + add r10.w, -r9.w, l(1.000000) + mad r11.w, -r10.w, l(0.383026), l(-0.0761947036) + mad r11.w, r10.w, r11.w, l(1.049970) + mad r10.w, r10.w, r11.w, l(0.409255) + min r10.w, r10.w, l(0.999000) + add r11.w, -r10.w, l(1.000000) + add r20.xyz, -r15.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r20.xyz, r20.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r15.xyzx + mad r1.w, -r3.w, r1.w, l(1.000000) + mad r21.xyz, r15.xyzx, r1.wwww, r7.wwww + mul r0.y, r0.y, r0.y + div r0.y, r0.z, r0.y + mad r18.zw, -r9.zzzy, r0.zzzz, r9.zzzy + mad r18.zw, r18.zzzw, r9.zzzy, r0.zzzz + sqrt r18.zw, r18.zzzw + mul r18.zw, r9.yyyz, r18.zzzw + add r0.z, r18.w, r18.z + add r0.z, r0.z, l(0.000100) + div r0.z, l(0.500000), r0.z + mul r0.y, r0.z, r0.y + mul r21.xyz, r0.yyyy, r21.xyzx + min r21.xyz, r21.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r22.xyzw, r9.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.y, r22.xyxx, t10.yxzw, s0, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r22.zwzz, t10.yzxw, s0, l(0.000000) + mul r0.y, r0.z, r0.y + mul r0.y, r10.w, r0.y + div r0.y, r0.y, r11.w + mul r22.xyz, r20.xyzx, r20.xyzx + mul r22.xyz, r0.yyyy, r22.xyzx + mad r20.xyz, -r20.xyzx, r11.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r20.xyz, r22.xyzx, r20.xyzx + add r20.xyz, r20.xyzx, r21.xyzx + mul r20.xyz, r20.xyzx, cb5[4].xxxx + max r20.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r20.xyz, r20.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r21.xyz, r9.yyyy, r14.xyzx + mad r20.xyz, r20.xyzx, r9.yyyy, r21.xyzx + mul r20.xyz, r20.xyzx, cb5[1].xyzx + mov r19.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r19.yzw, r19.xyxx, t9.wxyz, s0, cb0[108].x + add r0.y, -r19.x, l(1.000000) + mad r19.xyz, r20.xyzx, r19.yzwy, -r20.xyzx + mad r19.xyz, r0.yyyy, r19.xyzx, r20.xyzx +else + mov r19.xyz, l(0,0,0,0) +endif +mul r0.yz, r18.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r0.yz, r0.yyzy +mad r0.y, r0.z, cb4[1].y, r0.y +mul r0.y, r0.y, l(8.000000) +ftoi r0.y, r0.y +mad r0.z, -cb0[85].y, cb4[2].w, r16.z +round_ni r0.z, r0.z +add r1.w, l(-1.000000), cb4[1].w +max r3.w, r0.z, l(0.000000) +min r1.w, r1.w, r3.w +mul r3.w, r1.w, l(8.000000) +ftoi r3.w, r3.w +ge r0.z, r1.w, r0.z +iadd r1.w, r3.w, cb0[110].y +mul r3.w, r9.w, r9.w +min r9.x, r0.x, l(1.000000) +add r0.x, -r9.w, l(1.000000) +mad r7.w, -r0.x, l(0.383026), l(-0.0761947036) +mad r7.w, r0.x, r7.w, l(1.049970) +mad r0.x, r0.x, r7.w, l(0.409255) +min r0.x, r0.x, l(0.999000) +add r7.w, -r0.x, l(1.000000) +add r20.xyz, -r15.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r20.xyz, r20.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r15.xyzx +mad r9.yz, r9.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r9.y, r9.yzyy, t10.yxzw, s0, l(0.000000) +mad r21.xyz, -r20.xyzx, r7.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r20.xyz, r20.xyzx, r20.xyzx +mov r22.w, l(1.000000) +mov r23.y, l(1.000000) +mov r24.z, r9.w +mov r25.xyz, l(0,0,0,0) +mov r9.z, l(1.000000) +mov r10.w, l(0) +loop + ilt r11.w, l(7), r10.w + breakc_nz r11.w + iadd r11.w, r0.y, r10.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx + iadd r12.w, r1.w, r10.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx + and r11.w, r11.w, r12.w + and r11.w, r0.z, r11.w + ishl r12.w, r10.w, l(5) + mov r26.xyz, l(0,0,0,0) + mov r13.w, r9.z + mov r14.w, r11.w + loop + breakc_z r14.w + firstbit_lo r15.w, r14.w + ishl r17.w, l(1), r15.w + xor r17.w, r14.w, r17.w + iadd r15.w, r12.w, r15.w + bfi r27.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r15.wwww, l(1, 3, 5, 6) + bfi r18.z, l(29), l(3), r15.w, l(7) + ftou r18.w, cb5[r27.z + 6].w + ieq r18.w, r18.w, l(1) + if_nz r18.w + add r22.xyz, r1.xyzx, -cb5[r27.x + 6].xyzx + and r28.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r27.z + 6].xzyx + and r29.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r27.w + 6].yxzy + ushr r30.xyz, cb5[r27.z + 6].xzyx, l(16, 16, 16, 0) + ushr r31.xyz, cb5[r27.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r28.xyz, r28.xyzx + f16tof32 r29.xyz, r29.xyzx + f16tof32 r30.xyz, r30.xyzx + f16tof32 r31.xyw, r31.yxyz + mov r32.xz, r28.xxzx + mov r32.yw, r30.xxxz + dp4 r18.w, r22.xyzw, r32.xyzw + mov r30.x, r28.y + mov r30.z, r29.y + mov r30.w, r31.x + dp4 r19.w, r22.xyzw, r30.xyzw + mov r31.xz, r29.xxzx + dp4 r20.w, r22.xyzw, r31.xyzw + max r18.w, |r18.w|, |r19.w| + max r18.w, |r20.w|, r18.w + mad r19.w, cb5[r18.z + 6].x, l(0.500000), l(0.500000) + add r18.w, r18.w, -r19.w + mad r19.w, -cb5[r18.z + 6].x, l(0.500000), l(0.500000) + div_sat r18.w, r18.w, r19.w + add r18.w, -r18.w, l(1.000000) + mul r18.w, r18.w, r18.w + else + mov r18.w, l(1.000000) + endif + lt r19.w, l(0.500000), cb5[r27.y + 6].z + lt r20.w, r18.w, l(0.001000) + or r20.w, r19.w, r20.w + if_nz r20.w + mov r14.w, r17.w + continue + endif + ishl r20.w, r15.w, l(3) + bfi r15.w, l(29), l(3), r15.w, l(2) + lt r21.w, cb5[r20.w + 6].w, l(1.500000) + if_nz r21.w + mad r21.w, cb5[r15.w + 6].y, l(0.500000), l(0.500000) + add r22.x, r21.w, -|cb5[r15.w + 6].x| + add r22.y, -r22.x, cb5[r15.w + 6].y + add r21.w, -|r22.x|, l(1.000000) + add r21.w, -|r22.y|, r21.w + max r21.w, r21.w, l(0.000488281250) + ge r23.z, cb5[r15.w + 6].x, l(0.000000) + movc r22.z, r23.z, r21.w, -r21.w + dp3 r21.w, r22.xyzx, r22.xyzx + rsq r21.w, r21.w + mul r22.xyz, r21.wwww, r22.xyzx + add r28.xyz, -r1.xyzx, cb5[r27.x + 6].xyzx + dp3 r21.w, r28.xyzx, r28.xyzx + rsq r23.z, r21.w + mul r29.xyz, r23.zzzz, r28.xyzx + ftoi r23.w, cb5[r18.z + 6].w + mul r30.xyz, r22.xyzx, cb5[r15.w + 6].zzzz + mad r31.xyz, -r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r28.xyzx + mad r32.xyz, r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r28.xyzx + ftou r24.w, cb5[r20.w + 6].w + and r24.w, r24.w, l(1) + ieq r25.w, r24.w, l(0) + not r25.w, r25.w + lt r26.w, l(0.000000), cb5[r15.w + 6].z + and r25.w, r25.w, r26.w + dp3 r26.w, r31.xyzx, r31.xyzx + sqrt r26.w, r26.w + dp3 r27.z, r32.xyzx, r32.xyzx + sqrt r27.z, r27.z + dp3 r28.w, r7.xyzx, r31.xyzx + div r28.w, r28.w, r26.w + dp3 r29.w, r7.xyzx, r32.xyzx + div r29.w, r29.w, r27.z + add r28.w, r28.w, r29.w + mul_sat r33.x, r28.w, l(0.500000) + dp3 r28.w, r31.xyzx, r32.xyzx + mad r26.w, r26.w, r27.z, r28.w + mad r26.w, r26.w, l(0.500000), l(1.000000) + div r33.y, l(1.000000, 1.000000, 1.000000, 1.000000), r26.w + dp3_sat r23.x, r7.xyzx, r29.xyzx + movc r24.xy, r25.wwww, r33.xyxx, r23.xyxx + lt r23.x, cb5[r27.w + 6].w, l(0.000000) + if_nz r23.x + mul r23.x, cb5[r27.x + 6].w, cb5[r27.x + 6].w + mul r23.x, r21.w, r23.x + mad r23.x, -r23.x, r23.x, l(1.000000) + max r23.x, r23.x, l(0.000000) + add r21.w, r21.w, l(1.000000) + div r21.w, l(1.000000, 1.000000, 1.000000, 1.000000), r21.w + and r26.w, r25.w, l(0x3f800000) + add r27.z, -r21.w, r24.y + mad r21.w, r26.w, r27.z, r21.w + mul r23.x, r23.x, r23.x + mul r21.w, r21.w, r23.x + else + mul r32.xyz, r28.xyzx, cb5[r27.x + 6].wwww + dp3 r23.x, r32.xyzx, r32.xyzx + min r23.x, r23.x, l(1.000000) + add r23.x, -r23.x, l(1.000000) + log r23.x, r23.x + mul r23.x, r23.x, cb5[r27.w + 6].w + exp r23.x, r23.x + mul r21.w, r23.x, r24.y + endif + dp3 r22.x, r29.xyzx, -r22.xyzx + add r22.x, r22.x, -cb5[r15.w + 6].z + mul_sat r22.x, r22.x, cb5[r15.w + 6].w + mul r22.x, r22.x, r22.x + movc r22.x, r24.w, l(1.000000), r22.x + mul r21.w, r21.w, r22.x + not r22.x, r25.w + ige r22.y, r23.w, l(0) + and r22.x, r22.y, r22.x + if_nz r22.x + if_z r24.w + ishl r22.x, r23.w, l(2) + mul r32.xyz, r1.yyyy, cb7[r22.x + 33].xywx + mad r32.xyz, cb7[r22.x + 32].xywx, r1.xxxx, r32.xyzx + mad r32.xyz, cb7[r22.x + 34].xywx, r1.zzzz, r32.xyzx + add r22.xyz, r32.xyzx, cb7[r22.x + 35].xywx + div_sat r22.xy, r22.xyxx, r22.zzzz + mad r22.xy, r22.xyxx, cb7[r23.w + 0].zwzz, cb7[r23.w + 0].xyxx + else + ishl r22.z, r23.w, l(2) + dp3 r32.x, -r28.xyzx, cb7[r22.z + 32].xyzx + dp3 r32.y, -r28.xyzx, cb7[r22.z + 33].xyzx + dp3 r32.z, -r28.xyzx, cb7[r22.z + 34].xyzx + lt r22.z, |r32.x|, |r32.y| + and r22.z, r22.z, l(1) + dp2 r23.x, |r32.xyxx|, icb[r22.z + 0].xyxx + lt r23.x, r23.x, |r32.z| + movc r22.z, r23.x, l(2), r22.z + dp3 r23.x, r32.xyzx, icb[r22.z + 0].xyzx + lt r23.x, r23.x, l(0.000000) + bfi r22.z, l(31), l(1), r22.z, r23.x + ushr r23.x, r22.z, l(1) + dp3 r23.x, r32.xyzx, icb[r23.x + 0].xyzx + div r24.y, l(0.000244140625), cb7[r23.w + 0].w + add r24.y, -r24.y, l(0.500000) + utof r26.w, r22.z + ult r27.z, r22.z, l(2) + and r27.z, r27.z, l(2) + dp2 r27.z, r32.xzxx, icb[r27.z + 0].xzxx + mul r27.z, r27.z, icb[r22.z + 4].z + div r27.z, r27.z, |r23.x| + mad r26.w, r27.z, r24.y, r26.w + add r26.w, r26.w, l(0.500000) + mul_sat r28.x, r26.w, l(0.166666672) + iadd r26.w, l(-1), icb[r22.z + 4].y + dp2 r26.w, r32.yzyy, icb[r26.w + 0].xyxx + mul r22.z, r26.w, icb[r22.z + 4].w + div r22.z, r22.z, |r23.x| + mad_sat r28.y, -r22.z, r24.y, l(0.500000) + mad r22.xy, r28.xyxx, cb7[r23.w + 0].zwzz, cb7[r23.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r22.x, r22.xyxx, t18.xyzw, s0, l(0.000000) + mul r21.w, r21.w, r22.x + endif + lt r22.x, l(0.000000), r21.w + if_nz r22.x + if_z r24.w + ftoi r22.y, cb5[r27.y + 6].x + else + add r28.xyz, r1.xyzx, -cb5[r27.x + 6].xyzx + lt r32.xyz, |r28.yzzy|, |r28.xxyx| + and r22.z, r32.y, r32.x + lt r28.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r28.xyzx + ushr r23.x, cb5[r15.w + 6].w, l(24) + ubfe r24.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb5[r15.w + 6].wwww + movc r23.x, r28.x, r23.x, r24.y + and r23.w, l(255), cb5[r15.w + 6].w + movc r23.w, r28.y, r24.w, r23.w + ubfe r24.y, l(8), l(8), cb5[r27.y + 6].x + and r24.w, l(255), cb5[r27.y + 6].x + movc r24.y, r28.z, r24.y, r24.w + movc r23.w, r32.z, r23.w, r24.y + movc r22.z, r22.z, r23.x, r23.w + ilt r23.x, r22.z, l(80) + movc r22.y, r23.x, r22.z, l(-1) + endif + ishl r22.z, r22.y, l(2) + mad r28.xyz, r29.xyzx, cb6[r22.y + 288].xxxx, r1.xyzx + mul r23.x, l(5.000000), cb6[r22.y + 288].y + mad r28.xyz, r7.xyzx, r23.xxxx, r28.xyzx + mul r32.xyzw, r28.yyyy, cb6[r22.z + 65].xyzw + mad r32.xyzw, cb6[r22.z + 64].xyzw, r28.xxxx, r32.xyzw + mad r28.xyzw, cb6[r22.z + 66].xyzw, r28.zzzz, r32.xyzw + add r28.xyzw, r28.xyzw, cb6[r22.z + 67].xyzw + div r28.xyz, r28.xyzx, r28.wwww + ge r32.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r28.xyzx + ge r33.xyz, r28.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r23.xw, -cb6[r22.y + 344].xxxy, cb6[r22.y + 344].zzzw + mad r23.xw, r28.xxxy, r23.xxxw, cb6[r22.y + 344].xxxy + mad r24.yw, r23.xxxw, cb6[400].zzzw, l(0.000000, 0.500000, 0.000000, 0.500000) + round_ni r24.yw, r24.yyyw + mad r23.xw, r23.xxxw, cb6[400].zzzw, -r24.yyyw + add r34.xyzw, r23.xxww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r35.xyzw, r34.xxzz, r34.xxzz + add r28.xy, -r23.xwxx, l(1.000000, 1.000000, 0.000000, 0.000000) + min r34.xz, r23.xxwx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r36.xy, r23.xwxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r37.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r36.xy, -r36.xyxx, r36.xyxx, r34.ywyy + add r36.xy, r36.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r36.xy, r36.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r35.xz, r35.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r23.xw, r35.yyyw, l(0.500000, 0.000000, 0.000000, 0.500000), -r23.xxxw + mul r38.xy, r23.xwxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r23.xw, -r34.xxxz, r34.xxxz, r28.xxxy + add r23.xw, r23.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + mul r39.xy, r23.xwxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r23.xw, r34.yyyw, l(0.160000, 0.000000, 0.000000, 0.160000) + mov r38.z, r39.x + mov r38.w, r23.x + mov r37.z, r36.x + mov r37.w, r35.x + add r34.xyzw, r37.zwxz, r38.zwxz + mov r39.z, r38.y + mov r39.w, r23.w + mov r36.z, r37.y + mov r36.w, r35.z + add r28.xyw, r36.zyzw, r39.zyzw + div r35.xyz, r37.xzwx, r34.zwyz + add r35.xyz, r35.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r35.xyz, r35.xyzx, cb6[400].xxxx + div r36.xyz, r36.zywz, r28.xywx + add r36.xyz, r36.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r36.xyw, r36.xyxz, cb6[400].yyyy + mul r37.xyzw, r28.xxxy, r34.zwyz + mov r35.w, r36.x + mad r38.xyzw, r24.ywyw, cb6[400].xyxy, r35.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r22.z, r38.xyxx, t6.xxxx, s3, r28.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r38.zwzz, t6.xxxx, s3, r28.z + mul r23.x, r23.x, r37.y + mad r22.z, r37.x, r22.z, r23.x + mad r23.xw, r24.yyyw, cb6[400].xxxy, r35.zzzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r23.xwxx, t6.xxxx, s3, r28.z + mad r22.z, r37.z, r23.x, r22.z + mov r36.z, r35.x + mad r38.xyzw, r24.ywyw, cb6[400].xyxy, r36.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r38.xyxx, t6.xxxx, s3, r28.z + mad r22.z, r37.w, r23.x, r22.z + mul r37.xyzw, r28.yyww, r34.xyzw + mov r36.xz, r35.yyzy + mad r35.xyzw, r24.ywyw, cb6[400].xyxy, r36.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r35.xyxx, t6.xxxx, s3, r28.z + mad r22.z, r37.x, r23.x, r22.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r35.zwzz, t6.xxxx, s3, r28.z + mad r22.z, r37.y, r23.x, r22.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r38.zwzz, t6.xxxx, s3, r28.z + mad r22.z, r37.z, r23.x, r22.z + ige r23.x, r22.y, l(0) + or r32.xyz, r32.xyzx, r33.xyzx + or r23.w, r32.y, r32.x + or r23.w, r32.z, r23.w + and r26.w, r28.z, l(0x7fffffff) + ult r26.w, l(0x7f800000), r26.w + or r23.w, r23.w, r26.w + mad r32.xyzw, r24.ywyw, cb6[400].xyxy, r36.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r32.xyxx, t6.xxxx, s3, r28.z + mad r22.z, r37.w, r24.y, r22.z + mul r24.y, r28.w, r34.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.w, r32.zwzz, t6.xxxx, s3, r28.z + mad r22.z, r24.y, r24.w, r22.z + add r22.z, r22.z, l(-1.000000) + mad r22.y, cb6[r22.y + 288].w, r22.z, l(1.000000) + movc r22.y, r23.w, l(1.000000), r22.y + movc r22.y, r23.x, r22.y, l(1.000000) + else + mov r22.y, l(1.000000) + endif + if_nz r25.w + dp3 r22.z, r17.xyzx, r30.xyzx + mul_sat r23.x, r23.z, cb5[r15.w + 6].z + mad r23.x, r23.x, l(0.500000), r3.w + min r23.x, r23.x, l(1.000000) + div r23.x, r3.w, r23.x + mad r28.xyz, r17.xyzx, r22.zzzz, -r30.xyzx + dp3 r23.w, r31.xyzx, r28.xyzx + mul r22.z, r22.z, r22.z + mad r22.z, cb5[r15.w + 6].z, cb5[r15.w + 6].z, -r22.z + div_sat r22.z, r23.w, r22.z + mad r28.xyz, r30.xyzx, r22.zzzz, r31.xyzx + dp3 r22.z, r28.xyzx, r28.xyzx + rsq r22.z, r22.z + mul r29.xyz, r22.zzzz, r28.xyzx + else + mov r23.x, l(1.000000) + endif + if_nz r22.x + mul_sat r22.x, r23.z, cb5[r18.z + 6].y + mad r28.xyz, r2.xyzx, r2.wwww, r29.xyzx + dp3 r22.z, r28.xyzx, r28.xyzx + max r22.z, r22.z, l(0.0000610351562) + rsq r22.z, r22.z + mul r28.xyz, r22.zzzz, r28.xyzx + dp3_sat r22.z, r7.xyzx, r28.xyzx + dp3_sat r23.z, r4.xyzx, r28.xyzx + lt r23.w, l(0.000000), r22.x + mul r22.x, r22.x, r22.x + mad r24.y, r23.z, l(3.600000), l(0.400000) + div r22.x, r22.x, r24.y + mad r22.x, r9.w, r9.w, r22.x + min r22.x, r22.x, l(1.000000) + movc r22.x, r23.w, r22.x, r3.w + mul r22.x, r22.x, r22.x + mad r23.w, r22.z, r22.x, -r22.z + mad r22.z, r23.w, r22.z, l(1.000000) + add r23.z, -r23.z, l(1.000000) + mul r23.w, r23.z, r23.z + mul r23.w, r23.w, r23.w + mul r24.y, r23.z, r23.w + mad r23.z, -r23.w, r23.z, l(1.000000) + mad r28.xyz, r15.xyzx, r23.zzzz, r24.yyyy + mul r22.z, r22.z, r22.z + div r22.z, r22.x, r22.z + mul r22.z, r23.x, r22.z + mad r23.x, -r9.x, r22.x, r9.x + mad r23.x, r23.x, r9.x, r22.x + sqrt r23.x, r23.x + mad r23.z, -r24.x, r22.x, r24.x + mad r22.x, r23.z, r24.x, r22.x + sqrt r22.x, r22.x + mul r22.x, r9.x, r22.x + mad r22.x, r24.x, r23.x, r22.x + add r22.x, r22.x, l(0.000100) + div r22.x, l(0.500000), r22.x + mul r22.x, r22.x, r22.z + mul r23.xzw, r22.xxxx, r28.xxyz + min r23.xzw, r23.xxzw, l(2048.000000, 0.000000, 2048.000000, 2048.000000) + mad r22.xz, r24.xxzx, l(0.968750, 0.000000, 0.968750, 0.000000), l(0.015625, 0.000000, 0.015625, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r22.x, r22.xzxx, t10.xyzw, s0, l(0.000000) + mul r22.x, r9.y, r22.x + mul r22.x, r0.x, r22.x + div r22.x, r22.x, r7.w + mul r28.xyz, r20.xyzx, r22.xxxx + div r28.xyz, r28.xyzx, r21.xyzx + add r23.xzw, r23.xxzw, r28.xxyz + mul r23.xzw, r23.xxzw, cb5[r18.z + 6].zzzz + max r23.xzw, r23.xxzw, l(0.000000, 0.000000, 0.000000, 0.000000) + min r23.xzw, r23.xxzw, l(1000.000000, 0.000000, 1000.000000, 1000.000000) + mul r28.xyz, r14.xyzx, r24.xxxx + mad r23.xzw, r23.xxzw, r24.xxxx, r28.xxyz + mul r24.xyw, r21.wwww, cb5[r20.w + 6].xyxz + mul r22.xyz, r22.yyyy, r24.xywx + mul r22.xyz, r18.wwww, r22.xyzx + mul r22.xyz, r22.xyzx, r23.xzwx + else + mov r22.xyz, l(0,0,0,0) + endif + else + if_z r19.w + mad r18.w, cb5[r15.w + 6].y, l(0.500000), l(0.500000) + add r28.x, r18.w, -|cb5[r15.w + 6].x| + add r28.y, -r28.x, cb5[r15.w + 6].y + add r18.w, -|r28.x|, l(1.000000) + add r18.w, -|r28.y|, r18.w + max r18.w, r18.w, l(0.000488281250) + ge r19.w, cb5[r15.w + 6].x, l(0.000000) + movc r28.z, r19.w, r18.w, -r18.w + dp3 r18.w, r28.xyzx, r28.xyzx + rsq r18.w, r18.w + mul r23.xzw, r18.wwww, r28.xxyz + add r24.xyw, -r1.xyxz, cb5[r27.x + 6].xyxz + dp3 r18.w, r24.xywx, r24.xywx + rsq r19.w, r18.w + mul r28.xyz, r19.wwww, r24.xywx + ftoi r18.z, cb5[r18.z + 6].w + mul r29.xyz, r23.xzwx, cb5[r15.w + 6].zzzz + mad r30.xyz, -r29.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xywx + mad r29.xyz, r29.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xywx + ftou r19.w, cb5[r20.w + 6].w + and r19.w, r19.w, l(1) + ieq r20.w, r19.w, l(0) + not r20.w, r20.w + lt r21.w, l(0.000000), cb5[r15.w + 6].z + and r20.w, r20.w, r21.w + dp3 r21.w, r30.xyzx, r30.xyzx + sqrt r21.w, r21.w + dp3 r25.w, r29.xyzx, r29.xyzx + sqrt r25.w, r25.w + dp3 r26.w, r30.xyzx, r29.xyzx + mad r21.w, r21.w, r25.w, r26.w + mad r21.w, r21.w, l(0.500000), l(1.000000) + div r21.w, l(1.000000, 1.000000, 1.000000, 1.000000), r21.w + movc r21.w, r20.w, r21.w, l(1.000000) + lt r25.w, cb5[r27.w + 6].w, l(0.000000) + if_nz r25.w + mul r25.w, cb5[r27.x + 6].w, cb5[r27.x + 6].w + mul r25.w, r18.w, r25.w + mad r25.w, -r25.w, r25.w, l(1.000000) + max r25.w, r25.w, l(0.000000) + add r18.w, r18.w, l(1.000000) + div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), r18.w + and r26.w, r20.w, l(0x3f800000) + add r27.z, -r18.w, r21.w + mad r18.w, r26.w, r27.z, r18.w + mul r25.w, r25.w, r25.w + mul r18.w, r18.w, r25.w + else + mul r29.xyz, r24.xywx, cb5[r27.x + 6].wwww + dp3 r25.w, r29.xyzx, r29.xyzx + min r25.w, r25.w, l(1.000000) + add r25.w, -r25.w, l(1.000000) + log r25.w, r25.w + mul r25.w, r25.w, cb5[r27.w + 6].w + exp r25.w, r25.w + mul r18.w, r21.w, r25.w + endif + dp3 r21.w, r28.xyzx, -r23.xzwx + add r21.w, r21.w, -cb5[r15.w + 6].z + mul_sat r21.w, r21.w, cb5[r15.w + 6].w + mul r21.w, r21.w, r21.w + movc r21.w, r19.w, l(1.000000), r21.w + mul r18.w, r18.w, r21.w + not r20.w, r20.w + ige r21.w, r18.z, l(0) + and r20.w, r20.w, r21.w + if_nz r20.w + if_z r19.w + ishl r20.w, r18.z, l(2) + mul r23.xzw, r1.yyyy, cb7[r20.w + 33].xxyw + mad r23.xzw, cb7[r20.w + 32].xxyw, r1.xxxx, r23.xxzw + mad r23.xzw, cb7[r20.w + 34].xxyw, r1.zzzz, r23.xxzw + add r23.xzw, r23.xxzw, cb7[r20.w + 35].xxyw + div_sat r23.xz, r23.xxzx, r23.wwww + mad r23.xz, r23.xxzx, cb7[r18.z + 0].zzwz, cb7[r18.z + 0].xxyx + else + ishl r20.w, r18.z, l(2) + dp3 r29.x, -r24.xywx, cb7[r20.w + 32].xyzx + dp3 r29.y, -r24.xywx, cb7[r20.w + 33].xyzx + dp3 r29.z, -r24.xywx, cb7[r20.w + 34].xyzx + lt r20.w, |r29.x|, |r29.y| + and r20.w, r20.w, l(1) + dp2 r21.w, |r29.xyxx|, icb[r20.w + 0].xyxx + lt r21.w, r21.w, |r29.z| + movc r20.w, r21.w, l(2), r20.w + dp3 r21.w, r29.xyzx, icb[r20.w + 0].xyzx + lt r21.w, r21.w, l(0.000000) + bfi r20.w, l(31), l(1), r20.w, r21.w + ushr r21.w, r20.w, l(1) + dp3 r21.w, r29.xyzx, icb[r21.w + 0].xyzx + div r23.w, l(0.000244140625), cb7[r18.z + 0].w + add r23.w, -r23.w, l(0.500000) + utof r24.x, r20.w + ult r24.y, r20.w, l(2) + and r24.y, r24.y, l(2) + dp2 r24.y, r29.xzxx, icb[r24.y + 0].xzxx + mul r24.y, r24.y, icb[r20.w + 4].z + div r24.y, r24.y, |r21.w| + mad r24.x, r24.y, r23.w, r24.x + add r24.x, r24.x, l(0.500000) + mul_sat r24.x, r24.x, l(0.166666672) + iadd r24.w, l(-1), icb[r20.w + 4].y + dp2 r24.w, r29.yzyy, icb[r24.w + 0].xyxx + mul r20.w, r24.w, icb[r20.w + 4].w + div r20.w, r20.w, |r21.w| + mad_sat r24.y, -r20.w, r23.w, l(0.500000) + mad r23.xz, r24.xxyx, cb7[r18.z + 0].zzwz, cb7[r18.z + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r18.z, r23.xzxx, t18.yzxw, s0, l(0.000000) + mul r18.w, r18.z, r18.w + endif + lt r18.z, l(0.000000), r18.w + if_nz r18.z + if_z r19.w + ftoi r18.z, cb5[r27.y + 6].x + else + add r23.xzw, r1.xxyz, -cb5[r27.x + 6].xxyz + lt r24.xyw, |r23.zwzw|, |r23.xxxz| + and r18.w, r24.y, r24.x + lt r23.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xxzw + ushr r19.w, cb5[r15.w + 6].w, l(24) + ubfe r24.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r15.w + 6].wwww + movc r19.w, r23.x, r19.w, r24.x + and r15.w, l(255), cb5[r15.w + 6].w + movc r15.w, r23.z, r24.y, r15.w + ubfe r20.w, l(8), l(8), cb5[r27.y + 6].x + and r21.w, l(255), cb5[r27.y + 6].x + movc r20.w, r23.w, r20.w, r21.w + movc r15.w, r24.w, r15.w, r20.w + movc r15.w, r18.w, r19.w, r15.w + ilt r18.w, r15.w, l(80) + movc r18.z, r18.w, r15.w, l(-1) + endif + ishl r15.w, r18.z, l(2) + mad r23.xzw, r28.xxyz, cb6[r18.z + 288].xxxx, r1.xxyz + mul r18.w, l(5.000000), cb6[r18.z + 288].y + mad r23.xzw, r7.xxyz, r18.wwww, r23.xxzw + mul r27.xyzw, r23.zzzz, cb6[r15.w + 65].xyzw + mad r27.xyzw, cb6[r15.w + 64].xyzw, r23.xxxx, r27.xyzw + mad r27.xyzw, cb6[r15.w + 66].xyzw, r23.wwww, r27.xyzw + add r27.xyzw, r27.xyzw, cb6[r15.w + 67].xyzw + div r23.xzw, r27.xxyz, r27.wwww + ge r24.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xzxw + ge r27.xyz, r23.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r28.xy, -cb6[r18.z + 344].xyxx, cb6[r18.z + 344].zwzz + mad r23.xz, r23.xxzx, r28.xxyx, cb6[r18.z + 344].xxyx + mad r28.xy, r23.xzxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r28.xy, r28.xyxx + mad r23.xz, r23.xxzx, cb6[400].zzwz, -r28.xxyx + add r29.xyzw, r23.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r30.xyzw, r29.xxzz, r29.xxzz + add r28.zw, -r23.xxxz, l(0.000000, 0.000000, 1.000000, 1.000000) + min r29.xz, r23.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r31.xy, r23.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r32.xy, r28.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r31.xy, -r31.xyxx, r31.xyxx, r29.ywyy + add r31.xy, r31.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r31.xy, r31.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r30.xz, r30.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r23.xz, r30.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r23.xxzx + mul r33.xy, r23.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r23.xz, -r29.xxzx, r29.xxzx, r28.zzwz + add r23.xz, r23.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r34.xy, r23.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r23.xz, r29.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) + mov r33.z, r34.x + mov r33.w, r23.x + mov r32.z, r31.x + mov r32.w, r30.x + add r29.xyzw, r32.zwxz, r33.zwxz + mov r34.z, r33.y + mov r34.w, r23.z + mov r31.z, r32.y + mov r31.w, r30.z + add r30.xyz, r31.zywz, r34.zywz + div r32.xyz, r32.xzwx, r29.zwyz + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyz, r32.xyzx, cb6[400].xxxx + div r31.xyz, r31.zywz, r30.xyzx + add r31.xyz, r31.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r31.xyw, r31.xyxz, cb6[400].yyyy + mul r33.xyzw, r29.zwyz, r30.xxxy + mov r32.w, r31.x + mad r34.xyzw, r28.xyxy, cb6[400].xyxy, r32.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r34.xyxx, t6.xxxx, s3, r23.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r34.zwzz, t6.xxxx, s3, r23.w + mul r18.w, r18.w, r33.y + mad r15.w, r33.x, r15.w, r18.w + mad r23.xz, r28.xxyx, cb6[400].xxyx, r32.zzwz + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r23.xzxx, t6.xxxx, s3, r23.w + mad r15.w, r33.z, r18.w, r15.w + mov r31.z, r32.x + mad r34.xyzw, r28.xyxy, cb6[400].xyxy, r31.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r34.xyxx, t6.xxxx, s3, r23.w + mad r15.w, r33.w, r18.w, r15.w + mul r33.xyzw, r29.xyzw, r30.yyzz + mov r31.xz, r32.yyzy + mad r32.xyzw, r28.xyxy, cb6[400].xyxy, r31.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r32.xyxx, t6.xxxx, s3, r23.w + mad r15.w, r33.x, r18.w, r15.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r32.zwzz, t6.xxxx, s3, r23.w + mad r15.w, r33.y, r18.w, r15.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r34.zwzz, t6.xxxx, s3, r23.w + mad r15.w, r33.z, r18.w, r15.w + ige r18.w, r18.z, l(0) + or r24.xyw, r24.xyxw, r27.xyxz + or r19.w, r24.y, r24.x + or r19.w, r24.w, r19.w + and r20.w, r23.w, l(0x7fffffff) + ult r20.w, l(0x7f800000), r20.w + or r19.w, r19.w, r20.w + mad r27.xyzw, r28.xyxy, cb6[400].xyxy, r31.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r27.xyxx, t6.xxxx, s3, r23.w + mad r15.w, r33.w, r20.w, r15.w + mul r20.w, r29.y, r30.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r27.zwzz, t6.xxxx, s3, r23.w + mad r15.w, r20.w, r21.w, r15.w + add r15.w, r15.w, l(-1.000000) + mad r15.w, cb6[r18.z + 288].w, r15.w, l(1.000000) + movc r15.w, r19.w, l(1.000000), r15.w + movc r15.w, r18.w, r15.w, l(1.000000) + else + mov r15.w, l(1.000000) + endif + else + mov r15.w, l(1.000000) + endif + mul r13.w, r13.w, r15.w + mov r22.xyz, l(0,0,0,0) + endif + add r26.xyz, r22.xyzx, r26.xyzx + mov r14.w, r17.w + endloop + mov r9.z, r13.w + add r25.xyz, r25.xyzx, r26.xyzx + iadd r10.w, r10.w, l(1) +endloop +dp3 r0.x, r5.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r1.xzw, -r0.xxxx, r5.xxyw +mad r0.xyz, cb0[184].wwww, r1.xzwx, r0.xxxx +add r1.xzw, -cb2[20].xxyz, cb1[r6.w + 13].xxyz +mad r1.xzw, cb1[r6.w + 13].wwww, r1.xxzw, cb2[20].xxyz +mul r1.xzw, r5.zzzz, r1.xxzw +mul r1.xzw, r1.xxzw, cb2[21].xxxx +mul r1.xzw, r1.xxzw, r4.wwww +mad r2.xyz, -r6.xyzx, r10.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r2.xyz, cb2[19].yyyy, r2.xyzx, r11.xyzx +mul r1.xzw, r1.xxzw, r2.xxyz +add r2.x, l(1.000000), -cb1[r6.w + 11].x +mul r1.xzw, r1.xxzw, r2.xxxx +add r2.x, l(1.000000), -cb2[19].x +mad r2.x, cb0[109].x, cb2[19].x, r2.x +div r2.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.x +mul r1.xzw, r1.xxzw, r2.xxxx +mad r0.xyz, r0.xyzx, cb0[184].xyzx, r1.xzwx +mad r1.xzw, r25.xxyz, r9.zzzz, r19.xxyz +add r0.xyz, r0.xyzx, r1.xzwx +mad r1.x, r1.y, cb0[156].w, cb0[157].w +mad r1.z, r0.w, cb0[154].w, -cb0[153].w +max r1.xz, r1.xxzx, l(0.010000, 0.000000, 0.000000, 0.000000) +mul r1.w, r1.x, l(-1.442695) +exp r1.w, r1.w +add r1.w, -r1.w, l(1.000000) +div r1.x, r1.w, r1.x +mad r1.w, r1.y, cb0[156].w, cb0[158].w +mul r1.w, r1.w, l(1.442695) +exp r1.w, r1.w +mul r1.x, r1.w, r1.x +mul r1.x, r1.x, -r1.z +mul r1.xzw, r1.xxxx, cb0[155].xxyz +mul r1.xzw, r1.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r1.xzw, r1.xxzw +dp3 r2.x, -r4.xyzx, cb0[154].xyzx +mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r2.xxxx, cb0[155].wwww +add r2.y, -r2.z, r2.y +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r16.w, l(7), cb0[108].w + imad r5.xyz, r16.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r2.z, r5.y, r5.z, r5.x + imad r2.w, r5.z, r2.z, r5.y + imad r3.w, r2.z, r2.w, r5.z + imad r5.x, r2.w, r3.w, r2.z + dp3 r2.z, -r4.xyzx, -r3.xyzx + add r3.x, r1.y, -cb0[44].y + lt r3.y, l(5.960464478E-08), r2.z + div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z + and r2.z, r2.z, r3.y + mul r2.z, r2.z, cb0[163].w + div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w + mul r3.z, r2.z, r3.y + mad r4.x, r3.z, r3.x, cb0[44].y + mad r3.x, -r3.z, r3.x, r3.x + mul r3.z, r3.x, cb0[159].z + mul r3.x, r3.x, cb0[162].x + max r3.xz, r3.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + add r4.y, r4.x, -cb0[159].x + mul r4.y, r4.y, cb0[159].z + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[159].y + lt r4.z, l(5.960464478E-08), |r3.z| + exp r4.w, -r3.z + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.z + mad r3.z, -r3.z, l(0.240226507), l(0.693147182) + movc r3.z, r4.z, r4.w, r3.z + add r4.x, r4.x, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.z, l(5.960464478E-08), |r3.x| + exp r4.w, -r3.x + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.x + mad r3.x, -r3.x, l(0.240226507), l(0.693147182) + movc r3.x, r4.z, r4.w, r3.x + mul r3.x, r3.x, r4.x + mad r3.x, r4.y, r3.z, r3.x + mad r2.z, -r2.z, r3.y, l(1.000000) + mul r2.z, r0.w, r2.z + mul r2.z, r2.z, r3.x + exp r2.z, -r2.z + min r2.z, r2.z, l(1.000000) + max r2.z, r2.z, cb0[161].w + mad_sat r3.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r2.z, r2.z, r3.x + add r2.z, r3.y, r2.z + min r2.z, r2.z, l(1.000000) + imad r5.y, r3.w, r5.x, r2.w + ushr r3.xy, r5.xyxx, l(16, 16, 0, 0) + utof r3.xy, r3.xyxx + mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb0[167].wwww, r18.xyxx + mul r3.xy, r3.xyxx, cb0[165].xyxx + mad r2.w, r16.z, cb0[164].x, cb0[164].y + log r2.w, r2.w + mul r2.w, r2.w, cb0[164].z + div r3.z, r2.w, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t17.xyzw, s0, l(0.000000) + add r2.w, r16.z, -cb0[166].z + mul_sat r2.w, r2.w, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r2.wwww, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r2.w, -r2.z, l(1.000000) + mul r4.xyz, r2.wwww, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r2.z, r2.z, r3.w +else + add r1.y, r1.y, -cb0[44].y + mul r2.w, r1.y, cb0[159].z + max r2.w, r2.w, l(-127.000000) + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r2.w| + exp r4.y, -r2.w + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r4.x, r4.y, r2.w + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.y, r4.z, r1.y + mul r1.y, r1.y, r4.x + mad r1.y, r3.w, r2.w, r1.y + mul r1.y, r0.w, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.w, r1.y, r4.x + add r0.w, r4.y, r0.w + min r2.z, r0.w, l(1.000000) + add r0.w, -r2.z, l(1.000000) + mul r3.xyz, r0.wwww, cb0[161].xyzx +endif +mul r4.xyz, r1.xzwx, r2.zzzz +mad r0.w, r2.x, r2.x, l(1.000000) +mul r0.w, r0.w, l(0.0596831031) +mad r5.xyz, cb0[156].xyzx, r0.wwww, cb0[158].xyzx +mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r1.y, r2.y, l(12.566371) +sqrt r2.x, r2.y +mul r1.y, r1.y, r2.x +max r1.y, r1.y, l(0.001000) +div r0.w, r0.w, r1.y +mad_sat r2.xyw, cb0[157].xyxz, r0.wwww, r5.xyxz +mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) +add r1.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r1.xyz, r1.xyzx, r2.xywx +mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx +mad r0.xyz, r0.xyzx, r4.xyzx, r1.xyzx +add r0.xyz, -r12.xyzx, r0.xyzx +mad r8.xyz, r8.wwww, r0.xyzx, r12.xyzx +mul r0.xy, r13.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r0.xy, |r0.xyxx| +sqrt r0.xy, r0.xyxx +mov r13.z, -r13.y +lt r0.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r13.xxxz +lt r1.xy, r13.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r0.zw, -r0.zzzw, r1.xxxy +itof r0.zw, r0.zzzw +mul r0.xy, r0.zwzz, r0.xyxx +mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +max r0.z, cb1[r6.w + 4].z, cb1[r6.w + 4].y +add r0.z, r0.z, l(-0.100000024) +lt r0.w, l(0.000000), r0.z +lt r0.z, r0.z, l(0.000000) +iadd r0.z, -r0.w, r0.z +itof r0.z, r0.z +mov_sat r0.z, r0.z +add r1.xy, -r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mad r0.xy, r0.zzzz, r1.xyxx, r0.xyxx +min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) +dp3 r0.x, r8.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mul r0.x, r8.w, r0.x +max r0.x, r8.w, r0.x +mul_sat r0.x, r0.x, l(10.000000) +lt r0.x, l(0.500000), r0.x +and o1.z, r0.x, l(0x3f800000) +mov o0.xyzw, r8.xyzw +mov o1.w, l(0) +ret +// Approximately 0 instruction slots used From c7e64832e97f999fea4e73038af448b9000e2c82 Mon Sep 17 00:00:00 2001 From: SGTForgery Date: Wed, 4 Feb 2026 10:07:57 +0000 Subject: [PATCH 13/40] fix(endfield) Using .asm to stop glass shader freezing --- .../endfield/glass/0x754218B1.ps_5_0.hlsl | 1880 ----------------- .../endfield/glass/0xB317E9E1.ps_5_0.hlsl | 1807 ---------------- 2 files changed, 3687 deletions(-) delete mode 100644 src/games/endfield/glass/0x754218B1.ps_5_0.hlsl delete mode 100644 src/games/endfield/glass/0xB317E9E1.ps_5_0.hlsl diff --git a/src/games/endfield/glass/0x754218B1.ps_5_0.hlsl b/src/games/endfield/glass/0x754218B1.ps_5_0.hlsl deleted file mode 100644 index 2e151b40b5..0000000000 --- a/src/games/endfield/glass/0x754218B1.ps_5_0.hlsl +++ /dev/null @@ -1,1880 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Wed Feb 4 06:20:19 2026 -#include "../common.hlsl" - -Texture2D t23 : register(t23); - -Texture3D t22 : register(t22); - -Texture3D t21 : register(t21); - -Texture3D t20 : register(t20); - -Texture3D t19 : register(t19); - -Texture3D t18 : register(t18); - -Texture3D t17 : register(t17); - -Texture3D t16 : register(t16); - -Texture2D t15 : register(t15); - -Texture2D t14 : register(t14); - -Texture2D t13 : register(t13); - -Texture2D t12 : register(t12); - -Texture2D t11 : register(t11); - -Texture2D t10 : register(t10); - -Texture2D t9 : register(t9); - -Texture2D t8 : register(t8); - -Texture2D t7 : register(t7); - -Texture2D t6 : register(t6); - -Texture2D t5 : register(t5); - -Texture2DArray t4 : register(t4); - -Texture2D t3 : register(t3); - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -struct t0_t { - float val[1]; -}; -StructuredBuffer t0 : register(t0); - -SamplerState s9_s : register(s9); - -SamplerState s8_s : register(s8); - -SamplerState s7_s : register(s7); - -SamplerState s6_s : register(s6); - -SamplerState s5_s : register(s5); - -SamplerComparisonState s4_s : register(s4); - -SamplerState s3_s : register(s3); - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb7 : register(b7) -{ - float4 cb7[160]; -} - -cbuffer cb6 : register(b6) -{ - float4 cb6[715]; -} - -cbuffer cb5 : register(b5) -{ - float4 cb5[2054]; -} - -cbuffer cb4 : register(b4) -{ - float4 cb4[3]; -} - -cbuffer cb3 : register(b3) -{ - float4 cb3[259]; -} - -cbuffer cb2 : register(b2) -{ - float4 cb2[24]; -} - -cbuffer cb1 : register(b1) -{ - float4 cb1[4085]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[244]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - float2 w1 : TEXCOORD1, - float4 v2 : TEXCOORD2, - float4 v3 : TEXCOORD3, - float4 v4 : TEXCOORD4, - float4 v5 : TEXCOORD5, - float4 v6 : TEXCOORD6, - nointerpolation uint v7 : TEXCOORD7, - uint v8 : SV_IsFrontFace0, - out float4 o0 : SV_Target0, - out float4 o1 : SV_Target1) -{ - const float4 icb[] = { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} }; - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r26,r27,r28,r29,r30,r31,r32,r33,r34,r35,r36; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = cb0[82].zw * v0.xy; - r0.zw = r0.xy * float2(2,2) + float2(-1,-1); - r1.xyzw = cb0[25].xyzw * -r0.wwww; - r1.xyzw = cb0[24].xyzw * r0.zzzz + r1.xyzw; - r1.xyzw = cb0[26].xyzw * v0.zzzz + r1.xyzw; - r1.xyzw = cb0[27].xyzw + r1.xyzw; - r1.xyz = r1.xyz / r1.www; - r0.z = cb0[1].z * r1.y; - r0.z = cb0[0].z * r1.x + r0.z; - r0.z = cb0[2].z * r1.z + r0.z; - r0.z = cb0[3].z + r0.z; - r2.z = abs(r0.z); - r0.z = cmp(0 < v3.w); - r0.z = r0.z ? 1 : -1; - r0.w = cmp(0.000000 == cb0[86].w); - r3.xyz = cb0[44].xyz + -r1.xyz; - r4.x = cb0[0].z; - r4.y = cb0[1].z; - r4.z = cb0[2].z; - r3.xyz = r0.www ? r3.xyz : r4.xyz; - r0.w = dot(r3.xyz, r3.xyz); - r2.w = max(9.99999994e-09, r0.w); - r2.w = rsqrt(r2.w); - r5.xyz = r3.xyz * r2.www; - r0.w = r2.w * r0.w; - r6.xy = w1.xy + -v1.xy; - r6.zw = cb2[3].xx * r6.xy + v1.xy; - r6.zw = r6.zw * cb2[12].xy + cb2[12].zw; - r6.xy = cb2[2].ww * r6.xy + v1.xy; - r6.xy = r6.xy * cb2[11].xy + cb2[11].zw; - r7.xyzw = t5.SampleBias(s5_s, r6.xy, cb0[108].x).xyzw; - r3.w = cb2[3].y + cb0[108].x; - r8.xyz = t6.SampleBias(s6_s, r6.zw, r3.w).xyw; - r8.x = r8.z * r8.x; - r6.xy = r8.xy * float2(2,2) + float2(-1,-1); - r8.xy = cb2[0].xx * r6.xy; - r9.xyz = t7.SampleBias(s7_s, r6.zw, cb0[108].x).xyz; - r7.xyzw = cb2[8].xyzw * r7.xyzw; - r7.xyz = saturate(cb2[4].zzz * r7.xyz); - r10.xyz = cb2[8].xyz + -r7.xyz; - r7.xyz = cb2[4].xxx * r10.xyz + r7.xyz; - r3.w = r7.w * v4.x + -r7.w; - r10.w = cb2[23].x * r3.w + r7.w; - r3.w = cb2[0].w + -cb2[0].z; - r11.w = r9.y * r3.w + cb2[0].z; - r3.w = saturate(cb2[3].w + -1); - r4.w = cb2[4].y + -r9.x; - r3.w = r3.w * r4.w + r9.x; - r9.xyw = v3.yzx * v2.zxy; - r9.xyw = v2.yzx * v3.zxy + -r9.xyw; - r9.xyw = r9.xyw * r0.zzz; - r8.yzw = r9.xyw * r8.yyy; - r8.xyz = v3.xyz * r8.xxx + r8.yzw; - r0.z = dot(r6.xy, r6.xy); - r0.z = min(1, r0.z); - r0.z = 1 + -r0.z; - r0.z = sqrt(r0.z); - r0.z = max(1.00000002e-16, r0.z); - r4.w = cmp(0 < cb2[1].w); - r4.w = r4.w ? -1 : 1; - r4.w = v8.x ? 1 : r4.w; - r0.z = r4.w * r0.z; - r6.xyz = v2.xyz * r0.zzz + r8.xyz; - r0.z = dot(r6.xyz, r6.xyz); - r0.z = rsqrt(r0.z); - r6.xyz = r6.xyz * r0.zzz; - r0.z = dot(r6.xyz, r5.xyz); - r4.w = dot(-r5.xyz, r6.xyz); - r5.w = cb2[19].z * cb2[19].z; - r7.w = -r4.w * r4.w + 1; - r5.w = -r5.w * r7.w + 1; - r7.w = sqrt(r5.w); - r7.w = cb2[19].z * r4.w + r7.w; - r5.w = cmp(r5.w >= 0); - r8.xyz = r7.www * r6.xyz; - r8.xyz = cb2[19].zzz * -r5.xyz + -r8.xyz; - r8.xyz = r5.www ? r8.xyz : 0; - r5.w = v0.z * r0.z; - r5.w = max(0.5, r5.w); - r5.w = cb2[19].w / r5.w; - r5.w = -cb2[19].w + r5.w; - r5.w = cb2[20].x * r5.w + cb2[19].w; - r8.xyz = r8.xyz * r5.www; - r8.yw = cb0[1].xy * r8.yy; - r8.xy = cb0[0].xy * r8.xx + r8.yw; - r8.xy = cb0[2].xy * r8.zz + r8.xy; - r8.zw = v1.xy * cb2[22].xy + cb2[22].zw; - r8.zw = t9.SampleBias(s8_s, r8.zw, cb0[108].x).xy; - r8.zw = r8.zw * float2(2,2) + float2(-1,-1); - r8.zw = r8.zw * cb2[19].yy + -r8.xy; - r8.xy = cb2[19].xx * r8.zw + r8.xy; - r8.zw = v0.xy * cb0[82].zw + r8.xy; - r8.xy = float2(0.25,0.25) * r8.xy; - r9.xy = v0.xy * cb0[82].zw + r8.xy; - r5.w = t1.SampleBias(s0_s, r8.zw, cb0[108].x).x; - r7.w = t1.SampleBias(s0_s, r9.xy, cb0[108].x).x; - r7.w = cb0[84].z * r7.w + cb0[84].w; - r7.w = 1 / r7.w; - r7.w = cmp(r7.w >= r2.z); - r7.w = r7.w ? 1.000000 : 0; - r8.xy = r7.ww * r8.xy + r0.xy; - r5.w = cb0[84].z * r5.w + cb0[84].w; - r5.w = 1 / r5.w; - r5.w = cmp(r5.w >= r2.z); - r5.w = r5.w ? 1.000000 : 0; - r8.zw = r8.zw + -r8.xy; - r8.xy = r5.ww * r8.zw + r8.xy; - r8.xyz = t8.SampleBias(s9_s, r8.xy, cb0[108].x).xyz; - r5.w = max(9.99999994e-09, v5.z); - r9.xy = v5.xy / r5.ww; - r5.w = max(9.99999994e-09, v6.z); - r12.xy = v6.xy / r5.ww; - r12.xy = -r12.xy + r9.xy; - r5.w = cb2[0].y * 0.0799999982; - r9.xyw = -r7.xyz * r3.www + r7.xyz; - r5.w = -r5.w * r3.w + r5.w; - r7.xyz = r7.xyz * r3.www + r5.www; - r13.xyzw = r11.wwww * float4(-1,-0.0274999999,-0.572000027,0.0219999999) + float4(1,0.0425000004,1.03999996,-0.0399999991); - r3.w = r13.x * r13.x; - r0.z = max(0, r0.z); - r5.w = -9.27999973 * r0.z; - r5.w = exp2(r5.w); - r3.w = min(r5.w, r3.w); - r3.w = r3.w * r13.x + r13.y; - r13.xy = r3.ww * float2(-1.03999996,1.03999996) + r13.zw; - r3.w = cmp(1.000000 == cb0[113].y); - r14.xyzw = cb0[241].xyzw * r1.yyyy; - r14.xyzw = cb0[240].xyzw * r1.xxxx + r14.xyzw; - r14.xyzw = cb0[242].xyzw * r1.zzzz + r14.xyzw; - r14.xyzw = cb0[243].xyzw + r14.xyzw; - r5.w = 1 / r14.w; - r14.xyz = float3(1,-1,1) * r14.xyz; - r14.xyz = r14.xyz * r5.www; - r13.zw = saturate(r14.xy * float2(0.5,0.5) + float2(0.5,0.5)); - r13.zw = cb0[82].xy * r13.zw; - r15.xy = (uint2)r13.zw; - r5.w = cb0[84].z * r14.z + cb0[84].w; - r15.z = 1 / r5.w; - r2.xy = (uint2)v0.xy; - r14.xyz = r3.www ? r15.xyz : r2.xyz; - r2.xyz = r6.xyz * float3(0.25,0.25,0.25) + r1.xyz; - r15.xyz = cb0[6].xzy * -cb0[212].www + cb0[210].xzy; - r15.xyz = -r15.xyz + r2.xzy; - r3.w = max(abs(r15.x), abs(r15.y)); - r3.w = -464 + r3.w; - r3.w = saturate(0.03125 * r3.w); - r5.w = -208 + abs(r15.z); - r5.w = saturate(0.03125 * r5.w); - r3.w = max(r5.w, r3.w); - r5.w = cmp(0.000000 != cb0[210].w); - r7.w = cmp(r3.w < 1); - r5.w = r5.w ? r7.w : 0; - if (r5.w != 0) { - r15.xyz = cb0[6].xzy * -cb0[212].yyy + cb0[210].xzy; - r15.xyz = -r15.xyz + r2.xzy; - r5.w = max(abs(r15.x), abs(r15.y)); - r5.w = -29 + r5.w; - r5.w = saturate(0.5 * r5.w); - r7.w = -13 + abs(r15.z); - r7.w = saturate(0.5 * r7.w); - r5.w = max(r7.w, r5.w); - r7.w = cmp(r5.w < 1); - if (r7.w != 0) { - r15.xyz = r2.xyz * float3(2,2,2) + float3(0.5,0.5,0.5); - r16.xyz = cb0[211].xyz * r15.xyz; - r16.xyz = floor(r16.xyz); - r15.xyz = r15.xyz * cb0[211].xyz + -r16.xyz; - r16.xyz = t16.SampleLevel(s2_s, r15.xyz, 0).xyz; - r7.w = 1 + -r5.w; - r8.w = cb0[211].y * 0.5; - r12.w = -cb0[211].y * 0.5 + 1; - r8.w = max(r15.y, r8.w); - r8.w = min(r8.w, r12.w); - r15.w = 0.333333343 * r8.w; - r17.xyzw = t17.SampleLevel(s1_s, r15.xwz, 0).xyzw; - r17.xyz = r17.xyz * float3(4,4,4) + float3(-2,-2,-2); - r18.xyz = r17.xyz * r16.xxx; - r17.xyz = float3(0,0.333333343,0) + r15.xwz; - r17.xyz = t17.SampleLevel(s1_s, r17.xyz, 0).xyz; - r17.xyz = r17.xyz * float3(4,4,4) + float3(-2,-2,-2); - r19.xyz = r17.xyz * r16.yyy; - r15.xyz = float3(0,0.666666687,0) + r15.xwz; - r15.xyz = t17.SampleLevel(s1_s, r15.xyz, 0).xyz; - r15.xyz = r15.xyz * float3(4,4,4) + float3(-2,-2,-2); - r15.xyz = r15.xyz * r16.zzz; - r8.w = r17.w * r7.w + r3.w; - r15.w = r16.z; - r15.xyzw = r15.xyzw * r7.wwww; - r19.w = r16.y; - r17.xyzw = r19.xyzw * r7.wwww; - r18.w = r16.x; - r16.xyzw = r18.xyzw * r7.wwww; - } else { - r15.xyzw = float4(0,0,0,0); - r17.xyzw = float4(0,0,0,0); - r16.xyzw = float4(0,0,0,0); - r8.w = r3.w; - } - r18.xyz = cb0[6].xzy * -cb0[212].zzz + cb0[210].xzy; - r18.xyz = -r18.xyz + r2.xzy; - r7.w = max(abs(r18.x), abs(r18.y)); - r7.w = -116 + r7.w; - r7.w = saturate(0.125 * r7.w); - r12.w = -52 + abs(r18.z); - r12.w = saturate(0.125 * r12.w); - r7.w = max(r12.w, r7.w); - r12.w = cmp(r7.w < 1); - if (r12.w != 0) { - r18.xyz = r2.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5); - r19.xyz = cb0[211].xyz * r18.xyz; - r19.xyz = floor(r19.xyz); - r18.xyz = r18.xyz * cb0[211].xyz + -r19.xyz; - r19.xyz = t18.SampleLevel(s2_s, r18.xyz, 0).xyz; - r12.w = 1 + -r7.w; - r5.w = r12.w * r5.w; - r12.w = cb0[211].y * 0.5; - r13.z = -cb0[211].y * 0.5 + 1; - r12.w = max(r18.y, r12.w); - r12.w = min(r12.w, r13.z); - r18.w = 0.333333343 * r12.w; - r20.xyzw = t19.SampleLevel(s1_s, r18.xwz, 0).xyzw; - r20.xyz = r20.xyz * float3(4,4,4) + float3(-2,-2,-2); - r21.xyz = r20.xyz * r19.xxx; - r20.xyz = float3(0,0.333333343,0) + r18.xwz; - r20.xyz = t19.SampleLevel(s1_s, r20.xyz, 0).xyz; - r20.xyz = r20.xyz * float3(4,4,4) + float3(-2,-2,-2); - r22.xyz = r20.xyz * r19.yyy; - r18.xyz = float3(0,0.666666687,0) + r18.xwz; - r18.xyz = t19.SampleLevel(s1_s, r18.xyz, 0).xyz; - r18.xyz = r18.xyz * float3(4,4,4) + float3(-2,-2,-2); - r18.xyz = r18.xyz * r19.zzz; - r8.w = r20.w * r5.w + r8.w; - r18.w = r19.z; - r15.xyzw = r18.xyzw * r5.wwww + r15.xyzw; - r22.w = r19.y; - r17.xyzw = r22.xyzw * r5.wwww + r17.xyzw; - r21.w = r19.x; - r16.xyzw = r21.xyzw * r5.wwww + r16.xyzw; - } - r5.w = cmp(0 < r7.w); - if (r5.w != 0) { - r2.xyz = r2.xyz * float3(0.125,0.125,0.125) + float3(0.5,0.5,0.5); - r18.xyz = cb0[211].xyz * r2.xyz; - r19.xyz = cb0[211].xyz * float3(0.5,0.5,0.5); - r18.xyz = floor(r18.xyz); - r2.xyz = r2.xyz * cb0[211].xyz + -r18.xyz; - r18.xyz = -cb0[211].xyz * float3(0.5,0.5,0.5) + float3(1,1,1); - r2.xyz = max(r2.xyz, r19.xyz); - r20.xyz = min(r2.xyz, r18.xyz); - r21.xyw = t20.SampleLevel(s2_s, r20.xyz, 0).yzx; - r2.x = 1 + -r3.w; - r2.x = r7.w * r2.x; - r2.y = max(r20.y, r19.y); - r2.y = min(r2.y, r18.y); - r20.w = 0.333333343 * r2.y; - r18.xyzw = t21.SampleLevel(s1_s, r20.xwz, 0).xyzw; - r19.xyz = float3(0,0.666666687,0) + r20.xwz; - r19.xyz = t21.SampleLevel(s1_s, r19.xyz, 0).xyz; - r19.xyz = r19.xyz * float3(4,4,4) + float3(-2,-2,-2); - r19.xyz = r19.xyz * r21.yyy; - r19.w = r21.y; - r15.xyzw = r19.xyzw * r2.xxxx + r15.xyzw; - r19.xyz = float3(0,0.333333343,0) + r20.xwz; - r19.xyz = t21.SampleLevel(s1_s, r19.xyz, 0).xyz; - r19.xyz = r19.xyz * float3(4,4,4) + float3(-2,-2,-2); - r19.xyz = r19.xyz * r21.xxx; - r19.w = r21.x; - r17.xyzw = r19.xyzw * r2.xxxx + r17.xyzw; - r18.xyz = r18.xyz * float3(4,4,4) + float3(-2,-2,-2); - r21.xyz = r18.xyz * r21.www; - r16.xyzw = r21.xyzw * r2.xxxx + r16.xyzw; - r8.w = r18.w * r2.x + r8.w; - } - r2.x = saturate(r8.w * 2 + -1); - r18.x = r2.x + -r3.w; - r2.x = r2.x + r3.w; - r18.y = 0.5 * r2.x; - } else { - r15.xyzw = float4(0,0,0,0); - r17.xyzw = float4(0,0,0,0); - r16.xyzw = float4(0,0,0,0); - r18.xy = float2(0,1); - } - r19.xyzw = cb0[213].xyzw * r18.yyyx; - r19.y = r19.w * 0.5 + r19.y; - r2.xy = cb0[213].wy * r18.yx; - r19.w = r2.y * 0.375 + r2.x; - r16.xyzw = r19.xyzw + r16.xyzw; - r19.xyzw = cb0[214].xyzw * r18.yyyx; - r19.y = r19.w * 0.5 + r19.y; - r2.xy = cb0[214].wy * r18.yx; - r19.w = r2.y * 0.375 + r2.x; - r17.xyzw = r19.xyzw + r17.xyzw; - r19.xyzw = cb0[215].xyzw * r18.yyyx; - r19.y = r19.w * 0.5 + r19.y; - r2.xy = cb0[215].wy * r18.yx; - r19.w = r2.y * 0.375 + r2.x; - r15.xyzw = r19.xyzw + r15.xyzw; - r2.x = dot(r16.xyz, r6.xyz); - r2.x = r2.x + r16.w; - r2.x = max(0, r2.x); - r3.w = dot(r17.xyz, r6.xyz); - r3.w = r3.w + r17.w; - r2.y = max(0, r3.w); - r3.w = dot(r15.xyz, r6.xyz); - r3.w = r3.w + r15.w; - r2.z = max(0, r3.w); - r3.w = r4.w + r4.w; - r15.xyz = r6.xyz * -r3.www + -r5.xyz; - r3.w = cb0[113].x + -1; - r4.w = max(0.00100000005, r11.w); - r4.w = log2(r4.w); - r4.w = -r4.w * 1.20000005 + 1; - r3.w = -r4.w + r3.w; - r13.zw = (uint2)r14.xy; - r16.xy = cb3[0].ww * r13.zw; - r16.xy = floor(r16.xy); - r4.w = -cb3[2].y + r14.z; - r4.w = floor(r4.w); - r5.w = cb3[1].x + -1; - r7.w = max(0, r4.w); - r5.w = min(r7.w, r5.w); - r4.w = cmp(r5.w >= r4.w); - r7.w = r16.y * cb3[0].x + r16.x; - r7.w = (int)r7.w; - r7.w = (int)r7.w + asint(cb0[110].z); - r7.w = t0[r7.w].val[0/4]; - r5.w = (int)r5.w; - r5.w = (int)r5.w + asint(cb0[110].w); - r5.w = t0[r5.w].val[0/4]; - r5.w = (int)r5.w & (int)r7.w; - r4.w = r4.w ? r5.w : 0; - r16.xyz = cb0[111].xxx * r2.xyz; - r5.w = dot(r16.xyz, float3(0.212672904,0.715152204,0.0721750036)); - r1.w = 1; - r6.w = 1; - r16.xyz = float3(0,0,0); - r7.w = 1; - r8.w = r4.w; - r12.w = 0; - while (true) { - r15.w = cmp(0.00999999978 < r7.w); - r16.w = cmp((int)r8.w != 0); - r16.w = r15.w ? r16.w : 0; - if (r16.w != 0) { - r16.w = firstbitlow((uint)r8.w); - r17.x = 1 << (int)r16.w; - r8.w = (int)r8.w ^ (int)r17.x; - r16.w = (uint)r16.w << 3; - r17.x = dot(cb3[r16.w+6].xyzw, r1.xyzw); - r17.y = dot(cb3[r16.w+7].xyzw, r1.xyzw); - r17.z = dot(cb3[r16.w+8].xyzw, r1.xyzw); - r18.xyz = cmp(cb3[r16.w+5].xyz >= abs(r17.xyz)); - r17.w = r18.y ? r18.x : 0; - r17.w = r18.z ? r17.w : 0; - if (r17.w != 0) { - r17.w = cb3[r16.w+5].x * 0.100000001; - r18.xyz = float3(0.100000001,0.100000001,0.100000001) * abs(r17.xyz); - r18.xy = r18.xy * r18.xy; - r19.xyz = cb3[r16.w+5].xyz + -abs(r17.xyz); - r19.xyz = cb3[r16.w+9].xyz * r19.xyz; - r18.w = cmp(1.000000 == cb3[r16.w+10].x); - if (r18.w != 0) { - r20.x = dot(cb3[r16.w+6].xyz, r15.xyz); - r20.y = dot(cb3[r16.w+7].xyz, r15.xyz); - r20.z = dot(cb3[r16.w+8].xyz, r15.xyz); - r21.xyz = cb3[r16.w+5].xyz + -r17.xyz; - r21.xyz = r21.xyz / r20.xyz; - r22.xyz = -cb3[r16.w+5].xyz + -r17.xyz; - r22.xyz = r22.xyz / r20.xyz; - r23.xyz = cmp(float3(0,0,0) < r20.xyz); - r21.xyz = r23.xyz ? r21.xyz : r22.xyz; - r18.w = min(r21.x, r21.y); - r18.w = min(r18.w, r21.z); - r17.xyz = r20.xyz * r18.www + r17.xyz; - } else { - r17.xyz = r15.xyz; - } - r18.w = dot(r17.xyz, r17.xyz); - r18.w = rsqrt(r18.w); - r17.xyz = r18.www * r17.xyz; - r20.xyz = cmp(float3(0,0,0) < r17.xyz); - r21.xyz = cmp(r17.xyz < float3(0,0,0)); - r20.xyz = (int3)-r20.xyz + (int3)r21.xyz; - r20.xyz = (int3)r20.xyz; - r18.w = dot(r17.xyz, r20.xyz); - r17.xyz = r17.xyz / r18.www; - r17.z = cmp(r17.z < 0); - r20.zw = float2(1,1) + -abs(r17.yx); - r20.xy = r20.xy * r20.zw; - r17.xy = r17.zz ? r20.xy : r17.xy; - r17.z = dot(cb3[r16.w+4].xyzw, r6.xyzw); - r17.z = max(0, r17.z); - r17.z = max(9.99999975e-05, r17.z); - r18.w = min(r19.y, r19.z); - r18.w = min(r19.x, r18.w); - r18.x = r18.x + r18.y; - r18.x = r18.z * r18.z + r18.x; - r17.w = r17.w * r17.w + -r18.x; - r17.w = cb3[r16.w+9].x * r17.w; - r17.w = cb3[r16.w+9].x * r17.w; - r18.x = -cb3[r16.w+10].y + 1; - r17.w = r18.x * r17.w; - r17.w = 100 * r17.w; - r17.w = saturate(r18.w * cb3[r16.w+10].y + r17.w); - r18.x = cb3[r16.w+10].w * r17.w; - r17.xy = r17.xy * float2(0.5,0.5) + float2(0.5,0.5); - r19.xy = r17.xy * cb3[1].ww + cb3[2].ww; - r19.z = cb3[r16.w+5].w; - r18.yzw = t4.SampleLevel(s3_s, r19.xyz, r3.w).xyz; - r18.yzw = cb3[r16.w+9].www * r18.yzw; - r17.x = r5.w / r17.z; - r17.x = min(1, abs(r17.x)); - r17.x = r17.x * 2 + r5.w; - r17.y = 2 + r17.z; - r17.x = r17.x / r17.y; - r17.x = -1 + r17.x; - r17.x = r17.x * cb0[112].w + 1; - r17.xyz = r18.yzw * r17.xxx; - r17.xyz = r17.xyz * r18.xxx; - r16.xyz = r17.xyz * r7.www + r16.xyz; - r16.w = -r17.w * cb3[r16.w+10].w + 1; - r7.w = r16.w * r7.w; - } - r12.w = -1; - continue; - } else { - r12.w = r15.w; - break; - } - r12.w = r15.w; - } - if (r12.w != 0) { - r1.w = dot(r15.xyz, r15.xyz); - r1.w = rsqrt(r1.w); - r17.xyz = r15.xyz * r1.www; - r18.xyz = cmp(float3(0,0,0) < r17.xyz); - r19.xyz = cmp(r17.xyz < float3(0,0,0)); - r18.xyz = (int3)-r18.xyz + (int3)r19.xyz; - r18.xyz = (int3)r18.xyz; - r1.w = dot(r17.xyz, r18.xyz); - r17.xyz = r17.xyz / r1.www; - r1.w = cmp(r17.z < 0); - r17.zw = float2(1,1) + -abs(r17.yx); - r17.zw = r18.xy * r17.zw; - r17.xy = r1.ww ? r17.zw : r17.xy; - r6.w = 1; - r1.w = dot(cb3[3].xyzw, r6.xyzw); - r1.w = max(0, r1.w); - r1.w = max(9.99999975e-05, r1.w); - r17.xy = r17.xy * float2(0.5,0.5) + float2(0.5,0.5); - r17.xy = r17.xy * cb3[1].ww + cb3[2].ww; - r17.z = 0; - r17.xyz = t4.SampleLevel(s3_s, r17.xyz, r3.w).xyz; - r3.w = r5.w / r1.w; - r3.w = min(1, abs(r3.w)); - r3.w = r3.w * 2 + r5.w; - r1.w = 2 + r1.w; - r1.w = r3.w / r1.w; - r1.w = -1 + r1.w; - r1.w = r1.w * cb0[112].w + 1; - r17.xyz = r17.xyz * r1.www; - r16.xyz = r17.xyz * r7.www + r16.xyz; - } - - // Reduce reflection probe intensity for glass - if (GLASS_TRANSPARENCY > 0.5f) { - r16.xyz *= 0.4f; - } - - r16.xyz = cb0[112].zzz * r16.xyz; - r16.xyz = cb0[111].yyy * r16.xyz; - r1.w = cmp(0.000000 != cb0[112].y); - if (r1.w != 0) { - r1.w = t3.SampleBias(s1_s, r0.xy, cb0[108].x).x; - r17.xyz = t2.SampleBias(s1_s, r0.xy, cb0[108].x).xyz; - r0.x = 1 + -r1.w; - r18.xyz = r16.xyz * r0.xxx; - r16.xyz = r17.xyz * r1.www + r18.xyz; - } - r2.xyz = r2.xyz * r9.xyw; - r0.x = -1 + r9.z; - r0.x = cb2[1].x * r0.x + 1; - r2.xyz = r2.xyz * r0.xxx; - r0.x = saturate(50 * r7.y); - r0.x = r0.x * r13.y; - r17.xyz = r7.xyz * r13.xxx + r0.xxx; - r16.xyz = r17.xyz * r16.xyz; - r2.xyz = r2.xyz * cb0[111].xxx + r16.xyz; - r0.x = cmp(cb6[35].w < 0.99000001); - if (r0.x != 0) { - r0.x = (int)cb6[35].x; - r0.y = cmp((int)r0.x == 2); - r16.xyz = r0.yyy ? cb6[20].xyz : cb0[44].xyz; - r16.xyz = -r16.xyz + r1.xyz; - r0.y = dot(r16.xyz, r16.xyz); - r0.y = cb6[34].w + -r0.y; - r0.y = saturate(cb6[34].z * r0.y); - r1.w = cmp(0 < r0.y); - if (r1.w != 0) { - r0.x = cmp(0 < (int)r0.x); - if (r0.x != 0) { - r16.xyz = -cb6[20].xyz + r1.xyz; - r17.xyz = -cb6[21].xyz + r1.xyz; - r18.xyz = -cb6[22].xyz + r1.xyz; - r19.xyz = -cb6[23].xyz + r1.xyz; - r16.x = dot(r16.xyz, r16.xyz); - r16.y = dot(r17.xyz, r17.xyz); - r16.z = dot(r18.xyz, r18.xyz); - r16.w = dot(r19.xyz, r19.xyz); - r17.x = cmp(r16.x < cb6[20].w); - r17.y = cmp(r16.y < cb6[21].w); - r17.z = cmp(r16.z < cb6[22].w); - r17.w = cmp(r16.w < cb6[23].w); - r18.xyzw = r17.xyzw ? float4(1,1,1,1) : 0; - r17.xyz = r17.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0); - r17.xyz = r18.yzw + r17.xyz; - r18.yzw = max(float3(0,0,0), r17.xyz); - r0.x = dot(r18.xyzw, float4(4,3,2,1)); - r0.x = 4 + -r0.x; - r0.x = max(0, r0.x); - r0.x = min(3, r0.x); - r1.w = 1 + r0.x; - r1.w = min(3, r1.w); - r1.w = (uint)r1.w; - r3.w = dot(r16.yzw, icb[r1.w+0].yzw); - r1.w = r3.w / cb6[r1.w+20].w; - r3.w = cmp(r1.w >= 0); - r1.w = cmp(1 >= r1.w); - r1.w = r1.w ? r3.w : 0; - if (r1.w != 0) { - r1.w = (uint)r0.x; - r13.xy = float2(2.08299994,4.8670001) + r13.zw; - r3.w = dot(r13.xy, float2(0.0671105608,0.00583714992)); - r3.w = frac(r3.w); - r3.w = 52.9829178 * r3.w; - r3.w = frac(r3.w); - r4.w = dot(r16.xyzw, icb[r1.w+0].xyzw); - r1.w = r4.w / cb6[r1.w+20].w; - r1.w = sqrt(r1.w); - r1.w = -0.899999976 + r1.w; - r1.w = 12 * r1.w; - r1.w = cmp(r1.w >= r3.w); - r1.w = r1.w ? 1.000000 : 0; - r0.x = r1.w + r0.x; - } - r1.w = dot(r6.xyz, cb5[0].xyz); - r1.w = max(0, r1.w); - r1.w = min(0.899999976, r1.w); - r1.w = 1 + -r1.w; - r3.w = (uint)r0.x; - r4.w = (uint)r3.w << 2; - r13.xy = cb6[r3.w+24].xy * r1.ww; - r1.w = max(0, r13.x); - r16.xyz = -cb5[0].xyz * r1.www + r1.xyz; - r16.xyz = r6.xyz * r13.yyy + r16.xyz; - r17.xyz = cb6[r4.w+1].xyz * r16.yyy; - r16.xyw = cb6[r4.w+0].xyz * r16.xxx + r17.xyz; - r16.xyz = cb6[r4.w+2].xyz * r16.zzz + r16.xyw; - r16.xyz = cb6[r4.w+3].xyz + r16.xyz; - r17.xyz = cmp(float3(0,0,0) >= r16.xyz); - r18.xyz = cmp(r16.xyz >= float3(1,1,1)); - r17.xyz = (int3)r17.xyz | (int3)r18.xyz; - r1.w = (int)r17.y | (int)r17.x; - r1.w = (int)r17.z | (int)r1.w; - r3.w = (int)r16.z & 0x7fffffff; - r3.w = cmp(0x7f800000 < (uint)r3.w); - r17.z = (int)r1.w | (int)r3.w; - r0.x = (int)r0.x; - r13.xy = r16.xy * cb6[r0.x+28].zw + cb6[r0.x+28].xy; - r16.xy = r13.xy * cb6[32].zw + float2(0.5,0.5); - r16.xy = floor(r16.xy); - r13.xy = r13.xy * cb6[32].zw + -r16.xy; - r18.xyzw = float4(0.5,1,0.5,1) + r13.xxyy; - r19.xw = r18.xz * r18.xz; - r18.xz = min(float2(0,0), r13.xy); - r20.xy = max(float2(0,0), r13.xy); - r20.zw = r19.xw * float2(0.5,0.5) + -r13.xy; - r13.xy = float2(1,1) + -r13.xy; - r13.xy = -r18.xz * r18.xz + r13.xy; - r18.xy = -r20.xy * r20.xy + r18.yw; - r21.x = r20.z; - r21.y = r13.x; - r21.z = r18.x; - r21.w = r19.x; - r21.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r21.xyzw; - r19.x = r20.w; - r19.y = r13.y; - r19.z = r18.y; - r18.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r19.xyzw; - r19.xyzw = r21.xzxz + r21.ywyw; - r20.xyzw = r18.xxzz + r18.yyww; - r13.xy = r21.yw / r19.zw; - r13.xy = float2(-1.5,0.5) + r13.xy; - r21.xy = cb6[32].xx * r13.xy; - r13.xy = r18.yw / r20.yw; - r13.xy = float2(-1.5,0.5) + r13.xy; - r21.zw = cb6[32].yy * r13.xy; - r18.xyzw = r20.xyzw * r19.xyzw; - r19.xyzw = r16.xyxy * cb6[32].xyxy + r21.xzyz; - r0.x = t10.SampleCmpLevelZero(s4_s, r19.xy, r16.z).x; - r1.w = t10.SampleCmpLevelZero(s4_s, r19.zw, r16.z).x; - r1.w = r18.y * r1.w; - r0.x = r18.x * r0.x + r1.w; - r19.xyzw = r16.xyxy * cb6[32].xyxy + r21.xwyw; - r1.w = t10.SampleCmpLevelZero(s4_s, r19.xy, r16.z).x; - r0.x = r18.z * r1.w + r0.x; - r1.w = t10.SampleCmpLevelZero(s4_s, r19.zw, r16.z).x; - r0.x = r18.w * r1.w + r0.x; - r17.x = r17.z ? 1 : r0.x; - } else { - r17.xz = float2(1,0); - } - } else { - r17.xz = float2(1,0); - } - r0.x = cmp(r0.y < 1); - if (r0.x != 0) { - r0.x = dot(r6.xyz, cb5[0].xyz); - r0.x = max(0, r0.x); - r0.x = min(0.899999976, r0.x); - r0.x = 1 + -r0.x; - r13.xy = cb6[584].xy * r0.xx; - r16.xyz = -cb5[0].xyz * r13.xxx + r1.xyz; - r16.xyz = r6.xyz * r13.yyy + r16.xyz; - r13.xy = cb6[581].xy * r16.yy; - r13.xy = cb6[580].xy * r16.xx + r13.xy; - r13.xy = cb6[582].xy * r16.zz + r13.xy; - r13.xy = cb6[583].xy + r13.xy; - r18.xy = cmp(float2(0,0) < r13.xy); - r0.x = r18.y ? r18.x : 0; - r18.xy = cmp(r13.xy < float2(1,1)); - r1.w = r18.y ? r18.x : 0; - r0.x = (int)r0.x & (int)r1.w; - if (r0.x != 0) { - r0.x = cb6[585].z * r13.y; - r0.x = floor(r0.x); - r0.x = r0.x + r13.x; - r0.x = cb6[585].y * r0.x; - r0.x = (uint)r0.x; - r0.x = min(127, (uint)r0.x); - r1.w = 0x0000ffff & asint(cb6[r0.x+587].x); - r13.x = f16tof32(r1.w); - r1.w = cmp(r13.x >= 0); - if (r1.w != 0) { - r18.x = cb6[576].x; - r18.y = cb6[577].x; - r18.z = cb6[578].x; - r18.w = cb6[r0.x+587].y; - r16.w = 1; - r18.x = dot(r18.xyzw, r16.xyzw); - r19.x = cb6[576].y; - r19.y = cb6[577].y; - r19.z = cb6[578].y; - r19.w = cb6[r0.x+587].z; - r18.y = dot(r19.xyzw, r16.xyzw); - r19.x = cb6[576].z; - r19.y = cb6[577].z; - r19.z = cb6[578].z; - r19.w = cb6[r0.x+587].w; - r1.w = dot(r19.xyzw, r16.xyzw); - r16.xy = cmp(float2(0,0) < r18.xy); - r3.w = cmp(0 < r1.w); - r4.w = r16.y ? r16.x : 0; - r3.w = r3.w ? r4.w : 0; - r16.xy = cmp(r18.xy < float2(1,1)); - r4.w = cmp(r1.w < 1); - r5.w = r16.y ? r16.x : 0; - r4.w = r4.w ? r5.w : 0; - r3.w = r3.w ? r4.w : 0; - if (r3.w != 0) { - r0.x = asuint(cb6[r0.x+587].x) >> 16; - r13.y = f16tof32(r0.x); - r13.xy = r18.xy * cb6[584].zw + r13.xy; - r16.xy = r13.xy * cb6[586].zw + float2(0.5,0.5); - r16.xy = floor(r16.xy); - r13.xy = r13.xy * cb6[586].zw + -r16.xy; - r18.xyzw = float4(0.5,1,0.5,1) + r13.xxyy; - r19.xw = r18.xz * r18.xz; - r16.zw = min(float2(0,0), r13.xy); - r18.xz = max(float2(0,0), r13.xy); - r20.xy = r19.xw * float2(0.5,0.5) + -r13.xy; - r13.xy = float2(1,1) + -r13.xy; - r13.xy = -r16.zw * r16.zw + r13.xy; - r16.zw = -r18.xz * r18.xz + r18.yw; - r18.x = r20.x; - r18.y = r13.x; - r18.z = r16.z; - r18.w = r19.x; - r18.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r18.xyzw; - r19.x = r20.y; - r19.y = r13.y; - r19.z = r16.w; - r19.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r19.xyzw; - r20.xyzw = r18.xzxz + r18.ywyw; - r21.xyzw = r19.xxzz + r19.yyww; - r13.xy = r18.yw / r20.zw; - r13.xy = float2(-1.5,0.5) + r13.xy; - r18.xy = cb6[586].xx * r13.xy; - r13.xy = r19.yw / r21.yw; - r13.xy = float2(-1.5,0.5) + r13.xy; - r18.zw = cb6[586].yy * r13.xy; - r19.xyzw = r21.xyzw * r20.xyzw; - r20.xyzw = r16.xyxy * cb6[586].xyxy + r18.xzyz; - r0.x = t13.SampleCmpLevelZero(s4_s, r20.xy, r1.w).x; - r3.w = t13.SampleCmpLevelZero(s4_s, r20.zw, r1.w).x; - r3.w = r19.y * r3.w; - r0.x = r19.x * r0.x + r3.w; - r16.xyzw = r16.xyxy * cb6[586].xyxy + r18.xwyw; - r3.w = t13.SampleCmpLevelZero(s4_s, r16.xy, r1.w).x; - r0.x = r19.z * r3.w + r0.x; - r1.w = t13.SampleCmpLevelZero(s4_s, r16.zw, r1.w).x; - r17.y = r19.w * r1.w + r0.x; - } else { - r17.y = 1; - } - } else { - r17.y = 1; - } - } else { - r17.y = 1; - } - r17.x = r17.z ? r17.y : r17.x; - } else { - r17.y = 1; - } - r0.x = r17.x + -r17.y; - r0.x = r0.y * r0.x + r17.y; - r0.y = cmp(0.00100000005 < r0.x); - if (r0.y != 0) { - r16.xyz = -cb0[173].xyz + r1.xyz; - r13.xy = cb0[176].xz * r16.yy + r16.xz; - r16.yw = cb0[174].zz * r13.xy; - r17.xy = cb0[183].ww * cb0[175].xy; - r13.xy = r13.xy * cb0[174].zz + r17.xy; - r0.y = t12.SampleLevel(s2_s, r13.xy, 0).x; - r13.xy = r16.yw * cb0[175].ww + r17.xy; - r1.w = t12.SampleLevel(s2_s, r13.xy, 0).x; - r3.w = dot(r16.xz, r16.xz); - r3.w = sqrt(r3.w); - r4.w = cb0[174].y + -cb0[174].x; - r3.w = -cb0[174].x + r3.w; - r4.w = 1 / r4.w; - r3.w = saturate(r4.w * r3.w); - r4.w = r3.w * -2 + 3; - r3.w = r3.w * r3.w; - r3.w = r4.w * r3.w; - r1.w = r1.w + -r0.y; - r0.y = r3.w * r1.w + r0.y; - r0.y = -1 + r0.y; - r0.y = cb0[175].z * r0.y + 1; - r0.x = r0.x * r0.y; - } - r0.y = cb6[35].z + -r0.x; - r0.x = cb6[35].w * r0.y + r0.x; - } else { - r0.x = cb6[35].z; - } - r0.x = min(1, r0.x); - r0.x = -1 + r0.x; - r0.x = cb6[34].x * r0.x + 1; - r1.w = cmp(0.00100000005 < r0.x); - if (r1.w != 0) { - r1.w = dot(-cb5[0].xyz, r15.xyz); - r16.xyz = cb5[0].xyz * r1.www + r15.xyz; - r1.w = cmp(r1.w < cb5[4].z); - r3.w = dot(r16.xyz, r16.xyz); - r3.w = max(6.10351562e-05, r3.w); - r3.w = rsqrt(r3.w); - r16.xyz = r16.xyz * r3.www; - r16.xyz = cb5[4].yyy * r16.xyz; - r16.xyz = -cb5[0].xyz * cb5[4].zzz + r16.xyz; - r3.w = dot(r16.xyz, r16.xyz); - r3.w = rsqrt(r3.w); - r16.xyz = r16.xyz * r3.www; - r16.xyz = r1.www ? r16.xyz : r15.xyz; - r17.xyz = r3.xyz * r2.www + r16.xyz; - r1.w = dot(r17.xyz, r17.xyz); - r1.w = max(6.10351562e-05, r1.w); - r1.w = rsqrt(r1.w); - r17.xyz = r17.xyz * r1.www; - r11.y = saturate(dot(r16.xyz, r6.xyz)); - r1.w = saturate(dot(r6.xyz, r17.xyz)); - r11.z = min(1, r0.z); - r3.w = r11.w * r11.w; - r3.w = r3.w * r3.w; - r4.w = r1.w * r3.w + -r1.w; - r1.w = r4.w * r1.w + 1; - r4.w = saturate(dot(r5.xyz, r17.xyz)); - r4.w = 1 + -r4.w; - r5.w = r4.w * r4.w; - r5.w = r5.w * r5.w; - r6.w = r5.w * r4.w; - r7.w = 1 + -r11.w; - r8.w = -r7.w * 0.383026004 + -0.0761947036; - r8.w = r7.w * r8.w + 1.04997003; - r7.w = r7.w * r8.w + 0.409254998; - r7.w = min(0.999000013, r7.w); - r8.w = 1 + -r7.w; - r16.xyz = float3(1,1,1) + -r7.xyz; - r16.xyz = r16.xyz * float3(0.0476190485,0.0476190485,0.0476190485) + r7.xyz; - r4.w = -r5.w * r4.w + 1; - r17.xyz = r7.xyz * r4.www + r6.www; - r1.w = r1.w * r1.w; - r1.w = r3.w / r1.w; - r13.xy = -r11.zy * r3.ww + r11.zy; - r13.xy = r13.xy * r11.zy + r3.ww; - r13.xy = sqrt(r13.xy); - r13.xy = r13.xy * r11.yz; - r3.w = r13.x + r13.y; - r3.w = 9.99999975e-05 + r3.w; - r3.w = 0.5 / r3.w; - r1.w = r3.w * r1.w; - r17.xyz = r17.xyz * r1.www; - r17.xyz = min(float3(2048,2048,2048), r17.xyz); - r18.xyzw = r11.zwyw * float4(0.96875,0.96875,0.96875,0.96875) + float4(0.015625,0.015625,0.015625,0.015625); - r1.w = t15.SampleLevel(s1_s, r18.xy, 0).x; - r3.w = t15.SampleLevel(s1_s, r18.zw, 0).x; - r1.w = r3.w * r1.w; - r1.w = r1.w * r7.w; - r1.w = r1.w / r8.w; - r18.xyz = r16.xyz * r16.xyz; - r18.xyz = r18.xyz * r1.www; - r16.xyz = -r16.xyz * r8.www + float3(1,1,1); - r16.xyz = r18.xyz / r16.xyz; - r16.xyz = r17.xyz + r16.xyz; - r16.xyz = cb5[4].xxx * r16.xyz; - r16.xyz = max(float3(0,0,0), r16.xyz); - r16.xyz = min(float3(1000,1000,1000), r16.xyz); - - // Reduce sun specular intensity on glass - if (GLASS_TRANSPARENCY > 0.5f) { - r16.xyz *= 0.5f; - } - - r1.w = max(0.00999999978, r10.w); - r16.xyz = r16.xyz / r1.www; - r16.xyz = min(float3(1000,1000,1000), r16.xyz); - r17.xyz = r11.yyy * r9.xyw; - r16.xyz = r16.xyz * r11.yyy + r17.xyz; - r16.xyz = cb5[1].xyz * r16.xyz; - r0.y = 0.5; - r17.xyz = t14.SampleBias(s1_s, r0.xy, cb0[108].x).xyz; - r0.x = 1 + -r0.x; - r17.xyz = r16.xyz * r17.xyz + -r16.xyz; - r16.xyz = r0.xxx * r17.xyz + r16.xyz; - } else { - r16.xyz = float3(0,0,0); - } - r0.xy = float2(0.03125,0.03125) * r13.zw; - r0.xy = floor(r0.xy); - r0.x = r0.y * cb4[1].y + r0.x; - r0.x = 8 * r0.x; - r0.x = (int)r0.x; - r0.y = -cb0[85].y * cb4[2].w + r14.z; - r0.y = floor(r0.y); - r1.w = cb4[1].w + -1; - r3.w = max(0, r0.y); - r1.w = min(r3.w, r1.w); - r3.w = 8 * r1.w; - r3.w = (int)r3.w; - r0.y = cmp(r1.w >= r0.y); - r1.w = (int)r3.w + asint(cb0[110].y); - r3.w = r11.w * r11.w; - r11.x = min(1, r0.z); - r0.z = 1 + -r11.w; - r4.w = -r0.z * 0.383026004 + -0.0761947036; - r4.w = r0.z * r4.w + 1.04997003; - r0.z = r0.z * r4.w + 0.409254998; - r0.z = min(0.999000013, r0.z); - r4.w = 1 + -r0.z; - r17.xyz = float3(1,1,1) + -r7.xyz; - r17.xyz = r17.xyz * float3(0.0476190485,0.0476190485,0.0476190485) + r7.xyz; - r11.yz = r11.xw * float2(0.96875,0.96875) + float2(0.015625,0.015625); - r5.w = t15.SampleLevel(s1_s, r11.yz, 0).x; - r18.xyz = -r17.xyz * r4.www + float3(1,1,1); - r17.xyz = r17.xyz * r17.xyz; - r19.w = 1; - r13.y = 1; - r20.z = r11.w; - r21.xyz = float3(0,0,0); - r6.w = 1; - r7.w = 0; - while (true) { - r8.w = cmp(7 < (int)r7.w); - if (r8.w != 0) break; - r8.w = (int)r0.x + (int)r7.w; - r8.w = t0[r8.w].val[0/4]; - r9.z = (int)r1.w + (int)r7.w; - r9.z = t0[r9.z].val[0/4]; - r8.w = (int)r8.w & (int)r9.z; - r8.w = r0.y ? r8.w : 0; - r9.z = (uint)r7.w << 5; - r22.xyz = float3(0,0,0); - r11.y = r6.w; - r11.z = r8.w; - while (true) { - if (r11.z == 0) break; - r12.w = firstbitlow((uint)r11.z); - r15.w = 1 << (int)r12.w; - r15.w = (int)r11.z ^ (int)r15.w; - r12.w = (int)r9.z + (int)r12.w; - bitmask.x = ((~(-1 << 29)) << 3) & 0xffffffff; r23.x = (((uint)r12.w << 3) & bitmask.x) | ((uint)1 & ~bitmask.x); - bitmask.y = ((~(-1 << 29)) << 3) & 0xffffffff; r23.y = (((uint)r12.w << 3) & bitmask.y) | ((uint)3 & ~bitmask.y); - bitmask.z = ((~(-1 << 29)) << 3) & 0xffffffff; r23.z = (((uint)r12.w << 3) & bitmask.z) | ((uint)5 & ~bitmask.z); - bitmask.w = ((~(-1 << 29)) << 3) & 0xffffffff; r23.w = (((uint)r12.w << 3) & bitmask.w) | ((uint)6 & ~bitmask.w); - bitmask.w = ((~(-1 << 29)) << 3) & 0xffffffff; r16.w = (((uint)r12.w << 3) & bitmask.w) | ((uint)7 & ~bitmask.w); - r17.w = (uint)cb5[r23.z+6].w; - r17.w = cmp((int)r17.w == 1); - if (r17.w != 0) { - r19.xyz = -cb5[r23.x+6].xyz + r1.xyz; - r24.xyz = int3(0xffff,0xffff,0xffff) & asint(cb5[r23.z+6].xzy); - r25.xyz = int3(0xffff,0xffff,0xffff) & asint(cb5[r23.w+6].yxz); - r26.xyz = asuint(cb5[r23.z+6].xzy) >> int3(16,16,16); - r27.xyz = asuint(cb5[r23.w+6].yxz) >> int3(16,16,16); - r24.xyz = f16tof32(r24.xyz); - r25.xyz = f16tof32(r25.xyz); - r26.xyz = f16tof32(r26.xyz); - r27.xyw = f16tof32(r27.yxz); - r28.xz = r24.xz; - r28.yw = r26.xz; - r17.w = dot(r19.xyzw, r28.xyzw); - r26.x = r24.y; - r26.z = r25.y; - r26.w = r27.x; - r18.w = dot(r19.xyzw, r26.xyzw); - r27.xz = r25.xz; - r19.x = dot(r19.xyzw, r27.xyzw); - r17.w = max(abs(r18.w), abs(r17.w)); - r17.w = max(r17.w, abs(r19.x)); - r18.w = cb5[r16.w+6].x * 0.5 + 0.5; - r17.w = -r18.w + r17.w; - r18.w = -cb5[r16.w+6].x * 0.5 + 0.5; - r17.w = saturate(r17.w / r18.w); - r17.w = 1 + -r17.w; - r17.w = r17.w * r17.w; - } else { - r17.w = 1; - } - r18.w = cmp(0.5 < cb5[r23.y+6].z); - r19.x = cmp(r17.w < 0.00100000005); - r19.x = (int)r18.w | (int)r19.x; - if (r19.x != 0) { - r11.z = r15.w; - continue; - } - r19.x = (uint)r12.w << 3; - bitmask.w = ((~(-1 << 29)) << 3) & 0xffffffff; r12.w = (((uint)r12.w << 3) & bitmask.w) | ((uint)2 & ~bitmask.w); - r19.y = cmp(cb5[r19.x+6].w < 1.5); - if (r19.y != 0) { - r19.y = cb5[r12.w+6].y * 0.5 + 0.5; - r24.x = -abs(cb5[r12.w+6].x) + r19.y; - r24.y = cb5[r12.w+6].y + -r24.x; - r19.y = 1 + -abs(r24.x); - r19.y = r19.y + -abs(r24.y); - r19.y = max(0.00048828125, r19.y); - r19.z = cmp(cb5[r12.w+6].x >= 0); - r24.z = r19.z ? r19.y : -r19.y; - r19.y = dot(r24.xyz, r24.xyz); - r19.y = rsqrt(r19.y); - r24.xyz = r24.xyz * r19.yyy; - r25.xyz = cb5[r23.x+6].xyz + -r1.xyz; - r19.y = dot(r25.xyz, r25.xyz); - r19.z = rsqrt(r19.y); - r26.xyz = r25.xyz * r19.zzz; - r20.w = (int)cb5[r16.w+6].w; - r27.xyz = cb5[r12.w+6].zzz * r24.xyz; - r28.xyz = -r27.xyz * float3(0.5,0.5,0.5) + r25.xyz; - r29.xyz = r27.xyz * float3(0.5,0.5,0.5) + r25.xyz; - r21.w = (uint)cb5[r19.x+6].w; - r21.w = (int)r21.w & 1; - r22.w = cmp((int)r21.w == 0); - r22.w = ~(int)r22.w; - r23.z = cmp(0 < cb5[r12.w+6].z); - r22.w = r22.w ? r23.z : 0; - r23.z = dot(r28.xyz, r28.xyz); - r23.z = sqrt(r23.z); - r24.w = dot(r29.xyz, r29.xyz); - r24.w = sqrt(r24.w); - r25.w = dot(r6.xyz, r28.xyz); - r25.w = r25.w / r23.z; - r26.w = dot(r6.xyz, r29.xyz); - r26.w = r26.w / r24.w; - r25.w = r26.w + r25.w; - r30.x = saturate(0.5 * r25.w); - r25.w = dot(r28.xyz, r29.xyz); - r23.z = r23.z * r24.w + r25.w; - r23.z = r23.z * 0.5 + 1; - r30.y = 1 / r23.z; - r13.x = saturate(dot(r6.xyz, r26.xyz)); - r20.xy = r22.ww ? r30.xy : r13.xy; - r13.x = cmp(cb5[r23.w+6].w < 0); - if (r13.x != 0) { - r13.x = cb5[r23.x+6].w * cb5[r23.x+6].w; - r13.x = r19.y * r13.x; - r13.x = -r13.x * r13.x + 1; - r13.x = max(0, r13.x); - r19.y = 1 + r19.y; - r19.y = 1 / r19.y; - r23.z = r22.w ? 1.000000 : 0; - r24.w = r20.y + -r19.y; - r19.y = r23.z * r24.w + r19.y; - r13.x = r13.x * r13.x; - r13.x = r19.y * r13.x; - } else { - r29.xyz = cb5[r23.x+6].www * r25.xyz; - r19.y = dot(r29.xyz, r29.xyz); - r19.y = min(1, r19.y); - r19.y = 1 + -r19.y; - r19.y = log2(r19.y); - r19.y = cb5[r23.w+6].w * r19.y; - r19.y = exp2(r19.y); - r13.x = r20.y * r19.y; - } - r19.y = dot(r26.xyz, -r24.xyz); - r19.y = -cb5[r12.w+6].z + r19.y; - r19.y = saturate(cb5[r12.w+6].w * r19.y); - r19.y = r19.y * r19.y; - r19.y = r21.w ? 1 : r19.y; - r13.x = r19.y * r13.x; - r19.y = ~(int)r22.w; - r20.y = cmp((int)r20.w >= 0); - r19.y = r20.y ? r19.y : 0; - if (r19.y != 0) { - if (r21.w == 0) { - r19.y = (uint)r20.w << 2; - r24.xyz = cb7[r19.y+33].xyw * r1.yyy; - r24.xyz = cb7[r19.y+32].xyw * r1.xxx + r24.xyz; - r24.xyz = cb7[r19.y+34].xyw * r1.zzz + r24.xyz; - r24.xyz = cb7[r19.y+35].xyw + r24.xyz; - r24.xy = saturate(r24.xy / r24.zz); - r24.xy = r24.xy * cb7[r20.w+0].zw + cb7[r20.w+0].xy; - } else { - r19.y = (uint)r20.w << 2; - r29.x = dot(-r25.xyz, cb7[r19.y+32].xyz); - r29.y = dot(-r25.xyz, cb7[r19.y+33].xyz); - r29.z = dot(-r25.xyz, cb7[r19.y+34].xyz); - r19.y = cmp(abs(r29.x) < abs(r29.y)); - r19.y = r19.y ? 0.000000 : 0; - r20.y = dot(abs(r29.xy), icb[r19.y+0].xy); - r20.y = cmp(r20.y < abs(r29.z)); - r19.y = r20.y ? 2 : r19.y; - r20.y = dot(r29.xyz, icb[r19.y+0].xyz); - r20.y = cmp(r20.y < 0); - bitmask.y = ((~(-1 << 31)) << 1) & 0xffffffff; r19.y = (((uint)r19.y << 1) & bitmask.y) | ((uint)r20.y & ~bitmask.y); - r20.y = (uint)r19.y >> 1; - r20.y = dot(r29.xyz, icb[r20.y+0].xyz); - r23.z = 0.000244140625 / cb7[r20.w+0].w; - r23.z = 0.5 + -r23.z; - r24.z = (uint)r19.y; - r24.w = cmp((uint)r19.y < 2); - r24.w = r24.w ? 0.000000 : 0; - r24.w = dot(r29.xz, icb[r24.w+0].xz); - r24.w = icb[r19.y+4].z * r24.w; - r24.w = r24.w / abs(r20.y); - r24.z = r24.w * r23.z + r24.z; - r24.z = 0.5 + r24.z; - r25.x = saturate(0.166666672 * r24.z); - r24.z = -1 + (int)icb[r19.y+4].y; - r24.z = dot(r29.yz, icb[r24.z+0].xy); - r19.y = icb[r19.y+4].w * r24.z; - r19.y = r19.y / abs(r20.y); - r25.y = saturate(-r19.y * r23.z + 0.5); - r24.xy = r25.xy * cb7[r20.w+0].zw + cb7[r20.w+0].xy; - } - r19.y = t23.SampleLevel(s1_s, r24.xy, 0).x; - r13.x = r19.y * r13.x; - } - r19.y = cmp(0 < r13.x); - if (r19.y != 0) { - if (r21.w == 0) { - r20.y = (int)cb5[r23.y+6].x; - } else { - r24.xyz = -cb5[r23.x+6].xyz + r1.xyz; - r25.xyz = cmp(abs(r24.yzz) < abs(r24.xxy)); - r20.w = r25.y ? r25.x : 0; - r24.xyz = cmp(float3(0,0,0) < r24.xyz); - r21.w = asuint(cb5[r12.w+6].w) >> 24; - if (8 == 0) r25.x = 0; else if (8+16 < 32) { r25.x = (uint)cb5[r12.w+6].w << (32-(8 + 16)); r25.x = (uint)r25.x >> (32-8); } else r25.x = (uint)cb5[r12.w+6].w >> 16; - if (8 == 0) r25.y = 0; else if (8+8 < 32) { r25.y = (uint)cb5[r12.w+6].w << (32-(8 + 8)); r25.y = (uint)r25.y >> (32-8); } else r25.y = (uint)cb5[r12.w+6].w >> 8; - r21.w = r24.x ? r21.w : r25.x; - r23.z = 255 & asint(cb5[r12.w+6].w); - r23.z = r24.y ? r25.y : r23.z; - if (8 == 0) r24.x = 0; else if (8+8 < 32) { r24.x = (uint)cb5[r23.y+6].x << (32-(8 + 8)); r24.x = (uint)r24.x >> (32-8); } else r24.x = (uint)cb5[r23.y+6].x >> 8; - r24.y = 255 & asint(cb5[r23.y+6].x); - r24.x = r24.z ? r24.x : r24.y; - r23.z = r25.z ? r23.z : r24.x; - r20.w = r20.w ? r21.w : r23.z; - r21.w = cmp((int)r20.w < 80); - r20.y = r21.w ? r20.w : -1; - } - r24.xyz = r26.xyz * cb6[r20.y+288].xxx + r1.xyz; - r20.w = cb6[r20.y+288].y * 5; - r24.xyz = r6.xyz * r20.www + r24.xyz; - r20.w = (uint)r20.y << 2; - r25.xyzw = cb6[r20.w+65].xyzw * r24.yyyy; - r25.xyzw = cb6[r20.w+64].xyzw * r24.xxxx + r25.xyzw; - r24.xyzw = cb6[r20.w+66].xyzw * r24.zzzz + r25.xyzw; - r24.xyzw = cb6[r20.w+67].xyzw + r24.xyzw; - r24.xyz = r24.xyz / r24.www; - r25.xyz = cmp(float3(0,0,0) >= r24.xyz); - r29.xyz = cmp(r24.xyz >= float3(1,1,1)); - r30.xy = cb6[r20.y+344].zw + -cb6[r20.y+344].xy; - r24.xy = r24.xy * r30.xy + cb6[r20.y+344].xy; - r30.xy = r24.xy * cb6[400].zw + float2(0.5,0.5); - r30.xy = floor(r30.xy); - r24.xy = r24.xy * cb6[400].zw + -r30.xy; - r31.xyzw = float4(0.5,1,0.5,1) + r24.xxyy; - r32.xyzw = r31.xxzz * r31.xxzz; - r30.zw = float2(1,1) + -r24.xy; - r31.xz = min(float2(0,0), r24.xy); - r33.xy = max(float2(0,0), r24.xy); - r34.xy = float2(0.159999996,0.159999996) * r30.zw; - r33.xy = -r33.xy * r33.xy + r31.yw; - r33.xy = float2(1,1) + r33.xy; - r33.xy = float2(0.159999996,0.159999996) * r33.xy; - r32.xz = float2(0.0799999982,0.0799999982) * r32.xz; - r24.xy = r32.yw * float2(0.5,0.5) + -r24.xy; - r35.xy = float2(0.159999996,0.159999996) * r24.xy; - r24.xy = -r31.xz * r31.xz + r30.zw; - r24.xy = float2(1,1) + r24.xy; - r36.xy = float2(0.159999996,0.159999996) * r24.xy; - r24.xy = float2(0.159999996,0.159999996) * r31.yw; - r35.z = r36.x; - r35.w = r24.x; - r34.z = r33.x; - r34.w = r32.x; - r31.xyzw = r35.zwxz + r34.zwxz; - r36.z = r35.y; - r36.w = r24.y; - r33.z = r34.y; - r33.w = r32.z; - r24.xyw = r36.zyw + r33.zyw; - r32.xyz = r34.xzw / r31.zwy; - r32.xyz = float3(-2.5,-0.5,1.5) + r32.xyz; - r32.xyz = cb6[400].xxx * r32.xyz; - r33.xyz = r33.zyw / r24.xyw; - r33.xyz = float3(-2.5,-0.5,1.5) + r33.xyz; - r33.xyw = cb6[400].yyy * r33.xyz; - r34.xyzw = r31.zwyz * r24.xxxy; - r32.w = r33.x; - r35.xyzw = r30.xyxy * cb6[400].xyxy + r32.xwyw; - r20.w = t11.SampleCmpLevelZero(s4_s, r35.xy, r24.z).x; - r21.w = t11.SampleCmpLevelZero(s4_s, r35.zw, r24.z).x; - r21.w = r34.y * r21.w; - r20.w = r34.x * r20.w + r21.w; - r30.zw = r30.xy * cb6[400].xy + r32.zw; - r21.w = t11.SampleCmpLevelZero(s4_s, r30.zw, r24.z).x; - r20.w = r34.z * r21.w + r20.w; - r33.z = r32.x; - r35.xyzw = r30.xyxy * cb6[400].xyxy + r33.zyzw; - r21.w = t11.SampleCmpLevelZero(s4_s, r35.xy, r24.z).x; - r20.w = r34.w * r21.w + r20.w; - r34.xyzw = r31.xyzw * r24.yyww; - r33.xz = r32.yz; - r32.xyzw = r30.xyxy * cb6[400].xyxy + r33.xyzy; - r21.w = t11.SampleCmpLevelZero(s4_s, r32.xy, r24.z).x; - r20.w = r34.x * r21.w + r20.w; - r21.w = t11.SampleCmpLevelZero(s4_s, r32.zw, r24.z).x; - r20.w = r34.y * r21.w + r20.w; - r21.w = t11.SampleCmpLevelZero(s4_s, r35.zw, r24.z).x; - r20.w = r34.z * r21.w + r20.w; - r21.w = cmp((int)r20.y >= 0); - r25.xyz = (int3)r25.xyz | (int3)r29.xyz; - r23.z = (int)r25.y | (int)r25.x; - r23.z = (int)r25.z | (int)r23.z; - r24.x = (int)r24.z & 0x7fffffff; - r24.x = cmp(0x7f800000 < (uint)r24.x); - r23.z = (int)r23.z | (int)r24.x; - r25.xyzw = r30.xyxy * cb6[400].xyxy + r33.xwzw; - r24.x = t11.SampleCmpLevelZero(s4_s, r25.xy, r24.z).x; - r20.w = r34.w * r24.x + r20.w; - r24.x = r31.y * r24.w; - r24.y = t11.SampleCmpLevelZero(s4_s, r25.zw, r24.z).x; - r20.w = r24.x * r24.y + r20.w; - r20.w = -1 + r20.w; - r20.y = cb6[r20.y+288].w * r20.w + 1; - r20.y = r23.z ? 1 : r20.y; - r20.y = r21.w ? r20.y : 1; - } else { - r20.y = 1; - } - if (r22.w != 0) { - r20.w = dot(r15.xyz, r27.xyz); - r21.w = saturate(cb5[r12.w+6].z * r19.z); - r21.w = r21.w * 0.5 + r3.w; - r21.w = min(1, r21.w); - r21.w = r3.w / r21.w; - r24.xyz = r15.xyz * r20.www + -r27.xyz; - r22.w = dot(r28.xyz, r24.xyz); - r20.w = r20.w * r20.w; - r20.w = cb5[r12.w+6].z * cb5[r12.w+6].z + -r20.w; - r20.w = saturate(r22.w / r20.w); - r24.xyz = r27.xyz * r20.www + r28.xyz; - r20.w = dot(r24.xyz, r24.xyz); - r20.w = rsqrt(r20.w); - r26.xyz = r24.xyz * r20.www; - } else { - r21.w = 1; - } - if (r19.y != 0) { - r19.y = saturate(cb5[r16.w+6].y * r19.z); - r24.xyz = r3.xyz * r2.www + r26.xyz; - r19.z = dot(r24.xyz, r24.xyz); - r19.z = max(6.10351562e-05, r19.z); - r19.z = rsqrt(r19.z); - r24.xyz = r24.xyz * r19.zzz; - r19.z = saturate(dot(r6.xyz, r24.xyz)); - r20.w = saturate(dot(r5.xyz, r24.xyz)); - r22.w = cmp(0 < r19.y); - r19.y = r19.y * r19.y; - r23.z = r20.w * 3.5999999 + 0.400000006; - r19.y = r19.y / r23.z; - r19.y = r11.w * r11.w + r19.y; - r19.y = min(1, r19.y); - r19.y = r22.w ? r19.y : r3.w; - r19.y = r19.y * r19.y; - r22.w = r19.z * r19.y + -r19.z; - r19.z = r22.w * r19.z + 1; - r20.w = 1 + -r20.w; - r22.w = r20.w * r20.w; - r22.w = r22.w * r22.w; - r23.z = r22.w * r20.w; - r20.w = -r22.w * r20.w + 1; - r24.xyz = r7.xyz * r20.www + r23.zzz; - r19.z = r19.z * r19.z; - r19.z = r19.y / r19.z; - r19.z = r19.z * r21.w; - r20.w = -r11.x * r19.y + r11.x; - r20.w = r20.w * r11.x + r19.y; - r20.w = sqrt(r20.w); - r21.w = -r20.x * r19.y + r20.x; - r19.y = r21.w * r20.x + r19.y; - r19.y = sqrt(r19.y); - r19.y = r19.y * r11.x; - r19.y = r20.x * r20.w + r19.y; - r19.y = 9.99999975e-05 + r19.y; - r19.y = 0.5 / r19.y; - r19.y = r19.z * r19.y; - r24.xyz = r24.xyz * r19.yyy; - r24.xyz = min(float3(2048,2048,2048), r24.xyz); - r19.yz = r20.xz * float2(0.96875,0.96875) + float2(0.015625,0.015625); - r19.y = t15.SampleLevel(s1_s, r19.yz, 0).x; - r19.y = r19.y * r5.w; - r19.y = r19.y * r0.z; - r19.y = r19.y / r4.w; - r25.xyz = r19.yyy * r17.xyz; - r25.xyz = r25.xyz / r18.xyz; - r24.xyz = r25.xyz + r24.xyz; - r24.xyz = cb5[r16.w+6].zzz * r24.xyz; - r24.xyz = max(float3(0,0,0), r24.xyz); - r24.xyz = min(float3(1000,1000,1000), r24.xyz); - r25.xyz = r20.xxx * r9.xyw; - r24.xyz = r24.xyz * r20.xxx + r25.xyz; - r25.xyz = cb5[r19.x+6].xyz * r13.xxx; - r20.xyw = r25.xyz * r20.yyy; - r20.xyw = r20.xyw * r17.www; - r20.xyw = r24.xyz * r20.xyw; - } else { - r20.xyw = float3(0,0,0); - } - } else { - if (r18.w == 0) { - r13.x = cb5[r12.w+6].y * 0.5 + 0.5; - r24.x = -abs(cb5[r12.w+6].x) + r13.x; - r24.y = cb5[r12.w+6].y + -r24.x; - r13.x = 1 + -abs(r24.x); - r13.x = r13.x + -abs(r24.y); - r13.x = max(0.00048828125, r13.x); - r17.w = cmp(cb5[r12.w+6].x >= 0); - r24.z = r17.w ? r13.x : -r13.x; - r13.x = dot(r24.xyz, r24.xyz); - r13.x = rsqrt(r13.x); - r24.xyz = r24.xyz * r13.xxx; - r25.xyz = cb5[r23.x+6].xyz + -r1.xyz; - r13.x = dot(r25.xyz, r25.xyz); - r17.w = rsqrt(r13.x); - r26.xyz = r25.xyz * r17.www; - r16.w = (int)cb5[r16.w+6].w; - r27.xyz = cb5[r12.w+6].zzz * r24.xyz; - r28.xyz = -r27.xyz * float3(0.5,0.5,0.5) + r25.xyz; - r27.xyz = r27.xyz * float3(0.5,0.5,0.5) + r25.xyz; - r17.w = (uint)cb5[r19.x+6].w; - r17.w = (int)r17.w & 1; - r18.w = cmp((int)r17.w == 0); - r18.w = ~(int)r18.w; - r19.x = cmp(0 < cb5[r12.w+6].z); - r18.w = r18.w ? r19.x : 0; - r19.x = dot(r28.xyz, r28.xyz); - r19.y = dot(r27.xyz, r27.xyz); - r19.xy = sqrt(r19.xy); - r19.z = dot(r28.xyz, r27.xyz); - r19.x = r19.x * r19.y + r19.z; - r19.x = r19.x * 0.5 + 1; - r19.x = 1 / r19.x; - r19.x = r18.w ? r19.x : 1; - r19.y = cmp(cb5[r23.w+6].w < 0); - if (r19.y != 0) { - r19.y = cb5[r23.x+6].w * cb5[r23.x+6].w; - r19.y = r19.y * r13.x; - r19.y = -r19.y * r19.y + 1; - r19.y = max(0, r19.y); - r13.x = 1 + r13.x; - r13.x = 1 / r13.x; - r19.z = r18.w ? 1.000000 : 0; - r21.w = r19.x + -r13.x; - r13.x = r19.z * r21.w + r13.x; - r19.y = r19.y * r19.y; - r13.x = r19.y * r13.x; - } else { - r27.xyz = cb5[r23.x+6].www * r25.xyz; - r19.y = dot(r27.xyz, r27.xyz); - r19.y = min(1, r19.y); - r19.y = 1 + -r19.y; - r19.y = log2(r19.y); - r19.y = cb5[r23.w+6].w * r19.y; - r19.y = exp2(r19.y); - r13.x = r19.x * r19.y; - } - r19.x = dot(r26.xyz, -r24.xyz); - r19.x = -cb5[r12.w+6].z + r19.x; - r19.x = saturate(cb5[r12.w+6].w * r19.x); - r19.x = r19.x * r19.x; - r19.x = r17.w ? 1 : r19.x; - r13.x = r19.x * r13.x; - r18.w = ~(int)r18.w; - r19.x = cmp((int)r16.w >= 0); - r18.w = r18.w ? r19.x : 0; - if (r18.w != 0) { - if (r17.w == 0) { - r18.w = (uint)r16.w << 2; - r19.xyz = cb7[r18.w+33].xyw * r1.yyy; - r19.xyz = cb7[r18.w+32].xyw * r1.xxx + r19.xyz; - r19.xyz = cb7[r18.w+34].xyw * r1.zzz + r19.xyz; - r19.xyz = cb7[r18.w+35].xyw + r19.xyz; - r19.xy = saturate(r19.xy / r19.zz); - r19.xy = r19.xy * cb7[r16.w+0].zw + cb7[r16.w+0].xy; - } else { - r18.w = (uint)r16.w << 2; - r24.x = dot(-r25.xyz, cb7[r18.w+32].xyz); - r24.y = dot(-r25.xyz, cb7[r18.w+33].xyz); - r24.z = dot(-r25.xyz, cb7[r18.w+34].xyz); - r18.w = cmp(abs(r24.x) < abs(r24.y)); - r18.w = r18.w ? 0.000000 : 0; - r19.z = dot(abs(r24.xy), icb[r18.w+0].xy); - r19.z = cmp(r19.z < abs(r24.z)); - r18.w = r19.z ? 2 : r18.w; - r19.z = dot(r24.xyz, icb[r18.w+0].xyz); - r19.z = cmp(r19.z < 0); - bitmask.w = ((~(-1 << 31)) << 1) & 0xffffffff; r18.w = (((uint)r18.w << 1) & bitmask.w) | ((uint)r19.z & ~bitmask.w); - r19.z = (uint)r18.w >> 1; - r19.z = dot(r24.xyz, icb[r19.z+0].xyz); - r21.w = 0.000244140625 / cb7[r16.w+0].w; - r21.w = 0.5 + -r21.w; - r22.w = (uint)r18.w; - r23.z = cmp((uint)r18.w < 2); - r23.z = r23.z ? 0.000000 : 0; - r23.z = dot(r24.xz, icb[r23.z+0].xz); - r23.z = icb[r18.w+4].z * r23.z; - r23.z = r23.z / abs(r19.z); - r22.w = r23.z * r21.w + r22.w; - r22.w = 0.5 + r22.w; - r25.x = saturate(0.166666672 * r22.w); - r22.w = -1 + (int)icb[r18.w+4].y; - r22.w = dot(r24.yz, icb[r22.w+0].xy); - r18.w = icb[r18.w+4].w * r22.w; - r18.w = r18.w / abs(r19.z); - r25.y = saturate(-r18.w * r21.w + 0.5); - r19.xy = r25.xy * cb7[r16.w+0].zw + cb7[r16.w+0].xy; - } - r16.w = t23.SampleLevel(s1_s, r19.xy, 0).x; - r13.x = r16.w * r13.x; - } - r13.x = cmp(0 < r13.x); - if (r13.x != 0) { - if (r17.w == 0) { - r13.x = (int)cb5[r23.y+6].x; - } else { - r19.xyz = -cb5[r23.x+6].xyz + r1.xyz; - r23.xzw = cmp(abs(r19.yzz) < abs(r19.xxy)); - r16.w = r23.z ? r23.x : 0; - r19.xyz = cmp(float3(0,0,0) < r19.xyz); - r17.w = asuint(cb5[r12.w+6].w) >> 24; - if (8 == 0) r23.x = 0; else if (8+16 < 32) { r23.x = (uint)cb5[r12.w+6].w << (32-(8 + 16)); r23.x = (uint)r23.x >> (32-8); } else r23.x = (uint)cb5[r12.w+6].w >> 16; - if (8 == 0) r23.z = 0; else if (8+8 < 32) { r23.z = (uint)cb5[r12.w+6].w << (32-(8 + 8)); r23.z = (uint)r23.z >> (32-8); } else r23.z = (uint)cb5[r12.w+6].w >> 8; - r17.w = r19.x ? r17.w : r23.x; - r12.w = 255 & asint(cb5[r12.w+6].w); - r12.w = r19.y ? r23.z : r12.w; - if (8 == 0) r18.w = 0; else if (8+8 < 32) { r18.w = (uint)cb5[r23.y+6].x << (32-(8 + 8)); r18.w = (uint)r18.w >> (32-8); } else r18.w = (uint)cb5[r23.y+6].x >> 8; - r19.x = 255 & asint(cb5[r23.y+6].x); - r18.w = r19.z ? r18.w : r19.x; - r12.w = r23.w ? r12.w : r18.w; - r12.w = r16.w ? r17.w : r12.w; - r16.w = cmp((int)r12.w < 80); - r13.x = r16.w ? r12.w : -1; - } - r19.xyz = r26.xyz * cb6[r13.x+288].xxx + r1.xyz; - r12.w = cb6[r13.x+288].y * 5; - r19.xyz = r6.xyz * r12.www + r19.xyz; - r12.w = (uint)r13.x << 2; - r23.xyzw = cb6[r12.w+65].xyzw * r19.yyyy; - r23.xyzw = cb6[r12.w+64].xyzw * r19.xxxx + r23.xyzw; - r23.xyzw = cb6[r12.w+66].xyzw * r19.zzzz + r23.xyzw; - r23.xyzw = cb6[r12.w+67].xyzw + r23.xyzw; - r19.xyz = r23.xyz / r23.www; - r23.xyz = cmp(float3(0,0,0) >= r19.xyz); - r24.xyz = cmp(r19.xyz >= float3(1,1,1)); - r25.xy = cb6[r13.x+344].zw + -cb6[r13.x+344].xy; - r19.xy = r19.xy * r25.xy + cb6[r13.x+344].xy; - r25.xy = r19.xy * cb6[400].zw + float2(0.5,0.5); - r25.xy = floor(r25.xy); - r19.xy = r19.xy * cb6[400].zw + -r25.xy; - r26.xyzw = float4(0.5,1,0.5,1) + r19.xxyy; - r27.xyzw = r26.xxzz * r26.xxzz; - r25.zw = float2(1,1) + -r19.xy; - r26.xz = min(float2(0,0), r19.xy); - r28.xy = max(float2(0,0), r19.xy); - r29.xy = float2(0.159999996,0.159999996) * r25.zw; - r28.xy = -r28.xy * r28.xy + r26.yw; - r28.xy = float2(1,1) + r28.xy; - r28.xy = float2(0.159999996,0.159999996) * r28.xy; - r27.xz = float2(0.0799999982,0.0799999982) * r27.xz; - r19.xy = r27.yw * float2(0.5,0.5) + -r19.xy; - r30.xy = float2(0.159999996,0.159999996) * r19.xy; - r19.xy = -r26.xz * r26.xz + r25.zw; - r19.xy = float2(1,1) + r19.xy; - r31.xy = float2(0.159999996,0.159999996) * r19.xy; - r19.xy = float2(0.159999996,0.159999996) * r26.yw; - r30.z = r31.x; - r30.w = r19.x; - r29.z = r28.x; - r29.w = r27.x; - r26.xyzw = r30.zwxz + r29.zwxz; - r31.z = r30.y; - r31.w = r19.y; - r28.z = r29.y; - r28.w = r27.z; - r27.xyz = r31.zyw + r28.zyw; - r29.xyz = r29.xzw / r26.zwy; - r29.xyz = float3(-2.5,-0.5,1.5) + r29.xyz; - r29.xyz = cb6[400].xxx * r29.xyz; - r28.xyz = r28.zyw / r27.xyz; - r28.xyz = float3(-2.5,-0.5,1.5) + r28.xyz; - r28.xyw = cb6[400].yyy * r28.xyz; - r30.xyzw = r27.xxxy * r26.zwyz; - r29.w = r28.x; - r31.xyzw = r25.xyxy * cb6[400].xyxy + r29.xwyw; - r12.w = t11.SampleCmpLevelZero(s4_s, r31.xy, r19.z).x; - r16.w = t11.SampleCmpLevelZero(s4_s, r31.zw, r19.z).x; - r16.w = r30.y * r16.w; - r12.w = r30.x * r12.w + r16.w; - r19.xy = r25.xy * cb6[400].xy + r29.zw; - r16.w = t11.SampleCmpLevelZero(s4_s, r19.xy, r19.z).x; - r12.w = r30.z * r16.w + r12.w; - r28.z = r29.x; - r31.xyzw = r25.xyxy * cb6[400].xyxy + r28.zyzw; - r16.w = t11.SampleCmpLevelZero(s4_s, r31.xy, r19.z).x; - r12.w = r30.w * r16.w + r12.w; - r30.xyzw = r27.yyzz * r26.xyzw; - r28.xz = r29.yz; - r29.xyzw = r25.xyxy * cb6[400].xyxy + r28.xyzy; - r16.w = t11.SampleCmpLevelZero(s4_s, r29.xy, r19.z).x; - r12.w = r30.x * r16.w + r12.w; - r16.w = t11.SampleCmpLevelZero(s4_s, r29.zw, r19.z).x; - r12.w = r30.y * r16.w + r12.w; - r16.w = t11.SampleCmpLevelZero(s4_s, r31.zw, r19.z).x; - r12.w = r30.z * r16.w + r12.w; - r16.w = cmp((int)r13.x >= 0); - r23.xyz = (int3)r23.xyz | (int3)r24.xyz; - r17.w = (int)r23.y | (int)r23.x; - r17.w = (int)r23.z | (int)r17.w; - r18.w = (int)r19.z & 0x7fffffff; - r18.w = cmp(0x7f800000 < (uint)r18.w); - r17.w = (int)r17.w | (int)r18.w; - r23.xyzw = r25.xyxy * cb6[400].xyxy + r28.xwzw; - r18.w = t11.SampleCmpLevelZero(s4_s, r23.xy, r19.z).x; - r12.w = r30.w * r18.w + r12.w; - r18.w = r27.z * r26.y; - r19.x = t11.SampleCmpLevelZero(s4_s, r23.zw, r19.z).x; - r12.w = r18.w * r19.x + r12.w; - r12.w = -1 + r12.w; - r12.w = cb6[r13.x+288].w * r12.w + 1; - r12.w = r17.w ? 1 : r12.w; - r12.w = r16.w ? r12.w : 1; - } else { - r12.w = 1; - } - } else { - r12.w = 1; - } - r11.y = r12.w * r11.y; - r20.xyw = float3(0,0,0); - } - r22.xyz = r22.xyz + r20.xyw; - r11.z = r15.w; - } - r6.w = r11.y; - r21.xyz = r22.xyz + r21.xyz; - r7.w = (int)r7.w + 1; - } - r0.x = dot(r2.xyz, float3(0.212672904,0.715152204,0.0721750036)); - r1.xzw = r2.xyz + -r0.xxx; - r0.xyz = cb0[184].www * r1.xzw + r0.xxx; - - // Reduce clustered light contribution on glass - if (GLASS_TRANSPARENCY > 0.5f) { - r21.xyz *= 0.5f; - } - - r1.xzw = r21.xyz * r6.www + r16.xyz; - r2.xyz = cb2[21].xyz * cb2[20].zzz; - r2.w = 1 + -r10.w; - r3.x = -cb2[20].y + 1; - r3.x = max(0.00999999978, r3.x); - r2.w = saturate(r2.w / r3.x); - r2.xyz = r8.xyz * r2.xyz + -r1.xzw; - r1.xzw = r2.www * r2.xyz + r1.xzw; - r0.xyz = r0.xyz * cb0[184].xyz + r1.xzw; - - // Apply glass brightness reduction - if (GLASS_TRANSPARENCY > 0.5f) { - r0.xyz *= 0.65f; - } - r1.x = r1.y * cb0[156].w + cb0[157].w; - r1.z = r0.w * cb0[154].w + -cb0[153].w; - r1.xz = max(float2(0.00999999978,0), r1.xz); - r1.w = -1.44269502 * r1.x; - r1.w = exp2(r1.w); - r1.w = 1 + -r1.w; - r1.x = r1.w / r1.x; - r1.w = r1.y * cb0[156].w + cb0[158].w; - r1.w = 1.44269502 * r1.w; - r1.w = exp2(r1.w); - r1.x = r1.x * r1.w; - r1.x = -r1.z * r1.x; - r1.xzw = cb0[155].xyz * r1.xxx; - r1.xzw = float3(1.44269502,1.44269502,1.44269502) * r1.xzw; - r1.xzw = exp2(r1.xzw); - r2.x = dot(-r5.xyz, cb0[154].xyz); - r2.y = cb0[155].w * cb0[155].w + 1; - r2.z = dot(r2.xx, cb0[155].ww); - r2.y = r2.y + -r2.z; - r2.z = cmp(0 < cb0[163].z); - if (r2.z != 0) { - r14.w = 7 & asint(cb0[108].w); - r3.xyz = mad((int3)r14.xyw, int3(0x19660d,0x19660d,0x19660d), int3(0x3c6ef35f,0x3c6ef35f,0x3c6ef35f)); - r2.z = mad((int)r3.y, (int)r3.z, (int)r3.x); - r2.w = mad((int)r3.z, (int)r2.z, (int)r3.y); - r3.x = mad((int)r2.z, (int)r2.w, (int)r3.z); - r6.x = mad((int)r2.w, (int)r3.x, (int)r2.z); - r2.z = dot(-r5.xyz, -r4.xyz); - r3.y = -cb0[44].y + r1.y; - r3.z = cmp(5.96046448e-08 < r2.z); - r2.z = 1 / r2.z; - r2.z = r3.z ? r2.z : 0; - r2.z = cb0[163].w * r2.z; - r3.z = 1 / r0.w; - r3.w = r3.z * r2.z; - r4.x = r3.w * r3.y + cb0[44].y; - r3.y = -r3.w * r3.y + r3.y; - r3.w = cb0[159].z * r3.y; - r3.y = cb0[162].x * r3.y; - r3.yw = max(float2(-127,-127), r3.yw); - r4.y = -cb0[159].x + r4.x; - r4.y = cb0[159].z * r4.y; - r4.y = max(-127, r4.y); - r4.y = exp2(-r4.y); - r4.y = cb0[159].y * r4.y; - r4.z = cmp(5.96046448e-08 < abs(r3.w)); - r4.w = exp2(-r3.w); - r4.w = 1 + -r4.w; - r4.w = r4.w / r3.w; - r3.w = -r3.w * 0.240226507 + 0.693147182; - r3.w = r4.z ? r4.w : r3.w; - r4.x = -cb0[162].z + r4.x; - r4.x = cb0[162].x * r4.x; - r4.x = max(-127, r4.x); - r4.x = exp2(-r4.x); - r4.x = cb0[162].y * r4.x; - r4.z = cmp(5.96046448e-08 < abs(r3.y)); - r4.w = exp2(-r3.y); - r4.w = 1 + -r4.w; - r4.w = r4.w / r3.y; - r3.y = -r3.y * 0.240226507 + 0.693147182; - r3.y = r4.z ? r4.w : r3.y; - r3.y = r4.x * r3.y; - r3.y = r4.y * r3.w + r3.y; - r2.z = -r2.z * r3.z + 1; - r2.z = r2.z * r0.w; - r2.z = r3.y * r2.z; - r2.z = exp2(-r2.z); - r2.z = min(1, r2.z); - r2.z = max(cb0[161].w, r2.z); - r3.yz = saturate(r0.ww * cb0[160].yw + cb0[160].xz); - r2.z = r3.y + r2.z; - r2.z = r2.z + r3.z; - r2.z = min(1, r2.z); - r6.y = mad((int)r3.x, (int)r6.x, (int)r2.w); - r3.xy = (uint2)r6.xy >> int2(16,16); - r3.xy = (uint2)r3.xy; - r3.xy = r3.xy * float2(3.05180438e-05,3.05180438e-05) + float2(-1,-1); - r3.xy = r3.xy * cb0[167].ww + r13.zw; - r3.xy = cb0[165].xy * r3.xy; - r2.w = r14.z * cb0[164].x + cb0[164].y; - r2.w = log2(r2.w); - r2.w = cb0[164].z * r2.w; - r3.z = r2.w / cb0[163].z; - r3.xyzw = t22.SampleLevel(s1_s, r3.xyz, 0).xyzw; - r2.w = -cb0[166].z + r14.z; - r2.w = saturate(1000000 * r2.w); - r3.xyzw = float4(-0,-0,-0,-1) + r3.xyzw; - r3.xyzw = r2.wwww * r3.xyzw + float4(0,0,0,1); - r2.w = 1 + -r2.z; - r4.xyz = cb0[161].xyz * r2.www; - r3.xyz = r4.xyz * r3.www + r3.xyz; - r2.z = r3.w * r2.z; - } else { - r1.y = -cb0[44].y + r1.y; - r2.w = cb0[159].z * r1.y; - r2.w = max(-127, r2.w); - r1.y = cb0[162].x * r1.y; - r1.y = max(-127, r1.y); - r3.w = -cb0[159].x + cb0[44].y; - r3.w = cb0[159].z * r3.w; - r3.w = max(-127, r3.w); - r3.w = exp2(-r3.w); - r3.w = cb0[159].y * r3.w; - r4.x = cmp(5.96046448e-08 < abs(r2.w)); - r4.y = exp2(-r2.w); - r4.y = 1 + -r4.y; - r4.y = r4.y / r2.w; - r2.w = -r2.w * 0.240226507 + 0.693147182; - r2.w = r4.x ? r4.y : r2.w; - r4.x = -cb0[162].z + cb0[44].y; - r4.x = cb0[162].x * r4.x; - r4.x = max(-127, r4.x); - r4.x = exp2(-r4.x); - r4.x = cb0[162].y * r4.x; - r4.y = cmp(5.96046448e-08 < abs(r1.y)); - r4.z = exp2(-r1.y); - r4.z = 1 + -r4.z; - r4.z = r4.z / r1.y; - r1.y = -r1.y * 0.240226507 + 0.693147182; - r1.y = r4.y ? r4.z : r1.y; - r1.y = r4.x * r1.y; - r1.y = r3.w * r2.w + r1.y; - r1.y = r1.y * r0.w; - r1.y = exp2(-r1.y); - r1.y = min(1, r1.y); - r1.y = max(cb0[161].w, r1.y); - r4.xy = saturate(r0.ww * cb0[160].yw + cb0[160].xz); - r0.w = r4.x + r1.y; - r0.w = r0.w + r4.y; - r2.z = min(1, r0.w); - r0.w = 1 + -r2.z; - r3.xyz = cb0[161].xyz * r0.www; - } - r4.xyz = r2.zzz * r1.xzw; - r0.w = r2.x * r2.x + 1; - r0.w = 0.0596831031 * r0.w; - r5.xyz = cb0[156].xyz * r0.www + cb0[158].xyz; - r0.w = -cb0[155].w * cb0[155].w + 1; - r1.y = 12.566371 * r2.y; - r2.x = sqrt(r2.y); - r1.y = r2.x * r1.y; - r1.y = max(0.00100000005, r1.y); - r0.w = r0.w / r1.y; - r2.xyw = saturate(cb0[157].xyz * r0.www + r5.xyz); - r2.xyw = float3(255,255,255) * r2.xyw; - r1.xyz = float3(1,1,1) + -r1.xzw; - r1.xyz = r2.xyw * r1.xyz; - r1.xyz = r1.xyz * r2.zzz + r3.xyz; - - // Reduce fog/atmospheric contributin - if (GLASS_TRANSPARENCY > 0.5f) { - // Boost transmittance to reduce fog density on glass - float3 boostedTrans = lerp(r4.xyz, float3(1,1,1), 0.5f); - float3 reducedInscatter = r1.xyz * 0.35f; - r10.xyz = r0.xyz * boostedTrans + reducedInscatter; - } else { - // Vanilla behavior - r10.xyz = r0.xyz * r4.xyz + r1.xyz; - } - r0.xy = float2(0.5,-0.5) * r12.xy; - r0.xy = sqrt(abs(r0.xy)); - r0.xy = sqrt(r0.xy); - r12.z = -r12.y; - r0.zw = cmp(float2(0,0) < r12.xz); - r1.xy = cmp(r12.xz < float2(0,0)); - r0.zw = (int2)-r0.zw + (int2)r1.xy; - r0.zw = (int2)r0.zw; - r0.xy = r0.xy * r0.zw; - r0.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); - r0.z = (uint)v7.x << 4; - r0.z = max(cb1[r0.z+4].y, cb1[r0.z+4].z); - r0.z = -0.100000024 + r0.z; - r0.w = cmp(0 < r0.z); - r0.z = cmp(r0.z < 0); - r0.z = (int)-r0.w + (int)r0.z; - r0.z = (int)r0.z; - r0.z = saturate(r0.z); - r1.xy = float2(0.5,0.5) + -r0.xy; - r0.xy = r0.zz * r1.xy + r0.xy; - o1.xy = min(float2(1,1), r0.xy); - r0.x = dot(r10.xyz, float3(0.212672904,0.715152204,0.0721750036)); - r0.x = r0.x * r10.w; - r0.x = max(r0.x, r10.w); - r0.x = saturate(10 * r0.x); - r0.x = cmp(0.5 < r0.x); - o1.z = r0.x ? 1.000000 : 0; - - // Modifed Glass Final Output - if (GLASS_TRANSPARENCY > 0.5f) { - float3 glassColor = r10.xyz; - float glassLuma = dot(glassColor, float3(0.2126f, 0.7152f, 0.0722f)); - float maxBrightness = 2.0f; - if (glassLuma > 0.5f) { - float compression = 0.5f + (maxBrightness - 0.5f) * (1.0f - exp(-(glassLuma - 0.5f) / (maxBrightness - 0.5f))); - float scale = compression / max(glassLuma, 0.001f); - glassColor *= scale; - } - - o0.xyz = glassColor; - o0.w = r10.w; - } else { - // Vanilla output - o0.xyzw = r10.xyzw; - } - o1.w = 0; - return; -} \ No newline at end of file diff --git a/src/games/endfield/glass/0xB317E9E1.ps_5_0.hlsl b/src/games/endfield/glass/0xB317E9E1.ps_5_0.hlsl deleted file mode 100644 index c452233966..0000000000 --- a/src/games/endfield/glass/0xB317E9E1.ps_5_0.hlsl +++ /dev/null @@ -1,1807 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Wed Feb 4 04:05:41 2026 -#include "../common.hlsl" - -Texture2D t18 : register(t18); - -Texture3D t17 : register(t17); - -Texture3D t16 : register(t16); - -Texture3D t15 : register(t15); - -Texture3D t14 : register(t14); - -Texture3D t13 : register(t13); - -Texture3D t12 : register(t12); - -Texture3D t11 : register(t11); - -Texture2D t10 : register(t10); - -Texture2D t9 : register(t9); - -Texture2D t8 : register(t8); - -Texture2D t7 : register(t7); - -Texture2D t6 : register(t6); - -Texture2D t5 : register(t5); - -Texture2D t4 : register(t4); - -Texture2D t3 : register(t3); - -Texture2D t2 : register(t2); - -Texture2DArray t1 : register(t1); - -struct t0_t { - float val[1]; -}; -StructuredBuffer t0 : register(t0); - -SamplerState s6_s : register(s6); - -SamplerState s5_s : register(s5); - -SamplerState s4_s : register(s4); - -SamplerComparisonState s3_s : register(s3); - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb7 : register(b7) -{ - float4 cb7[160]; -} - -cbuffer cb6 : register(b6) -{ - float4 cb6[715]; -} - -cbuffer cb5 : register(b5) -{ - float4 cb5[2054]; -} - -cbuffer cb4 : register(b4) -{ - float4 cb4[3]; -} - -cbuffer cb3 : register(b3) -{ - float4 cb3[259]; -} - -cbuffer cb2 : register(b2) -{ - float4 cb2[20]; -} - -cbuffer cb1 : register(b1) -{ - float4 cb1[4085]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[244]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - float2 w1 : TEXCOORD1, - float4 v2 : TEXCOORD2, - float4 v3 : TEXCOORD3, - float4 v4 : TEXCOORD4, - float4 v5 : TEXCOORD5, - float4 v6 : TEXCOORD6, - nointerpolation uint v7 : TEXCOORD7, - uint v8 : SV_IsFrontFace0, - out float4 o0 : SV_Target0, - out float4 o1 : SV_Target1) -{ - const float4 icb[] = { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} }; - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r26,r27,r28,r29,r30,r31,r32,r33,r34,r35; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = cb0[82].zw * v0.xy; - r0.xy = r0.xy * float2(2,2) + float2(-1,-1); - r1.xyzw = cb0[25].xyzw * -r0.yyyy; - r0.xyzw = cb0[24].xyzw * r0.xxxx + r1.xyzw; - r0.xyzw = cb0[26].xyzw * v0.zzzz + r0.xyzw; - r0.xyzw = cb0[27].xyzw + r0.xyzw; - r0.xyz = r0.xyz / r0.www; - r1.x = cmp(0 < v3.w); - r1.x = r1.x ? 1 : -1; - r1.y = cmp(0.000000 == cb0[86].w); - r2.xyz = cb0[44].xyz + -r0.xyz; - r3.x = cb0[0].z; - r3.y = cb0[1].z; - r3.z = cb0[2].z; - r1.yzw = r1.yyy ? r2.xyz : r3.xyz; - r2.x = dot(r1.yzw, r1.yzw); - r2.y = max(9.99999994e-09, r2.x); - r2.y = rsqrt(r2.y); - r4.xyz = r2.yyy * r1.yzw; - r2.x = r2.x * r2.y; - r2.zw = w1.xy + -v1.xy; - r5.xy = cb2[3].xx * r2.zw + v1.xy; - r5.xy = r5.xy * cb2[12].xy + cb2[12].zw; - r2.zw = cb2[2].ww * r2.zw + v1.xy; - r2.zw = r2.zw * cb2[11].xy + cb2[11].zw; - r6.xyzw = t2.SampleBias(s4_s, r2.zw, cb0[108].x).xyzw; - r2.z = cb2[3].y + cb0[108].x; - r7.xyz = t3.SampleBias(s5_s, r5.xy, r2.z).xyw; - r7.x = r7.z * r7.x; - r2.zw = r7.xy * float2(2,2) + float2(-1,-1); - r5.zw = cb2[0].xx * r2.zw; - r7.xyz = t4.SampleBias(s6_s, r5.xy, cb0[108].x).xyz; - r6.xyzw = cb2[8].xyzw * r6.xyzw; - r6.xyz = saturate(cb2[4].zzz * r6.xyz); - r8.xyz = cb2[8].xyz + -r6.xyz; - r6.xyz = cb2[4].xxx * r8.xyz + r6.xyz; - r3.w = r6.w * v4.x + -r6.w; - r8.w = cb2[19].x * r3.w + r6.w; - r3.w = cb2[0].w + -cb2[0].z; - r9.w = r7.y * r3.w + cb2[0].z; - r3.w = saturate(cb2[3].w + -1); - r4.w = cb2[4].y + -r7.x; - r3.w = r3.w * r4.w + r7.x; - r7.xyw = v3.yzx * v2.zxy; - r7.xyw = v2.yzx * v3.zxy + -r7.xyw; - r7.xyw = r7.xyw * r1.xxx; - r5.xyw = r7.xyw * r5.www; - r5.xyz = v3.xyz * r5.zzz + r5.xyw; - r1.x = dot(r2.zw, r2.zw); - r1.x = min(1, r1.x); - r1.x = 1 + -r1.x; - r1.x = sqrt(r1.x); - r1.x = max(1.00000002e-16, r1.x); - r2.z = cmp(0 < cb2[1].w); - r2.z = r2.z ? -1 : 1; - r2.z = v8.x ? 1 : r2.z; - r1.x = r2.z * r1.x; - r5.xyz = v2.xyz * r1.xxx + r5.xyz; - r1.x = dot(r5.xyz, r5.xyz); - r1.x = rsqrt(r1.x); - r5.xyz = r5.xyz * r1.xxx; - r1.x = max(9.99999994e-09, v5.z); - r2.zw = v5.xy / r1.xx; - r1.x = max(9.99999994e-09, v6.z); - r7.xy = v6.xy / r1.xx; - r10.xy = -r7.xy + r2.zw; - r1.x = cb2[0].y * 0.0799999982; - r7.xyw = -r6.xyz * r3.www + r6.xyz; - r1.x = -r1.x * r3.w + r1.x; - r6.xyz = r6.xyz * r3.www + r1.xxx; - r1.x = dot(r5.xyz, r4.xyz); - r11.xyzw = r9.wwww * float4(-1,-0.0274999999,-0.572000027,0.0219999999) + float4(1,0.0425000004,1.03999996,-0.0399999991); - r2.z = r11.x * r11.x; - r1.x = max(0, r1.x); - r2.w = -9.27999973 * r1.x; - r2.w = exp2(r2.w); - r2.z = min(r2.z, r2.w); - r2.z = r2.z * r11.x + r11.y; - r2.zw = r2.zz * float2(-1.03999996,1.03999996) + r11.zw; - r3.w = cmp(1.000000 == cb0[113].y); - r11.xyzw = cb0[241].xyzw * r0.yyyy; - r11.xyzw = cb0[240].xyzw * r0.xxxx + r11.xyzw; - r11.xyzw = cb0[242].xyzw * r0.zzzz + r11.xyzw; - r11.xyzw = cb0[243].xyzw + r11.xyzw; - r4.w = 1 / r11.w; - r11.xyz = float3(1,-1,1) * r11.xyz; - r11.xyz = r11.xyz * r4.www; - r11.xy = saturate(r11.xy * float2(0.5,0.5) + float2(0.5,0.5)); - r11.xy = cb0[82].xy * r11.xy; - r12.xy = (uint2)r11.xy; - r4.w = cb0[84].z * r11.z + cb0[84].w; - r12.z = 1 / r4.w; - r11.xy = (uint2)v0.xy; - r4.w = cb0[1].z * r0.y; - r4.w = cb0[0].z * r0.x + r4.w; - r4.w = cb0[2].z * r0.z + r4.w; - r4.w = cb0[3].z + r4.w; - r11.z = abs(r4.w); - r11.xyz = r3.www ? r12.xyz : r11.xyz; - r12.xyz = r5.xyz * float3(0.25,0.25,0.25) + r0.xyz; - r13.xyz = cb0[6].xzy * -cb0[212].www + cb0[210].xzy; - r13.xyz = -r13.xyz + r12.xzy; - r3.w = max(abs(r13.x), abs(r13.y)); - r3.w = -464 + r3.w; - r3.w = saturate(0.03125 * r3.w); - r4.w = -208 + abs(r13.z); - r4.w = saturate(0.03125 * r4.w); - r3.w = max(r4.w, r3.w); - r4.w = cmp(0.000000 != cb0[210].w); - r6.w = cmp(r3.w < 1); - r4.w = r4.w ? r6.w : 0; - if (r4.w != 0) { - r13.xyz = cb0[6].xzy * -cb0[212].yyy + cb0[210].xzy; - r13.xyz = -r13.xyz + r12.xzy; - r4.w = max(abs(r13.x), abs(r13.y)); - r4.w = -29 + r4.w; - r4.w = saturate(0.5 * r4.w); - r6.w = -13 + abs(r13.z); - r6.w = saturate(0.5 * r6.w); - r4.w = max(r6.w, r4.w); - r6.w = cmp(r4.w < 1); - if (r6.w != 0) { - r13.xyz = r12.xyz * float3(2,2,2) + float3(0.5,0.5,0.5); - r14.xyz = cb0[211].xyz * r13.xyz; - r14.xyz = floor(r14.xyz); - r13.xyz = r13.xyz * cb0[211].xyz + -r14.xyz; - r14.xyz = t11.SampleLevel(s1_s, r13.xyz, 0).xyz; - r6.w = 1 + -r4.w; - r10.w = cb0[211].y * 0.5; - r12.w = -cb0[211].y * 0.5 + 1; - r10.w = max(r13.y, r10.w); - r10.w = min(r10.w, r12.w); - r13.w = 0.333333343 * r10.w; - r15.xyzw = t12.SampleLevel(s0_s, r13.xwz, 0).xyzw; - r15.xyz = r15.xyz * float3(4,4,4) + float3(-2,-2,-2); - r16.xyz = r15.xyz * r14.xxx; - r15.xyz = float3(0,0.333333343,0) + r13.xwz; - r15.xyz = t12.SampleLevel(s0_s, r15.xyz, 0).xyz; - r15.xyz = r15.xyz * float3(4,4,4) + float3(-2,-2,-2); - r17.xyz = r15.xyz * r14.yyy; - r13.xyz = float3(0,0.666666687,0) + r13.xwz; - r13.xyz = t12.SampleLevel(s0_s, r13.xyz, 0).xyz; - r13.xyz = r13.xyz * float3(4,4,4) + float3(-2,-2,-2); - r13.xyz = r13.xyz * r14.zzz; - r10.w = r15.w * r6.w + r3.w; - r13.w = r14.z; - r13.xyzw = r13.xyzw * r6.wwww; - r17.w = r14.y; - r15.xyzw = r17.xyzw * r6.wwww; - r16.w = r14.x; - r14.xyzw = r16.xyzw * r6.wwww; - } else { - r13.xyzw = float4(0,0,0,0); - r15.xyzw = float4(0,0,0,0); - r14.xyzw = float4(0,0,0,0); - r10.w = r3.w; - } - r16.xyz = cb0[6].xzy * -cb0[212].zzz + cb0[210].xzy; - r16.xyz = -r16.xyz + r12.xzy; - r6.w = max(abs(r16.x), abs(r16.y)); - r6.w = -116 + r6.w; - r6.w = saturate(0.125 * r6.w); - r12.w = -52 + abs(r16.z); - r12.w = saturate(0.125 * r12.w); - r6.w = max(r12.w, r6.w); - r12.w = cmp(r6.w < 1); - if (r12.w != 0) { - r16.xyz = r12.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5); - r17.xyz = cb0[211].xyz * r16.xyz; - r17.xyz = floor(r17.xyz); - r16.xyz = r16.xyz * cb0[211].xyz + -r17.xyz; - r17.xyz = t13.SampleLevel(s1_s, r16.xyz, 0).xyz; - r12.w = 1 + -r6.w; - r4.w = r12.w * r4.w; - r12.w = cb0[211].y * 0.5; - r17.w = -cb0[211].y * 0.5 + 1; - r12.w = max(r16.y, r12.w); - r12.w = min(r12.w, r17.w); - r16.w = 0.333333343 * r12.w; - r18.xyzw = t14.SampleLevel(s0_s, r16.xwz, 0).xyzw; - r18.xyz = r18.xyz * float3(4,4,4) + float3(-2,-2,-2); - r19.xyz = r18.xyz * r17.xxx; - r18.xyz = float3(0,0.333333343,0) + r16.xwz; - r18.xyz = t14.SampleLevel(s0_s, r18.xyz, 0).xyz; - r18.xyz = r18.xyz * float3(4,4,4) + float3(-2,-2,-2); - r20.xyz = r18.xyz * r17.yyy; - r16.xyz = float3(0,0.666666687,0) + r16.xwz; - r16.xyz = t14.SampleLevel(s0_s, r16.xyz, 0).xyz; - r16.xyz = r16.xyz * float3(4,4,4) + float3(-2,-2,-2); - r16.xyz = r16.xyz * r17.zzz; - r10.w = r18.w * r4.w + r10.w; - r16.w = r17.z; - r13.xyzw = r16.xyzw * r4.wwww + r13.xyzw; - r20.w = r17.y; - r15.xyzw = r20.xyzw * r4.wwww + r15.xyzw; - r19.w = r17.x; - r14.xyzw = r19.xyzw * r4.wwww + r14.xyzw; - } - r4.w = cmp(0 < r6.w); - if (r4.w != 0) { - r12.xyz = r12.xyz * float3(0.125,0.125,0.125) + float3(0.5,0.5,0.5); - r16.xyz = cb0[211].xyz * r12.xyz; - r17.xyz = cb0[211].xyz * float3(0.5,0.5,0.5); - r16.xyz = floor(r16.xyz); - r12.xyz = r12.xyz * cb0[211].xyz + -r16.xyz; - r16.xyz = -cb0[211].xyz * float3(0.5,0.5,0.5) + float3(1,1,1); - r12.xyz = max(r12.xyz, r17.xyz); - r12.xyz = min(r12.xyz, r16.xyz); - r18.xyw = t15.SampleLevel(s1_s, r12.xyz, 0).yzx; - r4.w = 1 + -r3.w; - r4.w = r6.w * r4.w; - r6.w = max(r12.y, r17.y); - r6.w = min(r6.w, r16.y); - r12.w = 0.333333343 * r6.w; - r16.xyzw = t16.SampleLevel(s0_s, r12.xwz, 0).xyzw; - r17.xyz = float3(0,0.666666687,0) + r12.xwz; - r17.xyz = t16.SampleLevel(s0_s, r17.xyz, 0).xyz; - r17.xyz = r17.xyz * float3(4,4,4) + float3(-2,-2,-2); - r17.xyz = r17.xyz * r18.yyy; - r17.w = r18.y; - r13.xyzw = r17.xyzw * r4.wwww + r13.xyzw; - r12.xyz = float3(0,0.333333343,0) + r12.xwz; - r12.xyz = t16.SampleLevel(s0_s, r12.xyz, 0).xyz; - r12.xyz = r12.xyz * float3(4,4,4) + float3(-2,-2,-2); - r12.xyz = r12.xyz * r18.xxx; - r12.w = r18.x; - r15.xyzw = r12.xyzw * r4.wwww + r15.xyzw; - r12.xyz = r16.xyz * float3(4,4,4) + float3(-2,-2,-2); - r18.xyz = r12.xyz * r18.www; - r14.xyzw = r18.xyzw * r4.wwww + r14.xyzw; - r10.w = r16.w * r4.w + r10.w; - } - r4.w = saturate(r10.w * 2 + -1); - r12.x = r4.w + -r3.w; - r3.w = r4.w + r3.w; - r12.y = 0.5 * r3.w; - } else { - r13.xyzw = float4(0,0,0,0); - r15.xyzw = float4(0,0,0,0); - r14.xyzw = float4(0,0,0,0); - r12.xy = float2(0,1); - } - r16.xyzw = cb0[213].xyzw * r12.yyyx; - r16.y = r16.w * 0.5 + r16.y; - r12.zw = cb0[213].wy * r12.yx; - r16.w = r12.w * 0.375 + r12.z; - r14.xyzw = r16.xyzw + r14.xyzw; - r16.xyzw = cb0[214].xyzw * r12.yyyx; - r16.y = r16.w * 0.5 + r16.y; - r12.zw = cb0[214].wy * r12.yx; - r16.w = r12.w * 0.375 + r12.z; - r15.xyzw = r16.xyzw + r15.xyzw; - r16.xyzw = cb0[215].xyzw * r12.yyyx; - r16.y = r16.w * 0.5 + r16.y; - r12.xy = cb0[215].wy * r12.yx; - r16.w = r12.y * 0.375 + r12.x; - r12.xyzw = r16.xyzw + r13.xyzw; - r3.w = dot(r14.xyz, r5.xyz); - r3.w = r3.w + r14.w; - r13.x = max(0, r3.w); - r3.w = dot(r15.xyz, r5.xyz); - r3.w = r3.w + r15.w; - r13.y = max(0, r3.w); - r3.w = dot(r12.xyz, r5.xyz); - r3.w = r3.w + r12.w; - r13.z = max(0, r3.w); - r3.w = dot(-r4.xyz, r5.xyz); - r3.w = r3.w + r3.w; - r12.xyz = r5.xyz * -r3.www + -r4.xyz; - r3.w = cb0[113].x + -1; - r4.w = max(0.00100000005, r9.w); - r4.w = log2(r4.w); - r4.w = -r4.w * 1.20000005 + 1; - r3.w = -r4.w + r3.w; - r14.xy = (uint2)r11.xy; - r14.zw = cb3[0].ww * r14.xy; - r14.zw = floor(r14.zw); - r4.w = -cb3[2].y + r11.z; - r4.w = floor(r4.w); - r6.w = cb3[1].x + -1; - r10.w = max(0, r4.w); - r6.w = min(r10.w, r6.w); - r4.w = cmp(r6.w >= r4.w); - r10.w = r14.w * cb3[0].x + r14.z; - r10.w = (int)r10.w; - r10.w = (int)r10.w + asint(cb0[110].z); - r10.w = t0[r10.w].val[0/4]; - r6.w = (int)r6.w; - r6.w = (int)r6.w + asint(cb0[110].w); - r6.w = t0[r6.w].val[0/4]; - r6.w = (int)r6.w & (int)r10.w; - r4.w = r4.w ? r6.w : 0; - r15.xyz = cb0[111].xxx * r13.xyz; - r6.w = dot(r15.xyz, float3(0.212672904,0.715152204,0.0721750036)); - r0.w = 1; - r5.w = 1; - r15.xyz = float3(0,0,0); - r10.w = 1; - r12.w = r4.w; - r13.w = 0; - while (true) { - r14.z = cmp(0.00999999978 < r10.w); - r14.w = cmp((int)r12.w != 0); - r14.w = r14.z ? r14.w : 0; - if (r14.w != 0) { - r14.w = firstbitlow((uint)r12.w); - r15.w = 1 << (int)r14.w; - r12.w = (int)r12.w ^ (int)r15.w; - r14.w = (uint)r14.w << 3; - r16.x = dot(cb3[r14.w+6].xyzw, r0.xyzw); - r16.y = dot(cb3[r14.w+7].xyzw, r0.xyzw); - r16.z = dot(cb3[r14.w+8].xyzw, r0.xyzw); - r17.xyz = cmp(cb3[r14.w+5].xyz >= abs(r16.xyz)); - r15.w = r17.y ? r17.x : 0; - r15.w = r17.z ? r15.w : 0; - if (r15.w != 0) { - r15.w = cb3[r14.w+5].x * 0.100000001; - r17.xyz = float3(0.100000001,0.100000001,0.100000001) * abs(r16.xyz); - r17.xy = r17.xy * r17.xy; - r18.xyz = cb3[r14.w+5].xyz + -abs(r16.xyz); - r18.xyz = cb3[r14.w+9].xyz * r18.xyz; - r16.w = cmp(1.000000 == cb3[r14.w+10].x); - if (r16.w != 0) { - r19.x = dot(cb3[r14.w+6].xyz, r12.xyz); - r19.y = dot(cb3[r14.w+7].xyz, r12.xyz); - r19.z = dot(cb3[r14.w+8].xyz, r12.xyz); - r20.xyz = cb3[r14.w+5].xyz + -r16.xyz; - r20.xyz = r20.xyz / r19.xyz; - r21.xyz = -cb3[r14.w+5].xyz + -r16.xyz; - r21.xyz = r21.xyz / r19.xyz; - r22.xyz = cmp(float3(0,0,0) < r19.xyz); - r20.xyz = r22.xyz ? r20.xyz : r21.xyz; - r16.w = min(r20.x, r20.y); - r16.w = min(r16.w, r20.z); - r16.xyz = r19.xyz * r16.www + r16.xyz; - } else { - r16.xyz = r12.xyz; - } - r16.w = dot(r16.xyz, r16.xyz); - r16.w = rsqrt(r16.w); - r16.xyz = r16.xyz * r16.www; - r19.xyz = cmp(float3(0,0,0) < r16.xyz); - r20.xyz = cmp(r16.xyz < float3(0,0,0)); - r19.xyz = (int3)-r19.xyz + (int3)r20.xyz; - r19.xyz = (int3)r19.xyz; - r16.w = dot(r16.xyz, r19.xyz); - r16.xyz = r16.xyz / r16.www; - r16.z = cmp(r16.z < 0); - r19.zw = float2(1,1) + -abs(r16.yx); - r19.xy = r19.xy * r19.zw; - r16.xy = r16.zz ? r19.xy : r16.xy; - r16.z = dot(cb3[r14.w+4].xyzw, r5.xyzw); - r16.z = max(0, r16.z); - r16.z = max(9.99999975e-05, r16.z); - r16.w = min(r18.y, r18.z); - r16.w = min(r18.x, r16.w); - r17.x = r17.x + r17.y; - r17.x = r17.z * r17.z + r17.x; - r15.w = r15.w * r15.w + -r17.x; - r15.w = cb3[r14.w+9].x * r15.w; - r15.w = cb3[r14.w+9].x * r15.w; - r17.x = -cb3[r14.w+10].y + 1; - r15.w = r17.x * r15.w; - r15.w = 100 * r15.w; - r15.w = saturate(r16.w * cb3[r14.w+10].y + r15.w); - r16.w = cb3[r14.w+10].w * r15.w; - r16.xy = r16.xy * float2(0.5,0.5) + float2(0.5,0.5); - r17.xy = r16.xy * cb3[1].ww + cb3[2].ww; - r17.z = cb3[r14.w+5].w; - r17.xyz = t1.SampleLevel(s2_s, r17.xyz, r3.w).xyz; - r17.xyz = cb3[r14.w+9].www * r17.xyz; - r16.x = r6.w / r16.z; - r16.x = min(1, abs(r16.x)); - r16.x = r16.x * 2 + r6.w; - r16.y = 2 + r16.z; - r16.x = r16.x / r16.y; - r16.x = -1 + r16.x; - r16.x = r16.x * cb0[112].w + 1; - r16.xyz = r17.xyz * r16.xxx; - r16.xyz = r16.xyz * r16.www; - r15.xyz = r16.xyz * r10.www + r15.xyz; - r14.w = -r15.w * cb3[r14.w+10].w + 1; - r10.w = r14.w * r10.w; - } - r13.w = -1; - continue; - } else { - r13.w = r14.z; - break; - } - r13.w = r14.z; - } - if (r13.w != 0) { - r0.w = dot(r12.xyz, r12.xyz); - r0.w = rsqrt(r0.w); - r16.xyz = r12.xyz * r0.www; - r17.xyz = cmp(float3(0,0,0) < r16.xyz); - r18.xyz = cmp(r16.xyz < float3(0,0,0)); - r17.xyz = (int3)-r17.xyz + (int3)r18.xyz; - r17.xyz = (int3)r17.xyz; - r0.w = dot(r16.xyz, r17.xyz); - r16.xyz = r16.xyz / r0.www; - r0.w = cmp(r16.z < 0); - r14.zw = float2(1,1) + -abs(r16.yx); - r14.zw = r17.xy * r14.zw; - r14.zw = r0.ww ? r14.zw : r16.xy; - r5.w = 1; - r0.w = dot(cb3[3].xyzw, r5.xyzw); - r0.w = max(0, r0.w); - r0.w = max(9.99999975e-05, r0.w); - r14.zw = r14.zw * float2(0.5,0.5) + float2(0.5,0.5); - r16.xy = r14.zw * cb3[1].ww + cb3[2].ww; - r16.z = 0; - r16.xyz = t1.SampleLevel(s2_s, r16.xyz, r3.w).xyz; - r3.w = r6.w / r0.w; - r3.w = min(1, abs(r3.w)); - r3.w = r3.w * 2 + r6.w; - r0.w = 2 + r0.w; - r0.w = r3.w / r0.w; - r0.w = -1 + r0.w; - r0.w = r0.w * cb0[112].w + 1; - r16.xyz = r16.xyz * r0.www; - r15.xyz = r16.xyz * r10.www + r15.xyz; - } - r13.xyz = r13.xyz * r7.xyw; - r0.w = -1 + r7.z; - r0.w = cb2[1].x * r0.w + 1; - r13.xyz = r13.xyz * r0.www; - - // Reduce reflection probe intensity for glass - if (GLASS_TRANSPARENCY > 0.5f) { - r15.xyz *= 0.4f; - } - - r15.xyz = cb0[112].zzz * r15.xyz; - r15.xyz = cb0[111].yyy * r15.xyz; - r0.w = saturate(50 * r6.y); - r0.w = r0.w * r2.w; - r16.xyz = r6.xyz * r2.zzz + r0.www; - r15.xyz = r16.xyz * r15.xyz; - r13.xyz = r13.xyz * cb0[111].xxx + r15.xyz; - r0.w = cmp(cb6[35].w < 0.99000001); - if (r0.w != 0) { - r0.w = (int)cb6[35].x; - r2.z = cmp((int)r0.w == 2); - r15.xyz = r2.zzz ? cb6[20].xyz : cb0[44].xyz; - r15.xyz = -r15.xyz + r0.xyz; - r2.z = dot(r15.xyz, r15.xyz); - r2.z = cb6[34].w + -r2.z; - r2.z = saturate(cb6[34].z * r2.z); - r2.w = cmp(0 < r2.z); - if (r2.w != 0) { - r0.w = cmp(0 < (int)r0.w); - if (r0.w != 0) { - r15.xyz = -cb6[20].xyz + r0.xyz; - r16.xyz = -cb6[21].xyz + r0.xyz; - r17.xyz = -cb6[22].xyz + r0.xyz; - r18.xyz = -cb6[23].xyz + r0.xyz; - r15.x = dot(r15.xyz, r15.xyz); - r15.y = dot(r16.xyz, r16.xyz); - r15.z = dot(r17.xyz, r17.xyz); - r15.w = dot(r18.xyz, r18.xyz); - r16.x = cmp(r15.x < cb6[20].w); - r16.y = cmp(r15.y < cb6[21].w); - r16.z = cmp(r15.z < cb6[22].w); - r16.w = cmp(r15.w < cb6[23].w); - r17.xyzw = r16.xyzw ? float4(1,1,1,1) : 0; - r16.xyz = r16.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0); - r16.xyz = r17.yzw + r16.xyz; - r17.yzw = max(float3(0,0,0), r16.xyz); - r0.w = dot(r17.xyzw, float4(4,3,2,1)); - r0.w = 4 + -r0.w; - r0.w = max(0, r0.w); - r0.w = min(3, r0.w); - r2.w = 1 + r0.w; - r2.w = min(3, r2.w); - r2.w = (uint)r2.w; - r3.w = dot(r15.yzw, icb[r2.w+0].yzw); - r2.w = r3.w / cb6[r2.w+20].w; - r3.w = cmp(r2.w >= 0); - r2.w = cmp(1 >= r2.w); - r2.w = r2.w ? r3.w : 0; - if (r2.w != 0) { - r2.w = (uint)r0.w; - r14.zw = float2(2.08299994,4.8670001) + r14.xy; - r3.w = dot(r14.zw, float2(0.0671105608,0.00583714992)); - r3.w = frac(r3.w); - r3.w = 52.9829178 * r3.w; - r3.w = frac(r3.w); - r4.w = dot(r15.xyzw, icb[r2.w+0].xyzw); - r2.w = r4.w / cb6[r2.w+20].w; - r2.w = sqrt(r2.w); - r2.w = -0.899999976 + r2.w; - r2.w = 12 * r2.w; - r2.w = cmp(r2.w >= r3.w); - r2.w = r2.w ? 1.000000 : 0; - r0.w = r2.w + r0.w; - } - r2.w = dot(r5.xyz, cb5[0].xyz); - r2.w = max(0, r2.w); - r2.w = min(0.899999976, r2.w); - r2.w = 1 + -r2.w; - r3.w = (uint)r0.w; - r4.w = (uint)r3.w << 2; - r14.zw = cb6[r3.w+24].xy * r2.ww; - r2.w = max(0, r14.z); - r15.xyz = -cb5[0].xyz * r2.www + r0.xyz; - r15.xyz = r5.xyz * r14.www + r15.xyz; - r16.xyz = cb6[r4.w+1].xyz * r15.yyy; - r15.xyw = cb6[r4.w+0].xyz * r15.xxx + r16.xyz; - r15.xyz = cb6[r4.w+2].xyz * r15.zzz + r15.xyw; - r15.xyz = cb6[r4.w+3].xyz + r15.xyz; - r16.xyz = cmp(float3(0,0,0) >= r15.xyz); - r17.xyz = cmp(r15.xyz >= float3(1,1,1)); - r16.xyz = (int3)r16.xyz | (int3)r17.xyz; - r2.w = (int)r16.y | (int)r16.x; - r2.w = (int)r16.z | (int)r2.w; - r3.w = (int)r15.z & 0x7fffffff; - r3.w = cmp(0x7f800000 < (uint)r3.w); - r16.z = (int)r2.w | (int)r3.w; - r0.w = (int)r0.w; - r14.zw = r15.xy * cb6[r0.w+28].zw + cb6[r0.w+28].xy; - r15.xy = r14.zw * cb6[32].zw + float2(0.5,0.5); - r15.xy = floor(r15.xy); - r14.zw = r14.zw * cb6[32].zw + -r15.xy; - r17.xyzw = float4(0.5,1,0.5,1) + r14.zzww; - r18.xw = r17.xz * r17.xz; - r17.xz = min(float2(0,0), r14.zw); - r19.xy = max(float2(0,0), r14.zw); - r19.zw = r18.xw * float2(0.5,0.5) + -r14.zw; - r14.zw = float2(1,1) + -r14.zw; - r14.zw = -r17.xz * r17.xz + r14.zw; - r17.xy = -r19.xy * r19.xy + r17.yw; - r20.x = r19.z; - r20.y = r14.z; - r20.z = r17.x; - r20.w = r18.x; - r20.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r20.xyzw; - r18.x = r19.w; - r18.y = r14.w; - r18.z = r17.y; - r17.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r18.xyzw; - r18.xyzw = r20.xzxz + r20.ywyw; - r19.xyzw = r17.xxzz + r17.yyww; - r14.zw = r20.yw / r18.zw; - r14.zw = float2(-1.5,0.5) + r14.zw; - r20.xy = cb6[32].xx * r14.zw; - r14.zw = r17.yw / r19.yw; - r14.zw = float2(-1.5,0.5) + r14.zw; - r20.zw = cb6[32].yy * r14.zw; - r17.xyzw = r19.xyzw * r18.xyzw; - r18.xyzw = r15.xyxy * cb6[32].xyxy + r20.xzyz; - r0.w = t5.SampleCmpLevelZero(s3_s, r18.xy, r15.z).x; - r2.w = t5.SampleCmpLevelZero(s3_s, r18.zw, r15.z).x; - r2.w = r17.y * r2.w; - r0.w = r17.x * r0.w + r2.w; - r18.xyzw = r15.xyxy * cb6[32].xyxy + r20.xwyw; - r2.w = t5.SampleCmpLevelZero(s3_s, r18.xy, r15.z).x; - r0.w = r17.z * r2.w + r0.w; - r2.w = t5.SampleCmpLevelZero(s3_s, r18.zw, r15.z).x; - r0.w = r17.w * r2.w + r0.w; - r16.x = r16.z ? 1 : r0.w; - } else { - r16.xz = float2(1,0); - } - } else { - r16.xz = float2(1,0); - } - r0.w = cmp(r2.z < 1); - if (r0.w != 0) { - r0.w = dot(r5.xyz, cb5[0].xyz); - r0.w = max(0, r0.w); - r0.w = min(0.899999976, r0.w); - r0.w = 1 + -r0.w; - r14.zw = cb6[584].xy * r0.ww; - r15.xyz = -cb5[0].xyz * r14.zzz + r0.xyz; - r15.xyz = r5.xyz * r14.www + r15.xyz; - r14.zw = cb6[581].xy * r15.yy; - r14.zw = cb6[580].xy * r15.xx + r14.zw; - r14.zw = cb6[582].xy * r15.zz + r14.zw; - r14.zw = cb6[583].xy + r14.zw; - r17.xy = cmp(float2(0,0) < r14.zw); - r0.w = r17.y ? r17.x : 0; - r17.xy = cmp(r14.zw < float2(1,1)); - r2.w = r17.y ? r17.x : 0; - r0.w = (int)r0.w & (int)r2.w; - if (r0.w != 0) { - r0.w = cb6[585].z * r14.w; - r0.w = floor(r0.w); - r0.w = r0.w + r14.z; - r0.w = cb6[585].y * r0.w; - r0.w = (uint)r0.w; - r0.w = min(127, (uint)r0.w); - r2.w = 0x0000ffff & asint(cb6[r0.w+587].x); - r17.x = f16tof32(r2.w); - r2.w = cmp(r17.x >= 0); - if (r2.w != 0) { - r18.x = cb6[576].x; - r18.y = cb6[577].x; - r18.z = cb6[578].x; - r18.w = cb6[r0.w+587].y; - r15.w = 1; - r18.x = dot(r18.xyzw, r15.xyzw); - r19.x = cb6[576].y; - r19.y = cb6[577].y; - r19.z = cb6[578].y; - r19.w = cb6[r0.w+587].z; - r18.y = dot(r19.xyzw, r15.xyzw); - r19.x = cb6[576].z; - r19.y = cb6[577].z; - r19.z = cb6[578].z; - r19.w = cb6[r0.w+587].w; - r2.w = dot(r19.xyzw, r15.xyzw); - r14.zw = cmp(float2(0,0) < r18.xy); - r3.w = cmp(0 < r2.w); - r4.w = r14.w ? r14.z : 0; - r3.w = r3.w ? r4.w : 0; - r14.zw = cmp(r18.xy < float2(1,1)); - r4.w = cmp(r2.w < 1); - r5.w = r14.w ? r14.z : 0; - r4.w = r4.w ? r5.w : 0; - r3.w = r3.w ? r4.w : 0; - if (r3.w != 0) { - r0.w = asuint(cb6[r0.w+587].x) >> 16; - r17.y = f16tof32(r0.w); - r14.zw = r18.xy * cb6[584].zw + r17.xy; - r15.xy = r14.zw * cb6[586].zw + float2(0.5,0.5); - r15.xy = floor(r15.xy); - r14.zw = r14.zw * cb6[586].zw + -r15.xy; - r17.xyzw = float4(0.5,1,0.5,1) + r14.zzww; - r18.xw = r17.xz * r17.xz; - r15.zw = min(float2(0,0), r14.zw); - r17.xz = max(float2(0,0), r14.zw); - r19.xy = r18.xw * float2(0.5,0.5) + -r14.zw; - r14.zw = float2(1,1) + -r14.zw; - r14.zw = -r15.zw * r15.zw + r14.zw; - r15.zw = -r17.xz * r17.xz + r17.yw; - r17.x = r19.x; - r17.y = r14.z; - r17.z = r15.z; - r17.w = r18.x; - r17.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r17.xyzw; - r18.x = r19.y; - r18.y = r14.w; - r18.z = r15.w; - r18.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r18.xyzw; - r19.xyzw = r17.xzxz + r17.ywyw; - r20.xyzw = r18.xxzz + r18.yyww; - r14.zw = r17.yw / r19.zw; - r14.zw = float2(-1.5,0.5) + r14.zw; - r17.xy = cb6[586].xx * r14.zw; - r14.zw = r18.yw / r20.yw; - r14.zw = float2(-1.5,0.5) + r14.zw; - r17.zw = cb6[586].yy * r14.zw; - r18.xyzw = r20.xyzw * r19.xyzw; - r19.xyzw = r15.xyxy * cb6[586].xyxy + r17.xzyz; - r0.w = t8.SampleCmpLevelZero(s3_s, r19.xy, r2.w).x; - r3.w = t8.SampleCmpLevelZero(s3_s, r19.zw, r2.w).x; - r3.w = r18.y * r3.w; - r0.w = r18.x * r0.w + r3.w; - r15.xyzw = r15.xyxy * cb6[586].xyxy + r17.xwyw; - r3.w = t8.SampleCmpLevelZero(s3_s, r15.xy, r2.w).x; - r0.w = r18.z * r3.w + r0.w; - r2.w = t8.SampleCmpLevelZero(s3_s, r15.zw, r2.w).x; - r16.y = r18.w * r2.w + r0.w; - } else { - r16.y = 1; - } - } else { - r16.y = 1; - } - } else { - r16.y = 1; - } - r16.x = r16.z ? r16.y : r16.x; - } else { - r16.y = 1; - } - r0.w = r16.x + -r16.y; - r0.w = r2.z * r0.w + r16.y; - r2.z = cmp(0.00100000005 < r0.w); - if (r2.z != 0) { - r15.xyz = -cb0[173].xyz + r0.xyz; - r2.zw = cb0[176].xz * r15.yy + r15.xz; - r14.zw = cb0[174].zz * r2.zw; - r15.yw = cb0[183].ww * cb0[175].xy; - r2.zw = r2.zw * cb0[174].zz + r15.yw; - r2.z = t7.SampleLevel(s1_s, r2.zw, 0).x; - r14.zw = r14.zw * cb0[175].ww + r15.yw; - r2.w = t7.SampleLevel(s1_s, r14.zw, 0).x; - r3.w = dot(r15.xz, r15.xz); - r3.w = sqrt(r3.w); - r4.w = cb0[174].y + -cb0[174].x; - r3.w = -cb0[174].x + r3.w; - r4.w = 1 / r4.w; - r3.w = saturate(r4.w * r3.w); - r4.w = r3.w * -2 + 3; - r3.w = r3.w * r3.w; - r3.w = r4.w * r3.w; - r2.w = r2.w + -r2.z; - r2.z = r3.w * r2.w + r2.z; - r2.z = -1 + r2.z; - r2.z = cb0[175].z * r2.z + 1; - r0.w = r2.z * r0.w; - } - r2.z = cb6[35].z + -r0.w; - r0.w = cb6[35].w * r2.z + r0.w; - } else { - r0.w = cb6[35].z; - } - r0.w = min(1, r0.w); - r0.w = -1 + r0.w; - r15.x = cb6[34].x * r0.w + 1; - r0.w = cmp(0.00100000005 < r15.x); - if (r0.w != 0) { - r0.w = dot(-cb5[0].xyz, r12.xyz); - r16.xyz = cb5[0].xyz * r0.www + r12.xyz; - r0.w = cmp(r0.w < cb5[4].z); - r2.z = dot(r16.xyz, r16.xyz); - r2.z = max(6.10351562e-05, r2.z); - r2.z = rsqrt(r2.z); - r16.xyz = r16.xyz * r2.zzz; - r16.xyz = cb5[4].yyy * r16.xyz; - r16.xyz = -cb5[0].xyz * cb5[4].zzz + r16.xyz; - r2.z = dot(r16.xyz, r16.xyz); - r2.z = rsqrt(r2.z); - r16.xyz = r16.xyz * r2.zzz; - r16.xyz = r0.www ? r16.xyz : r12.xyz; - r17.xyz = r1.yzw * r2.yyy + r16.xyz; - r0.w = dot(r17.xyz, r17.xyz); - r0.w = max(6.10351562e-05, r0.w); - r0.w = rsqrt(r0.w); - r17.xyz = r17.xyz * r0.www; - r9.y = saturate(dot(r16.xyz, r5.xyz)); - r0.w = saturate(dot(r5.xyz, r17.xyz)); - r9.z = min(1, r1.x); - r2.z = r9.w * r9.w; - r2.z = r2.z * r2.z; - r2.w = r0.w * r2.z + -r0.w; - r0.w = r2.w * r0.w + 1; - r2.w = saturate(dot(r4.xyz, r17.xyz)); - r2.w = 1 + -r2.w; - r3.w = r2.w * r2.w; - r3.w = r3.w * r3.w; - r4.w = r3.w * r2.w; - r5.w = 1 + -r9.w; - r6.w = -r5.w * 0.383026004 + -0.0761947036; - r6.w = r5.w * r6.w + 1.04997003; - r5.w = r5.w * r6.w + 0.409254998; - r5.w = min(0.999000013, r5.w); - r6.w = 1 + -r5.w; - r16.xyz = float3(1,1,1) + -r6.xyz; - r16.xyz = r16.xyz * float3(0.0476190485,0.0476190485,0.0476190485) + r6.xyz; - r2.w = -r3.w * r2.w + 1; - r17.xyz = r6.xyz * r2.www + r4.www; - r0.w = r0.w * r0.w; - r0.w = r2.z / r0.w; - r14.zw = -r9.zy * r2.zz + r9.zy; - r2.zw = r14.zw * r9.zy + r2.zz; - r2.zw = sqrt(r2.zw); - r2.zw = r9.yz * r2.zw; - r2.z = r2.z + r2.w; - r2.z = 9.99999975e-05 + r2.z; - r2.z = 0.5 / r2.z; - r0.w = r2.z * r0.w; - r17.xyz = r17.xyz * r0.www; - r17.xyz = min(float3(2048,2048,2048), r17.xyz); - r18.xyzw = r9.zwyw * float4(0.96875,0.96875,0.96875,0.96875) + float4(0.015625,0.015625,0.015625,0.015625); - r0.w = t10.SampleLevel(s0_s, r18.xy, 0).x; - r2.z = t10.SampleLevel(s0_s, r18.zw, 0).x; - r0.w = r2.z * r0.w; - r0.w = r0.w * r5.w; - r0.w = r0.w / r6.w; - r18.xyz = r16.xyz * r16.xyz; - r18.xyz = r18.xyz * r0.www; - r16.xyz = -r16.xyz * r6.www + float3(1,1,1); - r16.xyz = r18.xyz / r16.xyz; - r16.xyz = r17.xyz + r16.xyz; - r16.xyz = cb5[4].xxx * r16.xyz; - r16.xyz = max(float3(0,0,0), r16.xyz); - r16.xyz = min(float3(1000,1000,1000), r16.xyz); - - // Reduce sun specular intensity on glass - if (GLASS_TRANSPARENCY > 0.5f) { - r16.xyz *= 0.5f; - } - - r17.xyz = r9.yyy * r7.xyw; - r16.xyz = r16.xyz * r9.yyy + r17.xyz; - r16.xyz = cb5[1].xyz * r16.xyz; - r15.y = 0.5; - r15.yzw = t9.SampleBias(s0_s, r15.xy, cb0[108].x).xyz; - r0.w = 1 + -r15.x; - r15.xyz = r16.xyz * r15.yzw + -r16.xyz; - r15.xyz = r0.www * r15.xyz + r16.xyz; - } else { - r15.xyz = float3(0,0,0); - } - r2.zw = float2(0.03125,0.03125) * r14.xy; - r2.zw = floor(r2.zw); - r0.w = r2.w * cb4[1].y + r2.z; - r0.w = 8 * r0.w; - r0.w = (int)r0.w; - r2.z = -cb0[85].y * cb4[2].w + r11.z; - r2.z = floor(r2.z); - r2.w = cb4[1].w + -1; - r3.w = max(0, r2.z); - r2.w = min(r3.w, r2.w); - r3.w = 8 * r2.w; - r3.w = (int)r3.w; - r2.z = cmp(r2.w >= r2.z); - r2.w = (int)r3.w + asint(cb0[110].y); - r3.w = r9.w * r9.w; - r9.x = min(1, r1.x); - r1.x = 1 + -r9.w; - r4.w = -r1.x * 0.383026004 + -0.0761947036; - r4.w = r1.x * r4.w + 1.04997003; - r1.x = r1.x * r4.w + 0.409254998; - r1.x = min(0.999000013, r1.x); - r4.w = 1 + -r1.x; - r16.xyz = float3(1,1,1) + -r6.xyz; - r16.xyz = r16.xyz * float3(0.0476190485,0.0476190485,0.0476190485) + r6.xyz; - r9.yz = r9.xw * float2(0.96875,0.96875) + float2(0.015625,0.015625); - r5.w = t10.SampleLevel(s0_s, r9.yz, 0).x; - r17.xyz = -r16.xyz * r4.www + float3(1,1,1); - r16.xyz = r16.xyz * r16.xyz; - r18.w = 1; - r19.y = 1; - r20.z = r9.w; - r21.xyz = float3(0,0,0); - r6.w = 1; - r7.z = 0; - while (true) { - r9.y = cmp(7 < (int)r7.z); - if (r9.y != 0) break; - r9.y = (int)r0.w + (int)r7.z; - r9.y = t0[r9.y].val[0/4]; - r9.z = (int)r2.w + (int)r7.z; - r9.z = t0[r9.z].val[0/4]; - r9.y = (int)r9.z & (int)r9.y; - r9.y = r2.z ? r9.y : 0; - r9.z = (uint)r7.z << 5; - r22.xyz = float3(0,0,0); - r10.w = r6.w; - r12.w = r9.y; - while (true) { - if (r12.w == 0) break; - r13.w = firstbitlow((uint)r12.w); - r14.z = 1 << (int)r13.w; - r14.z = (int)r12.w ^ (int)r14.z; - r13.w = (int)r9.z + (int)r13.w; - bitmask.x = ((~(-1 << 29)) << 3) & 0xffffffff; r23.x = (((uint)r13.w << 3) & bitmask.x) | ((uint)1 & ~bitmask.x); - bitmask.y = ((~(-1 << 29)) << 3) & 0xffffffff; r23.y = (((uint)r13.w << 3) & bitmask.y) | ((uint)3 & ~bitmask.y); - bitmask.z = ((~(-1 << 29)) << 3) & 0xffffffff; r23.z = (((uint)r13.w << 3) & bitmask.z) | ((uint)5 & ~bitmask.z); - bitmask.w = ((~(-1 << 29)) << 3) & 0xffffffff; r23.w = (((uint)r13.w << 3) & bitmask.w) | ((uint)6 & ~bitmask.w); - bitmask.w = ((~(-1 << 29)) << 3) & 0xffffffff; r14.w = (((uint)r13.w << 3) & bitmask.w) | ((uint)7 & ~bitmask.w); - r15.w = (uint)cb5[r23.z+6].w; - r15.w = cmp((int)r15.w == 1); - if (r15.w != 0) { - r18.xyz = -cb5[r23.x+6].xyz + r0.xyz; - r24.xyz = int3(0xffff,0xffff,0xffff) & asint(cb5[r23.z+6].xzy); - r25.xyz = int3(0xffff,0xffff,0xffff) & asint(cb5[r23.w+6].yxz); - r26.xyz = asuint(cb5[r23.z+6].xzy) >> int3(16,16,16); - r27.xyz = asuint(cb5[r23.w+6].yxz) >> int3(16,16,16); - r24.xyz = f16tof32(r24.xyz); - r25.xyz = f16tof32(r25.xyz); - r26.xyz = f16tof32(r26.xyz); - r27.xyw = f16tof32(r27.yxz); - r28.xz = r24.xz; - r28.yw = r26.xz; - r15.w = dot(r18.xyzw, r28.xyzw); - r26.x = r24.y; - r26.z = r25.y; - r26.w = r27.x; - r16.w = dot(r18.xyzw, r26.xyzw); - r27.xz = r25.xz; - r17.w = dot(r18.xyzw, r27.xyzw); - r15.w = max(abs(r16.w), abs(r15.w)); - r15.w = max(r15.w, abs(r17.w)); - r16.w = cb5[r14.w+6].x * 0.5 + 0.5; - r15.w = -r16.w + r15.w; - r16.w = -cb5[r14.w+6].x * 0.5 + 0.5; - r15.w = saturate(r15.w / r16.w); - r15.w = 1 + -r15.w; - r15.w = r15.w * r15.w; - } else { - r15.w = 1; - } - r16.w = cmp(0.5 < cb5[r23.y+6].z); - r17.w = cmp(r15.w < 0.00100000005); - r17.w = (int)r16.w | (int)r17.w; - if (r17.w != 0) { - r12.w = r14.z; - continue; - } - r17.w = (uint)r13.w << 3; - bitmask.w = ((~(-1 << 29)) << 3) & 0xffffffff; r13.w = (((uint)r13.w << 3) & bitmask.w) | ((uint)2 & ~bitmask.w); - r18.x = cmp(cb5[r17.w+6].w < 1.5); - if (r18.x != 0) { - r18.x = cb5[r13.w+6].y * 0.5 + 0.5; - r18.x = -abs(cb5[r13.w+6].x) + r18.x; - r18.y = cb5[r13.w+6].y + -r18.x; - r19.z = 1 + -abs(r18.x); - r19.z = r19.z + -abs(r18.y); - r19.z = max(0.00048828125, r19.z); - r19.w = cmp(cb5[r13.w+6].x >= 0); - r18.z = r19.w ? r19.z : -r19.z; - r19.z = dot(r18.xyz, r18.xyz); - r19.z = rsqrt(r19.z); - r18.xyz = r19.zzz * r18.xyz; - r24.xyz = cb5[r23.x+6].xyz + -r0.xyz; - r19.z = dot(r24.xyz, r24.xyz); - r19.w = rsqrt(r19.z); - r25.xyz = r24.xyz * r19.www; - r20.w = (int)cb5[r14.w+6].w; - r26.xyz = cb5[r13.w+6].zzz * r18.xyz; - r27.xyz = -r26.xyz * float3(0.5,0.5,0.5) + r24.xyz; - r28.xyz = r26.xyz * float3(0.5,0.5,0.5) + r24.xyz; - r21.w = (uint)cb5[r17.w+6].w; - r21.w = (int)r21.w & 1; - r22.w = cmp((int)r21.w == 0); - r22.w = ~(int)r22.w; - r23.z = cmp(0 < cb5[r13.w+6].z); - r22.w = r22.w ? r23.z : 0; - r23.z = dot(r27.xyz, r27.xyz); - r23.z = sqrt(r23.z); - r24.w = dot(r28.xyz, r28.xyz); - r24.w = sqrt(r24.w); - r25.w = dot(r5.xyz, r27.xyz); - r25.w = r25.w / r23.z; - r26.w = dot(r5.xyz, r28.xyz); - r26.w = r26.w / r24.w; - r25.w = r26.w + r25.w; - r29.x = saturate(0.5 * r25.w); - r25.w = dot(r27.xyz, r28.xyz); - r23.z = r23.z * r24.w + r25.w; - r23.z = r23.z * 0.5 + 1; - r29.y = 1 / r23.z; - r19.x = saturate(dot(r5.xyz, r25.xyz)); - r20.xy = r22.ww ? r29.xy : r19.xy; - r19.x = cmp(cb5[r23.w+6].w < 0); - if (r19.x != 0) { - r19.x = cb5[r23.x+6].w * cb5[r23.x+6].w; - r19.x = r19.z * r19.x; - r19.x = -r19.x * r19.x + 1; - r19.x = max(0, r19.x); - r19.z = 1 + r19.z; - r19.z = 1 / r19.z; - r23.z = r22.w ? 1.000000 : 0; - r24.w = r20.y + -r19.z; - r19.z = r23.z * r24.w + r19.z; - r19.x = r19.x * r19.x; - r19.x = r19.z * r19.x; - } else { - r28.xyz = cb5[r23.x+6].www * r24.xyz; - r19.z = dot(r28.xyz, r28.xyz); - r19.z = min(1, r19.z); - r19.z = 1 + -r19.z; - r19.z = log2(r19.z); - r19.z = cb5[r23.w+6].w * r19.z; - r19.z = exp2(r19.z); - r19.x = r20.y * r19.z; - } - r18.x = dot(r25.xyz, -r18.xyz); - r18.x = -cb5[r13.w+6].z + r18.x; - r18.x = saturate(cb5[r13.w+6].w * r18.x); - r18.x = r18.x * r18.x; - r18.x = r21.w ? 1 : r18.x; - r18.x = r19.x * r18.x; - r18.y = ~(int)r22.w; - r18.z = cmp((int)r20.w >= 0); - r18.y = r18.z ? r18.y : 0; - if (r18.y != 0) { - if (r21.w == 0) { - r18.y = (uint)r20.w << 2; - r28.xyz = cb7[r18.y+33].xyw * r0.yyy; - r28.xyz = cb7[r18.y+32].xyw * r0.xxx + r28.xyz; - r28.xyz = cb7[r18.y+34].xyw * r0.zzz + r28.xyz; - r28.xyz = cb7[r18.y+35].xyw + r28.xyz; - r18.yz = saturate(r28.xy / r28.zz); - r18.yz = r18.yz * cb7[r20.w+0].zw + cb7[r20.w+0].xy; - } else { - r19.x = (uint)r20.w << 2; - r28.x = dot(-r24.xyz, cb7[r19.x+32].xyz); - r28.y = dot(-r24.xyz, cb7[r19.x+33].xyz); - r28.z = dot(-r24.xyz, cb7[r19.x+34].xyz); - r19.x = cmp(abs(r28.x) < abs(r28.y)); - r19.x = r19.x ? 0.000000 : 0; - r19.z = dot(abs(r28.xy), icb[r19.x+0].xy); - r19.z = cmp(r19.z < abs(r28.z)); - r19.x = r19.z ? 2 : r19.x; - r19.z = dot(r28.xyz, icb[r19.x+0].xyz); - r19.z = cmp(r19.z < 0); - bitmask.x = ((~(-1 << 31)) << 1) & 0xffffffff; r19.x = (((uint)r19.x << 1) & bitmask.x) | ((uint)r19.z & ~bitmask.x); - r19.z = (uint)r19.x >> 1; - r19.z = dot(r28.xyz, icb[r19.z+0].xyz); - r20.y = 0.000244140625 / cb7[r20.w+0].w; - r20.y = 0.5 + -r20.y; - r23.z = (uint)r19.x; - r24.x = cmp((uint)r19.x < 2); - r24.x = r24.x ? 0.000000 : 0; - r24.x = dot(r28.xz, icb[r24.x+0].xz); - r24.x = icb[r19.x+4].z * r24.x; - r24.x = r24.x / abs(r19.z); - r23.z = r24.x * r20.y + r23.z; - r23.z = 0.5 + r23.z; - r24.x = saturate(0.166666672 * r23.z); - r23.z = -1 + (int)icb[r19.x+4].y; - r23.z = dot(r28.yz, icb[r23.z+0].xy); - r19.x = icb[r19.x+4].w * r23.z; - r19.x = r19.x / abs(r19.z); - r24.y = saturate(-r19.x * r20.y + 0.5); - r18.yz = r24.xy * cb7[r20.w+0].zw + cb7[r20.w+0].xy; - } - r18.y = t18.SampleLevel(s0_s, r18.yz, 0).x; - r18.x = r18.x * r18.y; - } - r18.y = cmp(0 < r18.x); - if (r18.y != 0) { - if (r21.w == 0) { - r18.z = (int)cb5[r23.y+6].x; - } else { - r24.xyz = -cb5[r23.x+6].xyz + r0.xyz; - r28.xyz = cmp(abs(r24.yzz) < abs(r24.xxy)); - r19.x = r28.y ? r28.x : 0; - r24.xyz = cmp(float3(0,0,0) < r24.xyz); - r19.z = asuint(cb5[r13.w+6].w) >> 24; - if (8 == 0) r20.y = 0; else if (8+16 < 32) { r20.y = (uint)cb5[r13.w+6].w << (32-(8 + 16)); r20.y = (uint)r20.y >> (32-8); } else r20.y = (uint)cb5[r13.w+6].w >> 16; - if (8 == 0) r20.w = 0; else if (8+8 < 32) { r20.w = (uint)cb5[r13.w+6].w << (32-(8 + 8)); r20.w = (uint)r20.w >> (32-8); } else r20.w = (uint)cb5[r13.w+6].w >> 8; - r19.z = r24.x ? r19.z : r20.y; - r20.y = 255 & asint(cb5[r13.w+6].w); - r20.y = r24.y ? r20.w : r20.y; - if (8 == 0) r20.w = 0; else if (8+8 < 32) { r20.w = (uint)cb5[r23.y+6].x << (32-(8 + 8)); r20.w = (uint)r20.w >> (32-8); } else r20.w = (uint)cb5[r23.y+6].x >> 8; - r21.w = 255 & asint(cb5[r23.y+6].x); - r20.w = r24.z ? r20.w : r21.w; - r20.y = r28.z ? r20.y : r20.w; - r19.x = r19.x ? r19.z : r20.y; - r19.z = cmp((int)r19.x < 80); - r18.z = r19.z ? r19.x : -1; - } - r24.xyz = r25.xyz * cb6[r18.z+288].xxx + r0.xyz; - r19.x = cb6[r18.z+288].y * 5; - r24.xyz = r5.xyz * r19.xxx + r24.xyz; - r19.x = (uint)r18.z << 2; - r28.xyzw = cb6[r19.x+65].xyzw * r24.yyyy; - r28.xyzw = cb6[r19.x+64].xyzw * r24.xxxx + r28.xyzw; - r24.xyzw = cb6[r19.x+66].xyzw * r24.zzzz + r28.xyzw; - r24.xyzw = cb6[r19.x+67].xyzw + r24.xyzw; - r24.xyz = r24.xyz / r24.www; - r28.xyz = cmp(float3(0,0,0) >= r24.xyz); - r29.xyz = cmp(r24.xyz >= float3(1,1,1)); - r19.xz = cb6[r18.z+344].zw + -cb6[r18.z+344].xy; - r19.xz = r24.xy * r19.xz + cb6[r18.z+344].xy; - r20.yw = r19.xz * cb6[400].zw + float2(0.5,0.5); - r20.yw = floor(r20.yw); - r19.xz = r19.xz * cb6[400].zw + -r20.yw; - r30.xyzw = float4(0.5,1,0.5,1) + r19.xxzz; - r31.xyzw = r30.xxzz * r30.xxzz; - r24.xy = float2(1,1) + -r19.xz; - r30.xz = min(float2(0,0), r19.xz); - r32.xy = max(float2(0,0), r19.xz); - r33.xy = float2(0.159999996,0.159999996) * r24.xy; - r32.xy = -r32.xy * r32.xy + r30.yw; - r32.xy = float2(1,1) + r32.xy; - r32.xy = float2(0.159999996,0.159999996) * r32.xy; - r31.xz = float2(0.0799999982,0.0799999982) * r31.xz; - r19.xz = r31.yw * float2(0.5,0.5) + -r19.xz; - r34.xy = float2(0.159999996,0.159999996) * r19.xz; - r19.xz = -r30.xz * r30.xz + r24.xy; - r19.xz = float2(1,1) + r19.xz; - r35.xy = float2(0.159999996,0.159999996) * r19.xz; - r19.xz = float2(0.159999996,0.159999996) * r30.yw; - r34.z = r35.x; - r34.w = r19.x; - r33.z = r32.x; - r33.w = r31.x; - r30.xyzw = r34.zwxz + r33.zwxz; - r35.z = r34.y; - r35.w = r19.z; - r32.z = r33.y; - r32.w = r31.z; - r24.xyw = r35.zyw + r32.zyw; - r31.xyz = r33.xzw / r30.zwy; - r31.xyz = float3(-2.5,-0.5,1.5) + r31.xyz; - r31.xyz = cb6[400].xxx * r31.xyz; - r32.xyz = r32.zyw / r24.xyw; - r32.xyz = float3(-2.5,-0.5,1.5) + r32.xyz; - r32.xyw = cb6[400].yyy * r32.xyz; - r33.xyzw = r30.zwyz * r24.xxxy; - r31.w = r32.x; - r34.xyzw = r20.ywyw * cb6[400].xyxy + r31.xwyw; - r19.x = t6.SampleCmpLevelZero(s3_s, r34.xy, r24.z).x; - r19.z = t6.SampleCmpLevelZero(s3_s, r34.zw, r24.z).x; - r19.z = r33.y * r19.z; - r19.x = r33.x * r19.x + r19.z; - r33.xy = r20.yw * cb6[400].xy + r31.zw; - r19.z = t6.SampleCmpLevelZero(s3_s, r33.xy, r24.z).x; - r19.x = r33.z * r19.z + r19.x; - r32.z = r31.x; - r34.xyzw = r20.ywyw * cb6[400].xyxy + r32.zyzw; - r19.z = t6.SampleCmpLevelZero(s3_s, r34.xy, r24.z).x; - r19.x = r33.w * r19.z + r19.x; - r33.xyzw = r30.xyzw * r24.yyww; - r32.xz = r31.yz; - r31.xyzw = r20.ywyw * cb6[400].xyxy + r32.xyzy; - r19.z = t6.SampleCmpLevelZero(s3_s, r31.xy, r24.z).x; - r19.x = r33.x * r19.z + r19.x; - r19.z = t6.SampleCmpLevelZero(s3_s, r31.zw, r24.z).x; - r19.x = r33.y * r19.z + r19.x; - r19.z = t6.SampleCmpLevelZero(s3_s, r34.zw, r24.z).x; - r19.x = r33.z * r19.z + r19.x; - r19.z = cmp((int)r18.z >= 0); - r28.xyz = (int3)r28.xyz | (int3)r29.xyz; - r21.w = (int)r28.y | (int)r28.x; - r21.w = (int)r28.z | (int)r21.w; - r23.z = (int)r24.z & 0x7fffffff; - r23.z = cmp(0x7f800000 < (uint)r23.z); - r21.w = (int)r21.w | (int)r23.z; - r28.xyzw = r20.ywyw * cb6[400].xyxy + r32.xwzw; - r20.y = t6.SampleCmpLevelZero(s3_s, r28.xy, r24.z).x; - r19.x = r33.w * r20.y + r19.x; - r20.y = r30.y * r24.w; - r20.w = t6.SampleCmpLevelZero(s3_s, r28.zw, r24.z).x; - r19.x = r20.y * r20.w + r19.x; - r19.x = -1 + r19.x; - r18.z = cb6[r18.z+288].w * r19.x + 1; - r18.z = r21.w ? 1 : r18.z; - r18.z = r19.z ? r18.z : 1; - } else { - r18.z = 1; - } - if (r22.w != 0) { - r19.x = dot(r12.xyz, r26.xyz); - r19.z = saturate(cb5[r13.w+6].z * r19.w); - r19.z = r19.z * 0.5 + r3.w; - r19.z = min(1, r19.z); - r19.z = r3.w / r19.z; - r24.xyz = r12.xyz * r19.xxx + -r26.xyz; - r20.y = dot(r27.xyz, r24.xyz); - r19.x = r19.x * r19.x; - r19.x = cb5[r13.w+6].z * cb5[r13.w+6].z + -r19.x; - r19.x = saturate(r20.y / r19.x); - r24.xyz = r26.xyz * r19.xxx + r27.xyz; - r19.x = dot(r24.xyz, r24.xyz); - r19.x = rsqrt(r19.x); - r25.xyz = r24.xyz * r19.xxx; - } else { - r19.z = 1; - } - if (r18.y != 0) { - r18.y = saturate(cb5[r14.w+6].y * r19.w); - r24.xyz = r1.yzw * r2.yyy + r25.xyz; - r19.x = dot(r24.xyz, r24.xyz); - r19.x = max(6.10351562e-05, r19.x); - r19.x = rsqrt(r19.x); - r24.xyz = r24.xyz * r19.xxx; - r19.x = saturate(dot(r5.xyz, r24.xyz)); - r19.w = saturate(dot(r4.xyz, r24.xyz)); - r20.y = cmp(0 < r18.y); - r18.y = r18.y * r18.y; - r20.w = r19.w * 3.5999999 + 0.400000006; - r18.y = r18.y / r20.w; - r18.y = r9.w * r9.w + r18.y; - r18.y = min(1, r18.y); - r18.y = r20.y ? r18.y : r3.w; - r18.y = r18.y * r18.y; - r20.y = r19.x * r18.y + -r19.x; - r19.x = r20.y * r19.x + 1; - r19.w = 1 + -r19.w; - r20.y = r19.w * r19.w; - r20.y = r20.y * r20.y; - r20.w = r20.y * r19.w; - r19.w = -r20.y * r19.w + 1; - r24.xyz = r6.xyz * r19.www + r20.www; - r19.x = r19.x * r19.x; - r19.x = r18.y / r19.x; - r19.x = r19.x * r19.z; - r19.z = -r9.x * r18.y + r9.x; - r19.z = r19.z * r9.x + r18.y; - r19.z = sqrt(r19.z); - r19.w = -r20.x * r18.y + r20.x; - r18.y = r19.w * r20.x + r18.y; - r18.y = sqrt(r18.y); - r18.y = r18.y * r9.x; - r18.y = r20.x * r19.z + r18.y; - r18.y = 9.99999975e-05 + r18.y; - r18.y = 0.5 / r18.y; - r18.y = r19.x * r18.y; - r19.xzw = r24.xyz * r18.yyy; - r19.xzw = min(float3(2048,2048,2048), r19.xzw); - r20.yw = r20.xz * float2(0.96875,0.96875) + float2(0.015625,0.015625); - r18.y = t10.SampleLevel(s0_s, r20.yw, 0).x; - r18.y = r18.y * r5.w; - r18.y = r18.y * r1.x; - r18.y = r18.y / r4.w; - r24.xyz = r18.yyy * r16.xyz; - r24.xyz = r24.xyz / r17.xyz; - r19.xzw = r24.xyz + r19.xzw; - r19.xzw = cb5[r14.w+6].zzz * r19.xzw; - r19.xzw = max(float3(0,0,0), r19.xzw); - r19.xzw = min(float3(1000,1000,1000), r19.xzw); - r24.xyz = r20.xxx * r7.xyw; - r19.xzw = r19.xzw * r20.xxx + r24.xyz; - r20.xyw = cb5[r17.w+6].xyz * r18.xxx; - r18.xyz = r20.xyw * r18.zzz; - r18.xyz = r18.xyz * r15.www; - r18.xyz = r19.xzw * r18.xyz; - } else { - r18.xyz = float3(0,0,0); - } - } else { - if (r16.w == 0) { - r15.w = cb5[r13.w+6].y * 0.5 + 0.5; - r24.x = -abs(cb5[r13.w+6].x) + r15.w; - r24.y = cb5[r13.w+6].y + -r24.x; - r15.w = 1 + -abs(r24.x); - r15.w = r15.w + -abs(r24.y); - r15.w = max(0.00048828125, r15.w); - r16.w = cmp(cb5[r13.w+6].x >= 0); - r24.z = r16.w ? r15.w : -r15.w; - r15.w = dot(r24.xyz, r24.xyz); - r15.w = rsqrt(r15.w); - r19.xzw = r24.xyz * r15.www; - r20.xyw = cb5[r23.x+6].xyz + -r0.xyz; - r15.w = dot(r20.xyw, r20.xyw); - r16.w = rsqrt(r15.w); - r24.xyz = r20.xyw * r16.www; - r14.w = (int)cb5[r14.w+6].w; - r25.xyz = cb5[r13.w+6].zzz * r19.xzw; - r26.xyz = -r25.xyz * float3(0.5,0.5,0.5) + r20.xyw; - r25.xyz = r25.xyz * float3(0.5,0.5,0.5) + r20.xyw; - r16.w = (uint)cb5[r17.w+6].w; - r16.w = (int)r16.w & 1; - r17.w = cmp((int)r16.w == 0); - r17.w = ~(int)r17.w; - r21.w = cmp(0 < cb5[r13.w+6].z); - r17.w = r17.w ? r21.w : 0; - r21.w = dot(r26.xyz, r26.xyz); - r21.w = sqrt(r21.w); - r22.w = dot(r25.xyz, r25.xyz); - r22.w = sqrt(r22.w); - r23.z = dot(r26.xyz, r25.xyz); - r21.w = r21.w * r22.w + r23.z; - r21.w = r21.w * 0.5 + 1; - r21.w = 1 / r21.w; - r21.w = r17.w ? r21.w : 1; - r22.w = cmp(cb5[r23.w+6].w < 0); - if (r22.w != 0) { - r22.w = cb5[r23.x+6].w * cb5[r23.x+6].w; - r22.w = r22.w * r15.w; - r22.w = -r22.w * r22.w + 1; - r22.w = max(0, r22.w); - r15.w = 1 + r15.w; - r15.w = 1 / r15.w; - r23.z = r17.w ? 1.000000 : 0; - r24.w = r21.w + -r15.w; - r15.w = r23.z * r24.w + r15.w; - r22.w = r22.w * r22.w; - r15.w = r22.w * r15.w; - } else { - r25.xyz = cb5[r23.x+6].www * r20.xyw; - r22.w = dot(r25.xyz, r25.xyz); - r22.w = min(1, r22.w); - r22.w = 1 + -r22.w; - r22.w = log2(r22.w); - r22.w = cb5[r23.w+6].w * r22.w; - r22.w = exp2(r22.w); - r15.w = r22.w * r21.w; - } - r19.x = dot(r24.xyz, -r19.xzw); - r19.x = -cb5[r13.w+6].z + r19.x; - r19.x = saturate(cb5[r13.w+6].w * r19.x); - r19.x = r19.x * r19.x; - r19.x = r16.w ? 1 : r19.x; - r15.w = r19.x * r15.w; - r17.w = ~(int)r17.w; - r19.x = cmp((int)r14.w >= 0); - r17.w = r17.w ? r19.x : 0; - if (r17.w != 0) { - if (r16.w == 0) { - r17.w = (uint)r14.w << 2; - r19.xzw = cb7[r17.w+33].xyw * r0.yyy; - r19.xzw = cb7[r17.w+32].xyw * r0.xxx + r19.xzw; - r19.xzw = cb7[r17.w+34].xyw * r0.zzz + r19.xzw; - r19.xzw = cb7[r17.w+35].xyw + r19.xzw; - r19.xz = saturate(r19.xz / r19.ww); - r19.xz = r19.xz * cb7[r14.w+0].zw + cb7[r14.w+0].xy; - } else { - r17.w = (uint)r14.w << 2; - r25.x = dot(-r20.xyw, cb7[r17.w+32].xyz); - r25.y = dot(-r20.xyw, cb7[r17.w+33].xyz); - r25.z = dot(-r20.xyw, cb7[r17.w+34].xyz); - r17.w = cmp(abs(r25.x) < abs(r25.y)); - r17.w = r17.w ? 0.000000 : 0; - r19.w = dot(abs(r25.xy), icb[r17.w+0].xy); - r19.w = cmp(r19.w < abs(r25.z)); - r17.w = r19.w ? 2 : r17.w; - r19.w = dot(r25.xyz, icb[r17.w+0].xyz); - r19.w = cmp(r19.w < 0); - bitmask.w = ((~(-1 << 31)) << 1) & 0xffffffff; r17.w = (((uint)r17.w << 1) & bitmask.w) | ((uint)r19.w & ~bitmask.w); - r19.w = (uint)r17.w >> 1; - r19.w = dot(r25.xyz, icb[r19.w+0].xyz); - r20.x = 0.000244140625 / cb7[r14.w+0].w; - r20.x = 0.5 + -r20.x; - r20.y = (uint)r17.w; - r20.w = cmp((uint)r17.w < 2); - r20.w = r20.w ? 0.000000 : 0; - r20.w = dot(r25.xz, icb[r20.w+0].xz); - r20.w = icb[r17.w+4].z * r20.w; - r20.w = r20.w / abs(r19.w); - r20.y = r20.w * r20.x + r20.y; - r20.y = 0.5 + r20.y; - r26.x = saturate(0.166666672 * r20.y); - r20.y = -1 + (int)icb[r17.w+4].y; - r20.y = dot(r25.yz, icb[r20.y+0].xy); - r17.w = icb[r17.w+4].w * r20.y; - r17.w = r17.w / abs(r19.w); - r26.y = saturate(-r17.w * r20.x + 0.5); - r19.xz = r26.xy * cb7[r14.w+0].zw + cb7[r14.w+0].xy; - } - r14.w = t18.SampleLevel(s0_s, r19.xz, 0).x; - r15.w = r15.w * r14.w; - } - r14.w = cmp(0 < r15.w); - if (r14.w != 0) { - if (r16.w == 0) { - r14.w = (int)cb5[r23.y+6].x; - } else { - r19.xzw = -cb5[r23.x+6].xyz + r0.xyz; - r20.xyw = cmp(abs(r19.zww) < abs(r19.xxz)); - r15.w = r20.y ? r20.x : 0; - r19.xzw = cmp(float3(0,0,0) < r19.xzw); - r16.w = asuint(cb5[r13.w+6].w) >> 24; - if (8 == 0) r20.x = 0; else if (8+16 < 32) { r20.x = (uint)cb5[r13.w+6].w << (32-(8 + 16)); r20.x = (uint)r20.x >> (32-8); } else r20.x = (uint)cb5[r13.w+6].w >> 16; - if (8 == 0) r20.y = 0; else if (8+8 < 32) { r20.y = (uint)cb5[r13.w+6].w << (32-(8 + 8)); r20.y = (uint)r20.y >> (32-8); } else r20.y = (uint)cb5[r13.w+6].w >> 8; - r16.w = r19.x ? r16.w : r20.x; - r13.w = 255 & asint(cb5[r13.w+6].w); - r13.w = r19.z ? r20.y : r13.w; - if (8 == 0) r17.w = 0; else if (8+8 < 32) { r17.w = (uint)cb5[r23.y+6].x << (32-(8 + 8)); r17.w = (uint)r17.w >> (32-8); } else r17.w = (uint)cb5[r23.y+6].x >> 8; - r19.x = 255 & asint(cb5[r23.y+6].x); - r17.w = r19.w ? r17.w : r19.x; - r13.w = r20.w ? r13.w : r17.w; - r13.w = r15.w ? r16.w : r13.w; - r15.w = cmp((int)r13.w < 80); - r14.w = r15.w ? r13.w : -1; - } - r19.xzw = r24.xyz * cb6[r14.w+288].xxx + r0.xyz; - r13.w = cb6[r14.w+288].y * 5; - r19.xzw = r5.xyz * r13.www + r19.xzw; - r13.w = (uint)r14.w << 2; - r23.xyzw = cb6[r13.w+65].xyzw * r19.zzzz; - r23.xyzw = cb6[r13.w+64].xyzw * r19.xxxx + r23.xyzw; - r23.xyzw = cb6[r13.w+66].xyzw * r19.wwww + r23.xyzw; - r23.xyzw = cb6[r13.w+67].xyzw + r23.xyzw; - r19.xzw = r23.xyz / r23.www; - r20.xyw = cmp(float3(0,0,0) >= r19.xzw); - r23.xyz = cmp(r19.xzw >= float3(1,1,1)); - r24.xy = cb6[r14.w+344].zw + -cb6[r14.w+344].xy; - r19.xz = r19.xz * r24.xy + cb6[r14.w+344].xy; - r24.xy = r19.xz * cb6[400].zw + float2(0.5,0.5); - r24.xy = floor(r24.xy); - r19.xz = r19.xz * cb6[400].zw + -r24.xy; - r25.xyzw = float4(0.5,1,0.5,1) + r19.xxzz; - r26.xyzw = r25.xxzz * r25.xxzz; - r24.zw = float2(1,1) + -r19.xz; - r25.xz = min(float2(0,0), r19.xz); - r27.xy = max(float2(0,0), r19.xz); - r28.xy = float2(0.159999996,0.159999996) * r24.zw; - r27.xy = -r27.xy * r27.xy + r25.yw; - r27.xy = float2(1,1) + r27.xy; - r27.xy = float2(0.159999996,0.159999996) * r27.xy; - r26.xz = float2(0.0799999982,0.0799999982) * r26.xz; - r19.xz = r26.yw * float2(0.5,0.5) + -r19.xz; - r29.xy = float2(0.159999996,0.159999996) * r19.xz; - r19.xz = -r25.xz * r25.xz + r24.zw; - r19.xz = float2(1,1) + r19.xz; - r30.xy = float2(0.159999996,0.159999996) * r19.xz; - r19.xz = float2(0.159999996,0.159999996) * r25.yw; - r29.z = r30.x; - r29.w = r19.x; - r28.z = r27.x; - r28.w = r26.x; - r25.xyzw = r29.zwxz + r28.zwxz; - r30.z = r29.y; - r30.w = r19.z; - r27.z = r28.y; - r27.w = r26.z; - r26.xyz = r30.zyw + r27.zyw; - r28.xyz = r28.xzw / r25.zwy; - r28.xyz = float3(-2.5,-0.5,1.5) + r28.xyz; - r28.xyz = cb6[400].xxx * r28.xyz; - r27.xyz = r27.zyw / r26.xyz; - r27.xyz = float3(-2.5,-0.5,1.5) + r27.xyz; - r27.xyw = cb6[400].yyy * r27.xyz; - r29.xyzw = r26.xxxy * r25.zwyz; - r28.w = r27.x; - r30.xyzw = r24.xyxy * cb6[400].xyxy + r28.xwyw; - r13.w = t6.SampleCmpLevelZero(s3_s, r30.xy, r19.w).x; - r15.w = t6.SampleCmpLevelZero(s3_s, r30.zw, r19.w).x; - r15.w = r29.y * r15.w; - r13.w = r29.x * r13.w + r15.w; - r19.xz = r24.xy * cb6[400].xy + r28.zw; - r15.w = t6.SampleCmpLevelZero(s3_s, r19.xz, r19.w).x; - r13.w = r29.z * r15.w + r13.w; - r27.z = r28.x; - r30.xyzw = r24.xyxy * cb6[400].xyxy + r27.zyzw; - r15.w = t6.SampleCmpLevelZero(s3_s, r30.xy, r19.w).x; - r13.w = r29.w * r15.w + r13.w; - r29.xyzw = r26.yyzz * r25.xyzw; - r27.xz = r28.yz; - r28.xyzw = r24.xyxy * cb6[400].xyxy + r27.xyzy; - r15.w = t6.SampleCmpLevelZero(s3_s, r28.xy, r19.w).x; - r13.w = r29.x * r15.w + r13.w; - r15.w = t6.SampleCmpLevelZero(s3_s, r28.zw, r19.w).x; - r13.w = r29.y * r15.w + r13.w; - r15.w = t6.SampleCmpLevelZero(s3_s, r30.zw, r19.w).x; - r13.w = r29.z * r15.w + r13.w; - r15.w = cmp((int)r14.w >= 0); - r20.xyw = (int3)r20.xyw | (int3)r23.xyz; - r16.w = (int)r20.y | (int)r20.x; - r16.w = (int)r20.w | (int)r16.w; - r17.w = (int)r19.w & 0x7fffffff; - r17.w = cmp(0x7f800000 < (uint)r17.w); - r16.w = (int)r16.w | (int)r17.w; - r23.xyzw = r24.xyxy * cb6[400].xyxy + r27.xwzw; - r17.w = t6.SampleCmpLevelZero(s3_s, r23.xy, r19.w).x; - r13.w = r29.w * r17.w + r13.w; - r17.w = r26.z * r25.y; - r19.x = t6.SampleCmpLevelZero(s3_s, r23.zw, r19.w).x; - r13.w = r17.w * r19.x + r13.w; - r13.w = -1 + r13.w; - r13.w = cb6[r14.w+288].w * r13.w + 1; - r13.w = r16.w ? 1 : r13.w; - r13.w = r15.w ? r13.w : 1; - } else { - r13.w = 1; - } - } else { - r13.w = 1; - } - r10.w = r13.w * r10.w; - r18.xyz = float3(0,0,0); - } - r22.xyz = r22.xyz + r18.xyz; - r12.w = r14.z; - } - r6.w = r10.w; - r21.xyz = r22.xyz + r21.xyz; - r7.z = (int)r7.z + 1; - } - r0.x = dot(r13.xyz, float3(0.212672904,0.715152204,0.0721750036)); - r1.xyz = r13.xyz + -r0.xxx; - r0.xzw = cb0[184].www * r1.xyz + r0.xxx; - - // Reduce clustered light contribution on glass - if (GLASS_TRANSPARENCY > 0.5f) { - r21.xyz *= 0.5f; - } - - r1.xyz = r21.xyz * r6.www + r15.xyz; - r0.xzw = r0.xzw * cb0[184].xyz + r1.xyz; - - // Apply glass brightness reduction - if (GLASS_TRANSPARENCY > 0.5f) { - r0.xzw *= 0.65f; - } - r1.x = r0.y * cb0[156].w + cb0[157].w; - r1.y = r2.x * cb0[154].w + -cb0[153].w; - r1.xy = max(float2(0.00999999978,0), r1.xy); - r1.z = -1.44269502 * r1.x; - r1.z = exp2(r1.z); - r1.z = 1 + -r1.z; - r1.x = r1.z / r1.x; - r1.z = r0.y * cb0[156].w + cb0[158].w; - r1.z = 1.44269502 * r1.z; - r1.z = exp2(r1.z); - r1.x = r1.x * r1.z; - r1.x = -r1.y * r1.x; - r1.xyz = cb0[155].xyz * r1.xxx; - r1.xyz = float3(1.44269502,1.44269502,1.44269502) * r1.xyz; - r1.xyz = exp2(r1.xyz); - r1.w = dot(-r4.xyz, cb0[154].xyz); - r2.y = cb0[155].w * cb0[155].w + 1; - r2.z = dot(r1.ww, cb0[155].ww); - r2.y = r2.y + -r2.z; - r2.z = cmp(0 < cb0[163].z); - if (r2.z != 0) { - r11.w = 7 & asint(cb0[108].w); - r5.xyz = mad((int3)r11.xyw, int3(0x19660d,0x19660d,0x19660d), int3(0x3c6ef35f,0x3c6ef35f,0x3c6ef35f)); - r2.z = mad((int)r5.y, (int)r5.z, (int)r5.x); - r2.w = mad((int)r5.z, (int)r2.z, (int)r5.y); - r3.w = mad((int)r2.z, (int)r2.w, (int)r5.z); - r5.x = mad((int)r2.w, (int)r3.w, (int)r2.z); - r2.z = dot(-r4.xyz, -r3.xyz); - r3.x = -cb0[44].y + r0.y; - r3.y = cmp(5.96046448e-08 < r2.z); - r2.z = 1 / r2.z; - r2.z = r3.y ? r2.z : 0; - r2.z = cb0[163].w * r2.z; - r3.y = 1 / r2.x; - r3.z = r3.y * r2.z; - r4.x = r3.z * r3.x + cb0[44].y; - r3.x = -r3.z * r3.x + r3.x; - r3.z = cb0[159].z * r3.x; - r3.x = cb0[162].x * r3.x; - r3.xz = max(float2(-127,-127), r3.xz); - r4.y = -cb0[159].x + r4.x; - r4.y = cb0[159].z * r4.y; - r4.y = max(-127, r4.y); - r4.y = exp2(-r4.y); - r4.y = cb0[159].y * r4.y; - r4.z = cmp(5.96046448e-08 < abs(r3.z)); - r4.w = exp2(-r3.z); - r4.w = 1 + -r4.w; - r4.w = r4.w / r3.z; - r3.z = -r3.z * 0.240226507 + 0.693147182; - r3.z = r4.z ? r4.w : r3.z; - r4.x = -cb0[162].z + r4.x; - r4.x = cb0[162].x * r4.x; - r4.x = max(-127, r4.x); - r4.x = exp2(-r4.x); - r4.x = cb0[162].y * r4.x; - r4.z = cmp(5.96046448e-08 < abs(r3.x)); - r4.w = exp2(-r3.x); - r4.w = 1 + -r4.w; - r4.w = r4.w / r3.x; - r3.x = -r3.x * 0.240226507 + 0.693147182; - r3.x = r4.z ? r4.w : r3.x; - r3.x = r4.x * r3.x; - r3.x = r4.y * r3.z + r3.x; - r2.z = -r2.z * r3.y + 1; - r2.z = r2.z * r2.x; - r2.z = r3.x * r2.z; - r2.z = exp2(-r2.z); - r2.z = min(1, r2.z); - r2.z = max(cb0[161].w, r2.z); - r3.xy = saturate(r2.xx * cb0[160].yw + cb0[160].xz); - r2.z = r3.x + r2.z; - r2.z = r2.z + r3.y; - r2.z = min(1, r2.z); - r5.y = mad((int)r3.w, (int)r5.x, (int)r2.w); - r3.xy = (uint2)r5.xy >> int2(16,16); - r3.xy = (uint2)r3.xy; - r3.xy = r3.xy * float2(3.05180438e-05,3.05180438e-05) + float2(-1,-1); - r3.xy = r3.xy * cb0[167].ww + r14.xy; - r3.xy = cb0[165].xy * r3.xy; - r2.w = r11.z * cb0[164].x + cb0[164].y; - r2.w = log2(r2.w); - r2.w = cb0[164].z * r2.w; - r3.z = r2.w / cb0[163].z; - r3.xyzw = t17.SampleLevel(s0_s, r3.xyz, 0).xyzw; - r2.w = -cb0[166].z + r11.z; - r2.w = saturate(1000000 * r2.w); - r3.xyzw = float4(-0,-0,-0,-1) + r3.xyzw; - r3.xyzw = r2.wwww * r3.xyzw + float4(0,0,0,1); - r2.w = 1 + -r2.z; - r4.xyz = cb0[161].xyz * r2.www; - r3.xyz = r4.xyz * r3.www + r3.xyz; - r2.z = r3.w * r2.z; - } else { - r0.y = -cb0[44].y + r0.y; - r2.w = cb0[159].z * r0.y; - r2.w = max(-127, r2.w); - r0.y = cb0[162].x * r0.y; - r0.y = max(-127, r0.y); - r3.w = -cb0[159].x + cb0[44].y; - r3.w = cb0[159].z * r3.w; - r3.w = max(-127, r3.w); - r3.w = exp2(-r3.w); - r3.w = cb0[159].y * r3.w; - r4.x = cmp(5.96046448e-08 < abs(r2.w)); - r4.y = exp2(-r2.w); - r4.y = 1 + -r4.y; - r4.y = r4.y / r2.w; - r2.w = -r2.w * 0.240226507 + 0.693147182; - r2.w = r4.x ? r4.y : r2.w; - r4.x = -cb0[162].z + cb0[44].y; - r4.x = cb0[162].x * r4.x; - r4.x = max(-127, r4.x); - r4.x = exp2(-r4.x); - r4.x = cb0[162].y * r4.x; - r4.y = cmp(5.96046448e-08 < abs(r0.y)); - r4.z = exp2(-r0.y); - r4.z = 1 + -r4.z; - r4.z = r4.z / r0.y; - r0.y = -r0.y * 0.240226507 + 0.693147182; - r0.y = r4.y ? r4.z : r0.y; - r0.y = r4.x * r0.y; - r0.y = r3.w * r2.w + r0.y; - r0.y = r0.y * r2.x; - r0.y = exp2(-r0.y); - r0.y = min(1, r0.y); - r0.y = max(cb0[161].w, r0.y); - r2.xw = saturate(r2.xx * cb0[160].yw + cb0[160].xz); - r0.y = r2.x + r0.y; - r0.y = r0.y + r2.w; - r2.z = min(1, r0.y); - r0.y = 1 + -r2.z; - r3.xyz = cb0[161].xyz * r0.yyy; - } - r4.xyz = r2.zzz * r1.xyz; - r0.y = r1.w * r1.w + 1; - r0.y = 0.0596831031 * r0.y; - r5.xyz = cb0[156].xyz * r0.yyy + cb0[158].xyz; - r0.y = -cb0[155].w * cb0[155].w + 1; - r1.w = 12.566371 * r2.y; - r2.x = sqrt(r2.y); - r1.w = r2.x * r1.w; - r1.w = max(0.00100000005, r1.w); - r0.y = r0.y / r1.w; - r2.xyw = saturate(cb0[157].xyz * r0.yyy + r5.xyz); - r2.xyw = float3(255,255,255) * r2.xyw; - r1.xyz = float3(1,1,1) + -r1.xyz; - r1.xyz = r2.xyw * r1.xyz; - r1.xyz = r1.xyz * r2.zzz + r3.xyz; - - // Reduce fog/atmospheric contribution - if (GLASS_TRANSPARENCY > 0.5f) { - // Boost transmittance to reduce fog density on glass - float3 boostedTrans = lerp(r4.xyz, float3(1,1,1), 0.5f); - float3 reducedInscatter = r1.xyz * 0.35f; - r8.xyz = r0.xzw * boostedTrans + reducedInscatter; - } else { - // Vanilla behavior - r8.xyz = r0.xzw * r4.xyz + r1.xyz; - } - r0.xy = float2(0.5,-0.5) * r10.xy; - r0.xy = sqrt(abs(r0.xy)); - r0.xy = sqrt(r0.xy); - r10.z = -r10.y; - r0.zw = cmp(float2(0,0) < r10.xz); - r1.xy = cmp(r10.xz < float2(0,0)); - r0.zw = (int2)-r0.zw + (int2)r1.xy; - r0.zw = (int2)r0.zw; - r0.xy = r0.xy * r0.zw; - r0.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); - r0.z = (uint)v7.x << 4; - r0.z = max(cb1[r0.z+4].y, cb1[r0.z+4].z); - r0.z = -0.100000024 + r0.z; - r0.w = cmp(0 < r0.z); - r0.z = cmp(r0.z < 0); - r0.z = (int)-r0.w + (int)r0.z; - r0.z = (int)r0.z; - r0.z = saturate(r0.z); - r1.xy = float2(0.5,0.5) + -r0.xy; - r0.xy = r0.zz * r1.xy + r0.xy; - o1.xy = min(float2(1,1), r0.xy); - r0.x = dot(r8.xyz, float3(0.212672904,0.715152204,0.0721750036)); - r0.x = r0.x * r8.w; - r0.x = max(r0.x, r8.w); - r0.x = saturate(10 * r0.x); - r0.x = cmp(0.5 < r0.x); - o1.z = r0.x ? 1.000000 : 0; - - // Modifed Glass Final Output - if (GLASS_TRANSPARENCY > 0.5f) { - float3 glassColor = r8.xyz; - float glassLuma = dot(glassColor, float3(0.2126f, 0.7152f, 0.0722f)); - float maxBrightness = 2.0f; - if (glassLuma > 0.5f) { - float compression = 0.5f + (maxBrightness - 0.5f) * (1.0f - exp(-(glassLuma - 0.5f) / (maxBrightness - 0.5f))); - float scale = compression / max(glassLuma, 0.001f); - glassColor *= scale; - } - - o0.xyz = glassColor; - o0.w = r8.w; - } else { - // Vanilla output - o0.xyzw = r8.xyzw; - } - o1.w = 0; - return; -} \ No newline at end of file From bb85f62163741913b68681c2d3a826224ef0dde7 Mon Sep 17 00:00:00 2001 From: SGTForgery Date: Wed, 4 Feb 2026 10:08:10 +0000 Subject: [PATCH 14/40] fix(endfield) Using .asm to stop glass shader freezing --- .../endfield/deferred-lighting/0x0E84DFD1.cso | Bin 60116 -> 60152 bytes .../deferred-lighting/0x0E84DFD1.ps_5_0.asm | 3 +- .../endfield/deferred-lighting/0x1E8A471E.cso | Bin 47144 -> 47180 bytes .../deferred-lighting/0x1E8A471E.ps_5_0.asm | 3 +- .../endfield/deferred-lighting/0x7010AF4B.cso | Bin 27264 -> 27300 bytes .../deferred-lighting/0x7010AF4B.ps_5_0.asm | 3 +- .../endfield/deferred-lighting/0x8BA3C806.cso | Bin 48152 -> 48188 bytes .../deferred-lighting/0x8BA3C806.ps_5_0.asm | 3 +- .../endfield/deferred-lighting/0x99725481.cso | Bin 60636 -> 60672 bytes .../deferred-lighting/0x99725481.ps_5_0.asm | 3 +- .../endfield/deferred-lighting/0xA4113DE8.cso | Bin 39216 -> 39252 bytes .../deferred-lighting/0xA4113DE8.ps_5_0.asm | 3 +- .../endfield/deferred-lighting/0xD88CD7C9.cso | Bin 26256 -> 26292 bytes .../deferred-lighting/0xD88CD7C9.ps_5_0.asm | 3 +- src/games/endfield/glass/0x754218B1.cso | Bin 0 -> 55856 bytes .../endfield/glass/0x754218B1.ps_5_0.asm | 1822 +++++++++++++++++ .../0x754218B1.ps_5_0_original_backup.asm | 1772 ++++++++++++++++ src/games/endfield/glass/0xB317E9E1.cso | Bin 0 -> 53640 bytes .../endfield/glass/0xB317E9E1.ps_5_0.asm | 1757 ++++++++++++++++ .../0xB317E9E1.ps_5_0_original_backup.asm | 1707 +++++++++++++++ src/games/endfield/glass/0xB8941FB1.cso | Bin 0 -> 55376 bytes .../endfield/glass/0xB8941FB1.ps_5_0.asm | 1804 ++++++++++++++++ 22 files changed, 8876 insertions(+), 7 deletions(-) create mode 100644 src/games/endfield/glass/0x754218B1.cso create mode 100644 src/games/endfield/glass/0x754218B1.ps_5_0.asm create mode 100644 src/games/endfield/glass/0x754218B1.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/glass/0xB317E9E1.cso create mode 100644 src/games/endfield/glass/0xB317E9E1.ps_5_0.asm create mode 100644 src/games/endfield/glass/0xB317E9E1.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/glass/0xB8941FB1.cso create mode 100644 src/games/endfield/glass/0xB8941FB1.ps_5_0.asm diff --git a/src/games/endfield/deferred-lighting/0x0E84DFD1.cso b/src/games/endfield/deferred-lighting/0x0E84DFD1.cso index bfdbc5a283965666e403caaf74dd2f10037c18b2..61de4fdc049ac6fb66d233de0dfb189326b57f48 100644 GIT binary patch delta 75 zcmV-R0JQ(q)dTp|0~thELPJ7*Y6xVL$>s_Uv0=c{AWH!N008)r8KVg}>Hq*x0001v hvBhK4ldKvDlN8ht44Ro)KLJ1h0GgQ@KC>v)tQJRi8?OKW delta 58 zcmexymHEn5W=WR_CugBQI)avGEVA^&Rg=G!Gp%K0U|_g1QF1Y-$SVeh03fGz1Tp{s36tQU6bzb~Sw8_l005eq89uZ4pfDF3u^NH^ delta 58 zcmX@}foa7DCP|kFC+CGT{Fbfj%lrEH_w{1ud^rzB1_lO=iIR&sGqy7@1OPd=HXb!z OFj;2-&t{E6_jRlU|^UvGtwSHOWJKN@E4E<00#CLGynhq delta 58 zcmZ2-m9gO}qohlOlk=2qv!o@Ktf`mW^sc__(yCZS1_p+PiIR&s4`ebh1OPb&8;`E` Oo9rXSv3ZU^hcp1Bl@)0K diff --git a/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm index 271165ae6d..e4af6e9529 100644 --- a/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm @@ -685,7 +685,8 @@ mul r3.xyz, r3.xyzx, cb0[111].yyyy if_nz cb13[13].w max r23.w, r23.w, l(0.000000) // saturate step 1 min r23.w, r23.w, l(1.000000) // saturate step 2 - mul r3.xyz, r3.xyzx, r23.wwww // cubemap *= saturate(ambient_luminance) + mad r23.w, r23.w, l(0.850000), l(0.150000) // lerp(0.15, 1.0, ambient) = 0.15 + 0.85*ambient + mul r3.xyz, r3.xyzx, r23.wwww // cubemap *= lerp(0.15, 1.0, saturate(ambient_luminance)) endif if_nz r4.w sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x diff --git a/src/games/endfield/deferred-lighting/0x8BA3C806.cso b/src/games/endfield/deferred-lighting/0x8BA3C806.cso index aefa41c8ec872a3befec2ae20ec97e2dc807bd38..8937805dce827db73ea9c2089d88fce439a0303b 100644 GIT binary patch delta 76 zcmV-S0JHy?_yWB60vSYDLPOayKH%bdCujvaBkio8I)woM002CZ8KVh&y8r-C0002r ivBg861Tp{s36t=k6bzb~Sw8_l005eq89uWJp%5E7X&K=F delta 58 zcmdn$`lCz)NB{@ diff --git a/src/games/endfield/deferred-lighting/0x99725481.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x99725481.ps_5_0.asm index 2f9d11fd82..ba5ea86f21 100644 --- a/src/games/endfield/deferred-lighting/0x99725481.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0x99725481.ps_5_0.asm @@ -1775,7 +1775,8 @@ mul r2.xyz, r2.xyzx, cb0[111].yyyy if_nz cb13[13].w max r38.w, r38.w, l(0.000000) // saturate step 1 min r38.w, r38.w, l(1.000000) // saturate step 2 - mul r2.xyz, r2.xyzx, r38.wwww // cubemap *= saturate(ambient_luminance) + mad r38.w, r38.w, l(0.850000), l(0.150000) // lerp(0.15, 1.0, ambient) = 0.15 + 0.85*ambient + mul r2.xyz, r2.xyzx, r38.wwww // cubemap *= lerp(0.15, 1.0, saturate(ambient_luminance)) endif if_nz r3.z sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x diff --git a/src/games/endfield/deferred-lighting/0xA4113DE8.cso b/src/games/endfield/deferred-lighting/0xA4113DE8.cso index 2b0eecb7a981786fb39d0dc14dcbab9aea942de2..3e4ace405e405a722ab9559d2db45ea99138f7a8 100644 GIT binary patch delta 75 zcmV-R0JQ(GvI5ky0vSYDLPHEnzQ%}u&*;Bi`iGU2iy8p{002~x8KVi5m;eA!0000b hvBl4SlN>e(lVpGp44Ro)KLJ1h0GgQ@KC_g7oET#w8_WOz delta 58 zcmV-A0LA~*vI4NO0vSYDLPHk&>X(4#t-tp@KcwF#6X*c|001zN8KVhsm;eA!0000S QvBl4SlgNJzv&4Xq7}!e}<^TWy diff --git a/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm index 461d62fd02..d6f64bd616 100644 --- a/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm @@ -1095,7 +1095,8 @@ mul r2.xyz, r2.xyzx, cb0[111].yyyy if_nz cb13[13].w max r23.w, r23.w, l(0.000000) // saturate step 1 min r23.w, r23.w, l(1.000000) // saturate step 2 - mul r2.xyz, r2.xyzx, r23.wwww // cubemap *= saturate(ambient_luminance) + mad r23.w, r23.w, l(0.850000), l(0.150000) // lerp(0.15, 1.0, ambient) = 0.15 + 0.85*ambient + mul r2.xyz, r2.xyzx, r23.wwww // cubemap *= lerp(0.15, 1.0, saturate(ambient_luminance)) endif if_nz r3.z sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x diff --git a/src/games/endfield/deferred-lighting/0xD88CD7C9.cso b/src/games/endfield/deferred-lighting/0xD88CD7C9.cso index b519a48d687c47be52c68c7ae3ec5ede4839d69f..2b05e4aae3f044b291692604a5cc3566c9ad5384 100644 GIT binary patch delta 91 zcmbPmmT}8jMoE_lCuh^Gxih^g=BV9W9F!@?vYdsHfq`MmM9IaRUs4$u0)U*_jYntu ksTeUZa5garFo*#~te`Zb0|UdXnUVGoTGDQFg1><{0Q|-n4gdfE delta 58 zcmdmTmT|&aMoE_lC+G6q^^devT9|vkls~QfASBGlz`!tJqU2)E3#kkY0YFa4#-p?S OCfi7HZ0_;b5C;H}$rQ~1 diff --git a/src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm index 524de663dc..585ec2e463 100644 --- a/src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm @@ -684,7 +684,8 @@ mul r3.xyz, r3.xyzx, cb0[111].yyyy if_nz cb13[13].w max r22.w, r22.w, l(0.000000) // saturate step 1 min r22.w, r22.w, l(1.000000) // saturate step 2 - mul r3.xyz, r3.xyzx, r22.wwww // cubemap *= saturate(ambient_luminance) + mad r22.w, r22.w, l(0.850000), l(0.150000) // lerp(0.15, 1.0, ambient) = 0.15 + 0.85*ambient + mul r3.xyz, r3.xyzx, r22.wwww // cubemap *= lerp(0.15, 1.0, saturate(ambient_luminance)) endif if_nz r4.w sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x diff --git a/src/games/endfield/glass/0x754218B1.cso b/src/games/endfield/glass/0x754218B1.cso new file mode 100644 index 0000000000000000000000000000000000000000..896c938f0fd65005bd2219d03c245f0be97897e1 GIT binary patch literal 55856 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 X*QTYubk770usy-3wPHhaR;T|L>+_c8 literal 0 HcmV?d00001 diff --git a/src/games/endfield/glass/0x754218B1.ps_5_0.asm b/src/games/endfield/glass/0x754218B1.ps_5_0.asm new file mode 100644 index 0000000000..2eae33e107 --- /dev/null +++ b/src/games/endfield/glass/0x754218B1.ps_5_0.asm @@ -0,0 +1,1822 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Wed Feb 4 07:24:28 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xyz +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 zw 1 NONE float zw +// TEXCOORD 2 xyz 2 NONE float xyz +// TEXCOORD 3 xyzw 3 NONE float xyzw +// TEXCOORD 4 xyzw 4 NONE float x +// TEXCOORD 5 xyz 5 NONE float xyz +// TEXCOORD 6 xyz 6 NONE float xyz +// TEXCOORD 7 x 7 NONE uint x +// SV_IsFrontFace 0 x 8 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[244], immediateIndexed +dcl_constantbuffer CB1[4085], dynamicIndexed +dcl_constantbuffer CB2[24], immediateIndexed +dcl_constantbuffer CB3[259], dynamicIndexed +dcl_constantbuffer CB4[3], immediateIndexed +dcl_constantbuffer CB5[2054], dynamicIndexed +dcl_constantbuffer CB6[715], dynamicIndexed +dcl_constantbuffer CB7[160], dynamicIndexed +dcl_constantbuffer CB13[15], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_sampler s7, mode_default +dcl_sampler s8, mode_default +dcl_sampler s9, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2darray (float,float,float,float) t4 +dcl_resource_texture2d (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_input_ps_siv linear noperspective v0.xyz, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v1.zw +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyzw +dcl_input_ps linear v4.x +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps constant v7.x +dcl_input_ps_sgv constant v8.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 37 +mul r0.xy, v0.xyxx, cb0[82].zwzz +mad r0.zw, r0.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +mul r1.xyzw, -r0.wwww, cb0[25].xyzw +mad r1.xyzw, cb0[24].xyzw, r0.zzzz, r1.xyzw +mad r1.xyzw, cb0[26].xyzw, v0.zzzz, r1.xyzw +add r1.xyzw, r1.xyzw, cb0[27].xyzw +div r1.xyz, r1.xyzx, r1.wwww +mul r0.z, r1.y, cb0[1].z +mad r0.z, cb0[0].z, r1.x, r0.z +mad r0.z, cb0[2].z, r1.z, r0.z +add r0.z, r0.z, cb0[3].z +mov r2.z, |r0.z| +lt r0.z, l(0.000000), v3.w +movc r0.z, r0.z, l(1.000000), l(-1.000000) +eq r0.w, l(0.000000), cb0[86].w +add r3.xyz, -r1.xyzx, cb0[44].xyzx +mov r4.x, cb0[0].z +mov r4.y, cb0[1].z +mov r4.z, cb0[2].z +movc r3.xyz, r0.wwww, r3.xyzx, r4.xyzx +dp3 r0.w, r3.xyzx, r3.xyzx +max r2.w, r0.w, l(9.999999939E-09) +rsq r2.w, r2.w +mul r5.xyz, r2.wwww, r3.xyzx +mul r0.w, r0.w, r2.w +add r6.xy, -v1.xyxx, v1.zwzz +mad r6.zw, cb2[3].xxxx, r6.xxxy, v1.xxxy +mad r6.zw, r6.zzzw, cb2[12].xxxy, cb2[12].zzzw +mad r6.xy, cb2[2].wwww, r6.xyxx, v1.xyxx +mad r6.xy, r6.xyxx, cb2[11].xyxx, cb2[11].zwzz +sample_b_indexable(texture2d)(float,float,float,float) r7.xyzw, r6.xyxx, t5.xyzw, s5, cb0[108].x +add r3.w, cb0[108].x, cb2[3].y +sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r6.zwzz, t6.xywz, s6, r3.w +mul r8.x, r8.x, r8.z +mad r6.xy, r8.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +mul r8.xy, r6.xyxx, cb2[0].xxxx +sample_b_indexable(texture2d)(float,float,float,float) r9.xyz, r6.zwzz, t7.xyzw, s7, cb0[108].x +mul r7.xyzw, r7.xyzw, cb2[8].xyzw +mul_sat r7.xyz, r7.xyzx, cb2[4].zzzz +add r10.xyz, -r7.xyzx, cb2[8].xyzx +mad r7.xyz, cb2[4].xxxx, r10.xyzx, r7.xyzx +mad r3.w, r7.w, v4.x, -r7.w +mad r10.w, cb2[23].x, r3.w, r7.w +add r3.w, -cb2[0].z, cb2[0].w +mad r11.w, r9.y, r3.w, cb2[0].z +add_sat r3.w, l(-1.000000), cb2[3].w +add r4.w, -r9.x, cb2[4].y +mad r3.w, r3.w, r4.w, r9.x +mul r9.xyw, v2.zxzy, v3.yzyx +mad r9.xyw, v2.yzyx, v3.zxzy, -r9.xyxw +mul r9.xyw, r0.zzzz, r9.xyxw +mul r8.yzw, r8.yyyy, r9.xxyw +mad r8.xyz, v3.xyzx, r8.xxxx, r8.yzwy +dp2 r0.z, r6.xyxx, r6.xyxx +min r0.z, r0.z, l(1.000000) +add r0.z, -r0.z, l(1.000000) +sqrt r0.z, r0.z +max r0.z, r0.z, l(1.000000017E-16) +lt r4.w, l(0.000000), cb2[1].w +movc r4.w, r4.w, l(-1.000000), l(1.000000) +movc r4.w, v8.x, l(1.000000), r4.w +mul r0.z, r0.z, r4.w +mad r6.xyz, v2.xyzx, r0.zzzz, r8.xyzx +dp3 r0.z, r6.xyzx, r6.xyzx +rsq r0.z, r0.z +mul r6.xyz, r0.zzzz, r6.xyzx +dp3 r0.z, r6.xyzx, r5.xyzx +dp3 r4.w, -r5.xyzx, r6.xyzx +mul r5.w, cb2[19].z, cb2[19].z +mad r7.w, -r4.w, r4.w, l(1.000000) +mad r5.w, -r5.w, r7.w, l(1.000000) +sqrt r7.w, r5.w +mad r7.w, cb2[19].z, r4.w, r7.w +ge r5.w, r5.w, l(0.000000) +mul r8.xyz, r6.xyzx, r7.wwww +mad r8.xyz, cb2[19].zzzz, -r5.xyzx, -r8.xyzx +and r8.xyz, r5.wwww, r8.xyzx +mul r5.w, r0.z, v0.z +max r5.w, r5.w, l(0.500000) +div r5.w, cb2[19].w, r5.w +add r5.w, r5.w, -cb2[19].w +mad r5.w, cb2[20].x, r5.w, cb2[19].w +mul r8.xyz, r5.wwww, r8.xyzx +mul r8.yw, r8.yyyy, cb0[1].xxxy +mad r8.xy, cb0[0].xyxx, r8.xxxx, r8.ywyy +mad r8.xy, cb0[2].xyxx, r8.zzzz, r8.xyxx +mad r8.zw, v1.xxxy, cb2[22].xxxy, cb2[22].zzzw +sample_b_indexable(texture2d)(float,float,float,float) r8.zw, r8.zwzz, t9.zwxy, s8, cb0[108].x +mad r8.zw, r8.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +mad r8.zw, r8.zzzw, cb2[19].yyyy, -r8.xxxy +mad r8.xy, cb2[19].xxxx, r8.zwzz, r8.xyxx +mad r8.zw, v0.xxxy, cb0[82].zzzw, r8.xxxy +mul r8.xy, r8.xyxx, l(0.250000, 0.250000, 0.000000, 0.000000) +mad r9.xy, v0.xyxx, cb0[82].zwzz, r8.xyxx +sample_b_indexable(texture2d)(float,float,float,float) r5.w, r8.zwzz, t1.yzwx, s0, cb0[108].x +sample_b_indexable(texture2d)(float,float,float,float) r7.w, r9.xyxx, t1.yzwx, s0, cb0[108].x +mad r7.w, cb0[84].z, r7.w, cb0[84].w +div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w +ge r7.w, r7.w, r2.z +and r7.w, r7.w, l(0x3f800000) +mad r8.xy, r7.wwww, r8.xyxx, r0.xyxx +mad r5.w, cb0[84].z, r5.w, cb0[84].w +div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w +ge r5.w, r5.w, r2.z +and r5.w, r5.w, l(0x3f800000) +add r8.zw, -r8.xxxy, r8.zzzw +mad r8.xy, r5.wwww, r8.zwzz, r8.xyxx +sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r8.xyxx, t8.xyzw, s9, cb0[108].x +max r5.w, v5.z, l(9.999999939E-09) +div r9.xy, v5.xyxx, r5.wwww +max r5.w, v6.z, l(9.999999939E-09) +div r12.xy, v6.xyxx, r5.wwww +add r12.xy, r9.xyxx, -r12.xyxx +mul r5.w, l(0.080000), cb2[0].y +mad r9.xyw, -r7.xyxz, r3.wwww, r7.xyxz +mad r5.w, -r5.w, r3.w, r5.w +mad r7.xyz, r7.xyzx, r3.wwww, r5.wwww +mad r13.xyzw, r11.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r3.w, r13.x, r13.x +max r0.z, r0.z, l(0.000000) +mul r5.w, r0.z, l(-9.280000) +exp r5.w, r5.w +min r3.w, r3.w, r5.w +mad r3.w, r3.w, r13.x, r13.y +mad r13.xy, r3.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz +eq r3.w, l(1.000000), cb0[113].y +mul r14.xyzw, r1.yyyy, cb0[241].xyzw +mad r14.xyzw, cb0[240].xyzw, r1.xxxx, r14.xyzw +mad r14.xyzw, cb0[242].xyzw, r1.zzzz, r14.xyzw +add r14.xyzw, r14.xyzw, cb0[243].xyzw +div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r14.w +mul r14.xyz, r14.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) +mul r14.xyz, r5.wwww, r14.xyzx +mad_sat r13.zw, r14.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) +mul r13.zw, r13.zzzw, cb0[82].xxxy +ftou r15.xy, r13.zwzz +mad r5.w, cb0[84].z, r14.z, cb0[84].w +div r15.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w +ftou r2.xy, v0.xyxx +movc r14.xyz, r3.wwww, r15.xyzx, r2.xyzx +mad r2.xyz, r6.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r1.xyzx +mad r15.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r15.xyz, r2.xzyx, -r15.xyzx +max r3.w, |r15.y|, |r15.x| +add r3.w, r3.w, l(-464.000000) +mul_sat r3.w, r3.w, l(0.031250) +add r5.w, |r15.z|, l(-208.000000) +mul_sat r5.w, r5.w, l(0.031250) +max r3.w, r3.w, r5.w +ne r5.w, l(0.000000), cb0[210].w +lt r7.w, r3.w, l(1.000000) +and r5.w, r5.w, r7.w +if_nz r5.w + mad r15.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r15.xyz, r2.xzyx, -r15.xyzx + max r5.w, |r15.y|, |r15.x| + add r5.w, r5.w, l(-29.000000) + mul_sat r5.w, r5.w, l(0.500000) + add r7.w, |r15.z|, l(-13.000000) + mul_sat r7.w, r7.w, l(0.500000) + max r5.w, r5.w, r7.w + lt r7.w, r5.w, l(1.000000) + if_nz r7.w + mad r15.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r16.xyz, r15.xyzx, cb0[211].xyzx + round_ni r16.xyz, r16.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r15.xyzx, t16.xyzw, s2, l(0.000000) + add r7.w, -r5.w, l(1.000000) + mul r8.w, l(0.500000), cb0[211].y + mad r12.w, -cb0[211].y, l(0.500000), l(1.000000) + max r8.w, r8.w, r15.y + min r8.w, r12.w, r8.w + mul r15.w, r8.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t17.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r16.xxxx, r17.xyzx + add r17.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t17.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r16.yyyy, r17.xyzx + add r15.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t17.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r16.zzzz, r15.xyzx + mad r8.w, r17.w, r7.w, r3.w + mov r15.w, r16.z + mul r15.xyzw, r7.wwww, r15.xyzw + mov r19.w, r16.y + mul r17.xyzw, r7.wwww, r19.xyzw + mov r18.w, r16.x + mul r16.xyzw, r7.wwww, r18.xyzw + else + mov r15.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r8.w, r3.w + endif + mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r18.xyz, r2.xzyx, -r18.xyzx + max r7.w, |r18.y|, |r18.x| + add r7.w, r7.w, l(-116.000000) + mul_sat r7.w, r7.w, l(0.125000) + add r12.w, |r18.z|, l(-52.000000) + mul_sat r12.w, r12.w, l(0.125000) + max r7.w, r7.w, r12.w + lt r12.w, r7.w, l(1.000000) + if_nz r12.w + mad r18.xyz, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r18.xyzx, cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r19.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r18.xyzx, t18.xyzw, s2, l(0.000000) + add r12.w, -r7.w, l(1.000000) + mul r5.w, r5.w, r12.w + mul r12.w, l(0.500000), cb0[211].y + mad r13.z, -cb0[211].y, l(0.500000), l(1.000000) + max r12.w, r12.w, r18.y + min r12.w, r13.z, r12.w + mul r18.w, r12.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t19.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r19.xxxx, r20.xyzx + add r20.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t19.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r19.yyyy, r20.xyzx + add r18.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t19.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r19.zzzz, r18.xyzx + mad r8.w, r20.w, r5.w, r8.w + mov r18.w, r19.z + mad r15.xyzw, r18.xyzw, r5.wwww, r15.xyzw + mov r22.w, r19.y + mad r17.xyzw, r22.xyzw, r5.wwww, r17.xyzw + mov r21.w, r19.x + mad r16.xyzw, r21.xyzw, r5.wwww, r16.xyzw + endif + lt r5.w, l(0.000000), r7.w + if_nz r5.w + mad r2.xyz, r2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r2.xyzx, cb0[211].xyzx + mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r2.xyz, r2.xyzx, cb0[211].xyzx, -r18.xyzx + mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r2.xyz, r19.xyzx, r2.xyzx + min r20.xyz, r18.xyzx, r2.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r20.xyzx, t20.yzwx, s2, l(0.000000) + add r2.x, -r3.w, l(1.000000) + mul r2.x, r2.x, r7.w + max r2.y, r19.y, r20.y + min r2.y, r18.y, r2.y + mul r20.w, r2.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r20.xwzx, t21.xyzw, s1, l(0.000000) + add r19.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t21.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r21.yyyy, r19.xyzx + mov r19.w, r21.y + mad r15.xyzw, r19.xyzw, r2.xxxx, r15.xyzw + add r19.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t21.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r21.xxxx, r19.xyzx + mov r19.w, r21.x + mad r17.xyzw, r19.xyzw, r2.xxxx, r17.xyzw + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r18.xyzx + mad r16.xyzw, r21.xyzw, r2.xxxx, r16.xyzw + mad r8.w, r18.w, r2.x, r8.w + endif + mad_sat r2.x, r8.w, l(2.000000), l(-1.000000) + add r18.x, -r3.w, r2.x + add r2.x, r3.w, r2.x + mul r18.y, r2.x, l(0.500000) +else + mov r15.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r18.xy, l(0,1.000000,0,0) +endif +mul r19.xyzw, r18.yyyx, cb0[213].xyzw +mad r19.y, r19.w, l(0.500000), r19.y +mul r2.xy, r18.yxyy, cb0[213].wyww +mad r19.w, r2.y, l(0.375000), r2.x +add r16.xyzw, r16.xyzw, r19.xyzw +mul r19.xyzw, r18.yyyx, cb0[214].xyzw +mad r19.y, r19.w, l(0.500000), r19.y +mul r2.xy, r18.yxyy, cb0[214].wyww +mad r19.w, r2.y, l(0.375000), r2.x +add r17.xyzw, r17.xyzw, r19.xyzw +mul r19.xyzw, r18.yyyx, cb0[215].xyzw +mad r19.y, r19.w, l(0.500000), r19.y +mul r2.xy, r18.yxyy, cb0[215].wyww +mad r19.w, r2.y, l(0.375000), r2.x +add r15.xyzw, r15.xyzw, r19.xyzw +dp3 r2.x, r16.xyzx, r6.xyzx +add r2.x, r16.w, r2.x +max r2.x, r2.x, l(0.000000) +dp3 r3.w, r17.xyzx, r6.xyzx +add r3.w, r17.w, r3.w +max r2.y, r3.w, l(0.000000) +dp3 r3.w, r15.xyzx, r6.xyzx +add r3.w, r15.w, r3.w +max r2.z, r3.w, l(0.000000) +add r3.w, r4.w, r4.w +mad r15.xyz, r6.xyzx, -r3.wwww, -r5.xyzx +add r3.w, l(-1.000000), cb0[113].x +max r4.w, r11.w, l(0.001000) +log r4.w, r4.w +mad r4.w, -r4.w, l(1.200000), l(1.000000) +add r3.w, r3.w, -r4.w +utof r13.zw, r14.xxxy +mul r16.xy, r13.zwzz, cb3[0].wwww +round_ni r16.xy, r16.xyxx +add r4.w, r14.z, -cb3[2].y +round_ni r4.w, r4.w +add r5.w, l(-1.000000), cb3[1].x +max r7.w, r4.w, l(0.000000) +min r5.w, r5.w, r7.w +ge r4.w, r5.w, r4.w +mad r7.w, r16.y, cb3[0].x, r16.x +ftoi r7.w, r7.w +iadd r7.w, r7.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r7.w, r7.w, l(0), t0.xxxx +ftoi r5.w, r5.w +iadd r5.w, r5.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.w, r5.w, l(0), t0.xxxx +and r5.w, r5.w, r7.w +and r4.w, r4.w, r5.w +mul r16.xyz, r2.xyzx, cb0[111].xxxx +dp3 r5.w, r16.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r1.w, l(1.000000) +mov r6.w, l(1.000000) +mov r16.xyz, l(0,0,0,0) +mov r7.w, l(1.000000) +mov r8.w, r4.w +mov r12.w, l(0) +loop + lt r15.w, l(0.010000), r7.w + ine r16.w, r8.w, l(0) + and r16.w, r15.w, r16.w + if_nz r16.w + firstbit_lo r16.w, r8.w + ishl r17.x, l(1), r16.w + xor r8.w, r8.w, r17.x + ishl r16.w, r16.w, l(3) + dp4 r17.x, cb3[r16.w + 6].xyzw, r1.xyzw + dp4 r17.y, cb3[r16.w + 7].xyzw, r1.xyzw + dp4 r17.z, cb3[r16.w + 8].xyzw, r1.xyzw + ge r18.xyz, cb3[r16.w + 5].xyzx, |r17.xyzx| + and r17.w, r18.y, r18.x + and r17.w, r18.z, r17.w + if_nz r17.w + mul r17.w, l(0.100000), cb3[r16.w + 5].x + mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r17.xyzx|, cb3[r16.w + 5].xyzx + mul r19.xyz, r19.xyzx, cb3[r16.w + 9].xyzx + eq r18.w, l(1.000000), cb3[r16.w + 10].x + if_nz r18.w + dp3 r20.x, cb3[r16.w + 6].xyzx, r15.xyzx + dp3 r20.y, cb3[r16.w + 7].xyzx, r15.xyzx + dp3 r20.z, cb3[r16.w + 8].xyzx, r15.xyzx + add r21.xyz, -r17.xyzx, cb3[r16.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r17.xyzx, -cb3[r16.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r18.w, r21.y, r21.x + min r18.w, r21.z, r18.w + mad r17.xyz, r20.xyzx, r18.wwww, r17.xyzx + else + mov r17.xyz, r15.xyzx + endif + dp3 r18.w, r17.xyzx, r17.xyzx + rsq r18.w, r18.w + mul r17.xyz, r17.xyzx, r18.wwww + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r21.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r18.w, r17.xyzx, r20.xyzx + div r17.xyz, r17.xyzx, r18.wwww + lt r17.z, r17.z, l(0.000000) + add r20.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r20.xy, r20.zwzz, r20.xyxx + movc r17.xy, r17.zzzz, r20.xyxx, r17.xyxx + dp4 r17.z, cb3[r16.w + 4].xyzw, r6.xyzw + max r17.z, r17.z, l(0.000000) + max r17.z, r17.z, l(0.000100) + min r18.w, r19.z, r19.y + min r18.w, r18.w, r19.x + add r18.x, r18.y, r18.x + mad r18.x, r18.z, r18.z, r18.x + mad r17.w, r17.w, r17.w, -r18.x + mul r17.w, r17.w, cb3[r16.w + 9].x + mul r17.w, r17.w, cb3[r16.w + 9].x + add r18.x, l(1.000000), -cb3[r16.w + 10].y + mul r17.w, r17.w, r18.x + mul r17.w, r17.w, l(100.000000) + mad_sat r17.w, r18.w, cb3[r16.w + 10].y, r17.w + mul r18.x, r17.w, cb3[r16.w + 10].w + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r19.xy, r17.xyxx, cb3[1].wwww, cb3[2].wwww + mov r19.z, cb3[r16.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r18.yzw, r19.xyzx, t4.wxyz, s3, r3.w + mul r18.yzw, r18.yyzw, cb3[r16.w + 9].wwww + div r17.x, r5.w, r17.z + min r17.x, |r17.x|, l(1.000000) + mad r17.x, r17.x, l(2.000000), r5.w + add r17.y, r17.z, l(2.000000) + div r17.x, r17.x, r17.y + add r17.x, r17.x, l(-1.000000) + mad r17.x, r17.x, cb0[112].w, l(1.000000) + mul r17.xyz, r17.xxxx, r18.yzwy + mul r17.xyz, r18.xxxx, r17.xyzx + mad r16.xyz, r17.xyzx, r7.wwww, r16.xyzx + mad r16.w, -r17.w, cb3[r16.w + 10].w, l(1.000000) + mul r7.w, r7.w, r16.w + endif + mov r12.w, l(-1) + continue + else + mov r12.w, r15.w + break + endif + mov r12.w, r15.w +endloop +if_nz r12.w + dp3 r1.w, r15.xyzx, r15.xyzx + rsq r1.w, r1.w + mul r17.xyz, r1.wwww, r15.xyzx + lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r19.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r18.xyz, -r18.xyzx, r19.xyzx + itof r18.xyz, r18.xyzx + dp3 r1.w, r17.xyzx, r18.xyzx + div r17.xyz, r17.xyzx, r1.wwww + lt r1.w, r17.z, l(0.000000) + add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r17.zw, r17.zzzw, r18.xxxy + movc r17.xy, r1.wwww, r17.zwzz, r17.xyxx + mov r6.w, l(1.000000) + dp4 r1.w, cb3[3].xyzw, r6.xyzw + max r1.w, r1.w, l(0.000000) + max r1.w, r1.w, l(0.000100) + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r17.xy, r17.xyxx, cb3[1].wwww, cb3[2].wwww + mov r17.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t4.xyzw, s3, r3.w + div r3.w, r5.w, r1.w + min r3.w, |r3.w|, l(1.000000) + mad r3.w, r3.w, l(2.000000), r5.w + add r1.w, r1.w, l(2.000000) + div r1.w, r3.w, r1.w + add r1.w, r1.w, l(-1.000000) + mad r1.w, r1.w, cb0[112].w, l(1.000000) + mul r17.xyz, r1.wwww, r17.xyzx + mad r16.xyz, r17.xyzx, r7.wwww, r16.xyzx +endif +mul r16.xyz, r16.xyzx, cb0[112].zzzz +// === Glass Fix: Reduce reflection probe intensity === +lt r32.x, l(0.500000), cb13[14].x +if_nz r32.x + mul r16.xyz, r16.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) +endif +mul r16.xyz, r16.xyzx, cb0[111].yyyy +ne r1.w, l(0.000000), cb0[112].y +if_nz r1.w + sample_b_indexable(texture2d)(float,float,float,float) r1.w, r0.xyxx, t3.yzwx, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r17.xyz, r0.xyxx, t2.xyzw, s1, cb0[108].x + add r0.x, -r1.w, l(1.000000) + mul r18.xyz, r0.xxxx, r16.xyzx + mad r16.xyz, r17.xyzx, r1.wwww, r18.xyzx +endif +mul r2.xyz, r9.xywx, r2.xyzx +add r0.x, r9.z, l(-1.000000) +mad r0.x, cb2[1].x, r0.x, l(1.000000) +mul r2.xyz, r0.xxxx, r2.xyzx +mul_sat r0.x, r7.y, l(50.000000) +mul r0.x, r13.y, r0.x +mad r17.xyz, r7.xyzx, r13.xxxx, r0.xxxx +mul r16.xyz, r16.xyzx, r17.xyzx +mad r2.xyz, r2.xyzx, cb0[111].xxxx, r16.xyzx +lt r0.x, cb6[35].w, l(0.990000) +if_nz r0.x + ftoi r0.x, cb6[35].x + ieq r0.y, r0.x, l(2) + movc r16.xyz, r0.yyyy, cb6[20].xyzx, cb0[44].xyzx + add r16.xyz, r1.xyzx, -r16.xyzx + dp3 r0.y, r16.xyzx, r16.xyzx + add r0.y, -r0.y, cb6[34].w + mul_sat r0.y, r0.y, cb6[34].z + lt r1.w, l(0.000000), r0.y + if_nz r1.w + ilt r0.x, l(0), r0.x + if_nz r0.x + add r16.xyz, r1.xyzx, -cb6[20].xyzx + add r17.xyz, r1.xyzx, -cb6[21].xyzx + add r18.xyz, r1.xyzx, -cb6[22].xyzx + add r19.xyz, r1.xyzx, -cb6[23].xyzx + dp3 r16.x, r16.xyzx, r16.xyzx + dp3 r16.y, r17.xyzx, r17.xyzx + dp3 r16.z, r18.xyzx, r18.xyzx + dp3 r16.w, r19.xyzx, r19.xyzx + lt r17.x, r16.x, cb6[20].w + lt r17.y, r16.y, cb6[21].w + lt r17.z, r16.z, cb6[22].w + lt r17.w, r16.w, cb6[23].w + and r18.xyzw, r17.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) + movc r17.xyz, r17.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) + add r17.xyz, r17.xyzx, r18.yzwy + max r18.yzw, r17.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) + dp4 r0.x, r18.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) + add r0.x, -r0.x, l(4.000000) + max r0.x, r0.x, l(0.000000) + min r0.x, r0.x, l(3.000000) + add r1.w, r0.x, l(1.000000) + min r1.w, r1.w, l(3.000000) + ftou r1.w, r1.w + dp3 r3.w, r16.yzwy, icb[r1.w + 0].yzwy + div r1.w, r3.w, cb6[r1.w + 20].w + ge r3.w, r1.w, l(0.000000) + ge r1.w, l(1.000000), r1.w + and r1.w, r1.w, r3.w + if_nz r1.w + ftou r1.w, r0.x + add r13.xy, r13.zwzz, l(2.083000, 4.867000, 0.000000, 0.000000) + dp2 r3.w, r13.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r3.w, r3.w + mul r3.w, r3.w, l(52.982918) + frc r3.w, r3.w + dp4 r4.w, r16.xyzw, icb[r1.w + 0].xyzw + div r1.w, r4.w, cb6[r1.w + 20].w + sqrt r1.w, r1.w + add r1.w, r1.w, l(-0.900000) + mul r1.w, r1.w, l(12.000000) + ge r1.w, r1.w, r3.w + and r1.w, r1.w, l(0x3f800000) + add r0.x, r0.x, r1.w + endif + dp3 r1.w, r6.xyzx, cb5[0].xyzx + max r1.w, r1.w, l(0.000000) + min r1.w, r1.w, l(0.900000) + add r1.w, -r1.w, l(1.000000) + ftou r3.w, r0.x + ishl r4.w, r3.w, l(2) + mul r13.xy, r1.wwww, cb6[r3.w + 24].xyxx + max r1.w, r13.x, l(0.000000) + mad r16.xyz, -cb5[0].xyzx, r1.wwww, r1.xyzx + mad r16.xyz, r6.xyzx, r13.yyyy, r16.xyzx + mul r17.xyz, r16.yyyy, cb6[r4.w + 1].xyzx + mad r16.xyw, cb6[r4.w + 0].xyxz, r16.xxxx, r17.xyxz + mad r16.xyz, cb6[r4.w + 2].xyzx, r16.zzzz, r16.xywx + add r16.xyz, r16.xyzx, cb6[r4.w + 3].xyzx + ge r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + ge r18.xyz, r16.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + or r17.xyz, r17.xyzx, r18.xyzx + or r1.w, r17.y, r17.x + or r1.w, r17.z, r1.w + and r3.w, r16.z, l(0x7fffffff) + ult r3.w, l(0x7f800000), r3.w + or r17.z, r1.w, r3.w + ftoi r0.x, r0.x + mad r13.xy, r16.xyxx, cb6[r0.x + 28].zwzz, cb6[r0.x + 28].xyxx + mad r16.xy, r13.xyxx, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r16.xy, r16.xyxx + mad r13.xy, r13.xyxx, cb6[32].zwzz, -r16.xyxx + add r18.xyzw, r13.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r19.xw, r18.xxxz, r18.xxxz + min r18.xz, r13.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r20.xy, r13.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r20.zw, r19.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r13.xxxy + add r13.xy, -r13.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mad r13.xy, -r18.xzxx, r18.xzxx, r13.xyxx + mad r18.xy, -r20.xyxx, r20.xyxx, r18.ywyy + mov r21.x, r20.z + mov r21.y, r13.x + mov r21.z, r18.x + mov r21.w, r19.x + mul r21.xyzw, r21.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r19.x, r20.w + mov r19.y, r13.y + mov r19.z, r18.y + mul r18.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r19.xyzw, r21.ywyw, r21.xzxz + add r20.xyzw, r18.yyww, r18.xxzz + div r13.xy, r21.ywyy, r19.zwzz + add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) + mul r21.xy, r13.xyxx, cb6[32].xxxx + div r13.xy, r18.ywyy, r20.ywyy + add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) + mul r21.zw, r13.xxxy, cb6[32].yyyy + mul r18.xyzw, r19.xyzw, r20.xyzw + mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r19.xyxx, t10.xxxx, s4, r16.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t10.xxxx, s4, r16.z + mul r1.w, r1.w, r18.y + mad r0.x, r18.x, r0.x, r1.w + mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.xyxx, t10.xxxx, s4, r16.z + mad r0.x, r18.z, r1.w, r0.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t10.xxxx, s4, r16.z + mad r0.x, r18.w, r1.w, r0.x + movc r17.x, r17.z, l(1.000000), r0.x + else + mov r17.xz, l(1.000000,0,0,0) + endif + else + mov r17.xz, l(1.000000,0,0,0) + endif + lt r0.x, r0.y, l(1.000000) + if_nz r0.x + dp3 r0.x, r6.xyzx, cb5[0].xyzx + max r0.x, r0.x, l(0.000000) + min r0.x, r0.x, l(0.900000) + add r0.x, -r0.x, l(1.000000) + mul r13.xy, r0.xxxx, cb6[584].xyxx + mad r16.xyz, -cb5[0].xyzx, r13.xxxx, r1.xyzx + mad r16.xyz, r6.xyzx, r13.yyyy, r16.xyzx + mul r13.xy, r16.yyyy, cb6[581].xyxx + mad r13.xy, cb6[580].xyxx, r16.xxxx, r13.xyxx + mad r13.xy, cb6[582].xyxx, r16.zzzz, r13.xyxx + add r13.xy, r13.xyxx, cb6[583].xyxx + lt r18.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r13.xyxx + and r0.x, r18.y, r18.x + lt r18.xy, r13.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + and r1.w, r18.y, r18.x + and r0.x, r0.x, r1.w + if_nz r0.x + mul r0.x, r13.y, cb6[585].z + round_ni r0.x, r0.x + add r0.x, r13.x, r0.x + mul r0.x, r0.x, cb6[585].y + ftou r0.x, r0.x + umin r0.x, r0.x, l(127) + and r1.w, l(0x0000ffff), cb6[r0.x + 587].x + f16tof32 r13.x, r1.w + ge r1.w, r13.x, l(0.000000) + if_nz r1.w + mov r18.x, cb6[576].x + mov r18.y, cb6[577].x + mov r18.z, cb6[578].x + mov r18.w, cb6[r0.x + 587].y + mov r16.w, l(1.000000) + dp4 r18.x, r18.xyzw, r16.xyzw + mov r19.x, cb6[576].y + mov r19.y, cb6[577].y + mov r19.z, cb6[578].y + mov r19.w, cb6[r0.x + 587].z + dp4 r18.y, r19.xyzw, r16.xyzw + mov r19.x, cb6[576].z + mov r19.y, cb6[577].z + mov r19.z, cb6[578].z + mov r19.w, cb6[r0.x + 587].w + dp4 r1.w, r19.xyzw, r16.xyzw + lt r16.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyxx + lt r3.w, l(0.000000), r1.w + and r4.w, r16.y, r16.x + and r3.w, r3.w, r4.w + lt r16.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + lt r4.w, r1.w, l(1.000000) + and r5.w, r16.y, r16.x + and r4.w, r4.w, r5.w + and r3.w, r3.w, r4.w + if_nz r3.w + ushr r0.x, cb6[r0.x + 587].x, l(16) + f16tof32 r13.y, r0.x + mad r13.xy, r18.xyxx, cb6[584].zwzz, r13.xyxx + mad r16.xy, r13.xyxx, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r16.xy, r16.xyxx + mad r13.xy, r13.xyxx, cb6[586].zwzz, -r16.xyxx + add r18.xyzw, r13.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r19.xw, r18.xxxz, r18.xxxz + min r16.zw, r13.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r18.xz, r13.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r20.xy, r19.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r13.xyxx + add r13.xy, -r13.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mad r13.xy, -r16.zwzz, r16.zwzz, r13.xyxx + mad r16.zw, -r18.xxxz, r18.xxxz, r18.yyyw + mov r18.x, r20.x + mov r18.y, r13.x + mov r18.z, r16.z + mov r18.w, r19.x + mul r18.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r19.x, r20.y + mov r19.y, r13.y + mov r19.z, r16.w + mul r19.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r20.xyzw, r18.ywyw, r18.xzxz + add r21.xyzw, r19.yyww, r19.xxzz + div r13.xy, r18.ywyy, r20.zwzz + add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) + mul r18.xy, r13.xyxx, cb6[586].xxxx + div r13.xy, r19.ywyy, r21.ywyy + add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) + mul r18.zw, r13.xxxy, cb6[586].yyyy + mul r19.xyzw, r20.xyzw, r21.xyzw + mad r20.xyzw, r16.xyxy, cb6[586].xyxy, r18.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r20.xyxx, t13.xxxx, s4, r1.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r20.zwzz, t13.xxxx, s4, r1.w + mul r3.w, r3.w, r19.y + mad r0.x, r19.x, r0.x, r3.w + mad r16.xyzw, r16.xyxy, cb6[586].xyxy, r18.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r16.xyxx, t13.xxxx, s4, r1.w + mad r0.x, r19.z, r3.w, r0.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r16.zwzz, t13.xxxx, s4, r1.w + mad r17.y, r19.w, r1.w, r0.x + else + mov r17.y, l(1.000000) + endif + else + mov r17.y, l(1.000000) + endif + else + mov r17.y, l(1.000000) + endif + movc r17.x, r17.z, r17.y, r17.x + else + mov r17.y, l(1.000000) + endif + add r0.x, -r17.y, r17.x + mad r0.x, r0.y, r0.x, r17.y + lt r0.y, l(0.001000), r0.x + if_nz r0.y + add r16.xyz, r1.xyzx, -cb0[173].xyzx + mad r13.xy, cb0[176].xzxx, r16.yyyy, r16.xzxx + mul r16.yw, r13.xxxy, cb0[174].zzzz + mul r17.xy, cb0[175].xyxx, cb0[183].wwww + mad r13.xy, r13.xyxx, cb0[174].zzzz, r17.xyxx + sample_l_indexable(texture2d)(float,float,float,float) r0.y, r13.xyxx, t12.yxzw, s2, l(0.000000) + mad r13.xy, r16.ywyy, cb0[175].wwww, r17.xyxx + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r13.xyxx, t12.yzwx, s2, l(0.000000) + dp2 r3.w, r16.xzxx, r16.xzxx + sqrt r3.w, r3.w + add r4.w, -cb0[174].x, cb0[174].y + add r3.w, r3.w, -cb0[174].x + div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul_sat r3.w, r3.w, r4.w + mad r4.w, r3.w, l(-2.000000), l(3.000000) + mul r3.w, r3.w, r3.w + mul r3.w, r3.w, r4.w + add r1.w, -r0.y, r1.w + mad r0.y, r3.w, r1.w, r0.y + add r0.y, r0.y, l(-1.000000) + mad r0.y, cb0[175].z, r0.y, l(1.000000) + mul r0.x, r0.y, r0.x + endif + add r0.y, -r0.x, cb6[35].z + mad r0.x, cb6[35].w, r0.y, r0.x +else + mov r0.x, cb6[35].z +endif +min r0.x, r0.x, l(1.000000) +add r0.x, r0.x, l(-1.000000) +mad r0.x, cb6[34].x, r0.x, l(1.000000) +lt r1.w, l(0.001000), r0.x +if_nz r1.w + dp3 r1.w, -cb5[0].xyzx, r15.xyzx + mad r16.xyz, cb5[0].xyzx, r1.wwww, r15.xyzx + lt r1.w, r1.w, cb5[4].z + dp3 r3.w, r16.xyzx, r16.xyzx + max r3.w, r3.w, l(0.0000610351562) + rsq r3.w, r3.w + mul r16.xyz, r3.wwww, r16.xyzx + mul r16.xyz, r16.xyzx, cb5[4].yyyy + mad r16.xyz, -cb5[0].xyzx, cb5[4].zzzz, r16.xyzx + dp3 r3.w, r16.xyzx, r16.xyzx + rsq r3.w, r3.w + mul r16.xyz, r3.wwww, r16.xyzx + movc r16.xyz, r1.wwww, r16.xyzx, r15.xyzx + mad r17.xyz, r3.xyzx, r2.wwww, r16.xyzx + dp3 r1.w, r17.xyzx, r17.xyzx + max r1.w, r1.w, l(0.0000610351562) + rsq r1.w, r1.w + mul r17.xyz, r1.wwww, r17.xyzx + dp3_sat r11.y, r16.xyzx, r6.xyzx + dp3_sat r1.w, r6.xyzx, r17.xyzx + min r11.z, r0.z, l(1.000000) + mul r3.w, r11.w, r11.w + mul r3.w, r3.w, r3.w + mad r4.w, r1.w, r3.w, -r1.w + mad r1.w, r4.w, r1.w, l(1.000000) + dp3_sat r4.w, r5.xyzx, r17.xyzx + add r4.w, -r4.w, l(1.000000) + mul r5.w, r4.w, r4.w + mul r5.w, r5.w, r5.w + mul r6.w, r4.w, r5.w + add r7.w, -r11.w, l(1.000000) + mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) + mad r8.w, r7.w, r8.w, l(1.049970) + mad r7.w, r7.w, r8.w, l(0.409255) + min r7.w, r7.w, l(0.999000) + add r8.w, -r7.w, l(1.000000) + add r16.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx + mad r4.w, -r5.w, r4.w, l(1.000000) + mad r17.xyz, r7.xyzx, r4.wwww, r6.wwww + mul r1.w, r1.w, r1.w + div r1.w, r3.w, r1.w + mad r13.xy, -r11.zyzz, r3.wwww, r11.zyzz + mad r13.xy, r13.xyxx, r11.zyzz, r3.wwww + sqrt r13.xy, r13.xyxx + mul r13.xy, r11.yzyy, r13.xyxx + add r3.w, r13.y, r13.x + add r3.w, r3.w, l(0.000100) + div r3.w, l(0.500000), r3.w + mul r1.w, r1.w, r3.w + mul r17.xyz, r1.wwww, r17.xyzx + min r17.xyz, r17.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r18.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r18.xyxx, t15.yzwx, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r3.w, r18.zwzz, t15.yzwx, s1, l(0.000000) + mul r1.w, r1.w, r3.w + mul r1.w, r7.w, r1.w + div r1.w, r1.w, r8.w + mul r18.xyz, r16.xyzx, r16.xyzx + mul r18.xyz, r1.wwww, r18.xyzx + mad r16.xyz, -r16.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r16.xyz, r18.xyzx, r16.xyzx + add r16.xyz, r16.xyzx, r17.xyzx + mul r16.xyz, r16.xyzx, cb5[4].xxxx + // === Glass Fix: Reduce sun specular intensity === + lt r32.x, l(0.500000), cb13[14].x + if_nz r32.x + mul r16.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + endif + max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r16.xyz, r16.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + max r1.w, r10.w, l(0.010000) + div r16.xyz, r16.xyzx, r1.wwww + min r16.xyz, r16.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r17.xyz, r9.xywx, r11.yyyy + mad r16.xyz, r16.xyzx, r11.yyyy, r17.xyzx + mul r16.xyz, r16.xyzx, cb5[1].xyzx + mov r0.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r17.xyz, r0.xyxx, t14.xyzw, s1, cb0[108].x + add r0.x, -r0.x, l(1.000000) + mad r17.xyz, r16.xyzx, r17.xyzx, -r16.xyzx + mad r16.xyz, r0.xxxx, r17.xyzx, r16.xyzx +else + mov r16.xyz, l(0,0,0,0) +endif +mul r0.xy, r13.zwzz, l(0.031250, 0.031250, 0.000000, 0.000000) +round_ni r0.xy, r0.xyxx +mad r0.x, r0.y, cb4[1].y, r0.x +mul r0.x, r0.x, l(8.000000) +ftoi r0.x, r0.x +mad r0.y, -cb0[85].y, cb4[2].w, r14.z +round_ni r0.y, r0.y +add r1.w, l(-1.000000), cb4[1].w +max r3.w, r0.y, l(0.000000) +min r1.w, r1.w, r3.w +mul r3.w, r1.w, l(8.000000) +ftoi r3.w, r3.w +ge r0.y, r1.w, r0.y +iadd r1.w, r3.w, cb0[110].y +mul r3.w, r11.w, r11.w +min r11.x, r0.z, l(1.000000) +add r0.z, -r11.w, l(1.000000) +mad r4.w, -r0.z, l(0.383026), l(-0.0761947036) +mad r4.w, r0.z, r4.w, l(1.049970) +mad r0.z, r0.z, r4.w, l(0.409255) +min r0.z, r0.z, l(0.999000) +add r4.w, -r0.z, l(1.000000) +add r17.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r17.xyz, r17.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx +mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r5.w, r11.yzyy, t15.yzwx, s1, l(0.000000) +mad r18.xyz, -r17.xyzx, r4.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r17.xyz, r17.xyzx, r17.xyzx +mov r19.w, l(1.000000) +mov r13.y, l(1.000000) +mov r20.z, r11.w +mov r21.xyz, l(0,0,0,0) +mov r6.w, l(1.000000) +mov r7.w, l(0) +loop + ilt r8.w, l(7), r7.w + breakc_nz r8.w + iadd r8.w, r0.x, r7.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r8.w, r8.w, l(0), t0.xxxx + iadd r9.z, r1.w, r7.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.z, r9.z, l(0), t0.xxxx + and r8.w, r8.w, r9.z + and r8.w, r0.y, r8.w + ishl r9.z, r7.w, l(5) + mov r22.xyz, l(0,0,0,0) + mov r11.y, r6.w + mov r11.z, r8.w + loop + breakc_z r11.z + firstbit_lo r12.w, r11.z + ishl r15.w, l(1), r12.w + xor r15.w, r11.z, r15.w + iadd r12.w, r9.z, r12.w + bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r12.wwww, l(1, 3, 5, 6) + bfi r16.w, l(29), l(3), r12.w, l(7) + ftou r17.w, cb5[r23.z + 6].w + ieq r17.w, r17.w, l(1) + if_nz r17.w + add r19.xyz, r1.xyzx, -cb5[r23.x + 6].xyzx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r23.z + 6].xzyx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r23.w + 6].yxzy + ushr r26.xyz, cb5[r23.z + 6].xzyx, l(16, 16, 16, 0) + ushr r27.xyz, cb5[r23.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyw, r27.yxyz + mov r28.xz, r24.xxzx + mov r28.yw, r26.xxxz + dp4 r17.w, r19.xyzw, r28.xyzw + mov r26.x, r24.y + mov r26.z, r25.y + mov r26.w, r27.x + dp4 r18.w, r19.xyzw, r26.xyzw + mov r27.xz, r25.xxzx + dp4 r19.x, r19.xyzw, r27.xyzw + max r17.w, |r17.w|, |r18.w| + max r17.w, |r19.x|, r17.w + mad r18.w, cb5[r16.w + 6].x, l(0.500000), l(0.500000) + add r17.w, r17.w, -r18.w + mad r18.w, -cb5[r16.w + 6].x, l(0.500000), l(0.500000) + div_sat r17.w, r17.w, r18.w + add r17.w, -r17.w, l(1.000000) + mul r17.w, r17.w, r17.w + else + mov r17.w, l(1.000000) + endif + lt r18.w, l(0.500000), cb5[r23.y + 6].z + lt r19.x, r17.w, l(0.001000) + or r19.x, r18.w, r19.x + if_nz r19.x + mov r11.z, r15.w + continue + endif + ishl r19.x, r12.w, l(3) + bfi r12.w, l(29), l(3), r12.w, l(2) + lt r19.y, cb5[r19.x + 6].w, l(1.500000) + if_nz r19.y + mad r19.y, cb5[r12.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r19.y, -|cb5[r12.w + 6].x| + add r24.y, -r24.x, cb5[r12.w + 6].y + add r19.y, -|r24.x|, l(1.000000) + add r19.y, -|r24.y|, r19.y + max r19.y, r19.y, l(0.000488281250) + ge r19.z, cb5[r12.w + 6].x, l(0.000000) + movc r24.z, r19.z, r19.y, -r19.y + dp3 r19.y, r24.xyzx, r24.xyzx + rsq r19.y, r19.y + mul r24.xyz, r19.yyyy, r24.xyzx + add r25.xyz, -r1.xyzx, cb5[r23.x + 6].xyzx + dp3 r19.y, r25.xyzx, r25.xyzx + rsq r19.z, r19.y + mul r26.xyz, r19.zzzz, r25.xyzx + ftoi r20.w, cb5[r16.w + 6].w + mul r27.xyz, r24.xyzx, cb5[r12.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r21.w, cb5[r19.x + 6].w + and r21.w, r21.w, l(1) + ieq r22.w, r21.w, l(0) + not r22.w, r22.w + lt r23.z, l(0.000000), cb5[r12.w + 6].z + and r22.w, r22.w, r23.z + dp3 r23.z, r28.xyzx, r28.xyzx + sqrt r23.z, r23.z + dp3 r24.w, r29.xyzx, r29.xyzx + sqrt r24.w, r24.w + dp3 r25.w, r6.xyzx, r28.xyzx + div r25.w, r25.w, r23.z + dp3 r26.w, r6.xyzx, r29.xyzx + div r26.w, r26.w, r24.w + add r25.w, r25.w, r26.w + mul_sat r30.x, r25.w, l(0.500000) + dp3 r25.w, r28.xyzx, r29.xyzx + mad r23.z, r23.z, r24.w, r25.w + mad r23.z, r23.z, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r23.z + dp3_sat r13.x, r6.xyzx, r26.xyzx + movc r20.xy, r22.wwww, r30.xyxx, r13.xyxx + lt r13.x, cb5[r23.w + 6].w, l(0.000000) + if_nz r13.x + mul r13.x, cb5[r23.x + 6].w, cb5[r23.x + 6].w + mul r13.x, r13.x, r19.y + mad r13.x, -r13.x, r13.x, l(1.000000) + max r13.x, r13.x, l(0.000000) + add r19.y, r19.y, l(1.000000) + div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), r19.y + and r23.z, r22.w, l(0x3f800000) + add r24.w, -r19.y, r20.y + mad r19.y, r23.z, r24.w, r19.y + mul r13.x, r13.x, r13.x + mul r13.x, r13.x, r19.y + else + mul r29.xyz, r25.xyzx, cb5[r23.x + 6].wwww + dp3 r19.y, r29.xyzx, r29.xyzx + min r19.y, r19.y, l(1.000000) + add r19.y, -r19.y, l(1.000000) + log r19.y, r19.y + mul r19.y, r19.y, cb5[r23.w + 6].w + exp r19.y, r19.y + mul r13.x, r19.y, r20.y + endif + dp3 r19.y, r26.xyzx, -r24.xyzx + add r19.y, r19.y, -cb5[r12.w + 6].z + mul_sat r19.y, r19.y, cb5[r12.w + 6].w + mul r19.y, r19.y, r19.y + movc r19.y, r21.w, l(1.000000), r19.y + mul r13.x, r13.x, r19.y + not r19.y, r22.w + ige r20.y, r20.w, l(0) + and r19.y, r19.y, r20.y + if_nz r19.y + if_z r21.w + ishl r19.y, r20.w, l(2) + mul r24.xyz, r1.yyyy, cb7[r19.y + 33].xywx + mad r24.xyz, cb7[r19.y + 32].xywx, r1.xxxx, r24.xyzx + mad r24.xyz, cb7[r19.y + 34].xywx, r1.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb7[r19.y + 35].xywx + div_sat r24.xy, r24.xyxx, r24.zzzz + mad r24.xy, r24.xyxx, cb7[r20.w + 0].zwzz, cb7[r20.w + 0].xyxx + else + ishl r19.y, r20.w, l(2) + dp3 r29.x, -r25.xyzx, cb7[r19.y + 32].xyzx + dp3 r29.y, -r25.xyzx, cb7[r19.y + 33].xyzx + dp3 r29.z, -r25.xyzx, cb7[r19.y + 34].xyzx + lt r19.y, |r29.x|, |r29.y| + and r19.y, r19.y, l(1) + dp2 r20.y, |r29.xyxx|, icb[r19.y + 0].xyxx + lt r20.y, r20.y, |r29.z| + movc r19.y, r20.y, l(2), r19.y + dp3 r20.y, r29.xyzx, icb[r19.y + 0].xyzx + lt r20.y, r20.y, l(0.000000) + bfi r19.y, l(31), l(1), r19.y, r20.y + ushr r20.y, r19.y, l(1) + dp3 r20.y, r29.xyzx, icb[r20.y + 0].xyzx + div r23.z, l(0.000244140625), cb7[r20.w + 0].w + add r23.z, -r23.z, l(0.500000) + utof r24.z, r19.y + ult r24.w, r19.y, l(2) + and r24.w, r24.w, l(2) + dp2 r24.w, r29.xzxx, icb[r24.w + 0].xzxx + mul r24.w, r24.w, icb[r19.y + 4].z + div r24.w, r24.w, |r20.y| + mad r24.z, r24.w, r23.z, r24.z + add r24.z, r24.z, l(0.500000) + mul_sat r25.x, r24.z, l(0.166666672) + iadd r24.z, l(-1), icb[r19.y + 4].y + dp2 r24.z, r29.yzyy, icb[r24.z + 0].xyxx + mul r19.y, r24.z, icb[r19.y + 4].w + div r19.y, r19.y, |r20.y| + mad_sat r25.y, -r19.y, r23.z, l(0.500000) + mad r24.xy, r25.xyxx, cb7[r20.w + 0].zwzz, cb7[r20.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r19.y, r24.xyxx, t23.yxzw, s1, l(0.000000) + mul r13.x, r13.x, r19.y + endif + lt r19.y, l(0.000000), r13.x + if_nz r19.y + if_z r21.w + ftoi r20.y, cb5[r23.y + 6].x + else + add r24.xyz, r1.xyzx, -cb5[r23.x + 6].xyzx + lt r25.xyz, |r24.yzzy|, |r24.xxyx| + and r20.w, r25.y, r25.x + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ushr r21.w, cb5[r12.w + 6].w, l(24) + ubfe r25.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r12.w + 6].wwww + movc r21.w, r24.x, r21.w, r25.x + and r23.z, l(255), cb5[r12.w + 6].w + movc r23.z, r24.y, r25.y, r23.z + ubfe r24.x, l(8), l(8), cb5[r23.y + 6].x + and r24.y, l(255), cb5[r23.y + 6].x + movc r24.x, r24.z, r24.x, r24.y + movc r23.z, r25.z, r23.z, r24.x + movc r20.w, r20.w, r21.w, r23.z + ilt r21.w, r20.w, l(80) + movc r20.y, r21.w, r20.w, l(-1) + endif + mad r24.xyz, r26.xyzx, cb6[r20.y + 288].xxxx, r1.xyzx + mul r20.w, l(5.000000), cb6[r20.y + 288].y + mad r24.xyz, r6.xyzx, r20.wwww, r24.xyzx + ishl r20.w, r20.y, l(2) + mul r25.xyzw, r24.yyyy, cb6[r20.w + 65].xyzw + mad r25.xyzw, cb6[r20.w + 64].xyzw, r24.xxxx, r25.xyzw + mad r24.xyzw, cb6[r20.w + 66].xyzw, r24.zzzz, r25.xyzw + add r24.xyzw, r24.xyzw, cb6[r20.w + 67].xyzw + div r24.xyz, r24.xyzx, r24.wwww + ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ge r29.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r30.xy, -cb6[r20.y + 344].xyxx, cb6[r20.y + 344].zwzz + mad r24.xy, r24.xyxx, r30.xyxx, cb6[r20.y + 344].xyxx + mad r30.xy, r24.xyxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r30.xy, r30.xyxx + mad r24.xy, r24.xyxx, cb6[400].zwzz, -r30.xyxx + add r31.xyzw, r24.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r32.xyzw, r31.xxzz, r31.xxzz + add r30.zw, -r24.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r31.xz, r24.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r33.xy, r24.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r34.xy, r30.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy + add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r24.xy, r32.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r24.xyxx + mul r35.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r24.xy, -r31.xzxx, r31.xzxx, r30.zwzz + add r24.xy, r24.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r36.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r24.xy, r31.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r35.z, r36.x + mov r35.w, r24.x + mov r34.z, r33.x + mov r34.w, r32.x + add r31.xyzw, r34.zwxz, r35.zwxz + mov r36.z, r35.y + mov r36.w, r24.y + mov r33.z, r34.y + mov r33.w, r32.z + add r24.xyw, r33.zyzw, r36.zyzw + div r32.xyz, r34.xzwx, r31.zwyz + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyz, r32.xyzx, cb6[400].xxxx + div r33.xyz, r33.zywz, r24.xywx + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyw, r33.xyxz, cb6[400].yyyy + mul r34.xyzw, r24.xxxy, r31.zwyz + mov r32.w, r33.x + mad r35.xyzw, r30.xyxy, cb6[400].xyxy, r32.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r35.xyxx, t11.xxxx, s4, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r35.zwzz, t11.xxxx, s4, r24.z + mul r21.w, r21.w, r34.y + mad r20.w, r34.x, r20.w, r21.w + mad r30.zw, r30.xxxy, cb6[400].xxxy, r32.zzzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r30.zwzz, t11.xxxx, s4, r24.z + mad r20.w, r34.z, r21.w, r20.w + mov r33.z, r32.x + mad r35.xyzw, r30.xyxy, cb6[400].xyxy, r33.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r35.xyxx, t11.xxxx, s4, r24.z + mad r20.w, r34.w, r21.w, r20.w + mul r34.xyzw, r24.yyww, r31.xyzw + mov r33.xz, r32.yyzy + mad r32.xyzw, r30.xyxy, cb6[400].xyxy, r33.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r32.xyxx, t11.xxxx, s4, r24.z + mad r20.w, r34.x, r21.w, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r32.zwzz, t11.xxxx, s4, r24.z + mad r20.w, r34.y, r21.w, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r35.zwzz, t11.xxxx, s4, r24.z + mad r20.w, r34.z, r21.w, r20.w + ige r21.w, r20.y, l(0) + or r25.xyz, r25.xyzx, r29.xyzx + or r23.z, r25.y, r25.x + or r23.z, r25.z, r23.z + and r24.x, r24.z, l(0x7fffffff) + ult r24.x, l(0x7f800000), r24.x + or r23.z, r23.z, r24.x + mad r25.xyzw, r30.xyxy, cb6[400].xyxy, r33.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r25.xyxx, t11.xxxx, s4, r24.z + mad r20.w, r34.w, r24.x, r20.w + mul r24.x, r24.w, r31.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r25.zwzz, t11.xxxx, s4, r24.z + mad r20.w, r24.x, r24.y, r20.w + add r20.w, r20.w, l(-1.000000) + mad r20.y, cb6[r20.y + 288].w, r20.w, l(1.000000) + movc r20.y, r23.z, l(1.000000), r20.y + movc r20.y, r21.w, r20.y, l(1.000000) + else + mov r20.y, l(1.000000) + endif + if_nz r22.w + dp3 r20.w, r15.xyzx, r27.xyzx + mul_sat r21.w, r19.z, cb5[r12.w + 6].z + mad r21.w, r21.w, l(0.500000), r3.w + min r21.w, r21.w, l(1.000000) + div r21.w, r3.w, r21.w + mad r24.xyz, r15.xyzx, r20.wwww, -r27.xyzx + dp3 r22.w, r28.xyzx, r24.xyzx + mul r20.w, r20.w, r20.w + mad r20.w, cb5[r12.w + 6].z, cb5[r12.w + 6].z, -r20.w + div_sat r20.w, r22.w, r20.w + mad r24.xyz, r27.xyzx, r20.wwww, r28.xyzx + dp3 r20.w, r24.xyzx, r24.xyzx + rsq r20.w, r20.w + mul r26.xyz, r20.wwww, r24.xyzx + else + mov r21.w, l(1.000000) + endif + if_nz r19.y + mul_sat r19.y, r19.z, cb5[r16.w + 6].y + mad r24.xyz, r3.xyzx, r2.wwww, r26.xyzx + dp3 r19.z, r24.xyzx, r24.xyzx + max r19.z, r19.z, l(0.0000610351562) + rsq r19.z, r19.z + mul r24.xyz, r19.zzzz, r24.xyzx + dp3_sat r19.z, r6.xyzx, r24.xyzx + dp3_sat r20.w, r5.xyzx, r24.xyzx + lt r22.w, l(0.000000), r19.y + mul r19.y, r19.y, r19.y + mad r23.z, r20.w, l(3.600000), l(0.400000) + div r19.y, r19.y, r23.z + mad r19.y, r11.w, r11.w, r19.y + min r19.y, r19.y, l(1.000000) + movc r19.y, r22.w, r19.y, r3.w + mul r19.y, r19.y, r19.y + mad r22.w, r19.z, r19.y, -r19.z + mad r19.z, r22.w, r19.z, l(1.000000) + add r20.w, -r20.w, l(1.000000) + mul r22.w, r20.w, r20.w + mul r22.w, r22.w, r22.w + mul r23.z, r20.w, r22.w + mad r20.w, -r22.w, r20.w, l(1.000000) + mad r24.xyz, r7.xyzx, r20.wwww, r23.zzzz + mul r19.z, r19.z, r19.z + div r19.z, r19.y, r19.z + mul r19.z, r21.w, r19.z + mad r20.w, -r11.x, r19.y, r11.x + mad r20.w, r20.w, r11.x, r19.y + sqrt r20.w, r20.w + mad r21.w, -r20.x, r19.y, r20.x + mad r19.y, r21.w, r20.x, r19.y + sqrt r19.y, r19.y + mul r19.y, r11.x, r19.y + mad r19.y, r20.x, r20.w, r19.y + add r19.y, r19.y, l(0.000100) + div r19.y, l(0.500000), r19.y + mul r19.y, r19.y, r19.z + mul r24.xyz, r19.yyyy, r24.xyzx + min r24.xyz, r24.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r19.yz, r20.xxzx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r19.y, r19.yzyy, t15.yxzw, s1, l(0.000000) + mul r19.y, r5.w, r19.y + mul r19.y, r0.z, r19.y + div r19.y, r19.y, r4.w + mul r25.xyz, r17.xyzx, r19.yyyy + div r25.xyz, r25.xyzx, r18.xyzx + add r24.xyz, r24.xyzx, r25.xyzx + mul r24.xyz, r24.xyzx, cb5[r16.w + 6].zzzz + max r24.xyz, r24.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r24.xyz, r24.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r25.xyz, r9.xywx, r20.xxxx + mad r24.xyz, r24.xyzx, r20.xxxx, r25.xyzx + mul r25.xyz, r13.xxxx, cb5[r19.x + 6].xyzx + mul r20.xyw, r20.yyyy, r25.xyxz + mul r20.xyw, r17.wwww, r20.xyxw + mul r20.xyw, r20.xyxw, r24.xyxz + else + mov r20.xyw, l(0,0,0,0) + endif + else + if_z r18.w + mad r13.x, cb5[r12.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r13.x, -|cb5[r12.w + 6].x| + add r24.y, -r24.x, cb5[r12.w + 6].y + add r13.x, -|r24.x|, l(1.000000) + add r13.x, -|r24.y|, r13.x + max r13.x, r13.x, l(0.000488281250) + ge r17.w, cb5[r12.w + 6].x, l(0.000000) + movc r24.z, r17.w, r13.x, -r13.x + dp3 r13.x, r24.xyzx, r24.xyzx + rsq r13.x, r13.x + mul r24.xyz, r13.xxxx, r24.xyzx + add r25.xyz, -r1.xyzx, cb5[r23.x + 6].xyzx + dp3 r13.x, r25.xyzx, r25.xyzx + rsq r17.w, r13.x + mul r26.xyz, r17.wwww, r25.xyzx + ftoi r16.w, cb5[r16.w + 6].w + mul r27.xyz, r24.xyzx, cb5[r12.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r27.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r17.w, cb5[r19.x + 6].w + and r17.w, r17.w, l(1) + ieq r18.w, r17.w, l(0) + not r18.w, r18.w + lt r19.x, l(0.000000), cb5[r12.w + 6].z + and r18.w, r18.w, r19.x + dp3 r19.x, r28.xyzx, r28.xyzx + dp3 r19.y, r27.xyzx, r27.xyzx + sqrt r19.xy, r19.xyxx + dp3 r19.z, r28.xyzx, r27.xyzx + mad r19.x, r19.x, r19.y, r19.z + mad r19.x, r19.x, l(0.500000), l(1.000000) + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x + movc r19.x, r18.w, r19.x, l(1.000000) + lt r19.y, cb5[r23.w + 6].w, l(0.000000) + if_nz r19.y + mul r19.y, cb5[r23.x + 6].w, cb5[r23.x + 6].w + mul r19.y, r13.x, r19.y + mad r19.y, -r19.y, r19.y, l(1.000000) + max r19.y, r19.y, l(0.000000) + add r13.x, r13.x, l(1.000000) + div r13.x, l(1.000000, 1.000000, 1.000000, 1.000000), r13.x + and r19.z, r18.w, l(0x3f800000) + add r21.w, -r13.x, r19.x + mad r13.x, r19.z, r21.w, r13.x + mul r19.y, r19.y, r19.y + mul r13.x, r13.x, r19.y + else + mul r27.xyz, r25.xyzx, cb5[r23.x + 6].wwww + dp3 r19.y, r27.xyzx, r27.xyzx + min r19.y, r19.y, l(1.000000) + add r19.y, -r19.y, l(1.000000) + log r19.y, r19.y + mul r19.y, r19.y, cb5[r23.w + 6].w + exp r19.y, r19.y + mul r13.x, r19.y, r19.x + endif + dp3 r19.x, r26.xyzx, -r24.xyzx + add r19.x, r19.x, -cb5[r12.w + 6].z + mul_sat r19.x, r19.x, cb5[r12.w + 6].w + mul r19.x, r19.x, r19.x + movc r19.x, r17.w, l(1.000000), r19.x + mul r13.x, r13.x, r19.x + not r18.w, r18.w + ige r19.x, r16.w, l(0) + and r18.w, r18.w, r19.x + if_nz r18.w + if_z r17.w + ishl r18.w, r16.w, l(2) + mul r19.xyz, r1.yyyy, cb7[r18.w + 33].xywx + mad r19.xyz, cb7[r18.w + 32].xywx, r1.xxxx, r19.xyzx + mad r19.xyz, cb7[r18.w + 34].xywx, r1.zzzz, r19.xyzx + add r19.xyz, r19.xyzx, cb7[r18.w + 35].xywx + div_sat r19.xy, r19.xyxx, r19.zzzz + mad r19.xy, r19.xyxx, cb7[r16.w + 0].zwzz, cb7[r16.w + 0].xyxx + else + ishl r18.w, r16.w, l(2) + dp3 r24.x, -r25.xyzx, cb7[r18.w + 32].xyzx + dp3 r24.y, -r25.xyzx, cb7[r18.w + 33].xyzx + dp3 r24.z, -r25.xyzx, cb7[r18.w + 34].xyzx + lt r18.w, |r24.x|, |r24.y| + and r18.w, r18.w, l(1) + dp2 r19.z, |r24.xyxx|, icb[r18.w + 0].xyxx + lt r19.z, r19.z, |r24.z| + movc r18.w, r19.z, l(2), r18.w + dp3 r19.z, r24.xyzx, icb[r18.w + 0].xyzx + lt r19.z, r19.z, l(0.000000) + bfi r18.w, l(31), l(1), r18.w, r19.z + ushr r19.z, r18.w, l(1) + dp3 r19.z, r24.xyzx, icb[r19.z + 0].xyzx + div r21.w, l(0.000244140625), cb7[r16.w + 0].w + add r21.w, -r21.w, l(0.500000) + utof r22.w, r18.w + ult r23.z, r18.w, l(2) + and r23.z, r23.z, l(2) + dp2 r23.z, r24.xzxx, icb[r23.z + 0].xzxx + mul r23.z, r23.z, icb[r18.w + 4].z + div r23.z, r23.z, |r19.z| + mad r22.w, r23.z, r21.w, r22.w + add r22.w, r22.w, l(0.500000) + mul_sat r25.x, r22.w, l(0.166666672) + iadd r22.w, l(-1), icb[r18.w + 4].y + dp2 r22.w, r24.yzyy, icb[r22.w + 0].xyxx + mul r18.w, r22.w, icb[r18.w + 4].w + div r18.w, r18.w, |r19.z| + mad_sat r25.y, -r18.w, r21.w, l(0.500000) + mad r19.xy, r25.xyxx, cb7[r16.w + 0].zwzz, cb7[r16.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r16.w, r19.xyxx, t23.yzwx, s1, l(0.000000) + mul r13.x, r13.x, r16.w + endif + lt r13.x, l(0.000000), r13.x + if_nz r13.x + if_z r17.w + ftoi r13.x, cb5[r23.y + 6].x + else + add r19.xyz, r1.xyzx, -cb5[r23.x + 6].xyzx + lt r23.xzw, |r19.yyzz|, |r19.xxxy| + and r16.w, r23.z, r23.x + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + ushr r17.w, cb5[r12.w + 6].w, l(24) + ubfe r23.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb5[r12.w + 6].wwww + movc r17.w, r19.x, r17.w, r23.x + and r12.w, l(255), cb5[r12.w + 6].w + movc r12.w, r19.y, r23.z, r12.w + ubfe r18.w, l(8), l(8), cb5[r23.y + 6].x + and r19.x, l(255), cb5[r23.y + 6].x + movc r18.w, r19.z, r18.w, r19.x + movc r12.w, r23.w, r12.w, r18.w + movc r12.w, r16.w, r17.w, r12.w + ilt r16.w, r12.w, l(80) + movc r13.x, r16.w, r12.w, l(-1) + endif + mad r19.xyz, r26.xyzx, cb6[r13.x + 288].xxxx, r1.xyzx + mul r12.w, l(5.000000), cb6[r13.x + 288].y + mad r19.xyz, r6.xyzx, r12.wwww, r19.xyzx + ishl r12.w, r13.x, l(2) + mul r23.xyzw, r19.yyyy, cb6[r12.w + 65].xyzw + mad r23.xyzw, cb6[r12.w + 64].xyzw, r19.xxxx, r23.xyzw + mad r23.xyzw, cb6[r12.w + 66].xyzw, r19.zzzz, r23.xyzw + add r23.xyzw, r23.xyzw, cb6[r12.w + 67].xyzw + div r19.xyz, r23.xyzx, r23.wwww + ge r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + ge r24.xyz, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r25.xy, -cb6[r13.x + 344].xyxx, cb6[r13.x + 344].zwzz + mad r19.xy, r19.xyxx, r25.xyxx, cb6[r13.x + 344].xyxx + mad r25.xy, r19.xyxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r25.xy, r25.xyxx + mad r19.xy, r19.xyxx, cb6[400].zwzz, -r25.xyxx + add r26.xyzw, r19.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r25.zw, -r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r26.xz, r19.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r19.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r19.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r19.xyxx + mul r30.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r19.xy, -r26.xzxx, r26.xzxx, r25.zwzz + add r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r31.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r19.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r30.z, r31.x + mov r30.w, r19.x + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r19.y + mov r28.z, r29.y + mov r28.w, r27.z + add r27.xyz, r28.zywz, r31.zywz + div r29.xyz, r29.xzwx, r26.zwyz + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.xyzx, cb6[400].xxxx + div r28.xyz, r28.zywz, r27.xyzx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyw, r28.xyxz, cb6[400].yyyy + mul r30.xyzw, r26.zwyz, r27.xxxy + mov r29.w, r28.x + mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r29.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r12.w, r31.xyxx, t11.xxxx, s4, r19.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r31.zwzz, t11.xxxx, s4, r19.z + mul r16.w, r16.w, r30.y + mad r12.w, r30.x, r12.w, r16.w + mad r19.xy, r25.xyxx, cb6[400].xyxx, r29.zwzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r19.xyxx, t11.xxxx, s4, r19.z + mad r12.w, r30.z, r16.w, r12.w + mov r28.z, r29.x + mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r28.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r31.xyxx, t11.xxxx, s4, r19.z + mad r12.w, r30.w, r16.w, r12.w + mul r30.xyzw, r26.xyzw, r27.yyzz + mov r28.xz, r29.yyzy + mad r29.xyzw, r25.xyxy, cb6[400].xyxy, r28.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r29.xyxx, t11.xxxx, s4, r19.z + mad r12.w, r30.x, r16.w, r12.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r29.zwzz, t11.xxxx, s4, r19.z + mad r12.w, r30.y, r16.w, r12.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r31.zwzz, t11.xxxx, s4, r19.z + mad r12.w, r30.z, r16.w, r12.w + ige r16.w, r13.x, l(0) + or r23.xyz, r23.xyzx, r24.xyzx + or r17.w, r23.y, r23.x + or r17.w, r23.z, r17.w + and r18.w, r19.z, l(0x7fffffff) + ult r18.w, l(0x7f800000), r18.w + or r17.w, r17.w, r18.w + mad r23.xyzw, r25.xyxy, cb6[400].xyxy, r28.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r23.xyxx, t11.xxxx, s4, r19.z + mad r12.w, r30.w, r18.w, r12.w + mul r18.w, r26.y, r27.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r23.zwzz, t11.xxxx, s4, r19.z + mad r12.w, r18.w, r19.x, r12.w + add r12.w, r12.w, l(-1.000000) + mad r12.w, cb6[r13.x + 288].w, r12.w, l(1.000000) + movc r12.w, r17.w, l(1.000000), r12.w + movc r12.w, r16.w, r12.w, l(1.000000) + else + mov r12.w, l(1.000000) + endif + else + mov r12.w, l(1.000000) + endif + mul r11.y, r11.y, r12.w + mov r20.xyw, l(0,0,0,0) + endif + add r22.xyz, r20.xywx, r22.xyzx + mov r11.z, r15.w + endloop + mov r6.w, r11.y + add r21.xyz, r21.xyzx, r22.xyzx + iadd r7.w, r7.w, l(1) +endloop +// === Glass Fix: Reduce clustered lights and overall brightness === +lt r32.x, l(0.500000), cb13[14].x +if_nz r32.x + mul r21.xyz, r21.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mul r2.xyz, r2.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) +endif +dp3 r0.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r1.xzw, -r0.xxxx, r2.xxyz +mad r0.xyz, cb0[184].wwww, r1.xzwx, r0.xxxx +mad r1.xzw, r21.xxyz, r6.wwww, r16.xxyz +mul r2.xyz, cb2[20].zzzz, cb2[21].xyzx +add r2.w, -r10.w, l(1.000000) +add r3.x, l(1.000000), -cb2[20].y +max r3.x, r3.x, l(0.010000) +div_sat r2.w, r2.w, r3.x +mad r2.xyz, r8.xyzx, r2.xyzx, -r1.xzwx +mad r1.xzw, r2.wwww, r2.xxyz, r1.xxzw +mad r0.xyz, r0.xyzx, cb0[184].xyzx, r1.xzwx +mad r1.x, r1.y, cb0[156].w, cb0[157].w +mad r1.z, r0.w, cb0[154].w, -cb0[153].w +max r1.xz, r1.xxzx, l(0.010000, 0.000000, 0.000000, 0.000000) +mul r1.w, r1.x, l(-1.442695) +exp r1.w, r1.w +add r1.w, -r1.w, l(1.000000) +div r1.x, r1.w, r1.x +mad r1.w, r1.y, cb0[156].w, cb0[158].w +mul r1.w, r1.w, l(1.442695) +exp r1.w, r1.w +mul r1.x, r1.w, r1.x +mul r1.x, r1.x, -r1.z +mul r1.xzw, r1.xxxx, cb0[155].xxyz +mul r1.xzw, r1.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r1.xzw, r1.xxzw +dp3 r2.x, -r5.xyzx, cb0[154].xyzx +mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r2.xxxx, cb0[155].wwww +add r2.y, -r2.z, r2.y +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r14.w, l(7), cb0[108].w + imad r3.xyz, r14.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r2.z, r3.y, r3.z, r3.x + imad r2.w, r3.z, r2.z, r3.y + imad r3.x, r2.z, r2.w, r3.z + imad r6.x, r2.w, r3.x, r2.z + dp3 r2.z, -r5.xyzx, -r4.xyzx + add r3.y, r1.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r2.z + div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z + and r2.z, r2.z, r3.z + mul r2.z, r2.z, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w + mul r3.w, r2.z, r3.z + mad r4.x, r3.w, r3.y, cb0[44].y + mad r3.y, -r3.w, r3.y, r3.y + mul r3.w, r3.y, cb0[159].z + mul r3.y, r3.y, cb0[162].x + max r3.yw, r3.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r4.y, r4.x, -cb0[159].x + mul r4.y, r4.y, cb0[159].z + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[159].y + lt r4.z, l(5.960464478E-08), |r3.w| + exp r4.w, -r3.w + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r4.z, r4.w, r3.w + add r4.x, r4.x, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.z, l(5.960464478E-08), |r3.y| + exp r4.w, -r3.y + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.y + mad r3.y, -r3.y, l(0.240226507), l(0.693147182) + movc r3.y, r4.z, r4.w, r3.y + mul r3.y, r3.y, r4.x + mad r3.y, r4.y, r3.w, r3.y + mad r2.z, -r2.z, r3.z, l(1.000000) + mul r2.z, r0.w, r2.z + mul r2.z, r2.z, r3.y + exp r2.z, -r2.z + min r2.z, r2.z, l(1.000000) + max r2.z, r2.z, cb0[161].w + mad_sat r3.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx + add r2.z, r2.z, r3.y + add r2.z, r3.z, r2.z + min r2.z, r2.z, l(1.000000) + imad r6.y, r3.x, r6.x, r2.w + ushr r3.xy, r6.xyxx, l(16, 16, 0, 0) + utof r3.xy, r3.xyxx + mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb0[167].wwww, r13.zwzz + mul r3.xy, r3.xyxx, cb0[165].xyxx + mad r2.w, r14.z, cb0[164].x, cb0[164].y + log r2.w, r2.w + mul r2.w, r2.w, cb0[164].z + div r3.z, r2.w, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t22.xyzw, s1, l(0.000000) + add r2.w, r14.z, -cb0[166].z + mul_sat r2.w, r2.w, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r2.wwww, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r2.w, -r2.z, l(1.000000) + mul r4.xyz, r2.wwww, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r2.z, r2.z, r3.w +else + add r1.y, r1.y, -cb0[44].y + mul r2.w, r1.y, cb0[159].z + max r2.w, r2.w, l(-127.000000) + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r2.w| + exp r4.y, -r2.w + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r4.x, r4.y, r2.w + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.y, r4.z, r1.y + mul r1.y, r1.y, r4.x + mad r1.y, r3.w, r2.w, r1.y + mul r1.y, r0.w, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.w, r1.y, r4.x + add r0.w, r4.y, r0.w + min r2.z, r0.w, l(1.000000) + add r0.w, -r2.z, l(1.000000) + mul r3.xyz, r0.wwww, cb0[161].xyzx +endif +mul r4.xyz, r1.xzwx, r2.zzzz +mad r0.w, r2.x, r2.x, l(1.000000) +mul r0.w, r0.w, l(0.0596831031) +mad r5.xyz, cb0[156].xyzx, r0.wwww, cb0[158].xyzx +mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r1.y, r2.y, l(12.566371) +sqrt r2.x, r2.y +mul r1.y, r1.y, r2.x +max r1.y, r1.y, l(0.001000) +div r0.w, r0.w, r1.y +mad_sat r2.xyw, cb0[157].xyxz, r0.wwww, r5.xyxz +mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) +add r1.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r1.xyz, r1.xyzx, r2.xywx +mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx +// === Glass Transparency Fix === +lt r30.x, l(0.500000), cb13[14].x +if_nz r30.x + // Boost transmittance: lerp(r4, 1, 0.5) + add r30.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r30.xyz, r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r4.xyzx + // Reduce inscatter intensity + mul r31.xyz, r1.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000) + // Modified fog blend + mad r10.xyz, r0.xyzx, r30.xyzx, r31.xyzx +else + // Original fog blend + mad r10.xyz, r0.xyzx, r4.xyzx, r1.xyzx +endif +mul r0.xy, r12.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r0.xy, |r0.xyxx| +sqrt r0.xy, r0.xyxx +mov r12.z, -r12.y +lt r0.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.xxxz +lt r1.xy, r12.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r0.zw, -r0.zzzw, r1.xxxy +itof r0.zw, r0.zzzw +mul r0.xy, r0.zwzz, r0.xyxx +mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +ishl r0.z, v7.x, l(4) +max r0.z, cb1[r0.z + 4].z, cb1[r0.z + 4].y +add r0.z, r0.z, l(-0.100000024) +lt r0.w, l(0.000000), r0.z +lt r0.z, r0.z, l(0.000000) +iadd r0.z, -r0.w, r0.z +itof r0.z, r0.z +mov_sat r0.z, r0.z +add r1.xy, -r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mad r0.xy, r0.zzzz, r1.xyxx, r0.xyxx +min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) +dp3 r0.x, r10.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mul r0.x, r10.w, r0.x +max r0.x, r10.w, r0.x +mul_sat r0.x, r0.x, l(10.000000) +lt r0.x, l(0.500000), r0.x +and o1.z, r0.x, l(0x3f800000) +// === Glass Highlight Compression === +lt r30.x, l(0.500000), cb13[14].x +if_nz r30.x + // Compute luminance + dp3 r30.y, r10.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) + // Soft compress if luminance > 0.5 + lt r30.z, l(0.500000), r30.y + if_nz r30.z + // compression = 0.5 + 1.5 * (1 - exp(-(luma - 0.5) / 1.5)) + add r30.w, r30.y, l(-0.500000) + mul r30.w, r30.w, l(-0.666667) + exp r30.w, r30.w + add r30.w, -r30.w, l(1.000000) + mad r30.w, r30.w, l(1.500000), l(0.500000) + // scale = compression / luma + max r31.x, r30.y, l(0.001000) + div r31.x, r30.w, r31.x + mul r10.xyz, r10.xyzx, r31.xxxx + endif +endif +mov o0.xyzw, r10.xyzw +mov o1.w, l(0) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0x754218B1.ps_5_0_original_backup.asm b/src/games/endfield/glass/0x754218B1.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..9442532374 --- /dev/null +++ b/src/games/endfield/glass/0x754218B1.ps_5_0_original_backup.asm @@ -0,0 +1,1772 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Wed Feb 4 07:24:28 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xyz +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 zw 1 NONE float zw +// TEXCOORD 2 xyz 2 NONE float xyz +// TEXCOORD 3 xyzw 3 NONE float xyzw +// TEXCOORD 4 xyzw 4 NONE float x +// TEXCOORD 5 xyz 5 NONE float xyz +// TEXCOORD 6 xyz 6 NONE float xyz +// TEXCOORD 7 x 7 NONE uint x +// SV_IsFrontFace 0 x 8 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[244], immediateIndexed +dcl_constantbuffer CB1[4085], dynamicIndexed +dcl_constantbuffer CB2[24], immediateIndexed +dcl_constantbuffer CB3[259], dynamicIndexed +dcl_constantbuffer CB4[3], immediateIndexed +dcl_constantbuffer CB5[2054], dynamicIndexed +dcl_constantbuffer CB6[715], dynamicIndexed +dcl_constantbuffer CB7[160], dynamicIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_sampler s7, mode_default +dcl_sampler s8, mode_default +dcl_sampler s9, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2darray (float,float,float,float) t4 +dcl_resource_texture2d (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_input_ps_siv linear noperspective v0.xyz, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v1.zw +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyzw +dcl_input_ps linear v4.x +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps constant v7.x +dcl_input_ps_sgv constant v8.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 37 +mul r0.xy, v0.xyxx, cb0[82].zwzz +mad r0.zw, r0.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +mul r1.xyzw, -r0.wwww, cb0[25].xyzw +mad r1.xyzw, cb0[24].xyzw, r0.zzzz, r1.xyzw +mad r1.xyzw, cb0[26].xyzw, v0.zzzz, r1.xyzw +add r1.xyzw, r1.xyzw, cb0[27].xyzw +div r1.xyz, r1.xyzx, r1.wwww +mul r0.z, r1.y, cb0[1].z +mad r0.z, cb0[0].z, r1.x, r0.z +mad r0.z, cb0[2].z, r1.z, r0.z +add r0.z, r0.z, cb0[3].z +mov r2.z, |r0.z| +lt r0.z, l(0.000000), v3.w +movc r0.z, r0.z, l(1.000000), l(-1.000000) +eq r0.w, l(0.000000), cb0[86].w +add r3.xyz, -r1.xyzx, cb0[44].xyzx +mov r4.x, cb0[0].z +mov r4.y, cb0[1].z +mov r4.z, cb0[2].z +movc r3.xyz, r0.wwww, r3.xyzx, r4.xyzx +dp3 r0.w, r3.xyzx, r3.xyzx +max r2.w, r0.w, l(9.999999939E-09) +rsq r2.w, r2.w +mul r5.xyz, r2.wwww, r3.xyzx +mul r0.w, r0.w, r2.w +add r6.xy, -v1.xyxx, v1.zwzz +mad r6.zw, cb2[3].xxxx, r6.xxxy, v1.xxxy +mad r6.zw, r6.zzzw, cb2[12].xxxy, cb2[12].zzzw +mad r6.xy, cb2[2].wwww, r6.xyxx, v1.xyxx +mad r6.xy, r6.xyxx, cb2[11].xyxx, cb2[11].zwzz +sample_b_indexable(texture2d)(float,float,float,float) r7.xyzw, r6.xyxx, t5.xyzw, s5, cb0[108].x +add r3.w, cb0[108].x, cb2[3].y +sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r6.zwzz, t6.xywz, s6, r3.w +mul r8.x, r8.x, r8.z +mad r6.xy, r8.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +mul r8.xy, r6.xyxx, cb2[0].xxxx +sample_b_indexable(texture2d)(float,float,float,float) r9.xyz, r6.zwzz, t7.xyzw, s7, cb0[108].x +mul r7.xyzw, r7.xyzw, cb2[8].xyzw +mul_sat r7.xyz, r7.xyzx, cb2[4].zzzz +add r10.xyz, -r7.xyzx, cb2[8].xyzx +mad r7.xyz, cb2[4].xxxx, r10.xyzx, r7.xyzx +mad r3.w, r7.w, v4.x, -r7.w +mad r10.w, cb2[23].x, r3.w, r7.w +add r3.w, -cb2[0].z, cb2[0].w +mad r11.w, r9.y, r3.w, cb2[0].z +add_sat r3.w, l(-1.000000), cb2[3].w +add r4.w, -r9.x, cb2[4].y +mad r3.w, r3.w, r4.w, r9.x +mul r9.xyw, v2.zxzy, v3.yzyx +mad r9.xyw, v2.yzyx, v3.zxzy, -r9.xyxw +mul r9.xyw, r0.zzzz, r9.xyxw +mul r8.yzw, r8.yyyy, r9.xxyw +mad r8.xyz, v3.xyzx, r8.xxxx, r8.yzwy +dp2 r0.z, r6.xyxx, r6.xyxx +min r0.z, r0.z, l(1.000000) +add r0.z, -r0.z, l(1.000000) +sqrt r0.z, r0.z +max r0.z, r0.z, l(1.000000017E-16) +lt r4.w, l(0.000000), cb2[1].w +movc r4.w, r4.w, l(-1.000000), l(1.000000) +movc r4.w, v8.x, l(1.000000), r4.w +mul r0.z, r0.z, r4.w +mad r6.xyz, v2.xyzx, r0.zzzz, r8.xyzx +dp3 r0.z, r6.xyzx, r6.xyzx +rsq r0.z, r0.z +mul r6.xyz, r0.zzzz, r6.xyzx +dp3 r0.z, r6.xyzx, r5.xyzx +dp3 r4.w, -r5.xyzx, r6.xyzx +mul r5.w, cb2[19].z, cb2[19].z +mad r7.w, -r4.w, r4.w, l(1.000000) +mad r5.w, -r5.w, r7.w, l(1.000000) +sqrt r7.w, r5.w +mad r7.w, cb2[19].z, r4.w, r7.w +ge r5.w, r5.w, l(0.000000) +mul r8.xyz, r6.xyzx, r7.wwww +mad r8.xyz, cb2[19].zzzz, -r5.xyzx, -r8.xyzx +and r8.xyz, r5.wwww, r8.xyzx +mul r5.w, r0.z, v0.z +max r5.w, r5.w, l(0.500000) +div r5.w, cb2[19].w, r5.w +add r5.w, r5.w, -cb2[19].w +mad r5.w, cb2[20].x, r5.w, cb2[19].w +mul r8.xyz, r5.wwww, r8.xyzx +mul r8.yw, r8.yyyy, cb0[1].xxxy +mad r8.xy, cb0[0].xyxx, r8.xxxx, r8.ywyy +mad r8.xy, cb0[2].xyxx, r8.zzzz, r8.xyxx +mad r8.zw, v1.xxxy, cb2[22].xxxy, cb2[22].zzzw +sample_b_indexable(texture2d)(float,float,float,float) r8.zw, r8.zwzz, t9.zwxy, s8, cb0[108].x +mad r8.zw, r8.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +mad r8.zw, r8.zzzw, cb2[19].yyyy, -r8.xxxy +mad r8.xy, cb2[19].xxxx, r8.zwzz, r8.xyxx +mad r8.zw, v0.xxxy, cb0[82].zzzw, r8.xxxy +mul r8.xy, r8.xyxx, l(0.250000, 0.250000, 0.000000, 0.000000) +mad r9.xy, v0.xyxx, cb0[82].zwzz, r8.xyxx +sample_b_indexable(texture2d)(float,float,float,float) r5.w, r8.zwzz, t1.yzwx, s0, cb0[108].x +sample_b_indexable(texture2d)(float,float,float,float) r7.w, r9.xyxx, t1.yzwx, s0, cb0[108].x +mad r7.w, cb0[84].z, r7.w, cb0[84].w +div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w +ge r7.w, r7.w, r2.z +and r7.w, r7.w, l(0x3f800000) +mad r8.xy, r7.wwww, r8.xyxx, r0.xyxx +mad r5.w, cb0[84].z, r5.w, cb0[84].w +div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w +ge r5.w, r5.w, r2.z +and r5.w, r5.w, l(0x3f800000) +add r8.zw, -r8.xxxy, r8.zzzw +mad r8.xy, r5.wwww, r8.zwzz, r8.xyxx +sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r8.xyxx, t8.xyzw, s9, cb0[108].x +max r5.w, v5.z, l(9.999999939E-09) +div r9.xy, v5.xyxx, r5.wwww +max r5.w, v6.z, l(9.999999939E-09) +div r12.xy, v6.xyxx, r5.wwww +add r12.xy, r9.xyxx, -r12.xyxx +mul r5.w, l(0.080000), cb2[0].y +mad r9.xyw, -r7.xyxz, r3.wwww, r7.xyxz +mad r5.w, -r5.w, r3.w, r5.w +mad r7.xyz, r7.xyzx, r3.wwww, r5.wwww +mad r13.xyzw, r11.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r3.w, r13.x, r13.x +max r0.z, r0.z, l(0.000000) +mul r5.w, r0.z, l(-9.280000) +exp r5.w, r5.w +min r3.w, r3.w, r5.w +mad r3.w, r3.w, r13.x, r13.y +mad r13.xy, r3.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz +eq r3.w, l(1.000000), cb0[113].y +mul r14.xyzw, r1.yyyy, cb0[241].xyzw +mad r14.xyzw, cb0[240].xyzw, r1.xxxx, r14.xyzw +mad r14.xyzw, cb0[242].xyzw, r1.zzzz, r14.xyzw +add r14.xyzw, r14.xyzw, cb0[243].xyzw +div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r14.w +mul r14.xyz, r14.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) +mul r14.xyz, r5.wwww, r14.xyzx +mad_sat r13.zw, r14.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) +mul r13.zw, r13.zzzw, cb0[82].xxxy +ftou r15.xy, r13.zwzz +mad r5.w, cb0[84].z, r14.z, cb0[84].w +div r15.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w +ftou r2.xy, v0.xyxx +movc r14.xyz, r3.wwww, r15.xyzx, r2.xyzx +mad r2.xyz, r6.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r1.xyzx +mad r15.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r15.xyz, r2.xzyx, -r15.xyzx +max r3.w, |r15.y|, |r15.x| +add r3.w, r3.w, l(-464.000000) +mul_sat r3.w, r3.w, l(0.031250) +add r5.w, |r15.z|, l(-208.000000) +mul_sat r5.w, r5.w, l(0.031250) +max r3.w, r3.w, r5.w +ne r5.w, l(0.000000), cb0[210].w +lt r7.w, r3.w, l(1.000000) +and r5.w, r5.w, r7.w +if_nz r5.w + mad r15.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r15.xyz, r2.xzyx, -r15.xyzx + max r5.w, |r15.y|, |r15.x| + add r5.w, r5.w, l(-29.000000) + mul_sat r5.w, r5.w, l(0.500000) + add r7.w, |r15.z|, l(-13.000000) + mul_sat r7.w, r7.w, l(0.500000) + max r5.w, r5.w, r7.w + lt r7.w, r5.w, l(1.000000) + if_nz r7.w + mad r15.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r16.xyz, r15.xyzx, cb0[211].xyzx + round_ni r16.xyz, r16.xyzx + mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r15.xyzx, t16.xyzw, s2, l(0.000000) + add r7.w, -r5.w, l(1.000000) + mul r8.w, l(0.500000), cb0[211].y + mad r12.w, -cb0[211].y, l(0.500000), l(1.000000) + max r8.w, r8.w, r15.y + min r8.w, r12.w, r8.w + mul r15.w, r8.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t17.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r16.xxxx, r17.xyzx + add r17.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t17.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r16.yyyy, r17.xyzx + add r15.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t17.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r16.zzzz, r15.xyzx + mad r8.w, r17.w, r7.w, r3.w + mov r15.w, r16.z + mul r15.xyzw, r7.wwww, r15.xyzw + mov r19.w, r16.y + mul r17.xyzw, r7.wwww, r19.xyzw + mov r18.w, r16.x + mul r16.xyzw, r7.wwww, r18.xyzw + else + mov r15.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r8.w, r3.w + endif + mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r18.xyz, r2.xzyx, -r18.xyzx + max r7.w, |r18.y|, |r18.x| + add r7.w, r7.w, l(-116.000000) + mul_sat r7.w, r7.w, l(0.125000) + add r12.w, |r18.z|, l(-52.000000) + mul_sat r12.w, r12.w, l(0.125000) + max r7.w, r7.w, r12.w + lt r12.w, r7.w, l(1.000000) + if_nz r12.w + mad r18.xyz, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r18.xyzx, cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r19.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r18.xyzx, t18.xyzw, s2, l(0.000000) + add r12.w, -r7.w, l(1.000000) + mul r5.w, r5.w, r12.w + mul r12.w, l(0.500000), cb0[211].y + mad r13.z, -cb0[211].y, l(0.500000), l(1.000000) + max r12.w, r12.w, r18.y + min r12.w, r13.z, r12.w + mul r18.w, r12.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t19.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r19.xxxx, r20.xyzx + add r20.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t19.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r19.yyyy, r20.xyzx + add r18.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t19.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r19.zzzz, r18.xyzx + mad r8.w, r20.w, r5.w, r8.w + mov r18.w, r19.z + mad r15.xyzw, r18.xyzw, r5.wwww, r15.xyzw + mov r22.w, r19.y + mad r17.xyzw, r22.xyzw, r5.wwww, r17.xyzw + mov r21.w, r19.x + mad r16.xyzw, r21.xyzw, r5.wwww, r16.xyzw + endif + lt r5.w, l(0.000000), r7.w + if_nz r5.w + mad r2.xyz, r2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r2.xyzx, cb0[211].xyzx + mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r2.xyz, r2.xyzx, cb0[211].xyzx, -r18.xyzx + mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r2.xyz, r19.xyzx, r2.xyzx + min r20.xyz, r18.xyzx, r2.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r20.xyzx, t20.yzwx, s2, l(0.000000) + add r2.x, -r3.w, l(1.000000) + mul r2.x, r2.x, r7.w + max r2.y, r19.y, r20.y + min r2.y, r18.y, r2.y + mul r20.w, r2.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r20.xwzx, t21.xyzw, s1, l(0.000000) + add r19.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t21.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r21.yyyy, r19.xyzx + mov r19.w, r21.y + mad r15.xyzw, r19.xyzw, r2.xxxx, r15.xyzw + add r19.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t21.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r21.xxxx, r19.xyzx + mov r19.w, r21.x + mad r17.xyzw, r19.xyzw, r2.xxxx, r17.xyzw + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r18.xyzx + mad r16.xyzw, r21.xyzw, r2.xxxx, r16.xyzw + mad r8.w, r18.w, r2.x, r8.w + endif + mad_sat r2.x, r8.w, l(2.000000), l(-1.000000) + add r18.x, -r3.w, r2.x + add r2.x, r3.w, r2.x + mul r18.y, r2.x, l(0.500000) +else + mov r15.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r18.xy, l(0,1.000000,0,0) +endif +mul r19.xyzw, r18.yyyx, cb0[213].xyzw +mad r19.y, r19.w, l(0.500000), r19.y +mul r2.xy, r18.yxyy, cb0[213].wyww +mad r19.w, r2.y, l(0.375000), r2.x +add r16.xyzw, r16.xyzw, r19.xyzw +mul r19.xyzw, r18.yyyx, cb0[214].xyzw +mad r19.y, r19.w, l(0.500000), r19.y +mul r2.xy, r18.yxyy, cb0[214].wyww +mad r19.w, r2.y, l(0.375000), r2.x +add r17.xyzw, r17.xyzw, r19.xyzw +mul r19.xyzw, r18.yyyx, cb0[215].xyzw +mad r19.y, r19.w, l(0.500000), r19.y +mul r2.xy, r18.yxyy, cb0[215].wyww +mad r19.w, r2.y, l(0.375000), r2.x +add r15.xyzw, r15.xyzw, r19.xyzw +dp3 r2.x, r16.xyzx, r6.xyzx +add r2.x, r16.w, r2.x +max r2.x, r2.x, l(0.000000) +dp3 r3.w, r17.xyzx, r6.xyzx +add r3.w, r17.w, r3.w +max r2.y, r3.w, l(0.000000) +dp3 r3.w, r15.xyzx, r6.xyzx +add r3.w, r15.w, r3.w +max r2.z, r3.w, l(0.000000) +add r3.w, r4.w, r4.w +mad r15.xyz, r6.xyzx, -r3.wwww, -r5.xyzx +add r3.w, l(-1.000000), cb0[113].x +max r4.w, r11.w, l(0.001000) +log r4.w, r4.w +mad r4.w, -r4.w, l(1.200000), l(1.000000) +add r3.w, r3.w, -r4.w +utof r13.zw, r14.xxxy +mul r16.xy, r13.zwzz, cb3[0].wwww +round_ni r16.xy, r16.xyxx +add r4.w, r14.z, -cb3[2].y +round_ni r4.w, r4.w +add r5.w, l(-1.000000), cb3[1].x +max r7.w, r4.w, l(0.000000) +min r5.w, r5.w, r7.w +ge r4.w, r5.w, r4.w +mad r7.w, r16.y, cb3[0].x, r16.x +ftoi r7.w, r7.w +iadd r7.w, r7.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r7.w, r7.w, l(0), t0.xxxx +ftoi r5.w, r5.w +iadd r5.w, r5.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.w, r5.w, l(0), t0.xxxx +and r5.w, r5.w, r7.w +and r4.w, r4.w, r5.w +mul r16.xyz, r2.xyzx, cb0[111].xxxx +dp3 r5.w, r16.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r1.w, l(1.000000) +mov r6.w, l(1.000000) +mov r16.xyz, l(0,0,0,0) +mov r7.w, l(1.000000) +mov r8.w, r4.w +mov r12.w, l(0) +loop + lt r15.w, l(0.010000), r7.w + ine r16.w, r8.w, l(0) + and r16.w, r15.w, r16.w + if_nz r16.w + firstbit_lo r16.w, r8.w + ishl r17.x, l(1), r16.w + xor r8.w, r8.w, r17.x + ishl r16.w, r16.w, l(3) + dp4 r17.x, cb3[r16.w + 6].xyzw, r1.xyzw + dp4 r17.y, cb3[r16.w + 7].xyzw, r1.xyzw + dp4 r17.z, cb3[r16.w + 8].xyzw, r1.xyzw + ge r18.xyz, cb3[r16.w + 5].xyzx, |r17.xyzx| + and r17.w, r18.y, r18.x + and r17.w, r18.z, r17.w + if_nz r17.w + mul r17.w, l(0.100000), cb3[r16.w + 5].x + mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r17.xyzx|, cb3[r16.w + 5].xyzx + mul r19.xyz, r19.xyzx, cb3[r16.w + 9].xyzx + eq r18.w, l(1.000000), cb3[r16.w + 10].x + if_nz r18.w + dp3 r20.x, cb3[r16.w + 6].xyzx, r15.xyzx + dp3 r20.y, cb3[r16.w + 7].xyzx, r15.xyzx + dp3 r20.z, cb3[r16.w + 8].xyzx, r15.xyzx + add r21.xyz, -r17.xyzx, cb3[r16.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r17.xyzx, -cb3[r16.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r18.w, r21.y, r21.x + min r18.w, r21.z, r18.w + mad r17.xyz, r20.xyzx, r18.wwww, r17.xyzx + else + mov r17.xyz, r15.xyzx + endif + dp3 r18.w, r17.xyzx, r17.xyzx + rsq r18.w, r18.w + mul r17.xyz, r17.xyzx, r18.wwww + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r21.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r18.w, r17.xyzx, r20.xyzx + div r17.xyz, r17.xyzx, r18.wwww + lt r17.z, r17.z, l(0.000000) + add r20.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r20.xy, r20.zwzz, r20.xyxx + movc r17.xy, r17.zzzz, r20.xyxx, r17.xyxx + dp4 r17.z, cb3[r16.w + 4].xyzw, r6.xyzw + max r17.z, r17.z, l(0.000000) + max r17.z, r17.z, l(0.000100) + min r18.w, r19.z, r19.y + min r18.w, r18.w, r19.x + add r18.x, r18.y, r18.x + mad r18.x, r18.z, r18.z, r18.x + mad r17.w, r17.w, r17.w, -r18.x + mul r17.w, r17.w, cb3[r16.w + 9].x + mul r17.w, r17.w, cb3[r16.w + 9].x + add r18.x, l(1.000000), -cb3[r16.w + 10].y + mul r17.w, r17.w, r18.x + mul r17.w, r17.w, l(100.000000) + mad_sat r17.w, r18.w, cb3[r16.w + 10].y, r17.w + mul r18.x, r17.w, cb3[r16.w + 10].w + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r19.xy, r17.xyxx, cb3[1].wwww, cb3[2].wwww + mov r19.z, cb3[r16.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r18.yzw, r19.xyzx, t4.wxyz, s3, r3.w + mul r18.yzw, r18.yyzw, cb3[r16.w + 9].wwww + div r17.x, r5.w, r17.z + min r17.x, |r17.x|, l(1.000000) + mad r17.x, r17.x, l(2.000000), r5.w + add r17.y, r17.z, l(2.000000) + div r17.x, r17.x, r17.y + add r17.x, r17.x, l(-1.000000) + mad r17.x, r17.x, cb0[112].w, l(1.000000) + mul r17.xyz, r17.xxxx, r18.yzwy + mul r17.xyz, r18.xxxx, r17.xyzx + mad r16.xyz, r17.xyzx, r7.wwww, r16.xyzx + mad r16.w, -r17.w, cb3[r16.w + 10].w, l(1.000000) + mul r7.w, r7.w, r16.w + endif + mov r12.w, l(-1) + continue + else + mov r12.w, r15.w + break + endif + mov r12.w, r15.w +endloop +if_nz r12.w + dp3 r1.w, r15.xyzx, r15.xyzx + rsq r1.w, r1.w + mul r17.xyz, r1.wwww, r15.xyzx + lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r19.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r18.xyz, -r18.xyzx, r19.xyzx + itof r18.xyz, r18.xyzx + dp3 r1.w, r17.xyzx, r18.xyzx + div r17.xyz, r17.xyzx, r1.wwww + lt r1.w, r17.z, l(0.000000) + add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r17.zw, r17.zzzw, r18.xxxy + movc r17.xy, r1.wwww, r17.zwzz, r17.xyxx + mov r6.w, l(1.000000) + dp4 r1.w, cb3[3].xyzw, r6.xyzw + max r1.w, r1.w, l(0.000000) + max r1.w, r1.w, l(0.000100) + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r17.xy, r17.xyxx, cb3[1].wwww, cb3[2].wwww + mov r17.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t4.xyzw, s3, r3.w + div r3.w, r5.w, r1.w + min r3.w, |r3.w|, l(1.000000) + mad r3.w, r3.w, l(2.000000), r5.w + add r1.w, r1.w, l(2.000000) + div r1.w, r3.w, r1.w + add r1.w, r1.w, l(-1.000000) + mad r1.w, r1.w, cb0[112].w, l(1.000000) + mul r17.xyz, r1.wwww, r17.xyzx + mad r16.xyz, r17.xyzx, r7.wwww, r16.xyzx +endif +mul r16.xyz, r16.xyzx, cb0[112].zzzz +mul r16.xyz, r16.xyzx, cb0[111].yyyy +ne r1.w, l(0.000000), cb0[112].y +if_nz r1.w + sample_b_indexable(texture2d)(float,float,float,float) r1.w, r0.xyxx, t3.yzwx, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r17.xyz, r0.xyxx, t2.xyzw, s1, cb0[108].x + add r0.x, -r1.w, l(1.000000) + mul r18.xyz, r0.xxxx, r16.xyzx + mad r16.xyz, r17.xyzx, r1.wwww, r18.xyzx +endif +mul r2.xyz, r9.xywx, r2.xyzx +add r0.x, r9.z, l(-1.000000) +mad r0.x, cb2[1].x, r0.x, l(1.000000) +mul r2.xyz, r0.xxxx, r2.xyzx +mul_sat r0.x, r7.y, l(50.000000) +mul r0.x, r13.y, r0.x +mad r17.xyz, r7.xyzx, r13.xxxx, r0.xxxx +mul r16.xyz, r16.xyzx, r17.xyzx +mad r2.xyz, r2.xyzx, cb0[111].xxxx, r16.xyzx +lt r0.x, cb6[35].w, l(0.990000) +if_nz r0.x + ftoi r0.x, cb6[35].x + ieq r0.y, r0.x, l(2) + movc r16.xyz, r0.yyyy, cb6[20].xyzx, cb0[44].xyzx + add r16.xyz, r1.xyzx, -r16.xyzx + dp3 r0.y, r16.xyzx, r16.xyzx + add r0.y, -r0.y, cb6[34].w + mul_sat r0.y, r0.y, cb6[34].z + lt r1.w, l(0.000000), r0.y + if_nz r1.w + ilt r0.x, l(0), r0.x + if_nz r0.x + add r16.xyz, r1.xyzx, -cb6[20].xyzx + add r17.xyz, r1.xyzx, -cb6[21].xyzx + add r18.xyz, r1.xyzx, -cb6[22].xyzx + add r19.xyz, r1.xyzx, -cb6[23].xyzx + dp3 r16.x, r16.xyzx, r16.xyzx + dp3 r16.y, r17.xyzx, r17.xyzx + dp3 r16.z, r18.xyzx, r18.xyzx + dp3 r16.w, r19.xyzx, r19.xyzx + lt r17.x, r16.x, cb6[20].w + lt r17.y, r16.y, cb6[21].w + lt r17.z, r16.z, cb6[22].w + lt r17.w, r16.w, cb6[23].w + and r18.xyzw, r17.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) + movc r17.xyz, r17.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) + add r17.xyz, r17.xyzx, r18.yzwy + max r18.yzw, r17.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) + dp4 r0.x, r18.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) + add r0.x, -r0.x, l(4.000000) + max r0.x, r0.x, l(0.000000) + min r0.x, r0.x, l(3.000000) + add r1.w, r0.x, l(1.000000) + min r1.w, r1.w, l(3.000000) + ftou r1.w, r1.w + dp3 r3.w, r16.yzwy, icb[r1.w + 0].yzwy + div r1.w, r3.w, cb6[r1.w + 20].w + ge r3.w, r1.w, l(0.000000) + ge r1.w, l(1.000000), r1.w + and r1.w, r1.w, r3.w + if_nz r1.w + ftou r1.w, r0.x + add r13.xy, r13.zwzz, l(2.083000, 4.867000, 0.000000, 0.000000) + dp2 r3.w, r13.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r3.w, r3.w + mul r3.w, r3.w, l(52.982918) + frc r3.w, r3.w + dp4 r4.w, r16.xyzw, icb[r1.w + 0].xyzw + div r1.w, r4.w, cb6[r1.w + 20].w + sqrt r1.w, r1.w + add r1.w, r1.w, l(-0.900000) + mul r1.w, r1.w, l(12.000000) + ge r1.w, r1.w, r3.w + and r1.w, r1.w, l(0x3f800000) + add r0.x, r0.x, r1.w + endif + dp3 r1.w, r6.xyzx, cb5[0].xyzx + max r1.w, r1.w, l(0.000000) + min r1.w, r1.w, l(0.900000) + add r1.w, -r1.w, l(1.000000) + ftou r3.w, r0.x + ishl r4.w, r3.w, l(2) + mul r13.xy, r1.wwww, cb6[r3.w + 24].xyxx + max r1.w, r13.x, l(0.000000) + mad r16.xyz, -cb5[0].xyzx, r1.wwww, r1.xyzx + mad r16.xyz, r6.xyzx, r13.yyyy, r16.xyzx + mul r17.xyz, r16.yyyy, cb6[r4.w + 1].xyzx + mad r16.xyw, cb6[r4.w + 0].xyxz, r16.xxxx, r17.xyxz + mad r16.xyz, cb6[r4.w + 2].xyzx, r16.zzzz, r16.xywx + add r16.xyz, r16.xyzx, cb6[r4.w + 3].xyzx + ge r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + ge r18.xyz, r16.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + or r17.xyz, r17.xyzx, r18.xyzx + or r1.w, r17.y, r17.x + or r1.w, r17.z, r1.w + and r3.w, r16.z, l(0x7fffffff) + ult r3.w, l(0x7f800000), r3.w + or r17.z, r1.w, r3.w + ftoi r0.x, r0.x + mad r13.xy, r16.xyxx, cb6[r0.x + 28].zwzz, cb6[r0.x + 28].xyxx + mad r16.xy, r13.xyxx, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r16.xy, r16.xyxx + mad r13.xy, r13.xyxx, cb6[32].zwzz, -r16.xyxx + add r18.xyzw, r13.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r19.xw, r18.xxxz, r18.xxxz + min r18.xz, r13.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r20.xy, r13.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r20.zw, r19.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r13.xxxy + add r13.xy, -r13.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mad r13.xy, -r18.xzxx, r18.xzxx, r13.xyxx + mad r18.xy, -r20.xyxx, r20.xyxx, r18.ywyy + mov r21.x, r20.z + mov r21.y, r13.x + mov r21.z, r18.x + mov r21.w, r19.x + mul r21.xyzw, r21.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r19.x, r20.w + mov r19.y, r13.y + mov r19.z, r18.y + mul r18.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r19.xyzw, r21.ywyw, r21.xzxz + add r20.xyzw, r18.yyww, r18.xxzz + div r13.xy, r21.ywyy, r19.zwzz + add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) + mul r21.xy, r13.xyxx, cb6[32].xxxx + div r13.xy, r18.ywyy, r20.ywyy + add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) + mul r21.zw, r13.xxxy, cb6[32].yyyy + mul r18.xyzw, r19.xyzw, r20.xyzw + mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r19.xyxx, t10.xxxx, s4, r16.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t10.xxxx, s4, r16.z + mul r1.w, r1.w, r18.y + mad r0.x, r18.x, r0.x, r1.w + mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.xyxx, t10.xxxx, s4, r16.z + mad r0.x, r18.z, r1.w, r0.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t10.xxxx, s4, r16.z + mad r0.x, r18.w, r1.w, r0.x + movc r17.x, r17.z, l(1.000000), r0.x + else + mov r17.xz, l(1.000000,0,0,0) + endif + else + mov r17.xz, l(1.000000,0,0,0) + endif + lt r0.x, r0.y, l(1.000000) + if_nz r0.x + dp3 r0.x, r6.xyzx, cb5[0].xyzx + max r0.x, r0.x, l(0.000000) + min r0.x, r0.x, l(0.900000) + add r0.x, -r0.x, l(1.000000) + mul r13.xy, r0.xxxx, cb6[584].xyxx + mad r16.xyz, -cb5[0].xyzx, r13.xxxx, r1.xyzx + mad r16.xyz, r6.xyzx, r13.yyyy, r16.xyzx + mul r13.xy, r16.yyyy, cb6[581].xyxx + mad r13.xy, cb6[580].xyxx, r16.xxxx, r13.xyxx + mad r13.xy, cb6[582].xyxx, r16.zzzz, r13.xyxx + add r13.xy, r13.xyxx, cb6[583].xyxx + lt r18.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r13.xyxx + and r0.x, r18.y, r18.x + lt r18.xy, r13.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + and r1.w, r18.y, r18.x + and r0.x, r0.x, r1.w + if_nz r0.x + mul r0.x, r13.y, cb6[585].z + round_ni r0.x, r0.x + add r0.x, r13.x, r0.x + mul r0.x, r0.x, cb6[585].y + ftou r0.x, r0.x + umin r0.x, r0.x, l(127) + and r1.w, l(0x0000ffff), cb6[r0.x + 587].x + f16tof32 r13.x, r1.w + ge r1.w, r13.x, l(0.000000) + if_nz r1.w + mov r18.x, cb6[576].x + mov r18.y, cb6[577].x + mov r18.z, cb6[578].x + mov r18.w, cb6[r0.x + 587].y + mov r16.w, l(1.000000) + dp4 r18.x, r18.xyzw, r16.xyzw + mov r19.x, cb6[576].y + mov r19.y, cb6[577].y + mov r19.z, cb6[578].y + mov r19.w, cb6[r0.x + 587].z + dp4 r18.y, r19.xyzw, r16.xyzw + mov r19.x, cb6[576].z + mov r19.y, cb6[577].z + mov r19.z, cb6[578].z + mov r19.w, cb6[r0.x + 587].w + dp4 r1.w, r19.xyzw, r16.xyzw + lt r16.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyxx + lt r3.w, l(0.000000), r1.w + and r4.w, r16.y, r16.x + and r3.w, r3.w, r4.w + lt r16.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + lt r4.w, r1.w, l(1.000000) + and r5.w, r16.y, r16.x + and r4.w, r4.w, r5.w + and r3.w, r3.w, r4.w + if_nz r3.w + ushr r0.x, cb6[r0.x + 587].x, l(16) + f16tof32 r13.y, r0.x + mad r13.xy, r18.xyxx, cb6[584].zwzz, r13.xyxx + mad r16.xy, r13.xyxx, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r16.xy, r16.xyxx + mad r13.xy, r13.xyxx, cb6[586].zwzz, -r16.xyxx + add r18.xyzw, r13.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r19.xw, r18.xxxz, r18.xxxz + min r16.zw, r13.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r18.xz, r13.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r20.xy, r19.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r13.xyxx + add r13.xy, -r13.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mad r13.xy, -r16.zwzz, r16.zwzz, r13.xyxx + mad r16.zw, -r18.xxxz, r18.xxxz, r18.yyyw + mov r18.x, r20.x + mov r18.y, r13.x + mov r18.z, r16.z + mov r18.w, r19.x + mul r18.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r19.x, r20.y + mov r19.y, r13.y + mov r19.z, r16.w + mul r19.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r20.xyzw, r18.ywyw, r18.xzxz + add r21.xyzw, r19.yyww, r19.xxzz + div r13.xy, r18.ywyy, r20.zwzz + add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) + mul r18.xy, r13.xyxx, cb6[586].xxxx + div r13.xy, r19.ywyy, r21.ywyy + add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) + mul r18.zw, r13.xxxy, cb6[586].yyyy + mul r19.xyzw, r20.xyzw, r21.xyzw + mad r20.xyzw, r16.xyxy, cb6[586].xyxy, r18.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r20.xyxx, t13.xxxx, s4, r1.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r20.zwzz, t13.xxxx, s4, r1.w + mul r3.w, r3.w, r19.y + mad r0.x, r19.x, r0.x, r3.w + mad r16.xyzw, r16.xyxy, cb6[586].xyxy, r18.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r16.xyxx, t13.xxxx, s4, r1.w + mad r0.x, r19.z, r3.w, r0.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r16.zwzz, t13.xxxx, s4, r1.w + mad r17.y, r19.w, r1.w, r0.x + else + mov r17.y, l(1.000000) + endif + else + mov r17.y, l(1.000000) + endif + else + mov r17.y, l(1.000000) + endif + movc r17.x, r17.z, r17.y, r17.x + else + mov r17.y, l(1.000000) + endif + add r0.x, -r17.y, r17.x + mad r0.x, r0.y, r0.x, r17.y + lt r0.y, l(0.001000), r0.x + if_nz r0.y + add r16.xyz, r1.xyzx, -cb0[173].xyzx + mad r13.xy, cb0[176].xzxx, r16.yyyy, r16.xzxx + mul r16.yw, r13.xxxy, cb0[174].zzzz + mul r17.xy, cb0[175].xyxx, cb0[183].wwww + mad r13.xy, r13.xyxx, cb0[174].zzzz, r17.xyxx + sample_l_indexable(texture2d)(float,float,float,float) r0.y, r13.xyxx, t12.yxzw, s2, l(0.000000) + mad r13.xy, r16.ywyy, cb0[175].wwww, r17.xyxx + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r13.xyxx, t12.yzwx, s2, l(0.000000) + dp2 r3.w, r16.xzxx, r16.xzxx + sqrt r3.w, r3.w + add r4.w, -cb0[174].x, cb0[174].y + add r3.w, r3.w, -cb0[174].x + div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul_sat r3.w, r3.w, r4.w + mad r4.w, r3.w, l(-2.000000), l(3.000000) + mul r3.w, r3.w, r3.w + mul r3.w, r3.w, r4.w + add r1.w, -r0.y, r1.w + mad r0.y, r3.w, r1.w, r0.y + add r0.y, r0.y, l(-1.000000) + mad r0.y, cb0[175].z, r0.y, l(1.000000) + mul r0.x, r0.y, r0.x + endif + add r0.y, -r0.x, cb6[35].z + mad r0.x, cb6[35].w, r0.y, r0.x +else + mov r0.x, cb6[35].z +endif +min r0.x, r0.x, l(1.000000) +add r0.x, r0.x, l(-1.000000) +mad r0.x, cb6[34].x, r0.x, l(1.000000) +lt r1.w, l(0.001000), r0.x +if_nz r1.w + dp3 r1.w, -cb5[0].xyzx, r15.xyzx + mad r16.xyz, cb5[0].xyzx, r1.wwww, r15.xyzx + lt r1.w, r1.w, cb5[4].z + dp3 r3.w, r16.xyzx, r16.xyzx + max r3.w, r3.w, l(0.0000610351562) + rsq r3.w, r3.w + mul r16.xyz, r3.wwww, r16.xyzx + mul r16.xyz, r16.xyzx, cb5[4].yyyy + mad r16.xyz, -cb5[0].xyzx, cb5[4].zzzz, r16.xyzx + dp3 r3.w, r16.xyzx, r16.xyzx + rsq r3.w, r3.w + mul r16.xyz, r3.wwww, r16.xyzx + movc r16.xyz, r1.wwww, r16.xyzx, r15.xyzx + mad r17.xyz, r3.xyzx, r2.wwww, r16.xyzx + dp3 r1.w, r17.xyzx, r17.xyzx + max r1.w, r1.w, l(0.0000610351562) + rsq r1.w, r1.w + mul r17.xyz, r1.wwww, r17.xyzx + dp3_sat r11.y, r16.xyzx, r6.xyzx + dp3_sat r1.w, r6.xyzx, r17.xyzx + min r11.z, r0.z, l(1.000000) + mul r3.w, r11.w, r11.w + mul r3.w, r3.w, r3.w + mad r4.w, r1.w, r3.w, -r1.w + mad r1.w, r4.w, r1.w, l(1.000000) + dp3_sat r4.w, r5.xyzx, r17.xyzx + add r4.w, -r4.w, l(1.000000) + mul r5.w, r4.w, r4.w + mul r5.w, r5.w, r5.w + mul r6.w, r4.w, r5.w + add r7.w, -r11.w, l(1.000000) + mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) + mad r8.w, r7.w, r8.w, l(1.049970) + mad r7.w, r7.w, r8.w, l(0.409255) + min r7.w, r7.w, l(0.999000) + add r8.w, -r7.w, l(1.000000) + add r16.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx + mad r4.w, -r5.w, r4.w, l(1.000000) + mad r17.xyz, r7.xyzx, r4.wwww, r6.wwww + mul r1.w, r1.w, r1.w + div r1.w, r3.w, r1.w + mad r13.xy, -r11.zyzz, r3.wwww, r11.zyzz + mad r13.xy, r13.xyxx, r11.zyzz, r3.wwww + sqrt r13.xy, r13.xyxx + mul r13.xy, r11.yzyy, r13.xyxx + add r3.w, r13.y, r13.x + add r3.w, r3.w, l(0.000100) + div r3.w, l(0.500000), r3.w + mul r1.w, r1.w, r3.w + mul r17.xyz, r1.wwww, r17.xyzx + min r17.xyz, r17.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r18.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r18.xyxx, t15.yzwx, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r3.w, r18.zwzz, t15.yzwx, s1, l(0.000000) + mul r1.w, r1.w, r3.w + mul r1.w, r7.w, r1.w + div r1.w, r1.w, r8.w + mul r18.xyz, r16.xyzx, r16.xyzx + mul r18.xyz, r1.wwww, r18.xyzx + mad r16.xyz, -r16.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r16.xyz, r18.xyzx, r16.xyzx + add r16.xyz, r16.xyzx, r17.xyzx + mul r16.xyz, r16.xyzx, cb5[4].xxxx + max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r16.xyz, r16.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + max r1.w, r10.w, l(0.010000) + div r16.xyz, r16.xyzx, r1.wwww + min r16.xyz, r16.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r17.xyz, r9.xywx, r11.yyyy + mad r16.xyz, r16.xyzx, r11.yyyy, r17.xyzx + mul r16.xyz, r16.xyzx, cb5[1].xyzx + mov r0.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r17.xyz, r0.xyxx, t14.xyzw, s1, cb0[108].x + add r0.x, -r0.x, l(1.000000) + mad r17.xyz, r16.xyzx, r17.xyzx, -r16.xyzx + mad r16.xyz, r0.xxxx, r17.xyzx, r16.xyzx +else + mov r16.xyz, l(0,0,0,0) +endif +mul r0.xy, r13.zwzz, l(0.031250, 0.031250, 0.000000, 0.000000) +round_ni r0.xy, r0.xyxx +mad r0.x, r0.y, cb4[1].y, r0.x +mul r0.x, r0.x, l(8.000000) +ftoi r0.x, r0.x +mad r0.y, -cb0[85].y, cb4[2].w, r14.z +round_ni r0.y, r0.y +add r1.w, l(-1.000000), cb4[1].w +max r3.w, r0.y, l(0.000000) +min r1.w, r1.w, r3.w +mul r3.w, r1.w, l(8.000000) +ftoi r3.w, r3.w +ge r0.y, r1.w, r0.y +iadd r1.w, r3.w, cb0[110].y +mul r3.w, r11.w, r11.w +min r11.x, r0.z, l(1.000000) +add r0.z, -r11.w, l(1.000000) +mad r4.w, -r0.z, l(0.383026), l(-0.0761947036) +mad r4.w, r0.z, r4.w, l(1.049970) +mad r0.z, r0.z, r4.w, l(0.409255) +min r0.z, r0.z, l(0.999000) +add r4.w, -r0.z, l(1.000000) +add r17.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r17.xyz, r17.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx +mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r5.w, r11.yzyy, t15.yzwx, s1, l(0.000000) +mad r18.xyz, -r17.xyzx, r4.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r17.xyz, r17.xyzx, r17.xyzx +mov r19.w, l(1.000000) +mov r13.y, l(1.000000) +mov r20.z, r11.w +mov r21.xyz, l(0,0,0,0) +mov r6.w, l(1.000000) +mov r7.w, l(0) +loop + ilt r8.w, l(7), r7.w + breakc_nz r8.w + iadd r8.w, r0.x, r7.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r8.w, r8.w, l(0), t0.xxxx + iadd r9.z, r1.w, r7.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.z, r9.z, l(0), t0.xxxx + and r8.w, r8.w, r9.z + and r8.w, r0.y, r8.w + ishl r9.z, r7.w, l(5) + mov r22.xyz, l(0,0,0,0) + mov r11.y, r6.w + mov r11.z, r8.w + loop + breakc_z r11.z + firstbit_lo r12.w, r11.z + ishl r15.w, l(1), r12.w + xor r15.w, r11.z, r15.w + iadd r12.w, r9.z, r12.w + bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r12.wwww, l(1, 3, 5, 6) + bfi r16.w, l(29), l(3), r12.w, l(7) + ftou r17.w, cb5[r23.z + 6].w + ieq r17.w, r17.w, l(1) + if_nz r17.w + add r19.xyz, r1.xyzx, -cb5[r23.x + 6].xyzx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r23.z + 6].xzyx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r23.w + 6].yxzy + ushr r26.xyz, cb5[r23.z + 6].xzyx, l(16, 16, 16, 0) + ushr r27.xyz, cb5[r23.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyw, r27.yxyz + mov r28.xz, r24.xxzx + mov r28.yw, r26.xxxz + dp4 r17.w, r19.xyzw, r28.xyzw + mov r26.x, r24.y + mov r26.z, r25.y + mov r26.w, r27.x + dp4 r18.w, r19.xyzw, r26.xyzw + mov r27.xz, r25.xxzx + dp4 r19.x, r19.xyzw, r27.xyzw + max r17.w, |r17.w|, |r18.w| + max r17.w, |r19.x|, r17.w + mad r18.w, cb5[r16.w + 6].x, l(0.500000), l(0.500000) + add r17.w, r17.w, -r18.w + mad r18.w, -cb5[r16.w + 6].x, l(0.500000), l(0.500000) + div_sat r17.w, r17.w, r18.w + add r17.w, -r17.w, l(1.000000) + mul r17.w, r17.w, r17.w + else + mov r17.w, l(1.000000) + endif + lt r18.w, l(0.500000), cb5[r23.y + 6].z + lt r19.x, r17.w, l(0.001000) + or r19.x, r18.w, r19.x + if_nz r19.x + mov r11.z, r15.w + continue + endif + ishl r19.x, r12.w, l(3) + bfi r12.w, l(29), l(3), r12.w, l(2) + lt r19.y, cb5[r19.x + 6].w, l(1.500000) + if_nz r19.y + mad r19.y, cb5[r12.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r19.y, -|cb5[r12.w + 6].x| + add r24.y, -r24.x, cb5[r12.w + 6].y + add r19.y, -|r24.x|, l(1.000000) + add r19.y, -|r24.y|, r19.y + max r19.y, r19.y, l(0.000488281250) + ge r19.z, cb5[r12.w + 6].x, l(0.000000) + movc r24.z, r19.z, r19.y, -r19.y + dp3 r19.y, r24.xyzx, r24.xyzx + rsq r19.y, r19.y + mul r24.xyz, r19.yyyy, r24.xyzx + add r25.xyz, -r1.xyzx, cb5[r23.x + 6].xyzx + dp3 r19.y, r25.xyzx, r25.xyzx + rsq r19.z, r19.y + mul r26.xyz, r19.zzzz, r25.xyzx + ftoi r20.w, cb5[r16.w + 6].w + mul r27.xyz, r24.xyzx, cb5[r12.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r21.w, cb5[r19.x + 6].w + and r21.w, r21.w, l(1) + ieq r22.w, r21.w, l(0) + not r22.w, r22.w + lt r23.z, l(0.000000), cb5[r12.w + 6].z + and r22.w, r22.w, r23.z + dp3 r23.z, r28.xyzx, r28.xyzx + sqrt r23.z, r23.z + dp3 r24.w, r29.xyzx, r29.xyzx + sqrt r24.w, r24.w + dp3 r25.w, r6.xyzx, r28.xyzx + div r25.w, r25.w, r23.z + dp3 r26.w, r6.xyzx, r29.xyzx + div r26.w, r26.w, r24.w + add r25.w, r25.w, r26.w + mul_sat r30.x, r25.w, l(0.500000) + dp3 r25.w, r28.xyzx, r29.xyzx + mad r23.z, r23.z, r24.w, r25.w + mad r23.z, r23.z, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r23.z + dp3_sat r13.x, r6.xyzx, r26.xyzx + movc r20.xy, r22.wwww, r30.xyxx, r13.xyxx + lt r13.x, cb5[r23.w + 6].w, l(0.000000) + if_nz r13.x + mul r13.x, cb5[r23.x + 6].w, cb5[r23.x + 6].w + mul r13.x, r13.x, r19.y + mad r13.x, -r13.x, r13.x, l(1.000000) + max r13.x, r13.x, l(0.000000) + add r19.y, r19.y, l(1.000000) + div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), r19.y + and r23.z, r22.w, l(0x3f800000) + add r24.w, -r19.y, r20.y + mad r19.y, r23.z, r24.w, r19.y + mul r13.x, r13.x, r13.x + mul r13.x, r13.x, r19.y + else + mul r29.xyz, r25.xyzx, cb5[r23.x + 6].wwww + dp3 r19.y, r29.xyzx, r29.xyzx + min r19.y, r19.y, l(1.000000) + add r19.y, -r19.y, l(1.000000) + log r19.y, r19.y + mul r19.y, r19.y, cb5[r23.w + 6].w + exp r19.y, r19.y + mul r13.x, r19.y, r20.y + endif + dp3 r19.y, r26.xyzx, -r24.xyzx + add r19.y, r19.y, -cb5[r12.w + 6].z + mul_sat r19.y, r19.y, cb5[r12.w + 6].w + mul r19.y, r19.y, r19.y + movc r19.y, r21.w, l(1.000000), r19.y + mul r13.x, r13.x, r19.y + not r19.y, r22.w + ige r20.y, r20.w, l(0) + and r19.y, r19.y, r20.y + if_nz r19.y + if_z r21.w + ishl r19.y, r20.w, l(2) + mul r24.xyz, r1.yyyy, cb7[r19.y + 33].xywx + mad r24.xyz, cb7[r19.y + 32].xywx, r1.xxxx, r24.xyzx + mad r24.xyz, cb7[r19.y + 34].xywx, r1.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb7[r19.y + 35].xywx + div_sat r24.xy, r24.xyxx, r24.zzzz + mad r24.xy, r24.xyxx, cb7[r20.w + 0].zwzz, cb7[r20.w + 0].xyxx + else + ishl r19.y, r20.w, l(2) + dp3 r29.x, -r25.xyzx, cb7[r19.y + 32].xyzx + dp3 r29.y, -r25.xyzx, cb7[r19.y + 33].xyzx + dp3 r29.z, -r25.xyzx, cb7[r19.y + 34].xyzx + lt r19.y, |r29.x|, |r29.y| + and r19.y, r19.y, l(1) + dp2 r20.y, |r29.xyxx|, icb[r19.y + 0].xyxx + lt r20.y, r20.y, |r29.z| + movc r19.y, r20.y, l(2), r19.y + dp3 r20.y, r29.xyzx, icb[r19.y + 0].xyzx + lt r20.y, r20.y, l(0.000000) + bfi r19.y, l(31), l(1), r19.y, r20.y + ushr r20.y, r19.y, l(1) + dp3 r20.y, r29.xyzx, icb[r20.y + 0].xyzx + div r23.z, l(0.000244140625), cb7[r20.w + 0].w + add r23.z, -r23.z, l(0.500000) + utof r24.z, r19.y + ult r24.w, r19.y, l(2) + and r24.w, r24.w, l(2) + dp2 r24.w, r29.xzxx, icb[r24.w + 0].xzxx + mul r24.w, r24.w, icb[r19.y + 4].z + div r24.w, r24.w, |r20.y| + mad r24.z, r24.w, r23.z, r24.z + add r24.z, r24.z, l(0.500000) + mul_sat r25.x, r24.z, l(0.166666672) + iadd r24.z, l(-1), icb[r19.y + 4].y + dp2 r24.z, r29.yzyy, icb[r24.z + 0].xyxx + mul r19.y, r24.z, icb[r19.y + 4].w + div r19.y, r19.y, |r20.y| + mad_sat r25.y, -r19.y, r23.z, l(0.500000) + mad r24.xy, r25.xyxx, cb7[r20.w + 0].zwzz, cb7[r20.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r19.y, r24.xyxx, t23.yxzw, s1, l(0.000000) + mul r13.x, r13.x, r19.y + endif + lt r19.y, l(0.000000), r13.x + if_nz r19.y + if_z r21.w + ftoi r20.y, cb5[r23.y + 6].x + else + add r24.xyz, r1.xyzx, -cb5[r23.x + 6].xyzx + lt r25.xyz, |r24.yzzy|, |r24.xxyx| + and r20.w, r25.y, r25.x + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ushr r21.w, cb5[r12.w + 6].w, l(24) + ubfe r25.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r12.w + 6].wwww + movc r21.w, r24.x, r21.w, r25.x + and r23.z, l(255), cb5[r12.w + 6].w + movc r23.z, r24.y, r25.y, r23.z + ubfe r24.x, l(8), l(8), cb5[r23.y + 6].x + and r24.y, l(255), cb5[r23.y + 6].x + movc r24.x, r24.z, r24.x, r24.y + movc r23.z, r25.z, r23.z, r24.x + movc r20.w, r20.w, r21.w, r23.z + ilt r21.w, r20.w, l(80) + movc r20.y, r21.w, r20.w, l(-1) + endif + mad r24.xyz, r26.xyzx, cb6[r20.y + 288].xxxx, r1.xyzx + mul r20.w, l(5.000000), cb6[r20.y + 288].y + mad r24.xyz, r6.xyzx, r20.wwww, r24.xyzx + ishl r20.w, r20.y, l(2) + mul r25.xyzw, r24.yyyy, cb6[r20.w + 65].xyzw + mad r25.xyzw, cb6[r20.w + 64].xyzw, r24.xxxx, r25.xyzw + mad r24.xyzw, cb6[r20.w + 66].xyzw, r24.zzzz, r25.xyzw + add r24.xyzw, r24.xyzw, cb6[r20.w + 67].xyzw + div r24.xyz, r24.xyzx, r24.wwww + ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ge r29.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r30.xy, -cb6[r20.y + 344].xyxx, cb6[r20.y + 344].zwzz + mad r24.xy, r24.xyxx, r30.xyxx, cb6[r20.y + 344].xyxx + mad r30.xy, r24.xyxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r30.xy, r30.xyxx + mad r24.xy, r24.xyxx, cb6[400].zwzz, -r30.xyxx + add r31.xyzw, r24.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r32.xyzw, r31.xxzz, r31.xxzz + add r30.zw, -r24.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r31.xz, r24.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r33.xy, r24.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r34.xy, r30.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy + add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r24.xy, r32.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r24.xyxx + mul r35.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r24.xy, -r31.xzxx, r31.xzxx, r30.zwzz + add r24.xy, r24.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r36.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r24.xy, r31.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r35.z, r36.x + mov r35.w, r24.x + mov r34.z, r33.x + mov r34.w, r32.x + add r31.xyzw, r34.zwxz, r35.zwxz + mov r36.z, r35.y + mov r36.w, r24.y + mov r33.z, r34.y + mov r33.w, r32.z + add r24.xyw, r33.zyzw, r36.zyzw + div r32.xyz, r34.xzwx, r31.zwyz + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyz, r32.xyzx, cb6[400].xxxx + div r33.xyz, r33.zywz, r24.xywx + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyw, r33.xyxz, cb6[400].yyyy + mul r34.xyzw, r24.xxxy, r31.zwyz + mov r32.w, r33.x + mad r35.xyzw, r30.xyxy, cb6[400].xyxy, r32.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r35.xyxx, t11.xxxx, s4, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r35.zwzz, t11.xxxx, s4, r24.z + mul r21.w, r21.w, r34.y + mad r20.w, r34.x, r20.w, r21.w + mad r30.zw, r30.xxxy, cb6[400].xxxy, r32.zzzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r30.zwzz, t11.xxxx, s4, r24.z + mad r20.w, r34.z, r21.w, r20.w + mov r33.z, r32.x + mad r35.xyzw, r30.xyxy, cb6[400].xyxy, r33.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r35.xyxx, t11.xxxx, s4, r24.z + mad r20.w, r34.w, r21.w, r20.w + mul r34.xyzw, r24.yyww, r31.xyzw + mov r33.xz, r32.yyzy + mad r32.xyzw, r30.xyxy, cb6[400].xyxy, r33.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r32.xyxx, t11.xxxx, s4, r24.z + mad r20.w, r34.x, r21.w, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r32.zwzz, t11.xxxx, s4, r24.z + mad r20.w, r34.y, r21.w, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r35.zwzz, t11.xxxx, s4, r24.z + mad r20.w, r34.z, r21.w, r20.w + ige r21.w, r20.y, l(0) + or r25.xyz, r25.xyzx, r29.xyzx + or r23.z, r25.y, r25.x + or r23.z, r25.z, r23.z + and r24.x, r24.z, l(0x7fffffff) + ult r24.x, l(0x7f800000), r24.x + or r23.z, r23.z, r24.x + mad r25.xyzw, r30.xyxy, cb6[400].xyxy, r33.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r25.xyxx, t11.xxxx, s4, r24.z + mad r20.w, r34.w, r24.x, r20.w + mul r24.x, r24.w, r31.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r25.zwzz, t11.xxxx, s4, r24.z + mad r20.w, r24.x, r24.y, r20.w + add r20.w, r20.w, l(-1.000000) + mad r20.y, cb6[r20.y + 288].w, r20.w, l(1.000000) + movc r20.y, r23.z, l(1.000000), r20.y + movc r20.y, r21.w, r20.y, l(1.000000) + else + mov r20.y, l(1.000000) + endif + if_nz r22.w + dp3 r20.w, r15.xyzx, r27.xyzx + mul_sat r21.w, r19.z, cb5[r12.w + 6].z + mad r21.w, r21.w, l(0.500000), r3.w + min r21.w, r21.w, l(1.000000) + div r21.w, r3.w, r21.w + mad r24.xyz, r15.xyzx, r20.wwww, -r27.xyzx + dp3 r22.w, r28.xyzx, r24.xyzx + mul r20.w, r20.w, r20.w + mad r20.w, cb5[r12.w + 6].z, cb5[r12.w + 6].z, -r20.w + div_sat r20.w, r22.w, r20.w + mad r24.xyz, r27.xyzx, r20.wwww, r28.xyzx + dp3 r20.w, r24.xyzx, r24.xyzx + rsq r20.w, r20.w + mul r26.xyz, r20.wwww, r24.xyzx + else + mov r21.w, l(1.000000) + endif + if_nz r19.y + mul_sat r19.y, r19.z, cb5[r16.w + 6].y + mad r24.xyz, r3.xyzx, r2.wwww, r26.xyzx + dp3 r19.z, r24.xyzx, r24.xyzx + max r19.z, r19.z, l(0.0000610351562) + rsq r19.z, r19.z + mul r24.xyz, r19.zzzz, r24.xyzx + dp3_sat r19.z, r6.xyzx, r24.xyzx + dp3_sat r20.w, r5.xyzx, r24.xyzx + lt r22.w, l(0.000000), r19.y + mul r19.y, r19.y, r19.y + mad r23.z, r20.w, l(3.600000), l(0.400000) + div r19.y, r19.y, r23.z + mad r19.y, r11.w, r11.w, r19.y + min r19.y, r19.y, l(1.000000) + movc r19.y, r22.w, r19.y, r3.w + mul r19.y, r19.y, r19.y + mad r22.w, r19.z, r19.y, -r19.z + mad r19.z, r22.w, r19.z, l(1.000000) + add r20.w, -r20.w, l(1.000000) + mul r22.w, r20.w, r20.w + mul r22.w, r22.w, r22.w + mul r23.z, r20.w, r22.w + mad r20.w, -r22.w, r20.w, l(1.000000) + mad r24.xyz, r7.xyzx, r20.wwww, r23.zzzz + mul r19.z, r19.z, r19.z + div r19.z, r19.y, r19.z + mul r19.z, r21.w, r19.z + mad r20.w, -r11.x, r19.y, r11.x + mad r20.w, r20.w, r11.x, r19.y + sqrt r20.w, r20.w + mad r21.w, -r20.x, r19.y, r20.x + mad r19.y, r21.w, r20.x, r19.y + sqrt r19.y, r19.y + mul r19.y, r11.x, r19.y + mad r19.y, r20.x, r20.w, r19.y + add r19.y, r19.y, l(0.000100) + div r19.y, l(0.500000), r19.y + mul r19.y, r19.y, r19.z + mul r24.xyz, r19.yyyy, r24.xyzx + min r24.xyz, r24.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r19.yz, r20.xxzx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r19.y, r19.yzyy, t15.yxzw, s1, l(0.000000) + mul r19.y, r5.w, r19.y + mul r19.y, r0.z, r19.y + div r19.y, r19.y, r4.w + mul r25.xyz, r17.xyzx, r19.yyyy + div r25.xyz, r25.xyzx, r18.xyzx + add r24.xyz, r24.xyzx, r25.xyzx + mul r24.xyz, r24.xyzx, cb5[r16.w + 6].zzzz + max r24.xyz, r24.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r24.xyz, r24.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r25.xyz, r9.xywx, r20.xxxx + mad r24.xyz, r24.xyzx, r20.xxxx, r25.xyzx + mul r25.xyz, r13.xxxx, cb5[r19.x + 6].xyzx + mul r20.xyw, r20.yyyy, r25.xyxz + mul r20.xyw, r17.wwww, r20.xyxw + mul r20.xyw, r20.xyxw, r24.xyxz + else + mov r20.xyw, l(0,0,0,0) + endif + else + if_z r18.w + mad r13.x, cb5[r12.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r13.x, -|cb5[r12.w + 6].x| + add r24.y, -r24.x, cb5[r12.w + 6].y + add r13.x, -|r24.x|, l(1.000000) + add r13.x, -|r24.y|, r13.x + max r13.x, r13.x, l(0.000488281250) + ge r17.w, cb5[r12.w + 6].x, l(0.000000) + movc r24.z, r17.w, r13.x, -r13.x + dp3 r13.x, r24.xyzx, r24.xyzx + rsq r13.x, r13.x + mul r24.xyz, r13.xxxx, r24.xyzx + add r25.xyz, -r1.xyzx, cb5[r23.x + 6].xyzx + dp3 r13.x, r25.xyzx, r25.xyzx + rsq r17.w, r13.x + mul r26.xyz, r17.wwww, r25.xyzx + ftoi r16.w, cb5[r16.w + 6].w + mul r27.xyz, r24.xyzx, cb5[r12.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r27.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r17.w, cb5[r19.x + 6].w + and r17.w, r17.w, l(1) + ieq r18.w, r17.w, l(0) + not r18.w, r18.w + lt r19.x, l(0.000000), cb5[r12.w + 6].z + and r18.w, r18.w, r19.x + dp3 r19.x, r28.xyzx, r28.xyzx + dp3 r19.y, r27.xyzx, r27.xyzx + sqrt r19.xy, r19.xyxx + dp3 r19.z, r28.xyzx, r27.xyzx + mad r19.x, r19.x, r19.y, r19.z + mad r19.x, r19.x, l(0.500000), l(1.000000) + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x + movc r19.x, r18.w, r19.x, l(1.000000) + lt r19.y, cb5[r23.w + 6].w, l(0.000000) + if_nz r19.y + mul r19.y, cb5[r23.x + 6].w, cb5[r23.x + 6].w + mul r19.y, r13.x, r19.y + mad r19.y, -r19.y, r19.y, l(1.000000) + max r19.y, r19.y, l(0.000000) + add r13.x, r13.x, l(1.000000) + div r13.x, l(1.000000, 1.000000, 1.000000, 1.000000), r13.x + and r19.z, r18.w, l(0x3f800000) + add r21.w, -r13.x, r19.x + mad r13.x, r19.z, r21.w, r13.x + mul r19.y, r19.y, r19.y + mul r13.x, r13.x, r19.y + else + mul r27.xyz, r25.xyzx, cb5[r23.x + 6].wwww + dp3 r19.y, r27.xyzx, r27.xyzx + min r19.y, r19.y, l(1.000000) + add r19.y, -r19.y, l(1.000000) + log r19.y, r19.y + mul r19.y, r19.y, cb5[r23.w + 6].w + exp r19.y, r19.y + mul r13.x, r19.y, r19.x + endif + dp3 r19.x, r26.xyzx, -r24.xyzx + add r19.x, r19.x, -cb5[r12.w + 6].z + mul_sat r19.x, r19.x, cb5[r12.w + 6].w + mul r19.x, r19.x, r19.x + movc r19.x, r17.w, l(1.000000), r19.x + mul r13.x, r13.x, r19.x + not r18.w, r18.w + ige r19.x, r16.w, l(0) + and r18.w, r18.w, r19.x + if_nz r18.w + if_z r17.w + ishl r18.w, r16.w, l(2) + mul r19.xyz, r1.yyyy, cb7[r18.w + 33].xywx + mad r19.xyz, cb7[r18.w + 32].xywx, r1.xxxx, r19.xyzx + mad r19.xyz, cb7[r18.w + 34].xywx, r1.zzzz, r19.xyzx + add r19.xyz, r19.xyzx, cb7[r18.w + 35].xywx + div_sat r19.xy, r19.xyxx, r19.zzzz + mad r19.xy, r19.xyxx, cb7[r16.w + 0].zwzz, cb7[r16.w + 0].xyxx + else + ishl r18.w, r16.w, l(2) + dp3 r24.x, -r25.xyzx, cb7[r18.w + 32].xyzx + dp3 r24.y, -r25.xyzx, cb7[r18.w + 33].xyzx + dp3 r24.z, -r25.xyzx, cb7[r18.w + 34].xyzx + lt r18.w, |r24.x|, |r24.y| + and r18.w, r18.w, l(1) + dp2 r19.z, |r24.xyxx|, icb[r18.w + 0].xyxx + lt r19.z, r19.z, |r24.z| + movc r18.w, r19.z, l(2), r18.w + dp3 r19.z, r24.xyzx, icb[r18.w + 0].xyzx + lt r19.z, r19.z, l(0.000000) + bfi r18.w, l(31), l(1), r18.w, r19.z + ushr r19.z, r18.w, l(1) + dp3 r19.z, r24.xyzx, icb[r19.z + 0].xyzx + div r21.w, l(0.000244140625), cb7[r16.w + 0].w + add r21.w, -r21.w, l(0.500000) + utof r22.w, r18.w + ult r23.z, r18.w, l(2) + and r23.z, r23.z, l(2) + dp2 r23.z, r24.xzxx, icb[r23.z + 0].xzxx + mul r23.z, r23.z, icb[r18.w + 4].z + div r23.z, r23.z, |r19.z| + mad r22.w, r23.z, r21.w, r22.w + add r22.w, r22.w, l(0.500000) + mul_sat r25.x, r22.w, l(0.166666672) + iadd r22.w, l(-1), icb[r18.w + 4].y + dp2 r22.w, r24.yzyy, icb[r22.w + 0].xyxx + mul r18.w, r22.w, icb[r18.w + 4].w + div r18.w, r18.w, |r19.z| + mad_sat r25.y, -r18.w, r21.w, l(0.500000) + mad r19.xy, r25.xyxx, cb7[r16.w + 0].zwzz, cb7[r16.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r16.w, r19.xyxx, t23.yzwx, s1, l(0.000000) + mul r13.x, r13.x, r16.w + endif + lt r13.x, l(0.000000), r13.x + if_nz r13.x + if_z r17.w + ftoi r13.x, cb5[r23.y + 6].x + else + add r19.xyz, r1.xyzx, -cb5[r23.x + 6].xyzx + lt r23.xzw, |r19.yyzz|, |r19.xxxy| + and r16.w, r23.z, r23.x + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + ushr r17.w, cb5[r12.w + 6].w, l(24) + ubfe r23.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb5[r12.w + 6].wwww + movc r17.w, r19.x, r17.w, r23.x + and r12.w, l(255), cb5[r12.w + 6].w + movc r12.w, r19.y, r23.z, r12.w + ubfe r18.w, l(8), l(8), cb5[r23.y + 6].x + and r19.x, l(255), cb5[r23.y + 6].x + movc r18.w, r19.z, r18.w, r19.x + movc r12.w, r23.w, r12.w, r18.w + movc r12.w, r16.w, r17.w, r12.w + ilt r16.w, r12.w, l(80) + movc r13.x, r16.w, r12.w, l(-1) + endif + mad r19.xyz, r26.xyzx, cb6[r13.x + 288].xxxx, r1.xyzx + mul r12.w, l(5.000000), cb6[r13.x + 288].y + mad r19.xyz, r6.xyzx, r12.wwww, r19.xyzx + ishl r12.w, r13.x, l(2) + mul r23.xyzw, r19.yyyy, cb6[r12.w + 65].xyzw + mad r23.xyzw, cb6[r12.w + 64].xyzw, r19.xxxx, r23.xyzw + mad r23.xyzw, cb6[r12.w + 66].xyzw, r19.zzzz, r23.xyzw + add r23.xyzw, r23.xyzw, cb6[r12.w + 67].xyzw + div r19.xyz, r23.xyzx, r23.wwww + ge r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + ge r24.xyz, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r25.xy, -cb6[r13.x + 344].xyxx, cb6[r13.x + 344].zwzz + mad r19.xy, r19.xyxx, r25.xyxx, cb6[r13.x + 344].xyxx + mad r25.xy, r19.xyxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r25.xy, r25.xyxx + mad r19.xy, r19.xyxx, cb6[400].zwzz, -r25.xyxx + add r26.xyzw, r19.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r25.zw, -r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + min r26.xz, r19.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r19.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r19.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r19.xyxx + mul r30.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r19.xy, -r26.xzxx, r26.xzxx, r25.zwzz + add r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r31.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r19.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r30.z, r31.x + mov r30.w, r19.x + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r19.y + mov r28.z, r29.y + mov r28.w, r27.z + add r27.xyz, r28.zywz, r31.zywz + div r29.xyz, r29.xzwx, r26.zwyz + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.xyzx, cb6[400].xxxx + div r28.xyz, r28.zywz, r27.xyzx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyw, r28.xyxz, cb6[400].yyyy + mul r30.xyzw, r26.zwyz, r27.xxxy + mov r29.w, r28.x + mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r29.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r12.w, r31.xyxx, t11.xxxx, s4, r19.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r31.zwzz, t11.xxxx, s4, r19.z + mul r16.w, r16.w, r30.y + mad r12.w, r30.x, r12.w, r16.w + mad r19.xy, r25.xyxx, cb6[400].xyxx, r29.zwzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r19.xyxx, t11.xxxx, s4, r19.z + mad r12.w, r30.z, r16.w, r12.w + mov r28.z, r29.x + mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r28.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r31.xyxx, t11.xxxx, s4, r19.z + mad r12.w, r30.w, r16.w, r12.w + mul r30.xyzw, r26.xyzw, r27.yyzz + mov r28.xz, r29.yyzy + mad r29.xyzw, r25.xyxy, cb6[400].xyxy, r28.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r29.xyxx, t11.xxxx, s4, r19.z + mad r12.w, r30.x, r16.w, r12.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r29.zwzz, t11.xxxx, s4, r19.z + mad r12.w, r30.y, r16.w, r12.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r31.zwzz, t11.xxxx, s4, r19.z + mad r12.w, r30.z, r16.w, r12.w + ige r16.w, r13.x, l(0) + or r23.xyz, r23.xyzx, r24.xyzx + or r17.w, r23.y, r23.x + or r17.w, r23.z, r17.w + and r18.w, r19.z, l(0x7fffffff) + ult r18.w, l(0x7f800000), r18.w + or r17.w, r17.w, r18.w + mad r23.xyzw, r25.xyxy, cb6[400].xyxy, r28.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r23.xyxx, t11.xxxx, s4, r19.z + mad r12.w, r30.w, r18.w, r12.w + mul r18.w, r26.y, r27.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r23.zwzz, t11.xxxx, s4, r19.z + mad r12.w, r18.w, r19.x, r12.w + add r12.w, r12.w, l(-1.000000) + mad r12.w, cb6[r13.x + 288].w, r12.w, l(1.000000) + movc r12.w, r17.w, l(1.000000), r12.w + movc r12.w, r16.w, r12.w, l(1.000000) + else + mov r12.w, l(1.000000) + endif + else + mov r12.w, l(1.000000) + endif + mul r11.y, r11.y, r12.w + mov r20.xyw, l(0,0,0,0) + endif + add r22.xyz, r20.xywx, r22.xyzx + mov r11.z, r15.w + endloop + mov r6.w, r11.y + add r21.xyz, r21.xyzx, r22.xyzx + iadd r7.w, r7.w, l(1) +endloop +dp3 r0.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r1.xzw, -r0.xxxx, r2.xxyz +mad r0.xyz, cb0[184].wwww, r1.xzwx, r0.xxxx +mad r1.xzw, r21.xxyz, r6.wwww, r16.xxyz +mul r2.xyz, cb2[20].zzzz, cb2[21].xyzx +add r2.w, -r10.w, l(1.000000) +add r3.x, l(1.000000), -cb2[20].y +max r3.x, r3.x, l(0.010000) +div_sat r2.w, r2.w, r3.x +mad r2.xyz, r8.xyzx, r2.xyzx, -r1.xzwx +mad r1.xzw, r2.wwww, r2.xxyz, r1.xxzw +mad r0.xyz, r0.xyzx, cb0[184].xyzx, r1.xzwx +mad r1.x, r1.y, cb0[156].w, cb0[157].w +mad r1.z, r0.w, cb0[154].w, -cb0[153].w +max r1.xz, r1.xxzx, l(0.010000, 0.000000, 0.000000, 0.000000) +mul r1.w, r1.x, l(-1.442695) +exp r1.w, r1.w +add r1.w, -r1.w, l(1.000000) +div r1.x, r1.w, r1.x +mad r1.w, r1.y, cb0[156].w, cb0[158].w +mul r1.w, r1.w, l(1.442695) +exp r1.w, r1.w +mul r1.x, r1.w, r1.x +mul r1.x, r1.x, -r1.z +mul r1.xzw, r1.xxxx, cb0[155].xxyz +mul r1.xzw, r1.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r1.xzw, r1.xxzw +dp3 r2.x, -r5.xyzx, cb0[154].xyzx +mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r2.xxxx, cb0[155].wwww +add r2.y, -r2.z, r2.y +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r14.w, l(7), cb0[108].w + imad r3.xyz, r14.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r2.z, r3.y, r3.z, r3.x + imad r2.w, r3.z, r2.z, r3.y + imad r3.x, r2.z, r2.w, r3.z + imad r6.x, r2.w, r3.x, r2.z + dp3 r2.z, -r5.xyzx, -r4.xyzx + add r3.y, r1.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r2.z + div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z + and r2.z, r2.z, r3.z + mul r2.z, r2.z, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w + mul r3.w, r2.z, r3.z + mad r4.x, r3.w, r3.y, cb0[44].y + mad r3.y, -r3.w, r3.y, r3.y + mul r3.w, r3.y, cb0[159].z + mul r3.y, r3.y, cb0[162].x + max r3.yw, r3.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r4.y, r4.x, -cb0[159].x + mul r4.y, r4.y, cb0[159].z + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[159].y + lt r4.z, l(5.960464478E-08), |r3.w| + exp r4.w, -r3.w + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r4.z, r4.w, r3.w + add r4.x, r4.x, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.z, l(5.960464478E-08), |r3.y| + exp r4.w, -r3.y + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.y + mad r3.y, -r3.y, l(0.240226507), l(0.693147182) + movc r3.y, r4.z, r4.w, r3.y + mul r3.y, r3.y, r4.x + mad r3.y, r4.y, r3.w, r3.y + mad r2.z, -r2.z, r3.z, l(1.000000) + mul r2.z, r0.w, r2.z + mul r2.z, r2.z, r3.y + exp r2.z, -r2.z + min r2.z, r2.z, l(1.000000) + max r2.z, r2.z, cb0[161].w + mad_sat r3.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx + add r2.z, r2.z, r3.y + add r2.z, r3.z, r2.z + min r2.z, r2.z, l(1.000000) + imad r6.y, r3.x, r6.x, r2.w + ushr r3.xy, r6.xyxx, l(16, 16, 0, 0) + utof r3.xy, r3.xyxx + mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb0[167].wwww, r13.zwzz + mul r3.xy, r3.xyxx, cb0[165].xyxx + mad r2.w, r14.z, cb0[164].x, cb0[164].y + log r2.w, r2.w + mul r2.w, r2.w, cb0[164].z + div r3.z, r2.w, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t22.xyzw, s1, l(0.000000) + add r2.w, r14.z, -cb0[166].z + mul_sat r2.w, r2.w, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r2.wwww, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r2.w, -r2.z, l(1.000000) + mul r4.xyz, r2.wwww, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r2.z, r2.z, r3.w +else + add r1.y, r1.y, -cb0[44].y + mul r2.w, r1.y, cb0[159].z + max r2.w, r2.w, l(-127.000000) + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r2.w| + exp r4.y, -r2.w + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r4.x, r4.y, r2.w + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.y, r4.z, r1.y + mul r1.y, r1.y, r4.x + mad r1.y, r3.w, r2.w, r1.y + mul r1.y, r0.w, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.w, r1.y, r4.x + add r0.w, r4.y, r0.w + min r2.z, r0.w, l(1.000000) + add r0.w, -r2.z, l(1.000000) + mul r3.xyz, r0.wwww, cb0[161].xyzx +endif +mul r4.xyz, r1.xzwx, r2.zzzz +mad r0.w, r2.x, r2.x, l(1.000000) +mul r0.w, r0.w, l(0.0596831031) +mad r5.xyz, cb0[156].xyzx, r0.wwww, cb0[158].xyzx +mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r1.y, r2.y, l(12.566371) +sqrt r2.x, r2.y +mul r1.y, r1.y, r2.x +max r1.y, r1.y, l(0.001000) +div r0.w, r0.w, r1.y +mad_sat r2.xyw, cb0[157].xyxz, r0.wwww, r5.xyxz +mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) +add r1.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r1.xyz, r1.xyzx, r2.xywx +mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx +mad r10.xyz, r0.xyzx, r4.xyzx, r1.xyzx +mul r0.xy, r12.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r0.xy, |r0.xyxx| +sqrt r0.xy, r0.xyxx +mov r12.z, -r12.y +lt r0.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.xxxz +lt r1.xy, r12.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r0.zw, -r0.zzzw, r1.xxxy +itof r0.zw, r0.zzzw +mul r0.xy, r0.zwzz, r0.xyxx +mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +ishl r0.z, v7.x, l(4) +max r0.z, cb1[r0.z + 4].z, cb1[r0.z + 4].y +add r0.z, r0.z, l(-0.100000024) +lt r0.w, l(0.000000), r0.z +lt r0.z, r0.z, l(0.000000) +iadd r0.z, -r0.w, r0.z +itof r0.z, r0.z +mov_sat r0.z, r0.z +add r1.xy, -r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mad r0.xy, r0.zzzz, r1.xyxx, r0.xyxx +min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) +dp3 r0.x, r10.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mul r0.x, r10.w, r0.x +max r0.x, r10.w, r0.x +mul_sat r0.x, r0.x, l(10.000000) +lt r0.x, l(0.500000), r0.x +and o1.z, r0.x, l(0x3f800000) +mov o0.xyzw, r10.xyzw +mov o1.w, l(0) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0xB317E9E1.cso b/src/games/endfield/glass/0xB317E9E1.cso new file mode 100644 index 0000000000000000000000000000000000000000..069ffe1073adf0d7de2ab782046e28fb7bae09f4 GIT binary patch literal 53640 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

  • lD+Y)1s>|ZduVJIYl35#?aJ_M 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 XZ_a9d>7EH%VEclRYt`@Wf=>Sr!_O0F literal 0 HcmV?d00001 diff --git a/src/games/endfield/glass/0xB317E9E1.ps_5_0.asm b/src/games/endfield/glass/0xB317E9E1.ps_5_0.asm new file mode 100644 index 0000000000..bf3ebe07c7 --- /dev/null +++ b/src/games/endfield/glass/0xB317E9E1.ps_5_0.asm @@ -0,0 +1,1757 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Wed Feb 4 07:24:28 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xyz +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 zw 1 NONE float zw +// TEXCOORD 2 xyz 2 NONE float xyz +// TEXCOORD 3 xyzw 3 NONE float xyzw +// TEXCOORD 4 xyzw 4 NONE float x +// TEXCOORD 5 xyz 5 NONE float xyz +// TEXCOORD 6 xyz 6 NONE float xyz +// TEXCOORD 7 x 7 NONE uint x +// SV_IsFrontFace 0 x 8 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[244], immediateIndexed +dcl_constantbuffer CB1[4085], dynamicIndexed +dcl_constantbuffer CB2[20], immediateIndexed +dcl_constantbuffer CB3[259], dynamicIndexed +dcl_constantbuffer CB4[3], immediateIndexed +dcl_constantbuffer CB5[2054], dynamicIndexed +dcl_constantbuffer CB6[715], dynamicIndexed +dcl_constantbuffer CB7[160], dynamicIndexed +dcl_constantbuffer CB13[15], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_comparison +dcl_sampler s4, mode_default +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2darray (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2d (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture3d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture2d (float,float,float,float) t18 +dcl_input_ps_siv linear noperspective v0.xyz, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v1.zw +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyzw +dcl_input_ps linear v4.x +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps constant v7.x +dcl_input_ps_sgv constant v8.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 36 +mul r0.xy, v0.xyxx, cb0[82].zwzz +mad r0.xy, r0.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +mul r1.xyzw, -r0.yyyy, cb0[25].xyzw +mad r0.xyzw, cb0[24].xyzw, r0.xxxx, r1.xyzw +mad r0.xyzw, cb0[26].xyzw, v0.zzzz, r0.xyzw +add r0.xyzw, r0.xyzw, cb0[27].xyzw +div r0.xyz, r0.xyzx, r0.wwww +lt r1.x, l(0.000000), v3.w +movc r1.x, r1.x, l(1.000000), l(-1.000000) +eq r1.y, l(0.000000), cb0[86].w +add r2.xyz, -r0.xyzx, cb0[44].xyzx +mov r3.x, cb0[0].z +mov r3.y, cb0[1].z +mov r3.z, cb0[2].z +movc r1.yzw, r1.yyyy, r2.xxyz, r3.xxyz +dp3 r2.x, r1.yzwy, r1.yzwy +max r2.y, r2.x, l(9.999999939E-09) +rsq r2.y, r2.y +mul r4.xyz, r1.yzwy, r2.yyyy +mul r2.x, r2.y, r2.x +add r2.zw, -v1.xxxy, v1.zzzw +mad r5.xy, cb2[3].xxxx, r2.zwzz, v1.xyxx +mad r5.xy, r5.xyxx, cb2[12].xyxx, cb2[12].zwzz +mad r2.zw, cb2[2].wwww, r2.zzzw, v1.xxxy +mad r2.zw, r2.zzzw, cb2[11].xxxy, cb2[11].zzzw +sample_b_indexable(texture2d)(float,float,float,float) r6.xyzw, r2.zwzz, t2.xyzw, s4, cb0[108].x +add r2.z, cb0[108].x, cb2[3].y +sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, r5.xyxx, t3.xywz, s5, r2.z +mul r7.x, r7.x, r7.z +mad r2.zw, r7.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +mul r5.zw, r2.zzzw, cb2[0].xxxx +sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, r5.xyxx, t4.xyzw, s6, cb0[108].x +mul r6.xyzw, r6.xyzw, cb2[8].xyzw +mul_sat r6.xyz, r6.xyzx, cb2[4].zzzz +add r8.xyz, -r6.xyzx, cb2[8].xyzx +mad r6.xyz, cb2[4].xxxx, r8.xyzx, r6.xyzx +mad r3.w, r6.w, v4.x, -r6.w +mad r8.w, cb2[19].x, r3.w, r6.w +add r3.w, -cb2[0].z, cb2[0].w +mad r9.w, r7.y, r3.w, cb2[0].z +add_sat r3.w, l(-1.000000), cb2[3].w +add r4.w, -r7.x, cb2[4].y +mad r3.w, r3.w, r4.w, r7.x +mul r7.xyw, v2.zxzy, v3.yzyx +mad r7.xyw, v2.yzyx, v3.zxzy, -r7.xyxw +mul r7.xyw, r1.xxxx, r7.xyxw +mul r5.xyw, r5.wwww, r7.xyxw +mad r5.xyz, v3.xyzx, r5.zzzz, r5.xywx +dp2 r1.x, r2.zwzz, r2.zwzz +min r1.x, r1.x, l(1.000000) +add r1.x, -r1.x, l(1.000000) +sqrt r1.x, r1.x +max r1.x, r1.x, l(1.000000017E-16) +lt r2.z, l(0.000000), cb2[1].w +movc r2.z, r2.z, l(-1.000000), l(1.000000) +movc r2.z, v8.x, l(1.000000), r2.z +mul r1.x, r1.x, r2.z +mad r5.xyz, v2.xyzx, r1.xxxx, r5.xyzx +dp3 r1.x, r5.xyzx, r5.xyzx +rsq r1.x, r1.x +mul r5.xyz, r1.xxxx, r5.xyzx +max r1.x, v5.z, l(9.999999939E-09) +div r2.zw, v5.xxxy, r1.xxxx +max r1.x, v6.z, l(9.999999939E-09) +div r7.xy, v6.xyxx, r1.xxxx +add r10.xy, r2.zwzz, -r7.xyxx +mul r1.x, l(0.080000), cb2[0].y +mad r7.xyw, -r6.xyxz, r3.wwww, r6.xyxz +mad r1.x, -r1.x, r3.w, r1.x +mad r6.xyz, r6.xyzx, r3.wwww, r1.xxxx +dp3 r1.x, r5.xyzx, r4.xyzx +mad r11.xyzw, r9.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r2.z, r11.x, r11.x +max r1.x, r1.x, l(0.000000) +mul r2.w, r1.x, l(-9.280000) +exp r2.w, r2.w +min r2.z, r2.w, r2.z +mad r2.z, r2.z, r11.x, r11.y +mad r2.zw, r2.zzzz, l(0.000000, 0.000000, -1.040000, 1.040000), r11.zzzw +eq r3.w, l(1.000000), cb0[113].y +mul r11.xyzw, r0.yyyy, cb0[241].xyzw +mad r11.xyzw, cb0[240].xyzw, r0.xxxx, r11.xyzw +mad r11.xyzw, cb0[242].xyzw, r0.zzzz, r11.xyzw +add r11.xyzw, r11.xyzw, cb0[243].xyzw +div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w +mul r11.xyz, r11.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) +mul r11.xyz, r4.wwww, r11.xyzx +mad_sat r11.xy, r11.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +mul r11.xy, r11.xyxx, cb0[82].xyxx +ftou r12.xy, r11.xyxx +mad r4.w, cb0[84].z, r11.z, cb0[84].w +div r12.z, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w +ftou r11.xy, v0.xyxx +mul r4.w, r0.y, cb0[1].z +mad r4.w, cb0[0].z, r0.x, r4.w +mad r4.w, cb0[2].z, r0.z, r4.w +add r4.w, r4.w, cb0[3].z +mov r11.z, |r4.w| +movc r11.xyz, r3.wwww, r12.xyzx, r11.xyzx +mad r12.xyz, r5.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r0.xyzx +mad r13.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r13.xyz, r12.xzyx, -r13.xyzx +max r3.w, |r13.y|, |r13.x| +add r3.w, r3.w, l(-464.000000) +mul_sat r3.w, r3.w, l(0.031250) +add r4.w, |r13.z|, l(-208.000000) +mul_sat r4.w, r4.w, l(0.031250) +max r3.w, r3.w, r4.w +ne r4.w, l(0.000000), cb0[210].w +lt r6.w, r3.w, l(1.000000) +and r4.w, r4.w, r6.w +if_nz r4.w + mad r13.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r13.xyz, r12.xzyx, -r13.xyzx + max r4.w, |r13.y|, |r13.x| + add r4.w, r4.w, l(-29.000000) + mul_sat r4.w, r4.w, l(0.500000) + add r6.w, |r13.z|, l(-13.000000) + mul_sat r6.w, r6.w, l(0.500000) + max r4.w, r4.w, r6.w + lt r6.w, r4.w, l(1.000000) + if_nz r6.w + mad r13.xyz, r12.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r14.xyz, r13.xyzx, cb0[211].xyzx + round_ni r14.xyz, r14.xyzx + mad r13.xyz, r13.xyzx, cb0[211].xyzx, -r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r13.xyzx, t11.xyzw, s1, l(0.000000) + add r6.w, -r4.w, l(1.000000) + mul r10.w, l(0.500000), cb0[211].y + mad r12.w, -cb0[211].y, l(0.500000), l(1.000000) + max r10.w, r10.w, r13.y + min r10.w, r12.w, r10.w + mul r13.w, r10.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r13.xwzx, t12.xyzw, s0, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r14.xxxx, r15.xyzx + add r15.xyz, r13.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t12.xyzw, s0, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r14.yyyy, r15.xyzx + add r13.xyz, r13.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xyz, r13.xyzx, t12.xyzw, s0, l(0.000000) + mad r13.xyz, r13.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r13.xyz, r14.zzzz, r13.xyzx + mad r10.w, r15.w, r6.w, r3.w + mov r13.w, r14.z + mul r13.xyzw, r6.wwww, r13.xyzw + mov r17.w, r14.y + mul r15.xyzw, r6.wwww, r17.xyzw + mov r16.w, r14.x + mul r14.xyzw, r6.wwww, r16.xyzw + else + mov r13.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r10.w, r3.w + endif + mad r16.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r16.xyz, r12.xzyx, -r16.xyzx + max r6.w, |r16.y|, |r16.x| + add r6.w, r6.w, l(-116.000000) + mul_sat r6.w, r6.w, l(0.125000) + add r12.w, |r16.z|, l(-52.000000) + mul_sat r12.w, r12.w, l(0.125000) + max r6.w, r6.w, r12.w + lt r12.w, r6.w, l(1.000000) + if_nz r12.w + mad r16.xyz, r12.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r16.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r16.xyzx, t13.xyzw, s1, l(0.000000) + add r12.w, -r6.w, l(1.000000) + mul r4.w, r4.w, r12.w + mul r12.w, l(0.500000), cb0[211].y + mad r17.w, -cb0[211].y, l(0.500000), l(1.000000) + max r12.w, r12.w, r16.y + min r12.w, r17.w, r12.w + mul r16.w, r12.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t14.xyzw, s0, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.xxxx, r18.xyzx + add r18.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t14.xyzw, s0, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r17.yyyy, r18.xyzx + add r16.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t14.xyzw, s0, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r17.zzzz, r16.xyzx + mad r10.w, r18.w, r4.w, r10.w + mov r16.w, r17.z + mad r13.xyzw, r16.xyzw, r4.wwww, r13.xyzw + mov r20.w, r17.y + mad r15.xyzw, r20.xyzw, r4.wwww, r15.xyzw + mov r19.w, r17.x + mad r14.xyzw, r19.xyzw, r4.wwww, r14.xyzw + endif + lt r4.w, l(0.000000), r6.w + if_nz r4.w + mad r12.xyz, r12.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r16.xyz, r12.xyzx, cb0[211].xyzx + mul r17.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r16.xyz, r16.xyzx + mad r12.xyz, r12.xyzx, cb0[211].xyzx, -r16.xyzx + mad r16.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r12.xyz, r17.xyzx, r12.xyzx + min r12.xyz, r16.xyzx, r12.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r12.xyzx, t15.yzwx, s1, l(0.000000) + add r4.w, -r3.w, l(1.000000) + mul r4.w, r4.w, r6.w + max r6.w, r17.y, r12.y + min r6.w, r16.y, r6.w + mul r12.w, r6.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r12.xwzx, t16.xyzw, s0, l(0.000000) + add r17.xyz, r12.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s0, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.yyyy, r17.xyzx + mov r17.w, r18.y + mad r13.xyzw, r17.xyzw, r4.wwww, r13.xyzw + add r12.xyz, r12.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r12.xyzx, t16.xyzw, s0, l(0.000000) + mad r12.xyz, r12.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r12.xyz, r18.xxxx, r12.xyzx + mov r12.w, r18.x + mad r15.xyzw, r12.xyzw, r4.wwww, r15.xyzw + mad r12.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r12.xyzx + mad r14.xyzw, r18.xyzw, r4.wwww, r14.xyzw + mad r10.w, r16.w, r4.w, r10.w + endif + mad_sat r4.w, r10.w, l(2.000000), l(-1.000000) + add r12.x, -r3.w, r4.w + add r3.w, r3.w, r4.w + mul r12.y, r3.w, l(0.500000) +else + mov r13.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r12.xy, l(0,1.000000,0,0) +endif +mul r16.xyzw, r12.yyyx, cb0[213].xyzw +mad r16.y, r16.w, l(0.500000), r16.y +mul r12.zw, r12.yyyx, cb0[213].wwwy +mad r16.w, r12.w, l(0.375000), r12.z +add r14.xyzw, r14.xyzw, r16.xyzw +mul r16.xyzw, r12.yyyx, cb0[214].xyzw +mad r16.y, r16.w, l(0.500000), r16.y +mul r12.zw, r12.yyyx, cb0[214].wwwy +mad r16.w, r12.w, l(0.375000), r12.z +add r15.xyzw, r15.xyzw, r16.xyzw +mul r16.xyzw, r12.yyyx, cb0[215].xyzw +mad r16.y, r16.w, l(0.500000), r16.y +mul r12.xy, r12.yxyy, cb0[215].wyww +mad r16.w, r12.y, l(0.375000), r12.x +add r12.xyzw, r13.xyzw, r16.xyzw +dp3 r3.w, r14.xyzx, r5.xyzx +add r3.w, r14.w, r3.w +max r13.x, r3.w, l(0.000000) +dp3 r3.w, r15.xyzx, r5.xyzx +add r3.w, r15.w, r3.w +max r13.y, r3.w, l(0.000000) +dp3 r3.w, r12.xyzx, r5.xyzx +add r3.w, r12.w, r3.w +max r13.z, r3.w, l(0.000000) +dp3 r3.w, -r4.xyzx, r5.xyzx +add r3.w, r3.w, r3.w +mad r12.xyz, r5.xyzx, -r3.wwww, -r4.xyzx +add r3.w, l(-1.000000), cb0[113].x +max r4.w, r9.w, l(0.001000) +log r4.w, r4.w +mad r4.w, -r4.w, l(1.200000), l(1.000000) +add r3.w, r3.w, -r4.w +utof r14.xy, r11.xyxx +mul r14.zw, r14.xxxy, cb3[0].wwww +round_ni r14.zw, r14.zzzw +add r4.w, r11.z, -cb3[2].y +round_ni r4.w, r4.w +add r6.w, l(-1.000000), cb3[1].x +max r10.w, r4.w, l(0.000000) +min r6.w, r6.w, r10.w +ge r4.w, r6.w, r4.w +mad r10.w, r14.w, cb3[0].x, r14.z +ftoi r10.w, r10.w +iadd r10.w, r10.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.w, r10.w, l(0), t0.xxxx +ftoi r6.w, r6.w +iadd r6.w, r6.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r6.w, r6.w, l(0), t0.xxxx +and r6.w, r6.w, r10.w +and r4.w, r4.w, r6.w +mul r15.xyz, r13.xyzx, cb0[111].xxxx +dp3 r6.w, r15.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r0.w, l(1.000000) +mov r5.w, l(1.000000) +mov r15.xyz, l(0,0,0,0) +mov r10.w, l(1.000000) +mov r12.w, r4.w +mov r13.w, l(0) +loop + lt r14.z, l(0.010000), r10.w + ine r14.w, r12.w, l(0) + and r14.w, r14.z, r14.w + if_nz r14.w + firstbit_lo r14.w, r12.w + ishl r15.w, l(1), r14.w + xor r12.w, r12.w, r15.w + ishl r14.w, r14.w, l(3) + dp4 r16.x, cb3[r14.w + 6].xyzw, r0.xyzw + dp4 r16.y, cb3[r14.w + 7].xyzw, r0.xyzw + dp4 r16.z, cb3[r14.w + 8].xyzw, r0.xyzw + ge r17.xyz, cb3[r14.w + 5].xyzx, |r16.xyzx| + and r15.w, r17.y, r17.x + and r15.w, r17.z, r15.w + if_nz r15.w + mul r15.w, l(0.100000), cb3[r14.w + 5].x + mul r17.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r17.xy, r17.xyxx, r17.xyxx + add r18.xyz, -|r16.xyzx|, cb3[r14.w + 5].xyzx + mul r18.xyz, r18.xyzx, cb3[r14.w + 9].xyzx + eq r16.w, l(1.000000), cb3[r14.w + 10].x + if_nz r16.w + dp3 r19.x, cb3[r14.w + 6].xyzx, r12.xyzx + dp3 r19.y, cb3[r14.w + 7].xyzx, r12.xyzx + dp3 r19.z, cb3[r14.w + 8].xyzx, r12.xyzx + add r20.xyz, -r16.xyzx, cb3[r14.w + 5].xyzx + div r20.xyz, r20.xyzx, r19.xyzx + add r21.xyz, -r16.xyzx, -cb3[r14.w + 5].xyzx + div r21.xyz, r21.xyzx, r19.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx + min r16.w, r20.y, r20.x + min r16.w, r20.z, r16.w + mad r16.xyz, r19.xyzx, r16.wwww, r16.xyzx + else + mov r16.xyz, r12.xyzx + endif + dp3 r16.w, r16.xyzx, r16.xyzx + rsq r16.w, r16.w + mul r16.xyz, r16.wwww, r16.xyzx + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + lt r20.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r19.xyz, -r19.xyzx, r20.xyzx + itof r19.xyz, r19.xyzx + dp3 r16.w, r16.xyzx, r19.xyzx + div r16.xyz, r16.xyzx, r16.wwww + lt r16.z, r16.z, l(0.000000) + add r19.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r19.xy, r19.zwzz, r19.xyxx + movc r16.xy, r16.zzzz, r19.xyxx, r16.xyxx + dp4 r16.z, cb3[r14.w + 4].xyzw, r5.xyzw + max r16.z, r16.z, l(0.000000) + max r16.z, r16.z, l(0.000100) + min r16.w, r18.z, r18.y + min r16.w, r16.w, r18.x + add r17.x, r17.y, r17.x + mad r17.x, r17.z, r17.z, r17.x + mad r15.w, r15.w, r15.w, -r17.x + mul r15.w, r15.w, cb3[r14.w + 9].x + mul r15.w, r15.w, cb3[r14.w + 9].x + add r17.x, l(1.000000), -cb3[r14.w + 10].y + mul r15.w, r15.w, r17.x + mul r15.w, r15.w, l(100.000000) + mad_sat r15.w, r16.w, cb3[r14.w + 10].y, r15.w + mul r16.w, r15.w, cb3[r14.w + 10].w + mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r17.xy, r16.xyxx, cb3[1].wwww, cb3[2].wwww + mov r17.z, cb3[r14.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t1.xyzw, s2, r3.w + mul r17.xyz, r17.xyzx, cb3[r14.w + 9].wwww + div r16.x, r6.w, r16.z + min r16.x, |r16.x|, l(1.000000) + mad r16.x, r16.x, l(2.000000), r6.w + add r16.y, r16.z, l(2.000000) + div r16.x, r16.x, r16.y + add r16.x, r16.x, l(-1.000000) + mad r16.x, r16.x, cb0[112].w, l(1.000000) + mul r16.xyz, r16.xxxx, r17.xyzx + mul r16.xyz, r16.wwww, r16.xyzx + mad r15.xyz, r16.xyzx, r10.wwww, r15.xyzx + mad r14.w, -r15.w, cb3[r14.w + 10].w, l(1.000000) + mul r10.w, r10.w, r14.w + endif + mov r13.w, l(-1) + continue + else + mov r13.w, r14.z + break + endif + mov r13.w, r14.z +endloop +if_nz r13.w + dp3 r0.w, r12.xyzx, r12.xyzx + rsq r0.w, r0.w + mul r16.xyz, r0.wwww, r12.xyzx + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + lt r18.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r18.xyzx + itof r17.xyz, r17.xyzx + dp3 r0.w, r16.xyzx, r17.xyzx + div r16.xyz, r16.xyzx, r0.wwww + lt r0.w, r16.z, l(0.000000) + add r14.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r14.zw, r14.zzzw, r17.xxxy + movc r14.zw, r0.wwww, r14.zzzw, r16.xxxy + mov r5.w, l(1.000000) + dp4 r0.w, cb3[3].xyzw, r5.xyzw + max r0.w, r0.w, l(0.000000) + max r0.w, r0.w, l(0.000100) + mad r14.zw, r14.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r16.xy, r14.zwzz, cb3[1].wwww, cb3[2].wwww + mov r16.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t1.xyzw, s2, r3.w + div r3.w, r6.w, r0.w + min r3.w, |r3.w|, l(1.000000) + mad r3.w, r3.w, l(2.000000), r6.w + add r0.w, r0.w, l(2.000000) + div r0.w, r3.w, r0.w + add r0.w, r0.w, l(-1.000000) + mad r0.w, r0.w, cb0[112].w, l(1.000000) + mul r16.xyz, r0.wwww, r16.xyzx + mad r15.xyz, r16.xyzx, r10.wwww, r15.xyzx +endif +mul r13.xyz, r7.xywx, r13.xyzx +add r0.w, r7.z, l(-1.000000) +mad r0.w, cb2[1].x, r0.w, l(1.000000) +mul r13.xyz, r0.wwww, r13.xyzx +mul r15.xyz, r15.xyzx, cb0[112].zzzz +// === Glass Fix: Reduce reflection probe intensity === +lt r30.x, l(0.500000), cb13[14].x +if_nz r30.x + mul r15.xyz, r15.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) +endif +mul r15.xyz, r15.xyzx, cb0[111].yyyy +mul_sat r0.w, r6.y, l(50.000000) +mul r0.w, r2.w, r0.w +mad r16.xyz, r6.xyzx, r2.zzzz, r0.wwww +mul r15.xyz, r15.xyzx, r16.xyzx +mad r13.xyz, r13.xyzx, cb0[111].xxxx, r15.xyzx +lt r0.w, cb6[35].w, l(0.990000) +if_nz r0.w + ftoi r0.w, cb6[35].x + ieq r2.z, r0.w, l(2) + movc r15.xyz, r2.zzzz, cb6[20].xyzx, cb0[44].xyzx + add r15.xyz, r0.xyzx, -r15.xyzx + dp3 r2.z, r15.xyzx, r15.xyzx + add r2.z, -r2.z, cb6[34].w + mul_sat r2.z, r2.z, cb6[34].z + lt r2.w, l(0.000000), r2.z + if_nz r2.w + ilt r0.w, l(0), r0.w + if_nz r0.w + add r15.xyz, r0.xyzx, -cb6[20].xyzx + add r16.xyz, r0.xyzx, -cb6[21].xyzx + add r17.xyz, r0.xyzx, -cb6[22].xyzx + add r18.xyz, r0.xyzx, -cb6[23].xyzx + dp3 r15.x, r15.xyzx, r15.xyzx + dp3 r15.y, r16.xyzx, r16.xyzx + dp3 r15.z, r17.xyzx, r17.xyzx + dp3 r15.w, r18.xyzx, r18.xyzx + lt r16.x, r15.x, cb6[20].w + lt r16.y, r15.y, cb6[21].w + lt r16.z, r15.z, cb6[22].w + lt r16.w, r15.w, cb6[23].w + and r17.xyzw, r16.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) + movc r16.xyz, r16.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) + add r16.xyz, r16.xyzx, r17.yzwy + max r17.yzw, r16.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) + dp4 r0.w, r17.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) + add r0.w, -r0.w, l(4.000000) + max r0.w, r0.w, l(0.000000) + min r0.w, r0.w, l(3.000000) + add r2.w, r0.w, l(1.000000) + min r2.w, r2.w, l(3.000000) + ftou r2.w, r2.w + dp3 r3.w, r15.yzwy, icb[r2.w + 0].yzwy + div r2.w, r3.w, cb6[r2.w + 20].w + ge r3.w, r2.w, l(0.000000) + ge r2.w, l(1.000000), r2.w + and r2.w, r2.w, r3.w + if_nz r2.w + ftou r2.w, r0.w + add r14.zw, r14.xxxy, l(0.000000, 0.000000, 2.083000, 4.867000) + dp2 r3.w, r14.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r3.w, r3.w + mul r3.w, r3.w, l(52.982918) + frc r3.w, r3.w + dp4 r4.w, r15.xyzw, icb[r2.w + 0].xyzw + div r2.w, r4.w, cb6[r2.w + 20].w + sqrt r2.w, r2.w + add r2.w, r2.w, l(-0.900000) + mul r2.w, r2.w, l(12.000000) + ge r2.w, r2.w, r3.w + and r2.w, r2.w, l(0x3f800000) + add r0.w, r0.w, r2.w + endif + dp3 r2.w, r5.xyzx, cb5[0].xyzx + max r2.w, r2.w, l(0.000000) + min r2.w, r2.w, l(0.900000) + add r2.w, -r2.w, l(1.000000) + ftou r3.w, r0.w + ishl r4.w, r3.w, l(2) + mul r14.zw, r2.wwww, cb6[r3.w + 24].xxxy + max r2.w, r14.z, l(0.000000) + mad r15.xyz, -cb5[0].xyzx, r2.wwww, r0.xyzx + mad r15.xyz, r5.xyzx, r14.wwww, r15.xyzx + mul r16.xyz, r15.yyyy, cb6[r4.w + 1].xyzx + mad r15.xyw, cb6[r4.w + 0].xyxz, r15.xxxx, r16.xyxz + mad r15.xyz, cb6[r4.w + 2].xyzx, r15.zzzz, r15.xywx + add r15.xyz, r15.xyzx, cb6[r4.w + 3].xyzx + ge r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + ge r17.xyz, r15.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + or r16.xyz, r16.xyzx, r17.xyzx + or r2.w, r16.y, r16.x + or r2.w, r16.z, r2.w + and r3.w, r15.z, l(0x7fffffff) + ult r3.w, l(0x7f800000), r3.w + or r16.z, r2.w, r3.w + ftoi r0.w, r0.w + mad r14.zw, r15.xxxy, cb6[r0.w + 28].zzzw, cb6[r0.w + 28].xxxy + mad r15.xy, r14.zwzz, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r15.xy, r15.xyxx + mad r14.zw, r14.zzzw, cb6[32].zzzw, -r15.xxxy + add r17.xyzw, r14.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r18.xw, r17.xxxz, r17.xxxz + min r17.xz, r14.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + max r19.xy, r14.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r19.zw, r18.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r14.zzzw + add r14.zw, -r14.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r14.zw, -r17.xxxz, r17.xxxz, r14.zzzw + mad r17.xy, -r19.xyxx, r19.xyxx, r17.ywyy + mov r20.x, r19.z + mov r20.y, r14.z + mov r20.z, r17.x + mov r20.w, r18.x + mul r20.xyzw, r20.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r18.x, r19.w + mov r18.y, r14.w + mov r18.z, r17.y + mul r17.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r18.xyzw, r20.ywyw, r20.xzxz + add r19.xyzw, r17.yyww, r17.xxzz + div r14.zw, r20.yyyw, r18.zzzw + add r14.zw, r14.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r20.xy, r14.zwzz, cb6[32].xxxx + div r14.zw, r17.yyyw, r19.yyyw + add r14.zw, r14.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r20.zw, r14.zzzw, cb6[32].yyyy + mul r17.xyzw, r18.xyzw, r19.xyzw + mad r18.xyzw, r15.xyxy, cb6[32].xyxy, r20.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.w, r18.xyxx, t5.xxxx, s3, r15.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.w, r18.zwzz, t5.xxxx, s3, r15.z + mul r2.w, r2.w, r17.y + mad r0.w, r17.x, r0.w, r2.w + mad r18.xyzw, r15.xyxy, cb6[32].xyxy, r20.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.w, r18.xyxx, t5.xxxx, s3, r15.z + mad r0.w, r17.z, r2.w, r0.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.w, r18.zwzz, t5.xxxx, s3, r15.z + mad r0.w, r17.w, r2.w, r0.w + movc r16.x, r16.z, l(1.000000), r0.w + else + mov r16.xz, l(1.000000,0,0,0) + endif + else + mov r16.xz, l(1.000000,0,0,0) + endif + lt r0.w, r2.z, l(1.000000) + if_nz r0.w + dp3 r0.w, r5.xyzx, cb5[0].xyzx + max r0.w, r0.w, l(0.000000) + min r0.w, r0.w, l(0.900000) + add r0.w, -r0.w, l(1.000000) + mul r14.zw, r0.wwww, cb6[584].xxxy + mad r15.xyz, -cb5[0].xyzx, r14.zzzz, r0.xyzx + mad r15.xyz, r5.xyzx, r14.wwww, r15.xyzx + mul r14.zw, r15.yyyy, cb6[581].xxxy + mad r14.zw, cb6[580].xxxy, r15.xxxx, r14.zzzw + mad r14.zw, cb6[582].xxxy, r15.zzzz, r14.zzzw + add r14.zw, r14.zzzw, cb6[583].xxxy + lt r17.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r14.zwzz + and r0.w, r17.y, r17.x + lt r17.xy, r14.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000) + and r2.w, r17.y, r17.x + and r0.w, r0.w, r2.w + if_nz r0.w + mul r0.w, r14.w, cb6[585].z + round_ni r0.w, r0.w + add r0.w, r14.z, r0.w + mul r0.w, r0.w, cb6[585].y + ftou r0.w, r0.w + umin r0.w, r0.w, l(127) + and r2.w, l(0x0000ffff), cb6[r0.w + 587].x + f16tof32 r17.x, r2.w + ge r2.w, r17.x, l(0.000000) + if_nz r2.w + mov r18.x, cb6[576].x + mov r18.y, cb6[577].x + mov r18.z, cb6[578].x + mov r18.w, cb6[r0.w + 587].y + mov r15.w, l(1.000000) + dp4 r18.x, r18.xyzw, r15.xyzw + mov r19.x, cb6[576].y + mov r19.y, cb6[577].y + mov r19.z, cb6[578].y + mov r19.w, cb6[r0.w + 587].z + dp4 r18.y, r19.xyzw, r15.xyzw + mov r19.x, cb6[576].z + mov r19.y, cb6[577].z + mov r19.z, cb6[578].z + mov r19.w, cb6[r0.w + 587].w + dp4 r2.w, r19.xyzw, r15.xyzw + lt r14.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xxxy + lt r3.w, l(0.000000), r2.w + and r4.w, r14.w, r14.z + and r3.w, r3.w, r4.w + lt r14.zw, r18.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + lt r4.w, r2.w, l(1.000000) + and r5.w, r14.w, r14.z + and r4.w, r4.w, r5.w + and r3.w, r3.w, r4.w + if_nz r3.w + ushr r0.w, cb6[r0.w + 587].x, l(16) + f16tof32 r17.y, r0.w + mad r14.zw, r18.xxxy, cb6[584].zzzw, r17.xxxy + mad r15.xy, r14.zwzz, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r15.xy, r15.xyxx + mad r14.zw, r14.zzzw, cb6[586].zzzw, -r15.xxxy + add r17.xyzw, r14.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r18.xw, r17.xxxz, r17.xxxz + min r15.zw, r14.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + max r17.xz, r14.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r19.xy, r18.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r14.zwzz + add r14.zw, -r14.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r14.zw, -r15.zzzw, r15.zzzw, r14.zzzw + mad r15.zw, -r17.xxxz, r17.xxxz, r17.yyyw + mov r17.x, r19.x + mov r17.y, r14.z + mov r17.z, r15.z + mov r17.w, r18.x + mul r17.xyzw, r17.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r18.x, r19.y + mov r18.y, r14.w + mov r18.z, r15.w + mul r18.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r19.xyzw, r17.ywyw, r17.xzxz + add r20.xyzw, r18.yyww, r18.xxzz + div r14.zw, r17.yyyw, r19.zzzw + add r14.zw, r14.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r17.xy, r14.zwzz, cb6[586].xxxx + div r14.zw, r18.yyyw, r20.yyyw + add r14.zw, r14.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r17.zw, r14.zzzw, cb6[586].yyyy + mul r18.xyzw, r19.xyzw, r20.xyzw + mad r19.xyzw, r15.xyxy, cb6[586].xyxy, r17.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.w, r19.xyxx, t8.xxxx, s3, r2.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r19.zwzz, t8.xxxx, s3, r2.w + mul r3.w, r3.w, r18.y + mad r0.w, r18.x, r0.w, r3.w + mad r15.xyzw, r15.xyxy, cb6[586].xyxy, r17.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r15.xyxx, t8.xxxx, s3, r2.w + mad r0.w, r18.z, r3.w, r0.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.w, r15.zwzz, t8.xxxx, s3, r2.w + mad r16.y, r18.w, r2.w, r0.w + else + mov r16.y, l(1.000000) + endif + else + mov r16.y, l(1.000000) + endif + else + mov r16.y, l(1.000000) + endif + movc r16.x, r16.z, r16.y, r16.x + else + mov r16.y, l(1.000000) + endif + add r0.w, -r16.y, r16.x + mad r0.w, r2.z, r0.w, r16.y + lt r2.z, l(0.001000), r0.w + if_nz r2.z + add r15.xyz, r0.xyzx, -cb0[173].xyzx + mad r2.zw, cb0[176].xxxz, r15.yyyy, r15.xxxz + mul r14.zw, r2.zzzw, cb0[174].zzzz + mul r15.yw, cb0[175].xxxy, cb0[183].wwww + mad r2.zw, r2.zzzw, cb0[174].zzzz, r15.yyyw + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r2.zwzz, t7.yzxw, s1, l(0.000000) + mad r14.zw, r14.zzzw, cb0[175].wwww, r15.yyyw + sample_l_indexable(texture2d)(float,float,float,float) r2.w, r14.zwzz, t7.yzwx, s1, l(0.000000) + dp2 r3.w, r15.xzxx, r15.xzxx + sqrt r3.w, r3.w + add r4.w, -cb0[174].x, cb0[174].y + add r3.w, r3.w, -cb0[174].x + div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul_sat r3.w, r3.w, r4.w + mad r4.w, r3.w, l(-2.000000), l(3.000000) + mul r3.w, r3.w, r3.w + mul r3.w, r3.w, r4.w + add r2.w, -r2.z, r2.w + mad r2.z, r3.w, r2.w, r2.z + add r2.z, r2.z, l(-1.000000) + mad r2.z, cb0[175].z, r2.z, l(1.000000) + mul r0.w, r0.w, r2.z + endif + add r2.z, -r0.w, cb6[35].z + mad r0.w, cb6[35].w, r2.z, r0.w +else + mov r0.w, cb6[35].z +endif +min r0.w, r0.w, l(1.000000) +add r0.w, r0.w, l(-1.000000) +mad r15.x, cb6[34].x, r0.w, l(1.000000) +lt r0.w, l(0.001000), r15.x +if_nz r0.w + dp3 r0.w, -cb5[0].xyzx, r12.xyzx + mad r16.xyz, cb5[0].xyzx, r0.wwww, r12.xyzx + lt r0.w, r0.w, cb5[4].z + dp3 r2.z, r16.xyzx, r16.xyzx + max r2.z, r2.z, l(0.0000610351562) + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + mul r16.xyz, r16.xyzx, cb5[4].yyyy + mad r16.xyz, -cb5[0].xyzx, cb5[4].zzzz, r16.xyzx + dp3 r2.z, r16.xyzx, r16.xyzx + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + movc r16.xyz, r0.wwww, r16.xyzx, r12.xyzx + mad r17.xyz, r1.yzwy, r2.yyyy, r16.xyzx + dp3 r0.w, r17.xyzx, r17.xyzx + max r0.w, r0.w, l(0.0000610351562) + rsq r0.w, r0.w + mul r17.xyz, r0.wwww, r17.xyzx + dp3_sat r9.y, r16.xyzx, r5.xyzx + dp3_sat r0.w, r5.xyzx, r17.xyzx + min r9.z, r1.x, l(1.000000) + mul r2.z, r9.w, r9.w + mul r2.z, r2.z, r2.z + mad r2.w, r0.w, r2.z, -r0.w + mad r0.w, r2.w, r0.w, l(1.000000) + dp3_sat r2.w, r4.xyzx, r17.xyzx + add r2.w, -r2.w, l(1.000000) + mul r3.w, r2.w, r2.w + mul r3.w, r3.w, r3.w + mul r4.w, r2.w, r3.w + add r5.w, -r9.w, l(1.000000) + mad r6.w, -r5.w, l(0.383026), l(-0.0761947036) + mad r6.w, r5.w, r6.w, l(1.049970) + mad r5.w, r5.w, r6.w, l(0.409255) + min r5.w, r5.w, l(0.999000) + add r6.w, -r5.w, l(1.000000) + add r16.xyz, -r6.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r6.xyzx + mad r2.w, -r3.w, r2.w, l(1.000000) + mad r17.xyz, r6.xyzx, r2.wwww, r4.wwww + mul r0.w, r0.w, r0.w + div r0.w, r2.z, r0.w + mad r14.zw, -r9.zzzy, r2.zzzz, r9.zzzy + mad r2.zw, r14.zzzw, r9.zzzy, r2.zzzz + sqrt r2.zw, r2.zzzw + mul r2.zw, r2.zzzw, r9.yyyz + add r2.z, r2.w, r2.z + add r2.z, r2.z, l(0.000100) + div r2.z, l(0.500000), r2.z + mul r0.w, r0.w, r2.z + mul r17.xyz, r0.wwww, r17.xyzx + min r17.xyz, r17.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r18.xyzw, r9.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.w, r18.xyxx, t10.yzwx, s0, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r18.zwzz, t10.yzxw, s0, l(0.000000) + mul r0.w, r0.w, r2.z + mul r0.w, r5.w, r0.w + div r0.w, r0.w, r6.w + mul r18.xyz, r16.xyzx, r16.xyzx + mul r18.xyz, r0.wwww, r18.xyzx + mad r16.xyz, -r16.xyzx, r6.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r16.xyz, r18.xyzx, r16.xyzx + add r16.xyz, r16.xyzx, r17.xyzx + mul r16.xyz, r16.xyzx, cb5[4].xxxx + // === Glass Fix: Reduce sun specular intensity === + lt r30.x, l(0.500000), cb13[14].x + if_nz r30.x + mul r16.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + endif + max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r16.xyz, r16.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r17.xyz, r7.xywx, r9.yyyy + mad r16.xyz, r16.xyzx, r9.yyyy, r17.xyzx + mul r16.xyz, r16.xyzx, cb5[1].xyzx + mov r15.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r15.yzw, r15.xyxx, t9.wxyz, s0, cb0[108].x + add r0.w, -r15.x, l(1.000000) + mad r15.xyz, r16.xyzx, r15.yzwy, -r16.xyzx + mad r15.xyz, r0.wwww, r15.xyzx, r16.xyzx +else + mov r15.xyz, l(0,0,0,0) +endif +mul r2.zw, r14.xxxy, l(0.000000, 0.000000, 0.031250, 0.031250) +round_ni r2.zw, r2.zzzw +mad r0.w, r2.w, cb4[1].y, r2.z +mul r0.w, r0.w, l(8.000000) +ftoi r0.w, r0.w +mad r2.z, -cb0[85].y, cb4[2].w, r11.z +round_ni r2.z, r2.z +add r2.w, l(-1.000000), cb4[1].w +max r3.w, r2.z, l(0.000000) +min r2.w, r2.w, r3.w +mul r3.w, r2.w, l(8.000000) +ftoi r3.w, r3.w +ge r2.z, r2.w, r2.z +iadd r2.w, r3.w, cb0[110].y +mul r3.w, r9.w, r9.w +min r9.x, r1.x, l(1.000000) +add r1.x, -r9.w, l(1.000000) +mad r4.w, -r1.x, l(0.383026), l(-0.0761947036) +mad r4.w, r1.x, r4.w, l(1.049970) +mad r1.x, r1.x, r4.w, l(0.409255) +min r1.x, r1.x, l(0.999000) +add r4.w, -r1.x, l(1.000000) +add r16.xyz, -r6.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r6.xyzx +mad r9.yz, r9.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r5.w, r9.yzyy, t10.yzwx, s0, l(0.000000) +mad r17.xyz, -r16.xyzx, r4.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r16.xyz, r16.xyzx, r16.xyzx +mov r18.w, l(1.000000) +mov r19.y, l(1.000000) +mov r20.z, r9.w +mov r21.xyz, l(0,0,0,0) +mov r6.w, l(1.000000) +mov r7.z, l(0) +loop + ilt r9.y, l(7), r7.z + breakc_nz r9.y + iadd r9.y, r0.w, r7.z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.y, r9.y, l(0), t0.xxxx + iadd r9.z, r2.w, r7.z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.z, r9.z, l(0), t0.xxxx + and r9.y, r9.z, r9.y + and r9.y, r2.z, r9.y + ishl r9.z, r7.z, l(5) + mov r22.xyz, l(0,0,0,0) + mov r10.w, r6.w + mov r12.w, r9.y + loop + breakc_z r12.w + firstbit_lo r13.w, r12.w + ishl r14.z, l(1), r13.w + xor r14.z, r12.w, r14.z + iadd r13.w, r9.z, r13.w + bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r13.wwww, l(1, 3, 5, 6) + bfi r14.w, l(29), l(3), r13.w, l(7) + ftou r15.w, cb5[r23.z + 6].w + ieq r15.w, r15.w, l(1) + if_nz r15.w + add r18.xyz, r0.xyzx, -cb5[r23.x + 6].xyzx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r23.z + 6].xzyx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r23.w + 6].yxzy + ushr r26.xyz, cb5[r23.z + 6].xzyx, l(16, 16, 16, 0) + ushr r27.xyz, cb5[r23.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyw, r27.yxyz + mov r28.xz, r24.xxzx + mov r28.yw, r26.xxxz + dp4 r15.w, r18.xyzw, r28.xyzw + mov r26.x, r24.y + mov r26.z, r25.y + mov r26.w, r27.x + dp4 r16.w, r18.xyzw, r26.xyzw + mov r27.xz, r25.xxzx + dp4 r17.w, r18.xyzw, r27.xyzw + max r15.w, |r15.w|, |r16.w| + max r15.w, |r17.w|, r15.w + mad r16.w, cb5[r14.w + 6].x, l(0.500000), l(0.500000) + add r15.w, r15.w, -r16.w + mad r16.w, -cb5[r14.w + 6].x, l(0.500000), l(0.500000) + div_sat r15.w, r15.w, r16.w + add r15.w, -r15.w, l(1.000000) + mul r15.w, r15.w, r15.w + else + mov r15.w, l(1.000000) + endif + lt r16.w, l(0.500000), cb5[r23.y + 6].z + lt r17.w, r15.w, l(0.001000) + or r17.w, r16.w, r17.w + if_nz r17.w + mov r12.w, r14.z + continue + endif + ishl r17.w, r13.w, l(3) + bfi r13.w, l(29), l(3), r13.w, l(2) + lt r18.x, cb5[r17.w + 6].w, l(1.500000) + if_nz r18.x + mad r18.x, cb5[r13.w + 6].y, l(0.500000), l(0.500000) + add r18.x, r18.x, -|cb5[r13.w + 6].x| + add r18.y, -r18.x, cb5[r13.w + 6].y + add r19.z, -|r18.x|, l(1.000000) + add r19.z, -|r18.y|, r19.z + max r19.z, r19.z, l(0.000488281250) + ge r19.w, cb5[r13.w + 6].x, l(0.000000) + movc r18.z, r19.w, r19.z, -r19.z + dp3 r19.z, r18.xyzx, r18.xyzx + rsq r19.z, r19.z + mul r18.xyz, r18.xyzx, r19.zzzz + add r24.xyz, -r0.xyzx, cb5[r23.x + 6].xyzx + dp3 r19.z, r24.xyzx, r24.xyzx + rsq r19.w, r19.z + mul r25.xyz, r19.wwww, r24.xyzx + ftoi r20.w, cb5[r14.w + 6].w + mul r26.xyz, r18.xyzx, cb5[r13.w + 6].zzzz + mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx + mad r28.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx + ftou r21.w, cb5[r17.w + 6].w + and r21.w, r21.w, l(1) + ieq r22.w, r21.w, l(0) + not r22.w, r22.w + lt r23.z, l(0.000000), cb5[r13.w + 6].z + and r22.w, r22.w, r23.z + dp3 r23.z, r27.xyzx, r27.xyzx + sqrt r23.z, r23.z + dp3 r24.w, r28.xyzx, r28.xyzx + sqrt r24.w, r24.w + dp3 r25.w, r5.xyzx, r27.xyzx + div r25.w, r25.w, r23.z + dp3 r26.w, r5.xyzx, r28.xyzx + div r26.w, r26.w, r24.w + add r25.w, r25.w, r26.w + mul_sat r29.x, r25.w, l(0.500000) + dp3 r25.w, r27.xyzx, r28.xyzx + mad r23.z, r23.z, r24.w, r25.w + mad r23.z, r23.z, l(0.500000), l(1.000000) + div r29.y, l(1.000000, 1.000000, 1.000000, 1.000000), r23.z + dp3_sat r19.x, r5.xyzx, r25.xyzx + movc r20.xy, r22.wwww, r29.xyxx, r19.xyxx + lt r19.x, cb5[r23.w + 6].w, l(0.000000) + if_nz r19.x + mul r19.x, cb5[r23.x + 6].w, cb5[r23.x + 6].w + mul r19.x, r19.x, r19.z + mad r19.x, -r19.x, r19.x, l(1.000000) + max r19.x, r19.x, l(0.000000) + add r19.z, r19.z, l(1.000000) + div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z + and r23.z, r22.w, l(0x3f800000) + add r24.w, -r19.z, r20.y + mad r19.z, r23.z, r24.w, r19.z + mul r19.x, r19.x, r19.x + mul r19.x, r19.x, r19.z + else + mul r28.xyz, r24.xyzx, cb5[r23.x + 6].wwww + dp3 r19.z, r28.xyzx, r28.xyzx + min r19.z, r19.z, l(1.000000) + add r19.z, -r19.z, l(1.000000) + log r19.z, r19.z + mul r19.z, r19.z, cb5[r23.w + 6].w + exp r19.z, r19.z + mul r19.x, r19.z, r20.y + endif + dp3 r18.x, r25.xyzx, -r18.xyzx + add r18.x, r18.x, -cb5[r13.w + 6].z + mul_sat r18.x, r18.x, cb5[r13.w + 6].w + mul r18.x, r18.x, r18.x + movc r18.x, r21.w, l(1.000000), r18.x + mul r18.x, r18.x, r19.x + not r18.y, r22.w + ige r18.z, r20.w, l(0) + and r18.y, r18.z, r18.y + if_nz r18.y + if_z r21.w + ishl r18.y, r20.w, l(2) + mul r28.xyz, r0.yyyy, cb7[r18.y + 33].xywx + mad r28.xyz, cb7[r18.y + 32].xywx, r0.xxxx, r28.xyzx + mad r28.xyz, cb7[r18.y + 34].xywx, r0.zzzz, r28.xyzx + add r28.xyz, r28.xyzx, cb7[r18.y + 35].xywx + div_sat r18.yz, r28.xxyx, r28.zzzz + mad r18.yz, r18.yyzy, cb7[r20.w + 0].zzwz, cb7[r20.w + 0].xxyx + else + ishl r19.x, r20.w, l(2) + dp3 r28.x, -r24.xyzx, cb7[r19.x + 32].xyzx + dp3 r28.y, -r24.xyzx, cb7[r19.x + 33].xyzx + dp3 r28.z, -r24.xyzx, cb7[r19.x + 34].xyzx + lt r19.x, |r28.x|, |r28.y| + and r19.x, r19.x, l(1) + dp2 r19.z, |r28.xyxx|, icb[r19.x + 0].xyxx + lt r19.z, r19.z, |r28.z| + movc r19.x, r19.z, l(2), r19.x + dp3 r19.z, r28.xyzx, icb[r19.x + 0].xyzx + lt r19.z, r19.z, l(0.000000) + bfi r19.x, l(31), l(1), r19.x, r19.z + ushr r19.z, r19.x, l(1) + dp3 r19.z, r28.xyzx, icb[r19.z + 0].xyzx + div r20.y, l(0.000244140625), cb7[r20.w + 0].w + add r20.y, -r20.y, l(0.500000) + utof r23.z, r19.x + ult r24.x, r19.x, l(2) + and r24.x, r24.x, l(2) + dp2 r24.x, r28.xzxx, icb[r24.x + 0].xzxx + mul r24.x, r24.x, icb[r19.x + 4].z + div r24.x, r24.x, |r19.z| + mad r23.z, r24.x, r20.y, r23.z + add r23.z, r23.z, l(0.500000) + mul_sat r24.x, r23.z, l(0.166666672) + iadd r23.z, l(-1), icb[r19.x + 4].y + dp2 r23.z, r28.yzyy, icb[r23.z + 0].xyxx + mul r19.x, r23.z, icb[r19.x + 4].w + div r19.x, r19.x, |r19.z| + mad_sat r24.y, -r19.x, r20.y, l(0.500000) + mad r18.yz, r24.xxyx, cb7[r20.w + 0].zzwz, cb7[r20.w + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r18.y, r18.yzyy, t18.yxzw, s0, l(0.000000) + mul r18.x, r18.y, r18.x + endif + lt r18.y, l(0.000000), r18.x + if_nz r18.y + if_z r21.w + ftoi r18.z, cb5[r23.y + 6].x + else + add r24.xyz, r0.xyzx, -cb5[r23.x + 6].xyzx + lt r28.xyz, |r24.yzzy|, |r24.xxyx| + and r19.x, r28.y, r28.x + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ushr r19.z, cb5[r13.w + 6].w, l(24) + ubfe r20.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb5[r13.w + 6].wwww + movc r19.z, r24.x, r19.z, r20.y + and r20.y, l(255), cb5[r13.w + 6].w + movc r20.y, r24.y, r20.w, r20.y + ubfe r20.w, l(8), l(8), cb5[r23.y + 6].x + and r21.w, l(255), cb5[r23.y + 6].x + movc r20.w, r24.z, r20.w, r21.w + movc r20.y, r28.z, r20.y, r20.w + movc r19.x, r19.x, r19.z, r20.y + ilt r19.z, r19.x, l(80) + movc r18.z, r19.z, r19.x, l(-1) + endif + mad r24.xyz, r25.xyzx, cb6[r18.z + 288].xxxx, r0.xyzx + mul r19.x, l(5.000000), cb6[r18.z + 288].y + mad r24.xyz, r5.xyzx, r19.xxxx, r24.xyzx + ishl r19.x, r18.z, l(2) + mul r28.xyzw, r24.yyyy, cb6[r19.x + 65].xyzw + mad r28.xyzw, cb6[r19.x + 64].xyzw, r24.xxxx, r28.xyzw + mad r24.xyzw, cb6[r19.x + 66].xyzw, r24.zzzz, r28.xyzw + add r24.xyzw, r24.xyzw, cb6[r19.x + 67].xyzw + div r24.xyz, r24.xyzx, r24.wwww + ge r28.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ge r29.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r19.xz, -cb6[r18.z + 344].xxyx, cb6[r18.z + 344].zzwz + mad r19.xz, r24.xxyx, r19.xxzx, cb6[r18.z + 344].xxyx + mad r20.yw, r19.xxxz, cb6[400].zzzw, l(0.000000, 0.500000, 0.000000, 0.500000) + round_ni r20.yw, r20.yyyw + mad r19.xz, r19.xxzx, cb6[400].zzwz, -r20.yywy + add r30.xyzw, r19.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r31.xyzw, r30.xxzz, r30.xxzz + add r24.xy, -r19.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) + min r30.xz, r19.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r32.xy, r19.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r33.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r32.xy, -r32.xyxx, r32.xyxx, r30.ywyy + add r32.xy, r32.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r32.xy, r32.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r31.xz, r31.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r19.xz, r31.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r19.xxzx + mul r34.xy, r19.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r19.xz, -r30.xxzx, r30.xxzx, r24.xxyx + add r19.xz, r19.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r35.xy, r19.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r19.xz, r30.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) + mov r34.z, r35.x + mov r34.w, r19.x + mov r33.z, r32.x + mov r33.w, r31.x + add r30.xyzw, r33.zwxz, r34.zwxz + mov r35.z, r34.y + mov r35.w, r19.z + mov r32.z, r33.y + mov r32.w, r31.z + add r24.xyw, r32.zyzw, r35.zyzw + div r31.xyz, r33.xzwx, r30.zwyz + add r31.xyz, r31.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r31.xyz, r31.xyzx, cb6[400].xxxx + div r32.xyz, r32.zywz, r24.xywx + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyw, r32.xyxz, cb6[400].yyyy + mul r33.xyzw, r24.xxxy, r30.zwyz + mov r31.w, r32.x + mad r34.xyzw, r20.ywyw, cb6[400].xyxy, r31.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r34.xyxx, t6.xxxx, s3, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r34.zwzz, t6.xxxx, s3, r24.z + mul r19.z, r19.z, r33.y + mad r19.x, r33.x, r19.x, r19.z + mad r33.xy, r20.ywyy, cb6[400].xyxx, r31.zwzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r33.xyxx, t6.xxxx, s3, r24.z + mad r19.x, r33.z, r19.z, r19.x + mov r32.z, r31.x + mad r34.xyzw, r20.ywyw, cb6[400].xyxy, r32.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r34.xyxx, t6.xxxx, s3, r24.z + mad r19.x, r33.w, r19.z, r19.x + mul r33.xyzw, r24.yyww, r30.xyzw + mov r32.xz, r31.yyzy + mad r31.xyzw, r20.ywyw, cb6[400].xyxy, r32.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r31.xyxx, t6.xxxx, s3, r24.z + mad r19.x, r33.x, r19.z, r19.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r31.zwzz, t6.xxxx, s3, r24.z + mad r19.x, r33.y, r19.z, r19.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r34.zwzz, t6.xxxx, s3, r24.z + mad r19.x, r33.z, r19.z, r19.x + ige r19.z, r18.z, l(0) + or r28.xyz, r28.xyzx, r29.xyzx + or r21.w, r28.y, r28.x + or r21.w, r28.z, r21.w + and r23.z, r24.z, l(0x7fffffff) + ult r23.z, l(0x7f800000), r23.z + or r21.w, r21.w, r23.z + mad r28.xyzw, r20.ywyw, cb6[400].xyxy, r32.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.y, r28.xyxx, t6.xxxx, s3, r24.z + mad r19.x, r33.w, r20.y, r19.x + mul r20.y, r24.w, r30.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r28.zwzz, t6.xxxx, s3, r24.z + mad r19.x, r20.y, r20.w, r19.x + add r19.x, r19.x, l(-1.000000) + mad r18.z, cb6[r18.z + 288].w, r19.x, l(1.000000) + movc r18.z, r21.w, l(1.000000), r18.z + movc r18.z, r19.z, r18.z, l(1.000000) + else + mov r18.z, l(1.000000) + endif + if_nz r22.w + dp3 r19.x, r12.xyzx, r26.xyzx + mul_sat r19.z, r19.w, cb5[r13.w + 6].z + mad r19.z, r19.z, l(0.500000), r3.w + min r19.z, r19.z, l(1.000000) + div r19.z, r3.w, r19.z + mad r24.xyz, r12.xyzx, r19.xxxx, -r26.xyzx + dp3 r20.y, r27.xyzx, r24.xyzx + mul r19.x, r19.x, r19.x + mad r19.x, cb5[r13.w + 6].z, cb5[r13.w + 6].z, -r19.x + div_sat r19.x, r20.y, r19.x + mad r24.xyz, r26.xyzx, r19.xxxx, r27.xyzx + dp3 r19.x, r24.xyzx, r24.xyzx + rsq r19.x, r19.x + mul r25.xyz, r19.xxxx, r24.xyzx + else + mov r19.z, l(1.000000) + endif + if_nz r18.y + mul_sat r18.y, r19.w, cb5[r14.w + 6].y + mad r24.xyz, r1.yzwy, r2.yyyy, r25.xyzx + dp3 r19.x, r24.xyzx, r24.xyzx + max r19.x, r19.x, l(0.0000610351562) + rsq r19.x, r19.x + mul r24.xyz, r19.xxxx, r24.xyzx + dp3_sat r19.x, r5.xyzx, r24.xyzx + dp3_sat r19.w, r4.xyzx, r24.xyzx + lt r20.y, l(0.000000), r18.y + mul r18.y, r18.y, r18.y + mad r20.w, r19.w, l(3.600000), l(0.400000) + div r18.y, r18.y, r20.w + mad r18.y, r9.w, r9.w, r18.y + min r18.y, r18.y, l(1.000000) + movc r18.y, r20.y, r18.y, r3.w + mul r18.y, r18.y, r18.y + mad r20.y, r19.x, r18.y, -r19.x + mad r19.x, r20.y, r19.x, l(1.000000) + add r19.w, -r19.w, l(1.000000) + mul r20.y, r19.w, r19.w + mul r20.y, r20.y, r20.y + mul r20.w, r19.w, r20.y + mad r19.w, -r20.y, r19.w, l(1.000000) + mad r24.xyz, r6.xyzx, r19.wwww, r20.wwww + mul r19.x, r19.x, r19.x + div r19.x, r18.y, r19.x + mul r19.x, r19.z, r19.x + mad r19.z, -r9.x, r18.y, r9.x + mad r19.z, r19.z, r9.x, r18.y + sqrt r19.z, r19.z + mad r19.w, -r20.x, r18.y, r20.x + mad r18.y, r19.w, r20.x, r18.y + sqrt r18.y, r18.y + mul r18.y, r9.x, r18.y + mad r18.y, r20.x, r19.z, r18.y + add r18.y, r18.y, l(0.000100) + div r18.y, l(0.500000), r18.y + mul r18.y, r18.y, r19.x + mul r19.xzw, r18.yyyy, r24.xxyz + min r19.xzw, r19.xxzw, l(2048.000000, 0.000000, 2048.000000, 2048.000000) + mad r20.yw, r20.xxxz, l(0.000000, 0.968750, 0.000000, 0.968750), l(0.000000, 0.015625, 0.000000, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r18.y, r20.ywyy, t10.yxzw, s0, l(0.000000) + mul r18.y, r5.w, r18.y + mul r18.y, r1.x, r18.y + div r18.y, r18.y, r4.w + mul r24.xyz, r16.xyzx, r18.yyyy + div r24.xyz, r24.xyzx, r17.xyzx + add r19.xzw, r19.xxzw, r24.xxyz + mul r19.xzw, r19.xxzw, cb5[r14.w + 6].zzzz + max r19.xzw, r19.xxzw, l(0.000000, 0.000000, 0.000000, 0.000000) + min r19.xzw, r19.xxzw, l(1000.000000, 0.000000, 1000.000000, 1000.000000) + mul r24.xyz, r7.xywx, r20.xxxx + mad r19.xzw, r19.xxzw, r20.xxxx, r24.xxyz + mul r20.xyw, r18.xxxx, cb5[r17.w + 6].xyxz + mul r18.xyz, r18.zzzz, r20.xywx + mul r18.xyz, r15.wwww, r18.xyzx + mul r18.xyz, r18.xyzx, r19.xzwx + else + mov r18.xyz, l(0,0,0,0) + endif + else + if_z r16.w + mad r15.w, cb5[r13.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r15.w, -|cb5[r13.w + 6].x| + add r24.y, -r24.x, cb5[r13.w + 6].y + add r15.w, -|r24.x|, l(1.000000) + add r15.w, -|r24.y|, r15.w + max r15.w, r15.w, l(0.000488281250) + ge r16.w, cb5[r13.w + 6].x, l(0.000000) + movc r24.z, r16.w, r15.w, -r15.w + dp3 r15.w, r24.xyzx, r24.xyzx + rsq r15.w, r15.w + mul r19.xzw, r15.wwww, r24.xxyz + add r20.xyw, -r0.xyxz, cb5[r23.x + 6].xyxz + dp3 r15.w, r20.xywx, r20.xywx + rsq r16.w, r15.w + mul r24.xyz, r16.wwww, r20.xywx + ftoi r14.w, cb5[r14.w + 6].w + mul r25.xyz, r19.xzwx, cb5[r13.w + 6].zzzz + mad r26.xyz, -r25.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r20.xywx + mad r25.xyz, r25.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r20.xywx + ftou r16.w, cb5[r17.w + 6].w + and r16.w, r16.w, l(1) + ieq r17.w, r16.w, l(0) + not r17.w, r17.w + lt r21.w, l(0.000000), cb5[r13.w + 6].z + and r17.w, r17.w, r21.w + dp3 r21.w, r26.xyzx, r26.xyzx + sqrt r21.w, r21.w + dp3 r22.w, r25.xyzx, r25.xyzx + sqrt r22.w, r22.w + dp3 r23.z, r26.xyzx, r25.xyzx + mad r21.w, r21.w, r22.w, r23.z + mad r21.w, r21.w, l(0.500000), l(1.000000) + div r21.w, l(1.000000, 1.000000, 1.000000, 1.000000), r21.w + movc r21.w, r17.w, r21.w, l(1.000000) + lt r22.w, cb5[r23.w + 6].w, l(0.000000) + if_nz r22.w + mul r22.w, cb5[r23.x + 6].w, cb5[r23.x + 6].w + mul r22.w, r15.w, r22.w + mad r22.w, -r22.w, r22.w, l(1.000000) + max r22.w, r22.w, l(0.000000) + add r15.w, r15.w, l(1.000000) + div r15.w, l(1.000000, 1.000000, 1.000000, 1.000000), r15.w + and r23.z, r17.w, l(0x3f800000) + add r24.w, -r15.w, r21.w + mad r15.w, r23.z, r24.w, r15.w + mul r22.w, r22.w, r22.w + mul r15.w, r15.w, r22.w + else + mul r25.xyz, r20.xywx, cb5[r23.x + 6].wwww + dp3 r22.w, r25.xyzx, r25.xyzx + min r22.w, r22.w, l(1.000000) + add r22.w, -r22.w, l(1.000000) + log r22.w, r22.w + mul r22.w, r22.w, cb5[r23.w + 6].w + exp r22.w, r22.w + mul r15.w, r21.w, r22.w + endif + dp3 r19.x, r24.xyzx, -r19.xzwx + add r19.x, r19.x, -cb5[r13.w + 6].z + mul_sat r19.x, r19.x, cb5[r13.w + 6].w + mul r19.x, r19.x, r19.x + movc r19.x, r16.w, l(1.000000), r19.x + mul r15.w, r15.w, r19.x + not r17.w, r17.w + ige r19.x, r14.w, l(0) + and r17.w, r17.w, r19.x + if_nz r17.w + if_z r16.w + ishl r17.w, r14.w, l(2) + mul r19.xzw, r0.yyyy, cb7[r17.w + 33].xxyw + mad r19.xzw, cb7[r17.w + 32].xxyw, r0.xxxx, r19.xxzw + mad r19.xzw, cb7[r17.w + 34].xxyw, r0.zzzz, r19.xxzw + add r19.xzw, r19.xxzw, cb7[r17.w + 35].xxyw + div_sat r19.xz, r19.xxzx, r19.wwww + mad r19.xz, r19.xxzx, cb7[r14.w + 0].zzwz, cb7[r14.w + 0].xxyx + else + ishl r17.w, r14.w, l(2) + dp3 r25.x, -r20.xywx, cb7[r17.w + 32].xyzx + dp3 r25.y, -r20.xywx, cb7[r17.w + 33].xyzx + dp3 r25.z, -r20.xywx, cb7[r17.w + 34].xyzx + lt r17.w, |r25.x|, |r25.y| + and r17.w, r17.w, l(1) + dp2 r19.w, |r25.xyxx|, icb[r17.w + 0].xyxx + lt r19.w, r19.w, |r25.z| + movc r17.w, r19.w, l(2), r17.w + dp3 r19.w, r25.xyzx, icb[r17.w + 0].xyzx + lt r19.w, r19.w, l(0.000000) + bfi r17.w, l(31), l(1), r17.w, r19.w + ushr r19.w, r17.w, l(1) + dp3 r19.w, r25.xyzx, icb[r19.w + 0].xyzx + div r20.x, l(0.000244140625), cb7[r14.w + 0].w + add r20.x, -r20.x, l(0.500000) + utof r20.y, r17.w + ult r20.w, r17.w, l(2) + and r20.w, r20.w, l(2) + dp2 r20.w, r25.xzxx, icb[r20.w + 0].xzxx + mul r20.w, r20.w, icb[r17.w + 4].z + div r20.w, r20.w, |r19.w| + mad r20.y, r20.w, r20.x, r20.y + add r20.y, r20.y, l(0.500000) + mul_sat r26.x, r20.y, l(0.166666672) + iadd r20.y, l(-1), icb[r17.w + 4].y + dp2 r20.y, r25.yzyy, icb[r20.y + 0].xyxx + mul r17.w, r20.y, icb[r17.w + 4].w + div r17.w, r17.w, |r19.w| + mad_sat r26.y, -r17.w, r20.x, l(0.500000) + mad r19.xz, r26.xxyx, cb7[r14.w + 0].zzwz, cb7[r14.w + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r14.w, r19.xzxx, t18.yzwx, s0, l(0.000000) + mul r15.w, r14.w, r15.w + endif + lt r14.w, l(0.000000), r15.w + if_nz r14.w + if_z r16.w + ftoi r14.w, cb5[r23.y + 6].x + else + add r19.xzw, r0.xxyz, -cb5[r23.x + 6].xxyz + lt r20.xyw, |r19.zwzw|, |r19.xxxz| + and r15.w, r20.y, r20.x + lt r19.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxzw + ushr r16.w, cb5[r13.w + 6].w, l(24) + ubfe r20.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r13.w + 6].wwww + movc r16.w, r19.x, r16.w, r20.x + and r13.w, l(255), cb5[r13.w + 6].w + movc r13.w, r19.z, r20.y, r13.w + ubfe r17.w, l(8), l(8), cb5[r23.y + 6].x + and r19.x, l(255), cb5[r23.y + 6].x + movc r17.w, r19.w, r17.w, r19.x + movc r13.w, r20.w, r13.w, r17.w + movc r13.w, r15.w, r16.w, r13.w + ilt r15.w, r13.w, l(80) + movc r14.w, r15.w, r13.w, l(-1) + endif + mad r19.xzw, r24.xxyz, cb6[r14.w + 288].xxxx, r0.xxyz + mul r13.w, l(5.000000), cb6[r14.w + 288].y + mad r19.xzw, r5.xxyz, r13.wwww, r19.xxzw + ishl r13.w, r14.w, l(2) + mul r23.xyzw, r19.zzzz, cb6[r13.w + 65].xyzw + mad r23.xyzw, cb6[r13.w + 64].xyzw, r19.xxxx, r23.xyzw + mad r23.xyzw, cb6[r13.w + 66].xyzw, r19.wwww, r23.xyzw + add r23.xyzw, r23.xyzw, cb6[r13.w + 67].xyzw + div r19.xzw, r23.xxyz, r23.wwww + ge r20.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xzxw + ge r23.xyz, r19.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r24.xy, -cb6[r14.w + 344].xyxx, cb6[r14.w + 344].zwzz + mad r19.xz, r19.xxzx, r24.xxyx, cb6[r14.w + 344].xxyx + mad r24.xy, r19.xzxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r24.xy, r24.xyxx + mad r19.xz, r19.xxzx, cb6[400].zzwz, -r24.xxyx + add r25.xyzw, r19.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r26.xyzw, r25.xxzz, r25.xxzz + add r24.zw, -r19.xxxz, l(0.000000, 0.000000, 1.000000, 1.000000) + min r25.xz, r19.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r27.xy, r19.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r28.xy, r24.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r27.xy, -r27.xyxx, r27.xyxx, r25.ywyy + add r27.xy, r27.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r27.xy, r27.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r26.xz, r26.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r19.xz, r26.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r19.xxzx + mul r29.xy, r19.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r19.xz, -r25.xxzx, r25.xxzx, r24.zzwz + add r19.xz, r19.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r30.xy, r19.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r19.xz, r25.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) + mov r29.z, r30.x + mov r29.w, r19.x + mov r28.z, r27.x + mov r28.w, r26.x + add r25.xyzw, r28.zwxz, r29.zwxz + mov r30.z, r29.y + mov r30.w, r19.z + mov r27.z, r28.y + mov r27.w, r26.z + add r26.xyz, r27.zywz, r30.zywz + div r28.xyz, r28.xzwx, r25.zwyz + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb6[400].xxxx + div r27.xyz, r27.zywz, r26.xyzx + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyw, r27.xyxz, cb6[400].yyyy + mul r29.xyzw, r25.zwyz, r26.xxxy + mov r28.w, r27.x + mad r30.xyzw, r24.xyxy, cb6[400].xyxy, r28.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r13.w, r30.xyxx, t6.xxxx, s3, r19.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r30.zwzz, t6.xxxx, s3, r19.w + mul r15.w, r15.w, r29.y + mad r13.w, r29.x, r13.w, r15.w + mad r19.xz, r24.xxyx, cb6[400].xxyx, r28.zzwz + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r19.xzxx, t6.xxxx, s3, r19.w + mad r13.w, r29.z, r15.w, r13.w + mov r27.z, r28.x + mad r30.xyzw, r24.xyxy, cb6[400].xyxy, r27.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r30.xyxx, t6.xxxx, s3, r19.w + mad r13.w, r29.w, r15.w, r13.w + mul r29.xyzw, r25.xyzw, r26.yyzz + mov r27.xz, r28.yyzy + mad r28.xyzw, r24.xyxy, cb6[400].xyxy, r27.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r28.xyxx, t6.xxxx, s3, r19.w + mad r13.w, r29.x, r15.w, r13.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r28.zwzz, t6.xxxx, s3, r19.w + mad r13.w, r29.y, r15.w, r13.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r30.zwzz, t6.xxxx, s3, r19.w + mad r13.w, r29.z, r15.w, r13.w + ige r15.w, r14.w, l(0) + or r20.xyw, r20.xyxw, r23.xyxz + or r16.w, r20.y, r20.x + or r16.w, r20.w, r16.w + and r17.w, r19.w, l(0x7fffffff) + ult r17.w, l(0x7f800000), r17.w + or r16.w, r16.w, r17.w + mad r23.xyzw, r24.xyxy, cb6[400].xyxy, r27.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r23.xyxx, t6.xxxx, s3, r19.w + mad r13.w, r29.w, r17.w, r13.w + mul r17.w, r25.y, r26.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r23.zwzz, t6.xxxx, s3, r19.w + mad r13.w, r17.w, r19.x, r13.w + add r13.w, r13.w, l(-1.000000) + mad r13.w, cb6[r14.w + 288].w, r13.w, l(1.000000) + movc r13.w, r16.w, l(1.000000), r13.w + movc r13.w, r15.w, r13.w, l(1.000000) + else + mov r13.w, l(1.000000) + endif + else + mov r13.w, l(1.000000) + endif + mul r10.w, r10.w, r13.w + mov r18.xyz, l(0,0,0,0) + endif + add r22.xyz, r18.xyzx, r22.xyzx + mov r12.w, r14.z + endloop + mov r6.w, r10.w + add r21.xyz, r21.xyzx, r22.xyzx + iadd r7.z, r7.z, l(1) +endloop +// === Glass Fix: Reduce clustered lights and overall brightness === +lt r30.x, l(0.500000), cb13[14].x +if_nz r30.x + mul r21.xyz, r21.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mul r13.xyz, r13.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) +endif +dp3 r0.x, r13.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r1.xyz, -r0.xxxx, r13.xyzx +mad r0.xzw, cb0[184].wwww, r1.xxyz, r0.xxxx +mad r1.xyz, r21.xyzx, r6.wwww, r15.xyzx +mad r0.xzw, r0.xxzw, cb0[184].xxyz, r1.xxyz +mad r1.x, r0.y, cb0[156].w, cb0[157].w +mad r1.y, r2.x, cb0[154].w, -cb0[153].w +max r1.xy, r1.xyxx, l(0.010000, 0.000000, 0.000000, 0.000000) +mul r1.z, r1.x, l(-1.442695) +exp r1.z, r1.z +add r1.z, -r1.z, l(1.000000) +div r1.x, r1.z, r1.x +mad r1.z, r0.y, cb0[156].w, cb0[158].w +mul r1.z, r1.z, l(1.442695) +exp r1.z, r1.z +mul r1.x, r1.z, r1.x +mul r1.x, r1.x, -r1.y +mul r1.xyz, r1.xxxx, cb0[155].xyzx +mul r1.xyz, r1.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r1.xyz, r1.xyzx +dp3 r1.w, -r4.xyzx, cb0[154].xyzx +mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r1.wwww, cb0[155].wwww +add r2.y, -r2.z, r2.y +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r11.w, l(7), cb0[108].w + imad r5.xyz, r11.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r2.z, r5.y, r5.z, r5.x + imad r2.w, r5.z, r2.z, r5.y + imad r3.w, r2.z, r2.w, r5.z + imad r5.x, r2.w, r3.w, r2.z + dp3 r2.z, -r4.xyzx, -r3.xyzx + add r3.x, r0.y, -cb0[44].y + lt r3.y, l(5.960464478E-08), r2.z + div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z + and r2.z, r2.z, r3.y + mul r2.z, r2.z, cb0[163].w + div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r2.x + mul r3.z, r2.z, r3.y + mad r4.x, r3.z, r3.x, cb0[44].y + mad r3.x, -r3.z, r3.x, r3.x + mul r3.z, r3.x, cb0[159].z + mul r3.x, r3.x, cb0[162].x + max r3.xz, r3.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + add r4.y, r4.x, -cb0[159].x + mul r4.y, r4.y, cb0[159].z + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[159].y + lt r4.z, l(5.960464478E-08), |r3.z| + exp r4.w, -r3.z + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.z + mad r3.z, -r3.z, l(0.240226507), l(0.693147182) + movc r3.z, r4.z, r4.w, r3.z + add r4.x, r4.x, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.z, l(5.960464478E-08), |r3.x| + exp r4.w, -r3.x + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.x + mad r3.x, -r3.x, l(0.240226507), l(0.693147182) + movc r3.x, r4.z, r4.w, r3.x + mul r3.x, r3.x, r4.x + mad r3.x, r4.y, r3.z, r3.x + mad r2.z, -r2.z, r3.y, l(1.000000) + mul r2.z, r2.x, r2.z + mul r2.z, r2.z, r3.x + exp r2.z, -r2.z + min r2.z, r2.z, l(1.000000) + max r2.z, r2.z, cb0[161].w + mad_sat r3.xy, r2.xxxx, cb0[160].ywyy, cb0[160].xzxx + add r2.z, r2.z, r3.x + add r2.z, r3.y, r2.z + min r2.z, r2.z, l(1.000000) + imad r5.y, r3.w, r5.x, r2.w + ushr r3.xy, r5.xyxx, l(16, 16, 0, 0) + utof r3.xy, r3.xyxx + mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb0[167].wwww, r14.xyxx + mul r3.xy, r3.xyxx, cb0[165].xyxx + mad r2.w, r11.z, cb0[164].x, cb0[164].y + log r2.w, r2.w + mul r2.w, r2.w, cb0[164].z + div r3.z, r2.w, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t17.xyzw, s0, l(0.000000) + add r2.w, r11.z, -cb0[166].z + mul_sat r2.w, r2.w, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r2.wwww, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r2.w, -r2.z, l(1.000000) + mul r4.xyz, r2.wwww, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r2.z, r2.z, r3.w +else + add r0.y, r0.y, -cb0[44].y + mul r2.w, r0.y, cb0[159].z + max r2.w, r2.w, l(-127.000000) + mul r0.y, r0.y, cb0[162].x + max r0.y, r0.y, l(-127.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r2.w| + exp r4.y, -r2.w + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r4.x, r4.y, r2.w + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r0.y| + exp r4.z, -r0.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.y, r4.z, r0.y + mul r0.y, r0.y, r4.x + mad r0.y, r3.w, r2.w, r0.y + mul r0.y, r2.x, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r2.xw, r2.xxxx, cb0[160].yyyw, cb0[160].xxxz + add r0.y, r0.y, r2.x + add r0.y, r2.w, r0.y + min r2.z, r0.y, l(1.000000) + add r0.y, -r2.z, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r1.xyzx, r2.zzzz +mad r0.y, r1.w, r1.w, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r5.xyz, cb0[156].xyzx, r0.yyyy, cb0[158].xyzx +mad r0.y, -cb0[155].w, cb0[155].w, l(1.000000) +mul r1.w, r2.y, l(12.566371) +sqrt r2.x, r2.y +mul r1.w, r1.w, r2.x +max r1.w, r1.w, l(0.001000) +div r0.y, r0.y, r1.w +mad_sat r2.xyw, cb0[157].xyxz, r0.yyyy, r5.xyxz +mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) +add r1.xyz, -r1.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r1.xyz, r1.xyzx, r2.xywx +mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx +// === Glass Transparency Fix === +lt r30.x, l(0.500000), cb13[14].x +if_nz r30.x + // Boost transmittance: lerp(r4, 1, 0.5) + add r30.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r30.xyz, r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r4.xyzx + // Reduce inscatter intensity + mul r31.xyz, r1.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000) + // Modified fog blend + mad r8.xyz, r0.xzwx, r30.xyzx, r31.xyzx +else + // Original fog blend + mad r8.xyz, r0.xzwx, r4.xyzx, r1.xyzx +endif +mul r0.xy, r10.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r0.xy, |r0.xyxx| +sqrt r0.xy, r0.xyxx +mov r10.z, -r10.y +lt r0.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r10.xxxz +lt r1.xy, r10.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r0.zw, -r0.zzzw, r1.xxxy +itof r0.zw, r0.zzzw +mul r0.xy, r0.zwzz, r0.xyxx +mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +ishl r0.z, v7.x, l(4) +max r0.z, cb1[r0.z + 4].z, cb1[r0.z + 4].y +add r0.z, r0.z, l(-0.100000024) +lt r0.w, l(0.000000), r0.z +lt r0.z, r0.z, l(0.000000) +iadd r0.z, -r0.w, r0.z +itof r0.z, r0.z +mov_sat r0.z, r0.z +add r1.xy, -r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mad r0.xy, r0.zzzz, r1.xyxx, r0.xyxx +min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) +dp3 r0.x, r8.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mul r0.x, r8.w, r0.x +max r0.x, r8.w, r0.x +mul_sat r0.x, r0.x, l(10.000000) +lt r0.x, l(0.500000), r0.x +and o1.z, r0.x, l(0x3f800000) +// === Glass Highlight Compression === +lt r30.x, l(0.500000), cb13[14].x +if_nz r30.x + // Compute luminance + dp3 r30.y, r8.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) + // Soft compress if luminance > 0.5 + lt r30.z, l(0.500000), r30.y + if_nz r30.z + // compression = 0.5 + 1.5 * (1 - exp(-(luma - 0.5) / 1.5)) + add r30.w, r30.y, l(-0.500000) + mul r30.w, r30.w, l(-0.666667) + exp r30.w, r30.w + add r30.w, -r30.w, l(1.000000) + mad r30.w, r30.w, l(1.500000), l(0.500000) + // scale = compression / luma + max r31.x, r30.y, l(0.001000) + div r31.x, r30.w, r31.x + mul r8.xyz, r8.xyzx, r31.xxxx + endif +endif +mov o0.xyzw, r8.xyzw +mov o1.w, l(0) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0xB317E9E1.ps_5_0_original_backup.asm b/src/games/endfield/glass/0xB317E9E1.ps_5_0_original_backup.asm new file mode 100644 index 0000000000..5c6d3bd90e --- /dev/null +++ b/src/games/endfield/glass/0xB317E9E1.ps_5_0_original_backup.asm @@ -0,0 +1,1707 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Wed Feb 4 07:24:28 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xyz +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 zw 1 NONE float zw +// TEXCOORD 2 xyz 2 NONE float xyz +// TEXCOORD 3 xyzw 3 NONE float xyzw +// TEXCOORD 4 xyzw 4 NONE float x +// TEXCOORD 5 xyz 5 NONE float xyz +// TEXCOORD 6 xyz 6 NONE float xyz +// TEXCOORD 7 x 7 NONE uint x +// SV_IsFrontFace 0 x 8 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[244], immediateIndexed +dcl_constantbuffer CB1[4085], dynamicIndexed +dcl_constantbuffer CB2[20], immediateIndexed +dcl_constantbuffer CB3[259], dynamicIndexed +dcl_constantbuffer CB4[3], immediateIndexed +dcl_constantbuffer CB5[2054], dynamicIndexed +dcl_constantbuffer CB6[715], dynamicIndexed +dcl_constantbuffer CB7[160], dynamicIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_comparison +dcl_sampler s4, mode_default +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2darray (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2d (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture3d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture2d (float,float,float,float) t18 +dcl_input_ps_siv linear noperspective v0.xyz, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v1.zw +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyzw +dcl_input_ps linear v4.x +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps constant v7.x +dcl_input_ps_sgv constant v8.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 36 +mul r0.xy, v0.xyxx, cb0[82].zwzz +mad r0.xy, r0.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +mul r1.xyzw, -r0.yyyy, cb0[25].xyzw +mad r0.xyzw, cb0[24].xyzw, r0.xxxx, r1.xyzw +mad r0.xyzw, cb0[26].xyzw, v0.zzzz, r0.xyzw +add r0.xyzw, r0.xyzw, cb0[27].xyzw +div r0.xyz, r0.xyzx, r0.wwww +lt r1.x, l(0.000000), v3.w +movc r1.x, r1.x, l(1.000000), l(-1.000000) +eq r1.y, l(0.000000), cb0[86].w +add r2.xyz, -r0.xyzx, cb0[44].xyzx +mov r3.x, cb0[0].z +mov r3.y, cb0[1].z +mov r3.z, cb0[2].z +movc r1.yzw, r1.yyyy, r2.xxyz, r3.xxyz +dp3 r2.x, r1.yzwy, r1.yzwy +max r2.y, r2.x, l(9.999999939E-09) +rsq r2.y, r2.y +mul r4.xyz, r1.yzwy, r2.yyyy +mul r2.x, r2.y, r2.x +add r2.zw, -v1.xxxy, v1.zzzw +mad r5.xy, cb2[3].xxxx, r2.zwzz, v1.xyxx +mad r5.xy, r5.xyxx, cb2[12].xyxx, cb2[12].zwzz +mad r2.zw, cb2[2].wwww, r2.zzzw, v1.xxxy +mad r2.zw, r2.zzzw, cb2[11].xxxy, cb2[11].zzzw +sample_b_indexable(texture2d)(float,float,float,float) r6.xyzw, r2.zwzz, t2.xyzw, s4, cb0[108].x +add r2.z, cb0[108].x, cb2[3].y +sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, r5.xyxx, t3.xywz, s5, r2.z +mul r7.x, r7.x, r7.z +mad r2.zw, r7.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +mul r5.zw, r2.zzzw, cb2[0].xxxx +sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, r5.xyxx, t4.xyzw, s6, cb0[108].x +mul r6.xyzw, r6.xyzw, cb2[8].xyzw +mul_sat r6.xyz, r6.xyzx, cb2[4].zzzz +add r8.xyz, -r6.xyzx, cb2[8].xyzx +mad r6.xyz, cb2[4].xxxx, r8.xyzx, r6.xyzx +mad r3.w, r6.w, v4.x, -r6.w +mad r8.w, cb2[19].x, r3.w, r6.w +add r3.w, -cb2[0].z, cb2[0].w +mad r9.w, r7.y, r3.w, cb2[0].z +add_sat r3.w, l(-1.000000), cb2[3].w +add r4.w, -r7.x, cb2[4].y +mad r3.w, r3.w, r4.w, r7.x +mul r7.xyw, v2.zxzy, v3.yzyx +mad r7.xyw, v2.yzyx, v3.zxzy, -r7.xyxw +mul r7.xyw, r1.xxxx, r7.xyxw +mul r5.xyw, r5.wwww, r7.xyxw +mad r5.xyz, v3.xyzx, r5.zzzz, r5.xywx +dp2 r1.x, r2.zwzz, r2.zwzz +min r1.x, r1.x, l(1.000000) +add r1.x, -r1.x, l(1.000000) +sqrt r1.x, r1.x +max r1.x, r1.x, l(1.000000017E-16) +lt r2.z, l(0.000000), cb2[1].w +movc r2.z, r2.z, l(-1.000000), l(1.000000) +movc r2.z, v8.x, l(1.000000), r2.z +mul r1.x, r1.x, r2.z +mad r5.xyz, v2.xyzx, r1.xxxx, r5.xyzx +dp3 r1.x, r5.xyzx, r5.xyzx +rsq r1.x, r1.x +mul r5.xyz, r1.xxxx, r5.xyzx +max r1.x, v5.z, l(9.999999939E-09) +div r2.zw, v5.xxxy, r1.xxxx +max r1.x, v6.z, l(9.999999939E-09) +div r7.xy, v6.xyxx, r1.xxxx +add r10.xy, r2.zwzz, -r7.xyxx +mul r1.x, l(0.080000), cb2[0].y +mad r7.xyw, -r6.xyxz, r3.wwww, r6.xyxz +mad r1.x, -r1.x, r3.w, r1.x +mad r6.xyz, r6.xyzx, r3.wwww, r1.xxxx +dp3 r1.x, r5.xyzx, r4.xyzx +mad r11.xyzw, r9.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r2.z, r11.x, r11.x +max r1.x, r1.x, l(0.000000) +mul r2.w, r1.x, l(-9.280000) +exp r2.w, r2.w +min r2.z, r2.w, r2.z +mad r2.z, r2.z, r11.x, r11.y +mad r2.zw, r2.zzzz, l(0.000000, 0.000000, -1.040000, 1.040000), r11.zzzw +eq r3.w, l(1.000000), cb0[113].y +mul r11.xyzw, r0.yyyy, cb0[241].xyzw +mad r11.xyzw, cb0[240].xyzw, r0.xxxx, r11.xyzw +mad r11.xyzw, cb0[242].xyzw, r0.zzzz, r11.xyzw +add r11.xyzw, r11.xyzw, cb0[243].xyzw +div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w +mul r11.xyz, r11.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) +mul r11.xyz, r4.wwww, r11.xyzx +mad_sat r11.xy, r11.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +mul r11.xy, r11.xyxx, cb0[82].xyxx +ftou r12.xy, r11.xyxx +mad r4.w, cb0[84].z, r11.z, cb0[84].w +div r12.z, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w +ftou r11.xy, v0.xyxx +mul r4.w, r0.y, cb0[1].z +mad r4.w, cb0[0].z, r0.x, r4.w +mad r4.w, cb0[2].z, r0.z, r4.w +add r4.w, r4.w, cb0[3].z +mov r11.z, |r4.w| +movc r11.xyz, r3.wwww, r12.xyzx, r11.xyzx +mad r12.xyz, r5.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r0.xyzx +mad r13.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r13.xyz, r12.xzyx, -r13.xyzx +max r3.w, |r13.y|, |r13.x| +add r3.w, r3.w, l(-464.000000) +mul_sat r3.w, r3.w, l(0.031250) +add r4.w, |r13.z|, l(-208.000000) +mul_sat r4.w, r4.w, l(0.031250) +max r3.w, r3.w, r4.w +ne r4.w, l(0.000000), cb0[210].w +lt r6.w, r3.w, l(1.000000) +and r4.w, r4.w, r6.w +if_nz r4.w + mad r13.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r13.xyz, r12.xzyx, -r13.xyzx + max r4.w, |r13.y|, |r13.x| + add r4.w, r4.w, l(-29.000000) + mul_sat r4.w, r4.w, l(0.500000) + add r6.w, |r13.z|, l(-13.000000) + mul_sat r6.w, r6.w, l(0.500000) + max r4.w, r4.w, r6.w + lt r6.w, r4.w, l(1.000000) + if_nz r6.w + mad r13.xyz, r12.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r14.xyz, r13.xyzx, cb0[211].xyzx + round_ni r14.xyz, r14.xyzx + mad r13.xyz, r13.xyzx, cb0[211].xyzx, -r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r13.xyzx, t11.xyzw, s1, l(0.000000) + add r6.w, -r4.w, l(1.000000) + mul r10.w, l(0.500000), cb0[211].y + mad r12.w, -cb0[211].y, l(0.500000), l(1.000000) + max r10.w, r10.w, r13.y + min r10.w, r12.w, r10.w + mul r13.w, r10.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r13.xwzx, t12.xyzw, s0, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r14.xxxx, r15.xyzx + add r15.xyz, r13.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t12.xyzw, s0, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r14.yyyy, r15.xyzx + add r13.xyz, r13.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r13.xyz, r13.xyzx, t12.xyzw, s0, l(0.000000) + mad r13.xyz, r13.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r13.xyz, r14.zzzz, r13.xyzx + mad r10.w, r15.w, r6.w, r3.w + mov r13.w, r14.z + mul r13.xyzw, r6.wwww, r13.xyzw + mov r17.w, r14.y + mul r15.xyzw, r6.wwww, r17.xyzw + mov r16.w, r14.x + mul r14.xyzw, r6.wwww, r16.xyzw + else + mov r13.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r10.w, r3.w + endif + mad r16.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r16.xyz, r12.xzyx, -r16.xyzx + max r6.w, |r16.y|, |r16.x| + add r6.w, r6.w, l(-116.000000) + mul_sat r6.w, r6.w, l(0.125000) + add r12.w, |r16.z|, l(-52.000000) + mul_sat r12.w, r12.w, l(0.125000) + max r6.w, r6.w, r12.w + lt r12.w, r6.w, l(1.000000) + if_nz r12.w + mad r16.xyz, r12.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r16.xyzx, cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r16.xyzx, t13.xyzw, s1, l(0.000000) + add r12.w, -r6.w, l(1.000000) + mul r4.w, r4.w, r12.w + mul r12.w, l(0.500000), cb0[211].y + mad r17.w, -cb0[211].y, l(0.500000), l(1.000000) + max r12.w, r12.w, r16.y + min r12.w, r17.w, r12.w + mul r16.w, r12.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t14.xyzw, s0, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.xxxx, r18.xyzx + add r18.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t14.xyzw, s0, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r17.yyyy, r18.xyzx + add r16.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t14.xyzw, s0, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r17.zzzz, r16.xyzx + mad r10.w, r18.w, r4.w, r10.w + mov r16.w, r17.z + mad r13.xyzw, r16.xyzw, r4.wwww, r13.xyzw + mov r20.w, r17.y + mad r15.xyzw, r20.xyzw, r4.wwww, r15.xyzw + mov r19.w, r17.x + mad r14.xyzw, r19.xyzw, r4.wwww, r14.xyzw + endif + lt r4.w, l(0.000000), r6.w + if_nz r4.w + mad r12.xyz, r12.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r16.xyz, r12.xyzx, cb0[211].xyzx + mul r17.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r16.xyz, r16.xyzx + mad r12.xyz, r12.xyzx, cb0[211].xyzx, -r16.xyzx + mad r16.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r12.xyz, r17.xyzx, r12.xyzx + min r12.xyz, r16.xyzx, r12.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r12.xyzx, t15.yzwx, s1, l(0.000000) + add r4.w, -r3.w, l(1.000000) + mul r4.w, r4.w, r6.w + max r6.w, r17.y, r12.y + min r6.w, r16.y, r6.w + mul r12.w, r6.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r12.xwzx, t16.xyzw, s0, l(0.000000) + add r17.xyz, r12.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s0, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.yyyy, r17.xyzx + mov r17.w, r18.y + mad r13.xyzw, r17.xyzw, r4.wwww, r13.xyzw + add r12.xyz, r12.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r12.xyzx, t16.xyzw, s0, l(0.000000) + mad r12.xyz, r12.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r12.xyz, r18.xxxx, r12.xyzx + mov r12.w, r18.x + mad r15.xyzw, r12.xyzw, r4.wwww, r15.xyzw + mad r12.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r12.xyzx + mad r14.xyzw, r18.xyzw, r4.wwww, r14.xyzw + mad r10.w, r16.w, r4.w, r10.w + endif + mad_sat r4.w, r10.w, l(2.000000), l(-1.000000) + add r12.x, -r3.w, r4.w + add r3.w, r3.w, r4.w + mul r12.y, r3.w, l(0.500000) +else + mov r13.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r14.xyzw, l(0,0,0,0) + mov r12.xy, l(0,1.000000,0,0) +endif +mul r16.xyzw, r12.yyyx, cb0[213].xyzw +mad r16.y, r16.w, l(0.500000), r16.y +mul r12.zw, r12.yyyx, cb0[213].wwwy +mad r16.w, r12.w, l(0.375000), r12.z +add r14.xyzw, r14.xyzw, r16.xyzw +mul r16.xyzw, r12.yyyx, cb0[214].xyzw +mad r16.y, r16.w, l(0.500000), r16.y +mul r12.zw, r12.yyyx, cb0[214].wwwy +mad r16.w, r12.w, l(0.375000), r12.z +add r15.xyzw, r15.xyzw, r16.xyzw +mul r16.xyzw, r12.yyyx, cb0[215].xyzw +mad r16.y, r16.w, l(0.500000), r16.y +mul r12.xy, r12.yxyy, cb0[215].wyww +mad r16.w, r12.y, l(0.375000), r12.x +add r12.xyzw, r13.xyzw, r16.xyzw +dp3 r3.w, r14.xyzx, r5.xyzx +add r3.w, r14.w, r3.w +max r13.x, r3.w, l(0.000000) +dp3 r3.w, r15.xyzx, r5.xyzx +add r3.w, r15.w, r3.w +max r13.y, r3.w, l(0.000000) +dp3 r3.w, r12.xyzx, r5.xyzx +add r3.w, r12.w, r3.w +max r13.z, r3.w, l(0.000000) +dp3 r3.w, -r4.xyzx, r5.xyzx +add r3.w, r3.w, r3.w +mad r12.xyz, r5.xyzx, -r3.wwww, -r4.xyzx +add r3.w, l(-1.000000), cb0[113].x +max r4.w, r9.w, l(0.001000) +log r4.w, r4.w +mad r4.w, -r4.w, l(1.200000), l(1.000000) +add r3.w, r3.w, -r4.w +utof r14.xy, r11.xyxx +mul r14.zw, r14.xxxy, cb3[0].wwww +round_ni r14.zw, r14.zzzw +add r4.w, r11.z, -cb3[2].y +round_ni r4.w, r4.w +add r6.w, l(-1.000000), cb3[1].x +max r10.w, r4.w, l(0.000000) +min r6.w, r6.w, r10.w +ge r4.w, r6.w, r4.w +mad r10.w, r14.w, cb3[0].x, r14.z +ftoi r10.w, r10.w +iadd r10.w, r10.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.w, r10.w, l(0), t0.xxxx +ftoi r6.w, r6.w +iadd r6.w, r6.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r6.w, r6.w, l(0), t0.xxxx +and r6.w, r6.w, r10.w +and r4.w, r4.w, r6.w +mul r15.xyz, r13.xyzx, cb0[111].xxxx +dp3 r6.w, r15.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r0.w, l(1.000000) +mov r5.w, l(1.000000) +mov r15.xyz, l(0,0,0,0) +mov r10.w, l(1.000000) +mov r12.w, r4.w +mov r13.w, l(0) +loop + lt r14.z, l(0.010000), r10.w + ine r14.w, r12.w, l(0) + and r14.w, r14.z, r14.w + if_nz r14.w + firstbit_lo r14.w, r12.w + ishl r15.w, l(1), r14.w + xor r12.w, r12.w, r15.w + ishl r14.w, r14.w, l(3) + dp4 r16.x, cb3[r14.w + 6].xyzw, r0.xyzw + dp4 r16.y, cb3[r14.w + 7].xyzw, r0.xyzw + dp4 r16.z, cb3[r14.w + 8].xyzw, r0.xyzw + ge r17.xyz, cb3[r14.w + 5].xyzx, |r16.xyzx| + and r15.w, r17.y, r17.x + and r15.w, r17.z, r15.w + if_nz r15.w + mul r15.w, l(0.100000), cb3[r14.w + 5].x + mul r17.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r17.xy, r17.xyxx, r17.xyxx + add r18.xyz, -|r16.xyzx|, cb3[r14.w + 5].xyzx + mul r18.xyz, r18.xyzx, cb3[r14.w + 9].xyzx + eq r16.w, l(1.000000), cb3[r14.w + 10].x + if_nz r16.w + dp3 r19.x, cb3[r14.w + 6].xyzx, r12.xyzx + dp3 r19.y, cb3[r14.w + 7].xyzx, r12.xyzx + dp3 r19.z, cb3[r14.w + 8].xyzx, r12.xyzx + add r20.xyz, -r16.xyzx, cb3[r14.w + 5].xyzx + div r20.xyz, r20.xyzx, r19.xyzx + add r21.xyz, -r16.xyzx, -cb3[r14.w + 5].xyzx + div r21.xyz, r21.xyzx, r19.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx + min r16.w, r20.y, r20.x + min r16.w, r20.z, r16.w + mad r16.xyz, r19.xyzx, r16.wwww, r16.xyzx + else + mov r16.xyz, r12.xyzx + endif + dp3 r16.w, r16.xyzx, r16.xyzx + rsq r16.w, r16.w + mul r16.xyz, r16.wwww, r16.xyzx + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + lt r20.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r19.xyz, -r19.xyzx, r20.xyzx + itof r19.xyz, r19.xyzx + dp3 r16.w, r16.xyzx, r19.xyzx + div r16.xyz, r16.xyzx, r16.wwww + lt r16.z, r16.z, l(0.000000) + add r19.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r19.xy, r19.zwzz, r19.xyxx + movc r16.xy, r16.zzzz, r19.xyxx, r16.xyxx + dp4 r16.z, cb3[r14.w + 4].xyzw, r5.xyzw + max r16.z, r16.z, l(0.000000) + max r16.z, r16.z, l(0.000100) + min r16.w, r18.z, r18.y + min r16.w, r16.w, r18.x + add r17.x, r17.y, r17.x + mad r17.x, r17.z, r17.z, r17.x + mad r15.w, r15.w, r15.w, -r17.x + mul r15.w, r15.w, cb3[r14.w + 9].x + mul r15.w, r15.w, cb3[r14.w + 9].x + add r17.x, l(1.000000), -cb3[r14.w + 10].y + mul r15.w, r15.w, r17.x + mul r15.w, r15.w, l(100.000000) + mad_sat r15.w, r16.w, cb3[r14.w + 10].y, r15.w + mul r16.w, r15.w, cb3[r14.w + 10].w + mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r17.xy, r16.xyxx, cb3[1].wwww, cb3[2].wwww + mov r17.z, cb3[r14.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t1.xyzw, s2, r3.w + mul r17.xyz, r17.xyzx, cb3[r14.w + 9].wwww + div r16.x, r6.w, r16.z + min r16.x, |r16.x|, l(1.000000) + mad r16.x, r16.x, l(2.000000), r6.w + add r16.y, r16.z, l(2.000000) + div r16.x, r16.x, r16.y + add r16.x, r16.x, l(-1.000000) + mad r16.x, r16.x, cb0[112].w, l(1.000000) + mul r16.xyz, r16.xxxx, r17.xyzx + mul r16.xyz, r16.wwww, r16.xyzx + mad r15.xyz, r16.xyzx, r10.wwww, r15.xyzx + mad r14.w, -r15.w, cb3[r14.w + 10].w, l(1.000000) + mul r10.w, r10.w, r14.w + endif + mov r13.w, l(-1) + continue + else + mov r13.w, r14.z + break + endif + mov r13.w, r14.z +endloop +if_nz r13.w + dp3 r0.w, r12.xyzx, r12.xyzx + rsq r0.w, r0.w + mul r16.xyz, r0.wwww, r12.xyzx + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + lt r18.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r18.xyzx + itof r17.xyz, r17.xyzx + dp3 r0.w, r16.xyzx, r17.xyzx + div r16.xyz, r16.xyzx, r0.wwww + lt r0.w, r16.z, l(0.000000) + add r14.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r14.zw, r14.zzzw, r17.xxxy + movc r14.zw, r0.wwww, r14.zzzw, r16.xxxy + mov r5.w, l(1.000000) + dp4 r0.w, cb3[3].xyzw, r5.xyzw + max r0.w, r0.w, l(0.000000) + max r0.w, r0.w, l(0.000100) + mad r14.zw, r14.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r16.xy, r14.zwzz, cb3[1].wwww, cb3[2].wwww + mov r16.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t1.xyzw, s2, r3.w + div r3.w, r6.w, r0.w + min r3.w, |r3.w|, l(1.000000) + mad r3.w, r3.w, l(2.000000), r6.w + add r0.w, r0.w, l(2.000000) + div r0.w, r3.w, r0.w + add r0.w, r0.w, l(-1.000000) + mad r0.w, r0.w, cb0[112].w, l(1.000000) + mul r16.xyz, r0.wwww, r16.xyzx + mad r15.xyz, r16.xyzx, r10.wwww, r15.xyzx +endif +mul r13.xyz, r7.xywx, r13.xyzx +add r0.w, r7.z, l(-1.000000) +mad r0.w, cb2[1].x, r0.w, l(1.000000) +mul r13.xyz, r0.wwww, r13.xyzx +mul r15.xyz, r15.xyzx, cb0[112].zzzz +mul r15.xyz, r15.xyzx, cb0[111].yyyy +mul_sat r0.w, r6.y, l(50.000000) +mul r0.w, r2.w, r0.w +mad r16.xyz, r6.xyzx, r2.zzzz, r0.wwww +mul r15.xyz, r15.xyzx, r16.xyzx +mad r13.xyz, r13.xyzx, cb0[111].xxxx, r15.xyzx +lt r0.w, cb6[35].w, l(0.990000) +if_nz r0.w + ftoi r0.w, cb6[35].x + ieq r2.z, r0.w, l(2) + movc r15.xyz, r2.zzzz, cb6[20].xyzx, cb0[44].xyzx + add r15.xyz, r0.xyzx, -r15.xyzx + dp3 r2.z, r15.xyzx, r15.xyzx + add r2.z, -r2.z, cb6[34].w + mul_sat r2.z, r2.z, cb6[34].z + lt r2.w, l(0.000000), r2.z + if_nz r2.w + ilt r0.w, l(0), r0.w + if_nz r0.w + add r15.xyz, r0.xyzx, -cb6[20].xyzx + add r16.xyz, r0.xyzx, -cb6[21].xyzx + add r17.xyz, r0.xyzx, -cb6[22].xyzx + add r18.xyz, r0.xyzx, -cb6[23].xyzx + dp3 r15.x, r15.xyzx, r15.xyzx + dp3 r15.y, r16.xyzx, r16.xyzx + dp3 r15.z, r17.xyzx, r17.xyzx + dp3 r15.w, r18.xyzx, r18.xyzx + lt r16.x, r15.x, cb6[20].w + lt r16.y, r15.y, cb6[21].w + lt r16.z, r15.z, cb6[22].w + lt r16.w, r15.w, cb6[23].w + and r17.xyzw, r16.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) + movc r16.xyz, r16.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) + add r16.xyz, r16.xyzx, r17.yzwy + max r17.yzw, r16.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) + dp4 r0.w, r17.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) + add r0.w, -r0.w, l(4.000000) + max r0.w, r0.w, l(0.000000) + min r0.w, r0.w, l(3.000000) + add r2.w, r0.w, l(1.000000) + min r2.w, r2.w, l(3.000000) + ftou r2.w, r2.w + dp3 r3.w, r15.yzwy, icb[r2.w + 0].yzwy + div r2.w, r3.w, cb6[r2.w + 20].w + ge r3.w, r2.w, l(0.000000) + ge r2.w, l(1.000000), r2.w + and r2.w, r2.w, r3.w + if_nz r2.w + ftou r2.w, r0.w + add r14.zw, r14.xxxy, l(0.000000, 0.000000, 2.083000, 4.867000) + dp2 r3.w, r14.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r3.w, r3.w + mul r3.w, r3.w, l(52.982918) + frc r3.w, r3.w + dp4 r4.w, r15.xyzw, icb[r2.w + 0].xyzw + div r2.w, r4.w, cb6[r2.w + 20].w + sqrt r2.w, r2.w + add r2.w, r2.w, l(-0.900000) + mul r2.w, r2.w, l(12.000000) + ge r2.w, r2.w, r3.w + and r2.w, r2.w, l(0x3f800000) + add r0.w, r0.w, r2.w + endif + dp3 r2.w, r5.xyzx, cb5[0].xyzx + max r2.w, r2.w, l(0.000000) + min r2.w, r2.w, l(0.900000) + add r2.w, -r2.w, l(1.000000) + ftou r3.w, r0.w + ishl r4.w, r3.w, l(2) + mul r14.zw, r2.wwww, cb6[r3.w + 24].xxxy + max r2.w, r14.z, l(0.000000) + mad r15.xyz, -cb5[0].xyzx, r2.wwww, r0.xyzx + mad r15.xyz, r5.xyzx, r14.wwww, r15.xyzx + mul r16.xyz, r15.yyyy, cb6[r4.w + 1].xyzx + mad r15.xyw, cb6[r4.w + 0].xyxz, r15.xxxx, r16.xyxz + mad r15.xyz, cb6[r4.w + 2].xyzx, r15.zzzz, r15.xywx + add r15.xyz, r15.xyzx, cb6[r4.w + 3].xyzx + ge r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + ge r17.xyz, r15.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + or r16.xyz, r16.xyzx, r17.xyzx + or r2.w, r16.y, r16.x + or r2.w, r16.z, r2.w + and r3.w, r15.z, l(0x7fffffff) + ult r3.w, l(0x7f800000), r3.w + or r16.z, r2.w, r3.w + ftoi r0.w, r0.w + mad r14.zw, r15.xxxy, cb6[r0.w + 28].zzzw, cb6[r0.w + 28].xxxy + mad r15.xy, r14.zwzz, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r15.xy, r15.xyxx + mad r14.zw, r14.zzzw, cb6[32].zzzw, -r15.xxxy + add r17.xyzw, r14.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r18.xw, r17.xxxz, r17.xxxz + min r17.xz, r14.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + max r19.xy, r14.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r19.zw, r18.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r14.zzzw + add r14.zw, -r14.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r14.zw, -r17.xxxz, r17.xxxz, r14.zzzw + mad r17.xy, -r19.xyxx, r19.xyxx, r17.ywyy + mov r20.x, r19.z + mov r20.y, r14.z + mov r20.z, r17.x + mov r20.w, r18.x + mul r20.xyzw, r20.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r18.x, r19.w + mov r18.y, r14.w + mov r18.z, r17.y + mul r17.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r18.xyzw, r20.ywyw, r20.xzxz + add r19.xyzw, r17.yyww, r17.xxzz + div r14.zw, r20.yyyw, r18.zzzw + add r14.zw, r14.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r20.xy, r14.zwzz, cb6[32].xxxx + div r14.zw, r17.yyyw, r19.yyyw + add r14.zw, r14.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r20.zw, r14.zzzw, cb6[32].yyyy + mul r17.xyzw, r18.xyzw, r19.xyzw + mad r18.xyzw, r15.xyxy, cb6[32].xyxy, r20.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.w, r18.xyxx, t5.xxxx, s3, r15.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.w, r18.zwzz, t5.xxxx, s3, r15.z + mul r2.w, r2.w, r17.y + mad r0.w, r17.x, r0.w, r2.w + mad r18.xyzw, r15.xyxy, cb6[32].xyxy, r20.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.w, r18.xyxx, t5.xxxx, s3, r15.z + mad r0.w, r17.z, r2.w, r0.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.w, r18.zwzz, t5.xxxx, s3, r15.z + mad r0.w, r17.w, r2.w, r0.w + movc r16.x, r16.z, l(1.000000), r0.w + else + mov r16.xz, l(1.000000,0,0,0) + endif + else + mov r16.xz, l(1.000000,0,0,0) + endif + lt r0.w, r2.z, l(1.000000) + if_nz r0.w + dp3 r0.w, r5.xyzx, cb5[0].xyzx + max r0.w, r0.w, l(0.000000) + min r0.w, r0.w, l(0.900000) + add r0.w, -r0.w, l(1.000000) + mul r14.zw, r0.wwww, cb6[584].xxxy + mad r15.xyz, -cb5[0].xyzx, r14.zzzz, r0.xyzx + mad r15.xyz, r5.xyzx, r14.wwww, r15.xyzx + mul r14.zw, r15.yyyy, cb6[581].xxxy + mad r14.zw, cb6[580].xxxy, r15.xxxx, r14.zzzw + mad r14.zw, cb6[582].xxxy, r15.zzzz, r14.zzzw + add r14.zw, r14.zzzw, cb6[583].xxxy + lt r17.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r14.zwzz + and r0.w, r17.y, r17.x + lt r17.xy, r14.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000) + and r2.w, r17.y, r17.x + and r0.w, r0.w, r2.w + if_nz r0.w + mul r0.w, r14.w, cb6[585].z + round_ni r0.w, r0.w + add r0.w, r14.z, r0.w + mul r0.w, r0.w, cb6[585].y + ftou r0.w, r0.w + umin r0.w, r0.w, l(127) + and r2.w, l(0x0000ffff), cb6[r0.w + 587].x + f16tof32 r17.x, r2.w + ge r2.w, r17.x, l(0.000000) + if_nz r2.w + mov r18.x, cb6[576].x + mov r18.y, cb6[577].x + mov r18.z, cb6[578].x + mov r18.w, cb6[r0.w + 587].y + mov r15.w, l(1.000000) + dp4 r18.x, r18.xyzw, r15.xyzw + mov r19.x, cb6[576].y + mov r19.y, cb6[577].y + mov r19.z, cb6[578].y + mov r19.w, cb6[r0.w + 587].z + dp4 r18.y, r19.xyzw, r15.xyzw + mov r19.x, cb6[576].z + mov r19.y, cb6[577].z + mov r19.z, cb6[578].z + mov r19.w, cb6[r0.w + 587].w + dp4 r2.w, r19.xyzw, r15.xyzw + lt r14.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xxxy + lt r3.w, l(0.000000), r2.w + and r4.w, r14.w, r14.z + and r3.w, r3.w, r4.w + lt r14.zw, r18.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + lt r4.w, r2.w, l(1.000000) + and r5.w, r14.w, r14.z + and r4.w, r4.w, r5.w + and r3.w, r3.w, r4.w + if_nz r3.w + ushr r0.w, cb6[r0.w + 587].x, l(16) + f16tof32 r17.y, r0.w + mad r14.zw, r18.xxxy, cb6[584].zzzw, r17.xxxy + mad r15.xy, r14.zwzz, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r15.xy, r15.xyxx + mad r14.zw, r14.zzzw, cb6[586].zzzw, -r15.xxxy + add r17.xyzw, r14.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r18.xw, r17.xxxz, r17.xxxz + min r15.zw, r14.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + max r17.xz, r14.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r19.xy, r18.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r14.zwzz + add r14.zw, -r14.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r14.zw, -r15.zzzw, r15.zzzw, r14.zzzw + mad r15.zw, -r17.xxxz, r17.xxxz, r17.yyyw + mov r17.x, r19.x + mov r17.y, r14.z + mov r17.z, r15.z + mov r17.w, r18.x + mul r17.xyzw, r17.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r18.x, r19.y + mov r18.y, r14.w + mov r18.z, r15.w + mul r18.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r19.xyzw, r17.ywyw, r17.xzxz + add r20.xyzw, r18.yyww, r18.xxzz + div r14.zw, r17.yyyw, r19.zzzw + add r14.zw, r14.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r17.xy, r14.zwzz, cb6[586].xxxx + div r14.zw, r18.yyyw, r20.yyyw + add r14.zw, r14.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r17.zw, r14.zzzw, cb6[586].yyyy + mul r18.xyzw, r19.xyzw, r20.xyzw + mad r19.xyzw, r15.xyxy, cb6[586].xyxy, r17.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.w, r19.xyxx, t8.xxxx, s3, r2.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r19.zwzz, t8.xxxx, s3, r2.w + mul r3.w, r3.w, r18.y + mad r0.w, r18.x, r0.w, r3.w + mad r15.xyzw, r15.xyxy, cb6[586].xyxy, r17.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r15.xyxx, t8.xxxx, s3, r2.w + mad r0.w, r18.z, r3.w, r0.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.w, r15.zwzz, t8.xxxx, s3, r2.w + mad r16.y, r18.w, r2.w, r0.w + else + mov r16.y, l(1.000000) + endif + else + mov r16.y, l(1.000000) + endif + else + mov r16.y, l(1.000000) + endif + movc r16.x, r16.z, r16.y, r16.x + else + mov r16.y, l(1.000000) + endif + add r0.w, -r16.y, r16.x + mad r0.w, r2.z, r0.w, r16.y + lt r2.z, l(0.001000), r0.w + if_nz r2.z + add r15.xyz, r0.xyzx, -cb0[173].xyzx + mad r2.zw, cb0[176].xxxz, r15.yyyy, r15.xxxz + mul r14.zw, r2.zzzw, cb0[174].zzzz + mul r15.yw, cb0[175].xxxy, cb0[183].wwww + mad r2.zw, r2.zzzw, cb0[174].zzzz, r15.yyyw + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r2.zwzz, t7.yzxw, s1, l(0.000000) + mad r14.zw, r14.zzzw, cb0[175].wwww, r15.yyyw + sample_l_indexable(texture2d)(float,float,float,float) r2.w, r14.zwzz, t7.yzwx, s1, l(0.000000) + dp2 r3.w, r15.xzxx, r15.xzxx + sqrt r3.w, r3.w + add r4.w, -cb0[174].x, cb0[174].y + add r3.w, r3.w, -cb0[174].x + div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul_sat r3.w, r3.w, r4.w + mad r4.w, r3.w, l(-2.000000), l(3.000000) + mul r3.w, r3.w, r3.w + mul r3.w, r3.w, r4.w + add r2.w, -r2.z, r2.w + mad r2.z, r3.w, r2.w, r2.z + add r2.z, r2.z, l(-1.000000) + mad r2.z, cb0[175].z, r2.z, l(1.000000) + mul r0.w, r0.w, r2.z + endif + add r2.z, -r0.w, cb6[35].z + mad r0.w, cb6[35].w, r2.z, r0.w +else + mov r0.w, cb6[35].z +endif +min r0.w, r0.w, l(1.000000) +add r0.w, r0.w, l(-1.000000) +mad r15.x, cb6[34].x, r0.w, l(1.000000) +lt r0.w, l(0.001000), r15.x +if_nz r0.w + dp3 r0.w, -cb5[0].xyzx, r12.xyzx + mad r16.xyz, cb5[0].xyzx, r0.wwww, r12.xyzx + lt r0.w, r0.w, cb5[4].z + dp3 r2.z, r16.xyzx, r16.xyzx + max r2.z, r2.z, l(0.0000610351562) + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + mul r16.xyz, r16.xyzx, cb5[4].yyyy + mad r16.xyz, -cb5[0].xyzx, cb5[4].zzzz, r16.xyzx + dp3 r2.z, r16.xyzx, r16.xyzx + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + movc r16.xyz, r0.wwww, r16.xyzx, r12.xyzx + mad r17.xyz, r1.yzwy, r2.yyyy, r16.xyzx + dp3 r0.w, r17.xyzx, r17.xyzx + max r0.w, r0.w, l(0.0000610351562) + rsq r0.w, r0.w + mul r17.xyz, r0.wwww, r17.xyzx + dp3_sat r9.y, r16.xyzx, r5.xyzx + dp3_sat r0.w, r5.xyzx, r17.xyzx + min r9.z, r1.x, l(1.000000) + mul r2.z, r9.w, r9.w + mul r2.z, r2.z, r2.z + mad r2.w, r0.w, r2.z, -r0.w + mad r0.w, r2.w, r0.w, l(1.000000) + dp3_sat r2.w, r4.xyzx, r17.xyzx + add r2.w, -r2.w, l(1.000000) + mul r3.w, r2.w, r2.w + mul r3.w, r3.w, r3.w + mul r4.w, r2.w, r3.w + add r5.w, -r9.w, l(1.000000) + mad r6.w, -r5.w, l(0.383026), l(-0.0761947036) + mad r6.w, r5.w, r6.w, l(1.049970) + mad r5.w, r5.w, r6.w, l(0.409255) + min r5.w, r5.w, l(0.999000) + add r6.w, -r5.w, l(1.000000) + add r16.xyz, -r6.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r6.xyzx + mad r2.w, -r3.w, r2.w, l(1.000000) + mad r17.xyz, r6.xyzx, r2.wwww, r4.wwww + mul r0.w, r0.w, r0.w + div r0.w, r2.z, r0.w + mad r14.zw, -r9.zzzy, r2.zzzz, r9.zzzy + mad r2.zw, r14.zzzw, r9.zzzy, r2.zzzz + sqrt r2.zw, r2.zzzw + mul r2.zw, r2.zzzw, r9.yyyz + add r2.z, r2.w, r2.z + add r2.z, r2.z, l(0.000100) + div r2.z, l(0.500000), r2.z + mul r0.w, r0.w, r2.z + mul r17.xyz, r0.wwww, r17.xyzx + min r17.xyz, r17.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r18.xyzw, r9.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.w, r18.xyxx, t10.yzwx, s0, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r18.zwzz, t10.yzxw, s0, l(0.000000) + mul r0.w, r0.w, r2.z + mul r0.w, r5.w, r0.w + div r0.w, r0.w, r6.w + mul r18.xyz, r16.xyzx, r16.xyzx + mul r18.xyz, r0.wwww, r18.xyzx + mad r16.xyz, -r16.xyzx, r6.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r16.xyz, r18.xyzx, r16.xyzx + add r16.xyz, r16.xyzx, r17.xyzx + mul r16.xyz, r16.xyzx, cb5[4].xxxx + max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r16.xyz, r16.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r17.xyz, r7.xywx, r9.yyyy + mad r16.xyz, r16.xyzx, r9.yyyy, r17.xyzx + mul r16.xyz, r16.xyzx, cb5[1].xyzx + mov r15.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r15.yzw, r15.xyxx, t9.wxyz, s0, cb0[108].x + add r0.w, -r15.x, l(1.000000) + mad r15.xyz, r16.xyzx, r15.yzwy, -r16.xyzx + mad r15.xyz, r0.wwww, r15.xyzx, r16.xyzx +else + mov r15.xyz, l(0,0,0,0) +endif +mul r2.zw, r14.xxxy, l(0.000000, 0.000000, 0.031250, 0.031250) +round_ni r2.zw, r2.zzzw +mad r0.w, r2.w, cb4[1].y, r2.z +mul r0.w, r0.w, l(8.000000) +ftoi r0.w, r0.w +mad r2.z, -cb0[85].y, cb4[2].w, r11.z +round_ni r2.z, r2.z +add r2.w, l(-1.000000), cb4[1].w +max r3.w, r2.z, l(0.000000) +min r2.w, r2.w, r3.w +mul r3.w, r2.w, l(8.000000) +ftoi r3.w, r3.w +ge r2.z, r2.w, r2.z +iadd r2.w, r3.w, cb0[110].y +mul r3.w, r9.w, r9.w +min r9.x, r1.x, l(1.000000) +add r1.x, -r9.w, l(1.000000) +mad r4.w, -r1.x, l(0.383026), l(-0.0761947036) +mad r4.w, r1.x, r4.w, l(1.049970) +mad r1.x, r1.x, r4.w, l(0.409255) +min r1.x, r1.x, l(0.999000) +add r4.w, -r1.x, l(1.000000) +add r16.xyz, -r6.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r6.xyzx +mad r9.yz, r9.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r5.w, r9.yzyy, t10.yzwx, s0, l(0.000000) +mad r17.xyz, -r16.xyzx, r4.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r16.xyz, r16.xyzx, r16.xyzx +mov r18.w, l(1.000000) +mov r19.y, l(1.000000) +mov r20.z, r9.w +mov r21.xyz, l(0,0,0,0) +mov r6.w, l(1.000000) +mov r7.z, l(0) +loop + ilt r9.y, l(7), r7.z + breakc_nz r9.y + iadd r9.y, r0.w, r7.z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.y, r9.y, l(0), t0.xxxx + iadd r9.z, r2.w, r7.z + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.z, r9.z, l(0), t0.xxxx + and r9.y, r9.z, r9.y + and r9.y, r2.z, r9.y + ishl r9.z, r7.z, l(5) + mov r22.xyz, l(0,0,0,0) + mov r10.w, r6.w + mov r12.w, r9.y + loop + breakc_z r12.w + firstbit_lo r13.w, r12.w + ishl r14.z, l(1), r13.w + xor r14.z, r12.w, r14.z + iadd r13.w, r9.z, r13.w + bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r13.wwww, l(1, 3, 5, 6) + bfi r14.w, l(29), l(3), r13.w, l(7) + ftou r15.w, cb5[r23.z + 6].w + ieq r15.w, r15.w, l(1) + if_nz r15.w + add r18.xyz, r0.xyzx, -cb5[r23.x + 6].xyzx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r23.z + 6].xzyx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r23.w + 6].yxzy + ushr r26.xyz, cb5[r23.z + 6].xzyx, l(16, 16, 16, 0) + ushr r27.xyz, cb5[r23.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyw, r27.yxyz + mov r28.xz, r24.xxzx + mov r28.yw, r26.xxxz + dp4 r15.w, r18.xyzw, r28.xyzw + mov r26.x, r24.y + mov r26.z, r25.y + mov r26.w, r27.x + dp4 r16.w, r18.xyzw, r26.xyzw + mov r27.xz, r25.xxzx + dp4 r17.w, r18.xyzw, r27.xyzw + max r15.w, |r15.w|, |r16.w| + max r15.w, |r17.w|, r15.w + mad r16.w, cb5[r14.w + 6].x, l(0.500000), l(0.500000) + add r15.w, r15.w, -r16.w + mad r16.w, -cb5[r14.w + 6].x, l(0.500000), l(0.500000) + div_sat r15.w, r15.w, r16.w + add r15.w, -r15.w, l(1.000000) + mul r15.w, r15.w, r15.w + else + mov r15.w, l(1.000000) + endif + lt r16.w, l(0.500000), cb5[r23.y + 6].z + lt r17.w, r15.w, l(0.001000) + or r17.w, r16.w, r17.w + if_nz r17.w + mov r12.w, r14.z + continue + endif + ishl r17.w, r13.w, l(3) + bfi r13.w, l(29), l(3), r13.w, l(2) + lt r18.x, cb5[r17.w + 6].w, l(1.500000) + if_nz r18.x + mad r18.x, cb5[r13.w + 6].y, l(0.500000), l(0.500000) + add r18.x, r18.x, -|cb5[r13.w + 6].x| + add r18.y, -r18.x, cb5[r13.w + 6].y + add r19.z, -|r18.x|, l(1.000000) + add r19.z, -|r18.y|, r19.z + max r19.z, r19.z, l(0.000488281250) + ge r19.w, cb5[r13.w + 6].x, l(0.000000) + movc r18.z, r19.w, r19.z, -r19.z + dp3 r19.z, r18.xyzx, r18.xyzx + rsq r19.z, r19.z + mul r18.xyz, r18.xyzx, r19.zzzz + add r24.xyz, -r0.xyzx, cb5[r23.x + 6].xyzx + dp3 r19.z, r24.xyzx, r24.xyzx + rsq r19.w, r19.z + mul r25.xyz, r19.wwww, r24.xyzx + ftoi r20.w, cb5[r14.w + 6].w + mul r26.xyz, r18.xyzx, cb5[r13.w + 6].zzzz + mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx + mad r28.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx + ftou r21.w, cb5[r17.w + 6].w + and r21.w, r21.w, l(1) + ieq r22.w, r21.w, l(0) + not r22.w, r22.w + lt r23.z, l(0.000000), cb5[r13.w + 6].z + and r22.w, r22.w, r23.z + dp3 r23.z, r27.xyzx, r27.xyzx + sqrt r23.z, r23.z + dp3 r24.w, r28.xyzx, r28.xyzx + sqrt r24.w, r24.w + dp3 r25.w, r5.xyzx, r27.xyzx + div r25.w, r25.w, r23.z + dp3 r26.w, r5.xyzx, r28.xyzx + div r26.w, r26.w, r24.w + add r25.w, r25.w, r26.w + mul_sat r29.x, r25.w, l(0.500000) + dp3 r25.w, r27.xyzx, r28.xyzx + mad r23.z, r23.z, r24.w, r25.w + mad r23.z, r23.z, l(0.500000), l(1.000000) + div r29.y, l(1.000000, 1.000000, 1.000000, 1.000000), r23.z + dp3_sat r19.x, r5.xyzx, r25.xyzx + movc r20.xy, r22.wwww, r29.xyxx, r19.xyxx + lt r19.x, cb5[r23.w + 6].w, l(0.000000) + if_nz r19.x + mul r19.x, cb5[r23.x + 6].w, cb5[r23.x + 6].w + mul r19.x, r19.x, r19.z + mad r19.x, -r19.x, r19.x, l(1.000000) + max r19.x, r19.x, l(0.000000) + add r19.z, r19.z, l(1.000000) + div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z + and r23.z, r22.w, l(0x3f800000) + add r24.w, -r19.z, r20.y + mad r19.z, r23.z, r24.w, r19.z + mul r19.x, r19.x, r19.x + mul r19.x, r19.x, r19.z + else + mul r28.xyz, r24.xyzx, cb5[r23.x + 6].wwww + dp3 r19.z, r28.xyzx, r28.xyzx + min r19.z, r19.z, l(1.000000) + add r19.z, -r19.z, l(1.000000) + log r19.z, r19.z + mul r19.z, r19.z, cb5[r23.w + 6].w + exp r19.z, r19.z + mul r19.x, r19.z, r20.y + endif + dp3 r18.x, r25.xyzx, -r18.xyzx + add r18.x, r18.x, -cb5[r13.w + 6].z + mul_sat r18.x, r18.x, cb5[r13.w + 6].w + mul r18.x, r18.x, r18.x + movc r18.x, r21.w, l(1.000000), r18.x + mul r18.x, r18.x, r19.x + not r18.y, r22.w + ige r18.z, r20.w, l(0) + and r18.y, r18.z, r18.y + if_nz r18.y + if_z r21.w + ishl r18.y, r20.w, l(2) + mul r28.xyz, r0.yyyy, cb7[r18.y + 33].xywx + mad r28.xyz, cb7[r18.y + 32].xywx, r0.xxxx, r28.xyzx + mad r28.xyz, cb7[r18.y + 34].xywx, r0.zzzz, r28.xyzx + add r28.xyz, r28.xyzx, cb7[r18.y + 35].xywx + div_sat r18.yz, r28.xxyx, r28.zzzz + mad r18.yz, r18.yyzy, cb7[r20.w + 0].zzwz, cb7[r20.w + 0].xxyx + else + ishl r19.x, r20.w, l(2) + dp3 r28.x, -r24.xyzx, cb7[r19.x + 32].xyzx + dp3 r28.y, -r24.xyzx, cb7[r19.x + 33].xyzx + dp3 r28.z, -r24.xyzx, cb7[r19.x + 34].xyzx + lt r19.x, |r28.x|, |r28.y| + and r19.x, r19.x, l(1) + dp2 r19.z, |r28.xyxx|, icb[r19.x + 0].xyxx + lt r19.z, r19.z, |r28.z| + movc r19.x, r19.z, l(2), r19.x + dp3 r19.z, r28.xyzx, icb[r19.x + 0].xyzx + lt r19.z, r19.z, l(0.000000) + bfi r19.x, l(31), l(1), r19.x, r19.z + ushr r19.z, r19.x, l(1) + dp3 r19.z, r28.xyzx, icb[r19.z + 0].xyzx + div r20.y, l(0.000244140625), cb7[r20.w + 0].w + add r20.y, -r20.y, l(0.500000) + utof r23.z, r19.x + ult r24.x, r19.x, l(2) + and r24.x, r24.x, l(2) + dp2 r24.x, r28.xzxx, icb[r24.x + 0].xzxx + mul r24.x, r24.x, icb[r19.x + 4].z + div r24.x, r24.x, |r19.z| + mad r23.z, r24.x, r20.y, r23.z + add r23.z, r23.z, l(0.500000) + mul_sat r24.x, r23.z, l(0.166666672) + iadd r23.z, l(-1), icb[r19.x + 4].y + dp2 r23.z, r28.yzyy, icb[r23.z + 0].xyxx + mul r19.x, r23.z, icb[r19.x + 4].w + div r19.x, r19.x, |r19.z| + mad_sat r24.y, -r19.x, r20.y, l(0.500000) + mad r18.yz, r24.xxyx, cb7[r20.w + 0].zzwz, cb7[r20.w + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r18.y, r18.yzyy, t18.yxzw, s0, l(0.000000) + mul r18.x, r18.y, r18.x + endif + lt r18.y, l(0.000000), r18.x + if_nz r18.y + if_z r21.w + ftoi r18.z, cb5[r23.y + 6].x + else + add r24.xyz, r0.xyzx, -cb5[r23.x + 6].xyzx + lt r28.xyz, |r24.yzzy|, |r24.xxyx| + and r19.x, r28.y, r28.x + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ushr r19.z, cb5[r13.w + 6].w, l(24) + ubfe r20.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb5[r13.w + 6].wwww + movc r19.z, r24.x, r19.z, r20.y + and r20.y, l(255), cb5[r13.w + 6].w + movc r20.y, r24.y, r20.w, r20.y + ubfe r20.w, l(8), l(8), cb5[r23.y + 6].x + and r21.w, l(255), cb5[r23.y + 6].x + movc r20.w, r24.z, r20.w, r21.w + movc r20.y, r28.z, r20.y, r20.w + movc r19.x, r19.x, r19.z, r20.y + ilt r19.z, r19.x, l(80) + movc r18.z, r19.z, r19.x, l(-1) + endif + mad r24.xyz, r25.xyzx, cb6[r18.z + 288].xxxx, r0.xyzx + mul r19.x, l(5.000000), cb6[r18.z + 288].y + mad r24.xyz, r5.xyzx, r19.xxxx, r24.xyzx + ishl r19.x, r18.z, l(2) + mul r28.xyzw, r24.yyyy, cb6[r19.x + 65].xyzw + mad r28.xyzw, cb6[r19.x + 64].xyzw, r24.xxxx, r28.xyzw + mad r24.xyzw, cb6[r19.x + 66].xyzw, r24.zzzz, r28.xyzw + add r24.xyzw, r24.xyzw, cb6[r19.x + 67].xyzw + div r24.xyz, r24.xyzx, r24.wwww + ge r28.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx + ge r29.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r19.xz, -cb6[r18.z + 344].xxyx, cb6[r18.z + 344].zzwz + mad r19.xz, r24.xxyx, r19.xxzx, cb6[r18.z + 344].xxyx + mad r20.yw, r19.xxxz, cb6[400].zzzw, l(0.000000, 0.500000, 0.000000, 0.500000) + round_ni r20.yw, r20.yyyw + mad r19.xz, r19.xxzx, cb6[400].zzwz, -r20.yywy + add r30.xyzw, r19.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r31.xyzw, r30.xxzz, r30.xxzz + add r24.xy, -r19.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) + min r30.xz, r19.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r32.xy, r19.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r33.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r32.xy, -r32.xyxx, r32.xyxx, r30.ywyy + add r32.xy, r32.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r32.xy, r32.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r31.xz, r31.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r19.xz, r31.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r19.xxzx + mul r34.xy, r19.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r19.xz, -r30.xxzx, r30.xxzx, r24.xxyx + add r19.xz, r19.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r35.xy, r19.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r19.xz, r30.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) + mov r34.z, r35.x + mov r34.w, r19.x + mov r33.z, r32.x + mov r33.w, r31.x + add r30.xyzw, r33.zwxz, r34.zwxz + mov r35.z, r34.y + mov r35.w, r19.z + mov r32.z, r33.y + mov r32.w, r31.z + add r24.xyw, r32.zyzw, r35.zyzw + div r31.xyz, r33.xzwx, r30.zwyz + add r31.xyz, r31.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r31.xyz, r31.xyzx, cb6[400].xxxx + div r32.xyz, r32.zywz, r24.xywx + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyw, r32.xyxz, cb6[400].yyyy + mul r33.xyzw, r24.xxxy, r30.zwyz + mov r31.w, r32.x + mad r34.xyzw, r20.ywyw, cb6[400].xyxy, r31.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r34.xyxx, t6.xxxx, s3, r24.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r34.zwzz, t6.xxxx, s3, r24.z + mul r19.z, r19.z, r33.y + mad r19.x, r33.x, r19.x, r19.z + mad r33.xy, r20.ywyy, cb6[400].xyxx, r31.zwzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r33.xyxx, t6.xxxx, s3, r24.z + mad r19.x, r33.z, r19.z, r19.x + mov r32.z, r31.x + mad r34.xyzw, r20.ywyw, cb6[400].xyxy, r32.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r34.xyxx, t6.xxxx, s3, r24.z + mad r19.x, r33.w, r19.z, r19.x + mul r33.xyzw, r24.yyww, r30.xyzw + mov r32.xz, r31.yyzy + mad r31.xyzw, r20.ywyw, cb6[400].xyxy, r32.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r31.xyxx, t6.xxxx, s3, r24.z + mad r19.x, r33.x, r19.z, r19.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r31.zwzz, t6.xxxx, s3, r24.z + mad r19.x, r33.y, r19.z, r19.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r34.zwzz, t6.xxxx, s3, r24.z + mad r19.x, r33.z, r19.z, r19.x + ige r19.z, r18.z, l(0) + or r28.xyz, r28.xyzx, r29.xyzx + or r21.w, r28.y, r28.x + or r21.w, r28.z, r21.w + and r23.z, r24.z, l(0x7fffffff) + ult r23.z, l(0x7f800000), r23.z + or r21.w, r21.w, r23.z + mad r28.xyzw, r20.ywyw, cb6[400].xyxy, r32.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.y, r28.xyxx, t6.xxxx, s3, r24.z + mad r19.x, r33.w, r20.y, r19.x + mul r20.y, r24.w, r30.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r28.zwzz, t6.xxxx, s3, r24.z + mad r19.x, r20.y, r20.w, r19.x + add r19.x, r19.x, l(-1.000000) + mad r18.z, cb6[r18.z + 288].w, r19.x, l(1.000000) + movc r18.z, r21.w, l(1.000000), r18.z + movc r18.z, r19.z, r18.z, l(1.000000) + else + mov r18.z, l(1.000000) + endif + if_nz r22.w + dp3 r19.x, r12.xyzx, r26.xyzx + mul_sat r19.z, r19.w, cb5[r13.w + 6].z + mad r19.z, r19.z, l(0.500000), r3.w + min r19.z, r19.z, l(1.000000) + div r19.z, r3.w, r19.z + mad r24.xyz, r12.xyzx, r19.xxxx, -r26.xyzx + dp3 r20.y, r27.xyzx, r24.xyzx + mul r19.x, r19.x, r19.x + mad r19.x, cb5[r13.w + 6].z, cb5[r13.w + 6].z, -r19.x + div_sat r19.x, r20.y, r19.x + mad r24.xyz, r26.xyzx, r19.xxxx, r27.xyzx + dp3 r19.x, r24.xyzx, r24.xyzx + rsq r19.x, r19.x + mul r25.xyz, r19.xxxx, r24.xyzx + else + mov r19.z, l(1.000000) + endif + if_nz r18.y + mul_sat r18.y, r19.w, cb5[r14.w + 6].y + mad r24.xyz, r1.yzwy, r2.yyyy, r25.xyzx + dp3 r19.x, r24.xyzx, r24.xyzx + max r19.x, r19.x, l(0.0000610351562) + rsq r19.x, r19.x + mul r24.xyz, r19.xxxx, r24.xyzx + dp3_sat r19.x, r5.xyzx, r24.xyzx + dp3_sat r19.w, r4.xyzx, r24.xyzx + lt r20.y, l(0.000000), r18.y + mul r18.y, r18.y, r18.y + mad r20.w, r19.w, l(3.600000), l(0.400000) + div r18.y, r18.y, r20.w + mad r18.y, r9.w, r9.w, r18.y + min r18.y, r18.y, l(1.000000) + movc r18.y, r20.y, r18.y, r3.w + mul r18.y, r18.y, r18.y + mad r20.y, r19.x, r18.y, -r19.x + mad r19.x, r20.y, r19.x, l(1.000000) + add r19.w, -r19.w, l(1.000000) + mul r20.y, r19.w, r19.w + mul r20.y, r20.y, r20.y + mul r20.w, r19.w, r20.y + mad r19.w, -r20.y, r19.w, l(1.000000) + mad r24.xyz, r6.xyzx, r19.wwww, r20.wwww + mul r19.x, r19.x, r19.x + div r19.x, r18.y, r19.x + mul r19.x, r19.z, r19.x + mad r19.z, -r9.x, r18.y, r9.x + mad r19.z, r19.z, r9.x, r18.y + sqrt r19.z, r19.z + mad r19.w, -r20.x, r18.y, r20.x + mad r18.y, r19.w, r20.x, r18.y + sqrt r18.y, r18.y + mul r18.y, r9.x, r18.y + mad r18.y, r20.x, r19.z, r18.y + add r18.y, r18.y, l(0.000100) + div r18.y, l(0.500000), r18.y + mul r18.y, r18.y, r19.x + mul r19.xzw, r18.yyyy, r24.xxyz + min r19.xzw, r19.xxzw, l(2048.000000, 0.000000, 2048.000000, 2048.000000) + mad r20.yw, r20.xxxz, l(0.000000, 0.968750, 0.000000, 0.968750), l(0.000000, 0.015625, 0.000000, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r18.y, r20.ywyy, t10.yxzw, s0, l(0.000000) + mul r18.y, r5.w, r18.y + mul r18.y, r1.x, r18.y + div r18.y, r18.y, r4.w + mul r24.xyz, r16.xyzx, r18.yyyy + div r24.xyz, r24.xyzx, r17.xyzx + add r19.xzw, r19.xxzw, r24.xxyz + mul r19.xzw, r19.xxzw, cb5[r14.w + 6].zzzz + max r19.xzw, r19.xxzw, l(0.000000, 0.000000, 0.000000, 0.000000) + min r19.xzw, r19.xxzw, l(1000.000000, 0.000000, 1000.000000, 1000.000000) + mul r24.xyz, r7.xywx, r20.xxxx + mad r19.xzw, r19.xxzw, r20.xxxx, r24.xxyz + mul r20.xyw, r18.xxxx, cb5[r17.w + 6].xyxz + mul r18.xyz, r18.zzzz, r20.xywx + mul r18.xyz, r15.wwww, r18.xyzx + mul r18.xyz, r18.xyzx, r19.xzwx + else + mov r18.xyz, l(0,0,0,0) + endif + else + if_z r16.w + mad r15.w, cb5[r13.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r15.w, -|cb5[r13.w + 6].x| + add r24.y, -r24.x, cb5[r13.w + 6].y + add r15.w, -|r24.x|, l(1.000000) + add r15.w, -|r24.y|, r15.w + max r15.w, r15.w, l(0.000488281250) + ge r16.w, cb5[r13.w + 6].x, l(0.000000) + movc r24.z, r16.w, r15.w, -r15.w + dp3 r15.w, r24.xyzx, r24.xyzx + rsq r15.w, r15.w + mul r19.xzw, r15.wwww, r24.xxyz + add r20.xyw, -r0.xyxz, cb5[r23.x + 6].xyxz + dp3 r15.w, r20.xywx, r20.xywx + rsq r16.w, r15.w + mul r24.xyz, r16.wwww, r20.xywx + ftoi r14.w, cb5[r14.w + 6].w + mul r25.xyz, r19.xzwx, cb5[r13.w + 6].zzzz + mad r26.xyz, -r25.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r20.xywx + mad r25.xyz, r25.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r20.xywx + ftou r16.w, cb5[r17.w + 6].w + and r16.w, r16.w, l(1) + ieq r17.w, r16.w, l(0) + not r17.w, r17.w + lt r21.w, l(0.000000), cb5[r13.w + 6].z + and r17.w, r17.w, r21.w + dp3 r21.w, r26.xyzx, r26.xyzx + sqrt r21.w, r21.w + dp3 r22.w, r25.xyzx, r25.xyzx + sqrt r22.w, r22.w + dp3 r23.z, r26.xyzx, r25.xyzx + mad r21.w, r21.w, r22.w, r23.z + mad r21.w, r21.w, l(0.500000), l(1.000000) + div r21.w, l(1.000000, 1.000000, 1.000000, 1.000000), r21.w + movc r21.w, r17.w, r21.w, l(1.000000) + lt r22.w, cb5[r23.w + 6].w, l(0.000000) + if_nz r22.w + mul r22.w, cb5[r23.x + 6].w, cb5[r23.x + 6].w + mul r22.w, r15.w, r22.w + mad r22.w, -r22.w, r22.w, l(1.000000) + max r22.w, r22.w, l(0.000000) + add r15.w, r15.w, l(1.000000) + div r15.w, l(1.000000, 1.000000, 1.000000, 1.000000), r15.w + and r23.z, r17.w, l(0x3f800000) + add r24.w, -r15.w, r21.w + mad r15.w, r23.z, r24.w, r15.w + mul r22.w, r22.w, r22.w + mul r15.w, r15.w, r22.w + else + mul r25.xyz, r20.xywx, cb5[r23.x + 6].wwww + dp3 r22.w, r25.xyzx, r25.xyzx + min r22.w, r22.w, l(1.000000) + add r22.w, -r22.w, l(1.000000) + log r22.w, r22.w + mul r22.w, r22.w, cb5[r23.w + 6].w + exp r22.w, r22.w + mul r15.w, r21.w, r22.w + endif + dp3 r19.x, r24.xyzx, -r19.xzwx + add r19.x, r19.x, -cb5[r13.w + 6].z + mul_sat r19.x, r19.x, cb5[r13.w + 6].w + mul r19.x, r19.x, r19.x + movc r19.x, r16.w, l(1.000000), r19.x + mul r15.w, r15.w, r19.x + not r17.w, r17.w + ige r19.x, r14.w, l(0) + and r17.w, r17.w, r19.x + if_nz r17.w + if_z r16.w + ishl r17.w, r14.w, l(2) + mul r19.xzw, r0.yyyy, cb7[r17.w + 33].xxyw + mad r19.xzw, cb7[r17.w + 32].xxyw, r0.xxxx, r19.xxzw + mad r19.xzw, cb7[r17.w + 34].xxyw, r0.zzzz, r19.xxzw + add r19.xzw, r19.xxzw, cb7[r17.w + 35].xxyw + div_sat r19.xz, r19.xxzx, r19.wwww + mad r19.xz, r19.xxzx, cb7[r14.w + 0].zzwz, cb7[r14.w + 0].xxyx + else + ishl r17.w, r14.w, l(2) + dp3 r25.x, -r20.xywx, cb7[r17.w + 32].xyzx + dp3 r25.y, -r20.xywx, cb7[r17.w + 33].xyzx + dp3 r25.z, -r20.xywx, cb7[r17.w + 34].xyzx + lt r17.w, |r25.x|, |r25.y| + and r17.w, r17.w, l(1) + dp2 r19.w, |r25.xyxx|, icb[r17.w + 0].xyxx + lt r19.w, r19.w, |r25.z| + movc r17.w, r19.w, l(2), r17.w + dp3 r19.w, r25.xyzx, icb[r17.w + 0].xyzx + lt r19.w, r19.w, l(0.000000) + bfi r17.w, l(31), l(1), r17.w, r19.w + ushr r19.w, r17.w, l(1) + dp3 r19.w, r25.xyzx, icb[r19.w + 0].xyzx + div r20.x, l(0.000244140625), cb7[r14.w + 0].w + add r20.x, -r20.x, l(0.500000) + utof r20.y, r17.w + ult r20.w, r17.w, l(2) + and r20.w, r20.w, l(2) + dp2 r20.w, r25.xzxx, icb[r20.w + 0].xzxx + mul r20.w, r20.w, icb[r17.w + 4].z + div r20.w, r20.w, |r19.w| + mad r20.y, r20.w, r20.x, r20.y + add r20.y, r20.y, l(0.500000) + mul_sat r26.x, r20.y, l(0.166666672) + iadd r20.y, l(-1), icb[r17.w + 4].y + dp2 r20.y, r25.yzyy, icb[r20.y + 0].xyxx + mul r17.w, r20.y, icb[r17.w + 4].w + div r17.w, r17.w, |r19.w| + mad_sat r26.y, -r17.w, r20.x, l(0.500000) + mad r19.xz, r26.xxyx, cb7[r14.w + 0].zzwz, cb7[r14.w + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r14.w, r19.xzxx, t18.yzwx, s0, l(0.000000) + mul r15.w, r14.w, r15.w + endif + lt r14.w, l(0.000000), r15.w + if_nz r14.w + if_z r16.w + ftoi r14.w, cb5[r23.y + 6].x + else + add r19.xzw, r0.xxyz, -cb5[r23.x + 6].xxyz + lt r20.xyw, |r19.zwzw|, |r19.xxxz| + and r15.w, r20.y, r20.x + lt r19.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxzw + ushr r16.w, cb5[r13.w + 6].w, l(24) + ubfe r20.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r13.w + 6].wwww + movc r16.w, r19.x, r16.w, r20.x + and r13.w, l(255), cb5[r13.w + 6].w + movc r13.w, r19.z, r20.y, r13.w + ubfe r17.w, l(8), l(8), cb5[r23.y + 6].x + and r19.x, l(255), cb5[r23.y + 6].x + movc r17.w, r19.w, r17.w, r19.x + movc r13.w, r20.w, r13.w, r17.w + movc r13.w, r15.w, r16.w, r13.w + ilt r15.w, r13.w, l(80) + movc r14.w, r15.w, r13.w, l(-1) + endif + mad r19.xzw, r24.xxyz, cb6[r14.w + 288].xxxx, r0.xxyz + mul r13.w, l(5.000000), cb6[r14.w + 288].y + mad r19.xzw, r5.xxyz, r13.wwww, r19.xxzw + ishl r13.w, r14.w, l(2) + mul r23.xyzw, r19.zzzz, cb6[r13.w + 65].xyzw + mad r23.xyzw, cb6[r13.w + 64].xyzw, r19.xxxx, r23.xyzw + mad r23.xyzw, cb6[r13.w + 66].xyzw, r19.wwww, r23.xyzw + add r23.xyzw, r23.xyzw, cb6[r13.w + 67].xyzw + div r19.xzw, r23.xxyz, r23.wwww + ge r20.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xzxw + ge r23.xyz, r19.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r24.xy, -cb6[r14.w + 344].xyxx, cb6[r14.w + 344].zwzz + mad r19.xz, r19.xxzx, r24.xxyx, cb6[r14.w + 344].xxyx + mad r24.xy, r19.xzxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r24.xy, r24.xyxx + mad r19.xz, r19.xxzx, cb6[400].zzwz, -r24.xxyx + add r25.xyzw, r19.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r26.xyzw, r25.xxzz, r25.xxzz + add r24.zw, -r19.xxxz, l(0.000000, 0.000000, 1.000000, 1.000000) + min r25.xz, r19.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r27.xy, r19.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r28.xy, r24.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r27.xy, -r27.xyxx, r27.xyxx, r25.ywyy + add r27.xy, r27.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r27.xy, r27.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r26.xz, r26.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r19.xz, r26.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r19.xxzx + mul r29.xy, r19.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r19.xz, -r25.xxzx, r25.xxzx, r24.zzwz + add r19.xz, r19.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r30.xy, r19.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r19.xz, r25.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) + mov r29.z, r30.x + mov r29.w, r19.x + mov r28.z, r27.x + mov r28.w, r26.x + add r25.xyzw, r28.zwxz, r29.zwxz + mov r30.z, r29.y + mov r30.w, r19.z + mov r27.z, r28.y + mov r27.w, r26.z + add r26.xyz, r27.zywz, r30.zywz + div r28.xyz, r28.xzwx, r25.zwyz + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyz, r28.xyzx, cb6[400].xxxx + div r27.xyz, r27.zywz, r26.xyzx + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyw, r27.xyxz, cb6[400].yyyy + mul r29.xyzw, r25.zwyz, r26.xxxy + mov r28.w, r27.x + mad r30.xyzw, r24.xyxy, cb6[400].xyxy, r28.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r13.w, r30.xyxx, t6.xxxx, s3, r19.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r30.zwzz, t6.xxxx, s3, r19.w + mul r15.w, r15.w, r29.y + mad r13.w, r29.x, r13.w, r15.w + mad r19.xz, r24.xxyx, cb6[400].xxyx, r28.zzwz + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r19.xzxx, t6.xxxx, s3, r19.w + mad r13.w, r29.z, r15.w, r13.w + mov r27.z, r28.x + mad r30.xyzw, r24.xyxy, cb6[400].xyxy, r27.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r30.xyxx, t6.xxxx, s3, r19.w + mad r13.w, r29.w, r15.w, r13.w + mul r29.xyzw, r25.xyzw, r26.yyzz + mov r27.xz, r28.yyzy + mad r28.xyzw, r24.xyxy, cb6[400].xyxy, r27.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r28.xyxx, t6.xxxx, s3, r19.w + mad r13.w, r29.x, r15.w, r13.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r28.zwzz, t6.xxxx, s3, r19.w + mad r13.w, r29.y, r15.w, r13.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r30.zwzz, t6.xxxx, s3, r19.w + mad r13.w, r29.z, r15.w, r13.w + ige r15.w, r14.w, l(0) + or r20.xyw, r20.xyxw, r23.xyxz + or r16.w, r20.y, r20.x + or r16.w, r20.w, r16.w + and r17.w, r19.w, l(0x7fffffff) + ult r17.w, l(0x7f800000), r17.w + or r16.w, r16.w, r17.w + mad r23.xyzw, r24.xyxy, cb6[400].xyxy, r27.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r23.xyxx, t6.xxxx, s3, r19.w + mad r13.w, r29.w, r17.w, r13.w + mul r17.w, r25.y, r26.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r23.zwzz, t6.xxxx, s3, r19.w + mad r13.w, r17.w, r19.x, r13.w + add r13.w, r13.w, l(-1.000000) + mad r13.w, cb6[r14.w + 288].w, r13.w, l(1.000000) + movc r13.w, r16.w, l(1.000000), r13.w + movc r13.w, r15.w, r13.w, l(1.000000) + else + mov r13.w, l(1.000000) + endif + else + mov r13.w, l(1.000000) + endif + mul r10.w, r10.w, r13.w + mov r18.xyz, l(0,0,0,0) + endif + add r22.xyz, r18.xyzx, r22.xyzx + mov r12.w, r14.z + endloop + mov r6.w, r10.w + add r21.xyz, r21.xyzx, r22.xyzx + iadd r7.z, r7.z, l(1) +endloop +dp3 r0.x, r13.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r1.xyz, -r0.xxxx, r13.xyzx +mad r0.xzw, cb0[184].wwww, r1.xxyz, r0.xxxx +mad r1.xyz, r21.xyzx, r6.wwww, r15.xyzx +mad r0.xzw, r0.xxzw, cb0[184].xxyz, r1.xxyz +mad r1.x, r0.y, cb0[156].w, cb0[157].w +mad r1.y, r2.x, cb0[154].w, -cb0[153].w +max r1.xy, r1.xyxx, l(0.010000, 0.000000, 0.000000, 0.000000) +mul r1.z, r1.x, l(-1.442695) +exp r1.z, r1.z +add r1.z, -r1.z, l(1.000000) +div r1.x, r1.z, r1.x +mad r1.z, r0.y, cb0[156].w, cb0[158].w +mul r1.z, r1.z, l(1.442695) +exp r1.z, r1.z +mul r1.x, r1.z, r1.x +mul r1.x, r1.x, -r1.y +mul r1.xyz, r1.xxxx, cb0[155].xyzx +mul r1.xyz, r1.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r1.xyz, r1.xyzx +dp3 r1.w, -r4.xyzx, cb0[154].xyzx +mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r1.wwww, cb0[155].wwww +add r2.y, -r2.z, r2.y +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r11.w, l(7), cb0[108].w + imad r5.xyz, r11.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r2.z, r5.y, r5.z, r5.x + imad r2.w, r5.z, r2.z, r5.y + imad r3.w, r2.z, r2.w, r5.z + imad r5.x, r2.w, r3.w, r2.z + dp3 r2.z, -r4.xyzx, -r3.xyzx + add r3.x, r0.y, -cb0[44].y + lt r3.y, l(5.960464478E-08), r2.z + div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z + and r2.z, r2.z, r3.y + mul r2.z, r2.z, cb0[163].w + div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r2.x + mul r3.z, r2.z, r3.y + mad r4.x, r3.z, r3.x, cb0[44].y + mad r3.x, -r3.z, r3.x, r3.x + mul r3.z, r3.x, cb0[159].z + mul r3.x, r3.x, cb0[162].x + max r3.xz, r3.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + add r4.y, r4.x, -cb0[159].x + mul r4.y, r4.y, cb0[159].z + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[159].y + lt r4.z, l(5.960464478E-08), |r3.z| + exp r4.w, -r3.z + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.z + mad r3.z, -r3.z, l(0.240226507), l(0.693147182) + movc r3.z, r4.z, r4.w, r3.z + add r4.x, r4.x, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.z, l(5.960464478E-08), |r3.x| + exp r4.w, -r3.x + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.x + mad r3.x, -r3.x, l(0.240226507), l(0.693147182) + movc r3.x, r4.z, r4.w, r3.x + mul r3.x, r3.x, r4.x + mad r3.x, r4.y, r3.z, r3.x + mad r2.z, -r2.z, r3.y, l(1.000000) + mul r2.z, r2.x, r2.z + mul r2.z, r2.z, r3.x + exp r2.z, -r2.z + min r2.z, r2.z, l(1.000000) + max r2.z, r2.z, cb0[161].w + mad_sat r3.xy, r2.xxxx, cb0[160].ywyy, cb0[160].xzxx + add r2.z, r2.z, r3.x + add r2.z, r3.y, r2.z + min r2.z, r2.z, l(1.000000) + imad r5.y, r3.w, r5.x, r2.w + ushr r3.xy, r5.xyxx, l(16, 16, 0, 0) + utof r3.xy, r3.xyxx + mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb0[167].wwww, r14.xyxx + mul r3.xy, r3.xyxx, cb0[165].xyxx + mad r2.w, r11.z, cb0[164].x, cb0[164].y + log r2.w, r2.w + mul r2.w, r2.w, cb0[164].z + div r3.z, r2.w, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t17.xyzw, s0, l(0.000000) + add r2.w, r11.z, -cb0[166].z + mul_sat r2.w, r2.w, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r2.wwww, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r2.w, -r2.z, l(1.000000) + mul r4.xyz, r2.wwww, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r2.z, r2.z, r3.w +else + add r0.y, r0.y, -cb0[44].y + mul r2.w, r0.y, cb0[159].z + max r2.w, r2.w, l(-127.000000) + mul r0.y, r0.y, cb0[162].x + max r0.y, r0.y, l(-127.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r2.w| + exp r4.y, -r2.w + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r4.x, r4.y, r2.w + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r0.y| + exp r4.z, -r0.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r0.y + mad r0.y, -r0.y, l(0.240226507), l(0.693147182) + movc r0.y, r4.y, r4.z, r0.y + mul r0.y, r0.y, r4.x + mad r0.y, r3.w, r2.w, r0.y + mul r0.y, r2.x, r0.y + exp r0.y, -r0.y + min r0.y, r0.y, l(1.000000) + max r0.y, r0.y, cb0[161].w + mad_sat r2.xw, r2.xxxx, cb0[160].yyyw, cb0[160].xxxz + add r0.y, r0.y, r2.x + add r0.y, r2.w, r0.y + min r2.z, r0.y, l(1.000000) + add r0.y, -r2.z, l(1.000000) + mul r3.xyz, r0.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r1.xyzx, r2.zzzz +mad r0.y, r1.w, r1.w, l(1.000000) +mul r0.y, r0.y, l(0.0596831031) +mad r5.xyz, cb0[156].xyzx, r0.yyyy, cb0[158].xyzx +mad r0.y, -cb0[155].w, cb0[155].w, l(1.000000) +mul r1.w, r2.y, l(12.566371) +sqrt r2.x, r2.y +mul r1.w, r1.w, r2.x +max r1.w, r1.w, l(0.001000) +div r0.y, r0.y, r1.w +mad_sat r2.xyw, cb0[157].xyxz, r0.yyyy, r5.xyxz +mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) +add r1.xyz, -r1.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r1.xyz, r1.xyzx, r2.xywx +mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx +mad r8.xyz, r0.xzwx, r4.xyzx, r1.xyzx +mul r0.xy, r10.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r0.xy, |r0.xyxx| +sqrt r0.xy, r0.xyxx +mov r10.z, -r10.y +lt r0.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r10.xxxz +lt r1.xy, r10.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r0.zw, -r0.zzzw, r1.xxxy +itof r0.zw, r0.zzzw +mul r0.xy, r0.zwzz, r0.xyxx +mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +ishl r0.z, v7.x, l(4) +max r0.z, cb1[r0.z + 4].z, cb1[r0.z + 4].y +add r0.z, r0.z, l(-0.100000024) +lt r0.w, l(0.000000), r0.z +lt r0.z, r0.z, l(0.000000) +iadd r0.z, -r0.w, r0.z +itof r0.z, r0.z +mov_sat r0.z, r0.z +add r1.xy, -r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mad r0.xy, r0.zzzz, r1.xyxx, r0.xyxx +min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) +dp3 r0.x, r8.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mul r0.x, r8.w, r0.x +max r0.x, r8.w, r0.x +mul_sat r0.x, r0.x, l(10.000000) +lt r0.x, l(0.500000), r0.x +and o1.z, r0.x, l(0x3f800000) +mov o0.xyzw, r8.xyzw +mov o1.w, l(0) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0xB8941FB1.cso b/src/games/endfield/glass/0xB8941FB1.cso new file mode 100644 index 0000000000000000000000000000000000000000..d6a46615aa30f787215cc4667f6304ece6a46270 GIT binary patch literal 55376 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/glass/0xB8941FB1.ps_5_0.asm b/src/games/endfield/glass/0xB8941FB1.ps_5_0.asm new file mode 100644 index 0000000000..a642a82e42 --- /dev/null +++ b/src/games/endfield/glass/0xB8941FB1.ps_5_0.asm @@ -0,0 +1,1804 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Wed Feb 4 07:24:18 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xyz +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 zw 1 NONE float zw +// TEXCOORD 2 xyz 2 NONE float xyz +// TEXCOORD 3 xyzw 3 NONE float xyzw +// TEXCOORD 4 xyzw 4 NONE float x +// TEXCOORD 5 xyz 5 NONE float xyz +// TEXCOORD 6 xyz 6 NONE float xyz +// TEXCOORD 7 x 7 NONE uint x +// SV_IsFrontFace 0 x 8 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[244], immediateIndexed +dcl_constantbuffer CB1[4096], dynamicIndexed +dcl_constantbuffer CB2[24], immediateIndexed +dcl_constantbuffer CB3[259], dynamicIndexed +dcl_constantbuffer CB4[3], immediateIndexed +dcl_constantbuffer CB5[2054], dynamicIndexed +dcl_constantbuffer CB6[715], dynamicIndexed +dcl_constantbuffer CB7[160], dynamicIndexed +dcl_constantbuffer CB13[15], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_comparison +dcl_sampler s4, mode_default +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2darray (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2d (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture3d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture2d (float,float,float,float) t18 +dcl_input_ps_siv linear noperspective v0.xyz, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v1.zw +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyzw +dcl_input_ps linear v4.x +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps constant v7.x +dcl_input_ps_sgv constant v8.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 40 +mul r0.xy, v0.xyxx, cb0[82].zwzz +mad r0.zw, r0.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +mul r1.xyzw, -r0.wwww, cb0[25].xyzw +mad r1.xyzw, cb0[24].xyzw, r0.zzzz, r1.xyzw +mad r1.xyzw, cb0[26].xyzw, v0.zzzz, r1.xyzw +add r1.xyzw, r1.xyzw, cb0[27].xyzw +div r1.xyz, r1.xyzx, r1.wwww +lt r0.z, l(0.000000), v3.w +movc r0.z, r0.z, l(1.000000), l(-1.000000) +eq r0.w, l(0.000000), cb0[86].w +add r2.xyz, -r1.xyzx, cb0[44].xyzx +mov r3.x, cb0[0].z +mov r3.y, cb0[1].z +mov r3.z, cb0[2].z +movc r2.xyz, r0.wwww, r2.xyzx, r3.xyzx +dp3 r0.w, r2.xyzx, r2.xyzx +max r2.w, r0.w, l(9.999999939E-09) +rsq r2.w, r2.w +mul r4.xyz, r2.wwww, r2.xyzx +mul r0.w, r0.w, r2.w +add r5.xy, -v1.xyxx, v1.zwzz +mad r5.zw, cb2[2].wwww, r5.xxxy, v1.xxxy +mad r5.zw, r5.zzzw, cb2[11].xxxy, cb2[11].zzzw +sample_b_indexable(texture2d)(float,float,float,float) r6.xyzw, r5.zwzz, t2.xyzw, s4, cb0[108].x +mad r5.xy, cb2[3].xxxx, r5.xyxx, v1.xyxx +mad r5.xy, r5.xyxx, cb2[12].xyxx, cb2[12].zwzz +add r3.w, cb0[108].x, cb2[3].y +sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, r5.xyxx, t3.xyzw, s5, r3.w +mad r5.xy, r5.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +lt r7.xy, |r5.xyxx|, l(0.012000, 0.012000, 0.000000, 0.000000) +movc r5.xy, r7.xyxx, l(0,0,0,0), r5.xyxx +mul r7.xy, r5.xyxx, cb2[0].xxxx +add r7.zw, -r6.wwww, r5.wwwz +mad r3.w, cb2[1].z, r7.z, r6.w +mul r3.w, r3.w, cb2[8].w +mad r4.w, r3.w, v4.x, -r3.w +mad r8.w, cb2[23].x, r4.w, r3.w +add r3.w, -cb2[0].z, cb2[0].w +mad r9.w, r5.z, r3.w, cb2[0].z +add_sat r3.w, l(-1.000000), cb2[3].w +add r4.w, -r6.w, cb2[4].y +mad r3.w, r3.w, r4.w, r6.w +mov_sat r4.w, cb2[21].y +add_sat r10.xy, l(-1.000000, -2.000000, 0.000000, 0.000000), cb2[21].yyyy +mad r5.z, r10.x, r7.w, r6.w +add r6.w, -r5.z, r5.w +mad r5.z, r10.y, r6.w, r5.z +add r5.z, r5.z, l(-1.000000) +mad r5.z, r4.w, r5.z, l(1.000000) +mad_sat r5.z, r5.z, l(1.11111116), l(-0.0555555597) +ishl r6.w, v7.x, l(4) +ge r7.z, r5.z, l(0.100000) +and r7.z, r7.z, l(0x3f800000) +mul r7.w, r7.z, cb1[r6.w + 15].w +mul r6.xyz, r6.xyzx, cb2[8].xyzx +mul_sat r6.xyz, r6.xyzx, cb2[4].zzzz +add r10.xyz, -r6.xyzx, cb2[8].xyzx +mad r6.xyz, cb2[4].xxxx, r10.xyzx, r6.xyzx +mad r7.z, -cb1[r6.w + 15].w, r7.z, l(1.000000) +mad r10.xyz, cb1[r6.w + 15].xyzx, r7.wwww, r7.zzzz +mul r11.xyz, r6.xyzx, r10.xyzx +mul r12.xyz, v2.zxyz, v3.yzxy +mad r12.xyz, v2.yzxy, v3.zxyz, -r12.xyzx +mul r12.xyz, r0.zzzz, r12.xyzx +mul r7.yzw, r7.yyyy, r12.xxyz +mad r7.xyz, v3.xyzx, r7.xxxx, r7.yzwy +dp2 r0.z, r5.xyxx, r5.xyxx +add r0.z, -r0.z, l(1.000000) +max r0.z, r0.z, l(0.000000) +sqrt r0.z, r0.z +lt r5.x, l(0.000000), cb2[1].w +movc r5.x, r5.x, l(-1.000000), l(1.000000) +movc r5.x, v8.x, l(1.000000), r5.x +mul r0.z, r0.z, r5.x +mad r7.xyz, v2.xyzx, r0.zzzz, r7.xyzx +dp3 r0.z, r7.xyzx, r7.xyzx +rsq r0.z, r0.z +mul r7.xyz, r0.zzzz, r7.xyzx +dp3 r0.z, -r4.xyzx, r7.xyzx +mul r5.x, cb2[22].x, cb2[22].x +mad r5.y, -r0.z, r0.z, l(1.000000) +mad r5.x, -r5.x, r5.y, l(1.000000) +sqrt r5.y, r5.x +mad r5.y, cb2[22].x, r0.z, r5.y +ge r5.x, r5.x, l(0.000000) +mul r12.xyz, r7.xyzx, r5.yyyy +mad r12.xyz, cb2[22].xxxx, -r4.xyzx, -r12.xyzx +and r12.xyz, r5.xxxx, r12.xyzx +mul r5.xy, r12.yyyy, cb0[1].xyxx +mad r5.xy, cb0[0].xyxx, r12.xxxx, r5.xyxx +mad r5.xy, cb0[2].xyxx, r12.zzzz, r5.xyxx +mul r5.xy, r5.xyxx, cb2[22].yyyy +mad r0.xy, r5.xyxx, r8.wwww, r0.xyxx +sample_b_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xyxx, t4.xyzw, s6, cb0[108].x +max r0.x, v5.z, l(9.999999939E-09) +div r0.xy, v5.xyxx, r0.xxxx +max r5.x, v6.z, l(9.999999939E-09) +div r5.xy, v6.xyxx, r5.xxxx +add r13.xy, r0.xyxx, -r5.xyxx +mul r0.x, l(0.080000), cb2[0].y +mul r14.xyz, r3.wwww, r11.xyzx +mad r14.xyz, r6.xyzx, r10.xyzx, -r14.xyzx +mad r0.x, -r0.x, r3.w, r0.x +mad r15.xyz, r11.xyzx, r3.wwww, r0.xxxx +dp3 r0.x, r7.xyzx, r4.xyzx +mad r16.xyzw, r9.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r0.y, r16.x, r16.x +max r0.x, r0.x, l(0.000000) +mul r3.w, r0.x, l(-9.280000) +exp r3.w, r3.w +min r0.y, r0.y, r3.w +mad r0.y, r0.y, r16.x, r16.y +mad r5.xy, r0.yyyy, l(-1.040000, 1.040000, 0.000000, 0.000000), r16.zwzz +eq r0.y, l(1.000000), cb0[113].y +mul r16.xyzw, r1.yyyy, cb0[241].xyzw +mad r16.xyzw, cb0[240].xyzw, r1.xxxx, r16.xyzw +mad r16.xyzw, cb0[242].xyzw, r1.zzzz, r16.xyzw +add r16.xyzw, r16.xyzw, cb0[243].xyzw +div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r16.w +mul r16.xyz, r16.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) +mul r16.xyz, r3.wwww, r16.xyzx +mad_sat r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +mul r16.xy, r16.xyxx, cb0[82].xyxx +ftou r17.xy, r16.xyxx +mad r3.w, cb0[84].z, r16.z, cb0[84].w +div r17.z, l(1.000000, 1.000000, 1.000000, 1.000000), r3.w +ftou r16.xy, v0.xyxx +mul r3.w, r1.y, cb0[1].z +mad r3.w, cb0[0].z, r1.x, r3.w +mad r3.w, cb0[2].z, r1.z, r3.w +add r3.w, r3.w, cb0[3].z +mov r16.z, |r3.w| +movc r16.xyz, r0.yyyy, r17.xyzx, r16.xyzx +mad r17.xyz, r7.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r1.xyzx +mad r18.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r18.xyz, r17.xzyx, -r18.xyzx +max r0.y, |r18.y|, |r18.x| +add r0.y, r0.y, l(-464.000000) +mul_sat r0.y, r0.y, l(0.031250) +add r3.w, |r18.z|, l(-208.000000) +mul_sat r3.w, r3.w, l(0.031250) +max r0.y, r0.y, r3.w +ne r3.w, l(0.000000), cb0[210].w +lt r10.w, r0.y, l(1.000000) +and r3.w, r3.w, r10.w +if_nz r3.w + mad r18.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r18.xyz, r17.xzyx, -r18.xyzx + max r3.w, |r18.y|, |r18.x| + add r3.w, r3.w, l(-29.000000) + mul_sat r3.w, r3.w, l(0.500000) + add r10.w, |r18.z|, l(-13.000000) + mul_sat r10.w, r10.w, l(0.500000) + max r3.w, r3.w, r10.w + lt r10.w, r3.w, l(1.000000) + if_nz r10.w + mad r18.xyz, r17.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r18.xyzx, cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r19.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r18.xyzx, t11.yzwx, s1, l(0.000000) + add r10.w, -r3.w, l(1.000000) + mul r11.w, l(0.500000), cb0[211].y + mad r12.w, -cb0[211].y, l(0.500000), l(1.000000) + max r11.w, r11.w, r18.y + min r11.w, r12.w, r11.w + mul r18.w, r11.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t12.xyzw, s0, l(0.000000) + mad r11.w, r20.w, r10.w, r0.y + add r21.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t12.xyzw, s0, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r19.yyyy, r21.xyzx + mov r21.w, r19.y + mul r21.xyzw, r10.wwww, r21.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t12.xyzw, s0, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r19.xxxx, r18.xyzx + mov r18.w, r19.x + mul r18.xyzw, r10.wwww, r18.xyzw + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r19.wwww, r20.xyzx + mul r19.xyzw, r10.wwww, r19.xyzw + else + mov r21.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r19.xyzw, l(0,0,0,0) + mov r11.w, r0.y + endif + mad r20.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r20.xyz, r17.xzyx, -r20.xyzx + max r10.w, |r20.y|, |r20.x| + add r10.w, r10.w, l(-116.000000) + mul_sat r10.w, r10.w, l(0.125000) + add r12.w, |r20.z|, l(-52.000000) + mul_sat r12.w, r12.w, l(0.125000) + max r10.w, r10.w, r12.w + lt r12.w, r10.w, l(1.000000) + if_nz r12.w + mad r20.xyz, r17.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r22.xyz, r20.xyzx, cb0[211].xyzx + round_ni r22.xyz, r22.xyzx + mad r20.xyz, r20.xyzx, cb0[211].xyzx, -r22.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r20.xyzx, t13.yzwx, s1, l(0.000000) + add r12.w, -r10.w, l(1.000000) + mul r3.w, r3.w, r12.w + mul r12.w, l(0.500000), cb0[211].y + mad r13.w, -cb0[211].y, l(0.500000), l(1.000000) + max r12.w, r12.w, r20.y + min r12.w, r13.w, r12.w + mul r20.w, r12.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyzw, r20.xwzx, t14.xyzw, s0, l(0.000000) + mad r11.w, r23.w, r3.w, r11.w + add r24.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t14.xyzw, s0, l(0.000000) + mad r24.xyz, r24.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r24.xyz, r22.yyyy, r24.xyzx + mov r24.w, r22.y + mad r21.xyzw, r24.xyzw, r3.wwww, r21.xyzw + add r20.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t14.xyzw, s0, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r22.xxxx, r20.xyzx + mov r20.w, r22.x + mad r18.xyzw, r20.xyzw, r3.wwww, r18.xyzw + mad r20.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r20.xyzx + mad r19.xyzw, r22.xyzw, r3.wwww, r19.xyzw + endif + lt r3.w, l(0.000000), r10.w + if_nz r3.w + mad r17.xyz, r17.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r17.xyzx, cb0[211].xyzx + mul r22.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r20.xyzx + mad r20.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r17.xyz, r22.xyzx, r17.xyzx + min r17.xyz, r20.xyzx, r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r23.xyw, r17.xyzx, t15.yzwx, s1, l(0.000000) + add r3.w, -r0.y, l(1.000000) + mul r3.w, r3.w, r10.w + max r10.w, r22.y, r17.y + min r10.w, r20.y, r10.w + mul r17.w, r10.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t16.xyzw, s0, l(0.000000) + add r22.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t16.xyzw, s0, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r23.yyyy, r22.xyzx + mov r22.w, r23.y + mad r21.xyzw, r22.xyzw, r3.wwww, r21.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s0, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r23.xxxx, r17.xyzx + mov r17.w, r23.x + mad r18.xyzw, r17.xyzw, r3.wwww, r18.xyzw + mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r23.wwww, r17.xyzx + mad r19.xyzw, r23.xyzw, r3.wwww, r19.xyzw + mad r11.w, r20.w, r3.w, r11.w + endif + mad_sat r3.w, r11.w, l(2.000000), l(-1.000000) + add r17.x, -r0.y, r3.w + add r0.y, r0.y, r3.w + mul r17.y, r0.y, l(0.500000) +else + mov r21.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r19.xyzw, l(0,0,0,0) + mov r17.xy, l(0,1.000000,0,0) +endif +mul r20.xyzw, r17.yyyx, cb0[213].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r17.zw, r17.yyyx, cb0[213].wwwy +mad r20.w, r17.w, l(0.375000), r17.z +add r19.xyzw, r19.xyzw, r20.xyzw +mul r20.xyzw, r17.yyyx, cb0[214].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r17.zw, r17.yyyx, cb0[214].wwwy +mad r20.w, r17.w, l(0.375000), r17.z +add r18.xyzw, r18.xyzw, r20.xyzw +mul r20.xyzw, r17.yyyx, cb0[215].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r17.xy, r17.yxyy, cb0[215].wyww +mad r20.w, r17.y, l(0.375000), r17.x +add r17.xyzw, r20.xyzw, r21.xyzw +dp3 r0.y, r19.xyzx, r7.xyzx +add r0.y, r19.w, r0.y +max r19.x, r0.y, l(0.000000) +dp3 r0.y, r18.xyzx, r7.xyzx +add r0.y, r18.w, r0.y +max r19.y, r0.y, l(0.000000) +dp3 r0.y, r17.xyzx, r7.xyzx +add r0.y, r17.w, r0.y +max r19.z, r0.y, l(0.000000) +add r0.y, r0.z, r0.z +mad r17.xyz, r7.xyzx, -r0.yyyy, -r4.xyzx +add r0.y, l(-1.000000), cb0[113].x +max r0.z, r9.w, l(0.001000) +log r0.z, r0.z +mad r0.z, -r0.z, l(1.200000), l(1.000000) +add r0.y, -r0.z, r0.y +utof r18.xy, r16.xyxx +mul r18.zw, r18.xxxy, cb3[0].wwww +round_ni r18.zw, r18.zzzw +add r0.z, r16.z, -cb3[2].y +round_ni r0.z, r0.z +add r3.w, l(-1.000000), cb3[1].x +max r10.w, r0.z, l(0.000000) +min r3.w, r3.w, r10.w +ge r0.z, r3.w, r0.z +mad r10.w, r18.w, cb3[0].x, r18.z +ftoi r10.w, r10.w +iadd r10.w, r10.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.w, r10.w, l(0), t0.xxxx +ftoi r3.w, r3.w +iadd r3.w, r3.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx +and r3.w, r3.w, r10.w +and r0.z, r0.z, r3.w +mul r20.xyz, r19.xyzx, cb0[111].xxxx +dp3 r3.w, r20.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r1.w, l(1.000000) +mov r7.w, l(1.000000) +mov r20.xyz, l(0,0,0,0) +mov r10.w, l(1.000000) +mov r11.w, r0.z +mov r12.w, l(0) +loop + lt r13.w, l(0.010000), r10.w + ine r14.w, r11.w, l(0) + and r14.w, r13.w, r14.w + if_nz r14.w + firstbit_lo r14.w, r11.w + ishl r15.w, l(1), r14.w + xor r11.w, r11.w, r15.w + ishl r14.w, r14.w, l(3) + dp4 r21.x, cb3[r14.w + 6].xyzw, r1.xyzw + dp4 r21.y, cb3[r14.w + 7].xyzw, r1.xyzw + dp4 r21.z, cb3[r14.w + 8].xyzw, r1.xyzw + ge r22.xyz, cb3[r14.w + 5].xyzx, |r21.xyzx| + and r15.w, r22.y, r22.x + and r15.w, r22.z, r15.w + if_nz r15.w + mul r15.w, l(0.100000), cb3[r14.w + 5].x + mul r22.xyz, |r21.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.zw, r22.xxxy, r22.xxxy + add r22.xyw, -|r21.xyxz|, cb3[r14.w + 5].xyxz + mul r22.xyw, r22.xyxw, cb3[r14.w + 9].xyxz + eq r17.w, l(1.000000), cb3[r14.w + 10].x + if_nz r17.w + dp3 r23.x, cb3[r14.w + 6].xyzx, r17.xyzx + dp3 r23.y, cb3[r14.w + 7].xyzx, r17.xyzx + dp3 r23.z, cb3[r14.w + 8].xyzx, r17.xyzx + add r24.xyz, -r21.xyzx, cb3[r14.w + 5].xyzx + div r24.xyz, r24.xyzx, r23.xyzx + add r25.xyz, -r21.xyzx, -cb3[r14.w + 5].xyzx + div r25.xyz, r25.xyzx, r23.xyzx + lt r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + movc r24.xyz, r26.xyzx, r24.xyzx, r25.xyzx + min r17.w, r24.y, r24.x + min r17.w, r24.z, r17.w + mad r21.xyz, r23.xyzx, r17.wwww, r21.xyzx + else + mov r21.xyz, r17.xyzx + endif + dp3 r17.w, r21.xyzx, r21.xyzx + rsq r17.w, r17.w + mul r21.xyz, r17.wwww, r21.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx + lt r24.xyz, r21.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r23.xyz, -r23.xyzx, r24.xyzx + itof r23.xyz, r23.xyzx + dp3 r17.w, r21.xyzx, r23.xyzx + div r21.xyz, r21.xyzx, r17.wwww + lt r17.w, r21.z, l(0.000000) + add r21.zw, -|r21.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r21.zw, r21.zzzw, r23.xxxy + movc r21.xy, r17.wwww, r21.zwzz, r21.xyxx + dp4 r17.w, cb3[r14.w + 4].xyzw, r7.xyzw + max r17.w, r17.w, l(0.000000) + max r17.w, r17.w, l(0.000100) + min r19.w, r22.w, r22.y + min r19.w, r19.w, r22.x + add r18.z, r18.w, r18.z + mad r18.z, r22.z, r22.z, r18.z + mad r15.w, r15.w, r15.w, -r18.z + mul r15.w, r15.w, cb3[r14.w + 9].x + mul r15.w, r15.w, cb3[r14.w + 9].x + add r18.z, l(1.000000), -cb3[r14.w + 10].y + mul r15.w, r15.w, r18.z + mul r15.w, r15.w, l(100.000000) + mad_sat r15.w, r19.w, cb3[r14.w + 10].y, r15.w + mul r18.z, r15.w, cb3[r14.w + 10].w + mad r21.xy, r21.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r21.xy, r21.xyxx, cb3[1].wwww, cb3[2].wwww + mov r21.z, cb3[r14.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r21.xyz, r21.xyzx, t1.xyzw, s2, r0.y + mul r21.xyz, r21.xyzx, cb3[r14.w + 9].wwww + div r18.w, r3.w, r17.w + min r18.w, |r18.w|, l(1.000000) + mad r18.w, r18.w, l(2.000000), r3.w + add r17.w, r17.w, l(2.000000) + div r17.w, r18.w, r17.w + add r17.w, r17.w, l(-1.000000) + mad r17.w, r17.w, cb0[112].w, l(1.000000) + mul r21.xyz, r17.wwww, r21.xyzx + mul r21.xyz, r18.zzzz, r21.xyzx + mad r20.xyz, r21.xyzx, r10.wwww, r20.xyzx + mad r14.w, -r15.w, cb3[r14.w + 10].w, l(1.000000) + mul r10.w, r10.w, r14.w + endif + mov r12.w, l(-1) + continue + else + mov r12.w, r13.w + break + endif + mov r12.w, r13.w +endloop +if_nz r12.w + dp3 r0.z, r17.xyzx, r17.xyzx + rsq r0.z, r0.z + mul r21.xyz, r0.zzzz, r17.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx + lt r23.xyz, r21.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r22.xyz, -r22.xyzx, r23.xyzx + itof r22.xyz, r22.xyzx + dp3 r0.z, r21.xyzx, r22.xyzx + div r21.xyz, r21.xyzx, r0.zzzz + lt r0.z, r21.z, l(0.000000) + add r18.zw, -|r21.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r18.zw, r18.zzzw, r22.xxxy + movc r18.zw, r0.zzzz, r18.zzzw, r21.xxxy + mov r7.w, l(1.000000) + dp4 r0.z, cb3[3].xyzw, r7.xyzw + max r0.z, r0.z, l(0.000000) + max r0.z, r0.z, l(0.000100) + mad r18.zw, r18.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r21.xy, r18.zwzz, cb3[1].wwww, cb3[2].wwww + mov r21.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r21.xyz, r21.xyzx, t1.xyzw, s2, r0.y + div r0.y, r3.w, r0.z + min r0.y, |r0.y|, l(1.000000) + mad r0.y, r0.y, l(2.000000), r3.w + add r0.z, r0.z, l(2.000000) + div r0.y, r0.y, r0.z + add r0.y, r0.y, l(-1.000000) + mad r0.y, r0.y, cb0[112].w, l(1.000000) + mul r21.xyz, r0.yyyy, r21.xyzx + mad r20.xyz, r21.xyzx, r10.wwww, r20.xyzx +endif +mul r19.xyz, r14.xyzx, r19.xyzx +add r0.y, r5.w, l(-1.000000) +mad r0.y, cb2[1].x, r0.y, l(1.000000) +mul r19.xyz, r0.yyyy, r19.xyzx +mul r20.xyz, r20.xyzx, cb0[112].zzzz +// === Glass Fix: Reduce reflection probe intensity === +lt r32.x, l(0.500000), cb13[14].x +if_nz r32.x + mul r20.xyz, r20.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) +endif +mul r20.xyz, r20.xyzx, cb0[111].yyyy +mul_sat r0.y, r15.y, l(50.000000) +mul r0.y, r5.y, r0.y +mad r5.xyw, r15.xyxz, r5.xxxx, r0.yyyy +mul r5.xyw, r5.xyxw, r20.xyxz +mad r5.xyw, r19.xyxz, cb0[111].xxxx, r5.xyxw +lt r0.y, cb6[35].w, l(0.990000) +if_nz r0.y + ftoi r0.y, cb6[35].x + ieq r0.z, r0.y, l(2) + movc r19.xyz, r0.zzzz, cb6[20].xyzx, cb0[44].xyzx + add r19.xyz, r1.xyzx, -r19.xyzx + dp3 r0.z, r19.xyzx, r19.xyzx + add r0.z, -r0.z, cb6[34].w + mul_sat r0.z, r0.z, cb6[34].z + lt r1.w, l(0.000000), r0.z + if_nz r1.w + ilt r0.y, l(0), r0.y + if_nz r0.y + add r19.xyz, r1.xyzx, -cb6[20].xyzx + add r20.xyz, r1.xyzx, -cb6[21].xyzx + add r21.xyz, r1.xyzx, -cb6[22].xyzx + add r22.xyz, r1.xyzx, -cb6[23].xyzx + dp3 r19.x, r19.xyzx, r19.xyzx + dp3 r19.y, r20.xyzx, r20.xyzx + dp3 r19.z, r21.xyzx, r21.xyzx + dp3 r19.w, r22.xyzx, r22.xyzx + lt r20.x, r19.x, cb6[20].w + lt r20.y, r19.y, cb6[21].w + lt r20.z, r19.z, cb6[22].w + lt r20.w, r19.w, cb6[23].w + and r21.xyzw, r20.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) + movc r20.xyz, r20.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) + add r20.xyz, r20.xyzx, r21.yzwy + max r21.yzw, r20.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) + dp4 r0.y, r21.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) + add r0.y, -r0.y, l(4.000000) + max r0.y, r0.y, l(0.000000) + min r0.y, r0.y, l(3.000000) + add r1.w, r0.y, l(1.000000) + min r1.w, r1.w, l(3.000000) + ftou r1.w, r1.w + dp3 r3.w, r19.yzwy, icb[r1.w + 0].yzwy + div r1.w, r3.w, cb6[r1.w + 20].w + ge r3.w, r1.w, l(0.000000) + ge r1.w, l(1.000000), r1.w + and r1.w, r1.w, r3.w + if_nz r1.w + ftou r1.w, r0.y + add r18.zw, r18.xxxy, l(0.000000, 0.000000, 2.083000, 4.867000) + dp2 r3.w, r18.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r3.w, r3.w + mul r3.w, r3.w, l(52.982918) + frc r3.w, r3.w + dp4 r7.w, r19.xyzw, icb[r1.w + 0].xyzw + div r1.w, r7.w, cb6[r1.w + 20].w + sqrt r1.w, r1.w + add r1.w, r1.w, l(-0.900000) + mul r1.w, r1.w, l(12.000000) + ge r1.w, r1.w, r3.w + and r1.w, r1.w, l(0x3f800000) + add r0.y, r0.y, r1.w + endif + dp3 r1.w, r7.xyzx, cb5[0].xyzx + max r1.w, r1.w, l(0.000000) + min r1.w, r1.w, l(0.900000) + add r1.w, -r1.w, l(1.000000) + ftou r3.w, r0.y + ishl r7.w, r3.w, l(2) + mul r18.zw, r1.wwww, cb6[r3.w + 24].xxxy + max r1.w, r18.z, l(0.000000) + mad r19.xyz, -cb5[0].xyzx, r1.wwww, r1.xyzx + mad r19.xyz, r7.xyzx, r18.wwww, r19.xyzx + mul r20.xyz, r19.yyyy, cb6[r7.w + 1].xyzx + mad r19.xyw, cb6[r7.w + 0].xyxz, r19.xxxx, r20.xyxz + mad r19.xyz, cb6[r7.w + 2].xyzx, r19.zzzz, r19.xywx + add r19.xyz, r19.xyzx, cb6[r7.w + 3].xyzx + ge r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + ge r21.xyz, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + or r20.xyz, r20.xyzx, r21.xyzx + or r1.w, r20.y, r20.x + or r1.w, r20.z, r1.w + and r3.w, r19.z, l(0x7fffffff) + ult r3.w, l(0x7f800000), r3.w + or r20.z, r1.w, r3.w + ftoi r0.y, r0.y + mad r18.zw, r19.xxxy, cb6[r0.y + 28].zzzw, cb6[r0.y + 28].xxxy + mad r19.xy, r18.zwzz, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r19.xy, r19.xyxx + mad r18.zw, r18.zzzw, cb6[32].zzzw, -r19.xxxy + add r21.xyzw, r18.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r22.xw, r21.xxxz, r21.xxxz + min r21.xz, r18.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + max r23.xy, r18.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r23.zw, r22.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r18.zzzw + add r18.zw, -r18.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r18.zw, -r21.xxxz, r21.xxxz, r18.zzzw + mad r21.xy, -r23.xyxx, r23.xyxx, r21.ywyy + mov r24.x, r23.z + mov r24.y, r18.z + mov r24.z, r21.x + mov r24.w, r22.x + mul r24.xyzw, r24.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r22.x, r23.w + mov r22.y, r18.w + mov r22.z, r21.y + mul r21.xyzw, r22.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r22.xyzw, r24.ywyw, r24.xzxz + add r23.xyzw, r21.yyww, r21.xxzz + div r18.zw, r24.yyyw, r22.zzzw + add r18.zw, r18.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r24.xy, r18.zwzz, cb6[32].xxxx + div r18.zw, r21.yyyw, r23.yyyw + add r18.zw, r18.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r24.zw, r18.zzzw, cb6[32].yyyy + mul r21.xyzw, r22.xyzw, r23.xyzw + mad r22.xyzw, r19.xyxy, cb6[32].xyxy, r24.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.y, r22.xyxx, t5.xxxx, s3, r19.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r22.zwzz, t5.xxxx, s3, r19.z + mul r1.w, r1.w, r21.y + mad r0.y, r21.x, r0.y, r1.w + mad r22.xyzw, r19.xyxy, cb6[32].xyxy, r24.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r22.xyxx, t5.xxxx, s3, r19.z + mad r0.y, r21.z, r1.w, r0.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r22.zwzz, t5.xxxx, s3, r19.z + mad r0.y, r21.w, r1.w, r0.y + movc r20.x, r20.z, l(1.000000), r0.y + else + mov r20.xz, l(1.000000,0,0,0) + endif + else + mov r20.xz, l(1.000000,0,0,0) + endif + lt r0.y, r0.z, l(1.000000) + if_nz r0.y + dp3 r0.y, r7.xyzx, cb5[0].xyzx + max r0.y, r0.y, l(0.000000) + min r0.y, r0.y, l(0.900000) + add r0.y, -r0.y, l(1.000000) + mul r18.zw, r0.yyyy, cb6[584].xxxy + mad r19.xyz, -cb5[0].xyzx, r18.zzzz, r1.xyzx + mad r19.xyz, r7.xyzx, r18.wwww, r19.xyzx + mul r18.zw, r19.yyyy, cb6[581].xxxy + mad r18.zw, cb6[580].xxxy, r19.xxxx, r18.zzzw + mad r18.zw, cb6[582].xxxy, r19.zzzz, r18.zzzw + add r18.zw, r18.zzzw, cb6[583].xxxy + lt r21.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r18.zwzz + and r0.y, r21.y, r21.x + lt r21.xy, r18.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000) + and r1.w, r21.y, r21.x + and r0.y, r0.y, r1.w + if_nz r0.y + mul r0.y, r18.w, cb6[585].z + round_ni r0.y, r0.y + add r0.y, r18.z, r0.y + mul r0.y, r0.y, cb6[585].y + ftou r0.y, r0.y + umin r0.y, r0.y, l(127) + and r1.w, l(0x0000ffff), cb6[r0.y + 587].x + f16tof32 r21.x, r1.w + ge r1.w, r21.x, l(0.000000) + if_nz r1.w + mov r22.x, cb6[576].x + mov r22.y, cb6[577].x + mov r22.z, cb6[578].x + mov r22.w, cb6[r0.y + 587].y + mov r19.w, l(1.000000) + dp4 r22.x, r22.xyzw, r19.xyzw + mov r23.x, cb6[576].y + mov r23.y, cb6[577].y + mov r23.z, cb6[578].y + mov r23.w, cb6[r0.y + 587].z + dp4 r22.y, r23.xyzw, r19.xyzw + mov r23.x, cb6[576].z + mov r23.y, cb6[577].z + mov r23.z, cb6[578].z + mov r23.w, cb6[r0.y + 587].w + dp4 r1.w, r23.xyzw, r19.xyzw + lt r18.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xxxy + lt r3.w, l(0.000000), r1.w + and r7.w, r18.w, r18.z + and r3.w, r3.w, r7.w + lt r18.zw, r22.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + lt r7.w, r1.w, l(1.000000) + and r10.w, r18.w, r18.z + and r7.w, r7.w, r10.w + and r3.w, r3.w, r7.w + if_nz r3.w + ushr r0.y, cb6[r0.y + 587].x, l(16) + f16tof32 r21.y, r0.y + mad r18.zw, r22.xxxy, cb6[584].zzzw, r21.xxxy + mad r19.xy, r18.zwzz, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r19.xy, r19.xyxx + mad r18.zw, r18.zzzw, cb6[586].zzzw, -r19.xxxy + add r21.xyzw, r18.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r22.xw, r21.xxxz, r21.xxxz + min r19.zw, r18.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + max r21.xz, r18.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r23.xy, r22.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r18.zwzz + add r18.zw, -r18.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r18.zw, -r19.zzzw, r19.zzzw, r18.zzzw + mad r19.zw, -r21.xxxz, r21.xxxz, r21.yyyw + mov r21.x, r23.x + mov r21.y, r18.z + mov r21.z, r19.z + mov r21.w, r22.x + mul r21.xyzw, r21.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r22.x, r23.y + mov r22.y, r18.w + mov r22.z, r19.w + mul r22.xyzw, r22.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r23.xyzw, r21.ywyw, r21.xzxz + add r24.xyzw, r22.yyww, r22.xxzz + div r18.zw, r21.yyyw, r23.zzzw + add r18.zw, r18.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r21.xy, r18.zwzz, cb6[586].xxxx + div r18.zw, r22.yyyw, r24.yyyw + add r18.zw, r18.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r21.zw, r18.zzzw, cb6[586].yyyy + mad r22.xyzw, r19.xyxy, cb6[586].xyxy, r21.xzyz + mad r19.xyzw, r19.xyxy, cb6[586].xyxy, r21.xwyw + mul r21.xyzw, r23.xyzw, r24.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.y, r22.xyxx, t8.xxxx, s3, r1.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r22.zwzz, t8.xxxx, s3, r1.w + mul r3.w, r3.w, r21.y + mad r0.y, r21.x, r0.y, r3.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r19.xyxx, t8.xxxx, s3, r1.w + mad r0.y, r21.z, r3.w, r0.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t8.xxxx, s3, r1.w + mad r20.y, r21.w, r1.w, r0.y + else + mov r20.y, l(1.000000) + endif + else + mov r20.y, l(1.000000) + endif + else + mov r20.y, l(1.000000) + endif + movc r20.x, r20.z, r20.y, r20.x + else + mov r20.y, l(1.000000) + endif + add r0.y, -r20.y, r20.x + mad r0.y, r0.z, r0.y, r20.y + lt r0.z, l(0.001000), r0.y + if_nz r0.z + add r19.xyz, r1.xyzx, -cb0[173].xyzx + mad r18.zw, cb0[176].xxxz, r19.yyyy, r19.xxxz + mul r19.yw, r18.zzzw, cb0[174].zzzz + mul r20.xy, cb0[175].xyxx, cb0[183].wwww + mad r18.zw, r18.zzzw, cb0[174].zzzz, r20.xxxy + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r18.zwzz, t7.yzxw, s1, l(0.000000) + mad r18.zw, r19.yyyw, cb0[175].wwww, r20.xxxy + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r18.zwzz, t7.yzwx, s1, l(0.000000) + dp2 r3.w, r19.xzxx, r19.xzxx + sqrt r3.w, r3.w + add r7.w, -cb0[174].x, cb0[174].y + add r3.w, r3.w, -cb0[174].x + div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w + mul_sat r3.w, r3.w, r7.w + mad r7.w, r3.w, l(-2.000000), l(3.000000) + mul r3.w, r3.w, r3.w + mul r3.w, r3.w, r7.w + add r1.w, -r0.z, r1.w + mad r0.z, r3.w, r1.w, r0.z + add r0.z, r0.z, l(-1.000000) + mad r0.z, cb0[175].z, r0.z, l(1.000000) + mul r0.y, r0.z, r0.y + endif + add r0.z, -r0.y, cb6[35].z + mad r0.y, cb6[35].w, r0.z, r0.y +else + mov r0.y, cb6[35].z +endif +min r0.y, r0.y, l(1.000000) +add r0.y, r0.y, l(-1.000000) +mad r19.x, cb6[34].x, r0.y, l(1.000000) +lt r0.y, l(0.001000), r19.x +if_nz r0.y + dp3 r0.y, -cb5[0].xyzx, r17.xyzx + mad r20.xyz, cb5[0].xyzx, r0.yyyy, r17.xyzx + lt r0.y, r0.y, cb5[4].z + dp3 r0.z, r20.xyzx, r20.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r20.xyz, r0.zzzz, r20.xyzx + mul r20.xyz, r20.xyzx, cb5[4].yyyy + mad r20.xyz, -cb5[0].xyzx, cb5[4].zzzz, r20.xyzx + dp3 r0.z, r20.xyzx, r20.xyzx + rsq r0.z, r0.z + mul r20.xyz, r0.zzzz, r20.xyzx + movc r20.xyz, r0.yyyy, r20.xyzx, r17.xyzx + mad r21.xyz, r2.xyzx, r2.wwww, r20.xyzx + dp3 r0.y, r21.xyzx, r21.xyzx + max r0.y, r0.y, l(0.0000610351562) + rsq r0.y, r0.y + mul r21.xyz, r0.yyyy, r21.xyzx + dp3_sat r9.y, r20.xyzx, r7.xyzx + dp3_sat r0.y, r7.xyzx, r21.xyzx + min r9.z, r0.x, l(1.000000) + mul r0.z, r9.w, r9.w + mul r0.z, r0.z, r0.z + mad r1.w, r0.y, r0.z, -r0.y + mad r0.y, r1.w, r0.y, l(1.000000) + dp3_sat r1.w, r4.xyzx, r21.xyzx + add r1.w, -r1.w, l(1.000000) + mul r3.w, r1.w, r1.w + mul r3.w, r3.w, r3.w + mul r7.w, r1.w, r3.w + add r10.w, -r9.w, l(1.000000) + mad r11.w, -r10.w, l(0.383026), l(-0.0761947036) + mad r11.w, r10.w, r11.w, l(1.049970) + mad r10.w, r10.w, r11.w, l(0.409255) + min r10.w, r10.w, l(0.999000) + add r11.w, -r10.w, l(1.000000) + add r20.xyz, -r15.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r20.xyz, r20.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r15.xyzx + mad r1.w, -r3.w, r1.w, l(1.000000) + mad r21.xyz, r15.xyzx, r1.wwww, r7.wwww + mul r0.y, r0.y, r0.y + div r0.y, r0.z, r0.y + mad r18.zw, -r9.zzzy, r0.zzzz, r9.zzzy + mad r18.zw, r18.zzzw, r9.zzzy, r0.zzzz + sqrt r18.zw, r18.zzzw + mul r18.zw, r9.yyyz, r18.zzzw + add r0.z, r18.w, r18.z + add r0.z, r0.z, l(0.000100) + div r0.z, l(0.500000), r0.z + mul r0.y, r0.z, r0.y + mul r21.xyz, r0.yyyy, r21.xyzx + min r21.xyz, r21.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r22.xyzw, r9.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.y, r22.xyxx, t10.yxzw, s0, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r22.zwzz, t10.yzxw, s0, l(0.000000) + mul r0.y, r0.z, r0.y + mul r0.y, r10.w, r0.y + div r0.y, r0.y, r11.w + mul r22.xyz, r20.xyzx, r20.xyzx + mul r22.xyz, r0.yyyy, r22.xyzx + mad r20.xyz, -r20.xyzx, r11.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r20.xyz, r22.xyzx, r20.xyzx + add r20.xyz, r20.xyzx, r21.xyzx + mul r20.xyz, r20.xyzx, cb5[4].xxxx + // === Glass Fix: Reduce sun specular intensity === + lt r32.x, l(0.500000), cb13[14].x + if_nz r32.x + mul r20.xyz, r20.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + endif + max r20.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r20.xyz, r20.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r21.xyz, r9.yyyy, r14.xyzx + mad r20.xyz, r20.xyzx, r9.yyyy, r21.xyzx + mul r20.xyz, r20.xyzx, cb5[1].xyzx + mov r19.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r19.yzw, r19.xyxx, t9.wxyz, s0, cb0[108].x + add r0.y, -r19.x, l(1.000000) + mad r19.xyz, r20.xyzx, r19.yzwy, -r20.xyzx + mad r19.xyz, r0.yyyy, r19.xyzx, r20.xyzx +else + mov r19.xyz, l(0,0,0,0) +endif +mul r0.yz, r18.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r0.yz, r0.yyzy +mad r0.y, r0.z, cb4[1].y, r0.y +mul r0.y, r0.y, l(8.000000) +ftoi r0.y, r0.y +mad r0.z, -cb0[85].y, cb4[2].w, r16.z +round_ni r0.z, r0.z +add r1.w, l(-1.000000), cb4[1].w +max r3.w, r0.z, l(0.000000) +min r1.w, r1.w, r3.w +mul r3.w, r1.w, l(8.000000) +ftoi r3.w, r3.w +ge r0.z, r1.w, r0.z +iadd r1.w, r3.w, cb0[110].y +mul r3.w, r9.w, r9.w +min r9.x, r0.x, l(1.000000) +add r0.x, -r9.w, l(1.000000) +mad r7.w, -r0.x, l(0.383026), l(-0.0761947036) +mad r7.w, r0.x, r7.w, l(1.049970) +mad r0.x, r0.x, r7.w, l(0.409255) +min r0.x, r0.x, l(0.999000) +add r7.w, -r0.x, l(1.000000) +add r20.xyz, -r15.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r20.xyz, r20.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r15.xyzx +mad r9.yz, r9.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r9.y, r9.yzyy, t10.yxzw, s0, l(0.000000) +mad r21.xyz, -r20.xyzx, r7.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r20.xyz, r20.xyzx, r20.xyzx +mov r22.w, l(1.000000) +mov r23.y, l(1.000000) +mov r24.z, r9.w +mov r25.xyz, l(0,0,0,0) +mov r9.z, l(1.000000) +mov r10.w, l(0) +loop + ilt r11.w, l(7), r10.w + breakc_nz r11.w + iadd r11.w, r0.y, r10.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx + iadd r12.w, r1.w, r10.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx + and r11.w, r11.w, r12.w + and r11.w, r0.z, r11.w + ishl r12.w, r10.w, l(5) + mov r26.xyz, l(0,0,0,0) + mov r13.w, r9.z + mov r14.w, r11.w + loop + breakc_z r14.w + firstbit_lo r15.w, r14.w + ishl r17.w, l(1), r15.w + xor r17.w, r14.w, r17.w + iadd r15.w, r12.w, r15.w + bfi r27.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r15.wwww, l(1, 3, 5, 6) + bfi r18.z, l(29), l(3), r15.w, l(7) + ftou r18.w, cb5[r27.z + 6].w + ieq r18.w, r18.w, l(1) + if_nz r18.w + add r22.xyz, r1.xyzx, -cb5[r27.x + 6].xyzx + and r28.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r27.z + 6].xzyx + and r29.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r27.w + 6].yxzy + ushr r30.xyz, cb5[r27.z + 6].xzyx, l(16, 16, 16, 0) + ushr r31.xyz, cb5[r27.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r28.xyz, r28.xyzx + f16tof32 r29.xyz, r29.xyzx + f16tof32 r30.xyz, r30.xyzx + f16tof32 r31.xyw, r31.yxyz + mov r32.xz, r28.xxzx + mov r32.yw, r30.xxxz + dp4 r18.w, r22.xyzw, r32.xyzw + mov r30.x, r28.y + mov r30.z, r29.y + mov r30.w, r31.x + dp4 r19.w, r22.xyzw, r30.xyzw + mov r31.xz, r29.xxzx + dp4 r20.w, r22.xyzw, r31.xyzw + max r18.w, |r18.w|, |r19.w| + max r18.w, |r20.w|, r18.w + mad r19.w, cb5[r18.z + 6].x, l(0.500000), l(0.500000) + add r18.w, r18.w, -r19.w + mad r19.w, -cb5[r18.z + 6].x, l(0.500000), l(0.500000) + div_sat r18.w, r18.w, r19.w + add r18.w, -r18.w, l(1.000000) + mul r18.w, r18.w, r18.w + else + mov r18.w, l(1.000000) + endif + lt r19.w, l(0.500000), cb5[r27.y + 6].z + lt r20.w, r18.w, l(0.001000) + or r20.w, r19.w, r20.w + if_nz r20.w + mov r14.w, r17.w + continue + endif + ishl r20.w, r15.w, l(3) + bfi r15.w, l(29), l(3), r15.w, l(2) + lt r21.w, cb5[r20.w + 6].w, l(1.500000) + if_nz r21.w + mad r21.w, cb5[r15.w + 6].y, l(0.500000), l(0.500000) + add r22.x, r21.w, -|cb5[r15.w + 6].x| + add r22.y, -r22.x, cb5[r15.w + 6].y + add r21.w, -|r22.x|, l(1.000000) + add r21.w, -|r22.y|, r21.w + max r21.w, r21.w, l(0.000488281250) + ge r23.z, cb5[r15.w + 6].x, l(0.000000) + movc r22.z, r23.z, r21.w, -r21.w + dp3 r21.w, r22.xyzx, r22.xyzx + rsq r21.w, r21.w + mul r22.xyz, r21.wwww, r22.xyzx + add r28.xyz, -r1.xyzx, cb5[r27.x + 6].xyzx + dp3 r21.w, r28.xyzx, r28.xyzx + rsq r23.z, r21.w + mul r29.xyz, r23.zzzz, r28.xyzx + ftoi r23.w, cb5[r18.z + 6].w + mul r30.xyz, r22.xyzx, cb5[r15.w + 6].zzzz + mad r31.xyz, -r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r28.xyzx + mad r32.xyz, r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r28.xyzx + ftou r24.w, cb5[r20.w + 6].w + and r24.w, r24.w, l(1) + ieq r25.w, r24.w, l(0) + not r25.w, r25.w + lt r26.w, l(0.000000), cb5[r15.w + 6].z + and r25.w, r25.w, r26.w + dp3 r26.w, r31.xyzx, r31.xyzx + sqrt r26.w, r26.w + dp3 r27.z, r32.xyzx, r32.xyzx + sqrt r27.z, r27.z + dp3 r28.w, r7.xyzx, r31.xyzx + div r28.w, r28.w, r26.w + dp3 r29.w, r7.xyzx, r32.xyzx + div r29.w, r29.w, r27.z + add r28.w, r28.w, r29.w + mul_sat r33.x, r28.w, l(0.500000) + dp3 r28.w, r31.xyzx, r32.xyzx + mad r26.w, r26.w, r27.z, r28.w + mad r26.w, r26.w, l(0.500000), l(1.000000) + div r33.y, l(1.000000, 1.000000, 1.000000, 1.000000), r26.w + dp3_sat r23.x, r7.xyzx, r29.xyzx + movc r24.xy, r25.wwww, r33.xyxx, r23.xyxx + lt r23.x, cb5[r27.w + 6].w, l(0.000000) + if_nz r23.x + mul r23.x, cb5[r27.x + 6].w, cb5[r27.x + 6].w + mul r23.x, r21.w, r23.x + mad r23.x, -r23.x, r23.x, l(1.000000) + max r23.x, r23.x, l(0.000000) + add r21.w, r21.w, l(1.000000) + div r21.w, l(1.000000, 1.000000, 1.000000, 1.000000), r21.w + and r26.w, r25.w, l(0x3f800000) + add r27.z, -r21.w, r24.y + mad r21.w, r26.w, r27.z, r21.w + mul r23.x, r23.x, r23.x + mul r21.w, r21.w, r23.x + else + mul r32.xyz, r28.xyzx, cb5[r27.x + 6].wwww + dp3 r23.x, r32.xyzx, r32.xyzx + min r23.x, r23.x, l(1.000000) + add r23.x, -r23.x, l(1.000000) + log r23.x, r23.x + mul r23.x, r23.x, cb5[r27.w + 6].w + exp r23.x, r23.x + mul r21.w, r23.x, r24.y + endif + dp3 r22.x, r29.xyzx, -r22.xyzx + add r22.x, r22.x, -cb5[r15.w + 6].z + mul_sat r22.x, r22.x, cb5[r15.w + 6].w + mul r22.x, r22.x, r22.x + movc r22.x, r24.w, l(1.000000), r22.x + mul r21.w, r21.w, r22.x + not r22.x, r25.w + ige r22.y, r23.w, l(0) + and r22.x, r22.y, r22.x + if_nz r22.x + if_z r24.w + ishl r22.x, r23.w, l(2) + mul r32.xyz, r1.yyyy, cb7[r22.x + 33].xywx + mad r32.xyz, cb7[r22.x + 32].xywx, r1.xxxx, r32.xyzx + mad r32.xyz, cb7[r22.x + 34].xywx, r1.zzzz, r32.xyzx + add r22.xyz, r32.xyzx, cb7[r22.x + 35].xywx + div_sat r22.xy, r22.xyxx, r22.zzzz + mad r22.xy, r22.xyxx, cb7[r23.w + 0].zwzz, cb7[r23.w + 0].xyxx + else + ishl r22.z, r23.w, l(2) + dp3 r32.x, -r28.xyzx, cb7[r22.z + 32].xyzx + dp3 r32.y, -r28.xyzx, cb7[r22.z + 33].xyzx + dp3 r32.z, -r28.xyzx, cb7[r22.z + 34].xyzx + lt r22.z, |r32.x|, |r32.y| + and r22.z, r22.z, l(1) + dp2 r23.x, |r32.xyxx|, icb[r22.z + 0].xyxx + lt r23.x, r23.x, |r32.z| + movc r22.z, r23.x, l(2), r22.z + dp3 r23.x, r32.xyzx, icb[r22.z + 0].xyzx + lt r23.x, r23.x, l(0.000000) + bfi r22.z, l(31), l(1), r22.z, r23.x + ushr r23.x, r22.z, l(1) + dp3 r23.x, r32.xyzx, icb[r23.x + 0].xyzx + div r24.y, l(0.000244140625), cb7[r23.w + 0].w + add r24.y, -r24.y, l(0.500000) + utof r26.w, r22.z + ult r27.z, r22.z, l(2) + and r27.z, r27.z, l(2) + dp2 r27.z, r32.xzxx, icb[r27.z + 0].xzxx + mul r27.z, r27.z, icb[r22.z + 4].z + div r27.z, r27.z, |r23.x| + mad r26.w, r27.z, r24.y, r26.w + add r26.w, r26.w, l(0.500000) + mul_sat r28.x, r26.w, l(0.166666672) + iadd r26.w, l(-1), icb[r22.z + 4].y + dp2 r26.w, r32.yzyy, icb[r26.w + 0].xyxx + mul r22.z, r26.w, icb[r22.z + 4].w + div r22.z, r22.z, |r23.x| + mad_sat r28.y, -r22.z, r24.y, l(0.500000) + mad r22.xy, r28.xyxx, cb7[r23.w + 0].zwzz, cb7[r23.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r22.x, r22.xyxx, t18.xyzw, s0, l(0.000000) + mul r21.w, r21.w, r22.x + endif + lt r22.x, l(0.000000), r21.w + if_nz r22.x + if_z r24.w + ftoi r22.y, cb5[r27.y + 6].x + else + add r28.xyz, r1.xyzx, -cb5[r27.x + 6].xyzx + lt r32.xyz, |r28.yzzy|, |r28.xxyx| + and r22.z, r32.y, r32.x + lt r28.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r28.xyzx + ushr r23.x, cb5[r15.w + 6].w, l(24) + ubfe r24.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb5[r15.w + 6].wwww + movc r23.x, r28.x, r23.x, r24.y + and r23.w, l(255), cb5[r15.w + 6].w + movc r23.w, r28.y, r24.w, r23.w + ubfe r24.y, l(8), l(8), cb5[r27.y + 6].x + and r24.w, l(255), cb5[r27.y + 6].x + movc r24.y, r28.z, r24.y, r24.w + movc r23.w, r32.z, r23.w, r24.y + movc r22.z, r22.z, r23.x, r23.w + ilt r23.x, r22.z, l(80) + movc r22.y, r23.x, r22.z, l(-1) + endif + ishl r22.z, r22.y, l(2) + mad r28.xyz, r29.xyzx, cb6[r22.y + 288].xxxx, r1.xyzx + mul r23.x, l(5.000000), cb6[r22.y + 288].y + mad r28.xyz, r7.xyzx, r23.xxxx, r28.xyzx + mul r32.xyzw, r28.yyyy, cb6[r22.z + 65].xyzw + mad r32.xyzw, cb6[r22.z + 64].xyzw, r28.xxxx, r32.xyzw + mad r28.xyzw, cb6[r22.z + 66].xyzw, r28.zzzz, r32.xyzw + add r28.xyzw, r28.xyzw, cb6[r22.z + 67].xyzw + div r28.xyz, r28.xyzx, r28.wwww + ge r32.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r28.xyzx + ge r33.xyz, r28.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r23.xw, -cb6[r22.y + 344].xxxy, cb6[r22.y + 344].zzzw + mad r23.xw, r28.xxxy, r23.xxxw, cb6[r22.y + 344].xxxy + mad r24.yw, r23.xxxw, cb6[400].zzzw, l(0.000000, 0.500000, 0.000000, 0.500000) + round_ni r24.yw, r24.yyyw + mad r23.xw, r23.xxxw, cb6[400].zzzw, -r24.yyyw + add r34.xyzw, r23.xxww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r35.xyzw, r34.xxzz, r34.xxzz + add r28.xy, -r23.xwxx, l(1.000000, 1.000000, 0.000000, 0.000000) + min r34.xz, r23.xxwx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r36.xy, r23.xwxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r37.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r36.xy, -r36.xyxx, r36.xyxx, r34.ywyy + add r36.xy, r36.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r36.xy, r36.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r35.xz, r35.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r23.xw, r35.yyyw, l(0.500000, 0.000000, 0.000000, 0.500000), -r23.xxxw + mul r38.xy, r23.xwxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r23.xw, -r34.xxxz, r34.xxxz, r28.xxxy + add r23.xw, r23.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + mul r39.xy, r23.xwxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r23.xw, r34.yyyw, l(0.160000, 0.000000, 0.000000, 0.160000) + mov r38.z, r39.x + mov r38.w, r23.x + mov r37.z, r36.x + mov r37.w, r35.x + add r34.xyzw, r37.zwxz, r38.zwxz + mov r39.z, r38.y + mov r39.w, r23.w + mov r36.z, r37.y + mov r36.w, r35.z + add r28.xyw, r36.zyzw, r39.zyzw + div r35.xyz, r37.xzwx, r34.zwyz + add r35.xyz, r35.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r35.xyz, r35.xyzx, cb6[400].xxxx + div r36.xyz, r36.zywz, r28.xywx + add r36.xyz, r36.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r36.xyw, r36.xyxz, cb6[400].yyyy + mul r37.xyzw, r28.xxxy, r34.zwyz + mov r35.w, r36.x + mad r38.xyzw, r24.ywyw, cb6[400].xyxy, r35.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r22.z, r38.xyxx, t6.xxxx, s3, r28.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r38.zwzz, t6.xxxx, s3, r28.z + mul r23.x, r23.x, r37.y + mad r22.z, r37.x, r22.z, r23.x + mad r23.xw, r24.yyyw, cb6[400].xxxy, r35.zzzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r23.xwxx, t6.xxxx, s3, r28.z + mad r22.z, r37.z, r23.x, r22.z + mov r36.z, r35.x + mad r38.xyzw, r24.ywyw, cb6[400].xyxy, r36.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r38.xyxx, t6.xxxx, s3, r28.z + mad r22.z, r37.w, r23.x, r22.z + mul r37.xyzw, r28.yyww, r34.xyzw + mov r36.xz, r35.yyzy + mad r35.xyzw, r24.ywyw, cb6[400].xyxy, r36.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r35.xyxx, t6.xxxx, s3, r28.z + mad r22.z, r37.x, r23.x, r22.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r35.zwzz, t6.xxxx, s3, r28.z + mad r22.z, r37.y, r23.x, r22.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r38.zwzz, t6.xxxx, s3, r28.z + mad r22.z, r37.z, r23.x, r22.z + ige r23.x, r22.y, l(0) + or r32.xyz, r32.xyzx, r33.xyzx + or r23.w, r32.y, r32.x + or r23.w, r32.z, r23.w + and r26.w, r28.z, l(0x7fffffff) + ult r26.w, l(0x7f800000), r26.w + or r23.w, r23.w, r26.w + mad r32.xyzw, r24.ywyw, cb6[400].xyxy, r36.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r32.xyxx, t6.xxxx, s3, r28.z + mad r22.z, r37.w, r24.y, r22.z + mul r24.y, r28.w, r34.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.w, r32.zwzz, t6.xxxx, s3, r28.z + mad r22.z, r24.y, r24.w, r22.z + add r22.z, r22.z, l(-1.000000) + mad r22.y, cb6[r22.y + 288].w, r22.z, l(1.000000) + movc r22.y, r23.w, l(1.000000), r22.y + movc r22.y, r23.x, r22.y, l(1.000000) + else + mov r22.y, l(1.000000) + endif + if_nz r25.w + dp3 r22.z, r17.xyzx, r30.xyzx + mul_sat r23.x, r23.z, cb5[r15.w + 6].z + mad r23.x, r23.x, l(0.500000), r3.w + min r23.x, r23.x, l(1.000000) + div r23.x, r3.w, r23.x + mad r28.xyz, r17.xyzx, r22.zzzz, -r30.xyzx + dp3 r23.w, r31.xyzx, r28.xyzx + mul r22.z, r22.z, r22.z + mad r22.z, cb5[r15.w + 6].z, cb5[r15.w + 6].z, -r22.z + div_sat r22.z, r23.w, r22.z + mad r28.xyz, r30.xyzx, r22.zzzz, r31.xyzx + dp3 r22.z, r28.xyzx, r28.xyzx + rsq r22.z, r22.z + mul r29.xyz, r22.zzzz, r28.xyzx + else + mov r23.x, l(1.000000) + endif + if_nz r22.x + mul_sat r22.x, r23.z, cb5[r18.z + 6].y + mad r28.xyz, r2.xyzx, r2.wwww, r29.xyzx + dp3 r22.z, r28.xyzx, r28.xyzx + max r22.z, r22.z, l(0.0000610351562) + rsq r22.z, r22.z + mul r28.xyz, r22.zzzz, r28.xyzx + dp3_sat r22.z, r7.xyzx, r28.xyzx + dp3_sat r23.z, r4.xyzx, r28.xyzx + lt r23.w, l(0.000000), r22.x + mul r22.x, r22.x, r22.x + mad r24.y, r23.z, l(3.600000), l(0.400000) + div r22.x, r22.x, r24.y + mad r22.x, r9.w, r9.w, r22.x + min r22.x, r22.x, l(1.000000) + movc r22.x, r23.w, r22.x, r3.w + mul r22.x, r22.x, r22.x + mad r23.w, r22.z, r22.x, -r22.z + mad r22.z, r23.w, r22.z, l(1.000000) + add r23.z, -r23.z, l(1.000000) + mul r23.w, r23.z, r23.z + mul r23.w, r23.w, r23.w + mul r24.y, r23.z, r23.w + mad r23.z, -r23.w, r23.z, l(1.000000) + mad r28.xyz, r15.xyzx, r23.zzzz, r24.yyyy + mul r22.z, r22.z, r22.z + div r22.z, r22.x, r22.z + mul r22.z, r23.x, r22.z + mad r23.x, -r9.x, r22.x, r9.x + mad r23.x, r23.x, r9.x, r22.x + sqrt r23.x, r23.x + mad r23.z, -r24.x, r22.x, r24.x + mad r22.x, r23.z, r24.x, r22.x + sqrt r22.x, r22.x + mul r22.x, r9.x, r22.x + mad r22.x, r24.x, r23.x, r22.x + add r22.x, r22.x, l(0.000100) + div r22.x, l(0.500000), r22.x + mul r22.x, r22.x, r22.z + mul r23.xzw, r22.xxxx, r28.xxyz + min r23.xzw, r23.xxzw, l(2048.000000, 0.000000, 2048.000000, 2048.000000) + mad r22.xz, r24.xxzx, l(0.968750, 0.000000, 0.968750, 0.000000), l(0.015625, 0.000000, 0.015625, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r22.x, r22.xzxx, t10.xyzw, s0, l(0.000000) + mul r22.x, r9.y, r22.x + mul r22.x, r0.x, r22.x + div r22.x, r22.x, r7.w + mul r28.xyz, r20.xyzx, r22.xxxx + div r28.xyz, r28.xyzx, r21.xyzx + add r23.xzw, r23.xxzw, r28.xxyz + mul r23.xzw, r23.xxzw, cb5[r18.z + 6].zzzz + max r23.xzw, r23.xxzw, l(0.000000, 0.000000, 0.000000, 0.000000) + min r23.xzw, r23.xxzw, l(1000.000000, 0.000000, 1000.000000, 1000.000000) + mul r28.xyz, r14.xyzx, r24.xxxx + mad r23.xzw, r23.xxzw, r24.xxxx, r28.xxyz + mul r24.xyw, r21.wwww, cb5[r20.w + 6].xyxz + mul r22.xyz, r22.yyyy, r24.xywx + mul r22.xyz, r18.wwww, r22.xyzx + mul r22.xyz, r22.xyzx, r23.xzwx + else + mov r22.xyz, l(0,0,0,0) + endif + else + if_z r19.w + mad r18.w, cb5[r15.w + 6].y, l(0.500000), l(0.500000) + add r28.x, r18.w, -|cb5[r15.w + 6].x| + add r28.y, -r28.x, cb5[r15.w + 6].y + add r18.w, -|r28.x|, l(1.000000) + add r18.w, -|r28.y|, r18.w + max r18.w, r18.w, l(0.000488281250) + ge r19.w, cb5[r15.w + 6].x, l(0.000000) + movc r28.z, r19.w, r18.w, -r18.w + dp3 r18.w, r28.xyzx, r28.xyzx + rsq r18.w, r18.w + mul r23.xzw, r18.wwww, r28.xxyz + add r24.xyw, -r1.xyxz, cb5[r27.x + 6].xyxz + dp3 r18.w, r24.xywx, r24.xywx + rsq r19.w, r18.w + mul r28.xyz, r19.wwww, r24.xywx + ftoi r18.z, cb5[r18.z + 6].w + mul r29.xyz, r23.xzwx, cb5[r15.w + 6].zzzz + mad r30.xyz, -r29.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xywx + mad r29.xyz, r29.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xywx + ftou r19.w, cb5[r20.w + 6].w + and r19.w, r19.w, l(1) + ieq r20.w, r19.w, l(0) + not r20.w, r20.w + lt r21.w, l(0.000000), cb5[r15.w + 6].z + and r20.w, r20.w, r21.w + dp3 r21.w, r30.xyzx, r30.xyzx + sqrt r21.w, r21.w + dp3 r25.w, r29.xyzx, r29.xyzx + sqrt r25.w, r25.w + dp3 r26.w, r30.xyzx, r29.xyzx + mad r21.w, r21.w, r25.w, r26.w + mad r21.w, r21.w, l(0.500000), l(1.000000) + div r21.w, l(1.000000, 1.000000, 1.000000, 1.000000), r21.w + movc r21.w, r20.w, r21.w, l(1.000000) + lt r25.w, cb5[r27.w + 6].w, l(0.000000) + if_nz r25.w + mul r25.w, cb5[r27.x + 6].w, cb5[r27.x + 6].w + mul r25.w, r18.w, r25.w + mad r25.w, -r25.w, r25.w, l(1.000000) + max r25.w, r25.w, l(0.000000) + add r18.w, r18.w, l(1.000000) + div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), r18.w + and r26.w, r20.w, l(0x3f800000) + add r27.z, -r18.w, r21.w + mad r18.w, r26.w, r27.z, r18.w + mul r25.w, r25.w, r25.w + mul r18.w, r18.w, r25.w + else + mul r29.xyz, r24.xywx, cb5[r27.x + 6].wwww + dp3 r25.w, r29.xyzx, r29.xyzx + min r25.w, r25.w, l(1.000000) + add r25.w, -r25.w, l(1.000000) + log r25.w, r25.w + mul r25.w, r25.w, cb5[r27.w + 6].w + exp r25.w, r25.w + mul r18.w, r21.w, r25.w + endif + dp3 r21.w, r28.xyzx, -r23.xzwx + add r21.w, r21.w, -cb5[r15.w + 6].z + mul_sat r21.w, r21.w, cb5[r15.w + 6].w + mul r21.w, r21.w, r21.w + movc r21.w, r19.w, l(1.000000), r21.w + mul r18.w, r18.w, r21.w + not r20.w, r20.w + ige r21.w, r18.z, l(0) + and r20.w, r20.w, r21.w + if_nz r20.w + if_z r19.w + ishl r20.w, r18.z, l(2) + mul r23.xzw, r1.yyyy, cb7[r20.w + 33].xxyw + mad r23.xzw, cb7[r20.w + 32].xxyw, r1.xxxx, r23.xxzw + mad r23.xzw, cb7[r20.w + 34].xxyw, r1.zzzz, r23.xxzw + add r23.xzw, r23.xxzw, cb7[r20.w + 35].xxyw + div_sat r23.xz, r23.xxzx, r23.wwww + mad r23.xz, r23.xxzx, cb7[r18.z + 0].zzwz, cb7[r18.z + 0].xxyx + else + ishl r20.w, r18.z, l(2) + dp3 r29.x, -r24.xywx, cb7[r20.w + 32].xyzx + dp3 r29.y, -r24.xywx, cb7[r20.w + 33].xyzx + dp3 r29.z, -r24.xywx, cb7[r20.w + 34].xyzx + lt r20.w, |r29.x|, |r29.y| + and r20.w, r20.w, l(1) + dp2 r21.w, |r29.xyxx|, icb[r20.w + 0].xyxx + lt r21.w, r21.w, |r29.z| + movc r20.w, r21.w, l(2), r20.w + dp3 r21.w, r29.xyzx, icb[r20.w + 0].xyzx + lt r21.w, r21.w, l(0.000000) + bfi r20.w, l(31), l(1), r20.w, r21.w + ushr r21.w, r20.w, l(1) + dp3 r21.w, r29.xyzx, icb[r21.w + 0].xyzx + div r23.w, l(0.000244140625), cb7[r18.z + 0].w + add r23.w, -r23.w, l(0.500000) + utof r24.x, r20.w + ult r24.y, r20.w, l(2) + and r24.y, r24.y, l(2) + dp2 r24.y, r29.xzxx, icb[r24.y + 0].xzxx + mul r24.y, r24.y, icb[r20.w + 4].z + div r24.y, r24.y, |r21.w| + mad r24.x, r24.y, r23.w, r24.x + add r24.x, r24.x, l(0.500000) + mul_sat r24.x, r24.x, l(0.166666672) + iadd r24.w, l(-1), icb[r20.w + 4].y + dp2 r24.w, r29.yzyy, icb[r24.w + 0].xyxx + mul r20.w, r24.w, icb[r20.w + 4].w + div r20.w, r20.w, |r21.w| + mad_sat r24.y, -r20.w, r23.w, l(0.500000) + mad r23.xz, r24.xxyx, cb7[r18.z + 0].zzwz, cb7[r18.z + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r18.z, r23.xzxx, t18.yzxw, s0, l(0.000000) + mul r18.w, r18.z, r18.w + endif + lt r18.z, l(0.000000), r18.w + if_nz r18.z + if_z r19.w + ftoi r18.z, cb5[r27.y + 6].x + else + add r23.xzw, r1.xxyz, -cb5[r27.x + 6].xxyz + lt r24.xyw, |r23.zwzw|, |r23.xxxz| + and r18.w, r24.y, r24.x + lt r23.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xxzw + ushr r19.w, cb5[r15.w + 6].w, l(24) + ubfe r24.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r15.w + 6].wwww + movc r19.w, r23.x, r19.w, r24.x + and r15.w, l(255), cb5[r15.w + 6].w + movc r15.w, r23.z, r24.y, r15.w + ubfe r20.w, l(8), l(8), cb5[r27.y + 6].x + and r21.w, l(255), cb5[r27.y + 6].x + movc r20.w, r23.w, r20.w, r21.w + movc r15.w, r24.w, r15.w, r20.w + movc r15.w, r18.w, r19.w, r15.w + ilt r18.w, r15.w, l(80) + movc r18.z, r18.w, r15.w, l(-1) + endif + ishl r15.w, r18.z, l(2) + mad r23.xzw, r28.xxyz, cb6[r18.z + 288].xxxx, r1.xxyz + mul r18.w, l(5.000000), cb6[r18.z + 288].y + mad r23.xzw, r7.xxyz, r18.wwww, r23.xxzw + mul r27.xyzw, r23.zzzz, cb6[r15.w + 65].xyzw + mad r27.xyzw, cb6[r15.w + 64].xyzw, r23.xxxx, r27.xyzw + mad r27.xyzw, cb6[r15.w + 66].xyzw, r23.wwww, r27.xyzw + add r27.xyzw, r27.xyzw, cb6[r15.w + 67].xyzw + div r23.xzw, r27.xxyz, r27.wwww + ge r24.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xzxw + ge r27.xyz, r23.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r28.xy, -cb6[r18.z + 344].xyxx, cb6[r18.z + 344].zwzz + mad r23.xz, r23.xxzx, r28.xxyx, cb6[r18.z + 344].xxyx + mad r28.xy, r23.xzxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r28.xy, r28.xyxx + mad r23.xz, r23.xxzx, cb6[400].zzwz, -r28.xxyx + add r29.xyzw, r23.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r30.xyzw, r29.xxzz, r29.xxzz + add r28.zw, -r23.xxxz, l(0.000000, 0.000000, 1.000000, 1.000000) + min r29.xz, r23.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r31.xy, r23.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r32.xy, r28.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r31.xy, -r31.xyxx, r31.xyxx, r29.ywyy + add r31.xy, r31.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r31.xy, r31.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r30.xz, r30.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r23.xz, r30.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r23.xxzx + mul r33.xy, r23.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r23.xz, -r29.xxzx, r29.xxzx, r28.zzwz + add r23.xz, r23.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r34.xy, r23.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r23.xz, r29.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) + mov r33.z, r34.x + mov r33.w, r23.x + mov r32.z, r31.x + mov r32.w, r30.x + add r29.xyzw, r32.zwxz, r33.zwxz + mov r34.z, r33.y + mov r34.w, r23.z + mov r31.z, r32.y + mov r31.w, r30.z + add r30.xyz, r31.zywz, r34.zywz + div r32.xyz, r32.xzwx, r29.zwyz + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyz, r32.xyzx, cb6[400].xxxx + div r31.xyz, r31.zywz, r30.xyzx + add r31.xyz, r31.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r31.xyw, r31.xyxz, cb6[400].yyyy + mul r33.xyzw, r29.zwyz, r30.xxxy + mov r32.w, r31.x + mad r34.xyzw, r28.xyxy, cb6[400].xyxy, r32.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r34.xyxx, t6.xxxx, s3, r23.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r34.zwzz, t6.xxxx, s3, r23.w + mul r18.w, r18.w, r33.y + mad r15.w, r33.x, r15.w, r18.w + mad r23.xz, r28.xxyx, cb6[400].xxyx, r32.zzwz + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r23.xzxx, t6.xxxx, s3, r23.w + mad r15.w, r33.z, r18.w, r15.w + mov r31.z, r32.x + mad r34.xyzw, r28.xyxy, cb6[400].xyxy, r31.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r34.xyxx, t6.xxxx, s3, r23.w + mad r15.w, r33.w, r18.w, r15.w + mul r33.xyzw, r29.xyzw, r30.yyzz + mov r31.xz, r32.yyzy + mad r32.xyzw, r28.xyxy, cb6[400].xyxy, r31.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r32.xyxx, t6.xxxx, s3, r23.w + mad r15.w, r33.x, r18.w, r15.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r32.zwzz, t6.xxxx, s3, r23.w + mad r15.w, r33.y, r18.w, r15.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r34.zwzz, t6.xxxx, s3, r23.w + mad r15.w, r33.z, r18.w, r15.w + ige r18.w, r18.z, l(0) + or r24.xyw, r24.xyxw, r27.xyxz + or r19.w, r24.y, r24.x + or r19.w, r24.w, r19.w + and r20.w, r23.w, l(0x7fffffff) + ult r20.w, l(0x7f800000), r20.w + or r19.w, r19.w, r20.w + mad r27.xyzw, r28.xyxy, cb6[400].xyxy, r31.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r27.xyxx, t6.xxxx, s3, r23.w + mad r15.w, r33.w, r20.w, r15.w + mul r20.w, r29.y, r30.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r27.zwzz, t6.xxxx, s3, r23.w + mad r15.w, r20.w, r21.w, r15.w + add r15.w, r15.w, l(-1.000000) + mad r15.w, cb6[r18.z + 288].w, r15.w, l(1.000000) + movc r15.w, r19.w, l(1.000000), r15.w + movc r15.w, r18.w, r15.w, l(1.000000) + else + mov r15.w, l(1.000000) + endif + else + mov r15.w, l(1.000000) + endif + mul r13.w, r13.w, r15.w + mov r22.xyz, l(0,0,0,0) + endif + add r26.xyz, r22.xyzx, r26.xyzx + mov r14.w, r17.w + endloop + mov r9.z, r13.w + add r25.xyz, r25.xyzx, r26.xyzx + iadd r10.w, r10.w, l(1) +endloop +// === Glass Fix: Reduce clustered lights and overall brightness === +lt r32.x, l(0.500000), cb13[14].x +if_nz r32.x + mul r25.xyz, r25.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mul r5.xyw, r5.xyxw, l(0.650000, 0.650000, 0.000000, 0.650000) +endif +dp3 r0.x, r5.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r1.xzw, -r0.xxxx, r5.xxyw +mad r0.xyz, cb0[184].wwww, r1.xzwx, r0.xxxx +add r1.xzw, -cb2[20].xxyz, cb1[r6.w + 13].xxyz +mad r1.xzw, cb1[r6.w + 13].wwww, r1.xxzw, cb2[20].xxyz +mul r1.xzw, r5.zzzz, r1.xxzw +mul r1.xzw, r1.xxzw, cb2[21].xxxx +mul r1.xzw, r1.xxzw, r4.wwww +mad r2.xyz, -r6.xyzx, r10.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r2.xyz, cb2[19].yyyy, r2.xyzx, r11.xyzx +mul r1.xzw, r1.xxzw, r2.xxyz +add r2.x, l(1.000000), -cb1[r6.w + 11].x +mul r1.xzw, r1.xxzw, r2.xxxx +add r2.x, l(1.000000), -cb2[19].x +mad r2.x, cb0[109].x, cb2[19].x, r2.x +div r2.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.x +mul r1.xzw, r1.xxzw, r2.xxxx +mad r0.xyz, r0.xyzx, cb0[184].xyzx, r1.xzwx +mad r1.xzw, r25.xxyz, r9.zzzz, r19.xxyz +add r0.xyz, r0.xyzx, r1.xzwx +mad r1.x, r1.y, cb0[156].w, cb0[157].w +mad r1.z, r0.w, cb0[154].w, -cb0[153].w +max r1.xz, r1.xxzx, l(0.010000, 0.000000, 0.000000, 0.000000) +mul r1.w, r1.x, l(-1.442695) +exp r1.w, r1.w +add r1.w, -r1.w, l(1.000000) +div r1.x, r1.w, r1.x +mad r1.w, r1.y, cb0[156].w, cb0[158].w +mul r1.w, r1.w, l(1.442695) +exp r1.w, r1.w +mul r1.x, r1.w, r1.x +mul r1.x, r1.x, -r1.z +mul r1.xzw, r1.xxxx, cb0[155].xxyz +mul r1.xzw, r1.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r1.xzw, r1.xxzw +dp3 r2.x, -r4.xyzx, cb0[154].xyzx +mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r2.xxxx, cb0[155].wwww +add r2.y, -r2.z, r2.y +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r16.w, l(7), cb0[108].w + imad r5.xyz, r16.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r2.z, r5.y, r5.z, r5.x + imad r2.w, r5.z, r2.z, r5.y + imad r3.w, r2.z, r2.w, r5.z + imad r5.x, r2.w, r3.w, r2.z + dp3 r2.z, -r4.xyzx, -r3.xyzx + add r3.x, r1.y, -cb0[44].y + lt r3.y, l(5.960464478E-08), r2.z + div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z + and r2.z, r2.z, r3.y + mul r2.z, r2.z, cb0[163].w + div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w + mul r3.z, r2.z, r3.y + mad r4.x, r3.z, r3.x, cb0[44].y + mad r3.x, -r3.z, r3.x, r3.x + mul r3.z, r3.x, cb0[159].z + mul r3.x, r3.x, cb0[162].x + max r3.xz, r3.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + add r4.y, r4.x, -cb0[159].x + mul r4.y, r4.y, cb0[159].z + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[159].y + lt r4.z, l(5.960464478E-08), |r3.z| + exp r4.w, -r3.z + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.z + mad r3.z, -r3.z, l(0.240226507), l(0.693147182) + movc r3.z, r4.z, r4.w, r3.z + add r4.x, r4.x, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.z, l(5.960464478E-08), |r3.x| + exp r4.w, -r3.x + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.x + mad r3.x, -r3.x, l(0.240226507), l(0.693147182) + movc r3.x, r4.z, r4.w, r3.x + mul r3.x, r3.x, r4.x + mad r3.x, r4.y, r3.z, r3.x + mad r2.z, -r2.z, r3.y, l(1.000000) + mul r2.z, r0.w, r2.z + mul r2.z, r2.z, r3.x + exp r2.z, -r2.z + min r2.z, r2.z, l(1.000000) + max r2.z, r2.z, cb0[161].w + mad_sat r3.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r2.z, r2.z, r3.x + add r2.z, r3.y, r2.z + min r2.z, r2.z, l(1.000000) + imad r5.y, r3.w, r5.x, r2.w + ushr r3.xy, r5.xyxx, l(16, 16, 0, 0) + utof r3.xy, r3.xyxx + mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb0[167].wwww, r18.xyxx + mul r3.xy, r3.xyxx, cb0[165].xyxx + mad r2.w, r16.z, cb0[164].x, cb0[164].y + log r2.w, r2.w + mul r2.w, r2.w, cb0[164].z + div r3.z, r2.w, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t17.xyzw, s0, l(0.000000) + add r2.w, r16.z, -cb0[166].z + mul_sat r2.w, r2.w, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r2.wwww, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r2.w, -r2.z, l(1.000000) + mul r4.xyz, r2.wwww, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r2.z, r2.z, r3.w +else + add r1.y, r1.y, -cb0[44].y + mul r2.w, r1.y, cb0[159].z + max r2.w, r2.w, l(-127.000000) + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r2.w| + exp r4.y, -r2.w + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r4.x, r4.y, r2.w + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.y, r4.z, r1.y + mul r1.y, r1.y, r4.x + mad r1.y, r3.w, r2.w, r1.y + mul r1.y, r0.w, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.w, r1.y, r4.x + add r0.w, r4.y, r0.w + min r2.z, r0.w, l(1.000000) + add r0.w, -r2.z, l(1.000000) + mul r3.xyz, r0.wwww, cb0[161].xyzx +endif +mul r4.xyz, r1.xzwx, r2.zzzz +mad r0.w, r2.x, r2.x, l(1.000000) +mul r0.w, r0.w, l(0.0596831031) +mad r5.xyz, cb0[156].xyzx, r0.wwww, cb0[158].xyzx +mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r1.y, r2.y, l(12.566371) +sqrt r2.x, r2.y +mul r1.y, r1.y, r2.x +max r1.y, r1.y, l(0.001000) +div r0.w, r0.w, r1.y +mad_sat r2.xyw, cb0[157].xyxz, r0.wwww, r5.xyxz +mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) +add r1.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r1.xyz, r1.xyzx, r2.xywx +mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx +// === Glass Transparency Fix === +lt r30.x, l(0.500000), cb13[14].x +if_nz r30.x + // Boost transmittance: lerp(r4, 1, 0.5) + add r30.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r30.xyz, r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r4.xyzx + // Reduce inscatter intensity + mul r31.xyz, r1.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000) + // Modified fog blend + mad r0.xyz, r0.xyzx, r30.xyzx, r31.xyzx +else + // Original fog blend + mad r0.xyz, r0.xyzx, r4.xyzx, r1.xyzx +endif +add r0.xyz, -r12.xyzx, r0.xyzx +mad r8.xyz, r8.wwww, r0.xyzx, r12.xyzx +mul r0.xy, r13.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r0.xy, |r0.xyxx| +sqrt r0.xy, r0.xyxx +mov r13.z, -r13.y +lt r0.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r13.xxxz +lt r1.xy, r13.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r0.zw, -r0.zzzw, r1.xxxy +itof r0.zw, r0.zzzw +mul r0.xy, r0.zwzz, r0.xyxx +mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +max r0.z, cb1[r6.w + 4].z, cb1[r6.w + 4].y +add r0.z, r0.z, l(-0.100000024) +lt r0.w, l(0.000000), r0.z +lt r0.z, r0.z, l(0.000000) +iadd r0.z, -r0.w, r0.z +itof r0.z, r0.z +mov_sat r0.z, r0.z +add r1.xy, -r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mad r0.xy, r0.zzzz, r1.xyxx, r0.xyxx +min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) +dp3 r0.x, r8.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mul r0.x, r8.w, r0.x +max r0.x, r8.w, r0.x +mul_sat r0.x, r0.x, l(10.000000) +lt r0.x, l(0.500000), r0.x +and o1.z, r0.x, l(0x3f800000) +// === Glass Highlight Compression === +lt r30.x, l(0.500000), cb13[14].x +if_nz r30.x + // Compute luminance + dp3 r30.y, r8.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) + // Soft compress if luminance > 0.5 + lt r30.z, l(0.500000), r30.y + if_nz r30.z + // compression = 0.5 + 1.5 * (1 - exp(-(luma - 0.5) / 1.5)) + add r30.w, r30.y, l(-0.500000) + mul r30.w, r30.w, l(-0.666667) + exp r30.w, r30.w + add r30.w, -r30.w, l(1.000000) + mad r30.w, r30.w, l(1.500000), l(0.500000) + // scale = compression / luma + max r31.x, r30.y, l(0.001000) + div r31.x, r30.w, r31.x + mul r8.xyz, r8.xyzx, r31.xxxx + endif +endif +mov o0.xyzw, r8.xyzw +mov o1.w, l(0) +ret +// Approximately 0 instruction slots used From 7c23692359ee01716ec06f2283efbbe264e775fb Mon Sep 17 00:00:00 2001 From: SGTForgery Date: Fri, 13 Feb 2026 01:10:19 +0000 Subject: [PATCH 15/40] feat(endfield) Added Improved GTAO with Vis Bitmask, AO modulation to direct lighting, Ultrawide support for UID, latency bar hiding, Tech Test alt grading --- src/games/endfield/addon.cpp | 286 ++- .../{ => ao}/ao-blur_0x80CD64F6.cs_5_0.hlsl | 7 +- .../ao/gtao-main_0xE1A460D9.cs_5_0.hlsl | 420 ++++ .../gtao-spatial-avg_0xB6A67E5A.cs_5_0.hlsl | 40 + .../ao/gtao-temporal_0x3F036C0E.cs_5_0.hlsl | 119 + .../gtao-vertical-blur_0x88B36DD5.cs_5_0.hlsl | 62 + ...loom-downsample-lut_0xC58C5FBA.cs_5_0.hlsl | 328 +++ .../bloom-downsample_0x2CF2F67B.cs_5_0.hlsl | 224 ++ .../bloom-downsample_0x948BF835.cs_5_0.hlsl | 204 ++ .../0x05D849CE.ps_5_0_original_backup.asm | 1844 -------------- .../endfield/deferred-lighting/0x0E84DFD1.cso | Bin 60152 -> 60272 bytes .../deferred-lighting/0x0E84DFD1.ps_5_0.asm | 13 +- .../0x0E84DFD1.ps_5_0_original_backup.asm | 1942 --------------- .../endfield/deferred-lighting/0x1E8A471E.cso | Bin 47180 -> 47540 bytes .../deferred-lighting/0x1E8A471E.ps_5_0.asm | 46 +- .../0x1E8A471E.ps_5_0_original_backup.asm | 1516 ------------ .../endfield/deferred-lighting/0x37837806.cso | Bin 26916 -> 27044 bytes .../deferred-lighting/0x37837806.ps_5_0.asm | 38 +- .../0x37837806.ps_5_0_original_backup.asm | 884 ------- .../endfield/deferred-lighting/0x518D3855.cso | Bin 51720 -> 51840 bytes .../deferred-lighting/0x518D3855.ps_5_0.asm | 5 +- .../0x518D3855.ps_5_0_original_backup.asm | 1678 ------------- .../0x5468822B.ps_5_0_original_backup.asm | 1840 -------------- .../endfield/deferred-lighting/0x620A40FD.cso | Bin 27940 -> 28060 bytes .../deferred-lighting/0x620A40FD.ps_5_0.asm | 5 +- .../0x620A40FD.ps_5_0_original_backup.asm | 901 ------- .../endfield/deferred-lighting/0x7010AF4B.cso | Bin 27300 -> 27420 bytes .../deferred-lighting/0x7010AF4B.ps_5_0.asm | 13 +- .../0x7010AF4B.ps_5_0_original_backup.asm | 869 ------- .../endfield/deferred-lighting/0x8BA3C806.cso | Bin 48188 -> 48308 bytes .../deferred-lighting/0x8BA3C806.ps_5_0.asm | 13 +- .../0x8BA3C806.ps_5_0_original_backup.asm | 1532 ------------ .../0x8D6CC6FA.ps_5_0_original_backup.asm | 2190 ----------------- .../0x9630ACD4.ps_5_0_original_backup.asm | 1576 ------------ .../endfield/deferred-lighting/0x99725481.cso | Bin 60672 -> 60792 bytes .../deferred-lighting/0x99725481.ps_5_0.asm | 13 +- .../0x99725481.ps_5_0_original_backup.asm | 1959 --------------- .../endfield/deferred-lighting/0xA4113DE8.cso | Bin 39252 -> 39372 bytes .../deferred-lighting/0xA4113DE8.ps_5_0.asm | 13 +- .../0xA4113DE8.ps_5_0_original_backup.asm | 1279 ---------- .../endfield/deferred-lighting/0xB094C87E.cso | Bin 51188 -> 51308 bytes .../deferred-lighting/0xB094C87E.ps_5_0.asm | 5 +- .../0xB094C87E.ps_5_0_original_backup.asm | 1661 ------------- .../endfield/deferred-lighting/0xBD99F0C4.cso | Bin 30100 -> 30220 bytes .../deferred-lighting/0xBD99F0C4.ps_5_0.asm | 5 +- .../0xBD99F0C4.ps_5_0_original_backup.asm | 990 -------- .../0xC34914B1.ps_5_0_original_backup.asm | 1911 -------------- .../endfield/deferred-lighting/0xD3FA93FC.cso | Bin 48536 -> 48664 bytes .../deferred-lighting/0xD3FA93FC.ps_5_0.asm | 38 +- .../0xD3FA93FC.ps_5_0_original_backup.asm | 1573 ------------ .../endfield/deferred-lighting/0xD5B102A4.cso | Bin 38580 -> 38860 bytes .../deferred-lighting/0xD5B102A4.ps_5_0.asm | 13 +- .../0xD5B102A4.ps_5_0_original_backup.asm | 1263 ---------- .../endfield/deferred-lighting/0xD88CD7C9.cso | Bin 26292 -> 26420 bytes .../deferred-lighting/0xD88CD7C9.ps_5_0.asm | 46 +- .../0xD88CD7C9.ps_5_0_original_backup.asm | 853 ------- .../endfield/deferred-lighting/0xE322C21D.cso | Bin 49564 -> 49684 bytes .../deferred-lighting/0xE322C21D.ps_5_0.asm | 5 +- .../0xE322C21D.ps_5_0_original_backup.asm | 1590 ------------ .../0xEC0BE43D.ps_5_0_original_backup.asm | 1847 -------------- .../endfield/deferred-lighting/0xF901F0EC.cso | Bin 29572 -> 29692 bytes .../deferred-lighting/0xF901F0EC.ps_5_0.asm | 5 +- .../0xF901F0EC.ps_5_0_original_backup.asm | 973 -------- .../deferred-lighting/Notes for future.txt | 14 + .../deferred-lighting/fog_blend_test.asm | 50 - .../deferred-lighting/fog_blend_test.cso | Bin 1052 -> 0 bytes src/games/endfield/glass/0x183ADBF7.cso | Bin 0 -> 56220 bytes ...ginal_backup.asm => 0x183ADBF7.ps_5_0.asm} | 1890 +++++++------- src/games/endfield/glass/0x41AF9F2B.cso | Bin 0 -> 55588 bytes .../endfield/glass/0x41AF9F2B.ps_5_0.asm | 1805 ++++++++++++++ src/games/endfield/glass/0x424F9536.cso | Bin 0 -> 56364 bytes .../endfield/glass/0x424F9536.ps_5_0.asm | 1833 ++++++++++++++ src/games/endfield/glass/0x69B6459F.cso | Bin 0 -> 55740 bytes .../endfield/glass/0x69B6459F.ps_5_0.asm | 1812 ++++++++++++++ src/games/endfield/glass/0x843686F6.cso | Bin 0 -> 57100 bytes .../endfield/glass/0x843686F6.ps_5_0.asm | 1860 ++++++++++++++ src/games/endfield/glass/0x859412D4.cso | Bin 0 -> 56676 bytes .../endfield/glass/0x859412D4.ps_5_0.asm | 1840 ++++++++++++++ .../0xB317E9E1.ps_5_0_original_backup.asm | 1707 ------------- .../0xB8941FB1.ps_5_0_original_backup.asm | 1754 ------------- src/games/endfield/glass/0xD2EC68A2.cso | Bin 0 -> 55952 bytes .../endfield/glass/0xD2EC68A2.ps_5_0.asm | 1817 ++++++++++++++ src/games/endfield/glass/0xF831814B.cso | Bin 0 -> 53924 bytes .../endfield/glass/0xF831814B.ps_5_0.asm | 1758 +++++++++++++ .../others/blit_0x7CF14F74.ps_5_0.hlsl | 42 + .../others/skybox2_0xEC809E79.ps_5_0.hlsl | 9 + .../others/skybox_0x9E0DE464.ps_5_0.hlsl | 8 + .../sun-lens-dirt_0xC3217979.ps_5_0.hlsl | 2 +- .../cloud-shadows_0x61FA72DD.ps_5_0.hlsl | 2 +- .../grass-shadowing_0x0C02AB31.cs_5_0.hlsl | 8 +- src/games/endfield/shared.h | 39 +- .../ssr/ssr-denoiser_0xF99BCA96.cs_5_0.hlsl | 203 ++ .../ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl | 348 +++ ...sl => ssr-temporal_0xE92EE541.cs_5_0.hlsl} | 27 +- .../ssr/ssr-upsample_0xE714AB7B.cs_5_0.hlsl | 76 + .../ui/latencybar_0x9BDC181F.vs_5_0.hlsl | 48 +- .../endfield/ui/ui14_0xB084133A.ps_5_0.hlsl | 95 + .../endfield/ui/ui15_0x25054A9A.ps_5_0.hlsl | 97 + src/games/endfield/waterfalls/0xF5AB0A61.cso | Bin 0 -> 59728 bytes .../endfield/waterfalls/0xF5AB0A61.ps_5_0.asm | 1934 +++++++++++++++ 100 files changed, 18436 insertions(+), 37279 deletions(-) rename src/games/endfield/{ => ao}/ao-blur_0x80CD64F6.cs_5_0.hlsl (89%) create mode 100644 src/games/endfield/ao/gtao-main_0xE1A460D9.cs_5_0.hlsl create mode 100644 src/games/endfield/ao/gtao-spatial-avg_0xB6A67E5A.cs_5_0.hlsl create mode 100644 src/games/endfield/ao/gtao-temporal_0x3F036C0E.cs_5_0.hlsl create mode 100644 src/games/endfield/ao/gtao-vertical-blur_0x88B36DD5.cs_5_0.hlsl create mode 100644 src/games/endfield/bloom/bloom-downsample-lut_0xC58C5FBA.cs_5_0.hlsl create mode 100644 src/games/endfield/bloom/bloom-downsample_0x2CF2F67B.cs_5_0.hlsl create mode 100644 src/games/endfield/bloom/bloom-downsample_0x948BF835.cs_5_0.hlsl delete mode 100644 src/games/endfield/deferred-lighting/0x05D849CE.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0x37837806.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0x518D3855.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0x5468822B.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0x8D6CC6FA.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0x99725481.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0xB094C87E.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/deferred-lighting/Notes for future.txt delete mode 100644 src/games/endfield/deferred-lighting/fog_blend_test.asm delete mode 100644 src/games/endfield/deferred-lighting/fog_blend_test.cso create mode 100644 src/games/endfield/glass/0x183ADBF7.cso rename src/games/endfield/glass/{0x754218B1.ps_5_0_original_backup.asm => 0x183ADBF7.ps_5_0.asm} (53%) create mode 100644 src/games/endfield/glass/0x41AF9F2B.cso create mode 100644 src/games/endfield/glass/0x41AF9F2B.ps_5_0.asm create mode 100644 src/games/endfield/glass/0x424F9536.cso create mode 100644 src/games/endfield/glass/0x424F9536.ps_5_0.asm create mode 100644 src/games/endfield/glass/0x69B6459F.cso create mode 100644 src/games/endfield/glass/0x69B6459F.ps_5_0.asm create mode 100644 src/games/endfield/glass/0x843686F6.cso create mode 100644 src/games/endfield/glass/0x843686F6.ps_5_0.asm create mode 100644 src/games/endfield/glass/0x859412D4.cso create mode 100644 src/games/endfield/glass/0x859412D4.ps_5_0.asm delete mode 100644 src/games/endfield/glass/0xB317E9E1.ps_5_0_original_backup.asm delete mode 100644 src/games/endfield/glass/0xB8941FB1.ps_5_0_original_backup.asm create mode 100644 src/games/endfield/glass/0xD2EC68A2.cso create mode 100644 src/games/endfield/glass/0xD2EC68A2.ps_5_0.asm create mode 100644 src/games/endfield/glass/0xF831814B.cso create mode 100644 src/games/endfield/glass/0xF831814B.ps_5_0.asm create mode 100644 src/games/endfield/ssr/ssr-denoiser_0xF99BCA96.cs_5_0.hlsl create mode 100644 src/games/endfield/ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl rename src/games/endfield/ssr/{0xE92EE541.cs_5_0.hlsl => ssr-temporal_0xE92EE541.cs_5_0.hlsl} (95%) create mode 100644 src/games/endfield/ssr/ssr-upsample_0xE714AB7B.cs_5_0.hlsl create mode 100644 src/games/endfield/ui/ui14_0xB084133A.ps_5_0.hlsl create mode 100644 src/games/endfield/ui/ui15_0x25054A9A.ps_5_0.hlsl create mode 100644 src/games/endfield/waterfalls/0xF5AB0A61.cso create mode 100644 src/games/endfield/waterfalls/0xF5AB0A61.ps_5_0.asm diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index e98c0a6d70..c3e94edf83 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -5,7 +5,7 @@ #define ImTextureID ImU64 -#define DEBUG_LEVEL_0 +// #define DEBUG_LEVEL_0 #include #include @@ -100,6 +100,10 @@ static uint32_t last_rtv_height = 0; // This prevents ReShade from rendering during normal present while allowing our bypass to work static bool bypass_render_active = false; +// Deferred Tech Test preset application (avoids crash from UpdateSetting inside on_change_value) +static int pending_tech_test_preset = -1; // -1 = none, 0 = restore defaults, 1 = apply tech test +static float prev_tech_test_look = -1.f; // impossible initial value forces first-frame detection + // Callback to disable effects during normal present when bypass is enabled // This prevents double-rendering (once via bypass, once via normal present) void OnReshadeBeginEffects(reshade::api::effect_runtime* runtime, @@ -150,6 +154,7 @@ bool ExecuteReshadeEffects(reshade::api::command_list* cmd_list) { const std::shared_lock lock(data->mutex); for (auto* runtime : data->effect_runtimes) { if (rtv_width != last_rtv_width || rtv_height != last_rtv_height) { +#ifdef DEBUG_LEVEL_0 uint32_t swapchain_width = 0, swapchain_height = 0; runtime->get_screenshot_width_and_height(&swapchain_width, &swapchain_height); @@ -157,6 +162,7 @@ bool ExecuteReshadeEffects(reshade::api::command_list* cmd_list) { ss << "[Endfield] ExecuteReshadeEffects: Rendering at RTV=" << rtv_width << "x" << rtv_height << " (Swapchain=" << swapchain_width << "x" << swapchain_height << ")"; reshade::log::message(reshade::log::level::info, ss.str().c_str()); +#endif last_rtv_width = rtv_width; last_rtv_height = rtv_height; @@ -768,6 +774,195 @@ renodx::utils::settings::Settings settings = { .tooltip = "Disables the game's built-in GTAO (Ground Truth Ambient Occlusion).\nUseful when using ReShade-based AO instead.", .labels = {"Off", "On"}, }, + new renodx::utils::settings::Setting{ + .key = "AORadius", + .binding = &shader_injection.ao_radius, + .default_value = 4.f, + .label = "AO Radius", + .section = "Ambient Occlusion", + .tooltip = "World-space sampling radius. Larger values detect occlusion from more distant geometry.", + .max = 16.f, + .format = "%.1f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AORadiusScale", + .binding = &shader_injection.ao_radius_scale, + .default_value = 1.f, + .label = "AO Radius Scale", + .section = "Ambient Occlusion", + .tooltip = "Multiplier on the effective radius. Fine-tune the reach of the AO sampling.", + .max = 5.f, + .format = "%.2f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AOFalloffRange", + .binding = &shader_injection.ao_falloff_range, + .default_value = 1.f, + .label = "AO Falloff Range", + .section = "Ambient Occlusion", + .tooltip = "Fraction of radius used for distance falloff (0-1). Lower = sharper falloff.", + .max = 1.f, + .format = "%.2f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AODistributionPower", + .binding = &shader_injection.ao_distribution_power, + .default_value = 2.f, + .label = "AO Distribution Power", + .section = "Ambient Occlusion", + .tooltip = "Controls how sample distances are distributed. Higher = samples pushed further out.", + .max = 5.f, + .format = "%.2f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AOThinOccluder", + .binding = &shader_injection.ao_thin_occluder, + .default_value = 2.f, + .label = "AO Thin Occluder", + .section = "Ambient Occlusion", + .tooltip = "Thin occluder compensation factor. Higher = more AO contribution from thin objects.", + .max = 8.f, + .format = "%.1f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AOGamma", + .binding = &shader_injection.ao_gamma, + .default_value = 2.2f, + .label = "AO Intensity (Gamma)", + .section = "Ambient Occlusion", + .tooltip = "Power curve applied to the final AO. Higher = darker/stronger occlusion.", + .max = 5.f, + .format = "%.2f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AOTemporalFrame", + .binding = &shader_injection.ao_temporal_frame, + .default_value = 64.f, + .label = "AO Temporal Frame", + .section = "Ambient Occlusion", + .tooltip = "Temporal frame count for jitter rotation cycling. Higher = more noise variation frames.", + .max = 128.f, + .format = "%.0f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AOMipBias", + .binding = &shader_injection.ao_mip_bias, + .default_value = 4.f, + .label = "AO Mip Bias", + .section = "Ambient Occlusion", + .tooltip = "Mip level bias for depth sampling. Higher = coarser/smoother depth reads.", + .max = 8.f, + .format = "%.1f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AODirectionCount", + .binding = &shader_injection.ao_direction_count, + .default_value = 6.f, + .label = "AO Direction Count", + .section = "Ambient Occlusion", + .tooltip = "Number of directional slices for horizon search. More = higher quality, higher cost.", + .min = 1.f, + .max = 12.f, + .format = "%.0f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AOStepCount", + .binding = &shader_injection.ao_step_count, + .default_value = 6.f, + .label = "AO Step Count", + .section = "Ambient Occlusion", + .tooltip = "Number of sample steps per direction. More = better horizon accuracy, higher cost.", + .min = 1.f, + .max = 12.f, + .format = "%.0f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AONormalAttenuation", + .binding = &shader_injection.ao_normal_attenuation, + .default_value = 0.05f, + .label = "AO Normal Attenuation", + .section = "Ambient Occlusion", + .tooltip = "Blends between surface normal and view direction for the visibility integral.", + .max = 1.f, + .format = "%.3f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AOThickness", + .binding = &shader_injection.ao_thickness, + .default_value = 0.5f, + .label = "AO Thickness", + .section = "Ambient Occlusion", + .tooltip = "Assumed thickness of occluders. Controls min-sample distance and bitmask backface offset.", + .max = 5.f, + .format = "%.2f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AODenoiserBlurBeta", + .binding = &shader_injection.ao_denoiser_blur_beta, + .default_value = 0.f, + .label = "AO Denoiser Blur", + .section = "Ambient Occlusion", + .tooltip = "Bilateral blur edge sensitivity. Higher = more blur, less edge preservation.", + .max = 3.f, + .format = "%.2f", + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AODebugView", + .binding = &shader_injection.ao_debug_view, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 0.f, + .label = "AO Debug View", + .section = "Ambient Occlusion", + .tooltip = "Switches between normal scene rendering and AO-only debug visualization.", + .labels = {"Off", "AO Only"}, + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .key = "AOBitmask", + .binding = &shader_injection.ao_bitmask, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 1.f, + .label = "AO Visibility Bitmask", + .section = "Ambient Occlusion", + .tooltip = "Enables XeGTAO visibility bitmask method. Replaces the default horizon-based integration with a bitmask-based approach for improved multi-layer occlusion.", + .labels = {"Off", "On"}, + .is_visible = []() { return false; }, + }, + new renodx::utils::settings::Setting{ + .value_type = renodx::utils::settings::SettingValueType::BUTTON, + .label = "Reset AO Settings to Defaults", + .section = "Ambient Occlusion", + .on_change = []() { + renodx::utils::settings::UpdateSetting("AORadius", 4.f); + renodx::utils::settings::UpdateSetting("AORadiusScale", 1.f); + renodx::utils::settings::UpdateSetting("AOFalloffRange", 1.f); + renodx::utils::settings::UpdateSetting("AODistributionPower", 2.f); + renodx::utils::settings::UpdateSetting("AOThinOccluder", 2.f); + renodx::utils::settings::UpdateSetting("AOGamma", 2.2f); + renodx::utils::settings::UpdateSetting("AOTemporalFrame", 64.f); + renodx::utils::settings::UpdateSetting("AOMipBias", 4.f); + renodx::utils::settings::UpdateSetting("AODirectionCount", 6.f); + renodx::utils::settings::UpdateSetting("AOStepCount", 6.f); + renodx::utils::settings::UpdateSetting("AONormalAttenuation", 0.05f); + renodx::utils::settings::UpdateSetting("AOThickness", 0.5f); + renodx::utils::settings::UpdateSetting("AODenoiserBlurBeta", 0.f); + renodx::utils::settings::UpdateSetting("AODebugView", 0.f); + renodx::utils::settings::UpdateSetting("AOBitmask", 1.f); + }, + }, new renodx::utils::settings::Setting{ .key = "HDRSun", .binding = &shader_injection.sun_intensity, @@ -803,7 +998,7 @@ renodx::utils::settings::Settings settings = { .key = "FogModification", .binding = &shader_injection.fog_modification, .value_type = renodx::utils::settings::SettingValueType::INTEGER, - .default_value = 1.f, + .default_value = 0.f, .label = "Hue-Preserving Fog", .section = "Rendering Improvements", .tooltip = "Toggles alternative hue-preserving fog", @@ -840,6 +1035,30 @@ renodx::utils::settings::Settings settings = { .tooltip = "Improves glass rendering to look more transparent and less cloudy/glowing", .labels = {"Vanilla", "Improved"}, }, + new renodx::utils::settings::Setting{ + .key = "ImprovedSSR", + .binding = &shader_injection.improved_ssr, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 1.f, + .label = "SSR Quality", + .section = "Rendering Improvements", + .tooltip = "Controls the game's SSR denoiser behavior.\n" + "Vanilla: Original denoiser.\n" + "Improved: Sharper reflections on smooth surfaces (metals, glass)\n" + " while retaining proper diffusion on rough surfaces (wood, stone).\n" + " Temporal smoothing is preserved to minimize firefly artifacts.", + .labels = {"Vanilla", "Improved"}, + }, + new renodx::utils::settings::Setting{ + .key = "ImprovedGTAO", + .binding = &shader_injection.improved_gtao, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 1.f, + .label = "GTAO + Visibility Bitmask + Deferred AO Modulation", + .section = "Rendering Improvements", + .tooltip = "Improves vanilla GTAO with visibility bitmask and AO modulation on direct lights (spotlights, point lights).", + .labels = {"Original", "Improved"}, + }, new renodx::utils::settings::Setting{ .key = "SwapChainCustomColorSpace", .binding = &shader_injection.swap_chain_custom_color_space, @@ -917,6 +1136,19 @@ renodx::utils::settings::Settings settings = { .parse = [](float value) { return value - 1.f; }, .is_visible = []() { return false; }, }, + new renodx::utils::settings::Setting{ + .key = "TechTestLook", + .binding = &shader_injection.tech_test_look, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 0.f, + .label = "Tech Test Look", + .section = "Alternative Grading", + .tooltip = "Activates visual adjustments to match the 2024 tech test aesthetic", + .labels = {"Off", "On"}, + .on_change_value = [](float previous, float current) { + if (current >= 1.f) pending_tech_test_preset = 1; + }, + }, new renodx::utils::settings::Setting{ .value_type = renodx::utils::settings::SettingValueType::BUTTON, .label = "Discord", @@ -965,11 +1197,22 @@ renodx::utils::settings::Settings settings = { }; void OnPresetOff() { - // renodx::utils::settings::UpdateSetting("toneMapType", 0.f); - // renodx::utils::settings::UpdateSetting("toneMapPeakNits", 203.f); - // renodx::utils::settings::UpdateSetting("toneMapGameNits", 203.f); - // renodx::utils::settings::UpdateSetting("toneMapUINits", 203.f); - // renodx::utils::settings::UpdateSetting("toneMapGammaCorrection", 0); + renodx::utils::settings::UpdateSetting("ToneMapType", 0.f); + renodx::utils::settings::UpdateSetting("ToneMapPeakNits", 203.f); + renodx::utils::settings::UpdateSetting("ToneMapGameNits", 203.f); + renodx::utils::settings::UpdateSetting("ToneMapUINits", 203.f); + renodx::utils::settings::UpdateSetting("ToneMapGammaCorrection", 1.f); + renodx::utils::settings::UpdateSetting("GammaCorrection", 1.f); + renodx::utils::settings::UpdateSetting("SwapChainGammaCorrection", 1.f); + renodx::utils::settings::UpdateSetting("HDRSun", 0.f); + renodx::utils::settings::UpdateSetting("Godrays", 1.f); + renodx::utils::settings::UpdateSetting("SHADOW_HARDENING", 0.f); + renodx::utils::settings::UpdateSetting("FogModification", 0.f); + renodx::utils::settings::UpdateSetting("CubemapAmbientLink", 0.f); + renodx::utils::settings::UpdateSetting("GlassTransparency", 0.f); + renodx::utils::settings::UpdateSetting("ImprovedSSR", 0.f); + renodx::utils::settings::UpdateSetting("ImprovedGTAO", 0.f); + renodx::utils::settings::UpdateSetting("TechTestLook", 0.f); // renodx::utils::settings::UpdateSetting("colorGradeExposure", 1.f); // renodx::utils::settings::UpdateSetting("colorGradeHighlights", 50.f); // renodx::utils::settings::UpdateSetting("colorGradeShadows", 50.f); @@ -1039,12 +1282,40 @@ void OnPresent(reshade::api::command_queue* queue, shader_injection.custom_flip_uv_y = 1.f; } + // Compute UI aspect ratio from swapchain for dynamic latency bar detection + auto bb = device->get_resource_desc(swapchain->get_current_back_buffer()); + if (bb.type != reshade::api::resource_type::unknown) { + shader_injection.ui_aspect_ratio = static_cast(bb.texture.height) / static_cast(bb.texture.width); + } + // Reset heuristic tracking flags for ping/UID detection is_ping_input_candidate = false; is_uid_input_candidate = false; is_ping_drawn = false; draw_call_vertex_count = 0; + // Detect Tech Test state changes from preset loads, game startup, or manual toggle + float current_tech_test = shader_injection.tech_test_look; + if (current_tech_test != prev_tech_test_look) { + if (current_tech_test >= 1.f) pending_tech_test_preset = 1; + prev_tech_test_look = current_tech_test; + } + + // Apply deferred Tech Test preset (safe context, outside settings callback) + if (pending_tech_test_preset == 1) { + renodx::utils::settings::UpdateSetting("GammaCorrection", 2.f); + renodx::utils::settings::UpdateSetting("SwapChainGammaCorrection", 2.f); + renodx::utils::settings::UpdateSetting("ToneMapPerChannelBlowout", 75.f); + renodx::utils::settings::UpdateSetting("ColorGradeExposure", 0.65f); + renodx::utils::settings::UpdateSetting("ColorGradeHighlights", 51.f); + renodx::utils::settings::UpdateSetting("ColorGradeShadows", 80.f); + renodx::utils::settings::UpdateSetting("ColorGradeContrast", 55.f); + renodx::utils::settings::UpdateSetting("ColorGradeSaturation", 35.f); + renodx::utils::settings::UpdateSetting("ColorGradeHighlightSaturation", 100.f); + renodx::utils::settings::UpdateSetting("ColorGradeBlowout", 30.f); + pending_tech_test_preset = -1; + } + // Check UI visibility hotkey (skip if user is currently setting a new hotkey) if (ui_toggle_hotkey != 0 && !hotkey_input_active) { bool key_down = (GetAsyncKeyState(ui_toggle_hotkey) & 0x8000) != 0; @@ -1257,6 +1528,7 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { 0x0E84DFD1u, 0x99725481u, 0xA4113DE8u, + 0xD5B102A4u, }; */ diff --git a/src/games/endfield/ao-blur_0x80CD64F6.cs_5_0.hlsl b/src/games/endfield/ao/ao-blur_0x80CD64F6.cs_5_0.hlsl similarity index 89% rename from src/games/endfield/ao-blur_0x80CD64F6.cs_5_0.hlsl rename to src/games/endfield/ao/ao-blur_0x80CD64F6.cs_5_0.hlsl index 9f1054fe89..05f0576512 100644 --- a/src/games/endfield/ao-blur_0x80CD64F6.cs_5_0.hlsl +++ b/src/games/endfield/ao/ao-blur_0x80CD64F6.cs_5_0.hlsl @@ -1,8 +1,4 @@ -// AO Blur Shader with toggle - Replacement for 0x80CD64F6 -// When disable_game_ao is enabled, outputs 1.0 (no occlusion) -// Otherwise runs normal blur - -#include "./shared.h" +#include "../shared.h" Texture2D t2 : register(t2); Texture2D t1 : register(t1); @@ -31,6 +27,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) { float r1x = t1.SampleLevel(s0_s, r0zw, 0).z; r1x = 1.0 - r1x; r1x = saturate(r1x + r1x); + r1x *= AO_DENOISER_BLUR_BETA; float r1y = t0.SampleLevel(s0_s, r0zw, 0).x; float r1z = cb0[3].z; diff --git a/src/games/endfield/ao/gtao-main_0xE1A460D9.cs_5_0.hlsl b/src/games/endfield/ao/gtao-main_0xE1A460D9.cs_5_0.hlsl new file mode 100644 index 0000000000..66ceba1900 --- /dev/null +++ b/src/games/endfield/ao/gtao-main_0xE1A460D9.cs_5_0.hlsl @@ -0,0 +1,420 @@ +// ---- Created with 3Dmigoto v1.4.1 on Tue Feb 10 15:11:49 2026 +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[4]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[16]; +} + + +#include "../shared.h" + +#define cmp - + +// --- Visibility Bitmask helpers (XeGTAO) --- +static const float BM_HALF_PI = 1.5707963267948966; +static const float BM_PI = 3.1415926535897932; +static const float BM_NUM_BITS = 32.0; + +float BM_FastSqrt(float x) { + return asfloat(0x1fbd1df5 + (asint(x) >> 1)); +} + +float BM_FastACos(float inX) { + float x = abs(inX); + float res = -0.156583 * x + BM_HALF_PI; + res *= BM_FastSqrt(1.0 - x); + return (inX >= 0) ? res : BM_PI - res; +} + +uint BM_UpdateSectors(float minHorizon, float maxHorizon, uint bm) { + int startBit = (int)(minHorizon * BM_NUM_BITS); + int numBits = max((int)(round((maxHorizon - minHorizon) * BM_NUM_BITS)), 0); + startBit = clamp(startBit, 0, 31); + numBits = clamp(numBits, 0, 32 - startBit); + if (numBits > 0) { + uint mask = ((1u << (uint)numBits) - 1u) << (uint)startBit; + bm |= mask; + } + return bm; +} + +void BM_ProcessSample(float3 deltaPos, float3 viewVec, float samplingDir, float n, float thickness, inout uint bm) { + float3 deltaPosBack = deltaPos - viewVec * thickness; + float2 frontBackH = float2( + BM_FastACos(dot(normalize(deltaPos), viewVec)), + BM_FastACos(dot(normalize(deltaPosBack), viewVec)) + ); + float2 N = float2(n, n); + frontBackH = saturate((samplingDir * -frontBackH - N + BM_HALF_PI) / BM_PI); + frontBackH = (samplingDir >= 0.0) ? frontBackH.yx : frontBackH.xy; + frontBackH = smoothstep(0.0, 1.0, frontBackH); + bm = BM_UpdateSectors(frontBackH.x, frontBackH.y, bm); +} +// --- End Visibility Bitmask helpers --- + +RWTexture2D u0 : register(u0); + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16; + + // Select between vanilla cbuffer values and improved custom values + bool use_improved = (IMPROVED_GTAO >= 0.5); + float _ao_radius = use_improved ? AO_RADIUS : cb1[0].x; + float _ao_radius_scale = use_improved ? AO_RADIUS_SCALE : cb1[0].y; + float _ao_falloff_range = use_improved ? AO_FALLOFF_RANGE : cb1[0].z; + float _ao_distribution_power= use_improved ? AO_DISTRIBUTION_POWER: cb1[0].w; + float _ao_thin_occluder = use_improved ? AO_THIN_OCCLUDER : cb1[1].x; + float _ao_gamma = use_improved ? AO_GAMMA : cb1[1].y; + float _ao_mip_bias = use_improved ? AO_MIP_BIAS : cb1[1].w; + float _ao_thickness = use_improved ? AO_THICKNESS : 1.3; + float _ao_direction_count = use_improved ? AO_DIRECTION_COUNT : 3.0; + float _ao_normal_attenuation= use_improved ? AO_NORMAL_ATTENUATION: 0.05; + bool _ao_bitmask = use_improved && (AO_BITMASK >= 0.5); + + r0.xy = vThreadID.yx; + r0.zw = float2(32, 0); + while (true) { + r1.x = cmp(0 >= (uint)r0.z); + if (r1.x != 0) break; + r1.xy = (int2)r0.zz & (int2)r0.yx; + r1.xy = min(uint2(1,1), (uint2)r1.xy); + r1.z = (int)r0.z * (int)r0.z; + r1.w = (int)r1.x * 3; + r1.w = (int)r1.y ^ (int)r1.w; + r0.w = mad((int)r1.z, (int)r1.w, (int)r0.w); + r1.x = cmp((int)r1.x == 1); + r1.zw = (int2)-r0.yx + int2(63,63); + r1.xz = r1.xx ? r1.zw : r0.yx; + r0.xy = r1.yy ? r0.xy : r1.xz; + r0.z = (uint)r0.z >> 1; + } + r0.x = (uint)cb1[1].z; + r0.x = (int)r0.x & 63; + r0.x = mad(288, (int)r0.x, (int)r0.w); + r0.x = (uint)r0.x; + r0.xy = r0.xx * float2(0.754877687,0.569840312) + float2(0.5,0.5); + r0.xy = frac(r0.xy); + r0.zw = (uint2)vThreadID.xy; + r1.xyzw = float4(0.5,0.5,0.5,0.5) + r0.zwzw; + r2.xy = cb1[3].zw * r1.zw; + r2.zw = t0.SampleLevel(s0_s, r2.xy, 0).xy; + r2.zw = r2.zw * float2(2,2) + float2(-1,-1); + r3.x = dot(float2(1,1), abs(r2.zw)); + r3.y = 1 + -r3.x; + r3.w = cmp(r3.y < 0); + r4.xy = cmp(r2.zw >= float2(0,0)); + r4.zw = float2(1,1) + -abs(r2.wz); + r4.xy = r4.xy ? float2(1,1) : float2(-1,-1); + r4.xy = r4.zw * r4.xy; + r3.xz = r3.ww ? r4.xy : r2.zw; + r2.z = dot(r3.xyz, r3.xyz); + r2.z = rsqrt(r2.z); + r3.xyz = r3.xyz * r2.zzz; + r4.xyz = cb0[1].xyz * r3.yyy; + r3.xyw = cb0[0].xyz * r3.xxx + r4.xyz; + r3.xyz = cb0[2].xyz * r3.zzz + r3.xyw; + r0.zw = cb1[3].zw * r0.zw; + r0.z = t1.Gather(s0_s, r0.zw).y; + r4.z = 0.999989986 * r0.z; + r0.zw = r2.xy * float2(2,2) + float2(-1,-1); + r2.xy = cb0[13].xy * r0.ww; + r0.zw = cb0[12].xy * r0.zz + r2.xy; + r0.zw = cb0[14].xy + r0.zw; + r0.zw = cb0[15].xy + r0.zw; + r4.xy = r0.zw * r4.zz; + r4.w = -r4.y; + r0.z = dot(-r4.xzw, -r4.xzw); + r0.z = rsqrt(r0.z); + r2.xyz = -r4.xwz * r0.zzz; + r0.z = _ao_radius * _ao_radius_scale; + r0.w = _ao_falloff_range * r0.z; + r2.w = -1 / r0.w; + r4.y = -_ao_falloff_range + 1; + r4.y = r4.y * r0.z; + r0.w = r4.y / r0.w; + r0.w = 1 + r0.w; + r5.xy = r1.zw * cb1[3].zw + cb1[3].zw; + r5.xy = r5.xy * float2(2,2) + float2(-1,-1); + r4.y = cb0[13].x * r5.y; + r4.y = cb0[12].x * r5.x + r4.y; + r4.y = cb0[14].x + r4.y; + r4.y = cb0[15].x + r4.y; + r4.y = r4.y * r4.z + -r4.x; + r0.z = r0.z / r4.y; + r4.y = _ao_thickness / r0.z; + r5.x = 10 + -r0.z; + r5.x = saturate(0.00999999978 * r5.x); + r5.x = 0.5 * r5.x; + r5.y = _ao_thin_occluder + 1; + r6.z = 0; + r3.w = -r3.z; + r7.x = r5.x; + r7.y = 0; + while (true) { + r3.z = cmp(r7.y >= _ao_direction_count); + if (r3.z != 0) break; + r3.z = r7.y + r0.x; + r3.z = (3.14159265 / _ao_direction_count) * r3.z; + sincos(r3.z, r8.x, r6.x); + r6.y = r8.x; + r8.xyzw = r6.xyxy * r0.zzzz; + r3.z = dot(r6.xy, r2.xy); + r6.xyw = -r2.xyz * r3.zzz + r6.xyz; + r9.xyz = r6.wxy * r2.yzx; + r9.xyz = r6.ywx * r2.zxy + -r9.xyz; + r3.z = dot(r9.xyz, r9.xyz); + r3.z = rsqrt(r3.z); + r9.xyz = r9.xyz * r3.zzz; + r3.z = dot(r3.xyw, r9.xyz); + r9.xyz = -r9.xyz * r3.zzz + r3.xyw; + r3.z = dot(r9.xyz, r9.xyz); + r3.z = sqrt(r3.z); + r5.z = dot(r9.xyz, r2.xyz); + r5.z = saturate(r5.z / r3.z); + r5.w = dot(r6.xyw, r9.xyz); + r6.x = cmp(0 < r5.w); + r5.w = cmp(r5.w < 0); + r5.w = (int)-r6.x + (int)r5.w; + r5.w = (int)r5.w; + r6.x = r5.z * -0.156582996 + 1.57079601; + r6.y = 1 + -r5.z; + r6.y = asfloat(asuint(r6.y) >> 1); + r6.y = asfloat(asint(r6.y) + 0x1fbd1df5); + r6.x = r6.x * r6.y; + r6.x = max(0, r6.x); + r6.x = min(3.14159298, r6.x); + r6.y = r6.x * r5.w; + r9.xy = r5.ww * r6.xx + float2(1.57079637,-1.57079637); + r9.xy = cos(r9.xy); + uint bitmask = 0u; + r6.w = r7.y * 0.618034005 + r0.y; + r6.w = frac(r6.w); + r6.w = 0.333333343 * r6.w; + r6.w = log2(r6.w); + r6.w = _ao_distribution_power * r6.w; + r6.w = exp2(r6.w); + r6.w = r6.w + r4.y; + r9.zw = r8.zw * r6.ww; + r6.w = dot(r9.zw, r9.zw); + r6.w = sqrt(r6.w); + r6.w = log2(r6.w); + r6.w = -_ao_mip_bias + r6.w; + r6.w = max(0, r6.w); + r6.w = min(4, r6.w); + r9.zw = round(r9.zw); + r9.zw = cb1[3].zw * r9.zw; + r10.xy = r1.zw * cb1[3].zw + r9.zw; + r11.w = t1.SampleLevel(s0_s, r10.xy, r6.w).x; + r10.xy = r10.xy * float2(2,2) + float2(-1,-1); + r10.yz = cb0[13].xy * r10.yy; + r10.xy = cb0[12].xy * r10.xx + r10.yz; + r10.xy = cb0[14].xy + r10.xy; + r10.xy = cb0[15].xy + r10.xy; + r11.xy = r10.xy * r11.ww; + r9.zw = r1.zw * cb1[3].zw + -r9.zw; + r10.w = t1.SampleLevel(s0_s, r9.zw, r6.w).x; + r9.zw = r9.zw * float2(2,2) + float2(-1,-1); + r12.xy = cb0[13].xy * r9.ww; + r9.zw = cb0[12].xy * r9.zz + r12.xy; + r9.zw = cb0[14].xy + r9.zw; + r9.zw = cb0[15].xy + r9.zw; + r10.xy = r9.zw * r10.ww; + r11.z = -r11.y; + r11.xyz = r11.xzw + -r4.xwz; + r10.z = -r10.y; + r10.xyz = r10.xzw + -r4.xwz; + // Bitmask: process step 0 samples + if (_ao_bitmask) { + BM_ProcessSample(r11.xyz, r2.xyz, -1.0, r6.y, _ao_thickness, bitmask); + BM_ProcessSample(r10.xyz, r2.xyz, 1.0, r6.y, _ao_thickness, bitmask); + } + r6.w = dot(r11.xyz, r11.xyz); + r6.w = sqrt(r6.w); + r12.xyz = r11.xyz / r6.www; + r6.w = dot(r12.xyz, r2.xyz); + r11.w = r11.z * r5.y; + r9.z = dot(r11.xyw, r11.xyw); + r9.z = sqrt(r9.z); + r9.z = saturate(r9.z * r2.w + r0.w); + r6.w = r6.w + -r9.x; + r6.w = r9.z * r6.w + r9.x; + r6.w = max(r9.x, r6.w); + r9.z = dot(r10.xyz, r10.xyz); + r9.z = sqrt(r9.z); + r11.xyz = r10.xyz / r9.zzz; + r9.z = dot(r11.xyz, r2.xyz); + r10.w = r10.z * r5.y; + r9.w = dot(r10.xyw, r10.xyw); + r9.w = sqrt(r9.w); + r9.w = saturate(r9.w * r2.w + r0.w); + r9.z = r9.z + -r9.y; + r9.z = r9.w * r9.z + r9.y; + r9.z = max(r9.y, r9.z); + r7.yzw = float3(1,3,6) + r7.yyy; + r10.xyzw = r7.zzww * float4(0.618034005,0.618034005,0.618034005,0.618034005) + r0.yyyy; + r10.xyzw = frac(r10.xyzw); + r10.xyzw = float4(1,1,2,2) + r10.xyzw; + r10.xyzw = float4(0.333333343,0.333333343,0.333333343,0.333333343) * r10.xyzw; + r10.xyzw = log2(r10.xyzw); + r10.xyzw = _ao_distribution_power * r10.xyzw; + r10.xyzw = exp2(r10.xyzw); + r10.xyzw = r10.xyzw + r4.yyyy; + r8.xyzw = r10.xyzw * r8.xyzw; + r7.z = dot(r8.xy, r8.xy); + r7.z = sqrt(r7.z); + r7.z = log2(r7.z); + r7.z = -_ao_mip_bias + r7.z; + r7.z = max(0, r7.z); + r7.z = min(4, r7.z); + r10.xyzw = round(r8.xyzw); + r10.xyzw = cb1[3].zwzw * r10.xyzw; + r11.xyzw = r1.zwzw * cb1[3].zwzw + r10.xyzw; + r12.w = t1.SampleLevel(s0_s, r11.xy, r7.z).x; + r13.xyzw = r11.xyzw * float4(2,2,2,2) + float4(-1,-1,-1,-1); + r14.xyzw = cb0[13].xyxy * r13.yyww; + r13.xyzw = cb0[12].xyxy * r13.xxzz + r14.xyzw; + r13.xyzw = cb0[14].xyxy + r13.xyzw; + r13.xyzw = cb0[15].xyxy + r13.xyzw; + r12.xy = r13.xy * r12.ww; + r10.xyzw = r1.xyzw * cb1[3].zwzw + -r10.xyzw; + r14.w = t1.SampleLevel(s0_s, r10.xy, r7.z).x; + r15.xyzw = r10.xyzw * float4(2,2,2,2) + float4(-1,-1,-1,-1); + r16.xyzw = cb0[13].xyxy * r15.yyww; + r15.xyzw = cb0[12].xyxy * r15.xxzz + r16.xyzw; + r15.xyzw = cb0[14].xyxy + r15.xyzw; + r15.xyzw = cb0[15].xyxy + r15.xyzw; + r14.xy = r15.xy * r14.ww; + r12.z = -r12.y; + r12.xyz = r12.xzw + -r4.xwz; + r14.z = -r14.y; + r14.xyz = r14.xzw + -r4.xwz; + // Bitmask: process step 1 samples + if (_ao_bitmask) { + BM_ProcessSample(r12.xyz, r2.xyz, -1.0, r6.y, _ao_thickness, bitmask); + BM_ProcessSample(r14.xyz, r2.xyz, 1.0, r6.y, _ao_thickness, bitmask); + } + r7.z = dot(r12.xyz, r12.xyz); + r7.z = sqrt(r7.z); + r16.xyz = r12.xyz / r7.zzz; + r7.z = dot(r16.xyz, r2.xyz); + r12.w = r12.z * r5.y; + r7.w = dot(r12.xyw, r12.xyw); + r7.w = sqrt(r7.w); + r7.w = saturate(r7.w * r2.w + r0.w); + r7.z = r7.z + -r9.x; + r7.z = r7.w * r7.z + r9.x; + r6.w = max(r7.z, r6.w); + r7.z = dot(r14.xyz, r14.xyz); + r7.z = sqrt(r7.z); + r12.xyz = r14.xyz / r7.zzz; + r7.z = dot(r12.xyz, r2.xyz); + r14.w = r14.z * r5.y; + r7.w = dot(r14.xyw, r14.xyw); + r7.w = sqrt(r7.w); + r7.w = saturate(r7.w * r2.w + r0.w); + r7.z = r7.z + -r9.y; + r7.z = r7.w * r7.z + r9.y; + r7.z = max(r9.z, r7.z); + r7.w = dot(r8.zw, r8.zw); + r7.w = sqrt(r7.w); + r7.w = log2(r7.w); + r7.w = -_ao_mip_bias + r7.w; + r7.w = max(0, r7.w); + r7.w = min(4, r7.w); + r8.w = t1.SampleLevel(s0_s, r11.zw, r7.w).x; + r8.xy = r13.zw * r8.ww; + r10.w = t1.SampleLevel(s0_s, r10.zw, r7.w).x; + r10.xy = r15.zw * r10.ww; + r8.z = -r8.y; + r8.xyz = r8.xzw + -r4.xwz; + r10.z = -r10.y; + r10.xyz = r10.xzw + -r4.xwz; + // Bitmask: process step 2 samples + if (_ao_bitmask) { + BM_ProcessSample(r8.xyz, r2.xyz, -1.0, r6.y, _ao_thickness, bitmask); + BM_ProcessSample(r10.xyz, r2.xyz, 1.0, r6.y, _ao_thickness, bitmask); + } + r7.w = dot(r8.xyz, r8.xyz); + r7.w = sqrt(r7.w); + r11.xyz = r8.xyz / r7.www; + r7.w = dot(r11.xyz, r2.xyz); + r8.w = r8.z * r5.y; + r8.x = dot(r8.xyw, r8.xyw); + r8.x = sqrt(r8.x); + r8.x = saturate(r8.x * r2.w + r0.w); + r7.w = r7.w + -r9.x; + r7.w = r8.x * r7.w + r9.x; + r6.w = max(r7.w, r6.w); + r7.w = dot(r10.xyz, r10.xyz); + r7.w = sqrt(r7.w); + r8.xyz = r10.xyz / r7.www; + r7.w = dot(r8.xyz, r2.xyz); + r10.w = r10.z * r5.y; + r8.x = dot(r10.xyw, r10.xyw); + r8.x = sqrt(r8.x); + r8.x = saturate(r8.x * r2.w + r0.w); + r7.w = r7.w + -r9.y; + r7.w = r8.x * r7.w + r9.y; + r7.z = max(r7.z, r7.w); + // Visibility accumulation: bitmask vs arc integration + if (_ao_bitmask) { + r7.x += (1.0 - (float)countbits(bitmask) / 32.0); + } else { + r7.w = abs(r7.z) * -0.156582996 + 1.57079601; + r8.x = 1 + -abs(r7.z); + r8.x = asfloat(asuint(r8.x) >> 1); + r8.x = asfloat(asint(r8.x) + 0x1fbd1df5); + r8.y = r8.x * r7.w; + r8.z = abs(r6.w) * -0.156582996 + 1.57079601; + r8.w = 1 + -abs(r6.w); + r8.w = asfloat(asuint(r8.w) >> 1); + r8.w = asfloat(asint(r8.w) + 0x1fbd1df5); + r9.x = r8.z * r8.w; + r7.z = cmp(r7.z >= 0); + r7.w = -r7.w * r8.x + 3.14159298; + r7.z = r7.z ? r8.y : r7.w; + r7.z = max(0, r7.z); + r7.z = min(3.14159298, r7.z); + r7.w = -2 * r7.z; + r8.x = sin(r6.y); + r6.w = cmp(r6.w >= 0); + r8.y = -r8.z * r8.w + 3.14159298; + r6.w = r6.w ? r9.x : r8.y; + r6.w = max(0, r6.w); + r6.w = min(3.14159298, r6.w); + r6.w = r6.w + r6.w; + r8.y = 1 + -r3.z; + r3.z = r8.y * _ao_normal_attenuation + r3.z; + r7.w = r7.w * r8.x + r5.z; + r6.y = r7.z * -2 + -r6.y; + r6.y = cos(r6.y); + r6.y = r7.w + -r6.y; + r5.z = r6.w * r8.x + r5.z; + r5.w = -r5.w * r6.x + r6.w; + r5.w = cos(r5.w); + r5.z = r5.z + -r5.w; + r5.z = r6.y + r5.z; + r3.z = r5.z * r3.z; + r7.x = r3.z * 0.25 + r7.x; + } + } + r0.x = (1.0 / _ao_direction_count) * r7.x; + r0.x = log2(abs(r0.x)); + r0.x = _ao_gamma * r0.x; + r0.x = exp2(r0.x); + r0.x = max(0.0299999993, r0.x); + u0[vThreadID.xy] = r0.xxxx; + return; +} \ No newline at end of file diff --git a/src/games/endfield/ao/gtao-spatial-avg_0xB6A67E5A.cs_5_0.hlsl b/src/games/endfield/ao/gtao-spatial-avg_0xB6A67E5A.cs_5_0.hlsl new file mode 100644 index 0000000000..8fb26766e2 --- /dev/null +++ b/src/games/endfield/ao/gtao-spatial-avg_0xB6A67E5A.cs_5_0.hlsl @@ -0,0 +1,40 @@ +// ---- Created with 3Dmigoto v1.4.1 on Tue Feb 10 15:11:49 2026 +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb0 : register(b0) +{ + float4 cb0[83]; +} + + +#include "../shared.h" + +#define cmp - + +RWTexture2D u0 : register(u0); + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) +{ + float4 r0,r1; + r0.xy = (uint2)vThreadID.xy; + r0.xy = float2(0.5,0.5) + r0.xy; + r0.zw = r0.xy * cb0[82].zw + -cb0[82].zw; + r0.z = t0.SampleLevel(s0_s, r0.zw, 0).x; + r1.xy = cb0[82].zw * r0.xy; + r0.xy = r0.xy * cb0[82].zw + cb0[82].zw; + r0.x = t0.SampleLevel(s0_s, r0.xy, 0).x; + r0.y = t0.SampleLevel(s0_s, r1.xy, 0).x; + r1.xyzw = cb0[82].zwzw * float4(1,-1,-1,1) + r1.xyxy; + r0.y = r0.y + r0.z; + r0.z = t0.SampleLevel(s0_s, r1.xy, 0).x; + r0.w = t0.SampleLevel(s0_s, r1.zw, 0).x; + r0.y = r0.y + r0.z; + r0.y = r0.y + r0.w; + r0.x = r0.y + r0.x; + r0.x = 0.200000003 * r0.x; + u0[vThreadID.xy] = r0.xxxx; + return; +} \ No newline at end of file diff --git a/src/games/endfield/ao/gtao-temporal_0x3F036C0E.cs_5_0.hlsl b/src/games/endfield/ao/gtao-temporal_0x3F036C0E.cs_5_0.hlsl new file mode 100644 index 0000000000..2fac2b0250 --- /dev/null +++ b/src/games/endfield/ao/gtao-temporal_0x3F036C0E.cs_5_0.hlsl @@ -0,0 +1,119 @@ +// ---- Created with 3Dmigoto v1.4.1 on Tue Feb 10 15:11:49 2026 +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb0 : register(b0) +{ + float4 cb0[4]; +} + + +#include "../shared.h" + +#define cmp - + +RWTexture2D u0 : register(u0); + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) +{ + float4 r0,r1,r2,r3,r4; + r0.xy = (uint2)vThreadID.xy; + r0.xy = float2(0.5,0.5) + r0.xy; + r0.zw = cb0[3].zw * r0.xy; + r1.xy = t2.SampleLevel(s0_s, r0.zw, 0).xy; + r1.zw = abs(r1.xy) * float2(2,2) + float2(-1,-1); + r1.zw = r1.zw * r1.zw; + r1.zw = r1.zw * r1.zw; + r1.xy = float2(-0.5,-0.5) + r1.xy; + r2.xy = cmp(float2(0,0) < r1.xy); + r1.xy = cmp(r1.xy < float2(0,0)); + r1.xy = (int2)-r2.xy + (int2)r1.xy; + r1.xy = (int2)r1.xy; + r1.xy = r1.zw * r1.xy; + r1.zw = r0.xy * cb0[3].zw + -r1.xy; + if (IMPROVED_GTAO >= 0.5) { + // Manual bilinear interpolation for previous AO (reduces wobble/ghosting) + // Only interpolate AO (.x), keep depth (.y) point-sampled + float2 texelPos = r1.zw * cb0[3].xy - 0.5; + float2 f = frac(texelPos); + float2 base = (floor(texelPos) + 0.5) * cb0[3].zw; + float ao00 = t3.SampleLevel(s0_s, base, 0).x; + float ao10 = t3.SampleLevel(s0_s, base + float2(cb0[3].z, 0), 0).x; + float ao01 = t3.SampleLevel(s0_s, base + float2(0, cb0[3].w), 0).x; + float ao11 = t3.SampleLevel(s0_s, base + cb0[3].zw, 0).x; + r2.x = lerp(lerp(ao00, ao10, f.x), lerp(ao01, ao11, f.x), f.y); + r2.y = t3.SampleLevel(s0_s, r1.zw, 0).y; // depth: point-sampled + } else { + r2.xy = t3.SampleLevel(s0_s, r1.zw, 0).xy; + } + r2.z = t0.SampleLevel(s0_s, r0.zw, 0).x; + r2.z = 0.00999999978 * r2.z; + r3.y = min(1, r2.z); + r3.x = t1.SampleLevel(s0_s, r0.zw, 0).x; + r2.zw = cmp(r1.zw < float2(0,0)); + r2.z = (int)r2.w | (int)r2.z; + r1.zw = cmp(float2(1,1) < r1.zw); + r1.z = (int)r1.w | (int)r1.z; + r1.z = (int)r1.z | (int)r2.z; + if (r1.z != 0) { + r3.z = 0; + } else { + r1.xy = cb0[3].xy * r1.xy; + r1.x = dot(r1.xy, r1.xy); + r1.x = sqrt(r1.x); + r1.x = cb0[2].z * -r1.x; + r1.x = 1.44269502 * r1.x; + r1.x = exp2(r1.x); + r1.x = 0.970000029 * r1.x; + r1.y = r3.y + -r2.y; + r1.y = -1442.69507 * abs(r1.y); + r1.y = exp2(r1.y); + r3.z = r1.x * r1.y; + } + r1.x = cmp(0.000000 == cb0[2].y); + if (r1.x == 0) { + r1.xy = r0.xy * cb0[3].zw + -cb0[3].zw; + r1.x = t1.SampleLevel(s0_s, r1.xy, 0).x; + r4.xyzw = cb0[3].zwzw * float4(0,-1,1,-1) + r0.zwzw; + r1.y = t1.SampleLevel(s0_s, r4.xy, 0).x; + r1.z = t1.SampleLevel(s0_s, r4.zw, 0).x; + r4.xyzw = cb0[3].zwzw * float4(-1,0,1,0) + r0.zwzw; + r1.w = t1.SampleLevel(s0_s, r4.xy, 0).x; + r2.y = t1.SampleLevel(s0_s, r4.zw, 0).x; + r4.xyzw = cb0[3].zwzw * float4(-1,1,0,1) + r0.zwzw; + r0.z = t1.SampleLevel(s0_s, r4.xy, 0).x; + r0.w = t1.SampleLevel(s0_s, r4.zw, 0).x; + r0.xy = r0.xy * cb0[3].zw + cb0[3].zw; + r0.x = t1.SampleLevel(s0_s, r0.xy, 0).x; + r0.y = min(r1.w, r3.x); + r2.z = min(r2.y, r0.w); + r0.y = min(r2.z, r0.y); + r0.y = min(r1.y, r0.y); + r2.z = min(r1.x, r1.z); + r2.w = min(r0.z, r0.x); + r2.z = min(r2.z, r2.w); + r0.y = min(r2.z, r0.y); + r1.w = max(r1.w, r3.x); + r0.w = max(r2.y, r0.w); + r0.w = max(r1.w, r0.w); + r1.x = max(r1.x, r1.z); + r0.x = max(r0.z, r0.x); + r0.xw = max(r1.xy, r0.xw); + r0.x = max(r0.w, r0.x); + r0.y = max(r2.x, r0.y); + r0.x = min(r0.y, r0.x); + r0.x = r0.x + -r3.x; + r3.x = r3.z * r0.x + r3.x; + } + r3.w = 0; + u0[vThreadID.xy] = r3.xyzw; + return; +} \ No newline at end of file diff --git a/src/games/endfield/ao/gtao-vertical-blur_0x88B36DD5.cs_5_0.hlsl b/src/games/endfield/ao/gtao-vertical-blur_0x88B36DD5.cs_5_0.hlsl new file mode 100644 index 0000000000..cb9dac591c --- /dev/null +++ b/src/games/endfield/ao/gtao-vertical-blur_0x88B36DD5.cs_5_0.hlsl @@ -0,0 +1,62 @@ +// ---- Created with 3Dmigoto v1.4.1 on Tue Feb 10 15:11:49 2026 +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb0 : register(b0) +{ + float4 cb0[4]; +} + + +#include "../shared.h" + +#define cmp - + +RWTexture2D u0 : register(u0); + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) +{ + float4 r0,r1,r2,r3,r4; + r0.xy = (uint2)vThreadID.xy; + r0.xy = float2(0.5,0.5) + r0.xy; + r0.zw = cb0[3].zw * r0.xy; + r1.x = t1.SampleLevel(s0_s, r0.zw, 0).z; + r1.x = 1 + -r1.x; + r1.x = saturate(r1.x + r1.x); + r1.x *= AO_DENOISER_BLUR_BETA; + r1.w = t0.SampleLevel(s0_s, r0.zw, 0).x; + r2.x = cb0[3].z; + r2.y = 1; + r1.y = cb0[3].w; + r1.z = 0; + r3.xyz = float3(0,0,-3); + while (true) { + r2.z = cmp(3 < r3.z); + if (r2.z != 0) break; + r2.zw = r3.zz * r2.xy; + r2.zw = r2.zw * r1.xy; + r2.zw = r2.zw * r1.zx; + r4.xy = r2.zw * cb0[3].zw + r0.zw; + r3.w = t0.SampleLevel(s0_s, r4.xy, 0).x; + r3.w = r3.w + -r1.w; + r3.w = min(1, abs(r3.w)); + r3.w = 1 + -r3.w; + r4.x = r3.x + r3.w; + r2.zw = r0.xy * cb0[3].zw + r2.zw; + r2.z = t2.SampleLevel(s0_s, r2.zw, 0).x; + r4.y = r2.z * r3.w + r3.y; + r4.z = 1 + r3.z; + r3.xyz = r4.xyz; + continue; + } + r0.x = max(9.99999975e-05, r3.x); + r0.x = r3.y / r0.x; + u0[vThreadID.xy] = r0.xxxx; + return; +} \ No newline at end of file diff --git a/src/games/endfield/bloom/bloom-downsample-lut_0xC58C5FBA.cs_5_0.hlsl b/src/games/endfield/bloom/bloom-downsample-lut_0xC58C5FBA.cs_5_0.hlsl new file mode 100644 index 0000000000..f400895506 --- /dev/null +++ b/src/games/endfield/bloom/bloom-downsample-lut_0xC58C5FBA.cs_5_0.hlsl @@ -0,0 +1,328 @@ +// ---- Created with 3Dmigoto v1.4.1 on Tue Feb 10 11:18:06 2026 +groupshared struct { float val[1]; } g2[128]; +groupshared struct { float val[1]; } g1[128]; +groupshared struct { float val[1]; } g0[128]; +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[3]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[110]; +} + +RWTexture2D u0 : register(u0); + +// 3Dmigoto declarations +#define cmp - + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID, uint3 vThreadGroupID : SV_GroupID, uint3 vThreadIDInGroup : SV_GroupThreadID) +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10; + uint4 bitmask, uiDest; + float4 fDest; + r0.xyzw = (uint4)vThreadGroupID.xyxy << int4(3,3,3,3); + r1.xyzw = (uint4)vThreadIDInGroup.xyxy << int4(1,1,1,1); + r0.xyzw = (int4)r0.xyzw + (int4)r1.xyzw; + r1.x = mad((int)vThreadIDInGroup.y, 16, (int)r1.z); + r0.xyzw = (int4)r0.xyzw + int4(-4,-4,-4,-4); + r0.xyzw = (int4)r0.xyzw; + r2.xyzw = float4(0.5,0.5,1.5,0.5) + r0.zwzw; + r0.xyzw = float4(0.5,1.5,1.5,1.5) + r0.xyzw; + r0.xyzw = cb1[0].zwzw * r0.xyzw; + r2.xyzw = cb1[0].zwzw * r2.xyzw; + r1.yzw = t0.SampleLevel(s0_s, r2.xy, 0).xyz; + r2.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; + r2.xyz = cb0[109].xxx * r2.zxy; + r2.xyz = cb1[2].www * r2.xyz; + r2.xyz = r2.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r2.xyz = max(float3(0,0,0), r2.xyz); + r2.xyz = log2(r2.xyz); + r2.xyz = saturate(r2.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r1.yzw = cb0[109].xxx * r1.wyz; + r1.yzw = cb1[2].www * r1.yzw; + r1.yzw = r1.yzw * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r1.yzw = max(float3(0,0,0), r1.yzw); + r1.yzw = log2(r1.yzw); + r1.yzw = saturate(r1.yzw * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r3.xyz = cb1[2].zzz * r1.yzw; + r1.z = floor(r3.x); + r1.y = r1.y * cb1[2].z + -r1.z; + r3.xw = cb1[2].xy * float2(0.5,0.5); + r4.yz = r3.yz * cb1[2].xy + r3.xw; + r4.x = r1.z * cb1[2].y + r4.y; + r5.xyz = t1.SampleLevel(s1_s, r4.xz, 0).xyz; + r6.x = cb1[2].y; + r6.y = 0; + r1.zw = r6.xy + r4.xz; + r4.xyz = t1.SampleLevel(s1_s, r1.zw, 0).xyz; + r4.xyz = r4.xyz + -r5.xyz; + r1.yzw = r1.yyy * r4.xyz + r5.xyz; + r4.xyz = log2(abs(r1.yzw)); + r4.xyz = float3(0.416666657,0.416666657,0.416666657) * r4.xyz; + r4.xyz = exp2(r4.xyz); + r4.xyz = r4.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r5.xyz = float3(12.9200001,12.9200001,12.9200001) * r1.yzw; + r1.yzw = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r1.yzw); + r1.yzw = r1.yzw ? r5.xyz : r4.xyz; + r2.w = max(r1.y, r1.z); + r2.w = max(r2.w, r1.w); + r2.w = max(cb1[1].x, r2.w); + r2.w = r2.w / cb1[1].x; + r1.yzw = r1.yzw / r2.www; + r1.yzw = f32tof16(r1.yzw); + r2.yzw = cb1[2].zzz * r2.xyz; + r2.y = floor(r2.y); + r4.yz = r2.zw * cb1[2].xy + r3.xw; + r2.x = r2.x * cb1[2].z + -r2.y; + r4.x = r2.y * cb1[2].y + r4.y; + r2.yzw = t1.SampleLevel(s1_s, r4.xz, 0).xyz; + r3.yz = r4.xz + r6.xy; + r4.xyz = t1.SampleLevel(s1_s, r3.yz, 0).xyz; + r4.xyz = r4.xyz + -r2.yzw; + r2.xyz = r2.xxx * r4.xyz + r2.yzw; + r4.xyz = log2(abs(r2.xyz)); + r4.xyz = float3(0.416666657,0.416666657,0.416666657) * r4.xyz; + r4.xyz = exp2(r4.xyz); + r4.xyz = r4.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r5.xyz = float3(12.9200001,12.9200001,12.9200001) * r2.xyz; + r2.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r2.xyz); + r2.xyz = r2.xyz ? r5.xyz : r4.xyz; + r2.w = max(r2.x, r2.y); + r2.w = max(r2.w, r2.z); + r2.w = max(cb1[1].x, r2.w); + r2.w = r2.w / cb1[1].x; + r2.xyz = r2.xyz / r2.www; + r2.xyz = f32tof16(r2.xyz); + r1.yzw = mad((int3)r2.xyz, int3(0x10000,0x10000,0x10000), (int3)r1.yzw); + r2.xy = mad((int2)vThreadIDInGroup.yy, int2(16,8), (int2)vThreadIDInGroup.xx); + g0[r2.x].val[0/4] = r1.y; + g1[r2.x].val[0/4] = r1.z; + g2[r2.x].val[0/4] = r1.w; + r1.yzw = t0.SampleLevel(s0_s, r0.xy, 0).xyz; + r0.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; + r0.xyz = cb0[109].xxx * r0.zxy; + r0.xyz = cb1[2].www * r0.xyz; + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = max(float3(0,0,0), r0.xyz); + r0.xyz = log2(r0.xyz); + r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r1.yzw = cb0[109].xxx * r1.wyz; + r1.yzw = cb1[2].www * r1.yzw; + r1.yzw = r1.yzw * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r1.yzw = max(float3(0,0,0), r1.yzw); + r1.yzw = log2(r1.yzw); + r1.yzw = saturate(r1.yzw * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r4.xyz = cb1[2].zzz * r1.yzw; + r5.yz = r4.yz * cb1[2].xy + r3.xw; + r0.w = floor(r4.x); + r5.x = r0.w * cb1[2].y + r5.y; + r0.w = r1.y * cb1[2].z + -r0.w; + r1.yz = r5.xz + r6.xy; + r4.xyz = t1.SampleLevel(s1_s, r5.xz, 0).xyz; + r1.yzw = t1.SampleLevel(s1_s, r1.yz, 0).xyz; + r1.yzw = r1.yzw + -r4.xyz; + r1.yzw = r0.www * r1.yzw + r4.xyz; + r4.xyz = log2(abs(r1.yzw)); + r4.xyz = float3(0.416666657,0.416666657,0.416666657) * r4.xyz; + r4.xyz = exp2(r4.xyz); + r4.xyz = r4.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r5.xyz = float3(12.9200001,12.9200001,12.9200001) * r1.yzw; + r1.yzw = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r1.yzw); + r1.yzw = r1.yzw ? r5.xyz : r4.xyz; + r0.w = max(r1.y, r1.z); + r0.w = max(r0.w, r1.w); + r0.w = max(cb1[1].x, r0.w); + r0.w = r0.w / cb1[1].x; + r1.yzw = r1.yzw / r0.www; + r1.yzw = f32tof16(r1.yzw); + r0.yzw = cb1[2].zzz * r0.xyz; + r3.yz = r0.zw * cb1[2].xy + r3.xw; + r0.y = floor(r0.y); + r3.x = r0.y * cb1[2].y + r3.y; + r0.x = r0.x * cb1[2].z + -r0.y; + r0.yz = r3.xz + r6.xy; + r3.xyz = t1.SampleLevel(s1_s, r3.xz, 0).xyz; + r0.yzw = t1.SampleLevel(s1_s, r0.yz, 0).xyz; + r0.yzw = r0.yzw + -r3.xyz; + r0.xyz = r0.xxx * r0.yzw + r3.xyz; + r3.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; + r4.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); + r0.xyz = log2(abs(r0.xyz)); + r0.xyz = float3(0.416666657,0.416666657,0.416666657) * r0.xyz; + r0.xyz = exp2(r0.xyz); + r0.xyz = r0.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r0.xyz = r4.xyz ? r3.xyz : r0.xyz; + r0.w = max(r0.x, r0.y); + r0.w = max(r0.w, r0.z); + r0.w = max(cb1[1].x, r0.w); + r0.w = r0.w / cb1[1].x; + r0.xyz = r0.xyz / r0.www; + r0.xyz = f32tof16(r0.xyz); + r0.xyz = mad((int3)r0.xyz, int3(0x10000,0x10000,0x10000), (int3)r1.yzw); + r0.w = (int)r2.x + 8; + g0[r0.w].val[0/4] = r0.x; + g1[r0.w].val[0/4] = r0.y; + g2[r0.w].val[0/4] = r0.z; + GroupMemoryBarrierWithGroupSync(); + r0.x = (int)vThreadIDInGroup.x & 4; + r0.x = (int)r0.x + (int)r2.x; + r0.y = g0[r0.x].val[0/4]; + r0.z = g1[r0.x].val[0/4]; + r0.w = g2[r0.x].val[0/4]; + r3.xyzw = (int4)r0.xxxx + int4(1,2,3,4); + r0.x = g0[r3.x].val[0/4]; + r1.y = g1[r3.x].val[0/4]; + r1.z = g2[r3.x].val[0/4]; + r1.w = g0[r3.y].val[0/4]; + r2.x = g1[r3.y].val[0/4]; + r2.z = g2[r3.y].val[0/4]; + r2.w = g0[r3.z].val[0/4]; + r3.x = g0[r3.w].val[0/4]; + r3.y = g1[r3.z].val[0/4]; + r4.x = g1[r3.w].val[0/4]; + r3.z = g2[r3.z].val[0/4]; + r3.w = g2[r3.w].val[0/4]; + r4.y = (int)r1.w & 0x0000ffff; + r1.w = (uint)r1.w >> 16; + r5.x = f16tof32((uint)(uint)r1.w); + r6.x = f16tof32((uint)(uint)r4.y); + r1.w = (int)r2.x & 0x0000ffff; + r2.x = (uint)r2.x >> 16; + r5.y = f16tof32((uint)(uint)r2.x); + r6.y = f16tof32((uint)(uint)r1.w); + r1.w = (int)r2.z & 0x0000ffff; + r2.x = (uint)r2.z >> 16; + r5.z = f16tof32((uint)(uint)r2.x); + r6.z = f16tof32((uint)(uint)r1.w); + r1.w = (uint)r0.x >> 16; + r0.x = (int)r0.x & 0x0000ffff; + r7.x = f16tof32((uint)(uint)r0.x); + r8.x = f16tof32((uint)(uint)r1.w); + r0.x = (uint)r1.y >> 16; + r1.y = (int)r1.y & 0x0000ffff; + r7.y = f16tof32((uint)(uint)r1.y); + r8.y = f16tof32((uint)(uint)r0.x); + r0.x = (uint)r1.z >> 16; + r1.y = (int)r1.z & 0x0000ffff; + r7.z = f16tof32((uint)(uint)r1.y); + r8.z = f16tof32((uint)(uint)r0.x); + r1.yzw = r8.xyz + r5.xyz; + r1.yzw = float3(0.21875,0.21875,0.21875) * r1.yzw; + r1.yzw = r6.xyz * float3(0.2734375,0.2734375,0.2734375) + r1.yzw; + r0.x = (int)r2.w & 0x0000ffff; + r2.x = (uint)r2.w >> 16; + r9.x = f16tof32((uint)(uint)r2.x); + r10.x = f16tof32((uint)(uint)r0.x); + r0.x = (int)r3.y & 0x0000ffff; + r2.x = (uint)r3.y >> 16; + r9.y = f16tof32((uint)(uint)r2.x); + r10.y = f16tof32((uint)(uint)r0.x); + r0.x = (int)r3.z & 0x0000ffff; + r2.x = (uint)r3.z >> 16; + r9.z = f16tof32((uint)(uint)r2.x); + r10.z = f16tof32((uint)(uint)r0.x); + r2.xzw = r10.xyz + r7.xyz; + r4.yzw = r10.xyz + r6.xyz; + r4.yzw = float3(0.21875,0.21875,0.21875) * r4.yzw; + r4.yzw = r5.xyz * float3(0.2734375,0.2734375,0.2734375) + r4.yzw; + r1.yzw = r2.xzw * float3(0.109375,0.109375,0.109375) + r1.yzw; + r0.x = (uint)r0.y >> 16; + r0.y = (int)r0.y & 0x0000ffff; + r5.x = f16tof32((uint)(uint)r0.y); + r6.x = f16tof32((uint)(uint)r0.x); + r0.x = (uint)r0.z >> 16; + r0.y = (int)r0.z & 0x0000ffff; + r5.y = f16tof32((uint)(uint)r0.y); + r6.y = f16tof32((uint)(uint)r0.x); + r0.x = (uint)r0.w >> 16; + r0.y = (int)r0.w & 0x0000ffff; + r5.z = f16tof32((uint)(uint)r0.y); + r6.z = f16tof32((uint)(uint)r0.x); + r0.xyz = r6.xyz + r9.xyz; + r2.xzw = r9.xyz + r8.xyz; + r2.xzw = r2.xzw * float3(0.109375,0.109375,0.109375) + r4.yzw; + r0.xyz = r0.xyz * float3(0.03125,0.03125,0.03125) + r1.yzw; + r0.w = (int)r3.x & 0x0000ffff; + r1.y = (uint)r3.x >> 16; + r3.x = f16tof32((uint)(uint)r1.y); + r8.x = f16tof32((uint)(uint)r0.w); + r0.w = (int)r4.x & 0x0000ffff; + r1.y = (uint)r4.x >> 16; + r3.y = f16tof32((uint)(uint)r1.y); + r8.y = f16tof32((uint)(uint)r0.w); + r0.w = (int)r3.w & 0x0000ffff; + r1.y = (uint)r3.w >> 16; + r3.z = f16tof32((uint)(uint)r1.y); + r1.yzw = r6.xyz + r3.xyz; + r8.z = f16tof32((uint)(uint)r0.w); + r3.xyz = r8.xyz + r5.xyz; + r4.xyz = r8.xyz + r7.xyz; + r2.xzw = r4.xyz * float3(0.03125,0.03125,0.03125) + r2.xzw; + r1.yzw = r1.yzw * float3(0.00390625,0.00390625,0.00390625) + r2.xzw; + r0.xyz = r3.xyz * float3(0.00390625,0.00390625,0.00390625) + r0.xyz; + g0[r1.x].val[0/4] = r0.x; + g1[r1.x].val[0/4] = r0.y; + g2[r1.x].val[0/4] = r0.z; + r0.x = (int)r1.x + 1; + g0[r0.x].val[0/4] = r1.y; + g1[r0.x].val[0/4] = r1.z; + g2[r0.x].val[0/4] = r1.w; + GroupMemoryBarrierWithGroupSync(); + r0.xyzw = (int4)r2.yyyy + int4(8,16,24,32); + r1.x = g0[r0.w].val[0/4]; + r1.y = g1[r0.w].val[0/4]; + r1.z = g2[r0.w].val[0/4]; + r2.xzw = (int3)r2.yyy + int3(40,48,56); + r3.x = g0[r2.x].val[0/4]; + r3.y = g1[r2.x].val[0/4]; + r3.z = g2[r2.x].val[0/4]; + r4.x = g0[r0.z].val[0/4]; + r4.y = g1[r0.z].val[0/4]; + r4.z = g2[r0.z].val[0/4]; + r3.xyzw = r4.xyzx + r3.xyzx; + r3.xyzw = float4(0.21875,0.21875,0.21875,0.21875) * r3.xyzw; + r1.xyzw = r1.xyzx * float4(0.2734375,0.2734375,0.2734375,0.2734375) + r3.xyzw; + r3.x = g0[r0.y].val[0/4]; + r3.y = g1[r0.y].val[0/4]; + r3.z = g2[r0.y].val[0/4]; + r4.x = g0[r2.z].val[0/4]; + r4.y = g1[r2.z].val[0/4]; + r4.z = g2[r2.z].val[0/4]; + r3.xyzw = r4.xyzx + r3.xyzx; + r1.xyzw = r3.xyzw * float4(0.109375,0.109375,0.109375,0.109375) + r1.xyzw; + r3.x = g0[r0.x].val[0/4]; + r3.y = g1[r0.x].val[0/4]; + r3.z = g2[r0.x].val[0/4]; + r0.x = g0[r2.w].val[0/4]; + r0.y = g1[r2.w].val[0/4]; + r0.z = g2[r2.w].val[0/4]; + r0.xyzw = r3.xyzx + r0.xyzx; + r0.xyzw = r0.xyzw * float4(0.03125,0.03125,0.03125,0.03125) + r1.xyzw; + r1.x = g0[r2.y].val[0/4]; + r1.y = g1[r2.y].val[0/4]; + r1.z = g2[r2.y].val[0/4]; + r1.w = (int)r2.y + 64; + r2.x = g0[r1.w].val[0/4]; + r2.y = g1[r1.w].val[0/4]; + r2.z = g2[r1.w].val[0/4]; + r1.xyzw = r2.xyzx + r1.xyzx; + r0.xyzw = r1.xyzw * float4(0.00390625,0.00390625,0.00390625,0.00390625) + r0.xyzw; + r1.xy = (uint2)cb1[0].xy; + r1.xy = cmp((uint2)vThreadID.xy < (uint2)r1.xy); + r1.x = r1.y ? r1.x : 0; + r1.x = r1.x ? 1.000000 : 0; + r0.xyzw = r1.xxxx * r0.xyzw; + u0[vThreadID.xy] = r0; + return; +} \ No newline at end of file diff --git a/src/games/endfield/bloom/bloom-downsample_0x2CF2F67B.cs_5_0.hlsl b/src/games/endfield/bloom/bloom-downsample_0x2CF2F67B.cs_5_0.hlsl new file mode 100644 index 0000000000..1837879113 --- /dev/null +++ b/src/games/endfield/bloom/bloom-downsample_0x2CF2F67B.cs_5_0.hlsl @@ -0,0 +1,224 @@ +// ---- Created with 3Dmigoto v1.4.1 on Tue Feb 10 11:18:06 2026 +groupshared struct { float val[1]; } g2[128]; +groupshared struct { float val[1]; } g1[128]; +groupshared struct { float val[1]; } g0[128]; +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb0 : register(b0) +{ + float4 cb0[2]; +} + +RWTexture2D u0 : register(u0); + +// 3Dmigoto declarations +#define cmp - + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID, uint3 vThreadGroupID : SV_GroupID, uint3 vThreadIDInGroup : SV_GroupThreadID) +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10; + uint4 bitmask, uiDest; + float4 fDest; + r0.xyzw = (uint4)vThreadGroupID.xyxy << int4(3,3,3,3); + r1.xyzw = (uint4)vThreadIDInGroup.xyxy << int4(1,1,1,1); + r0.xyzw = (int4)r0.xyzw + (int4)r1.xyzw; + r1.x = mad((int)vThreadIDInGroup.y, 16, (int)r1.z); + r0.xyzw = (int4)r0.xyzw + int4(-4,-4,-4,-4); + r0.xyzw = (int4)r0.xyzw; + r2.xyzw = float4(0.5,0.5,1.5,0.5) + r0.zwzw; + r0.xyzw = float4(0.5,1.5,1.5,1.5) + r0.xyzw; + r0.xyzw = cb0[0].zwzw * r0.xyzw; + r2.xyzw = cb0[0].zwzw * r2.xyzw; + r1.yzw = t0.SampleLevel(s0_s, r2.xy, 0).xyz; + r2.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; + r2.w = max(r1.y, r1.z); + r2.w = max(r2.w, r1.w); + r2.w = max(cb0[1].x, r2.w); + r2.w = r2.w / cb0[1].x; + r1.yzw = r1.yzw / r2.www; + r1.yzw = f32tof16(r1.yzw); + r2.w = max(r2.x, r2.y); + r2.w = max(r2.w, r2.z); + r2.w = max(cb0[1].x, r2.w); + r2.w = r2.w / cb0[1].x; + r2.xyz = r2.xyz / r2.www; + r2.xyz = f32tof16(r2.xyz); + r1.yzw = mad((int3)r2.xyz, int3(0x10000,0x10000,0x10000), (int3)r1.yzw); + r2.xy = mad((int2)vThreadIDInGroup.yy, int2(16,8), (int2)vThreadIDInGroup.xx); + g0[r2.x].val[0/4] = r1.y; + g1[r2.x].val[0/4] = r1.z; + g2[r2.x].val[0/4] = r1.w; + r1.yzw = t0.SampleLevel(s0_s, r0.xy, 0).xyz; + r0.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; + r0.w = max(r1.y, r1.z); + r0.w = max(r0.w, r1.w); + r0.w = max(cb0[1].x, r0.w); + r0.w = r0.w / cb0[1].x; + r1.yzw = r1.yzw / r0.www; + r1.yzw = f32tof16(r1.yzw); + r0.w = max(r0.x, r0.y); + r0.w = max(r0.w, r0.z); + r0.w = max(cb0[1].x, r0.w); + r0.w = r0.w / cb0[1].x; + r0.xyz = r0.xyz / r0.www; + r0.xyz = f32tof16(r0.xyz); + r0.xyz = mad((int3)r0.xyz, int3(0x10000,0x10000,0x10000), (int3)r1.yzw); + r0.w = (int)r2.x + 8; + g0[r0.w].val[0/4] = r0.x; + g1[r0.w].val[0/4] = r0.y; + g2[r0.w].val[0/4] = r0.z; + GroupMemoryBarrierWithGroupSync(); + r0.x = (int)vThreadIDInGroup.x & 4; + r0.x = (int)r0.x + (int)r2.x; + r0.y = g0[r0.x].val[0/4]; + r0.z = g1[r0.x].val[0/4]; + r0.w = g2[r0.x].val[0/4]; + r3.xyzw = (int4)r0.xxxx + int4(1,2,3,4); + r0.x = g0[r3.x].val[0/4]; + r1.y = g1[r3.x].val[0/4]; + r1.z = g2[r3.x].val[0/4]; + r1.w = g0[r3.y].val[0/4]; + r2.x = g1[r3.y].val[0/4]; + r2.z = g2[r3.y].val[0/4]; + r2.w = g0[r3.z].val[0/4]; + r3.x = g0[r3.w].val[0/4]; + r3.y = g1[r3.z].val[0/4]; + r4.x = g1[r3.w].val[0/4]; + r3.z = g2[r3.z].val[0/4]; + r3.w = g2[r3.w].val[0/4]; + r4.y = (int)r1.w & 0x0000ffff; + r1.w = (uint)r1.w >> 16; + r5.x = f16tof32((uint)(uint)r1.w); + r6.x = f16tof32((uint)(uint)r4.y); + r1.w = (int)r2.x & 0x0000ffff; + r2.x = (uint)r2.x >> 16; + r5.y = f16tof32((uint)(uint)r2.x); + r6.y = f16tof32((uint)(uint)r1.w); + r1.w = (int)r2.z & 0x0000ffff; + r2.x = (uint)r2.z >> 16; + r5.z = f16tof32((uint)(uint)r2.x); + r6.z = f16tof32((uint)(uint)r1.w); + r1.w = (uint)r0.x >> 16; + r0.x = (int)r0.x & 0x0000ffff; + r7.x = f16tof32((uint)(uint)r0.x); + r8.x = f16tof32((uint)(uint)r1.w); + r0.x = (uint)r1.y >> 16; + r1.y = (int)r1.y & 0x0000ffff; + r7.y = f16tof32((uint)(uint)r1.y); + r8.y = f16tof32((uint)(uint)r0.x); + r0.x = (uint)r1.z >> 16; + r1.y = (int)r1.z & 0x0000ffff; + r7.z = f16tof32((uint)(uint)r1.y); + r8.z = f16tof32((uint)(uint)r0.x); + r1.yzw = r8.xyz + r5.xyz; + r1.yzw = float3(0.21875,0.21875,0.21875) * r1.yzw; + r1.yzw = r6.xyz * float3(0.2734375,0.2734375,0.2734375) + r1.yzw; + r0.x = (int)r2.w & 0x0000ffff; + r2.x = (uint)r2.w >> 16; + r9.x = f16tof32((uint)(uint)r2.x); + r10.x = f16tof32((uint)(uint)r0.x); + r0.x = (int)r3.y & 0x0000ffff; + r2.x = (uint)r3.y >> 16; + r9.y = f16tof32((uint)(uint)r2.x); + r10.y = f16tof32((uint)(uint)r0.x); + r0.x = (int)r3.z & 0x0000ffff; + r2.x = (uint)r3.z >> 16; + r9.z = f16tof32((uint)(uint)r2.x); + r10.z = f16tof32((uint)(uint)r0.x); + r2.xzw = r10.xyz + r7.xyz; + r4.yzw = r10.xyz + r6.xyz; + r4.yzw = float3(0.21875,0.21875,0.21875) * r4.yzw; + r4.yzw = r5.xyz * float3(0.2734375,0.2734375,0.2734375) + r4.yzw; + r1.yzw = r2.xzw * float3(0.109375,0.109375,0.109375) + r1.yzw; + r0.x = (uint)r0.y >> 16; + r0.y = (int)r0.y & 0x0000ffff; + r5.x = f16tof32((uint)(uint)r0.y); + r6.x = f16tof32((uint)(uint)r0.x); + r0.x = (uint)r0.z >> 16; + r0.y = (int)r0.z & 0x0000ffff; + r5.y = f16tof32((uint)(uint)r0.y); + r6.y = f16tof32((uint)(uint)r0.x); + r0.x = (uint)r0.w >> 16; + r0.y = (int)r0.w & 0x0000ffff; + r5.z = f16tof32((uint)(uint)r0.y); + r6.z = f16tof32((uint)(uint)r0.x); + r0.xyz = r6.xyz + r9.xyz; + r2.xzw = r9.xyz + r8.xyz; + r2.xzw = r2.xzw * float3(0.109375,0.109375,0.109375) + r4.yzw; + r0.xyz = r0.xyz * float3(0.03125,0.03125,0.03125) + r1.yzw; + r0.w = (int)r3.x & 0x0000ffff; + r1.y = (uint)r3.x >> 16; + r3.x = f16tof32((uint)(uint)r1.y); + r8.x = f16tof32((uint)(uint)r0.w); + r0.w = (int)r4.x & 0x0000ffff; + r1.y = (uint)r4.x >> 16; + r3.y = f16tof32((uint)(uint)r1.y); + r8.y = f16tof32((uint)(uint)r0.w); + r0.w = (int)r3.w & 0x0000ffff; + r1.y = (uint)r3.w >> 16; + r3.z = f16tof32((uint)(uint)r1.y); + r1.yzw = r6.xyz + r3.xyz; + r8.z = f16tof32((uint)(uint)r0.w); + r3.xyz = r8.xyz + r5.xyz; + r4.xyz = r8.xyz + r7.xyz; + r2.xzw = r4.xyz * float3(0.03125,0.03125,0.03125) + r2.xzw; + r1.yzw = r1.yzw * float3(0.00390625,0.00390625,0.00390625) + r2.xzw; + r0.xyz = r3.xyz * float3(0.00390625,0.00390625,0.00390625) + r0.xyz; + g0[r1.x].val[0/4] = r0.x; + g1[r1.x].val[0/4] = r0.y; + g2[r1.x].val[0/4] = r0.z; + r0.x = (int)r1.x + 1; + g0[r0.x].val[0/4] = r1.y; + g1[r0.x].val[0/4] = r1.z; + g2[r0.x].val[0/4] = r1.w; + GroupMemoryBarrierWithGroupSync(); + r0.xyzw = (int4)r2.yyyy + int4(8,16,24,32); + r1.x = g0[r0.w].val[0/4]; + r1.y = g1[r0.w].val[0/4]; + r1.z = g2[r0.w].val[0/4]; + r2.xzw = (int3)r2.yyy + int3(40,48,56); + r3.x = g0[r2.x].val[0/4]; + r3.y = g1[r2.x].val[0/4]; + r3.z = g2[r2.x].val[0/4]; + r4.x = g0[r0.z].val[0/4]; + r4.y = g1[r0.z].val[0/4]; + r4.z = g2[r0.z].val[0/4]; + r3.xyzw = r4.xyzx + r3.xyzx; + r3.xyzw = float4(0.21875,0.21875,0.21875,0.21875) * r3.xyzw; + r1.xyzw = r1.xyzx * float4(0.2734375,0.2734375,0.2734375,0.2734375) + r3.xyzw; + r3.x = g0[r0.y].val[0/4]; + r3.y = g1[r0.y].val[0/4]; + r3.z = g2[r0.y].val[0/4]; + r4.x = g0[r2.z].val[0/4]; + r4.y = g1[r2.z].val[0/4]; + r4.z = g2[r2.z].val[0/4]; + r3.xyzw = r4.xyzx + r3.xyzx; + r1.xyzw = r3.xyzw * float4(0.109375,0.109375,0.109375,0.109375) + r1.xyzw; + r3.x = g0[r0.x].val[0/4]; + r3.y = g1[r0.x].val[0/4]; + r3.z = g2[r0.x].val[0/4]; + r0.x = g0[r2.w].val[0/4]; + r0.y = g1[r2.w].val[0/4]; + r0.z = g2[r2.w].val[0/4]; + r0.xyzw = r3.xyzx + r0.xyzx; + r0.xyzw = r0.xyzw * float4(0.03125,0.03125,0.03125,0.03125) + r1.xyzw; + r1.x = g0[r2.y].val[0/4]; + r1.y = g1[r2.y].val[0/4]; + r1.z = g2[r2.y].val[0/4]; + r1.w = (int)r2.y + 64; + r2.x = g0[r1.w].val[0/4]; + r2.y = g1[r1.w].val[0/4]; + r2.z = g2[r1.w].val[0/4]; + r1.xyzw = r2.xyzx + r1.xyzx; + r0.xyzw = r1.xyzw * float4(0.00390625,0.00390625,0.00390625,0.00390625) + r0.xyzw; + r1.xy = (uint2)cb0[0].xy; + r1.xy = cmp((uint2)vThreadID.xy < (uint2)r1.xy); + r1.x = r1.y ? r1.x : 0; + r1.x = r1.x ? 1.000000 : 0; + r0.xyzw = r1.xxxx * r0.xyzw; + u0[vThreadID.xy] = r0; + return; +} \ No newline at end of file diff --git a/src/games/endfield/bloom/bloom-downsample_0x948BF835.cs_5_0.hlsl b/src/games/endfield/bloom/bloom-downsample_0x948BF835.cs_5_0.hlsl new file mode 100644 index 0000000000..0627951493 --- /dev/null +++ b/src/games/endfield/bloom/bloom-downsample_0x948BF835.cs_5_0.hlsl @@ -0,0 +1,204 @@ +// ---- Created with 3Dmigoto v1.4.1 on Tue Feb 10 11:18:06 2026 +groupshared struct { float val[1]; } g2[128]; +groupshared struct { float val[1]; } g1[128]; +groupshared struct { float val[1]; } g0[128]; +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb0 : register(b0) +{ + float4 cb0[1]; +} + +RWTexture2D u0 : register(u0); + +// 3Dmigoto declarations +#define cmp - + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID, uint3 vThreadGroupID : SV_GroupID, uint3 vThreadIDInGroup : SV_GroupThreadID) +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10; + uint4 bitmask, uiDest; + float4 fDest; + r0.xyzw = (uint4)vThreadGroupID.xyxy << int4(3,3,3,3); + r1.xyzw = (uint4)vThreadIDInGroup.xyxy << int4(1,1,1,1); + r0.xyzw = (int4)r0.xyzw + (int4)r1.xyzw; + r1.x = mad((int)vThreadIDInGroup.y, 16, (int)r1.z); + r0.xyzw = (int4)r0.xyzw + int4(-4,-4,-4,-4); + r0.xyzw = (int4)r0.xyzw; + r2.xyzw = float4(0.5,0.5,1.5,0.5) + r0.zwzw; + r0.xyzw = float4(0.5,1.5,1.5,1.5) + r0.xyzw; + r0.xyzw = cb0[0].zwzw * r0.xyzw; + r2.xyzw = cb0[0].zwzw * r2.xyzw; + r1.yzw = t0.SampleLevel(s0_s, r2.xy, 0).xyz; + r2.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; + r2.xyz = f32tof16(r2.xyz); + r1.yzw = f32tof16(r1.yzw); + r1.yzw = mad((int3)r2.xyz, int3(0x10000,0x10000,0x10000), (int3)r1.yzw); + r2.xy = mad((int2)vThreadIDInGroup.yy, int2(16,8), (int2)vThreadIDInGroup.xx); + g0[r2.x].val[0/4] = r1.y; + g1[r2.x].val[0/4] = r1.z; + g2[r2.x].val[0/4] = r1.w; + r1.yzw = t0.SampleLevel(s0_s, r0.xy, 0).xyz; + r0.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; + r0.xyz = f32tof16(r0.xyz); + r1.yzw = f32tof16(r1.yzw); + r0.xyz = mad((int3)r0.xyz, int3(0x10000,0x10000,0x10000), (int3)r1.yzw); + r0.w = (int)r2.x + 8; + g0[r0.w].val[0/4] = r0.x; + g1[r0.w].val[0/4] = r0.y; + g2[r0.w].val[0/4] = r0.z; + GroupMemoryBarrierWithGroupSync(); + r0.x = (int)vThreadIDInGroup.x & 4; + r0.x = (int)r0.x + (int)r2.x; + r0.y = g0[r0.x].val[0/4]; + r0.z = g1[r0.x].val[0/4]; + r0.w = g2[r0.x].val[0/4]; + r3.xyzw = (int4)r0.xxxx + int4(1,2,3,4); + r0.x = g0[r3.x].val[0/4]; + r1.y = g1[r3.x].val[0/4]; + r1.z = g2[r3.x].val[0/4]; + r1.w = g0[r3.y].val[0/4]; + r2.x = g1[r3.y].val[0/4]; + r2.z = g2[r3.y].val[0/4]; + r2.w = g0[r3.z].val[0/4]; + r3.x = g0[r3.w].val[0/4]; + r3.y = g1[r3.z].val[0/4]; + r4.x = g1[r3.w].val[0/4]; + r3.z = g2[r3.z].val[0/4]; + r3.w = g2[r3.w].val[0/4]; + r4.y = (int)r1.w & 0x0000ffff; + r1.w = (uint)r1.w >> 16; + r5.x = f16tof32((uint)(uint)r1.w); + r6.x = f16tof32((uint)(uint)r4.y); + r1.w = (int)r2.x & 0x0000ffff; + r2.x = (uint)r2.x >> 16; + r5.y = f16tof32((uint)(uint)r2.x); + r6.y = f16tof32((uint)(uint)r1.w); + r1.w = (int)r2.z & 0x0000ffff; + r2.x = (uint)r2.z >> 16; + r5.z = f16tof32((uint)(uint)r2.x); + r6.z = f16tof32((uint)(uint)r1.w); + r1.w = (uint)r0.x >> 16; + r0.x = (int)r0.x & 0x0000ffff; + r7.x = f16tof32((uint)(uint)r0.x); + r8.x = f16tof32((uint)(uint)r1.w); + r0.x = (uint)r1.y >> 16; + r1.y = (int)r1.y & 0x0000ffff; + r7.y = f16tof32((uint)(uint)r1.y); + r8.y = f16tof32((uint)(uint)r0.x); + r0.x = (uint)r1.z >> 16; + r1.y = (int)r1.z & 0x0000ffff; + r7.z = f16tof32((uint)(uint)r1.y); + r8.z = f16tof32((uint)(uint)r0.x); + r1.yzw = r8.xyz + r5.xyz; + r1.yzw = float3(0.21875,0.21875,0.21875) * r1.yzw; + r1.yzw = r6.xyz * float3(0.2734375,0.2734375,0.2734375) + r1.yzw; + r0.x = (int)r2.w & 0x0000ffff; + r2.x = (uint)r2.w >> 16; + r9.x = f16tof32((uint)(uint)r2.x); + r10.x = f16tof32((uint)(uint)r0.x); + r0.x = (int)r3.y & 0x0000ffff; + r2.x = (uint)r3.y >> 16; + r9.y = f16tof32((uint)(uint)r2.x); + r10.y = f16tof32((uint)(uint)r0.x); + r0.x = (int)r3.z & 0x0000ffff; + r2.x = (uint)r3.z >> 16; + r9.z = f16tof32((uint)(uint)r2.x); + r10.z = f16tof32((uint)(uint)r0.x); + r2.xzw = r10.xyz + r7.xyz; + r4.yzw = r10.xyz + r6.xyz; + r4.yzw = float3(0.21875,0.21875,0.21875) * r4.yzw; + r4.yzw = r5.xyz * float3(0.2734375,0.2734375,0.2734375) + r4.yzw; + r1.yzw = r2.xzw * float3(0.109375,0.109375,0.109375) + r1.yzw; + r0.x = (uint)r0.y >> 16; + r0.y = (int)r0.y & 0x0000ffff; + r5.x = f16tof32((uint)(uint)r0.y); + r6.x = f16tof32((uint)(uint)r0.x); + r0.x = (uint)r0.z >> 16; + r0.y = (int)r0.z & 0x0000ffff; + r5.y = f16tof32((uint)(uint)r0.y); + r6.y = f16tof32((uint)(uint)r0.x); + r0.x = (uint)r0.w >> 16; + r0.y = (int)r0.w & 0x0000ffff; + r5.z = f16tof32((uint)(uint)r0.y); + r6.z = f16tof32((uint)(uint)r0.x); + r0.xyz = r6.xyz + r9.xyz; + r2.xzw = r9.xyz + r8.xyz; + r2.xzw = r2.xzw * float3(0.109375,0.109375,0.109375) + r4.yzw; + r0.xyz = r0.xyz * float3(0.03125,0.03125,0.03125) + r1.yzw; + r0.w = (int)r3.x & 0x0000ffff; + r1.y = (uint)r3.x >> 16; + r3.x = f16tof32((uint)(uint)r1.y); + r8.x = f16tof32((uint)(uint)r0.w); + r0.w = (int)r4.x & 0x0000ffff; + r1.y = (uint)r4.x >> 16; + r3.y = f16tof32((uint)(uint)r1.y); + r8.y = f16tof32((uint)(uint)r0.w); + r0.w = (int)r3.w & 0x0000ffff; + r1.y = (uint)r3.w >> 16; + r3.z = f16tof32((uint)(uint)r1.y); + r1.yzw = r6.xyz + r3.xyz; + r8.z = f16tof32((uint)(uint)r0.w); + r3.xyz = r8.xyz + r5.xyz; + r4.xyz = r8.xyz + r7.xyz; + r2.xzw = r4.xyz * float3(0.03125,0.03125,0.03125) + r2.xzw; + r1.yzw = r1.yzw * float3(0.00390625,0.00390625,0.00390625) + r2.xzw; + r0.xyz = r3.xyz * float3(0.00390625,0.00390625,0.00390625) + r0.xyz; + g0[r1.x].val[0/4] = r0.x; + g1[r1.x].val[0/4] = r0.y; + g2[r1.x].val[0/4] = r0.z; + r0.x = (int)r1.x + 1; + g0[r0.x].val[0/4] = r1.y; + g1[r0.x].val[0/4] = r1.z; + g2[r0.x].val[0/4] = r1.w; + GroupMemoryBarrierWithGroupSync(); + r0.xyzw = (int4)r2.yyyy + int4(8,16,24,32); + r1.x = g0[r0.w].val[0/4]; + r1.y = g1[r0.w].val[0/4]; + r1.z = g2[r0.w].val[0/4]; + r2.xzw = (int3)r2.yyy + int3(40,48,56); + r3.x = g0[r2.x].val[0/4]; + r3.y = g1[r2.x].val[0/4]; + r3.z = g2[r2.x].val[0/4]; + r4.x = g0[r0.z].val[0/4]; + r4.y = g1[r0.z].val[0/4]; + r4.z = g2[r0.z].val[0/4]; + r3.xyzw = r4.xyzx + r3.xyzx; + r3.xyzw = float4(0.21875,0.21875,0.21875,0.21875) * r3.xyzw; + r1.xyzw = r1.xyzx * float4(0.2734375,0.2734375,0.2734375,0.2734375) + r3.xyzw; + r3.x = g0[r0.y].val[0/4]; + r3.y = g1[r0.y].val[0/4]; + r3.z = g2[r0.y].val[0/4]; + r4.x = g0[r2.z].val[0/4]; + r4.y = g1[r2.z].val[0/4]; + r4.z = g2[r2.z].val[0/4]; + r3.xyzw = r4.xyzx + r3.xyzx; + r1.xyzw = r3.xyzw * float4(0.109375,0.109375,0.109375,0.109375) + r1.xyzw; + r3.x = g0[r0.x].val[0/4]; + r3.y = g1[r0.x].val[0/4]; + r3.z = g2[r0.x].val[0/4]; + r0.x = g0[r2.w].val[0/4]; + r0.y = g1[r2.w].val[0/4]; + r0.z = g2[r2.w].val[0/4]; + r0.xyzw = r3.xyzx + r0.xyzx; + r0.xyzw = r0.xyzw * float4(0.03125,0.03125,0.03125,0.03125) + r1.xyzw; + r1.x = g0[r2.y].val[0/4]; + r1.y = g1[r2.y].val[0/4]; + r1.z = g2[r2.y].val[0/4]; + r1.w = (int)r2.y + 64; + r2.x = g0[r1.w].val[0/4]; + r2.y = g1[r1.w].val[0/4]; + r2.z = g2[r1.w].val[0/4]; + r1.xyzw = r2.xyzx + r1.xyzx; + r0.xyzw = r1.xyzw * float4(0.00390625,0.00390625,0.00390625,0.00390625) + r0.xyzw; + r1.xy = (uint2)cb0[0].xy; + r1.xy = cmp((uint2)vThreadID.xy < (uint2)r1.xy); + r1.x = r1.y ? r1.x : 0; + r1.x = r1.x ? 1.000000 : 0; + r0.xyzw = r1.xxxx * r0.xyzw; + u0[vThreadID.xy] = r0; + return; +} \ No newline at end of file diff --git a/src/games/endfield/deferred-lighting/0x05D849CE.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x05D849CE.ps_5_0_original_backup.asm deleted file mode 100644 index d0dbb8b69a..0000000000 --- a/src/games/endfield/deferred-lighting/0x05D849CE.ps_5_0_original_backup.asm +++ /dev/null @@ -1,1844 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 22:24:07 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy w -// TEXCOORD 0 xy 1 NONE float xy -// TEXCOORD 1 xyz 2 NONE float xyz -// TEXCOORD 2 xyz 3 NONE float xyz -// TEXCOORD 3 xyzw 4 NONE float xyzw -// TEXCOORD 4 xyz 5 NONE float xyz -// TEXCOORD 5 xyz 6 NONE float xyz -// TEXCOORD 6 xyz 7 NONE float xyz -// TEXCOORD 7 xyz 8 NONE float xyz -// TEXCOORD 8 x 9 NONE uint x -// SV_IsFrontFace 0 x 10 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[216], immediateIndexed -dcl_constantbuffer CB1[4093], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[9], immediateIndexed -dcl_constantbuffer CB6[160], dynamicIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_comparison -dcl_sampler s3, mode_default -dcl_sampler s4, mode_default -dcl_sampler s5, mode_default -dcl_resource_structured t0, 4 -dcl_resource_structured t1, 16 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture3d (float,float,float,float) t4 -dcl_resource_texture3d (float,float,float,float) t5 -dcl_resource_texture3d (float,float,float,float) t6 -dcl_resource_texture3d (float,float,float,float) t7 -dcl_resource_texture3d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texturecube (float,float,float,float) t16 -dcl_resource_texture2d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_input_ps_siv linear noperspective v0.xyw, position -dcl_input_ps linear v1.xy -dcl_input_ps linear v2.xyz -dcl_input_ps linear v3.xyz -dcl_input_ps linear v4.xyzw -dcl_input_ps linear v5.xyz -dcl_input_ps linear v6.xyz -dcl_input_ps linear v7.xyz -dcl_input_ps linear v8.xyz -dcl_input_ps constant v9.x -dcl_input_ps_sgv constant v10.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 32 -add r0.xyz, -v2.xyzx, cb0[44].xyzx -mov r1.x, cb0[0].z -mov r1.y, cb0[1].z -mov r1.z, cb0[2].z -add r2.xyz, -r0.xyzx, r1.xyzx -mad r0.xyz, cb0[86].wwww, r2.xyzx, r0.xyzx -dp3 r0.w, r0.xyzx, r0.xyzx -max r1.w, r0.w, l(9.999999939E-09) -rsq r1.w, r1.w -mul r2.xyz, r0.xyzx, r1.wwww -ishl r2.w, v9.x, l(4) -and r3.x, l(16), cb1[r2.w + 4].w -if_nz r3.x - iadd r3.x, l(2), cb1[r2.w + 5].x - ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r3.x, l(12), t1.xxxx - ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.y, cb1[r2.w + 5].x, l(12), t1.xxxx -else - mov r3.xy, cb1[r2.w + 3].zxzz -endif -sample_b_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t13.xyzw, s3, cb0[108].x -sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t14.xyzw, s4, cb0[108].x -add r3.z, -r5.w, l(1.000000) -mul r4.xyzw, r4.xyzw, cb5[5].xyzw -mul r6.xyz, r4.xyzx, cb5[4].zzzz -dp3 r3.w, r6.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r6.xyz, r4.xyzx, cb5[4].zzzz, -r3.wwww -mad r6.xyz, cb5[4].wwww, r6.xyzx, r3.wwww -sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, v1.xyxx, t15.xywz, s5, cb0[108].x -mul r7.x, r7.x, r7.z -mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r3.w, r7.xyxx, r7.xyxx -min r3.w, r3.w, l(1.000000) -add r3.w, -r3.w, l(1.000000) -sqrt r3.w, r3.w -max r3.w, r3.w, l(1.000000017E-16) -mul r7.xy, r7.xyxx, cb5[0].wwww -add r8.xz, -r3.yyxy, v2.xxzx -mov r8.y, l(0.0000610351562) -dp3 r3.x, r8.xyzx, r8.xyzx -rsq r3.x, r3.x -mul r8.xyz, r3.xxxx, r8.xyzx -mul r9.xyz, v3.zxyz, v4.yzxy -mad r9.xyz, v3.yzxy, v4.zxyz, -r9.xyzx -mul r9.xyz, r9.xyzx, v4.wwww -mul r7.yzw, r7.yyyy, r9.xxyz -mad r7.xyz, r7.xxxx, v4.xyzx, r7.yzwy -mad r3.xyw, r3.wwww, v3.xyxz, r7.xyxz -mad r6.w, cb5[1].y, l(2.000000), l(-1.000000) -movc r6.w, v10.x, l(1.000000), r6.w -dp3 r7.x, r3.xywx, r3.xywx -max r7.x, r7.x, l(1.175494351E-38) -rsq r7.x, r7.x -mul r3.xyw, r3.xyxw, r7.xxxx -mul r7.xyz, r6.wwww, r3.xywx -dp3 r8.w, v3.xyzx, v3.xyzx -rsq r8.w, r8.w -mul r9.xyz, r8.wwww, v3.xyzx -mul r9.xyz, r6.wwww, r9.xyzx -ftou r10.xy, v0.xyxx -add r8.w, l(1.000000), -cb0[111].x -mad r8.w, cb0[198].w, r8.w, cb0[111].x -mul r8.w, r8.w, cb0[109].x -lt r9.w, cb0[187].y, l(0.500000) -if_nz r9.w - mad r11.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx - add r11.xyz, -r11.xyzx, v2.xzyx - max r9.w, |r11.y|, |r11.x| - add r9.w, r9.w, l(-464.000000) - mul_sat r9.w, r9.w, l(0.031250) - add r11.x, |r11.z|, l(-208.000000) - mul_sat r11.x, r11.x, l(0.031250) - max r9.w, r9.w, r11.x - ne r11.x, l(0.000000), cb0[210].w - lt r11.y, r9.w, l(1.000000) - and r11.x, r11.y, r11.x - if_nz r11.x - mad r11.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r11.xyz, -r11.xyzx, v2.xzyx - max r11.x, |r11.y|, |r11.x| - add r11.x, r11.x, l(-29.000000) - add r11.y, |r11.z|, l(-13.000000) - mul_sat r11.xy, r11.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) - max r11.x, r11.y, r11.x - lt r11.y, r11.x, l(1.000000) - if_nz r11.y - mad r11.yzw, v2.xxyz, l(0.000000, 2.000000, 2.000000, 2.000000), l(0.000000, 0.500000, 0.500000, 0.500000) - mul r12.xyz, r11.yzwy, cb0[211].xyzx - round_ni r12.xyz, r12.xyzx - mad r12.xyz, r11.yzwy, cb0[211].xyzx, -r12.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r13.xyw, r12.xyzx, t4.yzwx, s1, l(0.000000) - add r11.y, -r11.x, l(1.000000) - mul r11.z, l(0.500000), cb0[211].y - mad r11.w, -cb0[211].y, l(0.500000), l(1.000000) - max r11.z, r11.z, r12.y - min r11.z, r11.w, r11.z - mul r12.w, r11.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyzw, r12.xwzx, t5.xyzw, s0, l(0.000000) - mad r11.z, r14.w, r11.y, r9.w - add r15.xyz, r12.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s0, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r13.yyyy, r15.xyzx - mov r15.w, r13.y - mul r15.xyzw, r11.yyyy, r15.xyzw - add r12.xyz, r12.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r12.xyzx, t5.xyzw, s0, l(0.000000) - mad r12.xyz, r12.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r12.xyz, r13.xxxx, r12.xyzx - mov r12.w, r13.x - mul r12.xyzw, r11.yyyy, r12.xyzw - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r13.xyz, r13.wwww, r14.xyzx - mul r13.xyzw, r11.yyyy, r13.xyzw - else - mov r15.xyzw, l(0,0,0,0) - mov r12.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r11.z, r9.w - endif - mad r14.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r14.xyz, -r14.xyzx, v2.xzyx - max r11.y, |r14.y|, |r14.x| - add r11.y, r11.y, l(-116.000000) - add r11.w, |r14.z|, l(-52.000000) - mul_sat r11.yw, r11.yyyw, l(0.000000, 0.125000, 0.000000, 0.125000) - max r11.y, r11.w, r11.y - lt r11.w, r11.y, l(1.000000) - if_nz r11.w - mad r14.xyz, v2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r16.xyz, r14.xyzx, cb0[211].xyzx - round_ni r16.xyz, r16.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r16.xyw, r14.xyzx, t6.yzwx, s1, l(0.000000) - add r11.w, -r11.y, l(1.000000) - mul r11.x, r11.w, r11.x - mul r11.w, l(0.500000), cb0[211].y - mad r17.x, -cb0[211].y, l(0.500000), l(1.000000) - max r11.w, r11.w, r14.y - min r11.w, r17.x, r11.w - mul r14.w, r11.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r14.xwzx, t7.xyzw, s0, l(0.000000) - mad r11.z, r17.w, r11.x, r11.z - add r18.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t7.xyzw, s0, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r16.yyyy, r18.xyzx - mov r18.w, r16.y - mad r15.xyzw, r18.xyzw, r11.xxxx, r15.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t7.xyzw, s0, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r16.xxxx, r14.xyzx - mov r14.w, r16.x - mad r12.xyzw, r14.xyzw, r11.xxxx, r12.xyzw - mad r14.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r16.wwww, r14.xyzx - mad r13.xyzw, r16.xyzw, r11.xxxx, r13.xyzw - endif - lt r11.x, l(0.000000), r11.y - if_nz r11.x - mad r14.xyz, v2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r16.xyz, r14.xyzx, cb0[211].xyzx - mul r17.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r16.xyz, r16.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r16.xyzx - mad r16.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r14.xyz, r17.xyzx, r14.xyzx - min r14.xyz, r16.xyzx, r14.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r14.xyzx, t8.yzwx, s1, l(0.000000) - add r11.x, -r9.w, l(1.000000) - mul r11.x, r11.x, r11.y - max r11.y, r17.y, r14.y - min r11.y, r16.y, r11.y - mul r14.w, r11.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t9.xyzw, s0, l(0.000000) - add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t9.xyzw, s0, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r18.yyyy, r17.xyzx - mov r17.w, r18.y - mad r15.xyzw, r17.xyzw, r11.xxxx, r15.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t9.xyzw, s0, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r18.xxxx, r14.xyzx - mov r14.w, r18.x - mad r12.xyzw, r14.xyzw, r11.xxxx, r12.xyzw - mad r14.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r14.xyzx - mad r13.xyzw, r18.xyzw, r11.xxxx, r13.xyzw - mad r11.z, r16.w, r11.x, r11.z - endif - mad_sat r11.x, r11.z, l(2.000000), l(-1.000000) - add r14.x, -r9.w, r11.x - add r9.w, r9.w, r11.x - mul r14.y, r9.w, l(0.500000) - else - mov r15.xyzw, l(0,0,0,0) - mov r12.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r14.xy, l(0,1.000000,0,0) - endif - mul r11.xyzw, r14.yyyx, cb0[213].xyzw - mad r11.y, r11.w, l(0.500000), r11.y - mul r14.zw, r14.yyyx, cb0[213].wwwy - mad r11.w, r14.w, l(0.375000), r14.z - add r11.xyzw, r11.xyzw, r13.xyzw - mul r13.xyzw, r14.yyyx, cb0[214].xyzw - mad r13.y, r13.w, l(0.500000), r13.y - mul r14.zw, r14.yyyx, cb0[214].wwwy - mad r13.w, r14.w, l(0.375000), r14.z - add r12.xyzw, r12.xyzw, r13.xyzw - mul r13.xyzw, r14.yyyx, cb0[215].xyzw - mad r13.y, r13.w, l(0.500000), r13.y - mul r14.xy, r14.yxyy, cb0[215].wyww - mad r13.w, r14.y, l(0.375000), r14.x - add r13.xyzw, r13.xyzw, r15.xyzw - mov r7.w, l(1.000000) - dp4 r14.x, r11.xyzw, r7.xyzw - dp4 r14.y, r12.xyzw, r7.xyzw - dp4 r14.z, r13.xyzw, r7.xyzw - max r14.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r15.xyz, r8.wwww, r14.xyzx - mul r16.xyz, r12.xyzx, l(0.715200, 0.715200, 0.715200, 0.000000) - mad r16.xyz, r11.xyzx, l(0.212600, 0.212600, 0.212600, 0.000000), r16.xyzx - mad r16.xyz, r13.xyzx, l(0.072200, 0.072200, 0.072200, 0.000000), r16.xyzx - dp3 r7.w, r16.xyzx, r16.xyzx - max r7.w, r7.w, l(1.175494351E-38) - rsq r7.w, r7.w - mul r16.xyz, r7.wwww, r16.xyzx - mov r16.y, |r16.y| - mov r16.w, l(1.000000) - dp4 r11.x, r11.xyzw, r16.xyzw - dp4 r11.y, r12.xyzw, r16.xyzw - dp4 r11.z, r13.xyzw, r16.xyzw - max r11.xyz, r11.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - ge r7.w, r15.y, r15.z - and r7.w, r7.w, l(0x3f800000) - mov r12.xy, r15.zyzz - mov r12.zw, l(0,0,-1.000000,0.666666687) - mad r13.xy, r14.yzyy, r8.wwww, -r12.xyxx - mov r13.zw, l(0,0,1.000000,-1.000000) - mad r12.xyzw, r7.wwww, r13.xyzw, r12.xyzw - ge r7.w, r15.x, r12.x - and r7.w, r7.w, l(0x3f800000) - mov r13.xyz, r12.xywx - mov r13.w, r15.x - mov r12.xyw, r13.wywx - add r12.xyzw, -r13.xyzw, r12.xyzw - mad r12.xyzw, r7.wwww, r12.xyzw, r13.xyzw - min r7.w, r12.y, r12.w - add r7.w, -r7.w, r12.x - add r9.w, -r12.y, r12.w - mad r11.w, r7.w, l(6.000000), l(0.000100) - div r9.w, r9.w, r11.w - add r9.w, r9.w, r12.z - frc r9.w, |r9.w| - add r11.w, r12.x, l(0.000100) - div r7.w, r7.w, r11.w - add r13.xyzw, r9.wwww, l(-0.500000, 1.000000, 0.666666687, 0.333333343) - add r9.w, |r13.x|, l(-0.450000) - mul_sat r9.w, r9.w, l(-10.000001) - mad r11.w, r9.w, l(-2.000000), l(3.000000) - mul r9.w, r9.w, r9.w - mul r9.w, r9.w, r11.w - mad r9.w, r9.w, l(-0.350000), l(0.700000) - mov_sat r12.x, r12.x - mul r9.w, r9.w, r12.x - min r7.w, r7.w, r9.w - add r9.w, -r7.w, l(2.000000) - div r9.w, l(2.000000), r9.w - frc r12.xyz, r13.yzwy - mad r12.xyz, r12.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) - add_sat r12.xyz, |r12.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r12.xyz, r12.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) - mad r12.xyz, r7.wwww, r12.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mul r12.xyz, r9.wwww, r12.xyzx - max r7.w, r11.y, r11.x - max r7.w, r11.z, r7.w - mul r8.w, r8.w, r7.w - mov r7.w, l(1.000000) -else - mov r16.xyz, l(0,0,0,0) - mov r15.xyz, l(1.000000,1.000000,1.000000,0) - mov r12.xyz, cb0[188].xyzx - mov r7.w, l(0) -endif -add r9.w, -v2.y, cb1[r2.w + 12].z -add r9.w, r9.w, l(0.200000) -mul_sat r9.w, r9.w, l(2.85714269) -mad r11.x, r9.w, l(-2.000000), l(3.000000) -mul r9.w, r9.w, r9.w -mul r9.w, r9.w, r11.x -mul r9.w, r9.w, cb1[r2.w + 12].y -max r9.w, r9.w, cb1[r2.w + 12].w -add r11.x, r9.w, cb1[r2.w + 12].x -lt r11.x, l(0.010000), r11.x -if_nz r11.x - add r11.x, -r5.x, l(1.000000) - mul r11.yzw, r4.xxyz, r11.xxxx - dp3 r11.y, r11.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r11.y, r11.y, l(-0.350000) - mul_sat r11.y, r11.y, l(-4.000000) - mad r11.z, r11.y, l(-2.000000), l(3.000000) - mul r11.y, r11.y, r11.y - mul r11.w, r11.y, r11.z - mul r13.xyzw, v8.xyxz, l(1.000000, -1.000000, 1.000000, 1.000000) - movc r13.xyzw, cb1[r2.w + 4].wwww, r13.xyzw, v8.xzxy - mul r14.xyzw, r13.xyzw, cb0[196].zzzz - movc r17.yz, cb1[r2.w + 4].wwww, v7.zzyz, v7.yyzy - mov r17.x, v7.x - add r18.xyz, |r17.xyzx|, l(-0.200000, -0.200000, -0.200000, 0.000000) - mul r19.xyz, r18.xyzx, r18.xyzx - mul r18.xyz, r18.xyzx, r19.xyzx - max r18.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - dp3 r12.w, r18.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - div r18.xyz, r18.xyzx, r12.wwww - sample_b_indexable(texture2d)(float,float,float,float) r20.xyzw, r14.zyzz, t11.xyzw, s3, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r14.zwzz, t11.xyzw, s3, cb0[108].x - mul r21.xyzw, r18.zzzz, r21.xyzw - mad r20.xyzw, r20.xyzw, r18.yyyy, r21.xyzw - sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r14.ywyy, t11.xyzw, s3, cb0[108].x - mad r18.xyzw, r21.xyzw, r18.xxxx, r20.xyzw - add r17.yw, -r18.wwww, l(0.000000, 0.800000, 0.000000, 0.450000) - mul r20.xyz, r7.yyxy, l(0.200000, 0.000000, 1.000000, 0.000000) - mad_sat r12.w, cb1[r2.w + 12].x, r11.x, r20.x - add r12.w, -r17.y, r12.w - mul_sat r12.w, r12.w, l(3.33333325) - mad r13.x, r12.w, l(-2.000000), l(3.000000) - mul r12.w, r12.w, r12.w - mul r12.w, r12.w, r13.x - mul_sat r11.x, r9.w, r11.x - add r11.x, -r17.w, r11.x - mul_sat r11.x, r11.x, l(1.53846145) - mad r13.x, r11.x, l(-2.000000), l(3.000000) - mul r11.x, r11.x, r11.x - mul r11.x, r11.x, r13.x - max r11.x, r11.x, r12.w - add r12.w, r5.x, l(-0.500000) - mul_sat r12.w, r12.w, l(4.000000) - mad r13.x, r12.w, l(-2.000000), l(3.000000) - mul r12.w, r12.w, r12.w - mul r12.w, r12.w, r13.x - add r5.w, -r5.w, l(0.199999988) - mul_sat r5.w, r5.w, l(-5.00000048) - mad r13.x, r5.w, l(-2.000000), l(3.000000) - mul r5.w, r5.w, r5.w - mul r5.w, r5.w, r13.x - mad r13.x, r5.w, r11.w, r12.w - min r13.x, r13.x, l(1.000000) - max r9.w, r9.w, cb1[r2.w + 12].x - mad r17.yw, r18.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mul r18.xyw, r14.yzyw, l(20.000000, 20.000000, 0.000000, 20.000000) - mul r21.xyz, r14.yzwy, l(34.345600, 34.345600, 34.345600, 0.000000) - mul r22.xyz, r19.xyzx, r19.xyzx - mul r22.xyz, r22.xyzx, r22.xyzx - mul r19.xyz, r19.xyzx, r22.xyzx - dp3 r15.w, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - div r19.xyz, r19.xyzx, r15.wwww - round_ni r22.xyzw, r18.yxyw - mul r23.xyzw, r22.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r23.xyzw, r23.xyzw - add r24.xyzw, r23.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r15.w, r23.xyxx, r24.xyxx - add r20.xw, r15.wwww, r23.xxxy - mul r15.w, r20.w, r20.x - add r16.w, r20.w, r20.x - frc r15.w, r15.w - frc r25.w, r16.w - add r26.xyzw, r22.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) - mul r26.xyzw, r26.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r26.xyzw, r26.xyzw - add r27.xyzw, r26.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r16.w, r26.xyxx, r27.xyxx - add r20.xw, r16.wwww, r26.xxxy - mul r16.w, r20.w, r20.x - add r18.y, r20.w, r20.x - frc r23.x, r16.w - frc r23.y, r18.y - mad r16.w, r15.w, l(0.399999976), l(0.600000) - mul r18.y, r16.w, l(0.250000) - mad r22.xyzw, r14.zyzw, l(20.000000, 20.000000, 20.000000, 20.000000), -r22.xyzw - mad r20.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r20.xw, r20.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r22.xxxy - add r20.xw, r20.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) - mul r22.x, r20.x, l(1.250000) - lt r19.w, r20.w, l(0.000000) - movc r19.w, r19.w, l(1.250000), l(0.750000) - mul r22.y, r19.w, r20.w - mad r15.w, cb0[102].x, l(3.000000), r15.w - frc r15.w, r15.w - add r20.xw, r15.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) - mul_sat r20.xw, r20.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) - mad r24.xy, r20.xwxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) - mul r20.xw, r20.xxxw, r20.xxxw - mul r20.xw, r20.xxxw, r24.xxxy - mul r15.w, r20.w, r20.x - dp2 r19.w, r22.xyxx, r22.xyxx - sqrt r19.w, r19.w - mad r16.w, -r16.w, l(0.250000), r19.w - div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.y - mul_sat r16.w, r16.w, r19.w - mad r19.w, r16.w, l(-2.000000), l(3.000000) - mul r16.w, r16.w, r16.w - mul r16.w, r16.w, r19.w - ge r16.w, r16.w, l(0.001000) - and r16.w, r16.w, l(0x3f800000) - mul r25.z, r15.w, r16.w - div r20.xw, r22.xxxy, r18.yyyy - max r20.xw, r20.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) - min r20.xw, r20.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - ge r15.w, r25.z, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r20.xw, r15.wwww, r20.xxxw - mad r15.w, r23.x, l(0.250000), l(0.250000) - mul r25.xy, r15.wwww, r20.xwxx - dp2 r15.w, r23.zwzz, r24.zwzz - add r20.xw, r15.wwww, r23.zzzw - mul r15.w, r20.w, r20.x - add r16.w, r20.w, r20.x - frc r15.w, r15.w - frc r23.w, r16.w - dp2 r16.w, r26.zwzz, r27.zwzz - add r20.xw, r16.wwww, r26.zzzw - mul r16.w, r20.w, r20.x - add r18.y, r20.w, r20.x - frc r22.x, r16.w - frc r22.y, r18.y - mad r16.w, r15.w, l(0.399999976), l(0.600000) - mul r18.y, r16.w, l(0.250000) - mad r20.xw, r22.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r20.xw, r20.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r22.zzzw - add r20.xw, r20.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) - mul r24.x, r20.x, l(1.250000) - lt r19.w, r20.w, l(0.000000) - movc r19.w, r19.w, l(1.250000), l(0.750000) - mul r24.y, r19.w, r20.w - mad r15.w, cb0[102].x, l(3.000000), r15.w - frc r15.w, r15.w - add r20.xw, r15.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) - mul_sat r20.xw, r20.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) - mad r22.yz, r20.xxwx, l(0.000000, -2.000000, -2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000) - mul r20.xw, r20.xxxw, r20.xxxw - mul r20.xw, r20.xxxw, r22.yyyz - mul r15.w, r20.w, r20.x - dp2 r19.w, r24.xyxx, r24.xyxx - sqrt r19.w, r19.w - mad r16.w, -r16.w, l(0.250000), r19.w - div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.y - mul_sat r16.w, r16.w, r19.w - mad r19.w, r16.w, l(-2.000000), l(3.000000) - mul r16.w, r16.w, r16.w - mul r16.w, r16.w, r19.w - ge r16.w, r16.w, l(0.001000) - and r16.w, r16.w, l(0x3f800000) - mul r23.z, r15.w, r16.w - div r20.xw, r24.xxxy, r18.yyyy - max r20.xw, r20.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) - min r20.xw, r20.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - ge r15.w, r23.z, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r20.xw, r15.wwww, r20.xxxw - mad r15.w, r22.x, l(0.250000), l(0.250000) - mul r23.xy, r15.wwww, r20.xwxx - round_ni r18.xy, r18.xwxx - mul r20.xw, r18.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r20.xw, r20.xxxw - add r22.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r15.w, r20.xwxx, r22.xyxx - add r20.xw, r15.wwww, r20.xxxw - mul r15.w, r20.w, r20.x - add r16.w, r20.w, r20.x - frc r15.w, r15.w - frc r22.w, r16.w - add r20.xw, r18.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) - mul r20.xw, r20.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r20.xw, r20.xxxw - add r24.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r16.w, r20.xwxx, r24.xyxx - add r20.xw, r16.wwww, r20.xxxw - mul r16.w, r20.w, r20.x - add r18.w, r20.w, r20.x - frc r24.x, r16.w - frc r24.y, r18.w - mad r16.w, r15.w, l(0.399999976), l(0.600000) - mul r18.w, r16.w, l(0.250000) - mad r18.xy, r14.ywyy, l(20.000000, 20.000000, 0.000000, 0.000000), -r18.xyxx - mad r20.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r18.xy, r20.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r18.xyxx - add r18.xy, r18.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - mul r26.x, r18.x, l(1.250000) - lt r18.x, r18.y, l(0.000000) - movc r18.x, r18.x, l(1.250000), l(0.750000) - mul r26.y, r18.x, r18.y - mad r15.w, cb0[102].x, l(3.000000), r15.w - frc r15.w, r15.w - add r18.xy, r15.wwww, l(-0.200000, -0.850000, 0.000000, 0.000000) - mul_sat r18.xy, r18.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) - mad r20.xw, r18.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r18.xy, r18.xyxx, r18.xyxx - mul r18.xy, r18.xyxx, r20.xwxx - mul r15.w, r18.y, r18.x - dp2 r18.x, r26.xyxx, r26.xyxx - sqrt r18.x, r18.x - mad r16.w, -r16.w, l(0.250000), r18.x - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w - mul_sat r16.w, r16.w, r18.x - mad r18.x, r16.w, l(-2.000000), l(3.000000) - mul r16.w, r16.w, r16.w - mul r16.w, r16.w, r18.x - ge r16.w, r16.w, l(0.001000) - and r16.w, r16.w, l(0x3f800000) - mul r22.z, r15.w, r16.w - div r18.xy, r26.xyxx, r18.wwww - max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r15.w, r22.z, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r18.xy, r15.wwww, r18.xyxx - mad r15.w, r24.x, l(0.250000), l(0.250000) - mul r22.xy, r15.wwww, r18.xyxx - mul r23.xyzw, r19.zzzz, r23.xyzw - mad r23.xyzw, r25.xyzw, r19.yyyy, r23.xyzw - mad r22.xyzw, r22.xyzw, r19.xxxx, r23.xyzw - round_ni r23.xyzw, r21.yxyz - mul r24.xyzw, r23.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r24.xyzw, r24.xyzw - add r25.xyzw, r24.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r15.w, r24.xyxx, r25.xyxx - add r18.xy, r15.wwww, r24.xyxx - mul r15.w, r18.y, r18.x - add r16.w, r18.y, r18.x - frc r15.w, r15.w - frc r26.w, r16.w - add r27.xyzw, r23.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) - mul r27.xyzw, r27.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r27.xyzw, r27.xyzw - add r28.xyzw, r27.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r16.w, r27.xyxx, r28.xyxx - add r18.xy, r16.wwww, r27.xyxx - mul r16.w, r18.y, r18.x - add r18.x, r18.y, r18.x - frc r24.x, r16.w - frc r24.y, r18.x - mad r16.w, r15.w, l(0.399999976), l(0.600000) - mul r18.x, r16.w, l(0.250000) - mad r23.xyzw, r14.xyzw, l(34.345600, 34.345600, 34.345600, 34.345600), -r23.xyzw - mad r18.yw, r24.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r18.yw, r18.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r23.xxxy - add r18.yw, r18.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) - mul r23.x, r18.y, l(1.250000) - lt r14.x, r18.w, l(0.000000) - movc r14.x, r14.x, l(1.250000), l(0.750000) - mul r23.y, r14.x, r18.w - mad r14.x, cb0[102].x, l(4.345600), r15.w - frc r14.x, r14.x - add r18.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) - mul_sat r18.yw, r18.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) - mad r20.xw, r18.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r18.yw, r18.yyyw, r18.yyyw - mul r18.yw, r18.yyyw, r20.xxxw - mul r14.x, r18.w, r18.y - dp2 r15.w, r23.xyxx, r23.xyxx - sqrt r15.w, r15.w - mad r15.w, -r16.w, l(0.250000), r15.w - div r16.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.x - mul_sat r15.w, r15.w, r16.w - mad r16.w, r15.w, l(-2.000000), l(3.000000) - mul r15.w, r15.w, r15.w - mul r15.w, r15.w, r16.w - ge r15.w, r15.w, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r26.z, r14.x, r15.w - div r18.xy, r23.xyxx, r18.xxxx - max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r14.x, r26.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r18.xy, r14.xxxx, r18.xyxx - mad r14.x, r24.x, l(0.250000), l(0.250000) - mul r26.xy, r14.xxxx, r18.xyxx - dp2 r14.x, r24.zwzz, r25.zwzz - add r18.xy, r14.xxxx, r24.zwzz - mul r14.x, r18.y, r18.x - add r15.w, r18.y, r18.x - frc r14.x, r14.x - frc r24.w, r15.w - dp2 r15.w, r27.zwzz, r28.zwzz - add r18.xy, r15.wwww, r27.zwzz - mul r15.w, r18.y, r18.x - add r16.w, r18.y, r18.x - frc r18.x, r15.w - frc r18.y, r16.w - mad r15.w, r14.x, l(0.399999976), l(0.600000) - mul r16.w, r15.w, l(0.250000) - mad r18.yw, r18.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r18.yw, r18.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r23.zzzw - add r18.yw, r18.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) - mul r23.x, r18.y, l(1.250000) - lt r18.y, r18.w, l(0.000000) - movc r18.y, r18.y, l(1.250000), l(0.750000) - mul r23.y, r18.y, r18.w - mad r14.x, cb0[102].x, l(4.345600), r14.x - frc r14.x, r14.x - add r18.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) - mul_sat r18.yw, r18.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) - mad r20.xw, r18.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r18.yw, r18.yyyw, r18.yyyw - mul r18.yw, r18.yyyw, r20.xxxw - mul r14.x, r18.w, r18.y - dp2 r18.y, r23.xyxx, r23.xyxx - sqrt r18.y, r18.y - mad r15.w, -r15.w, l(0.250000), r18.y - div r18.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w - mul_sat r15.w, r15.w, r18.y - mad r18.y, r15.w, l(-2.000000), l(3.000000) - mul r15.w, r15.w, r15.w - mul r15.w, r15.w, r18.y - ge r15.w, r15.w, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r24.z, r14.x, r15.w - div r18.yw, r23.xxxy, r16.wwww - max r18.yw, r18.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) - min r18.yw, r18.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) - ge r14.x, r24.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r18.yw, r14.xxxx, r18.yyyw - mad r14.x, r18.x, l(0.250000), l(0.250000) - mul r24.xy, r14.xxxx, r18.ywyy - round_ni r18.xy, r21.xzxx - mul r20.xw, r18.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r20.xw, r20.xxxw - add r21.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r14.x, r20.xwxx, r21.xyxx - add r20.xw, r14.xxxx, r20.xxxw - mul r14.x, r20.w, r20.x - add r15.w, r20.w, r20.x - frc r14.x, r14.x - frc r21.w, r15.w - add r20.xw, r18.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) - mul r20.xw, r20.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r20.xw, r20.xxxw - add r23.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r15.w, r20.xwxx, r23.xyxx - add r20.xw, r15.wwww, r20.xxxw - mul r15.w, r20.w, r20.x - add r16.w, r20.w, r20.x - frc r23.x, r15.w - frc r23.y, r16.w - mad r15.w, r14.x, l(0.399999976), l(0.600000) - mul r16.w, r15.w, l(0.250000) - mad r18.xy, r14.ywyy, l(34.345600, 34.345600, 0.000000, 0.000000), -r18.xyxx - mad r20.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r18.xy, r20.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r18.xyxx - add r18.xy, r18.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - mul r25.x, r18.x, l(1.250000) - lt r18.x, r18.y, l(0.000000) - movc r18.x, r18.x, l(1.250000), l(0.750000) - mul r25.y, r18.x, r18.y - mad r14.x, cb0[102].x, l(4.345600), r14.x - frc r14.x, r14.x - add r18.xy, r14.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) - mul_sat r18.xy, r18.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) - mad r20.xw, r18.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r18.xy, r18.xyxx, r18.xyxx - mul r18.xy, r18.xyxx, r20.xwxx - mul r14.x, r18.y, r18.x - dp2 r18.x, r25.xyxx, r25.xyxx - sqrt r18.x, r18.x - mad r15.w, -r15.w, l(0.250000), r18.x - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w - mul_sat r15.w, r15.w, r18.x - mad r18.x, r15.w, l(-2.000000), l(3.000000) - mul r15.w, r15.w, r15.w - mul r15.w, r15.w, r18.x - ge r15.w, r15.w, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r21.z, r14.x, r15.w - div r18.xy, r25.xyxx, r16.wwww - max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r14.x, r21.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r18.xy, r14.xxxx, r18.xyxx - mad r14.x, r23.x, l(0.250000), l(0.250000) - mul r21.xy, r14.xxxx, r18.xyxx - mul r23.xyzw, r19.zzzz, r24.xyzw - mad r23.xyzw, r26.xyzw, r19.yyyy, r23.xyzw - mad r19.xyzw, r21.xyzw, r19.xxxx, r23.xyzw - max r18.xy, r19.zwzz, r22.zwzz - mad r19.zw, -r13.xxxx, r9.wwww, l(0.000000, 0.000000, 1.000000, 1.010000) - add r14.x, r18.y, l(-0.100000) - ge r14.x, r14.x, r19.z - and r14.x, r14.x, l(0x3f800000) - mul r14.x, r14.x, r18.x - ge r2.w, cb1[r2.w + 12].x, l(0.010000) - and r2.w, r2.w, l(0x3f800000) - mul r2.w, r2.w, r14.x - lt r14.x, l(0.001000), r2.w - add r18.xy, r19.xyxx, r22.xyxx - mul r15.w, cb0[102].x, cb0[196].z - mul r19.y, r15.w, l(0.750000) - dp2 r15.w, r17.xzxx, r17.xzxx - max r15.w, r15.w, l(1.175494351E-38) - rsq r15.w, r15.w - mul r17.xz, r15.wwww, r17.xxzx - add r17.xz, |r17.xxzx|, l(-0.200000, 0.000000, -0.200000, 0.000000) - mul r20.xw, r17.xxxz, r17.xxxz - mul r17.xz, r17.xxzx, r20.xxwx - max r17.xz, r17.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) - dp2 r15.w, r17.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) - div r17.xz, r17.xxzx, r15.wwww - sample_b_indexable(texture2d)(float,float,float,float) r21.xyz, r14.zwzz, t12.xyzw, s3, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r14.yzw, r14.ywyy, t12.wxyz, s3, cb0[108].x - mul r14.yzw, r17.xxxx, r14.yyzw - mad r14.yzw, r21.xxyz, r17.zzzz, r14.yyzw - movc r17.yw, r14.xxxx, r18.xxxy, r17.yyyw - mad r14.xy, r14.yzyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mov r19.x, l(0) - mad r21.xyzw, r13.zwyw, cb0[196].zzzz, r19.xyxy - sample_b_indexable(texture2d)(float,float,float,float) r13.y, r21.xyxx, t12.xwyz, s3, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r13.z, r21.zwzz, t12.xywz, s3, cb0[108].x - mul r13.z, r17.x, r13.z - mad r13.y, r13.y, r17.z, r13.z - mad r13.yz, r14.xxyx, r13.yyyy, r17.yywy - ge r13.w, r18.z, r19.w - and r13.w, r13.w, l(0x3f800000) - max r2.w, r2.w, r13.w - add r13.w, -r14.w, l(1.000000) - mad r9.w, r13.x, r9.w, -r13.w - mul_sat r9.w, r9.w, l(9.999998) - mad r13.x, r9.w, l(-2.000000), l(3.000000) - mul r9.w, r9.w, r9.w - mul r9.w, r9.w, r13.x - max r2.w, r2.w, r9.w - mad r13.xw, -r7.zzzy, l(1.000000, 0.000000, 0.000000, 0.000000), r20.yyyz - dp2 r9.w, r13.xwxx, r13.xwxx - lt r14.x, l(0.0000610351562), r9.w - rsq r9.w, r9.w - mul r13.xw, r9.wwww, r13.xxxw - mov r13.xw, -r13.xxxw - movc r17.z, r14.x, r13.x, l(-1.000000) - and r17.y, r13.w, r14.x - min r9.w, r3.z, l(0.050000) - add r13.x, -r3.z, r9.w - mad r13.x, r2.w, r13.x, r3.z - mad r11.y, -r11.z, r11.y, l(1.000000) - mul r11.y, r11.y, r11.x - mad r5.w, -r5.w, r11.w, l(1.000000) - mul r5.w, r5.w, r11.y - mad r5.w, r5.w, l(-0.500000), l(1.000000) - mov r17.x, l(0) - mad r3.xyw, -r3.xyxw, r6.wwww, r17.zxzy - mad r3.xyw, r13.yyyy, r3.xyxw, r7.xyxz - mul r14.xyz, r7.zxyz, r17.xyzx - mad r14.xyz, r7.yzxy, r17.yzxy, -r14.xyzx - add r14.xyz, -r3.xywx, r14.xyzx - mad r3.xyw, r13.zzzz, r14.xyxz, r3.xyxw - dp3 r6.w, r3.xywx, r3.xywx - rsq r6.w, r6.w - mad r3.xyw, r3.xyxw, r6.wwww, -r7.xyxz - mad r3.xyw, r2.wwww, r3.xyxw, r7.xyxz - dp3 r6.w, r3.xywx, r3.xywx - rsq r6.w, r6.w - mul r3.xyw, r3.xyxw, r6.wwww - mul r6.w, r11.w, r11.x - mad r6.w, -r6.w, l(0.200000), r13.x - min r11.x, r13.x, l(0.200000) - max r3.z, r6.w, r11.x - mul r6.xyz, r5.wwww, r6.xyzx - dp3 r6.w, r4.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r6.w, r6.w, l(-0.700000) - mul_sat r6.w, r6.w, l(-2.50000024) - mad r11.x, r6.w, l(-2.000000), l(3.000000) - mul r6.w, r6.w, r6.w - mul r6.w, r6.w, r11.x - mad r6.w, r6.w, l(0.500000), l(1.000000) - mul r11.x, r12.w, r2.w - mad r11.yzw, r4.xxyz, r6.wwww, -r4.xxyz - mad r11.xyz, r11.xxxx, r11.yzwy, r4.xyzx - mul r4.xyz, r5.wwww, r11.xyzx -else - mov r3.xyw, r7.xyxz - mov r9.w, l(0.010000) - mov r2.w, l(0) -endif -mul r5.w, r5.y, l(0.040000) -mad r6.w, -r5.x, l(0.960000), l(0.960000) -mul r11.xyz, r4.xyzx, r6.wwww -mad r13.xyz, -r5.yyyy, l(0.040000, 0.040000, 0.040000, 0.000000), r4.xyzx -mad r13.xyz, r5.xxxx, r13.xyzx, r5.wwww -mul r6.xyz, r6.wwww, r6.xyzx -mul r5.y, r3.z, r3.z -max r5.y, r5.y, l(0.00781250000) -max r5.w, v5.z, l(9.999999939E-09) -div r14.xy, v5.xyxx, r5.wwww -max r5.w, v6.z, l(9.999999939E-09) -div r14.zw, v6.xxxy, r5.wwww -add r14.xy, -r14.zwzz, r14.xyxx -mul r17.xy, r14.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) -sqrt r17.xy, |r17.xyxx| -sqrt r17.xy, r17.xyxx -mov r14.z, -r14.y -lt r14.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r14.xxxz -lt r14.xz, r14.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r14.xy, -r14.ywyy, r14.xzxx -itof r14.xy, r14.xyxx -mul r14.xy, r14.xyxx, r17.xyxx -mad o1.xy, r14.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -lt r5.w, l(0.500000), r2.w -movc o1.w, r5.w, l(0.700000), l(0.400000) -add r14.xyz, cb0[197].xyzx, cb3[0].xyzx -mad r14.xyz, cb0[187].wwww, r14.xyzx, -cb3[0].xyzx -mov r14.w, l(0.0000610351562) -dp3 r5.w, r14.xzwx, r14.xzwx -rsq r5.w, r5.w -mul r17.xyz, r5.wwww, r14.xwzx -add r18.xyz, cb0[191].xyzx, -cb3[3].xyzx -mad r18.xyz, cb0[198].yyyy, r18.xyzx, cb3[3].xyzx -add r5.w, l(1.000000), -cb3[3].w -mad r5.w, cb0[198].w, r5.w, cb3[3].w -mul r19.xyz, r5.wwww, r18.xyzx -mov r10.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r20.xy, r10.xyzz, t3.xyzw -add r10.z, r20.x, l(-1.000000) -mad r10.z, cb4[34].x, r10.z, l(1.000000) -add r11.w, -r10.z, l(1.000000) -mad r10.z, cb0[187].z, r11.w, r10.z -dp3 r11.w, r7.xyzx, r14.xyzx -mul r20.xzw, r6.xxyz, cb0[186].zzzz -mul r21.xyz, r20.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000) -dp3 r12.w, r11.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -dp2 r13.w, cb0[6].xzxx, cb0[6].xzxx -rsq r13.w, r13.w -mul r22.xy, r13.wwww, cb0[6].xzxx -dp2 r13.w, r17.xzxx, r22.xyxx -mov_sat r13.w, -r13.w -add r22.xy, l(1.000000, 1.000000, 0.000000, 0.000000), -cb0[198].xyxx -mad r14.w, r11.w, l(0.500000), l(-1.000000) -mad r14.w, -r11.w, r14.w, -r11.w -add r15.w, l(0.750000), -|cb0[6].y| -add_sat r15.w, r15.w, r15.w -mad r16.w, r15.w, l(-2.000000), l(3.000000) -mul r15.w, r15.w, r15.w -mul r15.w, r15.w, r16.w -mul r15.w, r13.w, r15.w -mul r15.w, r22.x, r15.w -add r14.w, r14.w, l(0.500000) -mad r11.w, r15.w, r14.w, r11.w -mad r11.w, cb0[197].w, cb0[198].x, r11.w -max r11.w, r11.w, l(-1.000000) -min r11.w, r11.w, l(1.000000) -mad r23.x, r11.w, l(0.500000), l(0.500000) -mov r23.yw, l(0,0.500000,0,0.500000) -sample_l_indexable(texture2d)(float,float,float,float) r24.xyzw, r23.xyxx, t10.xyzw, s0, l(0.000000) -max r11.w, r24.y, r24.x -max r11.w, r24.z, r11.w -min r14.w, r24.y, r24.x -min r14.w, r24.z, r14.w -add r11.w, r11.w, -r14.w -dp3 r14.w, r7.xyzx, cb0[6].xyzx -mad r23.z, r14.w, l(0.500000), l(0.500000) -sample_l_indexable(texture2d)(float,float,float,float) r14.w, r23.zwzz, t10.xyzw, s0, l(0.000000) -mul r15.w, r5.z, r20.y -min r16.w, r5.z, r20.y -min r17.w, r24.w, r16.w -mul r18.w, r14.w, r15.w -dp3 r19.w, r7.xyzx, cb0[192].xyzx -add_sat r19.w, r19.w, cb0[193].x -mad r19.w, r19.w, cb0[193].y, cb0[193].z -mul r21.w, r17.w, cb0[187].y -add r23.xyz, -r12.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r23.xyz, r21.wwww, r23.xyzx, r12.xyzx -mul r23.xyz, r19.wwww, r23.xyzx -mad r19.w, r8.w, l(0.350000024), l(0.650000) -min r19.w, r19.w, l(1.500000) -max r25.xyz, r8.wwww, l(1.250000, 0.000000, 0.500000, 0.000000) -min r25.xyz, r25.xyzx, l(1.750000, 1.500000, 1.500000, 0.000000) -add r8.w, -r19.w, r25.x -mad r8.w, cb0[187].x, r8.w, r19.w -mul r26.xyz, r8.wwww, r23.xyzx -mul r26.xyz, r26.xyzx, cb0[186].wwww -dp3 r8.w, r19.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r19.xyz, r18.xyzx, r5.wwww, -r8.wwww -mad r19.xyz, r17.wwww, r19.xyzx, r8.wwww -mul r23.xyz, r23.xyzx, r25.yyyy -mad r22.yzw, r18.xxyz, cb0[198].yyyy, r22.yyyy -mad r19.xyz, r23.xyzx, r22.yzwy, r19.xyzx -mad r19.xyz, r19.xyzx, cb0[186].yyyy, -r26.xyzx -mad r19.xyz, r10.zzzz, r19.xyzx, r26.xyzx -dp3 r8.w, r21.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r21.xyz, r20.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000), -r8.wwww -mad r21.xyz, r21.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r8.wwww -mad_sat r8.w, r14.w, r15.w, r24.w -mad r22.yzw, r6.xxyz, cb0[186].zzzz, -r21.xxyz -mad r21.xyz, r8.wwww, r22.yzwy, r21.xyzx -mad r22.yzw, r4.xxyz, r6.wwww, -r21.xxyz -mad r21.xyz, r17.wwww, r22.yzwy, r21.xyzx -add r8.w, -r11.w, l(1.000000) -mad r22.yzw, r24.xxyz, r11.wwww, r8.wwww -mul r22.yzw, r21.xxyz, r22.yyzw -mad r23.xyz, r4.xyzx, r6.wwww, -r12.wwww -mad r23.xyz, r23.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r12.wwww -mad r23.xyz, -r6.xyzx, cb0[186].zzzz, r23.xyzx -mad r20.xzw, r18.wwww, r23.xxyz, r20.xxzw -dp3 r8.w, r21.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -dp3 r11.w, r22.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) -max r11.w, r11.w, l(0.001000) -div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w -mul r8.w, r8.w, r11.w -max r8.w, r8.w, l(0.000000) -min r8.w, r8.w, l(1.500000) -mad r21.xyz, r22.yzwy, r8.wwww, -r20.xzwx -mad r20.xzw, r10.zzzz, r21.xxyz, r20.xxzw -mad r8.w, -r14.w, r15.w, r17.w -mad r8.w, r10.z, r8.w, r18.w -add r11.w, l(1.000000), -cb0[186].z -mad r11.w, r8.w, r11.w, cb0[186].z -add r14.w, r14.y, l(-0.500000) -mad r21.y, r10.z, r14.w, l(0.500000) -dp3_sat r23.x, r3.xywx, r2.xyzx -mov r21.xz, cb0[6].xxzx -dp3 r14.w, r21.xyzx, r21.xyzx -max r14.w, r14.w, l(1.175494351E-38) -rsq r14.w, r14.w -mul r21.xyz, r14.wwww, r21.xyzx -add r21.xyz, r21.xyzx, r21.xyzx -mad r14.xyz, r14.xyzx, r10.zzzz, r21.xyzx -add r14.w, r10.z, l(2.000000) -mad r14.xyz, r2.xyzx, r14.wwww, r14.xyzx -dp3 r14.w, r14.xyzx, r14.xyzx -rsq r14.w, r14.w -mul r14.xyz, r14.wwww, r14.xyzx -dp3 r14.x, r3.xywx, r14.xyzx -mul r14.y, r5.y, r5.y -mad r14.z, r14.x, r14.y, -r14.x -mad r14.x, r14.z, r14.x, l(1.000000) -mul r14.x, r14.x, r14.x -add r14.z, l(1.000000), -cb5[1].z -mad r14.z, r4.w, cb5[1].z, r14.z -mul r21.xyz, r19.xyzx, r20.xzwx -ne r14.w, r14.x, r14.y -div r14.x, r14.y, r14.x -movc r14.x, r14.w, r14.x, l(1.000000) -mad r14.y, r23.x, l(2.000000), r5.y -add r14.y, r14.y, l(0.000100) -div r14.y, l(0.500000), r14.y -mad r14.x, r14.x, r14.y, l(-0.0000610351562) -max r14.x, r14.x, l(0.000000) -min r14.x, r14.x, l(20.000000) -mul r14.xyw, r13.xyxz, r14.xxxx -mad r8.w, r8.w, l(0.500000), l(0.500000) -mul r8.w, r11.w, r8.w -mul r19.xyz, r8.wwww, r19.xyzx -mul r14.xyw, r14.xyxw, r19.xyxz -mul r14.xyw, r14.xyxw, cb0[199].wwww -mad r14.xyw, r21.xyxz, r14.zzzz, r14.xyxw -dp3 r8.w, r14.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r15.w, r8.w, l(-0.500000) -max r15.w, r15.w, l(0.000000) -min r15.w, r15.w, l(0.500000) -mov r19.y, l(0) -mov r19.xz, cb0[195].yyxy -mul r21.xyz, r19.xyzx, cb0[6].zxyz -mad r19.xyz, cb0[6].yzxy, r19.yzxy, -r21.xyzx -dp3 r17.w, r19.xyzx, r19.xyzx -rsq r17.w, r17.w -mul r19.xyz, r17.wwww, r19.xyzx -dp3 r17.w, r2.xyzx, r7.xyzx -add r21.xy, -|r17.wwww|, l(1.000000, 0.399999976, 0.000000, 0.000000) -dp3 r17.x, r17.xyzx, r7.xyzx -add r17.y, -r10.z, l(1.000000) -add r9.w, -r3.z, r9.w -mad r2.w, r2.w, r9.w, r3.z -mul r24.y, r2.w, r2.w -mul r26.x, r23.x, r23.x -mul r26.z, r23.x, r26.x -mul r9.w, r24.y, r24.y -mul r24.z, r24.y, r9.w -mov r23.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r25.x, l(3.327070, 1.000000, 0.000000, 0.000000), r23.xyxx -dp2 r25.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r23.xzxx -mov r24.x, l(1.000000) -dp2 r9.w, r25.xyxx, r24.xyxx -mov r26.yw, l(0,9.044010,0,1.000000) -dp3 r27.x, l(3.596850, -1.367720, 1.000000, 0.000000), r26.xzwx -dp3 r27.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r26.xyzx -mov r28.x, l(5.565890) -mov r28.yz, r26.xxzx -dp3 r27.z, l(1.000000, 19.788601, -20.212299, 0.000000), r28.xyzx -dp3 r17.z, r27.xyzx, r24.xyzx -div r9.w, r9.w, r17.z -dp2 r25.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r23.xwxx -mov r26.x, l(1.296780) -mov r26.y, r23.x -dp2 r25.y, l(1.000000, -0.755907, 0.000000, 0.000000), r26.xyxx -dp2 r17.z, r25.xyxx, r24.xyxx -dp3 r27.x, l(2.923380, 59.418800, 1.000000, 0.000000), r26.yzwy -mov r26.xw, l(20.322500,0,0,121.563004) -dp3 r27.y, l(1.000000, -27.030199, 222.591995, 0.000000), r26.xyzx -dp3 r27.z, l(626.130005, 316.627014, 1.000000, 0.000000), r26.yzwy -dp3 r18.w, r27.xyzx, r24.xyzx -div r17.z, r17.z, r18.w -mad r22.yzw, r13.xxyz, r9.wwww, r17.zzzz -add r9.w, r9.w, r17.z -mad r15.w, r15.w, r15.w, l(1.000000) -add r14.xyw, -r8.wwww, r14.xyxw -mad r14.xyw, r15.wwww, r14.xyxw, r8.wwww -mad r21.zw, cb0[195].wwww, l(0.000000, 0.000000, -0.600000, -0.399999976), l(0.000000, 0.000000, 0.800000, 0.900000) -add r8.w, -r21.z, r21.w -add r15.w, -r21.z, r21.x -div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w -mul_sat r8.w, r8.w, r15.w -mad r15.w, r8.w, l(-2.000000), l(3.000000) -mul r8.w, r8.w, r8.w -mul r8.w, r8.w, r15.w -mul r23.yzw, r8.wwww, cb0[194].xxyz -mul r23.yzw, r23.yyzw, cb0[194].wwww -dp3 r8.w, r8.xyzx, r19.xyzx -add_sat r8.w, r8.w, l(1.000000) -min r5.z, r5.z, r8.w -min r5.z, r20.y, r5.z -mul r23.yzw, r5.zzzz, r23.yyzw -mad r24.xyz, r4.xyzx, r6.wwww, l(-0.250000, -0.250000, -0.250000, 0.000000) -mad r24.xyz, cb0[195].zzzz, r24.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000) -dp3_sat r5.z, r19.xyzx, r7.xyzx -mul r19.xyz, r5.zzzz, r24.xyzx -max r5.z, r15.y, r15.x -max r5.z, r15.z, r5.z -mul r5.z, r5.z, l(0.500000) -max r5.z, r5.z, l(1.000000) -div r5.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z -mul r15.xyz, r5.zzzz, r15.xyzx -mad r18.xyz, r18.xyzx, r5.wwww, -r15.xyzx -mad r15.xyz, r10.zzzz, r18.xyzx, r15.xyzx -dp3 r5.z, r16.xyzx, r7.xyzx -mul r5.w, r7.w, r5.z -mad r8.w, r17.x, l(0.500000), l(-1.000000) -mad r8.w, -r17.x, r8.w, l(0.500000) -mad r5.z, -r5.z, r7.w, r8.w -mad_sat r5.z, r10.z, r5.z, r5.w -mul r15.xyz, r5.zzzz, r15.xyzx -mad r5.z, r13.w, r10.z, r17.y -mul r5.z, r22.x, r5.z -mul r15.xyz, r5.zzzz, r15.xyzx -mul_sat r5.z, r21.y, l(5.00000048) -mad r5.w, r5.z, l(-2.000000), l(3.000000) -mul r5.z, r5.z, r5.z -mul r5.z, r5.z, r5.w -mul r15.xyz, r5.zzzz, r15.xyzx -mul r15.xyz, r16.wwww, r15.xyzx -add r5.z, r12.w, l(-0.100000) -mul_sat r5.z, r5.z, l(-16.666666) -mad r5.w, r5.z, l(-2.000000), l(3.000000) -mul r5.z, r5.z, r5.z -mul r5.z, r5.z, r5.w -mad r5.z, r5.z, r10.z, r17.y -mul r15.xyz, r5.zzzz, r15.xyzx -max r16.xyz, r11.xyzx, l(0.150000, 0.150000, 0.150000, 0.000000) -mul r15.xyz, r15.xyzx, r16.xyzx -mad r15.xyz, r23.yzwy, r19.xyzx, r15.xyzx -add r14.xyw, r14.xyxw, r15.xyxz -utof r5.zw, r10.xxxy -mul r15.xy, r5.zwzz, l(0.031250, 0.031250, 0.000000, 0.000000) -round_ni r15.xy, r15.xyxx -mad r7.w, r15.y, cb2[1].y, r15.x -mul r7.w, r7.w, l(8.000000) -ftoi r7.w, r7.w -mad r8.w, -cb0[85].y, cb2[2].w, v0.w -round_ni r8.w, r8.w -add r10.z, l(-1.000000), cb2[1].w -max r12.w, r8.w, l(0.000000) -min r10.z, r10.z, r12.w -mul r12.w, r10.z, l(8.000000) -ftoi r12.w, r12.w -dp3 r13.w, -r2.xyzx, r3.xywx -add r13.w, r13.w, r13.w -mad r15.xyz, r3.xywx, -r13.wwww, -r2.xyzx -max r2.w, r2.w, l(0.001000) -log r2.w, r2.w -mad r2.w, r2.w, l(1.200000), l(5.000000) -sample_l_indexable(texturecube)(float,float,float,float) r15.xyz, r15.xyzx, t16.xyzw, s0, r2.w -add r2.w, -r9.w, l(1.000000) -div r2.w, r2.w, r9.w -mul r16.xyz, r2.wwww, r13.xyzx -mad r16.xyz, r16.xyzx, r22.yzwy, r22.yzwy -mul r15.xyz, r15.xyzx, r16.xyzx -mul r2.w, r25.z, cb0[186].w -mul r2.w, r11.w, r2.w -mul r15.xyz, r2.wwww, r15.xyzx -mad r12.xyz, r15.xyzx, r12.xyzx, r14.xywx -ge r2.w, r10.z, r8.w -iadd r8.w, r12.w, cb0[110].y -mad r9.w, r17.y, l(-0.250000), l(0.750000) -mad r4.xyz, r4.xyzx, r6.wwww, l(-0.500000, -0.500000, -0.500000, 0.000000) -add r6.w, -r5.y, l(0.010000) -ge r5.x, r5.x, l(0.500000) -and r5.x, r5.x, l(0x3f800000) -mov r15.w, l(1.000000) -mov r14.xyw, r12.xyxz -mov r10.z, l(0) -loop - ilt r11.w, l(7), r10.z - breakc_nz r11.w - iadd r11.w, r7.w, r10.z - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx - iadd r12.w, r8.w, r10.z - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx - and r11.w, r11.w, r12.w - and r11.w, r2.w, r11.w - ishl r12.w, r10.z, l(5) - mov r16.xyz, r14.xywx - mov r13.w, r11.w - loop - breakc_z r13.w - firstbit_lo r16.w, r13.w - ishl r17.x, l(1), r16.w - xor r17.x, r13.w, r17.x - iadd r16.w, r12.w, r16.w - bfi r18.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 5, 6, 7) - ftou r17.y, cb3[r18.y + 6].w - ieq r17.y, r17.y, l(1) - if_nz r17.y - add r15.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx - and r19.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r18.y + 6].xzyx - and r21.yzw, l(0, 0x0000ffff, 0x0000ffff, 0x0000ffff), cb3[r18.z + 6].yyxz - ushr r22.xyz, cb3[r18.y + 6].xzyx, l(16, 16, 16, 0) - ushr r23.yzw, cb3[r18.z + 6].yyxz, l(0, 16, 16, 16) - f16tof32 r19.xyz, r19.xyzx - f16tof32 r21.yzw, r21.yyzw - f16tof32 r22.xyz, r22.xyzx - f16tof32 r24.xyw, r23.zyzw - mov r25.xz, r19.xxzx - mov r25.yw, r22.xxxz - dp4 r17.y, r15.xyzw, r25.xyzw - mov r22.x, r19.y - mov r22.z, r21.z - mov r22.w, r24.x - dp4 r17.z, r15.xyzw, r22.xyzw - mov r24.xz, r21.yywy - dp4 r15.x, r15.xyzw, r24.xyzw - max r15.y, |r17.z|, |r17.y| - max r15.x, |r15.x|, r15.y - mad r15.y, cb3[r18.w + 6].x, l(0.500000), l(0.500000) - add r15.x, -r15.y, r15.x - mad r15.y, -cb3[r18.w + 6].x, l(0.500000), l(0.500000) - div_sat r15.x, r15.x, r15.y - add r15.x, -r15.x, l(1.000000) - mul r15.x, r15.x, r15.x - else - mov r15.x, l(1.000000) - endif - lt r15.y, r15.x, l(0.001000) - if_nz r15.y - mov r13.w, r17.x - continue - endif - ishl r15.y, r16.w, l(3) - lt r15.z, cb3[r15.y + 6].w, l(1.500000) - if_nz r15.z - bfi r15.z, l(29), l(3), r16.w, l(3) - ieq r17.y, l(16), cb3[r15.z + 6].w - add r17.z, cb0[198].z, cb3[r15.z + 6].z - lt r17.z, r17.z, l(0.500000) - or r17.y, r17.z, r17.y - if_z r17.y - bfi r17.yz, l(0, 29, 29, 0), l(0, 3, 3, 0), r16.wwww, l(0, 2, 4, 0) - ftou r16.w, cb3[r15.y + 6].w - and r16.w, r16.w, l(1) - ieq r18.y, r16.w, l(0) - not r18.y, r18.y - lt r19.x, l(0.000000), cb3[r17.y + 6].z - and r18.y, r18.y, r19.x - ieq r19.x, l(4), cb3[r15.z + 6].w - movc r19.y, r16.w, l(0), l(1.000000) - mad r19.z, cb3[r17.y + 6].y, l(0.500000), l(0.500000) - add r22.z, r19.z, -|cb3[r17.y + 6].x| - add r22.x, -r22.z, cb3[r17.y + 6].y - add r19.z, -|r22.z|, l(1.000000) - add r19.z, -|r22.x|, r19.z - max r19.z, r19.z, l(0.000488281250) - ge r19.w, cb3[r17.y + 6].x, l(0.000000) - movc r22.y, r19.w, r19.z, -r19.z - dp3 r19.z, r22.xyzx, r22.xyzx - rsq r19.z, r19.z - mul r21.yzw, r19.zzzz, r22.xxyz - add r19.z, cb3[r17.z + 6].y, cb3[r17.z + 6].y - max r19.z, r19.z, l(0.100000) - and r19.w, r19.x, l(0x3f800000) - add r19.z, r19.z, -cb3[r18.z + 6].w - mad r18.z, r19.w, r19.z, cb3[r18.z + 6].w - add r22.xyz, -v2.xyzx, cb3[r18.x + 6].xyzx - dp3 r19.z, r22.yzxy, -r21.yzwy - lt r19.w, l(0.500000), cb3[r17.z + 6].z - and r19.w, r19.w, r19.x - and r19.w, r19.w, l(0x3f800000) - mul r19.w, r19.y, r19.w - mad r23.yzw, -r21.wwyz, r19.zzzz, -r22.xxyz - mad r22.xyz, r19.wwww, r23.yzwy, r22.xyzx - dp3 r19.z, r22.xyzx, r22.xyzx - rsq r19.w, r19.z - mul r23.yzw, r19.wwww, r22.xxyz - if_nz r18.y - mul r24.xyz, r21.wyzw, cb3[r17.y + 6].zzzz - mad r25.xyz, -r24.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r22.xyzx - mad r24.xyz, r24.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r22.xyzx - dp3 r19.w, r25.xyzx, r25.xyzx - sqrt r19.w, r19.w - dp3 r20.y, r24.xyzx, r24.xyzx - sqrt r20.y, r20.y - mul r26.xyz, r21.yzwy, r23.yzwy - mad r26.xyz, r21.wyzw, r23.zwyz, -r26.xyzx - mul r27.xyz, r21.yzwy, r26.xyzx - mad r26.xyz, r26.zxyz, r21.zwyz, -r27.xyzx - dp3 r22.w, r26.xyzx, r26.xyzx - rsq r22.w, r22.w - mul r23.yzw, r22.wwww, r26.xxyz - dp3 r22.w, r25.xyzx, r24.xyzx - mad r22.w, r19.w, r20.y, r22.w - mad r22.w, r22.w, l(0.500000), l(1.000000) - div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w - dp3 r24.w, r23.yzwy, r25.xyzx - div r19.w, r24.w, r19.w - dp3 r24.x, r23.yzwy, r24.xyzx - div r20.y, r24.x, r20.y - add r19.w, r19.w, r20.y - mul_sat r19.w, r19.w, l(0.500000) - mul r19.w, r19.w, r22.w - else - mov r19.w, l(1.000000) - endif - lt r20.y, r18.z, l(0.000000) - if_nz r20.y - mul r20.y, cb3[r18.x + 6].w, cb3[r18.x + 6].w - mul r20.y, r19.z, r20.y - mad r20.y, -r20.y, r20.y, l(1.000000) - max r20.y, r20.y, l(0.000000) - add r19.z, r19.z, l(1.000000) - div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z - and r22.w, r18.y, l(0x3f800000) - add r24.x, -r19.z, r19.w - mad r19.z, r22.w, r24.x, r19.z - mul r20.y, r20.y, r20.y - mul r19.z, r19.z, r20.y - else - mul r24.xyz, r22.xyzx, cb3[r18.x + 6].wwww - dp3 r20.y, r24.xyzx, r24.xyzx - min r20.y, r20.y, l(1.000000) - add r20.y, -r20.y, l(1.000000) - log r20.y, r20.y - mul r18.z, r18.z, r20.y - exp r18.z, r18.z - mul r19.z, r18.z, r19.w - endif - dp3 r18.z, r23.zwyz, -r21.yzwy - add r18.z, r18.z, -cb3[r17.y + 6].z - mul_sat r18.z, r18.z, cb3[r17.y + 6].w - mad r18.z, r18.z, r18.z, l(-1.000000) - mad r18.z, r19.y, r18.z, l(1.000000) - mul r18.z, r18.z, r19.z - ftoi r19.y, cb3[r18.w + 6].w - not r18.y, r18.y - ige r19.z, r19.y, l(0) - and r18.y, r18.y, r19.z - if_nz r18.y - if_z r16.w - ishl r18.y, r19.y, l(2) - mul r21.yzw, v2.yyyy, cb6[r18.y + 33].xxyw - mad r21.yzw, cb6[r18.y + 32].xxyw, v2.xxxx, r21.yyzw - mad r21.yzw, cb6[r18.y + 34].xxyw, v2.zzzz, r21.yyzw - add r21.yzw, r21.yyzw, cb6[r18.y + 35].xxyw - div_sat r19.zw, r21.yyyz, r21.wwww - mad r19.zw, r19.zzzw, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy - else - ishl r18.y, r19.y, l(2) - dp3 r24.x, -r22.xyzx, cb6[r18.y + 32].xyzx - dp3 r24.y, -r22.xyzx, cb6[r18.y + 33].xyzx - dp3 r24.z, -r22.xyzx, cb6[r18.y + 34].xyzx - lt r18.y, |r24.x|, |r24.y| - and r18.y, r18.y, l(1) - dp2 r20.y, |r24.xyxx|, icb[r18.y + 0].xyxx - lt r20.y, r20.y, |r24.z| - movc r18.y, r20.y, l(2), r18.y - dp3 r20.y, r24.xyzx, icb[r18.y + 0].xyzx - lt r20.y, r20.y, l(0.000000) - bfi r18.y, l(31), l(1), r18.y, r20.y - ushr r20.y, r18.y, l(1) - dp3 r20.y, r24.xyzx, icb[r20.y + 0].xyzx - div r21.y, l(0.000244140625), cb6[r19.y + 0].w - add r21.y, -r21.y, l(0.500000) - utof r21.z, r18.y - ult r21.w, r18.y, l(2) - and r21.w, r21.w, l(2) - dp2 r21.w, r24.xzxx, icb[r21.w + 0].xzxx - mul r21.w, r21.w, icb[r18.y + 4].z - div r21.w, r21.w, |r20.y| - mad r21.z, r21.w, r21.y, r21.z - add r21.z, r21.z, l(0.500000) - mul_sat r22.x, r21.z, l(0.166666672) - iadd r21.z, l(-1), icb[r18.y + 4].y - dp2 r21.z, r24.yzyy, icb[r21.z + 0].xyxx - mul r18.y, r21.z, icb[r18.y + 4].w - div r18.y, r18.y, |r20.y| - mad_sat r22.y, -r18.y, r21.y, l(0.500000) - mad r19.zw, r22.xxxy, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy - endif - sample_l_indexable(texture2d)(float,float,float,float) r18.y, r19.zwzz, t17.yxzw, s0, l(0.000000) - mul r18.z, r18.y, r18.z - endif - mul r15.x, r15.x, r18.z - lt r18.y, l(0.000100), r15.x - if_nz r18.y - if_nz r19.x - add r18.y, l(1.000000), -cb3[r17.z + 6].w - dp3 r18.z, r9.xyzx, r23.yzwy - add_sat r18.z, r18.z, l(0.500000) - mad r19.y, r18.z, l(-2.000000), l(3.000000) - mul r18.z, r18.z, r18.z - mul r18.z, r18.z, r19.y - mad r18.y, r18.z, cb3[r17.z + 6].w, r18.y - mul r18.y, r18.y, cb3[r17.z + 6].x - mul r18.y, r15.x, r18.y - add r19.yzw, -r16.xxyz, cb3[r15.y + 6].xxyz - mad r19.yzw, r18.yyyy, r19.yyzw, r16.xxyz - endif - if_z r19.x - dp3 r18.y, r7.xyzx, r23.yzwy - mov_sat r18.z, r18.y - if_nz cb3[r15.z + 6].w - if_z r16.w - ftoi r16.w, cb3[r15.z + 6].x - else - add r21.yzw, v2.xxyz, -cb3[r18.x + 6].xxyz - lt r22.xyz, |r21.zwwz|, |r21.yyzy| - and r20.y, r22.y, r22.x - lt r21.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r21.yyzw - ushr r22.x, cb3[r17.y + 6].w, l(24) - ubfe r22.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb3[r17.y + 6].wwww - movc r21.y, r21.y, r22.x, r22.y - and r17.y, l(255), cb3[r17.y + 6].w - movc r17.y, r21.z, r22.w, r17.y - ubfe r21.z, l(8), l(8), cb3[r15.z + 6].x - and r22.x, l(255), cb3[r15.z + 6].x - movc r21.z, r21.w, r21.z, r22.x - movc r17.y, r22.z, r17.y, r21.z - movc r17.y, r20.y, r21.y, r17.y - ilt r20.y, r17.y, l(80) - movc r16.w, r20.y, r17.y, l(-1) - endif - ige r17.y, r16.w, l(0) - if_nz r17.y - add r21.yzw, v2.xxyz, -cb3[r18.x + 6].xxyz - ishl r17.y, r16.w, l(2) - dp3 r18.x, r21.yzwy, r21.yzwy - max r18.x, r18.x, l(1.175494351E-38) - rsq r18.x, r18.x - mul r21.yzw, r18.xxxx, r21.yyzw - mad r21.yzw, -r21.yyzw, cb4[r16.w + 288].xxxx, v2.xxyz - mul r18.x, l(5.000000), cb4[r16.w + 288].y - mad r21.yzw, r9.xxyz, r18.xxxx, r21.yyzw - mul r22.xyzw, r21.zzzz, cb4[r17.y + 65].xyzw - mad r22.xyzw, cb4[r17.y + 64].xyzw, r21.yyyy, r22.xyzw - mad r22.xyzw, cb4[r17.y + 66].xyzw, r21.wwww, r22.xyzw - add r22.xyzw, r22.xyzw, cb4[r17.y + 67].xyzw - div r21.yzw, r22.xxyz, r22.wwww - ge r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.yzwy - ge r24.xyz, r21.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) - add r25.xy, -cb4[r16.w + 344].xyxx, cb4[r16.w + 344].zwzz - mad r21.yz, r21.yyzy, r25.xxyx, cb4[r16.w + 344].xxyx - mad r25.xy, r21.yzyy, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r25.xy, r25.xyxx - mad r21.yz, r21.yyzy, cb4[400].zzwz, -r25.xxyx - add r26.xyzw, r21.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r27.xyzw, r26.xxzz, r26.xxzz - add r25.zw, -r21.yyyz, l(0.000000, 0.000000, 1.000000, 1.000000) - min r26.xz, r21.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r28.xy, r21.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy - add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r21.yz, r27.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r21.yyzy - mul r30.xy, r21.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r21.yz, -r26.xxzx, r26.xxzx, r25.zzwz - add r21.yz, r21.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r31.xy, r21.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r21.yz, r26.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r30.z, r31.x - mov r30.w, r21.y - mov r29.z, r28.x - mov r29.w, r27.x - add r26.xyzw, r29.zwxz, r30.zwxz - mov r31.z, r30.y - mov r31.w, r21.z - mov r28.z, r29.y - mov r28.w, r27.z - add r27.xyz, r28.zywz, r31.zywz - div r29.xyz, r29.xzwx, r26.zwyz - add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r29.xyz, r29.yxzy, cb4[400].xxxx - div r28.xyz, r28.zywz, r27.xyzx - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyz, r28.xyzx, cb4[400].yyyy - mov r29.w, r28.x - mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r29.ywxw - mad r21.yz, r25.xxyx, cb4[400].xxyx, r29.zzwz - mov r28.w, r29.y - mov r29.yw, r28.yyyz - mad r31.xyzw, r25.xyxy, cb4[400].xyxy, r29.xyzy - mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz - mad r25.xyzw, r25.xyxy, cb4[400].xyxy, r29.xwzw - mul r29.xyzw, r26.zwyz, r27.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r30.xyxx, t2.xxxx, s2, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.zwzz, t2.xxxx, s2, r21.w - mul r18.x, r18.x, r29.y - mad r17.y, r29.x, r17.y, r18.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r21.yzyy, t2.xxxx, s2, r21.w - mad r17.y, r29.z, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.xyxx, t2.xxxx, s2, r21.w - mad r17.y, r29.w, r18.x, r17.y - mul r29.xyzw, r26.xyzw, r27.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r31.xyxx, t2.xxxx, s2, r21.w - mad r17.y, r29.x, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r31.zwzz, t2.xxxx, s2, r21.w - mad r17.y, r29.y, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.zwzz, t2.xxxx, s2, r21.w - mad r17.y, r29.z, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r25.xyxx, t2.xxxx, s2, r21.w - mad r17.y, r29.w, r18.x, r17.y - or r22.xyz, r22.xyzx, r24.xyzx - or r18.x, r22.y, r22.x - or r18.x, r22.z, r18.x - and r20.y, r21.w, l(0x7fffffff) - ult r20.y, l(0x7f800000), r20.y - or r18.x, r18.x, r20.y - mul r20.y, r26.y, r27.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.y, r25.zwzz, t2.xxxx, s2, r21.w - mad r17.y, r20.y, r21.y, r17.y - add r17.y, r17.y, l(-1.000000) - mad r16.w, cb4[r16.w + 288].w, r17.y, l(1.000000) - movc r16.w, r18.x, l(1.000000), r16.w - else - dp3 r17.y, r8.xyzx, r23.yzwy - add_sat r16.w, r17.y, l(1.000000) - endif - else - mov r16.w, l(1.000000) - endif - if_z cb3[r15.z + 6].w - mul r21.yzw, r15.xxxx, cb3[r15.y + 6].xxyz - add r17.y, l(1.000000), -cb3[r17.z + 6].y - max r18.x, r21.z, r21.y - max r18.x, r21.w, r18.x - mul r18.x, r9.w, r18.x - max r18.x, r18.x, l(1.000000) - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x - mad r17.y, r18.x, cb3[r17.z + 6].y, r17.y - mul r21.yzw, r17.yyyy, cb3[r15.y + 6].xxyz - mul r17.y, l(0.250000), cb3[r17.z + 6].x - add_sat r18.x, r18.y, l(0.500000) - mad r20.y, -cb3[r17.z + 6].x, l(0.250000), l(1.000000) - mad r17.y, r18.x, r20.y, r17.y - mul r21.yzw, r17.yyyy, r21.yyzw - mov r22.xyz, r20.xzwx - mov r24.xyz, r20.xzwx - mov r17.y, l(1.000000) - mov r18.x, l(0) - else - ieq r20.y, l(3), cb3[r15.z + 6].w - if_nz r20.y - mad r25.xy, cb3[r17.z + 6].xxxx, l(-0.600000, -0.399999976, 0.000000, 0.000000), l(0.800000, 0.900000, 0.000000, 0.000000) - add r20.y, -r25.x, r25.y - add r22.w, r21.x, -r25.x - div r20.y, l(1.000000, 1.000000, 1.000000, 1.000000), r20.y - mul_sat r20.y, r20.y, r22.w - mad r22.w, r20.y, l(-2.000000), l(3.000000) - mul r20.y, r20.y, r20.y - mul r20.y, r20.y, r22.w - mul r20.y, r16.w, r20.y - mul r15.x, r15.x, r20.y - mul r25.xyz, r23.wyzw, cb0[6].xyzx - mad r25.xyz, cb0[6].zxyz, r23.yzwy, -r25.xyzx - mul r26.xyz, r25.xyzx, cb0[6].zxyz - mad r25.xyz, cb0[6].yzxy, r25.yzxy, -r26.xyzx - dp3 r20.y, r25.xyzx, r25.xyzx - rsq r20.y, r20.y - mul r25.xyz, r20.yyyy, r25.xyzx - dp3_sat r18.z, r7.xyzx, -r25.xyzx - mad r22.xyz, cb3[r17.z + 6].yyyy, r4.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mov r24.xyz, l(0,0,0,0) - mov r17.y, l(1.000000) - mov r18.x, l(0) - else - ieq r20.y, l(1), cb3[r15.z + 6].w - if_nz r20.y - add r18.y, r18.y, cb3[r17.z + 6].x - max_sat r18.y, r18.y, l(-1.000000) - mul r18.z, r16.w, r18.y - mul r24.xyz, r6.xyzx, cb3[r17.z + 6].yyyy - mov r17.y, l(1.000000) - mov r18.x, l(0) - else - ieq r16.w, l(2), cb3[r15.z + 6].w - if_nz r16.w - add r18.y, l(0.050000), cb3[r17.z + 6].x - add r18.y, r3.z, -r18.y - mul_sat r18.y, r18.y, l(-10.000000) - mad r22.w, r18.y, l(-2.000000), l(3.000000) - mul r18.y, r18.y, r18.y - mul r18.y, r18.y, r22.w - add r22.w, l(1.000000), -cb3[r17.z + 6].z - mad r22.w, r5.x, cb3[r17.z + 6].z, r22.w - mul r17.y, r18.y, r22.w - else - mov r17.y, l(1.000000) - endif - and r18.x, r16.w, cb3[r17.z + 6].y - mov r24.xyz, l(0,0,0,0) - endif - and r22.xyz, r11.xyzx, r20.yyyy - endif - mov r21.yzw, cb3[r15.y + 6].xxyz - endif - ine r15.y, l(3), cb3[r15.z + 6].w - if_nz r15.y - mad r15.y, r18.x, r6.w, r5.y - mad r23.yzw, r0.xxyz, r1.wwww, r23.yyzw - dp3 r15.z, r23.yzwy, r23.yzwy - rsq r15.z, r15.z - mul r23.yzw, r15.zzzz, r23.yyzw - dp3 r15.z, r3.xywx, r23.yzwy - mul r16.w, r15.y, r15.y - mad r17.z, r15.z, r16.w, -r15.z - mad r15.z, r17.z, r15.z, l(1.000000) - mul r15.z, r15.z, r15.z - ne r17.z, r15.z, r16.w - div r15.z, r16.w, r15.z - movc r15.z, r17.z, r15.z, l(1.000000) - mad r15.y, r23.x, l(2.000000), r15.y - add r15.y, r15.y, l(0.000100) - div r15.y, l(0.500000), r15.y - mad r15.y, r15.z, r15.y, l(-0.0000610351562) - max r15.y, r15.y, l(0.000000) - min r15.y, r15.y, l(20.000000) - mul r23.yzw, r13.xxyz, r15.yyyy - mul r23.yzw, r17.yyyy, r23.yyzw - mul r18.xyw, r23.yzyw, cb3[r18.w + 6].zzzz - else - mov r18.xyw, l(0,0,0,0) - endif - mul r15.xyz, r15.xxxx, r21.yzwy - add r21.yzw, r22.xxyz, -r24.xxyz - mad r21.yzw, r18.zzzz, r21.yyzw, r24.xxyz - mul r21.yzw, r15.xxyz, r21.yyzw - mul r15.xyz, r18.xywx, r15.xyzx - mul r15.xyz, r18.zzzz, r15.xyzx - mad r15.xyz, r21.yzwy, r14.zzzz, r15.xyzx - add r16.xyz, r15.xyzx, r16.xyzx - endif - else - mov r19.x, l(0) - endif - movc r16.xyz, r19.xxxx, r19.yzwy, r16.xyzx - endif - endif - mov r13.w, r17.x - endloop - mov r14.xyw, r16.xyxz - iadd r10.z, r10.z, l(1) -endloop -lt r0.x, l(0.500000), cb5[3].x -if_nz r0.x - dp3 r0.x, r14.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r3.xyz, -r0.xxxx, r14.xywx - mad r0.xyz, cb5[3].zzzz, r3.xyzx, r0.xxxx - add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) - mad r0.xyz, cb5[3].wwww, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r3.xyz, r0.xyzx, cb5[3].yyyy - mad r0.xyz, -r0.xyzx, cb5[3].yyyy, cb5[7].xyzx - mad r0.xyz, cb5[7].wwww, r0.xyzx, r3.xyzx - add r2.w, l(1.000000), -cb5[4].x - mov_sat r17.w, r17.w - add r3.x, -r17.w, l(1.000000) - add r3.y, -r2.w, l(1.000000) - add r2.w, -r2.w, r3.x - div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y - mul_sat r2.w, r2.w, r3.x - mad r3.x, r2.w, l(-2.000000), l(3.000000) - mul r2.w, r2.w, r2.w - mul r2.w, r2.w, r3.x - mul r3.xyz, r2.wwww, cb5[8].xyzx - mad r14.xyw, r3.xyxz, cb5[4].yyyy, r0.xyxz -endif -div r0.xyz, r14.xywx, cb0[109].xxxx -eq r2.w, l(1.000000), cb5[2].x -movc o0.w, r2.w, r4.w, l(1.000000) -lt r2.w, cb0[198].w, l(0.500000) -if_nz r2.w - mul r0.w, r0.w, r1.w - mad r1.w, v2.y, cb0[156].w, cb0[157].w - max r1.w, r1.w, l(0.010000) - mad r2.w, r0.w, cb0[154].w, -cb0[153].w - max r2.w, r2.w, l(0.000000) - mul r3.x, r1.w, l(-1.442695) - exp r3.x, r3.x - add r3.x, -r3.x, l(1.000000) - div r1.w, r3.x, r1.w - mad r3.x, v2.y, cb0[156].w, cb0[158].w - mul r3.x, r3.x, l(1.442695) - exp r3.x, r3.x - mul r1.w, r1.w, r3.x - mul r1.w, r1.w, -r2.w - mul r3.xyz, r1.wwww, cb0[155].xyzx - mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) - exp r3.xyz, r3.xyzx - dp3 r1.w, -r2.xyzx, cb0[154].xyzx - mad r2.w, cb0[155].w, cb0[155].w, l(1.000000) - dp2 r3.w, r1.wwww, cb0[155].wwww - add r2.w, r2.w, -r3.w - lt r3.w, l(0.000000), cb0[163].z - if_nz r3.w - and r10.w, l(7), cb0[108].w - imad r4.xyz, r10.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r3.w, r4.y, r4.z, r4.x - imad r4.x, r4.z, r3.w, r4.y - imad r4.y, r3.w, r4.x, r4.z - imad r5.x, r4.x, r4.y, r3.w - dp3 r1.x, -r2.xyzx, -r1.xyzx - add r1.y, v2.y, -cb0[44].y - lt r1.z, l(5.960464478E-08), r1.x - div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x - and r1.x, r1.x, r1.z - mul r1.x, r1.x, cb0[163].w - div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w - mul r2.x, r1.z, r1.x - mad r2.y, r2.x, r1.y, cb0[44].y - mad r1.y, -r2.x, r1.y, r1.y - mul r2.x, r1.y, cb0[159].z - mul r1.y, r1.y, cb0[162].x - max r1.y, r1.y, l(-127.000000) - add r2.z, r2.y, -cb0[159].x - mul r2.z, r2.z, cb0[159].z - max r2.xz, r2.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - exp r2.z, -r2.z - mul r2.z, r2.z, cb0[159].y - lt r3.w, l(5.960464478E-08), |r2.x| - exp r4.z, -r2.x - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r2.x - mad r2.x, -r2.x, l(0.240226507), l(0.693147182) - movc r2.x, r3.w, r4.z, r2.x - add r2.y, r2.y, -cb0[162].z - mul r2.y, r2.y, cb0[162].x - max r2.y, r2.y, l(-127.000000) - exp r2.y, -r2.y - mul r2.y, r2.y, cb0[162].y - lt r3.w, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r3.w, r4.z, r1.y - mul r1.y, r1.y, r2.y - mad r1.y, r2.z, r2.x, r1.y - mad r1.x, -r1.x, r1.z, l(1.000000) - mul r1.x, r0.w, r1.x - mul r1.x, r1.x, r1.y - exp r1.x, -r1.x - min r1.x, r1.x, l(1.000000) - max r1.x, r1.x, cb0[161].w - mad_sat r1.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx - add r1.x, r1.y, r1.x - add r1.x, r1.z, r1.x - min r1.x, r1.x, l(1.000000) - imad r5.y, r4.y, r5.x, r4.x - ushr r1.yz, r5.xxyx, l(0, 16, 16, 0) - utof r1.yz, r1.yyzy - mad r1.yz, r1.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) - mad r1.yz, r1.yyzy, cb0[167].wwww, r5.zzwz - mul r2.xy, r1.yzyy, cb0[165].xyxx - mad r1.y, v0.w, cb0[164].x, cb0[164].y - log r1.y, r1.y - mul r1.y, r1.y, cb0[164].z - div r2.z, r1.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t18.xyzw, s0, l(0.000000) - add r1.y, v0.w, -cb0[166].z - mul_sat r1.y, r1.y, l(1000000.000000) - add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r4.xyzw, r1.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r1.y, -r1.x, l(1.000000) - mul r2.xyz, r1.yyyy, cb0[161].xyzx - mad r2.xyz, r2.xyzx, r4.wwww, r4.xyzx - mul r1.x, r1.x, r4.w - else - add r1.y, v2.y, -cb0[44].y - mul r1.z, r1.y, cb0[159].z - mul r1.y, r1.y, cb0[162].x - max r1.yz, r1.yyzy, l(0.000000, -127.000000, -127.000000, 0.000000) - add r3.w, cb0[44].y, -cb0[159].x - mul r3.w, r3.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[159].y - lt r4.x, l(5.960464478E-08), |r1.z| - exp r4.y, -r1.z - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r1.z - mad r1.z, -r1.z, l(0.240226507), l(0.693147182) - movc r1.z, r4.x, r4.y, r1.z - add r4.x, cb0[44].y, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.y, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r4.y, r4.z, r1.y - mul r1.y, r1.y, r4.x - mad r1.y, r3.w, r1.z, r1.y - mul r1.y, r0.w, r1.y - exp r1.y, -r1.y - min r1.y, r1.y, l(1.000000) - max r1.y, r1.y, cb0[161].w - mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.w, r1.y, r4.x - add r0.w, r4.y, r0.w - min r1.x, r0.w, l(1.000000) - add r0.w, -r1.x, l(1.000000) - mul r2.xyz, r0.wwww, cb0[161].xyzx - endif - mul r4.xyz, r1.xxxx, r3.xyzx - mad r0.w, r1.w, r1.w, l(1.000000) - mul r0.w, r0.w, l(0.0596831031) - mad r1.yzw, cb0[156].xxyz, r0.wwww, cb0[158].xxyz - mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) - mul r3.w, r2.w, l(12.566371) - sqrt r2.w, r2.w - mul r2.w, r2.w, r3.w - max r2.w, r2.w, l(0.001000) - div r0.w, r0.w, r2.w - mad_sat r1.yzw, cb0[157].xxyz, r0.wwww, r1.yyzw - mul r1.yzw, r1.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) - add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mul r1.yzw, r1.yyzw, r3.xxyz - mad r1.xyz, r1.yzwy, r1.xxxx, r2.xyzx - mad o0.xyz, r0.xyzx, r4.xyzx, r1.xyzx -else - mov o0.xyz, r0.xyzx -endif -mov o1.z, l(1.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x0E84DFD1.cso b/src/games/endfield/deferred-lighting/0x0E84DFD1.cso index 61de4fdc049ac6fb66d233de0dfb189326b57f48..4d6c85b7da649f468a0ebe56ea77f0c83b102d99 100644 GIT binary patch delta 193 zcmexymHERpW+|5lC+D2M$Nf6q3A0QHuZobH*}jjFfq|jm^+c&foEu&-Fa!X3Yc?LW zW@HrJ%*fO}SJ#|@flG-&fPon(Vb!3(zzd{>fSA#Nf#E+8NI~V~8CaO5CKp~&-@Il1 z114FZHr^tj6gN=mw|;~+HzuIis_Uv0=c{AWH!N008*vks6{2IO+fZPyhe` qjX(1qHbYNik4+L5uxy>tct~1F3mGTw= zxm-Z$Z~X|RZcIS2$rnY%Wh@vN*g-1TfGR+uFdC#|b3^_FLv98J2YZmw3=9pMr5D~6 zm6c~;VUa?z*NcIn?+{SdIaHKEX!6k1u-#;Y*7aPBpp1zV$sL0|SH4j)_u>xO%oTFa!X3k99X5 z(_&=g+x(Gnch=@BIaioA|Hz+U$USRjq&=ep1H-JDlA9+lyerCT$H2fSy7}dHZ$=gn F69Ai}Br5;_ diff --git a/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm index 75cf7f48c0..3b7f7ab2f4 100644 --- a/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm @@ -37,7 +37,7 @@ dcl_constantbuffer CB3[2054], dynamicIndexed dcl_constantbuffer CB4[401], dynamicIndexed dcl_constantbuffer CB5[160], dynamicIndexed dcl_constantbuffer CB6[4], immediateIndexed -dcl_constantbuffer CB13[14], immediateIndexed +dcl_constantbuffer CB13[19], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -910,6 +910,7 @@ loop endloop mad r6.xyz, r20.xyzx, r8.wwww, r13.xzwx ne r4.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy +movc r4.z, cb13[18].w, l(0xFFFFFFFF), r4.z if_nz r4.z sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x min r0.z, r1.y, r0.z @@ -935,6 +936,8 @@ else mov r10.xyz, r1.yyyy mov r13.xyz, r1.yyyy endif +movc r10.xyz, cb13[18].wwww, r10.xyzx, l(1.0, 1.0, 1.0, 0) +mul r6.xyz, r6.xyzx, r10.xyzx mad r15.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx round_z r0.z, cb0[212].x mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx @@ -1345,10 +1348,10 @@ mul r3.xyz, r15.xyzx, cb0[112].zzzz mul r3.xyz, r3.xyzx, cb0[111].yyyy // Cubemap ambient link modulation (cb13[13].w) if_nz cb13[13].w - max r35.w, r35.w, l(0.000000) // saturate step 1 - min r35.w, r35.w, l(1.000000) // saturate step 2 - mad r35.w, r35.w, l(0.850000), l(0.150000) // lerp(0.15, 1.0, ambient) = 0.15 + 0.85*ambient - mul r3.xyz, r3.xyzx, r35.wwww // cubemap *= lerp(0.15, 1.0, saturate(ambient_luminance)) + max r35.w, r35.w, l(0.000000) + min r35.w, r35.w, l(1.000000) + mad r35.w, r35.w, l(0.750000), l(0.250000) + mul r3.xyz, r3.xyzx, r35.wwww endif if_nz r4.w sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x @@ -1521,32 +1524,21 @@ mul r0.yzw, r0.yyzw, r3.xxyz mad r0.xyz, r0.yzwy, r0.xxxx, r4.xyzx // Check fog modification toggle (cb13[12].y) -// If 0 (Original), skip fog modification and output original if_z cb13[12].y mad o0.xyz, r1.xyzx, r2.xywx, r0.xyzx dp3 o0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) ret +else + // === Fog Modification (Anti-Banding) === + mul r5.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) + mul r6.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) + add r7.xyz, -r2.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r7.xyz, r7.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r2.xywx + mul r6.xyz, r6.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + mad r8.xyz, r5.xyzx, r7.xyzx, r6.xyzx + mul o0.xyz, r8.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) + dp3 o0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) + ret endif - -// === Simplified Fog Modification (Anti-Banding) === -// r1.xyz = scene color (0-255), r2.xyw = transmittance, r0.xyz = fog inscatter (0-255) - -// Normalize colors to 0-1 range -mul r5.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r1/255 -mul r6.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 - -// Boost transmittance: transmittance = lerp(transmittance, 1, 0.35) to reduce fog density -add r7.xyz, -r2.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r7.xyz, r7.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r2.xywx - -// Reduce fog inscatter intensity -mul r6.xyz, r6.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - -// Standard fog blend with reduced intensity -mad r8.xyz, r5.xyzx, r7.xyzx, r6.xyzx - -// Output: scale back to 0-255 range -mul o0.xyz, r8.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -dp3 o0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) ret // Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0_original_backup.asm deleted file mode 100644 index ae0da18022..0000000000 --- a/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0_original_backup.asm +++ /dev/null @@ -1,1516 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Thu Jan 29 18:08:15 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[160], dynamicIndexed -dcl_constantbuffer CB6[4], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture3d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_resource_texture2d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 36 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t22.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t23.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r3.xyz, r1.wwww, r3.xyzx -utof r2.xy, r0.xyxx -mul r4.xy, v0.xyxx, cb0[82].zwzz -mad r4.zw, r4.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -add r5.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mul r5.xy, r5.xyxx, cb0[82].zwzz -sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xyxx, t1.yzwx, s0, l(0.000000) -mul r5.xyzw, -r4.wwww, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r4.zzzz, r5.xyzw -mad r5.xyzw, cb0[26].xyzw, r1.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r1.w, r5.y, cb0[1].z -mad r1.w, cb0[0].z, r5.x, r1.w -mad r1.w, cb0[2].z, r5.z, r1.w -add r1.w, r1.w, cb0[3].z -eq r2.w, l(0.000000), cb0[86].w -add r6.xyz, -r5.xyzx, cb0[44].xyzx -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r6.xyz, r2.wwww, r6.xyzx, r7.xyzx -dp3 r2.w, r6.xyzx, r6.xyzx -max r4.z, r2.w, l(9.999999939E-09) -rsq r4.z, r4.z -mul r8.xyz, r4.zzzz, r6.xyzx -mul r2.w, r2.w, r4.z -lt r4.w, l(0.000488281250), cb0[234].x -if_nz r4.w - sample_b_indexable(texture2d)(float,float,float,float) r9.xy, v1.xyxx, t21.xyzw, s1, cb0[108].x -else - mov r9.xy, l(1.000000,1.000000,0,0) -endif -min r6.w, r9.y, r9.x -add r1.z, r1.z, l(-0.050000) -mul_sat r1.z, r1.z, l(1.052600) -add r7.w, r9.y, l(-1.000000) -mad r10.x, r1.z, r7.w, l(1.000000) -add r10.y, -r1.z, l(1.000000) -movc r9.yz, r4.wwww, r10.xxyx, l(0,1.000000,1.000000,0) -min r1.z, r2.z, r9.y -add r4.w, -r1.z, r2.z -mad r1.z, r6.w, r4.w, r1.z -add r2.z, -r1.z, r2.z -mad r10.w, r9.x, r2.z, r1.z -ld_indexable(texture2d)(float,float,float,float) r11.xyz, r0.xyzz, t24.xyzw -add r1.z, -r9.z, l(1.000000) -mad r1.z, r6.w, r1.z, r9.z -add r2.z, -r1.z, l(1.000000) -mad r1.z, r9.x, r2.z, r1.z -mul r9.xyz, r1.zzzz, r11.xyzx -mul r12.xyz, r1.xxxx, r9.xyzx -mad r11.xyz, r11.xyzx, r1.zzzz, -r12.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r9.xyz, r9.xyzx, r1.xxxx, r1.zzzz -dp3 r1.x, r3.xyzx, r8.xyzx -max r12.x, r1.x, l(0.000000) -mul r13.y, r10.w, r10.w -mul r14.x, r12.x, r12.x -mul r14.z, r12.x, r14.x -mul r1.x, r13.y, r13.y -mul r13.z, r13.y, r1.x -mov r12.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r15.x, l(3.327070, 1.000000, 0.000000, 0.000000), r12.xyxx -dp2 r15.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r12.xzxx -mov r13.x, l(1.000000) -dp2 r1.z, r15.xyxx, r13.xyxx -mov r14.yw, l(0,9.044010,0,1.000000) -dp3 r15.x, l(3.596850, -1.367720, 1.000000, 0.000000), r14.xzwx -dp3 r15.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r14.xyzx -mov r16.x, l(5.565890) -mov r16.yz, r14.xxzx -dp3 r15.z, l(1.000000, 19.788601, -20.212299, 0.000000), r16.xyzx -dp3 r2.z, r15.xyzx, r13.xyzx -div r1.z, r1.z, r2.z -dp2 r15.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r12.xwxx -mov r14.x, l(1.296780) -mov r14.y, r12.x -dp2 r15.y, l(1.000000, -0.755907, 0.000000, 0.000000), r14.xyxx -dp2 r2.z, r15.xyxx, r13.xyxx -dp3 r15.x, l(2.923380, 59.418800, 1.000000, 0.000000), r14.yzwy -mov r14.xw, l(20.322500,0,0,121.563004) -dp3 r15.y, l(1.000000, -27.030199, 222.591995, 0.000000), r14.xyzx -dp3 r15.z, l(626.130005, 316.627014, 1.000000, 0.000000), r14.yzwy -dp3 r4.w, r15.xyzx, r13.xyzx -div r2.z, r2.z, r4.w -mad r12.yzw, r9.xxyz, r1.zzzz, r2.zzzz -add r1.z, r1.z, r2.z -ld_indexable(texture2d)(float,float,float,float) r13.x, r0.xyzz, t7.xzyw -lt r0.z, l(0.001000), r13.x -if_nz r0.z - dp3 r0.z, -r8.xyzx, r3.xyzx - add r0.z, r0.z, r0.z - mad r14.xyz, r3.xyzx, -r0.zzzz, -r8.xyzx - dp3 r0.z, -cb3[0].xyzx, r14.xyzx - mad r15.xyz, cb3[0].xyzx, r0.zzzz, r14.xyzx - lt r0.z, r0.z, cb3[4].z - dp3 r2.z, r15.xyzx, r15.xyzx - max r2.z, r2.z, l(0.0000610351562) - rsq r2.z, r2.z - mul r15.xyz, r2.zzzz, r15.xyzx - mul r15.xyz, r15.xyzx, cb3[4].yyyy - mad r15.xyz, -cb3[0].xyzx, cb3[4].zzzz, r15.xyzx - dp3 r2.z, r15.xyzx, r15.xyzx - rsq r2.z, r2.z - mul r15.xyz, r2.zzzz, r15.xyzx - movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx - mad r15.xyz, r6.xyzx, r4.zzzz, r14.xyzx - dp3 r0.z, r15.xyzx, r15.xyzx - max r0.z, r0.z, l(0.0000610351562) - rsq r0.z, r0.z - mul r15.xyz, r0.zzzz, r15.xyzx - dp3_sat r10.y, r14.xyzx, r3.xyzx - dp3_sat r0.z, r3.xyzx, r15.xyzx - min r10.z, r12.x, l(1.000000) - mad r2.z, r0.z, r1.x, -r0.z - mad r0.z, r2.z, r0.z, l(1.000000) - dp3_sat r2.z, r8.xyzx, r15.xyzx - add r2.z, -r2.z, l(1.000000) - mul r4.w, r2.z, r2.z - mul r4.w, r4.w, r4.w - mul r6.w, r2.z, r4.w - add r7.w, -r10.w, l(1.000000) - mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) - mad r8.w, r7.w, r8.w, l(1.049970) - mad r7.w, r7.w, r8.w, l(0.409255) - min r7.w, r7.w, l(0.999000) - add r8.w, -r7.w, l(1.000000) - add r14.xyz, -r9.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r14.xyz, r14.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r9.xyzx - mad r2.z, -r4.w, r2.z, l(1.000000) - mad r15.xyz, r9.xyzx, r2.zzzz, r6.wwww - mul r0.z, r0.z, r0.z - div r0.z, r1.x, r0.z - mad r16.xy, -r10.zyzz, r1.xxxx, r10.zyzz - mad r16.xy, r16.xyxx, r10.zyzz, r1.xxxx - sqrt r16.xy, r16.xyxx - mul r16.xy, r10.yzyy, r16.xyxx - add r1.x, r16.y, r16.x - add r1.x, r1.x, l(0.000100) - div r1.x, l(0.500000), r1.x - mul r0.z, r0.z, r1.x - mul r15.xyz, r0.zzzz, r15.xyzx - min r15.xyz, r15.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r16.xyzw, r10.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r16.xyxx, t9.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r1.x, r16.zwzz, t9.xyzw, s1, l(0.000000) - mul r0.z, r0.z, r1.x - mul r0.z, r7.w, r0.z - div r0.z, r0.z, r8.w - mul r16.xyz, r14.xyzx, r14.xyzx - mul r16.xyz, r0.zzzz, r16.xyzx - mad r14.xyz, -r14.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r14.xyz, r16.xyzx, r14.xyzx - add r14.xyz, r14.xyzx, r15.xyzx - mul r14.xyz, r14.xyzx, cb3[4].xxxx - max r14.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r14.xyz, r14.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r15.xyz, r10.yyyy, r11.xyzx - mad r14.xyz, r14.xyzx, r10.yyyy, r15.xyzx - mul r14.xyz, r14.xyzx, cb3[1].xyzx - mov r13.z, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, r13.xzxx, t8.xyzw, s1, cb0[108].x - add r0.z, -r13.x, l(1.000000) - mad r13.xzw, r14.xxyz, r15.xxyz, -r14.xxyz - mad r13.xzw, r0.zzzz, r13.xxzw, r14.xxyz - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t10.yzxw, s1, l(0.000000) - min r0.z, r0.z, l(1.000000) - mul r13.xzw, r0.zzzz, r13.xxzw -else - mov r13.xzw, l(0,0,0,0) -endif -mul r10.yz, r2.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) -round_ni r10.yz, r10.yyzy -mad r0.z, r10.z, cb2[1].y, r10.y -mul r0.z, r0.z, l(8.000000) -ftoi r0.z, r0.z -mad r1.x, -cb0[85].y, cb2[2].w, |r1.w| -round_ni r1.x, r1.x -add r2.z, l(-1.000000), cb2[1].w -max r4.w, r1.x, l(0.000000) -min r2.z, r2.z, r4.w -mul r4.w, r2.z, l(8.000000) -ftoi r4.w, r4.w -ge r1.x, r2.z, r1.x -iadd r2.z, r4.w, cb0[110].y -dp3 r4.w, -r8.xyzx, r3.xyzx -add r4.w, r4.w, r4.w -mad r14.xyz, r3.xyzx, -r4.wwww, -r8.xyzx -min r10.x, r12.x, l(1.000000) -add r4.w, -r10.w, l(1.000000) -mad r6.w, -r4.w, l(0.383026), l(-0.0761947036) -mad r6.w, r4.w, r6.w, l(1.049970) -mad r4.w, r4.w, r6.w, l(0.409255) -min r4.w, r4.w, l(0.999000) -add r6.w, -r4.w, l(1.000000) -add r15.xyz, -r9.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r9.xyzx -mad r10.yz, r10.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r7.w, r10.yzyy, t9.yzwx, s1, l(0.000000) -mad r16.xyz, -r15.xyzx, r6.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r15.xyz, r15.xyzx, r15.xyzx -mov r17.w, l(1.000000) -mov r18.y, l(1.000000) -mov r19.z, r10.w -mov r20.xyz, l(0,0,0,0) -mov r8.w, l(1.000000) -mov r9.w, l(0) -loop - ilt r10.y, l(7), r9.w - breakc_nz r10.y - iadd r10.y, r0.z, r9.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.y, r10.y, l(0), t0.xxxx - iadd r10.z, r2.z, r9.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.z, r10.z, l(0), t0.xxxx - and r10.y, r10.z, r10.y - and r10.y, r1.x, r10.y - ishl r10.z, r9.w, l(5) - mov r21.xyz, l(0,0,0,0) - mov r11.w, r8.w - mov r14.w, r10.y - loop - breakc_z r14.w - firstbit_lo r15.w, r14.w - ishl r16.w, l(1), r15.w - xor r16.w, r14.w, r16.w - iadd r15.w, r10.z, r15.w - bfi r22.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r15.wwww, l(1, 3, 5, 6) - bfi r18.z, l(29), l(3), r15.w, l(7) - ftou r18.w, cb3[r22.z + 6].w - ieq r18.w, r18.w, l(1) - if_nz r18.w - add r17.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx - and r23.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.z + 6].xzyx - and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.w + 6].yxzy - ushr r25.xyz, cb3[r22.z + 6].xzyx, l(16, 16, 16, 0) - ushr r26.xyz, cb3[r22.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r23.xyz, r23.xyzx - f16tof32 r24.xyz, r24.xyzx - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyw, r26.yxyz - mov r27.xz, r23.xxzx - mov r27.yw, r25.xxxz - dp4 r18.w, r17.xyzw, r27.xyzw - mov r25.x, r23.y - mov r25.z, r24.y - mov r25.w, r26.x - dp4 r19.w, r17.xyzw, r25.xyzw - mov r26.xz, r24.xxzx - dp4 r17.x, r17.xyzw, r26.xyzw - max r17.y, |r18.w|, |r19.w| - max r17.x, |r17.x|, r17.y - mad r17.y, cb3[r18.z + 6].x, l(0.500000), l(0.500000) - add r17.x, -r17.y, r17.x - mad r17.y, -cb3[r18.z + 6].x, l(0.500000), l(0.500000) - div_sat r17.x, r17.x, r17.y - add r17.x, -r17.x, l(1.000000) - mul r17.x, r17.x, r17.x - else - mov r17.x, l(1.000000) - endif - lt r17.y, l(0.500000), cb3[r22.y + 6].z - lt r17.z, r17.x, l(0.001000) - or r17.z, r17.y, r17.z - if_nz r17.z - mov r14.w, r16.w - continue - endif - ishl r17.z, r15.w, l(3) - bfi r15.w, l(29), l(3), r15.w, l(2) - lt r18.w, cb3[r17.z + 6].w, l(1.500000) - if_nz r18.w - mad r18.w, cb3[r15.w + 6].y, l(0.500000), l(0.500000) - add r23.x, r18.w, -|cb3[r15.w + 6].x| - add r23.y, -r23.x, cb3[r15.w + 6].y - add r18.w, -|r23.x|, l(1.000000) - add r18.w, -|r23.y|, r18.w - max r18.w, r18.w, l(0.000488281250) - ge r19.w, cb3[r15.w + 6].x, l(0.000000) - movc r23.z, r19.w, r18.w, -r18.w - dp3 r18.w, r23.xyzx, r23.xyzx - rsq r18.w, r18.w - mul r23.xyz, r18.wwww, r23.xyzx - add r24.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx - dp3 r18.w, r24.xyzx, r24.xyzx - rsq r19.w, r18.w - mul r25.xyz, r19.wwww, r24.xyzx - ftoi r20.w, cb3[r18.z + 6].w - mul r26.xyz, r23.xyzx, cb3[r15.w + 6].zzzz - mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - mad r28.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - ftou r21.w, cb3[r17.z + 6].w - and r21.w, r21.w, l(1) - ieq r22.z, r21.w, l(0) - not r22.z, r22.z - lt r23.w, l(0.000000), cb3[r15.w + 6].z - and r22.z, r22.z, r23.w - dp3 r23.w, r27.xyzx, r27.xyzx - sqrt r23.w, r23.w - dp3 r24.w, r28.xyzx, r28.xyzx - sqrt r24.w, r24.w - dp3 r25.w, r3.xyzx, r27.xyzx - div r25.w, r25.w, r23.w - dp3 r26.w, r3.xyzx, r28.xyzx - div r26.w, r26.w, r24.w - add r25.w, r25.w, r26.w - mul_sat r29.x, r25.w, l(0.500000) - dp3 r25.w, r27.xyzx, r28.xyzx - mad r23.w, r23.w, r24.w, r25.w - mad r23.w, r23.w, l(0.500000), l(1.000000) - div r29.y, l(1.000000, 1.000000, 1.000000, 1.000000), r23.w - dp3_sat r18.x, r3.xyzx, r25.xyzx - movc r19.xy, r22.zzzz, r29.xyxx, r18.xyxx - lt r18.x, cb3[r22.w + 6].w, l(0.000000) - if_nz r18.x - mul r18.x, cb3[r22.x + 6].w, cb3[r22.x + 6].w - mul r18.x, r18.x, r18.w - mad r18.x, -r18.x, r18.x, l(1.000000) - max r18.x, r18.x, l(0.000000) - add r18.w, r18.w, l(1.000000) - div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), r18.w - and r23.w, r22.z, l(0x3f800000) - add r24.w, -r18.w, r19.y - mad r18.w, r23.w, r24.w, r18.w - mul r18.x, r18.x, r18.x - mul r18.x, r18.x, r18.w - else - mul r28.xyz, r24.xyzx, cb3[r22.x + 6].wwww - dp3 r18.w, r28.xyzx, r28.xyzx - min r18.w, r18.w, l(1.000000) - add r18.w, -r18.w, l(1.000000) - log r18.w, r18.w - mul r18.w, r18.w, cb3[r22.w + 6].w - exp r18.w, r18.w - mul r18.x, r18.w, r19.y - endif - dp3 r18.w, r25.xyzx, -r23.xyzx - add r18.w, r18.w, -cb3[r15.w + 6].z - mul_sat r18.w, r18.w, cb3[r15.w + 6].w - mul r18.w, r18.w, r18.w - movc r18.w, r21.w, l(1.000000), r18.w - mul r18.x, r18.w, r18.x - not r18.w, r22.z - ige r19.y, r20.w, l(0) - and r18.w, r18.w, r19.y - if_nz r18.w - if_z r21.w - ishl r18.w, r20.w, l(2) - mul r23.xyz, r5.yyyy, cb5[r18.w + 33].xywx - mad r23.xyz, cb5[r18.w + 32].xywx, r5.xxxx, r23.xyzx - mad r23.xyz, cb5[r18.w + 34].xywx, r5.zzzz, r23.xyzx - add r23.xyz, r23.xyzx, cb5[r18.w + 35].xywx - div_sat r23.xy, r23.xyxx, r23.zzzz - mad r23.xy, r23.xyxx, cb5[r20.w + 0].zwzz, cb5[r20.w + 0].xyxx - else - ishl r18.w, r20.w, l(2) - dp3 r28.x, -r24.xyzx, cb5[r18.w + 32].xyzx - dp3 r28.y, -r24.xyzx, cb5[r18.w + 33].xyzx - dp3 r28.z, -r24.xyzx, cb5[r18.w + 34].xyzx - lt r18.w, |r28.x|, |r28.y| - and r18.w, r18.w, l(1) - dp2 r19.y, |r28.xyxx|, icb[r18.w + 0].xyxx - lt r19.y, r19.y, |r28.z| - movc r18.w, r19.y, l(2), r18.w - dp3 r19.y, r28.xyzx, icb[r18.w + 0].xyzx - lt r19.y, r19.y, l(0.000000) - bfi r18.w, l(31), l(1), r18.w, r19.y - ushr r19.y, r18.w, l(1) - dp3 r19.y, r28.xyzx, icb[r19.y + 0].xyzx - div r23.z, l(0.000244140625), cb5[r20.w + 0].w - add r23.z, -r23.z, l(0.500000) - utof r23.w, r18.w - ult r24.x, r18.w, l(2) - and r24.x, r24.x, l(2) - dp2 r24.x, r28.xzxx, icb[r24.x + 0].xzxx - mul r24.x, r24.x, icb[r18.w + 4].z - div r24.x, r24.x, |r19.y| - mad r23.w, r24.x, r23.z, r23.w - add r23.w, r23.w, l(0.500000) - mul_sat r24.x, r23.w, l(0.166666672) - iadd r23.w, l(-1), icb[r18.w + 4].y - dp2 r23.w, r28.yzyy, icb[r23.w + 0].xyxx - mul r18.w, r23.w, icb[r18.w + 4].w - div r18.w, r18.w, |r19.y| - mad_sat r24.y, -r18.w, r23.z, l(0.500000) - mad r23.xy, r24.xyxx, cb5[r20.w + 0].zwzz, cb5[r20.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r18.w, r23.xyxx, t11.yzwx, s1, l(0.000000) - mul r18.x, r18.w, r18.x - endif - lt r18.w, l(0.000000), r18.x - if_nz r18.w - if_z r21.w - ftoi r19.y, cb3[r22.y + 6].x - else - add r23.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx - lt r24.xyz, |r23.yzzy|, |r23.xxyx| - and r20.w, r24.y, r24.x - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx - ushr r21.w, cb3[r15.w + 6].w, l(24) - ubfe r24.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r15.w + 6].wwww - movc r21.w, r23.x, r21.w, r24.x - and r23.x, l(255), cb3[r15.w + 6].w - movc r23.x, r23.y, r24.y, r23.x - ubfe r23.y, l(8), l(8), cb3[r22.y + 6].x - and r23.w, l(255), cb3[r22.y + 6].x - movc r23.y, r23.z, r23.y, r23.w - movc r23.x, r24.z, r23.x, r23.y - movc r20.w, r20.w, r21.w, r23.x - ilt r21.w, r20.w, l(80) - movc r19.y, r21.w, r20.w, l(-1) - endif - ishl r20.w, r19.y, l(2) - mad r23.xyz, r25.xyzx, cb4[r19.y + 288].xxxx, r5.xyzx - mul r21.w, l(5.000000), cb4[r19.y + 288].y - mad r23.xyz, r3.xyzx, r21.wwww, r23.xyzx - mul r24.xyzw, r23.yyyy, cb4[r20.w + 65].xyzw - mad r24.xyzw, cb4[r20.w + 64].xyzw, r23.xxxx, r24.xyzw - mad r23.xyzw, cb4[r20.w + 66].xyzw, r23.zzzz, r24.xyzw - add r23.xyzw, r23.xyzw, cb4[r20.w + 67].xyzw - div r23.xyz, r23.xyzx, r23.wwww - ge r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx - ge r28.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r29.xy, -cb4[r19.y + 344].xyxx, cb4[r19.y + 344].zwzz - mad r23.xy, r23.xyxx, r29.xyxx, cb4[r19.y + 344].xyxx - mad r29.xy, r23.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r29.xy, r29.xyxx - mad r23.xy, r23.xyxx, cb4[400].zwzz, -r29.xyxx - add r30.xyzw, r23.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r31.xyzw, r30.xxzz, r30.xxzz - add r29.zw, -r23.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r30.xz, r23.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r32.xy, r23.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r33.xy, r29.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r32.xy, -r32.xyxx, r32.xyxx, r30.ywyy - add r32.xy, r32.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r32.xy, r32.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r31.xz, r31.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r23.xy, r31.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r23.xyxx - mul r34.xy, r23.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r23.xy, -r30.xzxx, r30.xzxx, r29.zwzz - add r23.xy, r23.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r35.xy, r23.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r23.xy, r30.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r34.z, r35.x - mov r34.w, r23.x - mov r33.z, r32.x - mov r33.w, r31.x - add r30.xyzw, r33.zwxz, r34.zwxz - mov r35.z, r34.y - mov r35.w, r23.y - mov r32.z, r33.y - mov r32.w, r31.z - add r23.xyw, r32.zyzw, r35.zyzw - div r31.xyz, r33.xzwx, r30.zwyz - add r31.xyz, r31.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r31.xyz, r31.yxzy, cb4[400].xxxx - div r32.xyz, r32.zywz, r23.xywx - add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r32.xyz, r32.xyzx, cb4[400].yyyy - mov r31.w, r32.x - mad r33.xyzw, r29.xyxy, cb4[400].xyxy, r31.ywxw - mad r29.zw, r29.xxxy, cb4[400].xxxy, r31.zzzw - mov r32.w, r31.y - mov r31.yw, r32.yyyz - mad r34.xyzw, r29.xyxy, cb4[400].xyxy, r31.xyzy - mad r32.xyzw, r29.xyxy, cb4[400].xyxy, r32.wywz - mad r31.xyzw, r29.xyxy, cb4[400].xyxy, r31.xwzw - mul r35.xyzw, r23.xxxy, r30.zwyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r33.xyxx, t6.xxxx, s4, r23.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r33.zwzz, t6.xxxx, s4, r23.z - mul r21.w, r21.w, r35.y - mad r20.w, r35.x, r20.w, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r29.zwzz, t6.xxxx, s4, r23.z - mad r20.w, r35.z, r21.w, r20.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r32.xyxx, t6.xxxx, s4, r23.z - mad r20.w, r35.w, r21.w, r20.w - mul r29.xyzw, r23.yyww, r30.xyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r34.xyxx, t6.xxxx, s4, r23.z - mad r20.w, r29.x, r21.w, r20.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r34.zwzz, t6.xxxx, s4, r23.z - mad r20.w, r29.y, r21.w, r20.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r32.zwzz, t6.xxxx, s4, r23.z - mad r20.w, r29.z, r21.w, r20.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r31.xyxx, t6.xxxx, s4, r23.z - mad r20.w, r29.w, r21.w, r20.w - ige r21.w, r19.y, l(0) - or r24.xyz, r24.xyzx, r28.xyzx - or r23.x, r24.y, r24.x - or r23.x, r24.z, r23.x - and r23.y, r23.z, l(0x7fffffff) - ult r23.y, l(0x7f800000), r23.y - or r23.x, r23.y, r23.x - mul r23.y, r23.w, r30.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.z, r31.zwzz, t6.xxxx, s4, r23.z - mad r20.w, r23.y, r23.z, r20.w - add r20.w, r20.w, l(-1.000000) - mad r19.y, cb4[r19.y + 288].w, r20.w, l(1.000000) - movc r19.y, r23.x, l(1.000000), r19.y - movc r19.y, r21.w, r19.y, l(1.000000) - else - mov r19.y, l(1.000000) - endif - if_nz r22.z - dp3 r20.w, r14.xyzx, r26.xyzx - mul_sat r21.w, r19.w, cb3[r15.w + 6].z - mad r21.w, r21.w, l(0.500000), r13.y - min r21.w, r21.w, l(1.000000) - div r21.w, r13.y, r21.w - mad r23.xyz, r14.xyzx, r20.wwww, -r26.xyzx - dp3 r22.z, r27.xyzx, r23.xyzx - mul r20.w, r20.w, r20.w - mad r20.w, cb3[r15.w + 6].z, cb3[r15.w + 6].z, -r20.w - div_sat r20.w, r22.z, r20.w - mad r23.xyz, r26.xyzx, r20.wwww, r27.xyzx - dp3 r20.w, r23.xyzx, r23.xyzx - rsq r20.w, r20.w - mul r25.xyz, r20.wwww, r23.xyzx - else - mov r21.w, l(1.000000) - endif - if_nz r18.w - mul_sat r18.w, r19.w, cb3[r18.z + 6].y - mad r23.xyz, r6.xyzx, r4.zzzz, r25.xyzx - dp3 r19.w, r23.xyzx, r23.xyzx - max r19.w, r19.w, l(0.0000610351562) - rsq r19.w, r19.w - mul r23.xyz, r19.wwww, r23.xyzx - dp3_sat r19.w, r3.xyzx, r23.xyzx - dp3_sat r20.w, r8.xyzx, r23.xyzx - lt r22.z, l(0.000000), r18.w - mul r18.w, r18.w, r18.w - mad r23.x, r20.w, l(3.600000), l(0.400000) - div r18.w, r18.w, r23.x - mad r18.w, r10.w, r10.w, r18.w - min r18.w, r18.w, l(1.000000) - movc r18.w, r22.z, r18.w, r13.y - mul r18.w, r18.w, r18.w - mad r22.z, r19.w, r18.w, -r19.w - mad r19.w, r22.z, r19.w, l(1.000000) - add r20.w, -r20.w, l(1.000000) - mul r22.z, r20.w, r20.w - mul r22.z, r22.z, r22.z - mul r23.x, r20.w, r22.z - mad r20.w, -r22.z, r20.w, l(1.000000) - mad r23.xyz, r9.xyzx, r20.wwww, r23.xxxx - mul r19.w, r19.w, r19.w - div r19.w, r18.w, r19.w - mul r19.w, r21.w, r19.w - mad r20.w, -r10.x, r18.w, r10.x - mad r20.w, r20.w, r10.x, r18.w - sqrt r20.w, r20.w - mad r21.w, -r19.x, r18.w, r19.x - mad r18.w, r21.w, r19.x, r18.w - sqrt r18.w, r18.w - mul r18.w, r10.x, r18.w - mad r18.w, r19.x, r20.w, r18.w - add r18.w, r18.w, l(0.000100) - div r18.w, l(0.500000), r18.w - mul r18.w, r18.w, r19.w - mul r23.xyz, r18.wwww, r23.xyzx - min r23.xyz, r23.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r24.xy, r19.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r18.w, r24.xyxx, t9.yzwx, s1, l(0.000000) - mul r18.w, r7.w, r18.w - mul r18.w, r4.w, r18.w - div r18.w, r18.w, r6.w - mul r24.xyz, r15.xyzx, r18.wwww - div r24.xyz, r24.xyzx, r16.xyzx - add r23.xyz, r23.xyzx, r24.xyzx - mul r23.xyz, r23.xyzx, cb3[r18.z + 6].zzzz - max r23.xyz, r23.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r23.xyz, r23.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r24.xyz, r11.xyzx, r19.xxxx - mad r23.xyz, r23.xyzx, r19.xxxx, r24.xyzx - mul r24.xyz, r18.xxxx, cb3[r17.z + 6].xyzx - mul r19.xyw, r19.yyyy, r24.xyxz - mul r19.xyw, r17.xxxx, r19.xyxw - mul r19.xyw, r19.xyxw, r23.xyxz - else - mov r19.xyw, l(0,0,0,0) - endif - else - if_z r17.y - mad r17.x, cb3[r15.w + 6].y, l(0.500000), l(0.500000) - add r23.x, r17.x, -|cb3[r15.w + 6].x| - add r23.y, -r23.x, cb3[r15.w + 6].y - add r17.x, -|r23.x|, l(1.000000) - add r17.x, -|r23.y|, r17.x - max r17.x, r17.x, l(0.000488281250) - ge r17.y, cb3[r15.w + 6].x, l(0.000000) - movc r23.z, r17.y, r17.x, -r17.x - dp3 r17.x, r23.xyzx, r23.xyzx - rsq r17.x, r17.x - mul r23.xyz, r17.xxxx, r23.xyzx - add r24.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx - dp3 r17.x, r24.xyzx, r24.xyzx - rsq r17.y, r17.x - mul r25.xyz, r17.yyyy, r24.xyzx - ftoi r17.y, cb3[r18.z + 6].w - mul r18.xzw, r23.xxyz, cb3[r15.w + 6].zzzz - mad r26.xyz, -r18.xzwx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - mad r18.xzw, r18.xxzw, l(0.500000, 0.000000, 0.500000, 0.500000), r24.xxyz - ftou r17.z, cb3[r17.z + 6].w - and r17.z, r17.z, l(1) - ieq r20.w, r17.z, l(0) - not r20.w, r20.w - lt r21.w, l(0.000000), cb3[r15.w + 6].z - and r20.w, r20.w, r21.w - dp3 r21.w, r26.xyzx, r26.xyzx - sqrt r21.w, r21.w - dp3 r22.z, r18.xzwx, r18.xzwx - sqrt r22.z, r22.z - dp3 r18.x, r26.xyzx, r18.xzwx - mad r18.x, r21.w, r22.z, r18.x - mad r18.x, r18.x, l(0.500000), l(1.000000) - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x - movc r18.x, r20.w, r18.x, l(1.000000) - lt r18.z, cb3[r22.w + 6].w, l(0.000000) - if_nz r18.z - mul r18.z, cb3[r22.x + 6].w, cb3[r22.x + 6].w - mul r18.z, r17.x, r18.z - mad r18.z, -r18.z, r18.z, l(1.000000) - max r18.z, r18.z, l(0.000000) - add r17.x, r17.x, l(1.000000) - div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x - and r18.w, r20.w, l(0x3f800000) - add r21.w, -r17.x, r18.x - mad r17.x, r18.w, r21.w, r17.x - mul r18.z, r18.z, r18.z - mul r17.x, r17.x, r18.z - else - mul r26.xyz, r24.xyzx, cb3[r22.x + 6].wwww - dp3 r18.z, r26.xyzx, r26.xyzx - min r18.z, r18.z, l(1.000000) - add r18.z, -r18.z, l(1.000000) - log r18.z, r18.z - mul r18.z, r18.z, cb3[r22.w + 6].w - exp r18.z, r18.z - mul r17.x, r18.z, r18.x - endif - dp3 r18.x, r25.xyzx, -r23.xyzx - add r18.x, r18.x, -cb3[r15.w + 6].z - mul_sat r18.x, r18.x, cb3[r15.w + 6].w - mul r18.x, r18.x, r18.x - movc r18.x, r17.z, l(1.000000), r18.x - mul r17.x, r17.x, r18.x - not r18.x, r20.w - ige r18.z, r17.y, l(0) - and r18.x, r18.z, r18.x - if_nz r18.x - if_z r17.z - ishl r18.x, r17.y, l(2) - mul r23.xyz, r5.yyyy, cb5[r18.x + 33].xywx - mad r23.xyz, cb5[r18.x + 32].xywx, r5.xxxx, r23.xyzx - mad r23.xyz, cb5[r18.x + 34].xywx, r5.zzzz, r23.xyzx - add r18.xzw, r23.xxyz, cb5[r18.x + 35].xxyw - div_sat r18.xz, r18.xxzx, r18.wwww - mad r18.xz, r18.xxzx, cb5[r17.y + 0].zzwz, cb5[r17.y + 0].xxyx - else - ishl r18.w, r17.y, l(2) - dp3 r23.x, -r24.xyzx, cb5[r18.w + 32].xyzx - dp3 r23.y, -r24.xyzx, cb5[r18.w + 33].xyzx - dp3 r23.z, -r24.xyzx, cb5[r18.w + 34].xyzx - lt r18.w, |r23.x|, |r23.y| - and r18.w, r18.w, l(1) - dp2 r20.w, |r23.xyxx|, icb[r18.w + 0].xyxx - lt r20.w, r20.w, |r23.z| - movc r18.w, r20.w, l(2), r18.w - dp3 r20.w, r23.xyzx, icb[r18.w + 0].xyzx - lt r20.w, r20.w, l(0.000000) - bfi r18.w, l(31), l(1), r18.w, r20.w - ushr r20.w, r18.w, l(1) - dp3 r20.w, r23.xyzx, icb[r20.w + 0].xyzx - div r21.w, l(0.000244140625), cb5[r17.y + 0].w - add r21.w, -r21.w, l(0.500000) - utof r22.z, r18.w - ult r22.w, r18.w, l(2) - and r22.w, r22.w, l(2) - dp2 r22.w, r23.xzxx, icb[r22.w + 0].xzxx - mul r22.w, r22.w, icb[r18.w + 4].z - div r22.w, r22.w, |r20.w| - mad r22.z, r22.w, r21.w, r22.z - add r22.z, r22.z, l(0.500000) - mul_sat r24.x, r22.z, l(0.166666672) - iadd r22.z, l(-1), icb[r18.w + 4].y - dp2 r22.z, r23.yzyy, icb[r22.z + 0].xyxx - mul r18.w, r22.z, icb[r18.w + 4].w - div r18.w, r18.w, |r20.w| - mad_sat r24.y, -r18.w, r21.w, l(0.500000) - mad r18.xz, r24.xxyx, cb5[r17.y + 0].zzwz, cb5[r17.y + 0].xxyx - endif - sample_l_indexable(texture2d)(float,float,float,float) r17.y, r18.xzxx, t11.yxzw, s1, l(0.000000) - mul r17.x, r17.y, r17.x - endif - lt r17.x, l(0.000000), r17.x - if_nz r17.x - if_z r17.z - ftoi r17.x, cb3[r22.y + 6].x - else - add r18.xzw, r5.xxyz, -cb3[r22.x + 6].xxyz - lt r22.xzw, |r18.zzww|, |r18.xxxz| - and r17.y, r22.z, r22.x - lt r18.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xxzw - ushr r17.z, cb3[r15.w + 6].w, l(24) - ubfe r22.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r15.w + 6].wwww - movc r17.z, r18.x, r17.z, r22.x - and r15.w, l(255), cb3[r15.w + 6].w - movc r15.w, r18.z, r22.z, r15.w - ubfe r18.x, l(8), l(8), cb3[r22.y + 6].x - and r18.z, l(255), cb3[r22.y + 6].x - movc r18.x, r18.w, r18.x, r18.z - movc r15.w, r22.w, r15.w, r18.x - movc r15.w, r17.y, r17.z, r15.w - ilt r17.y, r15.w, l(80) - movc r17.x, r17.y, r15.w, l(-1) - endif - ishl r15.w, r17.x, l(2) - mad r18.xzw, r25.xxyz, cb4[r17.x + 288].xxxx, r5.xxyz - mul r17.y, l(5.000000), cb4[r17.x + 288].y - mad r18.xzw, r3.xxyz, r17.yyyy, r18.xxzw - mul r22.xyzw, r18.zzzz, cb4[r15.w + 65].xyzw - mad r22.xyzw, cb4[r15.w + 64].xyzw, r18.xxxx, r22.xyzw - mad r22.xyzw, cb4[r15.w + 66].xyzw, r18.wwww, r22.xyzw - add r22.xyzw, r22.xyzw, cb4[r15.w + 67].xyzw - div r18.xzw, r22.xxyz, r22.wwww - ge r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xzwx - ge r23.xyz, r18.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r17.yz, -cb4[r17.x + 344].xxyx, cb4[r17.x + 344].zzwz - mad r17.yz, r18.xxzx, r17.yyzy, cb4[r17.x + 344].xxyx - mad r18.xz, r17.yyzy, cb4[400].zzwz, l(0.500000, 0.000000, 0.500000, 0.000000) - round_ni r18.xz, r18.xxzx - mad r17.yz, r17.yyzy, cb4[400].zzwz, -r18.xxzx - add r24.xyzw, r17.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r25.xyzw, r24.xxzz, r24.xxzz - add r24.xz, -r17.yyzy, l(1.000000, 0.000000, 1.000000, 0.000000) - min r26.xy, r17.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r26.zw, r17.yyyz, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r27.xy, r24.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r26.zw, -r26.zzzw, r26.zzzw, r24.yyyw - add r26.zw, r26.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r28.xy, r26.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r25.xz, r25.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r17.yz, r25.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r17.yyzy - mul r29.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r17.yz, -r26.xxyx, r26.xxyx, r24.xxzx - add r17.yz, r17.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r26.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r17.yz, r24.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r29.z, r26.x - mov r29.w, r17.y - mov r27.z, r28.x - mov r27.w, r25.x - add r24.xyzw, r27.zwxz, r29.zwxz - mov r26.z, r29.y - mov r26.w, r17.z - mov r28.z, r27.y - mov r28.w, r25.z - add r25.xyz, r26.zywz, r28.zywz - div r26.xyz, r27.xzwx, r24.zwyz - add r26.xyz, r26.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r26.xyz, r26.yxzy, cb4[400].xxxx - div r27.xyz, r28.zywz, r25.xyzx - add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r27.xyz, r27.xyzx, cb4[400].yyyy - mov r26.w, r27.x - mad r28.xyzw, r18.xzxz, cb4[400].xyxy, r26.ywxw - mad r17.yz, r18.xxzx, cb4[400].xxyx, r26.zzwz - mov r27.w, r26.y - mov r26.yw, r27.yyyz - mad r29.xyzw, r18.xzxz, cb4[400].xyxy, r26.xyzy - mad r27.xyzw, r18.xzxz, cb4[400].xyxy, r27.wywz - mad r26.xyzw, r18.xzxz, cb4[400].xyxy, r26.xwzw - mul r30.xyzw, r24.zwyz, r25.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r28.xyxx, t6.xxxx, s4, r18.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.zwzz, t6.xxxx, s4, r18.w - mul r18.x, r18.x, r30.y - mad r15.w, r30.x, r15.w, r18.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r17.yzyy, t6.xxxx, s4, r18.w - mad r15.w, r30.z, r17.y, r15.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r27.xyxx, t6.xxxx, s4, r18.w - mad r15.w, r30.w, r17.y, r15.w - mul r28.xyzw, r24.xyzw, r25.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r29.xyxx, t6.xxxx, s4, r18.w - mad r15.w, r28.x, r17.y, r15.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r29.zwzz, t6.xxxx, s4, r18.w - mad r15.w, r28.y, r17.y, r15.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r27.zwzz, t6.xxxx, s4, r18.w - mad r15.w, r28.z, r17.y, r15.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r26.xyxx, t6.xxxx, s4, r18.w - mad r15.w, r28.w, r17.y, r15.w - ige r17.y, r17.x, l(0) - or r22.xyz, r22.xyzx, r23.xyzx - or r17.z, r22.y, r22.x - or r17.z, r22.z, r17.z - and r18.x, r18.w, l(0x7fffffff) - ult r18.x, l(0x7f800000), r18.x - or r17.z, r17.z, r18.x - mul r18.x, r24.y, r25.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r26.zwzz, t6.xxxx, s4, r18.w - mad r15.w, r18.x, r18.z, r15.w - add r15.w, r15.w, l(-1.000000) - mad r15.w, cb4[r17.x + 288].w, r15.w, l(1.000000) - movc r15.w, r17.z, l(1.000000), r15.w - movc r15.w, r17.y, r15.w, l(1.000000) - else - mov r15.w, l(1.000000) - endif - else - mov r15.w, l(1.000000) - endif - mul r11.w, r11.w, r15.w - mov r19.xyw, l(0,0,0,0) - endif - add r21.xyz, r19.xywx, r21.xyzx - mov r14.w, r16.w - endloop - mov r8.w, r11.w - add r20.xyz, r20.xyzx, r21.xyzx - iadd r9.w, r9.w, l(1) -endloop -mad r6.xyz, r20.xyzx, r8.wwww, r13.xzwx -ne r4.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy -if_nz r4.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - add r1.x, r0.z, r12.x - mad r2.z, r10.w, l(-16.000000), l(-1.000000) - exp r2.z, r2.z - log r1.x, |r1.x| - mul r1.x, r1.x, r2.z - exp r1.x, r1.x - add r1.x, r0.z, r1.x - add r1.x, r1.x, l(-1.000000) - mov_sat r10.xyz, r1.xxxx - mad r13.xyz, r11.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r13.xyz, r0.zzzz, r13.xyzx - mad r13.xyz, r11.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r13.xyzx - add r13.xyz, r13.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r13.xyz, r0.zzzz, r13.xyzx - mad r13.xyz, r11.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r13.xyzx - add r13.xyz, r13.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r13.xyz, r0.zzzz, r13.xyzx - max r13.xyz, r0.zzzz, r13.xyzx -else - mov r10.xyz, r1.yyyy - mov r13.xyz, r1.yyyy -endif -mad r15.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[212].x -mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx -dp2 r0.z, r1.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx -mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r16.xyz, r15.xzyx, -r16.xyzx -max r0.z, |r16.y|, |r16.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.x, |r16.z|, l(-208.000000) -mul_sat r1.x, r1.x, l(0.031250) -max r0.z, r0.z, r1.x -ne r1.x, l(0.000000), cb0[210].w -lt r1.y, r0.z, l(1.000000) -and r1.x, r1.y, r1.x -if_nz r1.x - mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r16.xyz, r15.xzyx, -r16.xyzx - max r1.x, |r16.y|, |r16.x| - add r1.x, r1.x, l(-29.000000) - add r1.y, |r16.z|, l(-13.000000) - mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) - max r1.x, r1.y, r1.x - lt r1.y, r1.x, l(1.000000) - if_nz r1.y - mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r16.xyzx, cb0[211].xyzx - round_ni r17.xyz, r17.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t15.yzwx, s2, l(0.000000) - add r1.y, -r1.x, l(1.000000) - mul r2.z, l(0.500000), cb0[211].y - mad r4.z, -cb0[211].y, l(0.500000), l(1.000000) - max r2.z, r2.z, r16.y - min r2.z, r4.z, r2.z - mul r16.w, r2.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t16.xyzw, s1, l(0.000000) - mad r2.z, r18.w, r1.y, r0.z - add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t16.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r17.yyyy, r19.xyzx - mov r19.w, r17.y - mul r19.xyzw, r1.yyyy, r19.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t16.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r17.xxxx, r16.xyzx - mov r16.w, r17.x - mul r16.xyzw, r1.yyyy, r16.xyzw - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r17.wwww, r18.xyzx - mul r17.xyzw, r1.yyyy, r17.xyzw - else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r2.z, r0.z - endif - mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r18.xyz, r15.xzyx, -r18.xyzx - max r1.y, |r18.y|, |r18.x| - add r1.y, r1.y, l(-116.000000) - mul_sat r1.y, r1.y, l(0.125000) - add r4.z, |r18.z|, l(-52.000000) - mul_sat r4.z, r4.z, l(0.125000) - max r1.y, r1.y, r4.z - lt r4.z, r1.y, l(1.000000) - if_nz r4.z - mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r20.xyz, r18.xyzx, cb0[211].xyzx - round_ni r20.xyz, r20.xyzx - mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t17.yzwx, s2, l(0.000000) - add r4.z, -r1.y, l(1.000000) - mul r1.x, r1.x, r4.z - mul r4.z, l(0.500000), cb0[211].y - mad r6.w, -cb0[211].y, l(0.500000), l(1.000000) - max r4.z, r4.z, r18.y - min r4.z, r6.w, r4.z - mul r18.w, r4.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t18.xyzw, s1, l(0.000000) - mad r2.z, r21.w, r1.x, r2.z - add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t18.xyzw, s1, l(0.000000) - mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r20.yyyy, r22.xyzx - mov r22.w, r20.y - mad r19.xyzw, r22.xyzw, r1.xxxx, r19.xyzw - add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r20.xxxx, r18.xyzx - mov r18.w, r20.x - mad r16.xyzw, r18.xyzw, r1.xxxx, r16.xyzw - mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r18.xyzx - mad r17.xyzw, r20.xyzw, r1.xxxx, r17.xyzw - endif - lt r1.x, l(0.000000), r1.y - if_nz r1.x - mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r15.xyzx, cb0[211].xyzx - mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r18.xyzx - mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r15.xyz, r20.xyzx, r15.xyzx - min r15.xyz, r18.xyzx, r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t19.yzwx, s2, l(0.000000) - add r1.x, -r0.z, l(1.000000) - mul r1.x, r1.x, r1.y - max r1.y, r20.y, r15.y - min r1.y, r18.y, r1.y - mul r15.w, r1.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t20.xyzw, s1, l(0.000000) - add r20.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t20.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r21.yyyy, r20.xyzx - mov r20.w, r21.y - mad r19.xyzw, r20.xyzw, r1.xxxx, r19.xyzw - add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t20.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r21.xxxx, r15.xyzx - mov r15.w, r21.x - mad r16.xyzw, r15.xyzw, r1.xxxx, r16.xyzw - mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r15.xyzx - mad r17.xyzw, r21.xyzw, r1.xxxx, r17.xyzw - mad r2.z, r18.w, r1.x, r2.z - endif - mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) - add r15.x, -r0.z, r1.x - add r0.z, r0.z, r1.x - mul r15.y, r0.z, l(0.500000) -else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r15.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r15.yxyy, cb0[213].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r1.xy, r15.yxyy, cb0[213].wyww -mad r18.x, r1.y, l(0.375000), r1.x -add r17.xyzw, r17.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[214].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r1.xy, r15.yxyy, cb0[214].wyww -mad r18.x, r1.y, l(0.375000), r1.x -add r16.xyzw, r16.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[215].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r1.xy, r15.yxyy, cb0[215].wyww -mad r18.x, r1.y, l(0.375000), r1.x -add r15.xyzw, r18.wyzx, r19.xyzw -ge r1.xy, r4.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r1.y, r1.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.xyxx, t14.xyzw, s1, l(0.000000) - lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| - or r1.xy, r19.zwzz, r19.xyxx - or r0.z, r1.y, r1.x - if_nz r0.z - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mov r1.x, l(1.000000) - mov r1.y, r0.z - mov r2.z, l(0) - loop - ge r4.x, l(4.600000), r1.y - breakc_nz r4.x - iadd r4.x, r2.z, l(1) - mul r4.yz, r1.xxyx, l(0.000000, 0.500000, 0.500000, 0.000000) - mov r1.xy, r4.yzyy - mov r2.z, r4.x - continue - endloop - mul r18.xyzw, r1.xxxx, r18.xyzw - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb6[3].x, cb6[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r1.x, r0.z, l(0.00390625000) - mov r1.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t13.xyzw, s1, l(0.000000) - mad r1.xy, r1.xyxx, cb6[2].xyxx, cb6[2].zwzz - mul r19.x, r1.x, l(3.54490781) - mul r19.yzw, r1.yyyy, r18.yyzw - mul r0.z, r18.x, l(0.406976730) - exp r0.z, r0.z - mul r18.xyzw, r0.zzzz, r19.xyzw - mov r19.xyzw, r18.xyzw - mov r0.z, l(0) - loop - uge r1.x, r0.z, r2.z - breakc_nz r1.x - mul r20.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r1.x, r20.xyzw, r19.xyzw - dp2 r1.y, r20.yxyy, r19.xyxx - dp2 r4.x, r20.zxzz, r19.xzxx - dp2 r4.y, r20.wxww, r19.xwxx - iadd r4.z, r0.z, l(1) - mov r19.xy, r1.xyxx - mov r19.zw, r4.xxxy - mov r0.z, r4.z - continue - endloop - mul r18.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r19.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r18.xyzw, r19.xyzw - dp2 r1.x, r18.yxyy, r19.xyxx - dp2 r1.y, r18.zxzz, r19.xzxx - dp2 r2.z, r18.wxww, r19.xwxx - mul r19.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r4.x, r18.xyzw, r19.xyzw - dp2 r4.y, r18.yxyy, r19.xyxx - dp2 r4.z, r18.zxzz, r19.xzxx - dp2 r6.w, r18.wxww, r19.xwxx - mul r19.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r7.w, r18.xyzw, r19.xyzw - dp2 r8.w, r18.yxyy, r19.xyxx - dp2 r9.w, r18.zxzz, r19.xzxx - dp2 r11.w, r18.wxww, r19.xwxx - mul r17.w, r0.z, l(0.886226952) - mul r17.x, r2.z, l(-1.02332675) - mul r17.yz, r1.xxyx, l(0.000000, -1.02332675, 1.02332675, 0.000000) - mul r16.x, r6.w, l(-1.02332675) - mul r16.yzw, r4.yyzx, l(0.000000, -1.02332675, 1.02332675, 0.886226952) - mul r15.w, r7.w, l(0.886226952) - mul r15.x, r11.w, l(-1.02332675) - mul r15.y, r8.w, l(-1.02332675) - mul r15.z, r9.w, l(1.02332675) - endif -endif -dp3 r0.z, r17.xyzx, r3.xyzx -add r0.z, r17.w, r0.z -max r4.x, r0.z, l(0.000000) -dp3 r0.z, r16.xyzx, r3.xyzx -add r0.z, r16.w, r0.z -max r4.y, r0.z, l(0.000000) -dp3 r0.z, r15.xyzx, r3.xyzx -add r0.z, r15.w, r0.z -max r4.z, r0.z, l(0.000000) -add r0.z, l(-1.000000), cb0[113].x -max r1.x, r10.w, l(0.001000) -log r1.x, r1.x -mad r1.x, -r1.x, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.x -mul r1.xy, r2.xyxx, cb1[0].wwww -round_ni r1.xy, r1.xyxx -add r2.z, |r1.w|, -cb1[2].y -round_ni r2.z, r2.z -add r6.w, l(-1.000000), cb1[1].x -max r7.w, r2.z, l(0.000000) -min r6.w, r6.w, r7.w -ge r2.z, r6.w, r2.z -mad r1.x, r1.y, cb1[0].x, r1.x -ftoi r1.x, r1.x -iadd r1.x, r1.x, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx -ftoi r1.y, r6.w -iadd r1.y, r1.y, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx -and r1.x, r1.y, r1.x -and r1.x, r1.x, r2.z -mul r15.xyz, r4.xyzx, cb0[111].xxxx -dp3 r1.y, r15.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r5.w, l(1.000000) -mov r3.w, l(1.000000) -mov r15.xyz, l(0,0,0,0) -mov r2.z, l(1.000000) -mov r6.w, r1.x -mov r7.w, l(0) -loop - lt r8.w, l(0.010000), r2.z - ine r9.w, r6.w, l(0) - and r9.w, r8.w, r9.w - if_nz r9.w - firstbit_lo r9.w, r6.w - ishl r10.w, l(1), r9.w - xor r6.w, r6.w, r10.w - ishl r9.w, r9.w, l(3) - dp4 r16.x, cb1[r9.w + 6].xyzw, r5.xyzw - dp4 r16.y, cb1[r9.w + 7].xyzw, r5.xyzw - dp4 r16.z, cb1[r9.w + 8].xyzw, r5.xyzw - ge r17.xyz, cb1[r9.w + 5].xyzx, |r16.xyzx| - and r10.w, r17.y, r17.x - and r10.w, r17.z, r10.w - if_nz r10.w - mul r10.w, l(0.100000), cb1[r9.w + 5].x - mul r17.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r17.xy, r17.xyxx, r17.xyxx - add r18.xyz, -|r16.xyzx|, cb1[r9.w + 5].xyzx - mul r18.xyz, r18.xyzx, cb1[r9.w + 9].xyzx - eq r11.w, l(1.000000), cb1[r9.w + 10].x - if_nz r11.w - dp3 r19.x, cb1[r9.w + 6].xyzx, r14.xyzx - dp3 r19.y, cb1[r9.w + 7].xyzx, r14.xyzx - dp3 r19.z, cb1[r9.w + 8].xyzx, r14.xyzx - add r20.xyz, -r16.xyzx, cb1[r9.w + 5].xyzx - div r20.xyz, r20.xyzx, r19.xyzx - add r21.xyz, -r16.xyzx, -cb1[r9.w + 5].xyzx - div r21.xyz, r21.xyzx, r19.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx - min r11.w, r20.y, r20.x - min r11.w, r20.z, r11.w - mad r16.xyz, r19.xyzx, r11.wwww, r16.xyzx - else - mov r16.xyz, r14.xyzx - endif - dp3 r11.w, r16.xyzx, r16.xyzx - rsq r11.w, r11.w - mul r16.xyz, r11.wwww, r16.xyzx - lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - lt r20.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r19.xyz, -r19.xyzx, r20.xyzx - itof r19.xyz, r19.xyzx - dp3 r11.w, r16.xyzx, r19.xyzx - div r16.xyz, r16.xyzx, r11.wwww - lt r11.w, r16.z, l(0.000000) - add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r16.zw, r16.zzzw, r19.xxxy - movc r16.xy, r11.wwww, r16.zwzz, r16.xyxx - dp4 r11.w, cb1[r9.w + 4].xyzw, r3.xyzw - max r11.w, r11.w, l(0.000000) - max r11.w, r11.w, l(0.000100) - min r12.x, r18.z, r18.y - min r12.x, r12.x, r18.x - add r13.w, r17.y, r17.x - mad r13.w, r17.z, r17.z, r13.w - mad r10.w, r10.w, r10.w, -r13.w - mul r10.w, r10.w, cb1[r9.w + 9].x - mul r10.w, r10.w, cb1[r9.w + 9].x - add r13.w, l(1.000000), -cb1[r9.w + 10].y - mul r10.w, r10.w, r13.w - mul r10.w, r10.w, l(100.000000) - mad_sat r10.w, r12.x, cb1[r9.w + 10].y, r10.w - mul r12.x, r10.w, cb1[r9.w + 10].w - mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww - mov r16.z, cb1[r9.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z - mul r16.xyz, r16.xyzx, cb1[r9.w + 9].wwww - div r13.w, r1.y, r11.w - min r13.w, |r13.w|, l(1.000000) - mad r13.w, r13.w, l(2.000000), r1.y - add r11.w, r11.w, l(2.000000) - div r11.w, r13.w, r11.w - add r11.w, r11.w, l(-1.000000) - mad r11.w, r11.w, cb0[112].w, l(1.000000) - mul r16.xyz, r11.wwww, r16.xyzx - mul r16.xyz, r12.xxxx, r16.xyzx - mad r15.xyz, r16.xyzx, r2.zzzz, r15.xyzx - mad r9.w, -r10.w, cb1[r9.w + 10].w, l(1.000000) - mul r2.z, r2.z, r9.w - endif - mov r7.w, l(-1) - continue - else - mov r7.w, r8.w - break - endif - mov r7.w, r8.w -endloop -if_nz r7.w - dp3 r1.x, r14.xyzx, r14.xyzx - rsq r1.x, r1.x - mul r5.xzw, r1.xxxx, r14.xxyz - lt r14.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r5.xzwx - lt r16.xyz, r5.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r14.xyz, -r14.xyzx, r16.xyzx - itof r14.xyz, r14.xyzx - dp3 r1.x, r5.xzwx, r14.xyzx - div r5.xzw, r5.xxzw, r1.xxxx - lt r1.x, r5.w, l(0.000000) - add r14.zw, -|r5.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r14.xy, r14.zwzz, r14.xyxx - movc r5.xz, r1.xxxx, r14.xxyx, r5.xxzx - mov r3.w, l(1.000000) - dp4 r1.x, cb1[3].xyzw, r3.xyzw - max r1.x, r1.x, l(0.000000) - max r1.x, r1.x, l(0.000100) - mad r3.xy, r5.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r3.xy, r3.xyxx, cb1[1].wwww, cb1[2].wwww - mov r3.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s3, r0.z - div r0.z, r1.y, r1.x - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r1.y - add r1.x, r1.x, l(2.000000) - div r0.z, r0.z, r1.x - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r3.xyz, r0.zzzz, r3.xyzx - mad r15.xyz, r3.xyzx, r2.zzzz, r15.xyzx -endif -mul r3.xyz, r15.xyzx, cb0[112].zzzz -mul r3.xyz, r3.xyzx, cb0[111].yyyy -if_nz r4.w - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x - add r1.x, -r0.z, l(1.000000) - mul r14.xyz, r1.xxxx, r3.xyzx - mad r3.xyz, r5.xzwx, r0.zzzz, r14.xyzx -endif -mul r4.xyz, r11.xyzx, r4.xyzx -mul r4.xyz, r4.xyzx, cb0[111].xxxx -add r0.z, -r1.z, l(1.000000) -div r0.z, r0.z, r1.z -mul r1.xyz, r0.zzzz, r9.xyzx -mad r1.xyz, r1.xyzx, r12.yzwy, r12.yzwy -mul r1.xyz, r1.xyzx, r3.xyzx -mul r1.xyz, r10.xyzx, r1.xyzx -mad r1.xyz, r4.xyzx, r13.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r6.xyzx -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r2.z, r2.w, cb0[154].w, -cb0[153].w -max r2.z, r2.z, l(0.000000) -mul r3.x, r0.z, l(-1.442695) -exp r3.x, r3.x -add r3.x, -r3.x, l(1.000000) -div r0.z, r3.x, r0.z -mad r3.x, r5.y, cb0[156].w, cb0[158].w -mul r3.x, r3.x, l(1.442695) -exp r3.x, r3.x -mul r0.z, r0.z, r3.x -mul r0.z, r0.z, -r2.z -mul r3.xyz, r0.zzzz, cb0[155].xyzx -mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r3.xyz, r3.xyzx -dp3 r0.z, -r8.xyzx, cb0[154].xyzx -mad r2.z, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r3.w, r0.zzzz, cb0[155].wwww -add r2.z, r2.z, -r3.w -lt r3.w, l(0.000000), cb0[163].z -if_nz r3.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r4.x, r0.y, r0.w, r0.x - dp3 r0.x, -r8.xyzx, -r7.xyzx - add r3.w, r5.y, -cb0[44].y - lt r4.z, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r4.z - mul r0.x, r0.x, cb0[163].w - div r4.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w - mul r4.w, r0.x, r4.z - mad r5.x, r4.w, r3.w, cb0[44].y - mad r3.w, -r4.w, r3.w, r3.w - mul r4.w, r3.w, cb0[159].z - max r4.w, r4.w, l(-127.000000) - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - add r5.z, r5.x, -cb0[159].x - mul r5.z, r5.z, cb0[159].z - max r5.z, r5.z, l(-127.000000) - exp r5.z, -r5.z - mul r5.z, r5.z, cb0[159].y - lt r5.w, l(5.960464478E-08), |r4.w| - exp r6.x, -r4.w - add r6.x, -r6.x, l(1.000000) - div r6.x, r6.x, r4.w - mad r4.w, -r4.w, l(0.240226507), l(0.693147182) - movc r4.w, r5.w, r6.x, r4.w - add r5.x, r5.x, -cb0[162].z - mul r5.x, r5.x, cb0[162].x - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[162].y - lt r5.w, l(5.960464478E-08), |r3.w| - exp r6.x, -r3.w - add r6.x, -r6.x, l(1.000000) - div r6.x, r6.x, r3.w - mad r3.w, -r3.w, l(0.240226507), l(0.693147182) - movc r3.w, r5.w, r6.x, r3.w - mul r3.w, r3.w, r5.x - mad r3.w, r5.z, r4.w, r3.w - mad r0.x, -r0.x, r4.z, l(1.000000) - mul r0.x, r2.w, r0.x - mul r0.x, r0.x, r3.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r4.zw, r2.wwww, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r4.z - add r0.x, r4.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r4.y, r0.w, r4.x, r0.y - ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r2.xxxy - mul r4.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r1.w|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r4.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t12.xyzw, s1, l(0.000000) - add r0.y, |r1.w|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r4.xyzw, r0.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r5.xzw, r0.yyyy, cb0[161].xxyz - mad r4.xyz, r5.xzwx, r4.wwww, r4.xyzx - mul r0.x, r0.x, r4.w -else - add r0.y, r5.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r1.w, cb0[44].y, -cb0[159].x - mul r1.w, r1.w, cb0[159].z - max r1.w, r1.w, l(-127.000000) - exp r1.w, -r1.w - mul r1.w, r1.w, cb0[159].y - lt r2.x, l(5.960464478E-08), |r0.w| - exp r2.y, -r0.w - add r2.y, -r2.y, l(1.000000) - div r2.y, r2.y, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r2.x, r2.y, r0.w - add r2.x, cb0[44].y, -cb0[162].z - mul r2.x, r2.x, cb0[162].x - max r2.x, r2.x, l(-127.000000) - exp r2.x, -r2.x - mul r2.x, r2.x, cb0[162].y - lt r2.y, l(5.960464478E-08), |r0.y| - exp r3.w, -r0.y - add r3.w, -r3.w, l(1.000000) - div r3.w, r3.w, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r2.y, r3.w, r0.y - mul r0.y, r0.y, r2.x - mad r0.y, r1.w, r0.w, r0.y - mul r0.y, r2.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r2.xy, r2.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r2.x - add r0.y, r2.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r2.xyw, r0.xxxx, r3.xyxz -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r1.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r2.z, l(12.566371) -sqrt r2.z, r2.z -mul r2.z, r2.z, r3.w -max r2.z, r2.z, l(0.001000) -div r1.w, r1.w, r2.z -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r3.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r4.xyzx -mad o0.xyz, r1.xyzx, r2.xywx, r0.xyzx -dp3 o0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x37837806.cso b/src/games/endfield/deferred-lighting/0x37837806.cso index a4ba6bd372d7f7a6939cb945ff4fb6dd32114959..3f199cf489641c81e3431420cfadcca144967012 100644 GIT binary patch delta 184 zcmZ2-iE+tgMoE_lC+FJM&5Yfp{S(aoo%gRvogK)?z`(F%qU2)ECm9S30YHxB#G}EC z!kZ--uS=_%Gca&DF$gfQ0mZEv6c~7cv=9(8IxsN&2LdgS+~&73znNr#N_mTbTn?c0 zw|<0DHzuIifNDT?y75724v>7HqVy((EAEU!o3Ez(GjfOmt*`@P E0DosFn*aa+ delta 72 zcmZ2-nQ_S_MoE_lC+F31yNcv~Y*ugxvM`YO{lHXgNR zWE9@a$mCzGYRPzZFRU diff --git a/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm index cede03107d..5da009f1c7 100644 --- a/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm @@ -38,7 +38,7 @@ dcl_constantbuffer CB4[401], dynamicIndexed dcl_constantbuffer CB5[5], immediateIndexed dcl_constantbuffer CB6[160], dynamicIndexed dcl_constantbuffer CB7[4], immediateIndexed -dcl_constantbuffer CB13[13], immediateIndexed +dcl_constantbuffer CB13[19], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -1054,6 +1054,7 @@ loop endloop mad r1.xyz, r22.xyzx, r13.zzzz, r14.xyzx ne r11.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx +movc r11.x, cb13[18].w, l(0xFFFFFFFF), r11.x if_nz r11.x sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x mad r0.z, r0.z, l(0.750000), l(0.250000) @@ -1080,6 +1081,8 @@ else mov r11.xzw, r3.wwww mov r14.xyz, r3.wwww endif +movc r11.xzw, cb13[18].wwww, r11.xyzw, l(1.0, 0, 1.0, 1.0) +mul r1.xyz, r1.xyzx, r11.xzwx mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx add r17.xyz, r8.xzyx, -r17.xyzx max r0.z, |r17.y|, |r17.x| diff --git a/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0_original_backup.asm deleted file mode 100644 index a0c9c94724..0000000000 --- a/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0_original_backup.asm +++ /dev/null @@ -1,1678 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 23:54:24 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[5], immediateIndexed -dcl_constantbuffer CB6[160], dynamicIndexed -dcl_constantbuffer CB7[4], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_sampler s5, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture3d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture3d (float,float,float,float) t21 -dcl_resource_texture3d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_resource_texture2d (float,float,float,float) t25 -dcl_resource_texture2d (float,float,float,float) t26 -dcl_resource_texture3d (float,float,float,float) t27 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 38 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t24.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t25.xyzw -ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t26.xyzw -mul r1.xyzw, r1.xwyz, l(1023.000000, 3.000000, 1023.000000, 1023.000000) -ftou r1.xyw, r1.xyxw -ubfe r4.x, l(7), l(3), r1.x -bfi r4.yz, l(0, 3, 3, 0), l(0, 2, 2, 0), r1.xxwx, l(0, 0, 0, 0) -bfi r1.x, l(2), l(0), r1.y, r4.y -utof r1.x, r1.x -mul r1.y, r1.x, l(0.0322580636) -round_ne r1.z, r1.z -ftou r1.z, r1.z -ubfe r4.y, l(7), l(3), r1.z -utof r4.xy, r4.xyxx -mul r4.y, r4.y, l(0.00787401572) -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r4.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r5.y, -r4.w, l(1.000000) -lt r4.w, r5.y, l(0.000000) -ge r6.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r6.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r6.xy, r6.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r6.xy, r6.xyxx, r6.zwzz -movc r5.xz, r4.wwww, r6.xxyx, r2.xxyx -dp3 r2.x, r5.xyzx, r5.xyzx -rsq r2.x, r2.x -mul r6.xyz, r2.xxxx, r5.xyzx -and r1.z, r1.z, l(7) -utof r1.z, r1.z -mad r1.z, r1.z, l(0.107142866), l(0.500000) -utof r5.xz, r0.xxyx -mul r7.xy, v0.xyxx, cb0[82].zwzz -mad r7.zw, r7.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -add r8.xy, r5.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mul r8.xy, r8.xyxx, cb0[82].zwzz -sample_l_indexable(texture2d)(float,float,float,float) r2.y, r8.xyxx, t1.yxzw, s0, l(0.000000) -mul r8.xyzw, -r7.wwww, cb0[25].xyzw -mad r8.xyzw, cb0[24].xyzw, r7.zzzz, r8.xyzw -mad r8.xyzw, cb0[26].xyzw, r2.yyyy, r8.xyzw -add r8.xyzw, r8.xyzw, cb0[27].xyzw -div r8.xyz, r8.xyzx, r8.wwww -mul r2.y, r8.y, cb0[1].z -mad r2.y, cb0[0].z, r8.x, r2.y -mad r2.y, cb0[2].z, r8.z, r2.y -add r2.y, r2.y, cb0[3].z -eq r4.w, l(0.000000), cb0[86].w -add r9.xyz, -r8.xyzx, cb0[44].xyzx -mov r10.x, cb0[0].z -mov r10.y, cb0[1].z -mov r10.z, cb0[2].z -movc r11.xyz, r4.wwww, r9.xyzx, r10.xyzx -dp3 r4.w, r11.xyzx, r11.xyzx -max r5.w, r4.w, l(9.999999939E-09) -rsq r5.w, r5.w -mul r12.xyz, r5.wwww, r11.xyzx -mul r4.w, r4.w, r5.w -lt r7.z, l(0.000488281250), cb0[234].x -if_nz r7.z - sample_b_indexable(texture2d)(float,float,float,float) r7.z, v1.xyxx, t23.yzxw, s1, cb0[108].x -else - mov r7.z, l(1.000000) -endif -lt r13.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[226].xyxx -if_nz r13.x - add r7.w, |r6.y|, |r6.x| - add r7.w, |r6.z|, r7.w - div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w - mul r13.xzw, |r6.xxyz|, r7.wwww - mul r14.xyzw, r13.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) - add r14.xyz, r14.zwzz, r14.xxyx - mad r13.xzw, r13.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r14.xxyz - mul r14.xyz, r8.xyzx, cb0[229].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r7.w, r14.xyzx, t10.yzwx, s2, l(0.000000) - mad r7.w, r7.w, l(2.000000), l(-1.000000) - mul r13.xzw, r7.wwww, r13.xxzw - mov r7.w, |r6.y| - add r7.w, r7.w, l(-0.700000) - mul_sat r7.w, r7.w, l(4.000000) - mad r9.w, r7.w, l(-2.000000), l(3.000000) - mul r7.w, r7.w, r7.w - mul r7.w, r7.w, r9.w - add r9.w, -cb0[229].z, cb0[229].y - mad r7.w, r7.w, r9.w, cb0[229].z - mul r13.xzw, r7.wwww, r13.xxzw -else - mov r13.xzw, l(0,0,0,0) -endif -if_nz r13.y - mul r14.xyz, r6.xyzx, cb0[233].zzzz - mul r15.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy - mad r14.xyz, r14.xyzx, cb0[225].xxxx, r15.xyzx - max r7.w, -r6.y, l(0.000000) - min r7.w, r7.w, l(0.900000) - add r7.w, -r7.w, l(1.000000) - mad r2.x, -r5.y, r2.x, l(-0.200000) - mul_sat r2.x, r2.x, l(-10.000000) - mad r5.y, r2.x, l(-2.000000), l(3.000000) - mul r2.x, r2.x, r2.x - mul r2.x, r2.x, r5.y - max r2.x, r2.x, l(0.100000) - min r2.x, r2.x, l(1.000000) - mul r2.x, r2.x, r7.w - mad r14.xyz, r14.xyzx, r2.xxxx, r8.xyzx - add r13.xyz, r13.xzwx, r14.xyzx - mul r14.xyz, r13.yyyy, cb5[1].xyzx - mad r13.xyw, cb5[0].xyxz, r13.xxxx, r14.xyxz - mad r13.xyz, cb5[2].xyzx, r13.zzzz, r13.xywx - add r13.xyz, r13.xyzx, cb5[3].xyzx - mad r14.x, r13.x, l(0.500000), cb5[4].x - mad r2.x, r13.y, l(0.500000), l(0.500000) - add r14.z, -r2.x, cb5[4].y - add r13.xy, r14.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r2.x, r13.z, l(0.000488281250) - sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r13.xyxx, t9.xxxx, s5, r2.x -else - mov r2.x, l(1.000000) -endif -mov_sat r5.y, r6.y -add r7.w, l(1.000000), -cb0[230].w -mad r5.y, r5.y, r7.w, cb0[230].w -add r13.xy, r8.xzxx, -cb0[44].xzxx -max r7.w, |r13.y|, |r13.x| -mul r9.w, r5.y, cb0[230].z -mul r10.w, r2.x, r5.y -mul r11.w, l(0.0500000119), cb0[222].w -mad r12.w, -cb0[222].w, l(0.700000), r7.w -div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w -mul_sat r11.w, r11.w, r12.w -mad r12.w, r11.w, l(-2.000000), l(3.000000) -mul r11.w, r11.w, r11.w -mul r11.w, r11.w, r12.w -mad r2.x, -r5.y, r2.x, l(1.000000) -mad r2.x, r11.w, r2.x, r10.w -mad r5.y, -cb0[230].z, r5.y, l(1.000000) -mad r2.x, r2.x, r5.y, r9.w -mad r5.y, cb0[230].x, cb0[222].w, -cb0[222].w -add r7.w, r7.w, -cb0[222].w -div r5.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y -mul_sat r5.y, r5.y, r7.w -mad r7.w, r5.y, l(-2.000000), l(3.000000) -mul r5.y, r5.y, r5.y -mul r5.y, r5.y, r7.w -add r7.w, -r2.x, cb0[230].y -mad r2.x, r5.y, r7.w, r2.x -add r2.x, -r2.x, l(1.000000) -mad r2.x, -r7.z, r2.x, l(1.000000) -mad_sat r5.y, r2.z, l(0.300000), l(0.250000) -mul r5.y, r5.y, cb0[222].x -mul r5.y, r2.x, r5.y -mad r5.y, r5.y, l(-0.750000), l(1.000000) -mul r3.xyz, r3.xyzx, r5.yyyy -min r5.y, r2.z, l(0.300000) -mul r2.x, r2.x, cb0[222].x -mul r2.xw, r2.xxxw, l(0.500000, 0.000000, 0.000000, 3.000000) -add r5.y, -r2.z, r5.y -mad r13.w, r2.x, r5.y, r2.z -mul r2.x, r1.z, l(0.080000) -dp3 r2.z, r6.xyzx, r12.xyzx -max r5.y, r2.z, l(0.000000) -mad r14.xyzw, r13.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r7.z, r14.x, r14.x -mul r7.w, r5.y, l(-9.280000) -exp r7.w, r7.w -min r7.z, r7.w, r7.z -mad r7.z, r7.z, r14.x, r14.y -mad r7.zw, r7.zzzz, l(0.000000, 0.000000, -1.040000, 1.040000), r14.zzzw -ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t7.xyzw -lt r0.z, l(0.001000), r14.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r7.xyxx, t12.yzxw, s1, l(0.000000) - dp3 r9.w, -r12.xyzx, r6.xyzx - add r9.w, r9.w, r9.w - mad r15.xyz, r6.xyzx, -r9.wwww, -r12.xyzx - dp3 r9.w, -cb3[0].xyzx, r15.xyzx - mad r16.xyz, cb3[0].xyzx, r9.wwww, r15.xyzx - lt r9.w, r9.w, cb3[4].z - dp3 r10.w, r16.xyzx, r16.xyzx - max r10.w, r10.w, l(0.0000610351562) - rsq r10.w, r10.w - mul r16.xyz, r10.wwww, r16.xyzx - mul r16.xyz, r16.xyzx, cb3[4].yyyy - mad r16.xyz, -cb3[0].xyzx, cb3[4].zzzz, r16.xyzx - dp3 r10.w, r16.xyzx, r16.xyzx - rsq r10.w, r10.w - mul r16.xyz, r10.wwww, r16.xyzx - movc r15.xyz, r9.wwww, r16.xyzx, r15.xyzx - mad r16.xyz, r11.xyzx, r5.wwww, r15.xyzx - dp3 r9.w, r16.xyzx, r16.xyzx - max r9.w, r9.w, l(0.0000610351562) - rsq r9.w, r9.w - mul r16.xyz, r9.wwww, r16.xyzx - dp3 r9.w, r6.xyzx, r15.xyzx - mov_sat r13.y, r9.w - dp3_sat r10.w, r6.xyzx, r16.xyzx - dp3 r11.w, r12.xyzx, r15.xyzx - min r13.z, r5.y, l(1.000000) - mul r12.w, r13.w, r13.w - mul r12.w, r12.w, r12.w - mad r14.z, r10.w, r12.w, -r10.w - mad r10.w, r14.z, r10.w, l(1.000000) - dp3_sat r14.z, r12.xyzx, r16.xyzx - add r14.z, -r14.z, l(1.000000) - mul r14.w, r14.z, r14.z - mul r14.w, r14.w, r14.w - mul r15.x, r14.z, r14.w - add r15.y, -r13.w, l(1.000000) - mad r15.z, -r15.y, l(0.383026), l(-0.0761947036) - mad r15.z, r15.y, r15.z, l(1.049970) - mad r15.y, r15.y, r15.z, l(0.409255) - min r15.y, r15.y, l(0.999000) - add r15.z, -r15.y, l(1.000000) - mad r15.w, -r1.z, l(0.080000), l(1.000000) - mad r15.w, r15.w, l(0.0476190485), r2.x - mov_sat r16.x, -r11.w - mul r16.x, r16.x, r16.x - mad r16.x, r16.x, l(-0.640000), l(1.000000) - mul r16.x, r16.x, r16.x - mad r14.z, -r14.w, r14.z, l(1.000000) - mad r14.z, r2.x, r14.z, r15.x - mul r10.w, r10.w, r10.w - div r10.w, r12.w, r10.w - mad r16.yz, -r13.zzyz, r12.wwww, r13.zzyz - mad r16.yz, r16.yyzy, r13.zzyz, r12.wwww - sqrt r16.yz, r16.yyzy - mul r16.yz, r13.yyzy, r16.yyzy - add r12.w, r16.z, r16.y - add r12.w, r12.w, l(0.000100) - div r12.w, l(0.500000), r12.w - mul r10.w, r10.w, r12.w - mul r10.w, r10.w, r14.z - min r10.w, r10.w, l(2048.000000) - mad r17.xyzw, r13.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r12.w, r17.xyxx, t11.yzwx, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r13.z, r17.zwzz, t11.yzxw, s1, l(0.000000) - mul r12.w, r12.w, r13.z - mul r12.w, r15.y, r12.w - div r12.w, r12.w, r15.z - mul r13.z, r15.w, r15.w - mul r12.w, r12.w, r13.z - mad r13.z, -r15.w, r15.z, l(1.000000) - div r12.w, r12.w, r13.z - add r10.w, r10.w, r12.w - add_sat r12.w, r2.z, l(0.200000) - mov_sat r13.z, r11.w - add r13.z, r13.z, l(0.500000) - min r13.z, r13.z, l(1.000000) - mul r14.z, r12.w, r13.z - add_sat r11.w, r11.w, l(1.000000) - mad r12.w, -r12.w, r13.z, l(1.000000) - mad r11.w, r11.w, r12.w, r14.z - mul r10.w, r10.w, r11.w - mul r10.w, r4.y, r10.w - mul r15.xyz, r4.yyyy, r3.xyzx - ubfe r1.w, l(7), l(3), r1.w - utof r1.w, r1.w - mul r1.w, r1.w, l(0.00787401572) - mul r10.w, r10.w, cb3[4].x - max r10.w, r10.w, l(0.000000) - min r10.w, r10.w, l(1000.000000) - mul r10.w, r13.y, r10.w - mad r15.xyz, r15.xyzx, r1.wwww, r10.wwww - max r1.w, r3.y, r3.x - max r1.w, r3.z, r1.w - max r1.w, r1.w, l(0.010000) - div r16.yzw, r3.xxyz, r1.wwww - mul r1.w, r4.x, l(0.00393700786) - mul r16.yzw, r1.wwww, r16.yyzw - add_sat r1.w, -r9.w, l(0.500000) - ne r10.w, r16.x, l(0.360000) - div r11.w, l(0.360000), r16.x - movc r10.w, r10.w, r11.w, l(1.000000) - mul r1.w, r1.w, r10.w - mad_sat r9.w, r1.x, l(0.0322580636), r9.w - add r9.w, -r13.y, r9.w - mul r17.xyz, r3.xyzx, r9.wwww - mad r16.xyz, r16.yzwy, r1.wwww, r17.xyzx - mad r15.xyz, r16.xyzx, r4.yyyy, r15.xyzx - mul r15.xyz, r15.xyzx, cb3[1].xyzx - mov r14.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r14.yzw, r14.xyxx, t8.wxyz, s1, cb0[108].x - add r1.w, -r14.x, l(1.000000) - mad r14.xyz, r15.xyzx, r14.yzwy, -r15.xyzx - mad r14.xyz, r1.wwww, r14.xyzx, r15.xyzx - max r1.w, r4.y, r0.z - add r1.w, -r0.z, r1.w - mad r0.z, r1.y, r1.w, r0.z - mul r14.xyz, r0.zzzz, r14.xyzx -else - mov r14.xyz, l(0,0,0,0) -endif -mul r1.yw, r5.xxxz, l(0.000000, 0.031250, 0.000000, 0.031250) -round_ni r1.yw, r1.yyyw -mad r0.z, r1.w, cb2[1].y, r1.y -mul r0.z, r0.z, l(8.000000) -ftoi r0.z, r0.z -mad r1.y, -cb0[85].y, cb2[2].w, |r2.y| -round_ni r1.y, r1.y -add r1.w, l(-1.000000), cb2[1].w -max r9.w, r1.y, l(0.000000) -min r1.w, r1.w, r9.w -mul r9.w, r1.w, l(8.000000) -ftoi r9.w, r9.w -ge r1.y, r1.w, r1.y -iadd r1.w, r9.w, cb0[110].y -mul r9.w, r13.w, r13.w -dp3 r10.w, -r12.xyzx, r6.xyzx -add r10.w, r10.w, r10.w -mad r15.xyz, r6.xyzx, -r10.wwww, -r12.xyzx -min r13.x, r5.y, l(1.000000) -add r10.w, -r13.w, l(1.000000) -mad r11.w, -r10.w, l(0.383026), l(-0.0761947036) -mad r11.w, r10.w, r11.w, l(1.049970) -mad r10.w, r10.w, r11.w, l(0.409255) -min r10.w, r10.w, l(0.999000) -add r11.w, -r10.w, l(1.000000) -mad r1.z, -r1.z, l(0.080000), l(1.000000) -mad r1.z, r1.z, l(0.0476190485), r2.x -mad r13.yz, r13.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r12.w, r13.yzyy, t11.yzwx, s1, l(0.000000) -mad r13.y, -r1.z, r11.w, l(1.000000) -add_sat r2.z, r2.z, l(0.200000) -max r13.z, r3.y, r3.x -max r13.z, r3.z, r13.z -max r13.z, r13.z, l(0.010000) -div r16.xyz, r3.xyzx, r13.zzzz -mul r13.z, r4.x, l(0.00393700786) -mul r17.xyz, r13.zzzz, r16.xyzx -mul r18.xyz, r4.yyyy, r3.xyzx -mul r1.z, r1.z, r1.z -mov r19.w, l(1.000000) -mov r20.y, l(1.000000) -mov r21.z, r13.w -mov r22.xyz, l(0,0,0,0) -mov r13.z, l(1.000000) -mov r14.w, l(0) -loop - ilt r15.w, l(7), r14.w - breakc_nz r15.w - iadd r15.w, r0.z, r14.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r15.w, r15.w, l(0), t0.xxxx - iadd r16.w, r1.w, r14.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r16.w, r16.w, l(0), t0.xxxx - and r15.w, r15.w, r16.w - and r15.w, r1.y, r15.w - ishl r16.w, r14.w, l(5) - mov r23.xyz, l(0,0,0,0) - mov r17.w, r13.z - mov r18.w, r15.w - loop - breakc_z r18.w - firstbit_lo r20.z, r18.w - ishl r20.w, l(1), r20.z - xor r20.w, r18.w, r20.w - iadd r20.z, r16.w, r20.z - bfi r24.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r20.zzzz, l(1, 3, 5, 6) - bfi r21.w, l(29), l(3), r20.z, l(7) - ftou r22.w, cb3[r24.z + 6].w - ieq r22.w, r22.w, l(1) - if_nz r22.w - add r19.xyz, r8.xyzx, -cb3[r24.x + 6].xyzx - and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.z + 6].xzyx - and r26.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.w + 6].yxzy - ushr r27.xyz, cb3[r24.z + 6].xzyx, l(16, 16, 16, 0) - ushr r28.xyz, cb3[r24.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyz, r26.xyzx - f16tof32 r27.xyz, r27.xyzx - f16tof32 r28.xyw, r28.yxyz - mov r29.xz, r25.xxzx - mov r29.yw, r27.xxxz - dp4 r22.w, r19.xyzw, r29.xyzw - mov r27.x, r25.y - mov r27.z, r26.y - mov r27.w, r28.x - dp4 r23.w, r19.xyzw, r27.xyzw - mov r28.xz, r26.xxzx - dp4 r19.x, r19.xyzw, r28.xyzw - max r19.y, |r22.w|, |r23.w| - max r19.x, |r19.x|, r19.y - mad r19.y, cb3[r21.w + 6].x, l(0.500000), l(0.500000) - add r19.x, -r19.y, r19.x - mad r19.y, -cb3[r21.w + 6].x, l(0.500000), l(0.500000) - div_sat r19.x, r19.x, r19.y - add r19.x, -r19.x, l(1.000000) - mul r19.x, r19.x, r19.x - else - mov r19.x, l(1.000000) - endif - lt r19.y, l(0.500000), cb3[r24.y + 6].z - lt r19.z, r19.x, l(0.001000) - or r19.z, r19.y, r19.z - if_nz r19.z - mov r18.w, r20.w - continue - endif - ishl r19.z, r20.z, l(3) - bfi r20.z, l(29), l(3), r20.z, l(2) - lt r22.w, cb3[r19.z + 6].w, l(1.500000) - if_nz r22.w - mad r22.w, cb3[r20.z + 6].y, l(0.500000), l(0.500000) - add r25.x, r22.w, -|cb3[r20.z + 6].x| - add r25.y, -r25.x, cb3[r20.z + 6].y - add r22.w, -|r25.x|, l(1.000000) - add r22.w, -|r25.y|, r22.w - max r22.w, r22.w, l(0.000488281250) - ge r23.w, cb3[r20.z + 6].x, l(0.000000) - movc r25.z, r23.w, r22.w, -r22.w - dp3 r22.w, r25.xyzx, r25.xyzx - rsq r22.w, r22.w - mul r25.xyz, r22.wwww, r25.xyzx - add r26.xyz, -r8.xyzx, cb3[r24.x + 6].xyzx - dp3 r22.w, r26.xyzx, r26.xyzx - rsq r23.w, r22.w - mul r27.xyz, r23.wwww, r26.xyzx - ftoi r24.z, cb3[r21.w + 6].w - mul r28.xyz, r25.xyzx, cb3[r20.z + 6].zzzz - mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - mad r30.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - ftou r25.w, cb3[r19.z + 6].w - and r25.w, r25.w, l(1) - ieq r26.w, r25.w, l(0) - not r26.w, r26.w - lt r27.w, l(0.000000), cb3[r20.z + 6].z - and r26.w, r26.w, r27.w - dp3 r27.w, r29.xyzx, r29.xyzx - sqrt r27.w, r27.w - dp3 r28.w, r30.xyzx, r30.xyzx - sqrt r28.w, r28.w - dp3 r29.w, r6.xyzx, r29.xyzx - div r29.w, r29.w, r27.w - dp3 r30.w, r6.xyzx, r30.xyzx - div r30.w, r30.w, r28.w - add r29.w, r29.w, r30.w - mul_sat r31.x, r29.w, l(0.500000) - dp3 r29.w, r29.xyzx, r30.xyzx - mad r27.w, r27.w, r28.w, r29.w - mad r27.w, r27.w, l(0.500000), l(1.000000) - div r31.y, l(1.000000, 1.000000, 1.000000, 1.000000), r27.w - dp3_sat r20.x, r6.xyzx, r27.xyzx - movc r21.xy, r26.wwww, r31.xyxx, r20.xyxx - lt r20.x, cb3[r24.w + 6].w, l(0.000000) - if_nz r20.x - mul r20.x, cb3[r24.x + 6].w, cb3[r24.x + 6].w - mul r20.x, r20.x, r22.w - mad r20.x, -r20.x, r20.x, l(1.000000) - max r20.x, r20.x, l(0.000000) - add r22.w, r22.w, l(1.000000) - div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w - and r27.w, r26.w, l(0x3f800000) - add r28.w, r21.y, -r22.w - mad r22.w, r27.w, r28.w, r22.w - mul r20.x, r20.x, r20.x - mul r20.x, r20.x, r22.w - else - mul r30.xyz, r26.xyzx, cb3[r24.x + 6].wwww - dp3 r22.w, r30.xyzx, r30.xyzx - min r22.w, r22.w, l(1.000000) - add r22.w, -r22.w, l(1.000000) - log r22.w, r22.w - mul r22.w, r22.w, cb3[r24.w + 6].w - exp r22.w, r22.w - mul r20.x, r21.y, r22.w - endif - dp3 r21.y, r27.xyzx, -r25.xyzx - add r21.y, r21.y, -cb3[r20.z + 6].z - mul_sat r21.y, r21.y, cb3[r20.z + 6].w - mul r21.y, r21.y, r21.y - movc r21.y, r25.w, l(1.000000), r21.y - mul r20.x, r20.x, r21.y - not r21.y, r26.w - ige r22.w, r24.z, l(0) - and r21.y, r21.y, r22.w - if_nz r21.y - if_z r25.w - ishl r21.y, r24.z, l(2) - mul r25.xyz, r8.yyyy, cb6[r21.y + 33].xywx - mad r25.xyz, cb6[r21.y + 32].xywx, r8.xxxx, r25.xyzx - mad r25.xyz, cb6[r21.y + 34].xywx, r8.zzzz, r25.xyzx - add r25.xyz, r25.xyzx, cb6[r21.y + 35].xywx - div_sat r25.xy, r25.xyxx, r25.zzzz - mad r25.xy, r25.xyxx, cb6[r24.z + 0].zwzz, cb6[r24.z + 0].xyxx - else - ishl r21.y, r24.z, l(2) - dp3 r30.x, -r26.xyzx, cb6[r21.y + 32].xyzx - dp3 r30.y, -r26.xyzx, cb6[r21.y + 33].xyzx - dp3 r30.z, -r26.xyzx, cb6[r21.y + 34].xyzx - lt r21.y, |r30.x|, |r30.y| - and r21.y, r21.y, l(1) - dp2 r22.w, |r30.xyxx|, icb[r21.y + 0].xyxx - lt r22.w, r22.w, |r30.z| - movc r21.y, r22.w, l(2), r21.y - dp3 r22.w, r30.xyzx, icb[r21.y + 0].xyzx - lt r22.w, r22.w, l(0.000000) - bfi r21.y, l(31), l(1), r21.y, r22.w - ushr r22.w, r21.y, l(1) - dp3 r22.w, r30.xyzx, icb[r22.w + 0].xyzx - div r25.z, l(0.000244140625), cb6[r24.z + 0].w - add r25.z, -r25.z, l(0.500000) - utof r26.x, r21.y - ult r26.y, r21.y, l(2) - and r26.y, r26.y, l(2) - dp2 r26.y, r30.xzxx, icb[r26.y + 0].xzxx - mul r26.y, r26.y, icb[r21.y + 4].z - div r26.y, r26.y, |r22.w| - mad r26.x, r26.y, r25.z, r26.x - add r26.x, r26.x, l(0.500000) - mul_sat r26.x, r26.x, l(0.166666672) - iadd r26.z, l(-1), icb[r21.y + 4].y - dp2 r26.z, r30.yzyy, icb[r26.z + 0].xyxx - mul r21.y, r26.z, icb[r21.y + 4].w - div r21.y, r21.y, |r22.w| - mad_sat r26.y, -r21.y, r25.z, l(0.500000) - mad r25.xy, r26.xyxx, cb6[r24.z + 0].zwzz, cb6[r24.z + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r21.y, r25.xyxx, t13.yxzw, s1, l(0.000000) - mul r20.x, r20.x, r21.y - endif - lt r21.y, l(0.000000), r20.x - if_nz r21.y - if_z r25.w - ftoi r22.w, cb3[r24.y + 6].x - else - add r25.xyz, r8.xyzx, -cb3[r24.x + 6].xyzx - lt r26.xyz, |r25.yzzy|, |r25.xxyx| - and r24.z, r26.y, r26.x - lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx - ushr r25.w, cb3[r20.z + 6].w, l(24) - ubfe r26.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r20.z + 6].wwww - movc r25.x, r25.x, r25.w, r26.x - and r25.w, l(255), cb3[r20.z + 6].w - movc r25.y, r25.y, r26.y, r25.w - ubfe r25.w, l(8), l(8), cb3[r24.y + 6].x - and r26.x, l(255), cb3[r24.y + 6].x - movc r25.z, r25.z, r25.w, r26.x - movc r25.y, r26.z, r25.y, r25.z - movc r24.z, r24.z, r25.x, r25.y - ilt r25.x, r24.z, l(80) - movc r22.w, r25.x, r24.z, l(-1) - endif - ishl r24.z, r22.w, l(2) - mad r25.xyz, r27.xyzx, cb4[r22.w + 288].xxxx, r8.xyzx - mul r25.w, l(5.000000), cb4[r22.w + 288].y - mad r25.xyz, r6.xyzx, r25.wwww, r25.xyzx - mul r30.xyzw, r25.yyyy, cb4[r24.z + 65].xyzw - mad r30.xyzw, cb4[r24.z + 64].xyzw, r25.xxxx, r30.xyzw - mad r25.xyzw, cb4[r24.z + 66].xyzw, r25.zzzz, r30.xyzw - add r25.xyzw, r25.xyzw, cb4[r24.z + 67].xyzw - div r25.xyz, r25.xyzx, r25.wwww - ge r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx - ge r30.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r31.xy, -cb4[r22.w + 344].xyxx, cb4[r22.w + 344].zwzz - mad r25.xy, r25.xyxx, r31.xyxx, cb4[r22.w + 344].xyxx - mad r31.xy, r25.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r31.xy, r31.xyxx - mad r25.xy, r25.xyxx, cb4[400].zwzz, -r31.xyxx - add r32.xyzw, r25.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r33.xyzw, r32.xxzz, r32.xxzz - add r31.zw, -r25.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r32.xz, r25.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r34.xy, r25.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r35.xy, r31.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r34.xy, -r34.xyxx, r34.xyxx, r32.ywyy - add r34.xy, r34.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r34.xy, r34.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r33.xz, r33.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r25.xy, r33.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r25.xyxx - mul r36.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r25.xy, -r32.xzxx, r32.xzxx, r31.zwzz - add r25.xy, r25.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r37.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r25.xy, r32.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r36.z, r37.x - mov r36.w, r25.x - mov r35.z, r34.x - mov r35.w, r33.x - add r32.xyzw, r35.zwxz, r36.zwxz - mov r37.z, r36.y - mov r37.w, r25.y - mov r34.z, r35.y - mov r34.w, r33.z - add r25.xyw, r34.zyzw, r37.zyzw - div r33.xyz, r35.xzwx, r32.zwyz - add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r33.xyz, r33.yxzy, cb4[400].xxxx - div r34.xyz, r34.zywz, r25.xywx - add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r34.xyz, r34.xyzx, cb4[400].yyyy - mov r33.w, r34.x - mad r35.xyzw, r31.xyxy, cb4[400].xyxy, r33.ywxw - mad r31.zw, r31.xxxy, cb4[400].xxxy, r33.zzzw - mov r34.w, r33.y - mov r33.yw, r34.yyyz - mad r36.xyzw, r31.xyxy, cb4[400].xyxy, r33.xyzy - mad r34.xyzw, r31.xyxy, cb4[400].xyxy, r34.wywz - mad r33.xyzw, r31.xyxy, cb4[400].xyxy, r33.xwzw - mul r37.xyzw, r25.xxxy, r32.zwyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r35.xyxx, t6.xxxx, s4, r25.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r35.zwzz, t6.xxxx, s4, r25.z - mul r25.x, r25.x, r37.y - mad r24.z, r37.x, r24.z, r25.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r31.zwzz, t6.xxxx, s4, r25.z - mad r24.z, r37.z, r25.x, r24.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r34.xyxx, t6.xxxx, s4, r25.z - mad r24.z, r37.w, r25.x, r24.z - mul r31.xyzw, r25.yyww, r32.xyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r36.xyxx, t6.xxxx, s4, r25.z - mad r24.z, r31.x, r25.x, r24.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r36.zwzz, t6.xxxx, s4, r25.z - mad r24.z, r31.y, r25.x, r24.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r34.zwzz, t6.xxxx, s4, r25.z - mad r24.z, r31.z, r25.x, r24.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r33.xyxx, t6.xxxx, s4, r25.z - mad r24.z, r31.w, r25.x, r24.z - ige r25.x, r22.w, l(0) - or r26.xyz, r26.xyzx, r30.xyzx - or r25.y, r26.y, r26.x - or r25.y, r26.z, r25.y - and r26.x, r25.z, l(0x7fffffff) - ult r26.x, l(0x7f800000), r26.x - or r25.y, r25.y, r26.x - mul r25.w, r25.w, r32.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r33.zwzz, t6.xxxx, s4, r25.z - mad r24.z, r25.w, r25.z, r24.z - add r24.z, r24.z, l(-1.000000) - mad r22.w, cb4[r22.w + 288].w, r24.z, l(1.000000) - movc r22.w, r25.y, l(1.000000), r22.w - movc r22.w, r25.x, r22.w, l(1.000000) - else - mov r22.w, l(1.000000) - endif - if_nz r26.w - dp3 r24.z, r15.xyzx, r28.xyzx - mul_sat r25.x, r23.w, cb3[r20.z + 6].z - mad r25.x, r25.x, l(0.500000), r9.w - min r25.x, r25.x, l(1.000000) - div r25.x, r9.w, r25.x - mad r25.yzw, r15.xxyz, r24.zzzz, -r28.xxyz - dp3 r25.y, r29.xyzx, r25.yzwy - mul r24.z, r24.z, r24.z - mad r24.z, cb3[r20.z + 6].z, cb3[r20.z + 6].z, -r24.z - div_sat r24.z, r25.y, r24.z - mad r25.yzw, r28.xxyz, r24.zzzz, r29.xxyz - dp3 r24.z, r25.yzwy, r25.yzwy - rsq r24.z, r24.z - mul r27.xyz, r24.zzzz, r25.yzwy - else - mov r25.x, l(1.000000) - endif - if_nz r21.y - mul_sat r21.y, r23.w, cb3[r21.w + 6].y - mad r25.yzw, r11.xxyz, r5.wwww, r27.xxyz - dp3 r23.w, r25.yzwy, r25.yzwy - max r23.w, r23.w, l(0.0000610351562) - rsq r23.w, r23.w - mul r25.yzw, r23.wwww, r25.yyzw - dp3 r23.w, r6.xyzx, r27.xyzx - dp3_sat r24.z, r6.xyzx, r25.yzwy - dp3_sat r25.y, r12.xyzx, r25.yzwy - dp3 r25.z, r12.xyzx, r27.xyzx - lt r25.w, l(0.000000), r21.y - mul r21.y, r21.y, r21.y - mad r26.x, r25.y, l(3.600000), l(0.400000) - div r21.y, r21.y, r26.x - mad r21.y, r13.w, r13.w, r21.y - min r21.y, r21.y, l(1.000000) - movc r21.y, r25.w, r21.y, r9.w - mul r21.y, r21.y, r21.y - mad r25.w, r24.z, r21.y, -r24.z - mad r24.z, r25.w, r24.z, l(1.000000) - add r25.y, -r25.y, l(1.000000) - mul r25.w, r25.y, r25.y - mul r25.w, r25.w, r25.w - mul r26.x, r25.y, r25.w - mov_sat r26.y, -r25.z - mul r26.y, r26.y, r26.y - mad r26.y, r26.y, l(-0.640000), l(1.000000) - mul r26.y, r26.y, r26.y - mad r25.y, -r25.w, r25.y, l(1.000000) - mad r25.y, r2.x, r25.y, r26.x - mul r24.z, r24.z, r24.z - div r24.z, r21.y, r24.z - mul r24.z, r25.x, r24.z - mad r25.x, -r13.x, r21.y, r13.x - mad r25.x, r25.x, r13.x, r21.y - sqrt r25.x, r25.x - mad r25.w, -r21.x, r21.y, r21.x - mad r21.y, r25.w, r21.x, r21.y - sqrt r21.y, r21.y - mul r21.y, r13.x, r21.y - mad r21.y, r21.x, r25.x, r21.y - add r21.y, r21.y, l(0.000100) - div r21.y, l(0.500000), r21.y - mul r21.y, r21.y, r24.z - mul r21.y, r21.y, r25.y - min r21.y, r21.y, l(2048.000000) - mad r25.xy, r21.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r24.z, r25.xyxx, t11.yzxw, s1, l(0.000000) - mul r24.z, r12.w, r24.z - mul r24.z, r10.w, r24.z - div r24.z, r24.z, r11.w - mul r24.z, r1.z, r24.z - div r24.z, r24.z, r13.y - add r21.y, r21.y, r24.z - mov_sat r24.z, r25.z - add r24.z, r24.z, l(0.500000) - min r24.z, r24.z, l(1.000000) - mul r25.x, r2.z, r24.z - add_sat r25.y, r25.z, l(1.000000) - mad r24.z, -r2.z, r24.z, l(1.000000) - mad r24.z, r25.y, r24.z, r25.x - mul r21.y, r21.y, r24.z - mul r21.y, r4.y, r21.y - mul r21.y, r21.y, cb3[r21.w + 6].z - max r21.y, r21.y, l(0.000000) - min r21.y, r21.y, l(1000.000000) - add_sat r24.z, -r23.w, l(0.500000) - ne r25.x, r26.y, l(0.360000) - div r25.y, l(0.360000), r26.y - movc r25.x, r25.x, r25.y, l(1.000000) - mul r24.z, r24.z, r25.x - mad_sat r23.w, r1.x, l(0.0322580636), r23.w - add r23.w, -r21.x, r23.w - mul r25.xyz, r3.xyzx, r23.wwww - mad r25.xyz, r17.xyzx, r24.zzzz, r25.xyzx - mul r25.xyz, r4.yyyy, r25.xyzx - mad r25.xyz, r21.yyyy, r21.xxxx, r25.xyzx - mad r25.xyz, r18.xyzx, r21.xxxx, r25.xyzx - mul r26.xyz, r20.xxxx, cb3[r19.z + 6].xyzx - mul r26.xyz, r22.wwww, r26.xyzx - mul r26.xyz, r19.xxxx, r26.xyzx - mul r25.xyz, r25.xyzx, r26.xyzx - else - mov r25.xyz, l(0,0,0,0) - endif - else - if_z r19.y - mad r19.x, cb3[r20.z + 6].y, l(0.500000), l(0.500000) - add r26.x, r19.x, -|cb3[r20.z + 6].x| - add r26.y, -r26.x, cb3[r20.z + 6].y - add r19.x, -|r26.x|, l(1.000000) - add r19.x, -|r26.y|, r19.x - max r19.x, r19.x, l(0.000488281250) - ge r19.y, cb3[r20.z + 6].x, l(0.000000) - movc r26.z, r19.y, r19.x, -r19.x - dp3 r19.x, r26.xyzx, r26.xyzx - rsq r19.x, r19.x - mul r26.xyz, r19.xxxx, r26.xyzx - add r27.xyz, -r8.xyzx, cb3[r24.x + 6].xyzx - dp3 r19.x, r27.xyzx, r27.xyzx - rsq r19.y, r19.x - mul r28.xyz, r19.yyyy, r27.xyzx - ftoi r19.y, cb3[r21.w + 6].w - mul r21.xyw, r26.xyxz, cb3[r20.z + 6].zzzz - mad r29.xyz, -r21.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r27.xyzx - mad r21.xyw, r21.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r27.xyxz - ftou r19.z, cb3[r19.z + 6].w - and r19.z, r19.z, l(1) - ieq r20.x, r19.z, l(0) - not r20.x, r20.x - lt r22.w, l(0.000000), cb3[r20.z + 6].z - and r20.x, r20.x, r22.w - dp3 r22.w, r29.xyzx, r29.xyzx - sqrt r22.w, r22.w - dp3 r23.w, r21.xywx, r21.xywx - sqrt r23.w, r23.w - dp3 r21.x, r29.xyzx, r21.xywx - mad r21.x, r22.w, r23.w, r21.x - mad r21.x, r21.x, l(0.500000), l(1.000000) - div r21.x, l(1.000000, 1.000000, 1.000000, 1.000000), r21.x - movc r21.x, r20.x, r21.x, l(1.000000) - lt r21.y, cb3[r24.w + 6].w, l(0.000000) - if_nz r21.y - mul r21.y, cb3[r24.x + 6].w, cb3[r24.x + 6].w - mul r21.y, r19.x, r21.y - mad r21.y, -r21.y, r21.y, l(1.000000) - max r21.y, r21.y, l(0.000000) - add r19.x, r19.x, l(1.000000) - div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x - and r21.w, r20.x, l(0x3f800000) - add r22.w, -r19.x, r21.x - mad r19.x, r21.w, r22.w, r19.x - mul r21.y, r21.y, r21.y - mul r19.x, r19.x, r21.y - else - mul r29.xyz, r27.xyzx, cb3[r24.x + 6].wwww - dp3 r21.y, r29.xyzx, r29.xyzx - min r21.y, r21.y, l(1.000000) - add r21.y, -r21.y, l(1.000000) - log r21.y, r21.y - mul r21.y, r21.y, cb3[r24.w + 6].w - exp r21.y, r21.y - mul r19.x, r21.y, r21.x - endif - dp3 r21.x, r28.xyzx, -r26.xyzx - add r21.x, r21.x, -cb3[r20.z + 6].z - mul_sat r21.x, r21.x, cb3[r20.z + 6].w - mul r21.x, r21.x, r21.x - movc r21.x, r19.z, l(1.000000), r21.x - mul r19.x, r19.x, r21.x - not r20.x, r20.x - ige r21.x, r19.y, l(0) - and r20.x, r20.x, r21.x - if_nz r20.x - if_z r19.z - ishl r20.x, r19.y, l(2) - mul r21.xyw, r8.yyyy, cb6[r20.x + 33].xyxw - mad r21.xyw, cb6[r20.x + 32].xyxw, r8.xxxx, r21.xyxw - mad r21.xyw, cb6[r20.x + 34].xyxw, r8.zzzz, r21.xyxw - add r21.xyw, r21.xyxw, cb6[r20.x + 35].xyxw - div_sat r21.xy, r21.xyxx, r21.wwww - mad r21.xy, r21.xyxx, cb6[r19.y + 0].zwzz, cb6[r19.y + 0].xyxx - else - ishl r20.x, r19.y, l(2) - dp3 r26.x, -r27.xyzx, cb6[r20.x + 32].xyzx - dp3 r26.y, -r27.xyzx, cb6[r20.x + 33].xyzx - dp3 r26.z, -r27.xyzx, cb6[r20.x + 34].xyzx - lt r20.x, |r26.x|, |r26.y| - and r20.x, r20.x, l(1) - dp2 r21.w, |r26.xyxx|, icb[r20.x + 0].xyxx - lt r21.w, r21.w, |r26.z| - movc r20.x, r21.w, l(2), r20.x - dp3 r21.w, r26.xyzx, icb[r20.x + 0].xyzx - lt r21.w, r21.w, l(0.000000) - bfi r20.x, l(31), l(1), r20.x, r21.w - ushr r21.w, r20.x, l(1) - dp3 r21.w, r26.xyzx, icb[r21.w + 0].xyzx - div r22.w, l(0.000244140625), cb6[r19.y + 0].w - add r22.w, -r22.w, l(0.500000) - utof r23.w, r20.x - ult r24.z, r20.x, l(2) - and r24.z, r24.z, l(2) - dp2 r24.z, r26.xzxx, icb[r24.z + 0].xzxx - mul r24.z, r24.z, icb[r20.x + 4].z - div r24.z, r24.z, |r21.w| - mad r23.w, r24.z, r22.w, r23.w - add r23.w, r23.w, l(0.500000) - mul_sat r27.x, r23.w, l(0.166666672) - iadd r23.w, l(-1), icb[r20.x + 4].y - dp2 r23.w, r26.yzyy, icb[r23.w + 0].xyxx - mul r20.x, r23.w, icb[r20.x + 4].w - div r20.x, r20.x, |r21.w| - mad_sat r27.y, -r20.x, r22.w, l(0.500000) - mad r21.xy, r27.xyxx, cb6[r19.y + 0].zwzz, cb6[r19.y + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r19.y, r21.xyxx, t13.yxzw, s1, l(0.000000) - mul r19.x, r19.y, r19.x - endif - lt r19.x, l(0.000000), r19.x - if_nz r19.x - if_z r19.z - ftoi r19.x, cb3[r24.y + 6].x - else - add r21.xyw, r8.xyxz, -cb3[r24.x + 6].xyxz - lt r24.xzw, |r21.yyww|, |r21.xxxy| - and r19.y, r24.z, r24.x - lt r21.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyxw - ushr r19.z, cb3[r20.z + 6].w, l(24) - ubfe r24.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r20.z + 6].wwww - movc r19.z, r21.x, r19.z, r24.x - and r20.x, l(255), cb3[r20.z + 6].w - movc r20.x, r21.y, r24.z, r20.x - ubfe r20.z, l(8), l(8), cb3[r24.y + 6].x - and r21.x, l(255), cb3[r24.y + 6].x - movc r20.z, r21.w, r20.z, r21.x - movc r20.x, r24.w, r20.x, r20.z - movc r19.y, r19.y, r19.z, r20.x - ilt r19.z, r19.y, l(80) - movc r19.x, r19.z, r19.y, l(-1) - endif - ishl r19.y, r19.x, l(2) - mad r21.xyw, r28.xyxz, cb4[r19.x + 288].xxxx, r8.xyxz - mul r19.z, l(5.000000), cb4[r19.x + 288].y - mad r21.xyw, r6.xyxz, r19.zzzz, r21.xyxw - mul r24.xyzw, r21.yyyy, cb4[r19.y + 65].xyzw - mad r24.xyzw, cb4[r19.y + 64].xyzw, r21.xxxx, r24.xyzw - mad r24.xyzw, cb4[r19.y + 66].xyzw, r21.wwww, r24.xyzw - add r24.xyzw, r24.xyzw, cb4[r19.y + 67].xyzw - div r21.xyw, r24.xyxz, r24.wwww - ge r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xywx - ge r26.xyz, r21.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r19.yz, -cb4[r19.x + 344].xxyx, cb4[r19.x + 344].zzwz - mad r19.yz, r21.xxyx, r19.yyzy, cb4[r19.x + 344].xxyx - mad r20.xz, r19.yyzy, cb4[400].zzwz, l(0.500000, 0.000000, 0.500000, 0.000000) - round_ni r20.xz, r20.xxzx - mad r19.yz, r19.yyzy, cb4[400].zzwz, -r20.xxzx - add r27.xyzw, r19.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r28.xyzw, r27.xxzz, r27.xxzz - add r21.xy, -r19.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) - min r27.xz, r19.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r29.xy, r19.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r30.xy, r21.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r29.xy, -r29.xyxx, r29.xyxx, r27.ywyy - add r29.xy, r29.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r29.xy, r29.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r28.xz, r28.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r19.yz, r28.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r19.yyzy - mul r31.xy, r19.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r19.yz, -r27.xxzx, r27.xxzx, r21.xxyx - add r19.yz, r19.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r32.xy, r19.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r19.yz, r27.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r31.z, r32.x - mov r31.w, r19.y - mov r30.z, r29.x - mov r30.w, r28.x - add r27.xyzw, r30.zwxz, r31.zwxz - mov r32.z, r31.y - mov r32.w, r19.z - mov r29.z, r30.y - mov r29.w, r28.z - add r28.xyz, r29.zywz, r32.zywz - div r30.xyz, r30.xzwx, r27.zwyz - add r30.xyz, r30.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r30.xyz, r30.yxzy, cb4[400].xxxx - div r29.xyz, r29.zywz, r28.xyzx - add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r29.xyz, r29.xyzx, cb4[400].yyyy - mov r30.w, r29.x - mad r31.xyzw, r20.xzxz, cb4[400].xyxy, r30.ywxw - mad r19.yz, r20.xxzx, cb4[400].xxyx, r30.zzwz - mov r29.w, r30.y - mov r30.yw, r29.yyyz - mad r32.xyzw, r20.xzxz, cb4[400].xyxy, r30.xyzy - mad r29.xyzw, r20.xzxz, cb4[400].xyxy, r29.wywz - mad r30.xyzw, r20.xzxz, cb4[400].xyxy, r30.xwzw - mul r33.xyzw, r27.zwyz, r28.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r31.xyxx, t6.xxxx, s4, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r31.zwzz, t6.xxxx, s4, r21.w - mul r20.z, r20.z, r33.y - mad r20.x, r33.x, r20.x, r20.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.y, r19.yzyy, t6.xxxx, s4, r21.w - mad r19.y, r33.z, r19.y, r20.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r29.xyxx, t6.xxxx, s4, r21.w - mad r19.y, r33.w, r19.z, r19.y - mul r31.xyzw, r27.xyzw, r28.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r32.xyxx, t6.xxxx, s4, r21.w - mad r19.y, r31.x, r19.z, r19.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r32.zwzz, t6.xxxx, s4, r21.w - mad r19.y, r31.y, r19.z, r19.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r29.zwzz, t6.xxxx, s4, r21.w - mad r19.y, r31.z, r19.z, r19.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r30.xyxx, t6.xxxx, s4, r21.w - mad r19.y, r31.w, r19.z, r19.y - ige r19.z, r19.x, l(0) - or r24.xyz, r24.xyzx, r26.xyzx - or r20.x, r24.y, r24.x - or r20.x, r24.z, r20.x - and r20.z, r21.w, l(0x7fffffff) - ult r20.z, l(0x7f800000), r20.z - or r20.x, r20.z, r20.x - mul r20.z, r27.y, r28.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.x, r30.zwzz, t6.xxxx, s4, r21.w - mad r19.y, r20.z, r21.x, r19.y - add r19.y, r19.y, l(-1.000000) - mad r19.x, cb4[r19.x + 288].w, r19.y, l(1.000000) - movc r19.x, r20.x, l(1.000000), r19.x - movc r19.x, r19.z, r19.x, l(1.000000) - else - mov r19.x, l(1.000000) - endif - else - mov r19.x, l(1.000000) - endif - mul r17.w, r17.w, r19.x - mov r25.xyz, l(0,0,0,0) - endif - add r23.xyz, r23.xyzx, r25.xyzx - mov r18.w, r20.w - endloop - mov r13.z, r17.w - add r22.xyz, r22.xyzx, r23.xyzx - iadd r14.w, r14.w, l(1) -endloop -mad r1.xyz, r22.xyzx, r13.zzzz, r14.xyzx -ne r11.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx -if_nz r11.x - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - mad r0.z, r0.z, l(0.750000), l(0.250000) - min r0.z, r3.w, r0.z - add r1.w, r0.z, r5.y - mad r2.z, r13.w, l(-16.000000), l(-1.000000) - exp r2.z, r2.z - log r1.w, |r1.w| - mul r1.w, r1.w, r2.z - exp r1.w, r1.w - add r1.w, r0.z, r1.w - add r1.w, r1.w, l(-1.000000) - mov_sat r11.xzw, r1.wwww - mad r14.xyz, r3.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r3.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r3.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - max r14.xyz, r0.zzzz, r14.xyzx -else - mov r11.xzw, r3.wwww - mov r14.xyz, r3.wwww -endif -mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r17.xyz, r8.xzyx, -r17.xyzx -max r0.z, |r17.y|, |r17.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.w, |r17.z|, l(-208.000000) -mul_sat r1.w, r1.w, l(0.031250) -max r0.z, r0.z, r1.w -ne r1.w, l(0.000000), cb0[210].w -lt r2.z, r0.z, l(1.000000) -and r1.w, r1.w, r2.z -if_nz r1.w - mad r17.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r17.xyz, r8.xzyx, -r17.xyzx - max r1.w, |r17.y|, |r17.x| - add r1.w, r1.w, l(-29.000000) - mul_sat r1.w, r1.w, l(0.500000) - add r2.z, |r17.z|, l(-13.000000) - mul_sat r2.z, r2.z, l(0.500000) - max r1.w, r1.w, r2.z - lt r2.z, r1.w, l(1.000000) - if_nz r2.z - mad r17.xyz, r8.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r17.xyzx, cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t17.yzwx, s2, l(0.000000) - add r2.z, -r1.w, l(1.000000) - mul r3.w, l(0.500000), cb0[211].y - mad r4.y, -cb0[211].y, l(0.500000), l(1.000000) - max r3.w, r3.w, r17.y - min r3.w, r4.y, r3.w - mul r17.w, r3.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t18.xyzw, s1, l(0.000000) - mad r3.w, r19.w, r2.z, r0.z - add r20.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t18.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r18.yyyy, r20.xyzx - mov r20.w, r18.y - mul r20.xyzw, r2.zzzz, r20.xyzw - add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t18.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r18.xxxx, r17.xyzx - mov r17.w, r18.x - mul r17.xyzw, r2.zzzz, r17.xyzw - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r19.xyzx - mul r18.xyzw, r2.zzzz, r18.xyzw - else - mov r20.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r3.w, r0.z - endif - mad r19.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r19.xyz, r8.xzyx, -r19.xyzx - max r2.z, |r19.y|, |r19.x| - add r2.z, r2.z, l(-116.000000) - mul_sat r2.z, r2.z, l(0.125000) - add r4.y, |r19.z|, l(-52.000000) - mul_sat r4.y, r4.y, l(0.125000) - max r2.z, r2.z, r4.y - lt r4.y, r2.z, l(1.000000) - if_nz r4.y - mad r19.xyz, r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r21.xyz, r19.xyzx, cb0[211].xyzx - round_ni r21.xyz, r21.xyzx - mad r19.xyz, r19.xyzx, cb0[211].xyzx, -r21.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r19.xyzx, t19.yzwx, s2, l(0.000000) - add r4.y, -r2.z, l(1.000000) - mul r1.w, r1.w, r4.y - mul r4.y, l(0.500000), cb0[211].y - mad r5.y, -cb0[211].y, l(0.500000), l(1.000000) - max r4.y, r4.y, r19.y - min r4.y, r5.y, r4.y - mul r19.w, r4.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyzw, r19.xwzx, t20.xyzw, s1, l(0.000000) - mad r3.w, r22.w, r1.w, r3.w - add r23.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r23.xyz, r23.xyzx, t20.xyzw, s1, l(0.000000) - mad r23.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r23.xyz, r21.yyyy, r23.xyzx - mov r23.w, r21.y - mad r20.xyzw, r23.xyzw, r1.wwww, r20.xyzw - add r19.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r21.xxxx, r19.xyzx - mov r19.w, r21.x - mad r17.xyzw, r19.xyzw, r1.wwww, r17.xyzw - mad r19.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r19.xyzx - mad r18.xyzw, r21.xyzw, r1.wwww, r18.xyzw - endif - lt r1.w, l(0.000000), r2.z - if_nz r1.w - mad r19.xyz, r8.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r21.xyz, r19.xyzx, cb0[211].xyzx - mul r22.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r21.xyz, r21.xyzx - mad r19.xyz, r19.xyzx, cb0[211].xyzx, -r21.xyzx - mad r21.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r19.xyz, r22.xyzx, r19.xyzx - min r19.xyz, r21.xyzx, r19.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r23.xyw, r19.xyzx, t21.yzwx, s2, l(0.000000) - add r1.w, -r0.z, l(1.000000) - mul r1.w, r1.w, r2.z - max r2.z, r22.y, r19.y - min r2.z, r21.y, r2.z - mul r19.w, r2.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r19.xwzx, t22.xyzw, s1, l(0.000000) - add r22.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t22.xyzw, s1, l(0.000000) - mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r23.yyyy, r22.xyzx - mov r22.w, r23.y - mad r20.xyzw, r22.xyzw, r1.wwww, r20.xyzw - add r19.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r23.xxxx, r19.xyzx - mov r19.w, r23.x - mad r17.xyzw, r19.xyzw, r1.wwww, r17.xyzw - mad r19.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r23.xyz, r23.wwww, r19.xyzx - mad r18.xyzw, r23.xyzw, r1.wwww, r18.xyzw - mad r3.w, r21.w, r1.w, r3.w - endif - mad_sat r1.w, r3.w, l(2.000000), l(-1.000000) - add r19.x, -r0.z, r1.w - add r0.z, r0.z, r1.w - mul r19.y, r0.z, l(0.500000) -else - mov r20.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r19.xy, l(0,1.000000,0,0) -endif -mul r21.xyzw, r19.yyyx, cb0[213].xyzw -mad r21.y, r21.w, l(0.500000), r21.y -mul r5.yw, r19.yyyx, cb0[213].wwwy -mad r21.w, r5.w, l(0.375000), r5.y -add r18.xyzw, r18.xyzw, r21.xyzw -mul r21.xyzw, r19.yyyx, cb0[214].xyzw -mad r21.y, r21.w, l(0.500000), r21.y -mul r5.yw, r19.yyyx, cb0[214].wwwy -mad r21.w, r5.w, l(0.375000), r5.y -add r17.xyzw, r17.xyzw, r21.xyzw -mul r21.xyzw, r19.yyyx, cb0[215].xyzw -mad r21.y, r21.w, l(0.500000), r21.y -mul r5.yw, r19.yyyx, cb0[215].wwwy -mad r21.w, r5.w, l(0.375000), r5.y -add r19.xyzw, r20.xyzw, r21.xyzw -ge r5.yw, r7.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r5.w, r5.y -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r20.xyzw, r7.xyxx, t16.xyzw, s1, l(0.000000) - lt r21.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r20.xyzw| - or r5.yw, r21.zzzw, r21.xxxy - or r0.z, r5.w, r5.y - if_nz r0.z - dp3 r0.z, r20.yzwy, r20.yzwy - sqrt r0.z, r0.z - mov r5.y, l(1.000000) - mov r5.w, r0.z - mov r1.w, l(0) - loop - ge r2.z, l(4.600000), r5.w - breakc_nz r2.z - iadd r2.z, r1.w, l(1) - mul r7.xy, r5.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000) - mov r5.yw, r7.xxxy - mov r1.w, r2.z - continue - endloop - mul r20.xyzw, r5.yyyy, r20.xyzw - dp3 r0.z, r20.yzwy, r20.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb7[3].x, cb7[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r7.x, r0.z, l(0.00390625000) - mov r7.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r5.yw, r7.xyxx, t15.zxwy, s1, l(0.000000) - mad r5.yw, r5.yyyw, cb7[2].xxxy, cb7[2].zzzw - mul r21.x, r5.y, l(3.54490781) - mul r21.yzw, r5.wwww, r20.yyzw - mul r0.z, r20.x, l(0.406976730) - exp r0.z, r0.z - mul r20.xyzw, r0.zzzz, r21.xyzw - mov r21.xyzw, r20.xyzw - mov r0.z, l(0) - loop - uge r2.z, r0.z, r1.w - breakc_nz r2.z - mul r22.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r2.z, r22.xyzw, r21.xyzw - dp2 r3.w, r22.yxyy, r21.xyxx - dp2 r4.y, r22.zxzz, r21.xzxx - dp2 r5.y, r22.wxww, r21.xwxx - iadd r5.w, r0.z, l(1) - mov r21.x, r2.z - mov r21.y, r3.w - mov r21.z, r4.y - mov r21.w, r5.y - mov r0.z, r5.w - continue - endloop - mul r20.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r21.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r20.xyzw, r21.xyzw - dp2 r1.w, r20.yxyy, r21.xyxx - dp2 r2.z, r20.zxzz, r21.xzxx - dp2 r3.w, r20.wxww, r21.xwxx - mul r21.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r4.y, r20.xyzw, r21.xyzw - dp2 r5.y, r20.yxyy, r21.xyxx - dp2 r5.w, r20.zxzz, r21.xzxx - dp2 r7.x, r20.wxww, r21.xwxx - mul r21.xyzw, r19.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r7.y, r20.xyzw, r21.xyzw - dp2 r9.w, r20.yxyy, r21.xyxx - dp2 r10.w, r20.zxzz, r21.xzxx - dp2 r12.w, r20.wxww, r21.xwxx - mul r18.w, r0.z, l(0.886226952) - mul r18.x, r3.w, l(-1.02332675) - mul r18.y, r1.w, l(-1.02332675) - mul r18.z, r2.z, l(1.02332675) - mul r17.w, r4.y, l(0.886226952) - mul r17.x, r7.x, l(-1.02332675) - mul r17.yz, r5.yywy, l(0.000000, -1.02332675, 1.02332675, 0.000000) - mul r19.w, r7.y, l(0.886226952) - mul r19.x, r12.w, l(-1.02332675) - mul r19.y, r9.w, l(-1.02332675) - mul r19.z, r10.w, l(1.02332675) - endif -endif -mov r6.w, l(1.000000) -dp4 r20.x, r18.xyzw, r6.xyzw -dp4 r20.y, r17.xyzw, r6.xyzw -dp4 r20.z, r19.xyzw, r6.xyzw -max r20.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r0.z, l(-1.000000), cb0[113].x -max r1.w, r13.w, l(0.001000) -log r1.w, r1.w -mad r1.w, -r1.w, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.w -mul r5.yw, r5.xxxz, cb1[0].wwww -round_ni r5.yw, r5.yyyw -add r1.w, |r2.y|, -cb1[2].y -round_ni r1.w, r1.w -add r2.z, l(-1.000000), cb1[1].x -max r3.w, r1.w, l(0.000000) -min r2.z, r2.z, r3.w -ge r1.w, r2.z, r1.w -mad r3.w, r5.w, cb1[0].x, r5.y -ftoi r3.w, r3.w -iadd r3.w, r3.w, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx -ftoi r2.z, r2.z -iadd r2.z, r2.z, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.z, r2.z, l(0), t0.xxxx -and r2.z, r2.z, r3.w -and r1.w, r1.w, r2.z -mul r13.yzw, r20.xxyz, cb0[111].xxxx -dp3 r2.z, r13.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r8.w, l(1.000000) -mov r13.yzw, l(0,0,0,0) -mov r3.w, l(1.000000) -mov r4.y, r1.w -mov r5.y, l(0) -loop - lt r5.w, l(0.010000), r3.w - ine r7.x, r4.y, l(0) - and r7.x, r5.w, r7.x - if_nz r7.x - firstbit_lo r7.x, r4.y - ishl r7.y, l(1), r7.x - xor r4.y, r4.y, r7.y - ishl r7.x, r7.x, l(3) - dp4 r21.x, cb1[r7.x + 6].xyzw, r8.xyzw - dp4 r21.y, cb1[r7.x + 7].xyzw, r8.xyzw - dp4 r21.z, cb1[r7.x + 8].xyzw, r8.xyzw - ge r22.xyz, cb1[r7.x + 5].xyzx, |r21.xyzx| - and r7.y, r22.y, r22.x - and r7.y, r22.z, r7.y - if_nz r7.y - mul r7.y, l(0.100000), cb1[r7.x + 5].x - mul r22.xyz, |r21.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r22.xy, r22.xyxx, r22.xyxx - add r23.xyz, -|r21.xyzx|, cb1[r7.x + 5].xyzx - mul r23.xyz, r23.xyzx, cb1[r7.x + 9].xyzx - eq r9.w, l(1.000000), cb1[r7.x + 10].x - if_nz r9.w - dp3 r24.x, cb1[r7.x + 6].xyzx, r15.xyzx - dp3 r24.y, cb1[r7.x + 7].xyzx, r15.xyzx - dp3 r24.z, cb1[r7.x + 8].xyzx, r15.xyzx - add r25.xyz, -r21.xyzx, cb1[r7.x + 5].xyzx - div r25.xyz, r25.xyzx, r24.xyzx - add r26.xyz, -r21.xyzx, -cb1[r7.x + 5].xyzx - div r26.xyz, r26.xyzx, r24.xyzx - lt r27.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx - movc r25.xyz, r27.xyzx, r25.xyzx, r26.xyzx - min r9.w, r25.y, r25.x - min r9.w, r25.z, r9.w - mad r21.xyz, r24.xyzx, r9.wwww, r21.xyzx - else - mov r21.xyz, r15.xyzx - endif - dp3 r9.w, r21.xyzx, r21.xyzx - rsq r9.w, r9.w - mul r21.xyz, r9.wwww, r21.xyzx - lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx - lt r25.xyz, r21.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r24.xyz, -r24.xyzx, r25.xyzx - itof r24.xyz, r24.xyzx - dp3 r9.w, r21.xyzx, r24.xyzx - div r21.xyz, r21.xyzx, r9.wwww - lt r9.w, r21.z, l(0.000000) - add r21.zw, -|r21.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r21.zw, r21.zzzw, r24.xxxy - movc r21.xy, r9.wwww, r21.zwzz, r21.xyxx - dp4 r9.w, cb1[r7.x + 4].xyzw, r6.xyzw - max r9.w, r9.w, l(0.000000) - max r9.w, r9.w, l(0.000100) - min r10.w, r23.z, r23.y - min r10.w, r10.w, r23.x - add r12.w, r22.y, r22.x - mad r12.w, r22.z, r22.z, r12.w - mad r7.y, r7.y, r7.y, -r12.w - mul r7.y, r7.y, cb1[r7.x + 9].x - mul r7.y, r7.y, cb1[r7.x + 9].x - add r12.w, l(1.000000), -cb1[r7.x + 10].y - mul r7.y, r7.y, r12.w - mul r7.y, r7.y, l(100.000000) - mad_sat r7.y, r10.w, cb1[r7.x + 10].y, r7.y - mul r10.w, r7.y, cb1[r7.x + 10].w - mad r21.xy, r21.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r21.xy, r21.xyxx, cb1[1].wwww, cb1[2].wwww - mov r21.z, cb1[r7.x + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r21.xyz, r21.xyzx, t5.xyzw, s3, r0.z - mul r21.xyz, r21.xyzx, cb1[r7.x + 9].wwww - div r12.w, r2.z, r9.w - min r12.w, |r12.w|, l(1.000000) - mad r12.w, r12.w, l(2.000000), r2.z - add r9.w, r9.w, l(2.000000) - div r9.w, r12.w, r9.w - add r9.w, r9.w, l(-1.000000) - mad r9.w, r9.w, cb0[112].w, l(1.000000) - mul r21.xyz, r9.wwww, r21.xyzx - mul r21.xyz, r10.wwww, r21.xyzx - mad r13.yzw, r21.xxyz, r3.wwww, r13.yyzw - mad r7.x, -r7.y, cb1[r7.x + 10].w, l(1.000000) - mul r3.w, r3.w, r7.x - endif - mov r5.y, l(-1) - continue - else - mov r5.y, r5.w - break - endif - mov r5.y, r5.w -endloop -if_nz r5.y - dp3 r1.w, r15.xyzx, r15.xyzx - rsq r1.w, r1.w - mul r15.xyz, r1.wwww, r15.xyzx - lt r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx - lt r22.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r21.xyz, -r21.xyzx, r22.xyzx - itof r21.xyz, r21.xyzx - dp3 r1.w, r15.xyzx, r21.xyzx - div r15.xyz, r15.xyzx, r1.wwww - lt r1.w, r15.z, l(0.000000) - add r5.yw, -|r15.yyyx|, l(0.000000, 1.000000, 0.000000, 1.000000) - mul r5.yw, r5.yyyw, r21.xxxy - movc r5.yw, r1.wwww, r5.yyyw, r15.xxxy - dp4 r1.w, cb1[3].xyzw, r6.xyzw - max r1.w, r1.w, l(0.000000) - max r1.w, r1.w, l(0.000100) - mad r5.yw, r5.yyyw, l(0.000000, 0.500000, 0.000000, 0.500000), l(0.000000, 0.500000, 0.000000, 0.500000) - mad r15.xy, r5.ywyy, cb1[1].wwww, cb1[2].wwww - mov r15.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z - div r0.z, r2.z, r1.w - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r2.z - add r1.w, r1.w, l(2.000000) - div r0.z, r0.z, r1.w - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r15.xyz, r0.zzzz, r15.xyzx - mad r13.yzw, r15.xxyz, r3.wwww, r13.yyzw -endif -mul r13.yzw, r13.yyzw, cb0[112].zzzz -mul r13.yzw, r13.yyzw, cb0[111].yyyy -if_nz r11.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x - add r1.w, -r0.z, l(1.000000) - mul r21.xyz, r1.wwww, r13.yzwy - mad r13.yzw, r15.xxyz, r0.zzzz, r21.xxyz -endif -mul r3.xyz, r3.xyzx, r20.xyzx -mul r3.xyz, r3.xyzx, cb0[111].xxxx -mad r0.z, r2.x, r7.z, r7.w -mul r7.xyz, r0.zzzz, r13.yzwy -mul r7.xyz, r11.xzwx, r7.xyzx -mad r3.xyz, r3.xyzx, r14.xyzx, r7.xyzx -mul r6.xyzw, r6.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) -dp4 r7.x, r18.xyzw, r6.xyzw -dp4 r7.y, r17.xyzw, r6.xyzw -dp4 r7.z, r19.xyzw, r6.xyzw -max r6.xyz, r7.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -mul r6.xyz, r6.xyzx, cb0[111].xxxx -mul r6.xyz, r14.xyzx, r6.xyzx -mul r6.xyz, r16.xyzx, r6.xyzx -mul r0.z, r4.x, r13.x -ftou r1.w, r2.w -bfi r1.w, l(2), l(0), r1.w, r4.z -utof r1.w, r1.w -mul r1.w, r1.w, l(0.0322580636) -mad r0.z, r0.z, l(0.00787401572), r1.w -mul r2.xzw, r0.zzzz, r6.xxyz -mad r2.xzw, r2.xxzw, l(0.318309873, 0.000000, 0.318309873, 0.318309873), r3.xxyz -add r1.xyz, r1.xyzx, r2.xzwx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r8.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r4.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r8.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xzw, r0.zzzz, cb0[155].xxyz -mul r2.xzw, r2.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) -exp r2.xzw, r2.xxzw -dp3 r0.z, -r12.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r3.x, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r3.x -lt r3.x, l(0.000000), cb0[163].z -if_nz r3.x - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r12.xyzx, -r10.xyzx - add r3.z, r8.y, -cb0[44].y - lt r3.w, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.w - mul r0.x, r0.x, cb0[163].w - div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w - mul r4.x, r0.x, r3.w - mad r4.y, r4.x, r3.z, cb0[44].y - mad r3.z, -r4.x, r3.z, r3.z - mul r4.x, r3.z, cb0[159].z - mul r3.z, r3.z, cb0[162].x - max r3.z, r3.z, l(-127.000000) - add r4.z, r4.y, -cb0[159].x - mul r4.z, r4.z, cb0[159].z - max r4.xz, r4.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - exp r4.z, -r4.z - mul r4.z, r4.z, cb0[159].y - lt r5.y, l(5.960464478E-08), |r4.x| - exp r5.w, -r4.x - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r4.x - mad r4.x, -r4.x, l(0.240226507), l(0.693147182) - movc r4.x, r5.y, r5.w, r4.x - add r4.y, r4.y, -cb0[162].z - mul r4.y, r4.y, cb0[162].x - max r4.y, r4.y, l(-127.000000) - exp r4.y, -r4.y - mul r4.y, r4.y, cb0[162].y - lt r5.y, l(5.960464478E-08), |r3.z| - exp r5.w, -r3.z - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r3.z - mad r3.z, -r3.z, l(0.240226507), l(0.693147182) - movc r3.z, r5.y, r5.w, r3.z - mul r3.z, r3.z, r4.y - mad r3.z, r4.z, r4.x, r3.z - mad r0.x, -r0.x, r3.w, l(1.000000) - mul r0.x, r4.w, r0.x - mul r0.x, r0.x, r3.z - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r3.zw, r4.wwww, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r3.z - add r0.x, r3.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r5.xxxz - mul r3.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r2.y|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r3.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t14.xyzw, s1, l(0.000000) - add r0.y, |r2.y|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r0.x, r0.x, r3.w -else - add r0.y, r8.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.y, cb0[44].y, -cb0[159].x - mul r2.y, r2.y, cb0[159].z - max r2.y, r2.y, l(-127.000000) - exp r2.y, -r2.y - mul r2.y, r2.y, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.y, r0.w, r0.y - mul r0.y, r4.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r4.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r3.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r2.xzwx -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.y, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.y, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r2.xyz, -r2.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r2.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx -mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx -dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -dp3 r1.w, r9.xyzx, r9.xyzx -sqrt r1.w, r1.w -mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) -mul r2.x, r1.w, cb0[169].x -mad r1.w, -cb0[169].x, r1.w, l(1.000000) -mul r2.yzw, cb0[168].xxyz, cb0[183].wwww -mad r2.yzw, r8.xxyz, cb0[169].yyyy, r2.yyzw -sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t27.xwyz, s2, l(0.000000) -dp2 r2.x, r2.yyyy, r2.xxxx -add r1.w, r1.w, r2.x -add r2.x, r0.w, l(1.000000) -min r1.w, r1.w, r2.x -add r0.xyz, -r1.xyzx, r0.xyzx -mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx -mov o0.w, r0.w -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x5468822B.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x5468822B.ps_5_0_original_backup.asm deleted file mode 100644 index 670f707814..0000000000 --- a/src/games/endfield/deferred-lighting/0x5468822B.ps_5_0_original_backup.asm +++ /dev/null @@ -1,1840 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 13:55:07 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy w -// TEXCOORD 0 xy 1 NONE float xy -// TEXCOORD 1 xyz 2 NONE float xyz -// TEXCOORD 2 xyz 3 NONE float xyz -// TEXCOORD 3 xyzw 4 NONE float xyzw -// TEXCOORD 4 xyz 5 NONE float xyz -// TEXCOORD 5 xyz 6 NONE float xyz -// TEXCOORD 6 xyz 7 NONE float xyz -// TEXCOORD 7 xyz 8 NONE float xyz -// TEXCOORD 8 x 9 NONE uint x -// SV_IsFrontFace 0 x 10 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[216], immediateIndexed -dcl_constantbuffer CB1[4093], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[9], immediateIndexed -dcl_constantbuffer CB6[160], dynamicIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_comparison -dcl_sampler s3, mode_default -dcl_sampler s4, mode_default -dcl_sampler s5, mode_default -dcl_resource_structured t0, 4 -dcl_resource_structured t1, 16 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture3d (float,float,float,float) t4 -dcl_resource_texture3d (float,float,float,float) t5 -dcl_resource_texture3d (float,float,float,float) t6 -dcl_resource_texture3d (float,float,float,float) t7 -dcl_resource_texture3d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texturecube (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_input_ps_siv linear noperspective v0.xyw, position -dcl_input_ps linear v1.xy -dcl_input_ps linear v2.xyz -dcl_input_ps linear v3.xyz -dcl_input_ps linear v4.xyzw -dcl_input_ps linear v5.xyz -dcl_input_ps linear v6.xyz -dcl_input_ps linear v7.xyz -dcl_input_ps linear v8.xyz -dcl_input_ps constant v9.x -dcl_input_ps_sgv constant v10.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 32 -add r0.xyz, -v2.xyzx, cb0[44].xyzx -mov r1.x, cb0[0].z -mov r1.y, cb0[1].z -mov r1.z, cb0[2].z -add r2.xyz, -r0.xyzx, r1.xyzx -mad r0.xyz, cb0[86].wwww, r2.xyzx, r0.xyzx -dp3 r0.w, r0.xyzx, r0.xyzx -max r1.w, r0.w, l(9.999999939E-09) -rsq r1.w, r1.w -mul r2.xyz, r0.xyzx, r1.wwww -ishl r2.w, v9.x, l(4) -and r3.x, l(16), cb1[r2.w + 4].w -if_nz r3.x - iadd r3.x, l(2), cb1[r2.w + 5].x - ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r3.x, l(12), t1.xxxx - ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.y, cb1[r2.w + 5].x, l(12), t1.xxxx -else - mov r3.xy, cb1[r2.w + 3].zxzz -endif -sample_b_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t12.xyzw, s3, cb0[108].x -sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t13.xyzw, s4, cb0[108].x -add r3.z, -r5.w, l(1.000000) -mul r4.xyzw, r4.xyzw, cb5[5].xyzw -mul r6.xyz, r4.xyzx, cb5[4].zzzz -dp3 r3.w, r6.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r6.xyz, r4.xyzx, cb5[4].zzzz, -r3.wwww -mad r6.xyz, cb5[4].wwww, r6.xyzx, r3.wwww -sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, v1.xyxx, t14.xywz, s5, cb0[108].x -mul r7.x, r7.x, r7.z -mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r3.w, r7.xyxx, r7.xyxx -min r3.w, r3.w, l(1.000000) -add r3.w, -r3.w, l(1.000000) -sqrt r3.w, r3.w -max r3.w, r3.w, l(1.000000017E-16) -mul r7.xy, r7.xyxx, cb5[0].wwww -add r8.xz, -r3.yyxy, v2.xxzx -mov r8.y, l(0.0000610351562) -dp3 r3.x, r8.xyzx, r8.xyzx -rsq r3.x, r3.x -mul r8.xyz, r3.xxxx, r8.xyzx -mul r9.xyz, v3.zxyz, v4.yzxy -mad r9.xyz, v3.yzxy, v4.zxyz, -r9.xyzx -mul r9.xyz, r9.xyzx, v4.wwww -mul r7.yzw, r7.yyyy, r9.xxyz -mad r7.xyz, r7.xxxx, v4.xyzx, r7.yzwy -mad r3.xyw, r3.wwww, v3.xyxz, r7.xyxz -mad r6.w, cb5[1].y, l(2.000000), l(-1.000000) -movc r6.w, v10.x, l(1.000000), r6.w -dp3 r7.x, r3.xywx, r3.xywx -max r7.x, r7.x, l(1.175494351E-38) -rsq r7.x, r7.x -mul r3.xyw, r3.xyxw, r7.xxxx -mul r7.xyz, r6.wwww, r3.xywx -dp3 r8.w, v3.xyzx, v3.xyzx -rsq r8.w, r8.w -mul r9.xyz, r8.wwww, v3.xyzx -mul r9.xyz, r6.wwww, r9.xyzx -ftou r10.xy, v0.xyxx -add r8.w, l(1.000000), -cb0[111].x -mad r8.w, cb0[198].w, r8.w, cb0[111].x -mul r8.w, r8.w, cb0[109].x -lt r9.w, cb0[187].y, l(0.500000) -if_nz r9.w - mad r11.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx - add r11.xyz, -r11.xyzx, v2.xzyx - max r9.w, |r11.y|, |r11.x| - add r9.w, r9.w, l(-464.000000) - mul_sat r9.w, r9.w, l(0.031250) - add r11.x, |r11.z|, l(-208.000000) - mul_sat r11.x, r11.x, l(0.031250) - max r9.w, r9.w, r11.x - ne r11.x, l(0.000000), cb0[210].w - lt r11.y, r9.w, l(1.000000) - and r11.x, r11.y, r11.x - if_nz r11.x - mad r11.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r11.xyz, -r11.xyzx, v2.xzyx - max r11.x, |r11.y|, |r11.x| - add r11.x, r11.x, l(-29.000000) - add r11.y, |r11.z|, l(-13.000000) - mul_sat r11.xy, r11.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) - max r11.x, r11.y, r11.x - lt r11.y, r11.x, l(1.000000) - if_nz r11.y - mad r11.yzw, v2.xxyz, l(0.000000, 2.000000, 2.000000, 2.000000), l(0.000000, 0.500000, 0.500000, 0.500000) - mul r12.xyz, r11.yzwy, cb0[211].xyzx - round_ni r12.xyz, r12.xyzx - mad r12.xyz, r11.yzwy, cb0[211].xyzx, -r12.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r13.xyw, r12.xyzx, t4.yzwx, s1, l(0.000000) - add r11.y, -r11.x, l(1.000000) - mul r11.z, l(0.500000), cb0[211].y - mad r11.w, -cb0[211].y, l(0.500000), l(1.000000) - max r11.z, r11.z, r12.y - min r11.z, r11.w, r11.z - mul r12.w, r11.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyzw, r12.xwzx, t5.xyzw, s0, l(0.000000) - mad r11.z, r14.w, r11.y, r9.w - add r15.xyz, r12.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s0, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r13.yyyy, r15.xyzx - mov r15.w, r13.y - mul r15.xyzw, r11.yyyy, r15.xyzw - add r12.xyz, r12.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r12.xyzx, t5.xyzw, s0, l(0.000000) - mad r12.xyz, r12.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r12.xyz, r13.xxxx, r12.xyzx - mov r12.w, r13.x - mul r12.xyzw, r11.yyyy, r12.xyzw - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r13.xyz, r13.wwww, r14.xyzx - mul r13.xyzw, r11.yyyy, r13.xyzw - else - mov r15.xyzw, l(0,0,0,0) - mov r12.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r11.z, r9.w - endif - mad r14.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r14.xyz, -r14.xyzx, v2.xzyx - max r11.y, |r14.y|, |r14.x| - add r11.y, r11.y, l(-116.000000) - add r11.w, |r14.z|, l(-52.000000) - mul_sat r11.yw, r11.yyyw, l(0.000000, 0.125000, 0.000000, 0.125000) - max r11.y, r11.w, r11.y - lt r11.w, r11.y, l(1.000000) - if_nz r11.w - mad r14.xyz, v2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r16.xyz, r14.xyzx, cb0[211].xyzx - round_ni r16.xyz, r16.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r16.xyw, r14.xyzx, t6.yzwx, s1, l(0.000000) - add r11.w, -r11.y, l(1.000000) - mul r11.x, r11.w, r11.x - mul r11.w, l(0.500000), cb0[211].y - mad r17.x, -cb0[211].y, l(0.500000), l(1.000000) - max r11.w, r11.w, r14.y - min r11.w, r17.x, r11.w - mul r14.w, r11.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r14.xwzx, t7.xyzw, s0, l(0.000000) - mad r11.z, r17.w, r11.x, r11.z - add r18.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t7.xyzw, s0, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r16.yyyy, r18.xyzx - mov r18.w, r16.y - mad r15.xyzw, r18.xyzw, r11.xxxx, r15.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t7.xyzw, s0, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r16.xxxx, r14.xyzx - mov r14.w, r16.x - mad r12.xyzw, r14.xyzw, r11.xxxx, r12.xyzw - mad r14.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r16.wwww, r14.xyzx - mad r13.xyzw, r16.xyzw, r11.xxxx, r13.xyzw - endif - lt r11.x, l(0.000000), r11.y - if_nz r11.x - mad r14.xyz, v2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r16.xyz, r14.xyzx, cb0[211].xyzx - mul r17.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r16.xyz, r16.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r16.xyzx - mad r16.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r14.xyz, r17.xyzx, r14.xyzx - min r14.xyz, r16.xyzx, r14.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r14.xyzx, t8.yzwx, s1, l(0.000000) - add r11.x, -r9.w, l(1.000000) - mul r11.x, r11.x, r11.y - max r11.y, r17.y, r14.y - min r11.y, r16.y, r11.y - mul r14.w, r11.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t9.xyzw, s0, l(0.000000) - add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t9.xyzw, s0, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r18.yyyy, r17.xyzx - mov r17.w, r18.y - mad r15.xyzw, r17.xyzw, r11.xxxx, r15.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t9.xyzw, s0, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r18.xxxx, r14.xyzx - mov r14.w, r18.x - mad r12.xyzw, r14.xyzw, r11.xxxx, r12.xyzw - mad r14.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r14.xyzx - mad r13.xyzw, r18.xyzw, r11.xxxx, r13.xyzw - mad r11.z, r16.w, r11.x, r11.z - endif - mad_sat r11.x, r11.z, l(2.000000), l(-1.000000) - add r14.x, -r9.w, r11.x - add r9.w, r9.w, r11.x - mul r14.y, r9.w, l(0.500000) - else - mov r15.xyzw, l(0,0,0,0) - mov r12.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r14.xy, l(0,1.000000,0,0) - endif - mul r11.xyzw, r14.yyyx, cb0[213].xyzw - mad r11.y, r11.w, l(0.500000), r11.y - mul r14.zw, r14.yyyx, cb0[213].wwwy - mad r11.w, r14.w, l(0.375000), r14.z - add r11.xyzw, r11.xyzw, r13.xyzw - mul r13.xyzw, r14.yyyx, cb0[214].xyzw - mad r13.y, r13.w, l(0.500000), r13.y - mul r14.zw, r14.yyyx, cb0[214].wwwy - mad r13.w, r14.w, l(0.375000), r14.z - add r12.xyzw, r12.xyzw, r13.xyzw - mul r13.xyzw, r14.yyyx, cb0[215].xyzw - mad r13.y, r13.w, l(0.500000), r13.y - mul r14.xy, r14.yxyy, cb0[215].wyww - mad r13.w, r14.y, l(0.375000), r14.x - add r13.xyzw, r13.xyzw, r15.xyzw - mov r7.w, l(1.000000) - dp4 r14.x, r11.xyzw, r7.xyzw - dp4 r14.y, r12.xyzw, r7.xyzw - dp4 r14.z, r13.xyzw, r7.xyzw - max r14.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r15.xyz, r8.wwww, r14.xyzx - mul r16.xyz, r12.xyzx, l(0.715200, 0.715200, 0.715200, 0.000000) - mad r16.xyz, r11.xyzx, l(0.212600, 0.212600, 0.212600, 0.000000), r16.xyzx - mad r16.xyz, r13.xyzx, l(0.072200, 0.072200, 0.072200, 0.000000), r16.xyzx - dp3 r7.w, r16.xyzx, r16.xyzx - max r7.w, r7.w, l(1.175494351E-38) - rsq r7.w, r7.w - mul r16.xyz, r7.wwww, r16.xyzx - mov r16.y, |r16.y| - mov r16.w, l(1.000000) - dp4 r11.x, r11.xyzw, r16.xyzw - dp4 r11.y, r12.xyzw, r16.xyzw - dp4 r11.z, r13.xyzw, r16.xyzw - max r11.xyz, r11.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - ge r7.w, r15.y, r15.z - and r7.w, r7.w, l(0x3f800000) - mov r12.xy, r15.zyzz - mov r12.zw, l(0,0,-1.000000,0.666666687) - mad r13.xy, r14.yzyy, r8.wwww, -r12.xyxx - mov r13.zw, l(0,0,1.000000,-1.000000) - mad r12.xyzw, r7.wwww, r13.xyzw, r12.xyzw - ge r7.w, r15.x, r12.x - and r7.w, r7.w, l(0x3f800000) - mov r13.xyz, r12.xywx - mov r13.w, r15.x - mov r12.xyw, r13.wywx - add r12.xyzw, -r13.xyzw, r12.xyzw - mad r12.xyzw, r7.wwww, r12.xyzw, r13.xyzw - min r7.w, r12.y, r12.w - add r7.w, -r7.w, r12.x - add r9.w, -r12.y, r12.w - mad r11.w, r7.w, l(6.000000), l(0.000100) - div r9.w, r9.w, r11.w - add r9.w, r9.w, r12.z - frc r9.w, |r9.w| - add r11.w, r12.x, l(0.000100) - div r7.w, r7.w, r11.w - add r13.xyzw, r9.wwww, l(-0.500000, 1.000000, 0.666666687, 0.333333343) - add r9.w, |r13.x|, l(-0.450000) - mul_sat r9.w, r9.w, l(-10.000001) - mad r11.w, r9.w, l(-2.000000), l(3.000000) - mul r9.w, r9.w, r9.w - mul r9.w, r9.w, r11.w - mad r9.w, r9.w, l(-0.350000), l(0.700000) - mov_sat r12.x, r12.x - mul r9.w, r9.w, r12.x - min r7.w, r7.w, r9.w - add r9.w, -r7.w, l(2.000000) - div r9.w, l(2.000000), r9.w - frc r12.xyz, r13.yzwy - mad r12.xyz, r12.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) - add_sat r12.xyz, |r12.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r12.xyz, r12.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) - mad r12.xyz, r7.wwww, r12.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mul r12.xyz, r9.wwww, r12.xyzx - max r7.w, r11.y, r11.x - max r7.w, r11.z, r7.w - mul r8.w, r8.w, r7.w - mov r7.w, l(1.000000) -else - mov r16.xyz, l(0,0,0,0) - mov r15.xyz, l(1.000000,1.000000,1.000000,0) - mov r12.xyz, cb0[188].xyzx - mov r7.w, l(0) -endif -add r9.w, -v2.y, cb1[r2.w + 12].z -add r9.w, r9.w, l(0.200000) -mul_sat r9.w, r9.w, l(2.85714269) -mad r11.x, r9.w, l(-2.000000), l(3.000000) -mul r9.w, r9.w, r9.w -mul r9.w, r9.w, r11.x -mul r9.w, r9.w, cb1[r2.w + 12].y -max r9.w, r9.w, cb1[r2.w + 12].w -add r11.x, r9.w, cb1[r2.w + 12].x -lt r11.x, l(0.010000), r11.x -if_nz r11.x - add r11.x, -r5.x, l(1.000000) - mul r11.yzw, r4.xxyz, r11.xxxx - dp3 r11.y, r11.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r11.y, r11.y, l(-0.350000) - mul_sat r11.y, r11.y, l(-4.000000) - mad r11.z, r11.y, l(-2.000000), l(3.000000) - mul r11.y, r11.y, r11.y - mul r11.w, r11.y, r11.z - mul r13.xyzw, v8.xyxz, l(1.000000, -1.000000, 1.000000, 1.000000) - movc r13.xyzw, cb1[r2.w + 4].wwww, r13.xyzw, v8.xzxy - mul r14.xyzw, r13.xyzw, cb0[196].zzzz - movc r17.yz, cb1[r2.w + 4].wwww, v7.zzyz, v7.yyzy - mov r17.x, v7.x - add r18.xyz, |r17.xyzx|, l(-0.200000, -0.200000, -0.200000, 0.000000) - mul r19.xyz, r18.xyzx, r18.xyzx - mul r18.xyz, r18.xyzx, r19.xyzx - max r18.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - dp3 r12.w, r18.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - div r18.xyz, r18.xyzx, r12.wwww - sample_b_indexable(texture2d)(float,float,float,float) r20.xyzw, r14.zyzz, t10.xyzw, s3, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r14.zwzz, t10.xyzw, s3, cb0[108].x - mul r21.xyzw, r18.zzzz, r21.xyzw - mad r20.xyzw, r20.xyzw, r18.yyyy, r21.xyzw - sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r14.ywyy, t10.xyzw, s3, cb0[108].x - mad r18.xyzw, r21.xyzw, r18.xxxx, r20.xyzw - add r17.yw, -r18.wwww, l(0.000000, 0.800000, 0.000000, 0.450000) - mul r20.xyz, r7.yyxy, l(0.200000, 0.000000, 1.000000, 0.000000) - mad_sat r12.w, cb1[r2.w + 12].x, r11.x, r20.x - add r12.w, -r17.y, r12.w - mul_sat r12.w, r12.w, l(3.33333325) - mad r13.x, r12.w, l(-2.000000), l(3.000000) - mul r12.w, r12.w, r12.w - mul r12.w, r12.w, r13.x - mul_sat r11.x, r9.w, r11.x - add r11.x, -r17.w, r11.x - mul_sat r11.x, r11.x, l(1.53846145) - mad r13.x, r11.x, l(-2.000000), l(3.000000) - mul r11.x, r11.x, r11.x - mul r11.x, r11.x, r13.x - max r11.x, r11.x, r12.w - add r12.w, r5.x, l(-0.500000) - mul_sat r12.w, r12.w, l(4.000000) - mad r13.x, r12.w, l(-2.000000), l(3.000000) - mul r12.w, r12.w, r12.w - mul r12.w, r12.w, r13.x - add r5.w, -r5.w, l(0.199999988) - mul_sat r5.w, r5.w, l(-5.00000048) - mad r13.x, r5.w, l(-2.000000), l(3.000000) - mul r5.w, r5.w, r5.w - mul r5.w, r5.w, r13.x - mad r13.x, r5.w, r11.w, r12.w - min r13.x, r13.x, l(1.000000) - max r9.w, r9.w, cb1[r2.w + 12].x - mad r17.yw, r18.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mul r18.xyw, r14.yzyw, l(20.000000, 20.000000, 0.000000, 20.000000) - mul r21.xyz, r14.yzwy, l(34.345600, 34.345600, 34.345600, 0.000000) - mul r22.xyz, r19.xyzx, r19.xyzx - mul r22.xyz, r22.xyzx, r22.xyzx - mul r19.xyz, r19.xyzx, r22.xyzx - dp3 r15.w, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - div r19.xyz, r19.xyzx, r15.wwww - round_ni r22.xyzw, r18.yxyw - mul r23.xyzw, r22.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r23.xyzw, r23.xyzw - add r24.xyzw, r23.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r15.w, r23.xyxx, r24.xyxx - add r20.xw, r15.wwww, r23.xxxy - mul r15.w, r20.w, r20.x - add r16.w, r20.w, r20.x - frc r15.w, r15.w - frc r25.w, r16.w - add r26.xyzw, r22.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) - mul r26.xyzw, r26.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r26.xyzw, r26.xyzw - add r27.xyzw, r26.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r16.w, r26.xyxx, r27.xyxx - add r20.xw, r16.wwww, r26.xxxy - mul r16.w, r20.w, r20.x - add r18.y, r20.w, r20.x - frc r23.x, r16.w - frc r23.y, r18.y - mad r16.w, r15.w, l(0.399999976), l(0.600000) - mul r18.y, r16.w, l(0.250000) - mad r22.xyzw, r14.zyzw, l(20.000000, 20.000000, 20.000000, 20.000000), -r22.xyzw - mad r20.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r20.xw, r20.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r22.xxxy - add r20.xw, r20.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) - mul r22.x, r20.x, l(1.250000) - lt r19.w, r20.w, l(0.000000) - movc r19.w, r19.w, l(1.250000), l(0.750000) - mul r22.y, r19.w, r20.w - mad r15.w, cb0[102].x, l(3.000000), r15.w - frc r15.w, r15.w - add r20.xw, r15.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) - mul_sat r20.xw, r20.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) - mad r24.xy, r20.xwxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) - mul r20.xw, r20.xxxw, r20.xxxw - mul r20.xw, r20.xxxw, r24.xxxy - mul r15.w, r20.w, r20.x - dp2 r19.w, r22.xyxx, r22.xyxx - sqrt r19.w, r19.w - mad r16.w, -r16.w, l(0.250000), r19.w - div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.y - mul_sat r16.w, r16.w, r19.w - mad r19.w, r16.w, l(-2.000000), l(3.000000) - mul r16.w, r16.w, r16.w - mul r16.w, r16.w, r19.w - ge r16.w, r16.w, l(0.001000) - and r16.w, r16.w, l(0x3f800000) - mul r25.z, r15.w, r16.w - div r20.xw, r22.xxxy, r18.yyyy - max r20.xw, r20.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) - min r20.xw, r20.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - ge r15.w, r25.z, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r20.xw, r15.wwww, r20.xxxw - mad r15.w, r23.x, l(0.250000), l(0.250000) - mul r25.xy, r15.wwww, r20.xwxx - dp2 r15.w, r23.zwzz, r24.zwzz - add r20.xw, r15.wwww, r23.zzzw - mul r15.w, r20.w, r20.x - add r16.w, r20.w, r20.x - frc r15.w, r15.w - frc r23.w, r16.w - dp2 r16.w, r26.zwzz, r27.zwzz - add r20.xw, r16.wwww, r26.zzzw - mul r16.w, r20.w, r20.x - add r18.y, r20.w, r20.x - frc r22.x, r16.w - frc r22.y, r18.y - mad r16.w, r15.w, l(0.399999976), l(0.600000) - mul r18.y, r16.w, l(0.250000) - mad r20.xw, r22.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r20.xw, r20.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r22.zzzw - add r20.xw, r20.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) - mul r24.x, r20.x, l(1.250000) - lt r19.w, r20.w, l(0.000000) - movc r19.w, r19.w, l(1.250000), l(0.750000) - mul r24.y, r19.w, r20.w - mad r15.w, cb0[102].x, l(3.000000), r15.w - frc r15.w, r15.w - add r20.xw, r15.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) - mul_sat r20.xw, r20.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) - mad r22.yz, r20.xxwx, l(0.000000, -2.000000, -2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000) - mul r20.xw, r20.xxxw, r20.xxxw - mul r20.xw, r20.xxxw, r22.yyyz - mul r15.w, r20.w, r20.x - dp2 r19.w, r24.xyxx, r24.xyxx - sqrt r19.w, r19.w - mad r16.w, -r16.w, l(0.250000), r19.w - div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.y - mul_sat r16.w, r16.w, r19.w - mad r19.w, r16.w, l(-2.000000), l(3.000000) - mul r16.w, r16.w, r16.w - mul r16.w, r16.w, r19.w - ge r16.w, r16.w, l(0.001000) - and r16.w, r16.w, l(0x3f800000) - mul r23.z, r15.w, r16.w - div r20.xw, r24.xxxy, r18.yyyy - max r20.xw, r20.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) - min r20.xw, r20.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - ge r15.w, r23.z, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r20.xw, r15.wwww, r20.xxxw - mad r15.w, r22.x, l(0.250000), l(0.250000) - mul r23.xy, r15.wwww, r20.xwxx - round_ni r18.xy, r18.xwxx - mul r20.xw, r18.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r20.xw, r20.xxxw - add r22.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r15.w, r20.xwxx, r22.xyxx - add r20.xw, r15.wwww, r20.xxxw - mul r15.w, r20.w, r20.x - add r16.w, r20.w, r20.x - frc r15.w, r15.w - frc r22.w, r16.w - add r20.xw, r18.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) - mul r20.xw, r20.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r20.xw, r20.xxxw - add r24.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r16.w, r20.xwxx, r24.xyxx - add r20.xw, r16.wwww, r20.xxxw - mul r16.w, r20.w, r20.x - add r18.w, r20.w, r20.x - frc r24.x, r16.w - frc r24.y, r18.w - mad r16.w, r15.w, l(0.399999976), l(0.600000) - mul r18.w, r16.w, l(0.250000) - mad r18.xy, r14.ywyy, l(20.000000, 20.000000, 0.000000, 0.000000), -r18.xyxx - mad r20.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r18.xy, r20.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r18.xyxx - add r18.xy, r18.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - mul r26.x, r18.x, l(1.250000) - lt r18.x, r18.y, l(0.000000) - movc r18.x, r18.x, l(1.250000), l(0.750000) - mul r26.y, r18.x, r18.y - mad r15.w, cb0[102].x, l(3.000000), r15.w - frc r15.w, r15.w - add r18.xy, r15.wwww, l(-0.200000, -0.850000, 0.000000, 0.000000) - mul_sat r18.xy, r18.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) - mad r20.xw, r18.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r18.xy, r18.xyxx, r18.xyxx - mul r18.xy, r18.xyxx, r20.xwxx - mul r15.w, r18.y, r18.x - dp2 r18.x, r26.xyxx, r26.xyxx - sqrt r18.x, r18.x - mad r16.w, -r16.w, l(0.250000), r18.x - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w - mul_sat r16.w, r16.w, r18.x - mad r18.x, r16.w, l(-2.000000), l(3.000000) - mul r16.w, r16.w, r16.w - mul r16.w, r16.w, r18.x - ge r16.w, r16.w, l(0.001000) - and r16.w, r16.w, l(0x3f800000) - mul r22.z, r15.w, r16.w - div r18.xy, r26.xyxx, r18.wwww - max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r15.w, r22.z, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r18.xy, r15.wwww, r18.xyxx - mad r15.w, r24.x, l(0.250000), l(0.250000) - mul r22.xy, r15.wwww, r18.xyxx - mul r23.xyzw, r19.zzzz, r23.xyzw - mad r23.xyzw, r25.xyzw, r19.yyyy, r23.xyzw - mad r22.xyzw, r22.xyzw, r19.xxxx, r23.xyzw - round_ni r23.xyzw, r21.yxyz - mul r24.xyzw, r23.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r24.xyzw, r24.xyzw - add r25.xyzw, r24.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r15.w, r24.xyxx, r25.xyxx - add r18.xy, r15.wwww, r24.xyxx - mul r15.w, r18.y, r18.x - add r16.w, r18.y, r18.x - frc r15.w, r15.w - frc r26.w, r16.w - add r27.xyzw, r23.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) - mul r27.xyzw, r27.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r27.xyzw, r27.xyzw - add r28.xyzw, r27.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r16.w, r27.xyxx, r28.xyxx - add r18.xy, r16.wwww, r27.xyxx - mul r16.w, r18.y, r18.x - add r18.x, r18.y, r18.x - frc r24.x, r16.w - frc r24.y, r18.x - mad r16.w, r15.w, l(0.399999976), l(0.600000) - mul r18.x, r16.w, l(0.250000) - mad r23.xyzw, r14.xyzw, l(34.345600, 34.345600, 34.345600, 34.345600), -r23.xyzw - mad r18.yw, r24.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r18.yw, r18.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r23.xxxy - add r18.yw, r18.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) - mul r23.x, r18.y, l(1.250000) - lt r14.x, r18.w, l(0.000000) - movc r14.x, r14.x, l(1.250000), l(0.750000) - mul r23.y, r14.x, r18.w - mad r14.x, cb0[102].x, l(4.345600), r15.w - frc r14.x, r14.x - add r18.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) - mul_sat r18.yw, r18.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) - mad r20.xw, r18.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r18.yw, r18.yyyw, r18.yyyw - mul r18.yw, r18.yyyw, r20.xxxw - mul r14.x, r18.w, r18.y - dp2 r15.w, r23.xyxx, r23.xyxx - sqrt r15.w, r15.w - mad r15.w, -r16.w, l(0.250000), r15.w - div r16.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.x - mul_sat r15.w, r15.w, r16.w - mad r16.w, r15.w, l(-2.000000), l(3.000000) - mul r15.w, r15.w, r15.w - mul r15.w, r15.w, r16.w - ge r15.w, r15.w, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r26.z, r14.x, r15.w - div r18.xy, r23.xyxx, r18.xxxx - max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r14.x, r26.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r18.xy, r14.xxxx, r18.xyxx - mad r14.x, r24.x, l(0.250000), l(0.250000) - mul r26.xy, r14.xxxx, r18.xyxx - dp2 r14.x, r24.zwzz, r25.zwzz - add r18.xy, r14.xxxx, r24.zwzz - mul r14.x, r18.y, r18.x - add r15.w, r18.y, r18.x - frc r14.x, r14.x - frc r24.w, r15.w - dp2 r15.w, r27.zwzz, r28.zwzz - add r18.xy, r15.wwww, r27.zwzz - mul r15.w, r18.y, r18.x - add r16.w, r18.y, r18.x - frc r18.x, r15.w - frc r18.y, r16.w - mad r15.w, r14.x, l(0.399999976), l(0.600000) - mul r16.w, r15.w, l(0.250000) - mad r18.yw, r18.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r18.yw, r18.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r23.zzzw - add r18.yw, r18.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) - mul r23.x, r18.y, l(1.250000) - lt r18.y, r18.w, l(0.000000) - movc r18.y, r18.y, l(1.250000), l(0.750000) - mul r23.y, r18.y, r18.w - mad r14.x, cb0[102].x, l(4.345600), r14.x - frc r14.x, r14.x - add r18.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) - mul_sat r18.yw, r18.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) - mad r20.xw, r18.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r18.yw, r18.yyyw, r18.yyyw - mul r18.yw, r18.yyyw, r20.xxxw - mul r14.x, r18.w, r18.y - dp2 r18.y, r23.xyxx, r23.xyxx - sqrt r18.y, r18.y - mad r15.w, -r15.w, l(0.250000), r18.y - div r18.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w - mul_sat r15.w, r15.w, r18.y - mad r18.y, r15.w, l(-2.000000), l(3.000000) - mul r15.w, r15.w, r15.w - mul r15.w, r15.w, r18.y - ge r15.w, r15.w, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r24.z, r14.x, r15.w - div r18.yw, r23.xxxy, r16.wwww - max r18.yw, r18.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) - min r18.yw, r18.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) - ge r14.x, r24.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r18.yw, r14.xxxx, r18.yyyw - mad r14.x, r18.x, l(0.250000), l(0.250000) - mul r24.xy, r14.xxxx, r18.ywyy - round_ni r18.xy, r21.xzxx - mul r20.xw, r18.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r20.xw, r20.xxxw - add r21.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r14.x, r20.xwxx, r21.xyxx - add r20.xw, r14.xxxx, r20.xxxw - mul r14.x, r20.w, r20.x - add r15.w, r20.w, r20.x - frc r14.x, r14.x - frc r21.w, r15.w - add r20.xw, r18.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) - mul r20.xw, r20.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r20.xw, r20.xxxw - add r23.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r15.w, r20.xwxx, r23.xyxx - add r20.xw, r15.wwww, r20.xxxw - mul r15.w, r20.w, r20.x - add r16.w, r20.w, r20.x - frc r23.x, r15.w - frc r23.y, r16.w - mad r15.w, r14.x, l(0.399999976), l(0.600000) - mul r16.w, r15.w, l(0.250000) - mad r18.xy, r14.ywyy, l(34.345600, 34.345600, 0.000000, 0.000000), -r18.xyxx - mad r20.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r18.xy, r20.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r18.xyxx - add r18.xy, r18.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - mul r25.x, r18.x, l(1.250000) - lt r18.x, r18.y, l(0.000000) - movc r18.x, r18.x, l(1.250000), l(0.750000) - mul r25.y, r18.x, r18.y - mad r14.x, cb0[102].x, l(4.345600), r14.x - frc r14.x, r14.x - add r18.xy, r14.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) - mul_sat r18.xy, r18.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) - mad r20.xw, r18.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r18.xy, r18.xyxx, r18.xyxx - mul r18.xy, r18.xyxx, r20.xwxx - mul r14.x, r18.y, r18.x - dp2 r18.x, r25.xyxx, r25.xyxx - sqrt r18.x, r18.x - mad r15.w, -r15.w, l(0.250000), r18.x - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w - mul_sat r15.w, r15.w, r18.x - mad r18.x, r15.w, l(-2.000000), l(3.000000) - mul r15.w, r15.w, r15.w - mul r15.w, r15.w, r18.x - ge r15.w, r15.w, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r21.z, r14.x, r15.w - div r18.xy, r25.xyxx, r16.wwww - max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r14.x, r21.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r18.xy, r14.xxxx, r18.xyxx - mad r14.x, r23.x, l(0.250000), l(0.250000) - mul r21.xy, r14.xxxx, r18.xyxx - mul r23.xyzw, r19.zzzz, r24.xyzw - mad r23.xyzw, r26.xyzw, r19.yyyy, r23.xyzw - mad r19.xyzw, r21.xyzw, r19.xxxx, r23.xyzw - max r18.xy, r19.zwzz, r22.zwzz - mad r19.zw, -r13.xxxx, r9.wwww, l(0.000000, 0.000000, 1.000000, 1.010000) - add r14.x, r18.y, l(-0.100000) - ge r14.x, r14.x, r19.z - and r14.x, r14.x, l(0x3f800000) - mul r14.x, r14.x, r18.x - ge r2.w, cb1[r2.w + 12].x, l(0.010000) - and r2.w, r2.w, l(0x3f800000) - mul r2.w, r2.w, r14.x - lt r14.x, l(0.001000), r2.w - add r18.xy, r19.xyxx, r22.xyxx - mul r15.w, cb0[102].x, cb0[196].z - mul r19.y, r15.w, l(0.750000) - dp2 r15.w, r17.xzxx, r17.xzxx - max r15.w, r15.w, l(1.175494351E-38) - rsq r15.w, r15.w - mul r17.xz, r15.wwww, r17.xxzx - add r17.xz, |r17.xxzx|, l(-0.200000, 0.000000, -0.200000, 0.000000) - mul r20.xw, r17.xxxz, r17.xxxz - mul r17.xz, r17.xxzx, r20.xxwx - max r17.xz, r17.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) - dp2 r15.w, r17.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) - div r17.xz, r17.xxzx, r15.wwww - sample_b_indexable(texture2d)(float,float,float,float) r21.xyz, r14.zwzz, t11.xyzw, s3, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r14.yzw, r14.ywyy, t11.wxyz, s3, cb0[108].x - mul r14.yzw, r17.xxxx, r14.yyzw - mad r14.yzw, r21.xxyz, r17.zzzz, r14.yyzw - movc r17.yw, r14.xxxx, r18.xxxy, r17.yyyw - mad r14.xy, r14.yzyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mov r19.x, l(0) - mad r21.xyzw, r13.zwyw, cb0[196].zzzz, r19.xyxy - sample_b_indexable(texture2d)(float,float,float,float) r13.y, r21.xyxx, t11.xwyz, s3, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r13.z, r21.zwzz, t11.xywz, s3, cb0[108].x - mul r13.z, r17.x, r13.z - mad r13.y, r13.y, r17.z, r13.z - mad r13.yz, r14.xxyx, r13.yyyy, r17.yywy - ge r13.w, r18.z, r19.w - and r13.w, r13.w, l(0x3f800000) - max r2.w, r2.w, r13.w - add r13.w, -r14.w, l(1.000000) - mad r9.w, r13.x, r9.w, -r13.w - mul_sat r9.w, r9.w, l(9.999998) - mad r13.x, r9.w, l(-2.000000), l(3.000000) - mul r9.w, r9.w, r9.w - mul r9.w, r9.w, r13.x - max r2.w, r2.w, r9.w - mad r13.xw, -r7.zzzy, l(1.000000, 0.000000, 0.000000, 0.000000), r20.yyyz - dp2 r9.w, r13.xwxx, r13.xwxx - lt r14.x, l(0.0000610351562), r9.w - rsq r9.w, r9.w - mul r13.xw, r9.wwww, r13.xxxw - mov r13.xw, -r13.xxxw - movc r17.z, r14.x, r13.x, l(-1.000000) - and r17.y, r13.w, r14.x - min r9.w, r3.z, l(0.050000) - add r13.x, -r3.z, r9.w - mad r13.x, r2.w, r13.x, r3.z - mad r11.y, -r11.z, r11.y, l(1.000000) - mul r11.y, r11.y, r11.x - mad r5.w, -r5.w, r11.w, l(1.000000) - mul r5.w, r5.w, r11.y - mad r5.w, r5.w, l(-0.500000), l(1.000000) - mov r17.x, l(0) - mad r3.xyw, -r3.xyxw, r6.wwww, r17.zxzy - mad r3.xyw, r13.yyyy, r3.xyxw, r7.xyxz - mul r14.xyz, r7.zxyz, r17.xyzx - mad r14.xyz, r7.yzxy, r17.yzxy, -r14.xyzx - add r14.xyz, -r3.xywx, r14.xyzx - mad r3.xyw, r13.zzzz, r14.xyxz, r3.xyxw - dp3 r6.w, r3.xywx, r3.xywx - rsq r6.w, r6.w - mad r3.xyw, r3.xyxw, r6.wwww, -r7.xyxz - mad r3.xyw, r2.wwww, r3.xyxw, r7.xyxz - dp3 r6.w, r3.xywx, r3.xywx - rsq r6.w, r6.w - mul r3.xyw, r3.xyxw, r6.wwww - mul r6.w, r11.w, r11.x - mad r6.w, -r6.w, l(0.200000), r13.x - min r11.x, r13.x, l(0.200000) - max r3.z, r6.w, r11.x - mul r6.xyz, r5.wwww, r6.xyzx - dp3 r6.w, r4.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r6.w, r6.w, l(-0.700000) - mul_sat r6.w, r6.w, l(-2.50000024) - mad r11.x, r6.w, l(-2.000000), l(3.000000) - mul r6.w, r6.w, r6.w - mul r6.w, r6.w, r11.x - mad r6.w, r6.w, l(0.500000), l(1.000000) - mul r11.x, r12.w, r2.w - mad r11.yzw, r4.xxyz, r6.wwww, -r4.xxyz - mad r11.xyz, r11.xxxx, r11.yzwy, r4.xyzx - mul r4.xyz, r5.wwww, r11.xyzx -else - mov r3.xyw, r7.xyxz - mov r9.w, l(0.010000) - mov r2.w, l(0) -endif -mul r5.w, r5.y, l(0.040000) -mad r6.w, -r5.x, l(0.960000), l(0.960000) -mul r11.xyz, r4.xyzx, r6.wwww -mad r13.xyz, -r5.yyyy, l(0.040000, 0.040000, 0.040000, 0.000000), r4.xyzx -mad r13.xyz, r5.xxxx, r13.xyzx, r5.wwww -mul r6.xyz, r6.wwww, r6.xyzx -mul r5.y, r3.z, r3.z -max r5.y, r5.y, l(0.00781250000) -max r5.w, v5.z, l(9.999999939E-09) -div r14.xy, v5.xyxx, r5.wwww -max r5.w, v6.z, l(9.999999939E-09) -div r14.zw, v6.xxxy, r5.wwww -add r14.xy, -r14.zwzz, r14.xyxx -mul r17.xy, r14.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) -sqrt r17.xy, |r17.xyxx| -sqrt r17.xy, r17.xyxx -mov r14.z, -r14.y -lt r14.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r14.xxxz -lt r14.xz, r14.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r14.xy, -r14.ywyy, r14.xzxx -itof r14.xy, r14.xyxx -mul r14.xy, r14.xyxx, r17.xyxx -mad o1.xy, r14.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -lt r5.w, l(0.500000), r2.w -movc o1.w, r5.w, l(0.700000), l(0.400000) -add r14.xyz, cb0[197].xyzx, cb3[0].xyzx -mad r14.xyz, cb0[187].wwww, r14.xyzx, -cb3[0].xyzx -mov r14.w, l(0.0000610351562) -dp3 r5.w, r14.xzwx, r14.xzwx -rsq r5.w, r5.w -mul r17.xyz, r5.wwww, r14.xwzx -add r18.xyz, cb0[191].xyzx, -cb3[3].xyzx -mad r18.xyz, cb0[198].yyyy, r18.xyzx, cb3[3].xyzx -add r5.w, l(1.000000), -cb3[3].w -mad r5.w, cb0[198].w, r5.w, cb3[3].w -mul r19.xyz, r5.wwww, r18.xyzx -mov r10.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r20.xy, r10.xyzz, t3.xyzw -add r10.z, r20.x, l(-1.000000) -mad r10.z, cb4[34].x, r10.z, l(1.000000) -add r11.w, -r10.z, l(1.000000) -mad r10.z, cb0[187].z, r11.w, r10.z -dp3 r11.w, r7.xyzx, r14.xyzx -mul r20.xzw, r6.xxyz, cb0[186].zzzz -mul r21.xyz, r20.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000) -dp3 r12.w, r11.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -dp2 r13.w, cb0[6].xzxx, cb0[6].xzxx -rsq r13.w, r13.w -mul r22.xy, r13.wwww, cb0[6].xzxx -dp2 r13.w, r17.xzxx, r22.xyxx -mov_sat r13.w, -r13.w -add r22.xy, l(1.000000, 1.000000, 0.000000, 0.000000), -cb0[198].xyxx -mad r14.w, r11.w, l(0.500000), l(-1.000000) -mad r14.w, -r11.w, r14.w, -r11.w -add r15.w, l(0.750000), -|cb0[6].y| -add_sat r15.w, r15.w, r15.w -mad r16.w, r15.w, l(-2.000000), l(3.000000) -mul r15.w, r15.w, r15.w -mul r15.w, r15.w, r16.w -mul r15.w, r13.w, r15.w -mul r15.w, r22.x, r15.w -add r14.w, r14.w, l(0.500000) -mad r11.w, r15.w, r14.w, r11.w -mad r11.w, cb0[197].w, cb0[198].x, r11.w -max r11.w, r11.w, l(-1.000000) -min r11.w, r11.w, l(1.000000) -add r11.w, r11.w, l(-0.250000) -mul r11.w, r11.w, l(1.33333337) -max r11.w, r11.w, l(0.000000) -mad r14.w, r11.w, l(-2.000000), l(3.000000) -mul r11.w, r11.w, r11.w -mul r11.w, r11.w, r14.w -dp3 r14.w, r7.xyzx, cb0[6].xyzx -add r14.w, r14.w, l(-0.250000) -mul_sat r14.w, r14.w, l(1.33333337) -mad r15.w, r14.w, l(-2.000000), l(3.000000) -mul r14.w, r14.w, r14.w -mul r14.w, r14.w, r15.w -mul r15.w, r5.z, r20.y -min r16.w, r5.z, r20.y -min r17.w, r11.w, r16.w -mul r18.w, r14.w, r15.w -dp3 r19.w, r7.xyzx, cb0[192].xyzx -add_sat r19.w, r19.w, cb0[193].x -mad r19.w, r19.w, cb0[193].y, cb0[193].z -mul r21.w, r17.w, cb0[187].y -add r23.xyz, -r12.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r23.xyz, r21.wwww, r23.xyzx, r12.xyzx -mul r23.xyz, r19.wwww, r23.xyzx -mad r19.w, r8.w, l(0.350000024), l(0.650000) -min r19.w, r19.w, l(1.500000) -max r24.xyz, r8.wwww, l(1.250000, 0.000000, 0.500000, 0.000000) -min r24.xyz, r24.xyzx, l(1.750000, 1.500000, 1.500000, 0.000000) -add r8.w, -r19.w, r24.x -mad r8.w, cb0[187].x, r8.w, r19.w -mul r25.xyz, r8.wwww, r23.xyzx -mul r25.xyz, r25.xyzx, cb0[186].wwww -dp3 r8.w, r19.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r19.xyz, r18.xyzx, r5.wwww, -r8.wwww -mad r19.xyz, r17.wwww, r19.xyzx, r8.wwww -mul r23.xyz, r23.xyzx, r24.yyyy -mad r22.yzw, r18.xxyz, cb0[198].yyyy, r22.yyyy -mad r19.xyz, r23.xyzx, r22.yzwy, r19.xyzx -mad r19.xyz, r19.xyzx, cb0[186].yyyy, -r25.xyzx -mad r19.xyz, r10.zzzz, r19.xyzx, r25.xyzx -dp3 r8.w, r21.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r21.xyz, r20.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000), -r8.wwww -mad r21.xyz, r21.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r8.wwww -mad_sat r8.w, r14.w, r15.w, r11.w -mad r22.yzw, r6.xxyz, cb0[186].zzzz, -r21.xxyz -mad r21.xyz, r8.wwww, r22.yzwy, r21.xyzx -mad r22.yzw, r4.xxyz, r6.wwww, -r21.xxyz -mad r21.xyz, r17.wwww, r22.yzwy, r21.xyzx -mad r22.yzw, r4.xxyz, r6.wwww, -r12.wwww -mad r22.yzw, r22.yyzw, l(0.000000, 1.200000, 1.200000, 1.200000), r12.wwww -mad r22.yzw, -r6.xxyz, cb0[186].zzzz, r22.yyzw -mad r20.xzw, r18.wwww, r22.yyzw, r20.xxzw -dp3 r8.w, r21.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -max r11.w, r8.w, l(0.001000) -div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w -mul r8.w, r8.w, r11.w -max r8.w, r8.w, l(0.000000) -min r8.w, r8.w, l(1.500000) -mad r21.xyz, r21.xyzx, r8.wwww, -r20.xzwx -mad r20.xzw, r10.zzzz, r21.xxyz, r20.xxzw -mad r8.w, -r14.w, r15.w, r17.w -mad r8.w, r10.z, r8.w, r18.w -add r11.w, l(1.000000), -cb0[186].z -mad r11.w, r8.w, r11.w, cb0[186].z -add r14.w, r14.y, l(-0.500000) -mad r21.y, r10.z, r14.w, l(0.500000) -dp3_sat r23.x, r3.xywx, r2.xyzx -mov r21.xz, cb0[6].xxzx -dp3 r14.w, r21.xyzx, r21.xyzx -max r14.w, r14.w, l(1.175494351E-38) -rsq r14.w, r14.w -mul r21.xyz, r14.wwww, r21.xyzx -add r21.xyz, r21.xyzx, r21.xyzx -mad r14.xyz, r14.xyzx, r10.zzzz, r21.xyzx -add r14.w, r10.z, l(2.000000) -mad r14.xyz, r2.xyzx, r14.wwww, r14.xyzx -dp3 r14.w, r14.xyzx, r14.xyzx -rsq r14.w, r14.w -mul r14.xyz, r14.wwww, r14.xyzx -dp3 r14.x, r3.xywx, r14.xyzx -mul r14.y, r5.y, r5.y -mad r14.z, r14.x, r14.y, -r14.x -mad r14.x, r14.z, r14.x, l(1.000000) -mul r14.x, r14.x, r14.x -add r14.z, l(1.000000), -cb5[1].z -mad r14.z, r4.w, cb5[1].z, r14.z -mul r21.xyz, r19.xyzx, r20.xzwx -ne r14.w, r14.x, r14.y -div r14.x, r14.y, r14.x -movc r14.x, r14.w, r14.x, l(1.000000) -mad r14.y, r23.x, l(2.000000), r5.y -add r14.y, r14.y, l(0.000100) -div r14.y, l(0.500000), r14.y -mad r14.x, r14.x, r14.y, l(-0.0000610351562) -max r14.x, r14.x, l(0.000000) -min r14.x, r14.x, l(20.000000) -mul r14.xyw, r13.xyxz, r14.xxxx -mad r8.w, r8.w, l(0.500000), l(0.500000) -mul r8.w, r11.w, r8.w -mul r19.xyz, r8.wwww, r19.xyzx -mul r14.xyw, r14.xyxw, r19.xyxz -mul r14.xyw, r14.xyxw, cb0[199].wwww -mad r14.xyw, r21.xyxz, r14.zzzz, r14.xyxw -dp3 r8.w, r14.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r15.w, r8.w, l(-0.500000) -max r15.w, r15.w, l(0.000000) -min r15.w, r15.w, l(0.500000) -mov r19.y, l(0) -mov r19.xz, cb0[195].yyxy -mul r21.xyz, r19.xyzx, cb0[6].zxyz -mad r19.xyz, cb0[6].yzxy, r19.yzxy, -r21.xyzx -dp3 r17.w, r19.xyzx, r19.xyzx -rsq r17.w, r17.w -mul r19.xyz, r17.wwww, r19.xyzx -dp3 r17.w, r2.xyzx, r7.xyzx -add r21.xy, -|r17.wwww|, l(1.000000, 0.399999976, 0.000000, 0.000000) -dp3 r17.x, r17.xyzx, r7.xyzx -add r17.y, -r10.z, l(1.000000) -add r9.w, -r3.z, r9.w -mad r2.w, r2.w, r9.w, r3.z -mul r25.y, r2.w, r2.w -mul r26.x, r23.x, r23.x -mul r26.z, r23.x, r26.x -mul r9.w, r25.y, r25.y -mul r25.z, r25.y, r9.w -mov r23.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r24.x, l(3.327070, 1.000000, 0.000000, 0.000000), r23.xyxx -dp2 r24.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r23.xzxx -mov r25.x, l(1.000000) -dp2 r9.w, r24.xyxx, r25.xyxx -mov r26.yw, l(0,9.044010,0,1.000000) -dp3 r27.x, l(3.596850, -1.367720, 1.000000, 0.000000), r26.xzwx -dp3 r27.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r26.xyzx -mov r28.x, l(5.565890) -mov r28.yz, r26.xxzx -dp3 r27.z, l(1.000000, 19.788601, -20.212299, 0.000000), r28.xyzx -dp3 r17.z, r27.xyzx, r25.xyzx -div r9.w, r9.w, r17.z -dp2 r24.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r23.xwxx -mov r26.x, l(1.296780) -mov r26.y, r23.x -dp2 r24.y, l(1.000000, -0.755907, 0.000000, 0.000000), r26.xyxx -dp2 r17.z, r24.xyxx, r25.xyxx -dp3 r27.x, l(2.923380, 59.418800, 1.000000, 0.000000), r26.yzwy -mov r26.xw, l(20.322500,0,0,121.563004) -dp3 r27.y, l(1.000000, -27.030199, 222.591995, 0.000000), r26.xyzx -dp3 r27.z, l(626.130005, 316.627014, 1.000000, 0.000000), r26.yzwy -dp3 r18.w, r27.xyzx, r25.xyzx -div r17.z, r17.z, r18.w -mad r22.yzw, r13.xxyz, r9.wwww, r17.zzzz -add r9.w, r9.w, r17.z -mad r15.w, r15.w, r15.w, l(1.000000) -add r14.xyw, -r8.wwww, r14.xyxw -mad r14.xyw, r15.wwww, r14.xyxw, r8.wwww -mad r21.zw, cb0[195].wwww, l(0.000000, 0.000000, -0.600000, -0.399999976), l(0.000000, 0.000000, 0.800000, 0.900000) -add r8.w, -r21.z, r21.w -add r15.w, -r21.z, r21.x -div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w -mul_sat r8.w, r8.w, r15.w -mad r15.w, r8.w, l(-2.000000), l(3.000000) -mul r8.w, r8.w, r8.w -mul r8.w, r8.w, r15.w -mul r23.yzw, r8.wwww, cb0[194].xxyz -mul r23.yzw, r23.yyzw, cb0[194].wwww -dp3 r8.w, r8.xyzx, r19.xyzx -add_sat r8.w, r8.w, l(1.000000) -min r5.z, r5.z, r8.w -min r5.z, r20.y, r5.z -mul r23.yzw, r5.zzzz, r23.yyzw -mad r24.xyw, r4.xyxz, r6.wwww, l(-0.250000, -0.250000, 0.000000, -0.250000) -mad r24.xyw, cb0[195].zzzz, r24.xyxw, l(0.250000, 0.250000, 0.000000, 0.250000) -dp3_sat r5.z, r19.xyzx, r7.xyzx -mul r19.xyz, r5.zzzz, r24.xywx -max r5.z, r15.y, r15.x -max r5.z, r15.z, r5.z -mul r5.z, r5.z, l(0.500000) -max r5.z, r5.z, l(1.000000) -div r5.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z -mul r15.xyz, r5.zzzz, r15.xyzx -mad r18.xyz, r18.xyzx, r5.wwww, -r15.xyzx -mad r15.xyz, r10.zzzz, r18.xyzx, r15.xyzx -dp3 r5.z, r16.xyzx, r7.xyzx -mul r5.w, r7.w, r5.z -mad r8.w, r17.x, l(0.500000), l(-1.000000) -mad r8.w, -r17.x, r8.w, l(0.500000) -mad r5.z, -r5.z, r7.w, r8.w -mad_sat r5.z, r10.z, r5.z, r5.w -mul r15.xyz, r5.zzzz, r15.xyzx -mad r5.z, r13.w, r10.z, r17.y -mul r5.z, r22.x, r5.z -mul r15.xyz, r5.zzzz, r15.xyzx -mul_sat r5.z, r21.y, l(5.00000048) -mad r5.w, r5.z, l(-2.000000), l(3.000000) -mul r5.z, r5.z, r5.z -mul r5.z, r5.z, r5.w -mul r15.xyz, r5.zzzz, r15.xyzx -mul r15.xyz, r16.wwww, r15.xyzx -add r5.z, r12.w, l(-0.100000) -mul_sat r5.z, r5.z, l(-16.666666) -mad r5.w, r5.z, l(-2.000000), l(3.000000) -mul r5.z, r5.z, r5.z -mul r5.z, r5.z, r5.w -mad r5.z, r5.z, r10.z, r17.y -mul r15.xyz, r5.zzzz, r15.xyzx -max r16.xyz, r11.xyzx, l(0.150000, 0.150000, 0.150000, 0.000000) -mul r15.xyz, r15.xyzx, r16.xyzx -mad r15.xyz, r23.yzwy, r19.xyzx, r15.xyzx -add r14.xyw, r14.xyxw, r15.xyxz -utof r5.zw, r10.xxxy -mul r15.xy, r5.zwzz, l(0.031250, 0.031250, 0.000000, 0.000000) -round_ni r15.xy, r15.xyxx -mad r7.w, r15.y, cb2[1].y, r15.x -mul r7.w, r7.w, l(8.000000) -ftoi r7.w, r7.w -mad r8.w, -cb0[85].y, cb2[2].w, v0.w -round_ni r8.w, r8.w -add r10.z, l(-1.000000), cb2[1].w -max r12.w, r8.w, l(0.000000) -min r10.z, r10.z, r12.w -mul r12.w, r10.z, l(8.000000) -ftoi r12.w, r12.w -dp3 r13.w, -r2.xyzx, r3.xywx -add r13.w, r13.w, r13.w -mad r15.xyz, r3.xywx, -r13.wwww, -r2.xyzx -max r2.w, r2.w, l(0.001000) -log r2.w, r2.w -mad r2.w, r2.w, l(1.200000), l(5.000000) -sample_l_indexable(texturecube)(float,float,float,float) r15.xyz, r15.xyzx, t15.xyzw, s0, r2.w -add r2.w, -r9.w, l(1.000000) -div r2.w, r2.w, r9.w -mul r16.xyz, r2.wwww, r13.xyzx -mad r16.xyz, r16.xyzx, r22.yzwy, r22.yzwy -mul r15.xyz, r15.xyzx, r16.xyzx -mul r2.w, r24.z, cb0[186].w -mul r2.w, r11.w, r2.w -mul r15.xyz, r2.wwww, r15.xyzx -mad r12.xyz, r15.xyzx, r12.xyzx, r14.xywx -ge r2.w, r10.z, r8.w -iadd r8.w, r12.w, cb0[110].y -mad r9.w, r17.y, l(-0.250000), l(0.750000) -mad r4.xyz, r4.xyzx, r6.wwww, l(-0.500000, -0.500000, -0.500000, 0.000000) -add r6.w, -r5.y, l(0.010000) -ge r5.x, r5.x, l(0.500000) -and r5.x, r5.x, l(0x3f800000) -mov r15.w, l(1.000000) -mov r14.xyw, r12.xyxz -mov r10.z, l(0) -loop - ilt r11.w, l(7), r10.z - breakc_nz r11.w - iadd r11.w, r7.w, r10.z - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx - iadd r12.w, r8.w, r10.z - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx - and r11.w, r11.w, r12.w - and r11.w, r2.w, r11.w - ishl r12.w, r10.z, l(5) - mov r16.xyz, r14.xywx - mov r13.w, r11.w - loop - breakc_z r13.w - firstbit_lo r16.w, r13.w - ishl r17.x, l(1), r16.w - xor r17.x, r13.w, r17.x - iadd r16.w, r12.w, r16.w - bfi r18.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 5, 6, 7) - ftou r17.y, cb3[r18.y + 6].w - ieq r17.y, r17.y, l(1) - if_nz r17.y - add r15.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx - and r19.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r18.y + 6].xzyx - and r21.yzw, l(0, 0x0000ffff, 0x0000ffff, 0x0000ffff), cb3[r18.z + 6].yyxz - ushr r22.xyz, cb3[r18.y + 6].xzyx, l(16, 16, 16, 0) - ushr r23.yzw, cb3[r18.z + 6].yyxz, l(0, 16, 16, 16) - f16tof32 r19.xyz, r19.xyzx - f16tof32 r21.yzw, r21.yyzw - f16tof32 r22.xyz, r22.xyzx - f16tof32 r24.xyw, r23.zyzw - mov r25.xz, r19.xxzx - mov r25.yw, r22.xxxz - dp4 r17.y, r15.xyzw, r25.xyzw - mov r22.x, r19.y - mov r22.z, r21.z - mov r22.w, r24.x - dp4 r17.z, r15.xyzw, r22.xyzw - mov r24.xz, r21.yywy - dp4 r15.x, r15.xyzw, r24.xyzw - max r15.y, |r17.z|, |r17.y| - max r15.x, |r15.x|, r15.y - mad r15.y, cb3[r18.w + 6].x, l(0.500000), l(0.500000) - add r15.x, -r15.y, r15.x - mad r15.y, -cb3[r18.w + 6].x, l(0.500000), l(0.500000) - div_sat r15.x, r15.x, r15.y - add r15.x, -r15.x, l(1.000000) - mul r15.x, r15.x, r15.x - else - mov r15.x, l(1.000000) - endif - lt r15.y, r15.x, l(0.001000) - if_nz r15.y - mov r13.w, r17.x - continue - endif - ishl r15.y, r16.w, l(3) - lt r15.z, cb3[r15.y + 6].w, l(1.500000) - if_nz r15.z - bfi r15.z, l(29), l(3), r16.w, l(3) - ieq r17.y, l(16), cb3[r15.z + 6].w - add r17.z, cb0[198].z, cb3[r15.z + 6].z - lt r17.z, r17.z, l(0.500000) - or r17.y, r17.z, r17.y - if_z r17.y - bfi r17.yz, l(0, 29, 29, 0), l(0, 3, 3, 0), r16.wwww, l(0, 2, 4, 0) - ftou r16.w, cb3[r15.y + 6].w - and r16.w, r16.w, l(1) - ieq r18.y, r16.w, l(0) - not r18.y, r18.y - lt r19.x, l(0.000000), cb3[r17.y + 6].z - and r18.y, r18.y, r19.x - ieq r19.x, l(4), cb3[r15.z + 6].w - movc r19.y, r16.w, l(0), l(1.000000) - mad r19.z, cb3[r17.y + 6].y, l(0.500000), l(0.500000) - add r22.z, r19.z, -|cb3[r17.y + 6].x| - add r22.x, -r22.z, cb3[r17.y + 6].y - add r19.z, -|r22.z|, l(1.000000) - add r19.z, -|r22.x|, r19.z - max r19.z, r19.z, l(0.000488281250) - ge r19.w, cb3[r17.y + 6].x, l(0.000000) - movc r22.y, r19.w, r19.z, -r19.z - dp3 r19.z, r22.xyzx, r22.xyzx - rsq r19.z, r19.z - mul r21.yzw, r19.zzzz, r22.xxyz - add r19.z, cb3[r17.z + 6].y, cb3[r17.z + 6].y - max r19.z, r19.z, l(0.100000) - and r19.w, r19.x, l(0x3f800000) - add r19.z, r19.z, -cb3[r18.z + 6].w - mad r18.z, r19.w, r19.z, cb3[r18.z + 6].w - add r22.xyz, -v2.xyzx, cb3[r18.x + 6].xyzx - dp3 r19.z, r22.yzxy, -r21.yzwy - lt r19.w, l(0.500000), cb3[r17.z + 6].z - and r19.w, r19.w, r19.x - and r19.w, r19.w, l(0x3f800000) - mul r19.w, r19.y, r19.w - mad r23.yzw, -r21.wwyz, r19.zzzz, -r22.xxyz - mad r22.xyz, r19.wwww, r23.yzwy, r22.xyzx - dp3 r19.z, r22.xyzx, r22.xyzx - rsq r19.w, r19.z - mul r23.yzw, r19.wwww, r22.xxyz - if_nz r18.y - mul r24.xyz, r21.wyzw, cb3[r17.y + 6].zzzz - mad r25.xyz, -r24.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r22.xyzx - mad r24.xyz, r24.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r22.xyzx - dp3 r19.w, r25.xyzx, r25.xyzx - sqrt r19.w, r19.w - dp3 r20.y, r24.xyzx, r24.xyzx - sqrt r20.y, r20.y - mul r26.xyz, r21.yzwy, r23.yzwy - mad r26.xyz, r21.wyzw, r23.zwyz, -r26.xyzx - mul r27.xyz, r21.yzwy, r26.xyzx - mad r26.xyz, r26.zxyz, r21.zwyz, -r27.xyzx - dp3 r22.w, r26.xyzx, r26.xyzx - rsq r22.w, r22.w - mul r23.yzw, r22.wwww, r26.xxyz - dp3 r22.w, r25.xyzx, r24.xyzx - mad r22.w, r19.w, r20.y, r22.w - mad r22.w, r22.w, l(0.500000), l(1.000000) - div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w - dp3 r24.w, r23.yzwy, r25.xyzx - div r19.w, r24.w, r19.w - dp3 r24.x, r23.yzwy, r24.xyzx - div r20.y, r24.x, r20.y - add r19.w, r19.w, r20.y - mul_sat r19.w, r19.w, l(0.500000) - mul r19.w, r19.w, r22.w - else - mov r19.w, l(1.000000) - endif - lt r20.y, r18.z, l(0.000000) - if_nz r20.y - mul r20.y, cb3[r18.x + 6].w, cb3[r18.x + 6].w - mul r20.y, r19.z, r20.y - mad r20.y, -r20.y, r20.y, l(1.000000) - max r20.y, r20.y, l(0.000000) - add r19.z, r19.z, l(1.000000) - div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z - and r22.w, r18.y, l(0x3f800000) - add r24.x, -r19.z, r19.w - mad r19.z, r22.w, r24.x, r19.z - mul r20.y, r20.y, r20.y - mul r19.z, r19.z, r20.y - else - mul r24.xyz, r22.xyzx, cb3[r18.x + 6].wwww - dp3 r20.y, r24.xyzx, r24.xyzx - min r20.y, r20.y, l(1.000000) - add r20.y, -r20.y, l(1.000000) - log r20.y, r20.y - mul r18.z, r18.z, r20.y - exp r18.z, r18.z - mul r19.z, r18.z, r19.w - endif - dp3 r18.z, r23.zwyz, -r21.yzwy - add r18.z, r18.z, -cb3[r17.y + 6].z - mul_sat r18.z, r18.z, cb3[r17.y + 6].w - mad r18.z, r18.z, r18.z, l(-1.000000) - mad r18.z, r19.y, r18.z, l(1.000000) - mul r18.z, r18.z, r19.z - ftoi r19.y, cb3[r18.w + 6].w - not r18.y, r18.y - ige r19.z, r19.y, l(0) - and r18.y, r18.y, r19.z - if_nz r18.y - if_z r16.w - ishl r18.y, r19.y, l(2) - mul r21.yzw, v2.yyyy, cb6[r18.y + 33].xxyw - mad r21.yzw, cb6[r18.y + 32].xxyw, v2.xxxx, r21.yyzw - mad r21.yzw, cb6[r18.y + 34].xxyw, v2.zzzz, r21.yyzw - add r21.yzw, r21.yyzw, cb6[r18.y + 35].xxyw - div_sat r19.zw, r21.yyyz, r21.wwww - mad r19.zw, r19.zzzw, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy - else - ishl r18.y, r19.y, l(2) - dp3 r24.x, -r22.xyzx, cb6[r18.y + 32].xyzx - dp3 r24.y, -r22.xyzx, cb6[r18.y + 33].xyzx - dp3 r24.z, -r22.xyzx, cb6[r18.y + 34].xyzx - lt r18.y, |r24.x|, |r24.y| - and r18.y, r18.y, l(1) - dp2 r20.y, |r24.xyxx|, icb[r18.y + 0].xyxx - lt r20.y, r20.y, |r24.z| - movc r18.y, r20.y, l(2), r18.y - dp3 r20.y, r24.xyzx, icb[r18.y + 0].xyzx - lt r20.y, r20.y, l(0.000000) - bfi r18.y, l(31), l(1), r18.y, r20.y - ushr r20.y, r18.y, l(1) - dp3 r20.y, r24.xyzx, icb[r20.y + 0].xyzx - div r21.y, l(0.000244140625), cb6[r19.y + 0].w - add r21.y, -r21.y, l(0.500000) - utof r21.z, r18.y - ult r21.w, r18.y, l(2) - and r21.w, r21.w, l(2) - dp2 r21.w, r24.xzxx, icb[r21.w + 0].xzxx - mul r21.w, r21.w, icb[r18.y + 4].z - div r21.w, r21.w, |r20.y| - mad r21.z, r21.w, r21.y, r21.z - add r21.z, r21.z, l(0.500000) - mul_sat r22.x, r21.z, l(0.166666672) - iadd r21.z, l(-1), icb[r18.y + 4].y - dp2 r21.z, r24.yzyy, icb[r21.z + 0].xyxx - mul r18.y, r21.z, icb[r18.y + 4].w - div r18.y, r18.y, |r20.y| - mad_sat r22.y, -r18.y, r21.y, l(0.500000) - mad r19.zw, r22.xxxy, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy - endif - sample_l_indexable(texture2d)(float,float,float,float) r18.y, r19.zwzz, t16.yxzw, s0, l(0.000000) - mul r18.z, r18.y, r18.z - endif - mul r15.x, r15.x, r18.z - lt r18.y, l(0.000100), r15.x - if_nz r18.y - if_nz r19.x - add r18.y, l(1.000000), -cb3[r17.z + 6].w - dp3 r18.z, r9.xyzx, r23.yzwy - add_sat r18.z, r18.z, l(0.500000) - mad r19.y, r18.z, l(-2.000000), l(3.000000) - mul r18.z, r18.z, r18.z - mul r18.z, r18.z, r19.y - mad r18.y, r18.z, cb3[r17.z + 6].w, r18.y - mul r18.y, r18.y, cb3[r17.z + 6].x - mul r18.y, r15.x, r18.y - add r19.yzw, -r16.xxyz, cb3[r15.y + 6].xxyz - mad r19.yzw, r18.yyyy, r19.yyzw, r16.xxyz - endif - if_z r19.x - dp3 r18.y, r7.xyzx, r23.yzwy - mov_sat r18.z, r18.y - if_nz cb3[r15.z + 6].w - if_z r16.w - ftoi r16.w, cb3[r15.z + 6].x - else - add r21.yzw, v2.xxyz, -cb3[r18.x + 6].xxyz - lt r22.xyz, |r21.zwwz|, |r21.yyzy| - and r20.y, r22.y, r22.x - lt r21.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r21.yyzw - ushr r22.x, cb3[r17.y + 6].w, l(24) - ubfe r22.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb3[r17.y + 6].wwww - movc r21.y, r21.y, r22.x, r22.y - and r17.y, l(255), cb3[r17.y + 6].w - movc r17.y, r21.z, r22.w, r17.y - ubfe r21.z, l(8), l(8), cb3[r15.z + 6].x - and r22.x, l(255), cb3[r15.z + 6].x - movc r21.z, r21.w, r21.z, r22.x - movc r17.y, r22.z, r17.y, r21.z - movc r17.y, r20.y, r21.y, r17.y - ilt r20.y, r17.y, l(80) - movc r16.w, r20.y, r17.y, l(-1) - endif - ige r17.y, r16.w, l(0) - if_nz r17.y - add r21.yzw, v2.xxyz, -cb3[r18.x + 6].xxyz - ishl r17.y, r16.w, l(2) - dp3 r18.x, r21.yzwy, r21.yzwy - max r18.x, r18.x, l(1.175494351E-38) - rsq r18.x, r18.x - mul r21.yzw, r18.xxxx, r21.yyzw - mad r21.yzw, -r21.yyzw, cb4[r16.w + 288].xxxx, v2.xxyz - mul r18.x, l(5.000000), cb4[r16.w + 288].y - mad r21.yzw, r9.xxyz, r18.xxxx, r21.yyzw - mul r22.xyzw, r21.zzzz, cb4[r17.y + 65].xyzw - mad r22.xyzw, cb4[r17.y + 64].xyzw, r21.yyyy, r22.xyzw - mad r22.xyzw, cb4[r17.y + 66].xyzw, r21.wwww, r22.xyzw - add r22.xyzw, r22.xyzw, cb4[r17.y + 67].xyzw - div r21.yzw, r22.xxyz, r22.wwww - ge r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.yzwy - ge r24.xyz, r21.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) - add r25.xy, -cb4[r16.w + 344].xyxx, cb4[r16.w + 344].zwzz - mad r21.yz, r21.yyzy, r25.xxyx, cb4[r16.w + 344].xxyx - mad r25.xy, r21.yzyy, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r25.xy, r25.xyxx - mad r21.yz, r21.yyzy, cb4[400].zzwz, -r25.xxyx - add r26.xyzw, r21.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r27.xyzw, r26.xxzz, r26.xxzz - add r25.zw, -r21.yyyz, l(0.000000, 0.000000, 1.000000, 1.000000) - min r26.xz, r21.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r28.xy, r21.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy - add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r21.yz, r27.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r21.yyzy - mul r30.xy, r21.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r21.yz, -r26.xxzx, r26.xxzx, r25.zzwz - add r21.yz, r21.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r31.xy, r21.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r21.yz, r26.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r30.z, r31.x - mov r30.w, r21.y - mov r29.z, r28.x - mov r29.w, r27.x - add r26.xyzw, r29.zwxz, r30.zwxz - mov r31.z, r30.y - mov r31.w, r21.z - mov r28.z, r29.y - mov r28.w, r27.z - add r27.xyz, r28.zywz, r31.zywz - div r29.xyz, r29.xzwx, r26.zwyz - add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r29.xyz, r29.yxzy, cb4[400].xxxx - div r28.xyz, r28.zywz, r27.xyzx - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyz, r28.xyzx, cb4[400].yyyy - mov r29.w, r28.x - mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r29.ywxw - mad r21.yz, r25.xxyx, cb4[400].xxyx, r29.zzwz - mov r28.w, r29.y - mov r29.yw, r28.yyyz - mad r31.xyzw, r25.xyxy, cb4[400].xyxy, r29.xyzy - mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz - mad r25.xyzw, r25.xyxy, cb4[400].xyxy, r29.xwzw - mul r29.xyzw, r26.zwyz, r27.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r30.xyxx, t2.xxxx, s2, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.zwzz, t2.xxxx, s2, r21.w - mul r18.x, r18.x, r29.y - mad r17.y, r29.x, r17.y, r18.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r21.yzyy, t2.xxxx, s2, r21.w - mad r17.y, r29.z, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.xyxx, t2.xxxx, s2, r21.w - mad r17.y, r29.w, r18.x, r17.y - mul r29.xyzw, r26.xyzw, r27.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r31.xyxx, t2.xxxx, s2, r21.w - mad r17.y, r29.x, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r31.zwzz, t2.xxxx, s2, r21.w - mad r17.y, r29.y, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.zwzz, t2.xxxx, s2, r21.w - mad r17.y, r29.z, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r25.xyxx, t2.xxxx, s2, r21.w - mad r17.y, r29.w, r18.x, r17.y - or r22.xyz, r22.xyzx, r24.xyzx - or r18.x, r22.y, r22.x - or r18.x, r22.z, r18.x - and r20.y, r21.w, l(0x7fffffff) - ult r20.y, l(0x7f800000), r20.y - or r18.x, r18.x, r20.y - mul r20.y, r26.y, r27.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.y, r25.zwzz, t2.xxxx, s2, r21.w - mad r17.y, r20.y, r21.y, r17.y - add r17.y, r17.y, l(-1.000000) - mad r16.w, cb4[r16.w + 288].w, r17.y, l(1.000000) - movc r16.w, r18.x, l(1.000000), r16.w - else - dp3 r17.y, r8.xyzx, r23.yzwy - add_sat r16.w, r17.y, l(1.000000) - endif - else - mov r16.w, l(1.000000) - endif - if_z cb3[r15.z + 6].w - mul r21.yzw, r15.xxxx, cb3[r15.y + 6].xxyz - add r17.y, l(1.000000), -cb3[r17.z + 6].y - max r18.x, r21.z, r21.y - max r18.x, r21.w, r18.x - mul r18.x, r9.w, r18.x - max r18.x, r18.x, l(1.000000) - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x - mad r17.y, r18.x, cb3[r17.z + 6].y, r17.y - mul r21.yzw, r17.yyyy, cb3[r15.y + 6].xxyz - mul r17.y, l(0.250000), cb3[r17.z + 6].x - add_sat r18.x, r18.y, l(0.500000) - mad r20.y, -cb3[r17.z + 6].x, l(0.250000), l(1.000000) - mad r17.y, r18.x, r20.y, r17.y - mul r21.yzw, r17.yyyy, r21.yyzw - mov r22.xyz, r20.xzwx - mov r24.xyz, r20.xzwx - mov r17.y, l(1.000000) - mov r18.x, l(0) - else - ieq r20.y, l(3), cb3[r15.z + 6].w - if_nz r20.y - mad r25.xy, cb3[r17.z + 6].xxxx, l(-0.600000, -0.399999976, 0.000000, 0.000000), l(0.800000, 0.900000, 0.000000, 0.000000) - add r20.y, -r25.x, r25.y - add r22.w, r21.x, -r25.x - div r20.y, l(1.000000, 1.000000, 1.000000, 1.000000), r20.y - mul_sat r20.y, r20.y, r22.w - mad r22.w, r20.y, l(-2.000000), l(3.000000) - mul r20.y, r20.y, r20.y - mul r20.y, r20.y, r22.w - mul r20.y, r16.w, r20.y - mul r15.x, r15.x, r20.y - mul r25.xyz, r23.wyzw, cb0[6].xyzx - mad r25.xyz, cb0[6].zxyz, r23.yzwy, -r25.xyzx - mul r26.xyz, r25.xyzx, cb0[6].zxyz - mad r25.xyz, cb0[6].yzxy, r25.yzxy, -r26.xyzx - dp3 r20.y, r25.xyzx, r25.xyzx - rsq r20.y, r20.y - mul r25.xyz, r20.yyyy, r25.xyzx - dp3_sat r18.z, r7.xyzx, -r25.xyzx - mad r22.xyz, cb3[r17.z + 6].yyyy, r4.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mov r24.xyz, l(0,0,0,0) - mov r17.y, l(1.000000) - mov r18.x, l(0) - else - ieq r20.y, l(1), cb3[r15.z + 6].w - if_nz r20.y - add r18.y, r18.y, cb3[r17.z + 6].x - max_sat r18.y, r18.y, l(-1.000000) - mul r18.z, r16.w, r18.y - mul r24.xyz, r6.xyzx, cb3[r17.z + 6].yyyy - mov r17.y, l(1.000000) - mov r18.x, l(0) - else - ieq r16.w, l(2), cb3[r15.z + 6].w - if_nz r16.w - add r18.y, l(0.050000), cb3[r17.z + 6].x - add r18.y, r3.z, -r18.y - mul_sat r18.y, r18.y, l(-10.000000) - mad r22.w, r18.y, l(-2.000000), l(3.000000) - mul r18.y, r18.y, r18.y - mul r18.y, r18.y, r22.w - add r22.w, l(1.000000), -cb3[r17.z + 6].z - mad r22.w, r5.x, cb3[r17.z + 6].z, r22.w - mul r17.y, r18.y, r22.w - else - mov r17.y, l(1.000000) - endif - and r18.x, r16.w, cb3[r17.z + 6].y - mov r24.xyz, l(0,0,0,0) - endif - and r22.xyz, r11.xyzx, r20.yyyy - endif - mov r21.yzw, cb3[r15.y + 6].xxyz - endif - ine r15.y, l(3), cb3[r15.z + 6].w - if_nz r15.y - mad r15.y, r18.x, r6.w, r5.y - mad r23.yzw, r0.xxyz, r1.wwww, r23.yyzw - dp3 r15.z, r23.yzwy, r23.yzwy - rsq r15.z, r15.z - mul r23.yzw, r15.zzzz, r23.yyzw - dp3 r15.z, r3.xywx, r23.yzwy - mul r16.w, r15.y, r15.y - mad r17.z, r15.z, r16.w, -r15.z - mad r15.z, r17.z, r15.z, l(1.000000) - mul r15.z, r15.z, r15.z - ne r17.z, r15.z, r16.w - div r15.z, r16.w, r15.z - movc r15.z, r17.z, r15.z, l(1.000000) - mad r15.y, r23.x, l(2.000000), r15.y - add r15.y, r15.y, l(0.000100) - div r15.y, l(0.500000), r15.y - mad r15.y, r15.z, r15.y, l(-0.0000610351562) - max r15.y, r15.y, l(0.000000) - min r15.y, r15.y, l(20.000000) - mul r23.yzw, r13.xxyz, r15.yyyy - mul r23.yzw, r17.yyyy, r23.yyzw - mul r18.xyw, r23.yzyw, cb3[r18.w + 6].zzzz - else - mov r18.xyw, l(0,0,0,0) - endif - mul r15.xyz, r15.xxxx, r21.yzwy - add r21.yzw, r22.xxyz, -r24.xxyz - mad r21.yzw, r18.zzzz, r21.yyzw, r24.xxyz - mul r21.yzw, r15.xxyz, r21.yyzw - mul r15.xyz, r18.xywx, r15.xyzx - mul r15.xyz, r18.zzzz, r15.xyzx - mad r15.xyz, r21.yzwy, r14.zzzz, r15.xyzx - add r16.xyz, r15.xyzx, r16.xyzx - endif - else - mov r19.x, l(0) - endif - movc r16.xyz, r19.xxxx, r19.yzwy, r16.xyzx - endif - endif - mov r13.w, r17.x - endloop - mov r14.xyw, r16.xyxz - iadd r10.z, r10.z, l(1) -endloop -lt r0.x, l(0.500000), cb5[3].x -if_nz r0.x - dp3 r0.x, r14.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r3.xyz, -r0.xxxx, r14.xywx - mad r0.xyz, cb5[3].zzzz, r3.xyzx, r0.xxxx - add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) - mad r0.xyz, cb5[3].wwww, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r3.xyz, r0.xyzx, cb5[3].yyyy - mad r0.xyz, -r0.xyzx, cb5[3].yyyy, cb5[7].xyzx - mad r0.xyz, cb5[7].wwww, r0.xyzx, r3.xyzx - add r2.w, l(1.000000), -cb5[4].x - mov_sat r17.w, r17.w - add r3.x, -r17.w, l(1.000000) - add r3.y, -r2.w, l(1.000000) - add r2.w, -r2.w, r3.x - div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y - mul_sat r2.w, r2.w, r3.x - mad r3.x, r2.w, l(-2.000000), l(3.000000) - mul r2.w, r2.w, r2.w - mul r2.w, r2.w, r3.x - mul r3.xyz, r2.wwww, cb5[8].xyzx - mad r14.xyw, r3.xyxz, cb5[4].yyyy, r0.xyxz -endif -div r0.xyz, r14.xywx, cb0[109].xxxx -eq r2.w, l(1.000000), cb5[2].x -movc o0.w, r2.w, r4.w, l(1.000000) -lt r2.w, cb0[198].w, l(0.500000) -if_nz r2.w - mul r0.w, r0.w, r1.w - mad r1.w, v2.y, cb0[156].w, cb0[157].w - max r1.w, r1.w, l(0.010000) - mad r2.w, r0.w, cb0[154].w, -cb0[153].w - max r2.w, r2.w, l(0.000000) - mul r3.x, r1.w, l(-1.442695) - exp r3.x, r3.x - add r3.x, -r3.x, l(1.000000) - div r1.w, r3.x, r1.w - mad r3.x, v2.y, cb0[156].w, cb0[158].w - mul r3.x, r3.x, l(1.442695) - exp r3.x, r3.x - mul r1.w, r1.w, r3.x - mul r1.w, r1.w, -r2.w - mul r3.xyz, r1.wwww, cb0[155].xyzx - mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) - exp r3.xyz, r3.xyzx - dp3 r1.w, -r2.xyzx, cb0[154].xyzx - mad r2.w, cb0[155].w, cb0[155].w, l(1.000000) - dp2 r3.w, r1.wwww, cb0[155].wwww - add r2.w, r2.w, -r3.w - lt r3.w, l(0.000000), cb0[163].z - if_nz r3.w - and r10.w, l(7), cb0[108].w - imad r4.xyz, r10.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r3.w, r4.y, r4.z, r4.x - imad r4.x, r4.z, r3.w, r4.y - imad r4.y, r3.w, r4.x, r4.z - imad r5.x, r4.x, r4.y, r3.w - dp3 r1.x, -r2.xyzx, -r1.xyzx - add r1.y, v2.y, -cb0[44].y - lt r1.z, l(5.960464478E-08), r1.x - div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x - and r1.x, r1.x, r1.z - mul r1.x, r1.x, cb0[163].w - div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w - mul r2.x, r1.z, r1.x - mad r2.y, r2.x, r1.y, cb0[44].y - mad r1.y, -r2.x, r1.y, r1.y - mul r2.x, r1.y, cb0[159].z - mul r1.y, r1.y, cb0[162].x - max r1.y, r1.y, l(-127.000000) - add r2.z, r2.y, -cb0[159].x - mul r2.z, r2.z, cb0[159].z - max r2.xz, r2.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - exp r2.z, -r2.z - mul r2.z, r2.z, cb0[159].y - lt r3.w, l(5.960464478E-08), |r2.x| - exp r4.z, -r2.x - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r2.x - mad r2.x, -r2.x, l(0.240226507), l(0.693147182) - movc r2.x, r3.w, r4.z, r2.x - add r2.y, r2.y, -cb0[162].z - mul r2.y, r2.y, cb0[162].x - max r2.y, r2.y, l(-127.000000) - exp r2.y, -r2.y - mul r2.y, r2.y, cb0[162].y - lt r3.w, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r3.w, r4.z, r1.y - mul r1.y, r1.y, r2.y - mad r1.y, r2.z, r2.x, r1.y - mad r1.x, -r1.x, r1.z, l(1.000000) - mul r1.x, r0.w, r1.x - mul r1.x, r1.x, r1.y - exp r1.x, -r1.x - min r1.x, r1.x, l(1.000000) - max r1.x, r1.x, cb0[161].w - mad_sat r1.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx - add r1.x, r1.y, r1.x - add r1.x, r1.z, r1.x - min r1.x, r1.x, l(1.000000) - imad r5.y, r4.y, r5.x, r4.x - ushr r1.yz, r5.xxyx, l(0, 16, 16, 0) - utof r1.yz, r1.yyzy - mad r1.yz, r1.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) - mad r1.yz, r1.yyzy, cb0[167].wwww, r5.zzwz - mul r2.xy, r1.yzyy, cb0[165].xyxx - mad r1.y, v0.w, cb0[164].x, cb0[164].y - log r1.y, r1.y - mul r1.y, r1.y, cb0[164].z - div r2.z, r1.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t17.xyzw, s0, l(0.000000) - add r1.y, v0.w, -cb0[166].z - mul_sat r1.y, r1.y, l(1000000.000000) - add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r4.xyzw, r1.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r1.y, -r1.x, l(1.000000) - mul r2.xyz, r1.yyyy, cb0[161].xyzx - mad r2.xyz, r2.xyzx, r4.wwww, r4.xyzx - mul r1.x, r1.x, r4.w - else - add r1.y, v2.y, -cb0[44].y - mul r1.z, r1.y, cb0[159].z - mul r1.y, r1.y, cb0[162].x - max r1.yz, r1.yyzy, l(0.000000, -127.000000, -127.000000, 0.000000) - add r3.w, cb0[44].y, -cb0[159].x - mul r3.w, r3.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[159].y - lt r4.x, l(5.960464478E-08), |r1.z| - exp r4.y, -r1.z - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r1.z - mad r1.z, -r1.z, l(0.240226507), l(0.693147182) - movc r1.z, r4.x, r4.y, r1.z - add r4.x, cb0[44].y, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.y, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r4.y, r4.z, r1.y - mul r1.y, r1.y, r4.x - mad r1.y, r3.w, r1.z, r1.y - mul r1.y, r0.w, r1.y - exp r1.y, -r1.y - min r1.y, r1.y, l(1.000000) - max r1.y, r1.y, cb0[161].w - mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.w, r1.y, r4.x - add r0.w, r4.y, r0.w - min r1.x, r0.w, l(1.000000) - add r0.w, -r1.x, l(1.000000) - mul r2.xyz, r0.wwww, cb0[161].xyzx - endif - mul r4.xyz, r1.xxxx, r3.xyzx - mad r0.w, r1.w, r1.w, l(1.000000) - mul r0.w, r0.w, l(0.0596831031) - mad r1.yzw, cb0[156].xxyz, r0.wwww, cb0[158].xxyz - mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) - mul r3.w, r2.w, l(12.566371) - sqrt r2.w, r2.w - mul r2.w, r2.w, r3.w - max r2.w, r2.w, l(0.001000) - div r0.w, r0.w, r2.w - mad_sat r1.yzw, cb0[157].xxyz, r0.wwww, r1.yyzw - mul r1.yzw, r1.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) - add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mul r1.yzw, r1.yyzw, r3.xxyz - mad r1.xyz, r1.yzwy, r1.xxxx, r2.xyzx - mad o0.xyz, r0.xyzx, r4.xyzx, r1.xyzx -else - mov o0.xyz, r0.xyzx -endif -mov o1.z, l(1.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x620A40FD.cso b/src/games/endfield/deferred-lighting/0x620A40FD.cso index d26444eb8ffa22b0792972d5d54443b410f47146..33748756a6e198c73c3f4183c59c41e8968aad5a 100644 GIT binary patch delta 169 zcmZ2-i*e3vMoE_lC+8C#`tomfZnXcB;53!CKM-hvBa}8IY9D>iqe|}6hwRh8(bvf delta 65 zcmbPpn{ml4MoE_lC+A0poit1~vT5yA-L1U$Vn-7r0|SG~M9IaRDLD)b0YHxA#G}EC VyqhH%pG$Ankp025xj;e37XbQ46_x-1 diff --git a/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0.asm index b6581c2559..c93f109ff8 100644 --- a/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0.asm @@ -24,7 +24,7 @@ dcl_constantbuffer CB0[235], immediateIndexed dcl_constantbuffer CB1[259], dynamicIndexed dcl_constantbuffer CB2[5], immediateIndexed dcl_constantbuffer CB3[4], immediateIndexed -dcl_constantbuffer CB13[13], immediateIndexed +dcl_constantbuffer CB13[19], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -270,6 +270,7 @@ else mov r1.xyw, l(0,0,0,0) endif ne r6.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy +movc r6.z, cb13[18].w, l(0xFFFFFFFF), r6.z if_nz r6.z sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x mad r0.z, r0.z, l(0.750000), l(0.250000) @@ -296,6 +297,8 @@ else mov r10.xyz, r3.wwww mov r12.xyw, r3.wwww endif +movc r10.xyz, cb13[18].wwww, r10.xyzx, l(1.0, 1.0, 1.0, 0) +mul r1.xyw, r1.xyzw, r10.xyxz mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx add r14.xyz, r7.xzyx, -r14.xyzx max r0.z, |r14.y|, |r14.x| diff --git a/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0_original_backup.asm deleted file mode 100644 index 9cdfeebe71..0000000000 --- a/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0_original_backup.asm +++ /dev/null @@ -1,901 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Fri Jan 30 20:20:39 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[5], immediateIndexed -dcl_constantbuffer CB3[4], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture3d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture3d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture2d (float,float,float,float) t19 -dcl_resource_texture2d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_resource_texture2d (float,float,float,float) t22 -dcl_resource_texture3d (float,float,float,float) t23 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 26 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t20.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t21.xyzw -ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t22.xyzw -mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) -ftou r1.xz, r1.xxzx -ubfe r4.x, l(7), l(3), r1.x -utof r4.x, r4.x -round_ne r1.y, r1.y -ftou r1.y, r1.y -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r5.y, -r4.y, l(1.000000) -lt r4.y, r5.y, l(0.000000) -ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) -add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) -movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) -mul r4.zw, r4.zzzw, r6.xxxy -movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx -dp3 r2.x, r5.xyzx, r5.xyzx -rsq r2.x, r2.x -mul r5.xyz, r2.xxxx, r5.xyzx -and r2.x, r1.y, l(7) -utof r2.x, r2.x -mad r2.x, r2.x, l(0.107142866), l(0.500000) -utof r4.yz, r0.xxyx -mul r6.xy, v0.xyxx, cb0[82].zwzz -mad r6.zw, r6.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -add r7.xy, r4.yzyy, l(0.500000, 0.500000, 0.000000, 0.000000) -mul r7.xy, r7.xyxx, cb0[82].zwzz -sample_l_indexable(texture2d)(float,float,float,float) r2.y, r7.xyxx, t1.yxzw, s0, l(0.000000) -mul r7.xyzw, -r6.wwww, cb0[25].xyzw -mad r7.xyzw, cb0[24].xyzw, r6.zzzz, r7.xyzw -mad r7.xyzw, cb0[26].xyzw, r2.yyyy, r7.xyzw -add r7.xyzw, r7.xyzw, cb0[27].xyzw -div r7.xyz, r7.xyzx, r7.wwww -mul r2.y, r7.y, cb0[1].z -mad r2.y, cb0[0].z, r7.x, r2.y -mad r2.y, cb0[2].z, r7.z, r2.y -add r2.y, r2.y, cb0[3].z -eq r4.w, l(0.000000), cb0[86].w -add r8.xyz, -r7.xyzx, cb0[44].xyzx -mov r9.x, cb0[0].z -mov r9.y, cb0[1].z -mov r9.z, cb0[2].z -movc r10.xyz, r4.wwww, r8.xyzx, r9.xyzx -dp3 r4.w, r10.xyzx, r10.xyzx -max r6.z, r4.w, l(9.999999939E-09) -rsq r6.z, r6.z -mul r11.xyz, r6.zzzz, r10.xyzx -mul r4.w, r4.w, r6.z -lt r6.w, l(0.000488281250), cb0[234].x -if_nz r6.w - sample_b_indexable(texture2d)(float,float,float,float) r6.w, v1.xyxx, t19.yzwx, s1, cb0[108].x -else - mov r6.w, l(1.000000) -endif -add r6.w, -r6.w, l(1.000000) -mad_sat r8.w, r2.z, l(0.300000), l(0.250000) -mul r8.w, r8.w, cb0[222].x -mul r8.w, r6.w, r8.w -mad r8.w, r8.w, l(-0.750000), l(1.000000) -mul r3.xyz, r3.xyzx, r8.wwww -min r8.w, r2.z, l(0.300000) -mul r6.w, r6.w, cb0[222].x -mul r6.w, r6.w, l(0.500000) -add r8.w, -r2.z, r8.w -mad r12.z, r6.w, r8.w, r2.z -mul r2.zw, r2.xxxw, l(0.000000, 0.000000, 0.080000, 3.000000) -dp3 r6.w, r5.xyzx, r11.xyzx -max r8.w, r6.w, l(0.000000) -mad r13.xyzw, r12.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r9.w, r13.x, r13.x -mul r10.w, r8.w, l(-9.280000) -exp r10.w, r10.w -min r9.w, r9.w, r10.w -mad r9.w, r9.w, r13.x, r13.y -mad r13.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz -ld_indexable(texture2d)(float,float,float,float) r13.z, r0.xyzz, t6.zwxy -lt r0.z, l(0.001000), r13.z -if_nz r0.z - bfi r0.z, l(3), l(2), r1.x, l(0) - mul r1.x, r1.w, l(3.000000) - ftou r1.x, r1.x - bfi r0.z, l(2), l(0), r1.x, r0.z - utof r0.z, r0.z - mul r1.x, r0.z, l(0.0322580636) - ubfe r1.y, l(7), l(3), r1.y - utof r1.y, r1.y - mul r1.y, r1.y, l(0.00787401572) - sample_l_indexable(texture2d)(float,float,float,float) r1.w, r6.xyxx, t9.yzwx, s1, l(0.000000) - dp3 r9.w, -r11.xyzx, r5.xyzx - add r9.w, r9.w, r9.w - mad r14.xyz, r5.xyzx, -r9.wwww, -r11.xyzx - dp3 r9.w, -cb2[0].xyzx, r14.xyzx - mad r15.xyz, cb2[0].xyzx, r9.wwww, r14.xyzx - lt r9.w, r9.w, cb2[4].z - dp3 r10.w, r15.xyzx, r15.xyzx - max r10.w, r10.w, l(0.0000610351562) - rsq r10.w, r10.w - mul r15.xyz, r10.wwww, r15.xyzx - mul r15.xyz, r15.xyzx, cb2[4].yyyy - mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx - dp3 r10.w, r15.xyzx, r15.xyzx - rsq r10.w, r10.w - mul r15.xyz, r10.wwww, r15.xyzx - movc r14.xyz, r9.wwww, r15.xyzx, r14.xyzx - mad r10.xyz, r10.xyzx, r6.zzzz, r14.xyzx - dp3 r6.z, r10.xyzx, r10.xyzx - max r6.z, r6.z, l(0.0000610351562) - rsq r6.z, r6.z - mul r10.xyz, r6.zzzz, r10.xyzx - dp3 r6.z, r5.xyzx, r14.xyzx - mov_sat r12.x, r6.z - dp3_sat r9.w, r5.xyzx, r10.xyzx - dp3 r10.w, r11.xyzx, r14.xyzx - min r12.y, r8.w, l(1.000000) - mul r11.w, r12.z, r12.z - mul r11.w, r11.w, r11.w - mad r12.w, r9.w, r11.w, -r9.w - mad r9.w, r12.w, r9.w, l(1.000000) - dp3_sat r10.x, r11.xyzx, r10.xyzx - add r10.x, -r10.x, l(1.000000) - mul r10.y, r10.x, r10.x - mul r10.y, r10.y, r10.y - mul r10.z, r10.x, r10.y - add r12.w, -r12.z, l(1.000000) - mad r14.x, -r12.w, l(0.383026), l(-0.0761947036) - mad r14.x, r12.w, r14.x, l(1.049970) - mad r12.w, r12.w, r14.x, l(0.409255) - min r12.w, r12.w, l(0.999000) - add r14.x, -r12.w, l(1.000000) - mad r2.x, -r2.x, l(0.080000), l(1.000000) - mad r2.x, r2.x, l(0.0476190485), r2.z - mov_sat r14.y, -r10.w - mul r14.y, r14.y, r14.y - mad r14.y, r14.y, l(-0.640000), l(1.000000) - mul r14.y, r14.y, r14.y - mad r10.x, -r10.y, r10.x, l(1.000000) - mad r10.x, r2.z, r10.x, r10.z - mul r9.w, r9.w, r9.w - div r9.w, r11.w, r9.w - mad r10.yz, -r12.yyxy, r11.wwww, r12.yyxy - mad r10.yz, r10.yyzy, r12.yyxy, r11.wwww - sqrt r10.yz, r10.yyzy - mul r10.yz, r10.yyzy, r12.xxyx - add r10.y, r10.z, r10.y - add r10.y, r10.y, l(0.000100) - div r10.y, l(0.500000), r10.y - mul r9.w, r9.w, r10.y - mul r9.w, r9.w, r10.x - min r9.w, r9.w, l(2048.000000) - mad r15.xyzw, r12.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r10.x, r15.xyxx, t8.xyzw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r10.y, r15.zwzz, t8.yxzw, s1, l(0.000000) - mul r10.x, r10.y, r10.x - mul r10.x, r12.w, r10.x - div r10.x, r10.x, r14.x - mul r10.y, r2.x, r2.x - mul r10.x, r10.x, r10.y - mad r2.x, -r2.x, r14.x, l(1.000000) - div r2.x, r10.x, r2.x - add r2.x, r2.x, r9.w - add_sat r6.w, r6.w, l(0.200000) - mov_sat r9.w, r10.w - add r9.w, r9.w, l(0.500000) - min r9.w, r9.w, l(1.000000) - mul r10.x, r6.w, r9.w - add_sat r10.y, r10.w, l(1.000000) - mad r6.w, -r6.w, r9.w, l(1.000000) - mad r6.w, r10.y, r6.w, r10.x - mul r2.x, r2.x, r6.w - mul r2.x, r1.y, r2.x - mul r10.xyz, r1.yyyy, r3.xyzx - ubfe r6.w, l(7), l(3), r1.z - utof r6.w, r6.w - mul r6.w, r6.w, l(0.00787401572) - mul r2.x, r2.x, cb2[4].x - max r2.x, r2.x, l(0.000000) - min r2.x, r2.x, l(1000.000000) - mul r2.x, r12.x, r2.x - mad r10.xyz, r10.xyzx, r6.wwww, r2.xxxx - max r2.x, r3.y, r3.x - max r2.x, r3.z, r2.x - max r2.x, r2.x, l(0.010000) - div r14.xzw, r3.xxyz, r2.xxxx - mul r2.x, r4.x, l(0.00393700786) - mul r14.xzw, r2.xxxx, r14.xxzw - add_sat r2.x, -r6.z, l(0.500000) - ne r6.w, r14.y, l(0.360000) - div r9.w, l(0.360000), r14.y - movc r6.w, r6.w, r9.w, l(1.000000) - mul r2.x, r2.x, r6.w - mad_sat r0.z, r0.z, l(0.0322580636), r6.z - add r0.z, -r12.x, r0.z - mul r12.xyw, r0.zzzz, r3.xyxz - mad r12.xyw, r14.xzxw, r2.xxxx, r12.xyxw - mad r10.xyz, r12.xywx, r1.yyyy, r10.xyzx - mul r10.xyz, r10.xyzx, cb2[1].xyzx - mov r13.w, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r12.xyw, r13.zwzz, t7.xywz, s1, cb0[108].x - add r0.z, -r13.z, l(1.000000) - mad r12.xyw, r10.xyxz, r12.xyxw, -r10.xyxz - mad r10.xyz, r0.zzzz, r12.xywx, r10.xyzx - max r0.z, r1.y, r1.w - add r0.z, -r1.w, r0.z - mad r0.z, r1.x, r0.z, r1.w - mul r1.xyw, r0.zzzz, r10.xyxz -else - mov r1.xyw, l(0,0,0,0) -endif -ne r6.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy -if_nz r6.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - mad r0.z, r0.z, l(0.750000), l(0.250000) - min r0.z, r3.w, r0.z - add r2.x, r0.z, r8.w - mad r6.z, r12.z, l(-16.000000), l(-1.000000) - exp r6.z, r6.z - log r2.x, |r2.x| - mul r2.x, r2.x, r6.z - exp r2.x, r2.x - add r2.x, r0.z, r2.x - add r2.x, r2.x, l(-1.000000) - mov_sat r10.xyz, r2.xxxx - mad r12.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) - mul r12.xyw, r0.zzzz, r12.xyxw - mad r12.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r12.xyxw - add r12.xyw, r12.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) - mul r12.xyw, r0.zzzz, r12.xyxw - mad r12.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r12.xyxw - add r12.xyw, r12.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) - mul r12.xyw, r0.zzzz, r12.xyxw - max r12.xyw, r0.zzzz, r12.xyxw -else - mov r10.xyz, r3.wwww - mov r12.xyw, r3.wwww -endif -mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r14.xyz, r7.xzyx, -r14.xyzx -max r0.z, |r14.y|, |r14.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r2.x, |r14.z|, l(-208.000000) -mul_sat r2.x, r2.x, l(0.031250) -max r0.z, r0.z, r2.x -ne r2.x, l(0.000000), cb0[210].w -lt r3.w, r0.z, l(1.000000) -and r2.x, r2.x, r3.w -if_nz r2.x - mad r14.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r14.xyz, r7.xzyx, -r14.xyzx - max r2.x, |r14.y|, |r14.x| - add r2.x, r2.x, l(-29.000000) - mul_sat r2.x, r2.x, l(0.500000) - add r3.w, |r14.z|, l(-13.000000) - mul_sat r3.w, r3.w, l(0.500000) - max r2.x, r2.x, r3.w - lt r3.w, r2.x, l(1.000000) - if_nz r3.w - mad r14.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r15.xyz, r14.xyzx, cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r15.xyw, r14.xyzx, t13.yzwx, s2, l(0.000000) - add r3.w, -r2.x, l(1.000000) - mul r6.z, l(0.500000), cb0[211].y - mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) - max r6.z, r6.z, r14.y - min r6.z, r9.w, r6.z - mul r14.w, r6.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t14.xyzw, s1, l(0.000000) - mad r6.z, r16.w, r3.w, r0.z - add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t14.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r15.yyyy, r17.xyzx - mov r17.w, r15.y - mul r17.xyzw, r3.wwww, r17.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t14.xyzw, s1, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r15.xxxx, r14.xyzx - mov r14.w, r15.x - mul r14.xyzw, r3.wwww, r14.xyzw - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r15.wwww, r16.xyzx - mul r15.xyzw, r3.wwww, r15.xyzw - else - mov r17.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r6.z, r0.z - endif - mad r16.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r16.xyz, r7.xzyx, -r16.xyzx - max r3.w, |r16.y|, |r16.x| - add r3.w, r3.w, l(-116.000000) - mul_sat r3.w, r3.w, l(0.125000) - add r9.w, |r16.z|, l(-52.000000) - mul_sat r9.w, r9.w, l(0.125000) - max r3.w, r3.w, r9.w - lt r9.w, r3.w, l(1.000000) - if_nz r9.w - mad r16.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r16.xyzx, cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r16.xyzx, t15.yzwx, s2, l(0.000000) - add r9.w, -r3.w, l(1.000000) - mul r2.x, r2.x, r9.w - mul r9.w, l(0.500000), cb0[211].y - mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) - max r9.w, r9.w, r16.y - min r9.w, r10.w, r9.w - mul r16.w, r9.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t16.xyzw, s1, l(0.000000) - mad r6.z, r19.w, r2.x, r6.z - add r20.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t16.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r18.yyyy, r20.xyzx - mov r20.w, r18.y - mad r17.xyzw, r20.xyzw, r2.xxxx, r17.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t16.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r18.xxxx, r16.xyzx - mov r16.w, r18.x - mad r14.xyzw, r16.xyzw, r2.xxxx, r14.xyzw - mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r16.xyzx - mad r15.xyzw, r18.xyzw, r2.xxxx, r15.xyzw - endif - lt r2.x, l(0.000000), r3.w - if_nz r2.x - mad r16.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r16.xyzx, cb0[211].xyzx - mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx - mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r16.xyz, r19.xyzx, r16.xyzx - min r16.xyz, r18.xyzx, r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) - add r2.x, -r0.z, l(1.000000) - mul r2.x, r2.x, r3.w - max r3.w, r19.y, r16.y - min r3.w, r18.y, r3.w - mul r16.w, r3.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) - add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r20.yyyy, r19.xyzx - mov r19.w, r20.y - mad r17.xyzw, r19.xyzw, r2.xxxx, r17.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r20.xxxx, r16.xyzx - mov r16.w, r20.x - mad r14.xyzw, r16.xyzw, r2.xxxx, r14.xyzw - mad r16.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r16.xyzx - mad r15.xyzw, r20.xyzw, r2.xxxx, r15.xyzw - mad r6.z, r18.w, r2.x, r6.z - endif - mad_sat r2.x, r6.z, l(2.000000), l(-1.000000) - add r16.x, -r0.z, r2.x - add r0.z, r0.z, r2.x - mul r16.y, r0.z, l(0.500000) -else - mov r17.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r16.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r16.yyyx, cb0[213].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r13.zw, r16.yyyx, cb0[213].wwwy -mad r18.w, r13.w, l(0.375000), r13.z -add r15.xyzw, r15.xyzw, r18.xyzw -mul r18.xyzw, r16.yyyx, cb0[214].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r13.zw, r16.yyyx, cb0[214].wwwy -mad r18.w, r13.w, l(0.375000), r13.z -add r14.xyzw, r14.xyzw, r18.xyzw -mul r18.xyzw, r16.yyyx, cb0[215].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r13.zw, r16.yyyx, cb0[215].wwwy -mad r18.w, r13.w, l(0.375000), r13.z -add r16.xyzw, r17.xyzw, r18.xyzw -ge r13.zw, r6.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r13.w, r13.z -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r6.xyxx, t12.xyzw, s1, l(0.000000) - lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| - or r6.xy, r18.zwzz, r18.xyxx - or r0.z, r6.y, r6.x - if_nz r0.z - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mov r6.x, l(1.000000) - mov r6.y, r0.z - mov r2.x, l(0) - loop - ge r3.w, l(4.600000), r6.y - breakc_nz r3.w - iadd r3.w, r2.x, l(1) - mul r13.zw, r6.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) - mov r6.xy, r13.zwzz - mov r2.x, r3.w - continue - endloop - mul r17.xyzw, r6.xxxx, r17.xyzw - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb3[3].x, cb3[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r6.x, r0.z, l(0.00390625000) - mov r6.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r6.xy, r6.xyxx, t11.xyzw, s1, l(0.000000) - mad r6.xy, r6.xyxx, cb3[2].xyxx, cb3[2].zwzz - mul r18.x, r6.x, l(3.54490781) - mul r18.yzw, r6.yyyy, r17.yyzw - mul r0.z, r17.x, l(0.406976730) - exp r0.z, r0.z - mul r17.xyzw, r0.zzzz, r18.xyzw - mov r18.xyzw, r17.xyzw - mov r0.z, l(0) - loop - uge r3.w, r0.z, r2.x - breakc_nz r3.w - mul r19.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r3.w, r19.xyzw, r18.xyzw - dp2 r6.x, r19.yxyy, r18.xyxx - dp2 r6.y, r19.zxzz, r18.xzxx - dp2 r6.z, r19.wxww, r18.xwxx - iadd r9.w, r0.z, l(1) - mov r18.x, r3.w - mov r18.yzw, r6.xxyz - mov r0.z, r9.w - continue - endloop - mul r17.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r18.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r17.xyzw, r18.xyzw - dp2 r2.x, r17.yxyy, r18.xyxx - dp2 r3.w, r17.zxzz, r18.xzxx - dp2 r6.x, r17.wxww, r18.xwxx - mul r18.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r6.y, r17.xyzw, r18.xyzw - dp2 r6.z, r17.yxyy, r18.xyxx - dp2 r9.w, r17.zxzz, r18.xzxx - dp2 r10.w, r17.wxww, r18.xwxx - mul r18.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r11.w, r17.xyzw, r18.xyzw - dp2 r13.z, r17.yxyy, r18.xyxx - dp2 r13.w, r17.zxzz, r18.xzxx - dp2 r17.x, r17.wxww, r18.xwxx - mul r15.w, r0.z, l(0.886226952) - mul r15.x, r6.x, l(-1.02332675) - mul r15.y, r2.x, l(-1.02332675) - mul r15.z, r3.w, l(1.02332675) - mul r14.x, r10.w, l(-1.02332675) - mul r14.yw, r6.zzzy, l(0.000000, -1.02332675, 0.000000, 0.886226952) - mul r14.z, r9.w, l(1.02332675) - mul r16.w, r11.w, l(0.886226952) - mul r16.x, r17.x, l(-1.02332675) - mul r16.yz, r13.zzwz, l(0.000000, -1.02332675, 1.02332675, 0.000000) - endif -endif -mov r5.w, l(1.000000) -dp4 r6.x, r15.xyzw, r5.xyzw -dp4 r6.y, r14.xyzw, r5.xyzw -dp4 r6.z, r16.xyzw, r5.xyzw -max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -dp3 r0.z, -r11.xyzx, r5.xyzx -add r0.z, r0.z, r0.z -mad r17.xyz, r5.xyzx, -r0.zzzz, -r11.xyzx -add r0.z, l(-1.000000), cb0[113].x -max r2.x, r12.z, l(0.001000) -log r2.x, r2.x -mad r2.x, -r2.x, l(1.200000), l(1.000000) -add r0.z, r0.z, -r2.x -mul r13.zw, r4.yyyz, cb1[0].wwww -round_ni r13.zw, r13.zzzw -add r2.x, |r2.y|, -cb1[2].y -round_ni r2.x, r2.x -add r3.w, l(-1.000000), cb1[1].x -max r9.w, r2.x, l(0.000000) -min r3.w, r3.w, r9.w -ge r2.x, r3.w, r2.x -mad r9.w, r13.w, cb1[0].x, r13.z -ftoi r9.w, r9.w -iadd r9.w, r9.w, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.w, r9.w, l(0), t0.xxxx -ftoi r3.w, r3.w -iadd r3.w, r3.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx -and r3.w, r3.w, r9.w -and r2.x, r2.x, r3.w -mul r18.xyz, r6.xyzx, cb0[111].xxxx -dp3 r3.w, r18.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r7.w, l(1.000000) -mov r18.xyz, l(0,0,0,0) -mov r9.w, l(1.000000) -mov r10.w, r2.x -mov r11.w, l(0) -loop - lt r12.z, l(0.010000), r9.w - ine r13.z, r10.w, l(0) - and r13.z, r12.z, r13.z - if_nz r13.z - firstbit_lo r13.z, r10.w - ishl r13.w, l(1), r13.z - xor r10.w, r10.w, r13.w - ishl r13.z, r13.z, l(3) - dp4 r19.x, cb1[r13.z + 6].xyzw, r7.xyzw - dp4 r19.y, cb1[r13.z + 7].xyzw, r7.xyzw - dp4 r19.z, cb1[r13.z + 8].xyzw, r7.xyzw - ge r20.xyz, cb1[r13.z + 5].xyzx, |r19.xyzx| - and r13.w, r20.y, r20.x - and r13.w, r20.z, r13.w - if_nz r13.w - mul r13.w, l(0.100000), cb1[r13.z + 5].x - mul r20.xyz, |r19.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r20.xy, r20.xyxx, r20.xyxx - add r21.xyz, -|r19.xyzx|, cb1[r13.z + 5].xyzx - mul r21.xyz, r21.xyzx, cb1[r13.z + 9].xyzx - eq r17.w, l(1.000000), cb1[r13.z + 10].x - if_nz r17.w - dp3 r22.x, cb1[r13.z + 6].xyzx, r17.xyzx - dp3 r22.y, cb1[r13.z + 7].xyzx, r17.xyzx - dp3 r22.z, cb1[r13.z + 8].xyzx, r17.xyzx - add r23.xyz, -r19.xyzx, cb1[r13.z + 5].xyzx - div r23.xyz, r23.xyzx, r22.xyzx - add r24.xyz, -r19.xyzx, -cb1[r13.z + 5].xyzx - div r24.xyz, r24.xyzx, r22.xyzx - lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx - movc r23.xyz, r25.xyzx, r23.xyzx, r24.xyzx - min r17.w, r23.y, r23.x - min r17.w, r23.z, r17.w - mad r19.xyz, r22.xyzx, r17.wwww, r19.xyzx - else - mov r19.xyz, r17.xyzx - endif - dp3 r17.w, r19.xyzx, r19.xyzx - rsq r17.w, r17.w - mul r19.xyz, r17.wwww, r19.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - lt r23.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r22.xyz, -r22.xyzx, r23.xyzx - itof r22.xyz, r22.xyzx - dp3 r17.w, r19.xyzx, r22.xyzx - div r19.xyz, r19.xyzx, r17.wwww - lt r17.w, r19.z, l(0.000000) - add r19.zw, -|r19.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r19.zw, r19.zzzw, r22.xxxy - movc r19.xy, r17.wwww, r19.zwzz, r19.xyxx - dp4 r17.w, cb1[r13.z + 4].xyzw, r5.xyzw - max r17.w, r17.w, l(0.000000) - max r17.w, r17.w, l(0.000100) - min r18.w, r21.z, r21.y - min r18.w, r18.w, r21.x - add r19.z, r20.y, r20.x - mad r19.z, r20.z, r20.z, r19.z - mad r13.w, r13.w, r13.w, -r19.z - mul r13.w, r13.w, cb1[r13.z + 9].x - mul r13.w, r13.w, cb1[r13.z + 9].x - add r19.z, l(1.000000), -cb1[r13.z + 10].y - mul r13.w, r13.w, r19.z - mul r13.w, r13.w, l(100.000000) - mad_sat r13.w, r18.w, cb1[r13.z + 10].y, r13.w - mul r18.w, r13.w, cb1[r13.z + 10].w - mad r19.xy, r19.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r19.xy, r19.xyxx, cb1[1].wwww, cb1[2].wwww - mov r19.z, cb1[r13.z + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r19.xyz, r19.xyzx, t5.xyzw, s3, r0.z - mul r19.xyz, r19.xyzx, cb1[r13.z + 9].wwww - div r19.w, r3.w, r17.w - min r19.w, |r19.w|, l(1.000000) - mad r19.w, r19.w, l(2.000000), r3.w - add r17.w, r17.w, l(2.000000) - div r17.w, r19.w, r17.w - add r17.w, r17.w, l(-1.000000) - mad r17.w, r17.w, cb0[112].w, l(1.000000) - mul r19.xyz, r17.wwww, r19.xyzx - mul r19.xyz, r18.wwww, r19.xyzx - mad r18.xyz, r19.xyzx, r9.wwww, r18.xyzx - mad r13.z, -r13.w, cb1[r13.z + 10].w, l(1.000000) - mul r9.w, r9.w, r13.z - endif - mov r11.w, l(-1) - continue - else - mov r11.w, r12.z - break - endif - mov r11.w, r12.z -endloop -if_nz r11.w - dp3 r2.x, r17.xyzx, r17.xyzx - rsq r2.x, r2.x - mul r17.xyz, r2.xxxx, r17.xyzx - lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx - lt r20.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r19.xyz, -r19.xyzx, r20.xyzx - itof r19.xyz, r19.xyzx - dp3 r2.x, r17.xyzx, r19.xyzx - div r17.xyz, r17.xyzx, r2.xxxx - lt r2.x, r17.z, l(0.000000) - add r13.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r13.zw, r13.zzzw, r19.xxxy - movc r13.zw, r2.xxxx, r13.zzzw, r17.xxxy - dp4 r2.x, cb1[3].xyzw, r5.xyzw - max r2.x, r2.x, l(0.000000) - max r2.x, r2.x, l(0.000100) - mad r13.zw, r13.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r17.xy, r13.zwzz, cb1[1].wwww, cb1[2].wwww - mov r17.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t5.xyzw, s3, r0.z - div r0.z, r3.w, r2.x - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r3.w - add r2.x, r2.x, l(2.000000) - div r0.z, r0.z, r2.x - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r17.xyz, r0.zzzz, r17.xyzx - mad r18.xyz, r17.xyzx, r9.wwww, r18.xyzx -endif -mul r17.xyz, r18.xyzx, cb0[112].zzzz -mul r17.xyz, r17.xyzx, cb0[111].yyyy -if_nz r6.w - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r18.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x - add r2.x, -r0.z, l(1.000000) - mul r19.xyz, r2.xxxx, r17.xyzx - mad r17.xyz, r18.xyzx, r0.zzzz, r19.xyzx -endif -mul r6.xyz, r3.xyzx, r6.xyzx -mul r6.xyz, r6.xyzx, cb0[111].xxxx -mad r0.z, r2.z, r13.x, r13.y -mul r13.xyz, r0.zzzz, r17.xyzx -mul r10.xyz, r10.xyzx, r13.xyzx -mad r6.xyz, r6.xyzx, r12.xywx, r10.xyzx -mul r5.xyzw, r5.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) -dp4 r10.x, r15.xyzw, r5.xyzw -dp4 r10.y, r14.xyzw, r5.xyzw -dp4 r10.z, r16.xyzw, r5.xyzw -max r5.xyz, r10.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -mul r5.xyz, r5.xyzx, cb0[111].xxxx -mul r5.xyz, r12.xywx, r5.xyzx -max r0.z, r3.y, r3.x -max r0.z, r3.z, r0.z -max r0.z, r0.z, l(0.010000) -div r3.xyz, r3.xyzx, r0.zzzz -mul r3.xyz, r3.xyzx, r5.xyzx -mul r0.z, r4.x, l(0.00787401572) -min r2.x, r8.w, l(1.000000) -bfi r1.z, l(3), l(2), r1.z, l(0) -ftou r2.z, r2.w -bfi r1.z, l(2), l(0), r2.z, r1.z -utof r1.z, r1.z -mul r1.z, r1.z, l(0.0322580636) -mad r0.z, r0.z, r2.x, r1.z -mul r2.xzw, r0.zzzz, r3.xxyz -mad r2.xzw, r2.xxzw, l(0.318309873, 0.000000, 0.318309873, 0.318309873), r6.xxyz -add r1.xyz, r1.xywx, r2.xzwx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r7.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r4.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r7.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xzw, r0.zzzz, cb0[155].xxyz -mul r2.xzw, r2.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) -exp r2.xzw, r2.xxzw -dp3 r0.z, -r11.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r3.x, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r3.x -lt r3.x, l(0.000000), cb0[163].z -if_nz r3.x - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r11.xyzx, -r9.xyzx - add r3.z, r7.y, -cb0[44].y - lt r3.w, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.w - mul r0.x, r0.x, cb0[163].w - div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w - mul r4.x, r0.x, r3.w - mad r5.x, r4.x, r3.z, cb0[44].y - mad r3.z, -r4.x, r3.z, r3.z - mul r4.x, r3.z, cb0[159].z - max r4.x, r4.x, l(-127.000000) - mul r3.z, r3.z, cb0[162].x - max r3.z, r3.z, l(-127.000000) - add r5.y, r5.x, -cb0[159].x - mul r5.y, r5.y, cb0[159].z - max r5.y, r5.y, l(-127.000000) - exp r5.y, -r5.y - mul r5.y, r5.y, cb0[159].y - lt r5.z, l(5.960464478E-08), |r4.x| - exp r5.w, -r4.x - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r4.x - mad r4.x, -r4.x, l(0.240226507), l(0.693147182) - movc r4.x, r5.z, r5.w, r4.x - add r5.x, r5.x, -cb0[162].z - mul r5.x, r5.x, cb0[162].x - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[162].y - lt r5.z, l(5.960464478E-08), |r3.z| - exp r5.w, -r3.z - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r3.z - mad r3.z, -r3.z, l(0.240226507), l(0.693147182) - movc r3.z, r5.z, r5.w, r3.z - mul r3.z, r3.z, r5.x - mad r3.z, r5.y, r4.x, r3.z - mad r0.x, -r0.x, r3.w, l(1.000000) - mul r0.x, r4.w, r0.x - mul r0.x, r0.x, r3.z - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r3.zw, r4.wwww, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r3.z - add r0.x, r3.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz - mul r3.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r2.y|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r3.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t10.xyzw, s1, l(0.000000) - add r0.y, |r2.y|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r0.x, r0.x, r3.w -else - add r0.y, r7.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.y, cb0[44].y, -cb0[159].x - mul r2.y, r2.y, cb0[159].z - max r2.y, r2.y, l(-127.000000) - exp r2.y, -r2.y - mul r2.y, r2.y, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.y, r0.w, r0.y - mul r0.y, r4.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r4.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r3.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r2.xzwx -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.y, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.y, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r2.xyz, -r2.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r2.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx -mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx -dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -dp3 r1.w, r8.xyzx, r8.xyzx -sqrt r1.w, r1.w -mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) -mul r2.x, r1.w, cb0[169].x -mad r1.w, -cb0[169].x, r1.w, l(1.000000) -mul r2.yzw, cb0[168].xxyz, cb0[183].wwww -mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw -sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t23.xwyz, s2, l(0.000000) -dp2 r2.x, r2.yyyy, r2.xxxx -add r1.w, r1.w, r2.x -add r2.x, r0.w, l(1.000000) -min r1.w, r1.w, r2.x -add r0.xyz, -r1.xyzx, r0.xyzx -mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx -mov o0.w, r0.w -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x7010AF4B.cso b/src/games/endfield/deferred-lighting/0x7010AF4B.cso index 2a8a06d4d1ae08520e521c7048e068c6b886e6df..4c43b5857d81547e106d6add63ec887edc62623c 100644 GIT binary patch delta 186 zcmZ2-m2u8BMk$vFCufJNTNwow=(U9VmRCP{KXVZy0|SFh_C%>goH1Dp3;{si^od7< z8HG1XGA@=>HD_Spa$*o*U;&C-H7GFf0%;*2W^`a+_zwhHAi2#urLHr{0+sS^0&=;5 z(%8(! delta 83 zcmV-Z0IdI<)&Zo|0UAVDLPPngN^U%H9y~bB4Lxo7c0U0C005+Fks6{2bn0izkSXL_Q0m466r21|R9wb_fq@;Qf&-`mBnqQJIyO(ppI``NIM{=XW?*R8ti4cB8UXE* BD(CeA0n2K$gX}L4SDuo(xJA5}(W{J+fq|i7qU2)E9d8&I0)QO7jYq8+ z8HG19GR>c>YRzzmeIYEWR{1=2!5%;>#2~=H3>3F&P+;H%(n3JY=)l169|)vCa+^cF`I%*bN_jT{xgaIq z`VmUq_<&-QFS3ZrHP~A)Ft8T^)o=jSxG_O#W{956DSjSC+zbp3_8`L<7#cQjZqjVcN^7y^L2vm1|E XGcxjSW@OT?-W*cn&Z delta 66 zcmeBq!#L$Nqm)a8lXK+5FZ)V@s=5EP+*Z|ky~m!Bfq`L4=|rhToL5R17y^Ji(}_ou W8F@ErGEP_9{6hT)(`EzhJ6-^O${BkA diff --git a/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0.asm index ded9140707..6489dec71e 100644 --- a/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0.asm @@ -25,7 +25,7 @@ dcl_constantbuffer CB1[259], dynamicIndexed dcl_constantbuffer CB2[5], immediateIndexed dcl_constantbuffer CB3[5], immediateIndexed dcl_constantbuffer CB4[4], immediateIndexed -dcl_constantbuffer CB13[13], immediateIndexed +dcl_constantbuffer CB13[19], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -357,6 +357,7 @@ else mov r1.xyw, l(0,0,0,0) endif ne r2.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +movc r2.y, cb13[18].w, l(0xFFFFFFFF), r2.y if_nz r2.y sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x mad r0.z, r0.z, l(0.750000), l(0.250000) @@ -383,6 +384,8 @@ else mov r10.xyz, r3.wwww mov r12.xyw, r3.wwww endif +movc r10.xyz, cb13[18].wwww, r10.xyzx, l(1.0, 1.0, 1.0, 0) +mul r1.xyw, r1.xyzw, r10.xyxz mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx add r14.xyz, r7.xzyx, -r14.xyzx max r0.z, |r14.y|, |r14.x| diff --git a/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0_original_backup.asm deleted file mode 100644 index 86cb2ba1e6..0000000000 --- a/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0_original_backup.asm +++ /dev/null @@ -1,990 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sun Feb 1 03:51:02 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[5], immediateIndexed -dcl_constantbuffer CB3[5], immediateIndexed -dcl_constantbuffer CB4[4], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture3d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_resource_texture2d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_resource_texture3d (float,float,float,float) t25 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 26 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t22.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t23.xyzw -ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t24.xyzw -mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) -ftou r1.xz, r1.xxzx -ubfe r4.x, l(7), l(3), r1.x -utof r4.x, r4.x -round_ne r1.y, r1.y -ftou r1.y, r1.y -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r5.y, -r4.y, l(1.000000) -lt r4.y, r5.y, l(0.000000) -ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) -add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) -movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) -mul r4.zw, r4.zzzw, r6.xxxy -movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx -dp3 r2.x, r5.xyzx, r5.xyzx -rsq r2.x, r2.x -mul r6.xyz, r2.xxxx, r5.xyzx -and r2.y, r1.y, l(7) -utof r2.y, r2.y -mad r2.y, r2.y, l(0.107142866), l(0.500000) -utof r4.yz, r0.xxyx -mul r5.xz, v0.xxyx, cb0[82].zzwz -mad r7.xy, r5.xzxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -add r7.zw, r4.yyyz, l(0.000000, 0.000000, 0.500000, 0.500000) -mul r7.zw, r7.zzzw, cb0[82].zzzw -sample_l_indexable(texture2d)(float,float,float,float) r4.w, r7.zwzz, t1.yzwx, s0, l(0.000000) -mul r8.xyzw, -r7.yyyy, cb0[25].xyzw -mad r7.xyzw, cb0[24].xyzw, r7.xxxx, r8.xyzw -mad r7.xyzw, cb0[26].xyzw, r4.wwww, r7.xyzw -add r7.xyzw, r7.xyzw, cb0[27].xyzw -div r7.xyz, r7.xyzx, r7.wwww -mul r4.w, r7.y, cb0[1].z -mad r4.w, cb0[0].z, r7.x, r4.w -mad r4.w, cb0[2].z, r7.z, r4.w -add r4.w, r4.w, cb0[3].z -eq r5.w, l(0.000000), cb0[86].w -add r8.xyz, -r7.xyzx, cb0[44].xyzx -mov r9.x, cb0[0].z -mov r9.y, cb0[1].z -mov r9.z, cb0[2].z -movc r10.xyz, r5.wwww, r8.xyzx, r9.xyzx -dp3 r5.w, r10.xyzx, r10.xyzx -max r8.w, r5.w, l(9.999999939E-09) -rsq r8.w, r8.w -mul r11.xyz, r8.wwww, r10.xyzx -mul r5.w, r5.w, r8.w -lt r9.w, l(0.000488281250), cb0[234].x -if_nz r9.w - sample_b_indexable(texture2d)(float,float,float,float) r9.w, v1.xyxx, t21.yzwx, s1, cb0[108].x -else - mov r9.w, l(1.000000) -endif -lt r12.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[226].xyxx -if_nz r12.x - add r10.w, |r6.y|, |r6.x| - add r10.w, |r6.z|, r10.w - div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r10.w - mul r12.xzw, |r6.xxyz|, r10.wwww - mul r13.xyzw, r12.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) - add r13.xyz, r13.zwzz, r13.xxyx - mad r12.xzw, r12.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r13.xxyz - mul r13.xyz, r7.xyzx, cb0[229].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r10.w, r13.xyzx, t9.yzwx, s2, l(0.000000) - mad r10.w, r10.w, l(2.000000), l(-1.000000) - mul r12.xzw, r10.wwww, r12.xxzw - mov r10.w, |r6.y| - add r10.w, r10.w, l(-0.700000) - mul_sat r10.w, r10.w, l(4.000000) - mad r11.w, r10.w, l(-2.000000), l(3.000000) - mul r10.w, r10.w, r10.w - mul r10.w, r10.w, r11.w - add r11.w, -cb0[229].z, cb0[229].y - mad r10.w, r10.w, r11.w, cb0[229].z - mul r12.xzw, r10.wwww, r12.xxzw -else - mov r12.xzw, l(0,0,0,0) -endif -if_nz r12.y - mul r13.xyz, r6.xyzx, cb0[233].zzzz - mul r14.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy - mad r13.xyz, r13.xyzx, cb0[225].xxxx, r14.xyzx - max r10.w, -r6.y, l(0.000000) - min r10.w, r10.w, l(0.900000) - add r10.w, -r10.w, l(1.000000) - mad r2.x, -r5.y, r2.x, l(-0.200000) - mul_sat r2.x, r2.x, l(-10.000000) - mad r5.y, r2.x, l(-2.000000), l(3.000000) - mul r2.x, r2.x, r2.x - mul r2.x, r2.x, r5.y - max r2.x, r2.x, l(0.100000) - min r2.x, r2.x, l(1.000000) - mul r2.x, r2.x, r10.w - mad r13.xyz, r13.xyzx, r2.xxxx, r7.xyzx - add r12.xyz, r12.xzwx, r13.xyzx - mul r13.xyz, r12.yyyy, cb3[1].xyzx - mad r12.xyw, cb3[0].xyxz, r12.xxxx, r13.xyxz - mad r12.xyz, cb3[2].xyzx, r12.zzzz, r12.xywx - add r12.xyz, r12.xyzx, cb3[3].xyzx - mad r13.x, r12.x, l(0.500000), cb3[4].x - mad r2.x, r12.y, l(0.500000), l(0.500000) - add r13.z, -r2.x, cb3[4].y - add r12.xy, r13.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r2.x, r12.z, l(0.000488281250) - sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r12.xyxx, t8.xxxx, s4, r2.x -else - mov r2.x, l(1.000000) -endif -mov_sat r5.y, r6.y -add r10.w, l(1.000000), -cb0[230].w -mad r5.y, r5.y, r10.w, cb0[230].w -add r12.xy, r7.xzxx, -cb0[44].xzxx -max r10.w, |r12.y|, |r12.x| -mul r11.w, r5.y, cb0[230].z -mul r12.x, r2.x, r5.y -mul r12.y, l(0.0500000119), cb0[222].w -mad r12.z, -cb0[222].w, l(0.700000), r10.w -div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), r12.y -mul_sat r12.y, r12.y, r12.z -mad r12.z, r12.y, l(-2.000000), l(3.000000) -mul r12.y, r12.y, r12.y -mul r12.y, r12.y, r12.z -mad r2.x, -r5.y, r2.x, l(1.000000) -mad r2.x, r12.y, r2.x, r12.x -mad r5.y, -cb0[230].z, r5.y, l(1.000000) -mad r2.x, r2.x, r5.y, r11.w -mad r5.y, cb0[230].x, cb0[222].w, -cb0[222].w -add r10.w, r10.w, -cb0[222].w -div r5.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y -mul_sat r5.y, r5.y, r10.w -mad r10.w, r5.y, l(-2.000000), l(3.000000) -mul r5.y, r5.y, r5.y -mul r5.y, r5.y, r10.w -add r10.w, -r2.x, cb0[230].y -mad r2.x, r5.y, r10.w, r2.x -add r2.x, -r2.x, l(1.000000) -mad r2.x, -r9.w, r2.x, l(1.000000) -mad_sat r5.y, r2.z, l(0.300000), l(0.250000) -mul r5.y, r5.y, cb0[222].x -mul r5.y, r2.x, r5.y -mad r5.y, r5.y, l(-0.750000), l(1.000000) -mul r3.xyz, r3.xyzx, r5.yyyy -min r5.y, r2.z, l(0.300000) -mul r2.x, r2.x, cb0[222].x -mul r2.xw, r2.xxxw, l(0.500000, 0.000000, 0.000000, 3.000000) -add r5.y, -r2.z, r5.y -mad r12.z, r2.x, r5.y, r2.z -mul r2.x, r2.y, l(0.080000) -dp3 r2.z, r6.xyzx, r11.xyzx -max r5.y, r2.z, l(0.000000) -mad r13.xyzw, r12.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r9.w, r13.x, r13.x -mul r10.w, r5.y, l(-9.280000) -exp r10.w, r10.w -min r9.w, r9.w, r10.w -mad r9.w, r9.w, r13.x, r13.y -mad r13.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz -ld_indexable(texture2d)(float,float,float,float) r13.z, r0.xyzz, t6.zwxy -lt r0.z, l(0.001000), r13.z -if_nz r0.z - bfi r0.z, l(3), l(2), r1.x, l(0) - mul r1.x, r1.w, l(3.000000) - ftou r1.x, r1.x - bfi r0.z, l(2), l(0), r1.x, r0.z - utof r0.z, r0.z - mul r1.x, r0.z, l(0.0322580636) - ubfe r1.y, l(7), l(3), r1.y - utof r1.y, r1.y - mul r1.y, r1.y, l(0.00787401572) - sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xzxx, t11.yzwx, s1, l(0.000000) - dp3 r9.w, -r11.xyzx, r6.xyzx - add r9.w, r9.w, r9.w - mad r14.xyz, r6.xyzx, -r9.wwww, -r11.xyzx - dp3 r9.w, -cb2[0].xyzx, r14.xyzx - mad r15.xyz, cb2[0].xyzx, r9.wwww, r14.xyzx - lt r9.w, r9.w, cb2[4].z - dp3 r10.w, r15.xyzx, r15.xyzx - max r10.w, r10.w, l(0.0000610351562) - rsq r10.w, r10.w - mul r15.xyz, r10.wwww, r15.xyzx - mul r15.xyz, r15.xyzx, cb2[4].yyyy - mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx - dp3 r10.w, r15.xyzx, r15.xyzx - rsq r10.w, r10.w - mul r15.xyz, r10.wwww, r15.xyzx - movc r14.xyz, r9.wwww, r15.xyzx, r14.xyzx - mad r10.xyz, r10.xyzx, r8.wwww, r14.xyzx - dp3 r8.w, r10.xyzx, r10.xyzx - max r8.w, r8.w, l(0.0000610351562) - rsq r8.w, r8.w - mul r10.xyz, r8.wwww, r10.xyzx - dp3 r8.w, r6.xyzx, r14.xyzx - mov_sat r12.x, r8.w - dp3_sat r9.w, r6.xyzx, r10.xyzx - dp3 r10.w, r11.xyzx, r14.xyzx - min r12.y, r5.y, l(1.000000) - mul r11.w, r12.z, r12.z - mul r11.w, r11.w, r11.w - mad r12.w, r9.w, r11.w, -r9.w - mad r9.w, r12.w, r9.w, l(1.000000) - dp3_sat r10.x, r11.xyzx, r10.xyzx - add r10.x, -r10.x, l(1.000000) - mul r10.y, r10.x, r10.x - mul r10.y, r10.y, r10.y - mul r10.z, r10.x, r10.y - add r12.w, -r12.z, l(1.000000) - mad r14.x, -r12.w, l(0.383026), l(-0.0761947036) - mad r14.x, r12.w, r14.x, l(1.049970) - mad r12.w, r12.w, r14.x, l(0.409255) - min r12.w, r12.w, l(0.999000) - add r14.x, -r12.w, l(1.000000) - mad r2.y, -r2.y, l(0.080000), l(1.000000) - mad r2.y, r2.y, l(0.0476190485), r2.x - mov_sat r14.y, -r10.w - mul r14.y, r14.y, r14.y - mad r14.y, r14.y, l(-0.640000), l(1.000000) - mul r14.y, r14.y, r14.y - mad r10.x, -r10.y, r10.x, l(1.000000) - mad r10.x, r2.x, r10.x, r10.z - mul r9.w, r9.w, r9.w - div r9.w, r11.w, r9.w - mad r10.yz, -r12.yyxy, r11.wwww, r12.yyxy - mad r10.yz, r10.yyzy, r12.yyxy, r11.wwww - sqrt r10.yz, r10.yyzy - mul r10.yz, r10.yyzy, r12.xxyx - add r10.y, r10.z, r10.y - add r10.y, r10.y, l(0.000100) - div r10.y, l(0.500000), r10.y - mul r9.w, r9.w, r10.y - mul r9.w, r9.w, r10.x - min r9.w, r9.w, l(2048.000000) - mad r15.xyzw, r12.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r10.x, r15.xyxx, t10.xyzw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r10.y, r15.zwzz, t10.yxzw, s1, l(0.000000) - mul r10.x, r10.y, r10.x - mul r10.x, r12.w, r10.x - div r10.x, r10.x, r14.x - mul r10.y, r2.y, r2.y - mul r10.x, r10.x, r10.y - mad r2.y, -r2.y, r14.x, l(1.000000) - div r2.y, r10.x, r2.y - add r2.y, r2.y, r9.w - add_sat r2.z, r2.z, l(0.200000) - mov_sat r9.w, r10.w - add r9.w, r9.w, l(0.500000) - min r9.w, r9.w, l(1.000000) - mul r10.x, r2.z, r9.w - add_sat r10.y, r10.w, l(1.000000) - mad r2.z, -r2.z, r9.w, l(1.000000) - mad r2.z, r10.y, r2.z, r10.x - mul r2.y, r2.z, r2.y - mul r2.y, r1.y, r2.y - mul r10.xyz, r1.yyyy, r3.xyzx - ubfe r2.z, l(7), l(3), r1.z - utof r2.z, r2.z - mul r2.z, r2.z, l(0.00787401572) - mul r2.y, r2.y, cb2[4].x - max r2.y, r2.y, l(0.000000) - min r2.y, r2.y, l(1000.000000) - mul r2.y, r12.x, r2.y - mad r10.xyz, r10.xyzx, r2.zzzz, r2.yyyy - max r2.y, r3.y, r3.x - max r2.y, r3.z, r2.y - max r2.y, r2.y, l(0.010000) - div r14.xzw, r3.xxyz, r2.yyyy - mul r2.y, r4.x, l(0.00393700786) - mul r14.xzw, r2.yyyy, r14.xxzw - add_sat r2.y, -r8.w, l(0.500000) - ne r2.z, r14.y, l(0.360000) - div r9.w, l(0.360000), r14.y - movc r2.z, r2.z, r9.w, l(1.000000) - mul r2.y, r2.z, r2.y - mad_sat r0.z, r0.z, l(0.0322580636), r8.w - add r0.z, -r12.x, r0.z - mul r12.xyw, r0.zzzz, r3.xyxz - mad r12.xyw, r14.xzxw, r2.yyyy, r12.xyxw - mad r10.xyz, r12.xywx, r1.yyyy, r10.xyzx - mul r10.xyz, r10.xyzx, cb2[1].xyzx - mov r13.w, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r12.xyw, r13.zwzz, t7.xywz, s1, cb0[108].x - add r0.z, -r13.z, l(1.000000) - mad r12.xyw, r10.xyxz, r12.xyxw, -r10.xyxz - mad r10.xyz, r0.zzzz, r12.xywx, r10.xyzx - max r0.z, r1.y, r1.w - add r0.z, -r1.w, r0.z - mad r0.z, r1.x, r0.z, r1.w - mul r1.xyw, r0.zzzz, r10.xyxz -else - mov r1.xyw, l(0,0,0,0) -endif -ne r2.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -if_nz r2.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - mad r0.z, r0.z, l(0.750000), l(0.250000) - min r0.z, r3.w, r0.z - add r2.y, r0.z, r5.y - mad r8.w, r12.z, l(-16.000000), l(-1.000000) - exp r8.w, r8.w - log r2.y, |r2.y| - mul r2.y, r2.y, r8.w - exp r2.y, r2.y - add r2.y, r0.z, r2.y - add r2.y, r2.y, l(-1.000000) - mov_sat r10.xyz, r2.yyyy - mad r12.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) - mul r12.xyw, r0.zzzz, r12.xyxw - mad r12.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r12.xyxw - add r12.xyw, r12.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) - mul r12.xyw, r0.zzzz, r12.xyxw - mad r12.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r12.xyxw - add r12.xyw, r12.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) - mul r12.xyw, r0.zzzz, r12.xyxw - max r12.xyw, r0.zzzz, r12.xyxw -else - mov r10.xyz, r3.wwww - mov r12.xyw, r3.wwww -endif -mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r14.xyz, r7.xzyx, -r14.xyzx -max r0.z, |r14.y|, |r14.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r2.y, |r14.z|, l(-208.000000) -mul_sat r2.y, r2.y, l(0.031250) -max r0.z, r0.z, r2.y -ne r2.y, l(0.000000), cb0[210].w -lt r3.w, r0.z, l(1.000000) -and r2.y, r2.y, r3.w -if_nz r2.y - mad r14.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r14.xyz, r7.xzyx, -r14.xyzx - max r2.y, |r14.y|, |r14.x| - add r2.y, r2.y, l(-29.000000) - mul_sat r2.y, r2.y, l(0.500000) - add r3.w, |r14.z|, l(-13.000000) - mul_sat r3.w, r3.w, l(0.500000) - max r2.y, r2.y, r3.w - lt r3.w, r2.y, l(1.000000) - if_nz r3.w - mad r14.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r15.xyz, r14.xyzx, cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r15.xyw, r14.xyzx, t15.yzwx, s2, l(0.000000) - add r3.w, -r2.y, l(1.000000) - mul r8.w, l(0.500000), cb0[211].y - mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) - max r8.w, r8.w, r14.y - min r8.w, r9.w, r8.w - mul r14.w, r8.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t16.xyzw, s1, l(0.000000) - mad r8.w, r16.w, r3.w, r0.z - add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r15.yyyy, r17.xyzx - mov r17.w, r15.y - mul r17.xyzw, r3.wwww, r17.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t16.xyzw, s1, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r15.xxxx, r14.xyzx - mov r14.w, r15.x - mul r14.xyzw, r3.wwww, r14.xyzw - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r15.wwww, r16.xyzx - mul r15.xyzw, r3.wwww, r15.xyzw - else - mov r17.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r8.w, r0.z - endif - mad r16.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r16.xyz, r7.xzyx, -r16.xyzx - max r3.w, |r16.y|, |r16.x| - add r3.w, r3.w, l(-116.000000) - mul_sat r3.w, r3.w, l(0.125000) - add r9.w, |r16.z|, l(-52.000000) - mul_sat r9.w, r9.w, l(0.125000) - max r3.w, r3.w, r9.w - lt r9.w, r3.w, l(1.000000) - if_nz r9.w - mad r16.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r16.xyzx, cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) - add r9.w, -r3.w, l(1.000000) - mul r2.y, r2.y, r9.w - mul r9.w, l(0.500000), cb0[211].y - mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) - max r9.w, r9.w, r16.y - min r9.w, r10.w, r9.w - mul r16.w, r9.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) - mad r8.w, r19.w, r2.y, r8.w - add r20.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t18.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r18.yyyy, r20.xyzx - mov r20.w, r18.y - mad r17.xyzw, r20.xyzw, r2.yyyy, r17.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r18.xxxx, r16.xyzx - mov r16.w, r18.x - mad r14.xyzw, r16.xyzw, r2.yyyy, r14.xyzw - mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r16.xyzx - mad r15.xyzw, r18.xyzw, r2.yyyy, r15.xyzw - endif - lt r2.y, l(0.000000), r3.w - if_nz r2.y - mad r16.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r16.xyzx, cb0[211].xyzx - mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx - mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r16.xyz, r19.xyzx, r16.xyzx - min r16.xyz, r18.xyzx, r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r16.xyzx, t19.yzwx, s2, l(0.000000) - add r2.y, -r0.z, l(1.000000) - mul r2.y, r2.y, r3.w - max r3.w, r19.y, r16.y - min r3.w, r18.y, r3.w - mul r16.w, r3.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t20.xyzw, s1, l(0.000000) - add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r20.yyyy, r19.xyzx - mov r19.w, r20.y - mad r17.xyzw, r19.xyzw, r2.yyyy, r17.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t20.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r20.xxxx, r16.xyzx - mov r16.w, r20.x - mad r14.xyzw, r16.xyzw, r2.yyyy, r14.xyzw - mad r16.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r16.xyzx - mad r15.xyzw, r20.xyzw, r2.yyyy, r15.xyzw - mad r8.w, r18.w, r2.y, r8.w - endif - mad_sat r2.y, r8.w, l(2.000000), l(-1.000000) - add r16.x, -r0.z, r2.y - add r0.z, r0.z, r2.y - mul r16.y, r0.z, l(0.500000) -else - mov r17.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r16.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r16.yyyx, cb0[213].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r13.zw, r16.yyyx, cb0[213].wwwy -mad r18.w, r13.w, l(0.375000), r13.z -add r15.xyzw, r15.xyzw, r18.xyzw -mul r18.xyzw, r16.yyyx, cb0[214].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r13.zw, r16.yyyx, cb0[214].wwwy -mad r18.w, r13.w, l(0.375000), r13.z -add r14.xyzw, r14.xyzw, r18.xyzw -mul r18.xyzw, r16.yyyx, cb0[215].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r13.zw, r16.yyyx, cb0[215].wwwy -mad r18.w, r13.w, l(0.375000), r13.z -add r16.xyzw, r17.xyzw, r18.xyzw -ge r13.zw, r5.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r13.w, r13.z -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r5.xzxx, t14.xyzw, s1, l(0.000000) - lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| - or r5.xz, r18.zzwz, r18.xxyx - or r0.z, r5.z, r5.x - if_nz r0.z - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mov r5.x, l(1.000000) - mov r5.z, r0.z - mov r2.y, l(0) - loop - ge r3.w, l(4.600000), r5.z - breakc_nz r3.w - iadd r3.w, r2.y, l(1) - mul r13.zw, r5.xxxz, l(0.000000, 0.000000, 0.500000, 0.500000) - mov r5.xz, r13.zzwz - mov r2.y, r3.w - continue - endloop - mul r17.xyzw, r5.xxxx, r17.xyzw - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb4[3].x, cb4[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r18.x, r0.z, l(0.00390625000) - mov r18.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r5.xz, r18.xyxx, t13.xzyw, s1, l(0.000000) - mad r5.xz, r5.xxzx, cb4[2].xxyx, cb4[2].zzwz - mul r18.x, r5.x, l(3.54490781) - mul r18.yzw, r5.zzzz, r17.yyzw - mul r0.z, r17.x, l(0.406976730) - exp r0.z, r0.z - mul r17.xyzw, r0.zzzz, r18.xyzw - mov r18.xyzw, r17.xyzw - mov r0.z, l(0) - loop - uge r3.w, r0.z, r2.y - breakc_nz r3.w - mul r19.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r3.w, r19.xyzw, r18.xyzw - dp2 r5.x, r19.yxyy, r18.xyxx - dp2 r5.z, r19.zxzz, r18.xzxx - dp2 r8.w, r19.wxww, r18.xwxx - iadd r9.w, r0.z, l(1) - mov r18.x, r3.w - mov r18.yz, r5.xxzx - mov r18.w, r8.w - mov r0.z, r9.w - continue - endloop - mul r17.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r18.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r17.xyzw, r18.xyzw - dp2 r2.y, r17.yxyy, r18.xyxx - dp2 r3.w, r17.zxzz, r18.xzxx - dp2 r5.x, r17.wxww, r18.xwxx - mul r18.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r5.z, r17.xyzw, r18.xyzw - dp2 r8.w, r17.yxyy, r18.xyxx - dp2 r9.w, r17.zxzz, r18.xzxx - dp2 r10.w, r17.wxww, r18.xwxx - mul r18.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r11.w, r17.xyzw, r18.xyzw - dp2 r13.z, r17.yxyy, r18.xyxx - dp2 r13.w, r17.zxzz, r18.xzxx - dp2 r17.x, r17.wxww, r18.xwxx - mul r15.w, r0.z, l(0.886226952) - mul r15.x, r5.x, l(-1.02332675) - mul r15.y, r2.y, l(-1.02332675) - mul r15.z, r3.w, l(1.02332675) - mul r14.w, r5.z, l(0.886226952) - mul r14.x, r10.w, l(-1.02332675) - mul r14.y, r8.w, l(-1.02332675) - mul r14.z, r9.w, l(1.02332675) - mul r16.w, r11.w, l(0.886226952) - mul r16.x, r17.x, l(-1.02332675) - mul r16.yz, r13.zzwz, l(0.000000, -1.02332675, 1.02332675, 0.000000) - endif -endif -mov r6.w, l(1.000000) -dp4 r17.x, r15.xyzw, r6.xyzw -dp4 r17.y, r14.xyzw, r6.xyzw -dp4 r17.z, r16.xyzw, r6.xyzw -max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -dp3 r0.z, -r11.xyzx, r6.xyzx -add r0.z, r0.z, r0.z -mad r18.xyz, r6.xyzx, -r0.zzzz, -r11.xyzx -add r0.z, l(-1.000000), cb0[113].x -max r2.y, r12.z, l(0.001000) -log r2.y, r2.y -mad r2.y, -r2.y, l(1.200000), l(1.000000) -add r0.z, r0.z, -r2.y -mul r5.xz, r4.yyzy, cb1[0].wwww -round_ni r5.xz, r5.xxzx -add r2.y, |r4.w|, -cb1[2].y -round_ni r2.y, r2.y -add r3.w, l(-1.000000), cb1[1].x -max r8.w, r2.y, l(0.000000) -min r3.w, r3.w, r8.w -ge r2.y, r3.w, r2.y -mad r5.x, r5.z, cb1[0].x, r5.x -ftoi r5.x, r5.x -iadd r5.x, r5.x, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.x, r5.x, l(0), t0.xxxx -ftoi r3.w, r3.w -iadd r3.w, r3.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx -and r3.w, r3.w, r5.x -and r2.y, r2.y, r3.w -mul r19.xyz, r17.xyzx, cb0[111].xxxx -dp3 r3.w, r19.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r7.w, l(1.000000) -mov r19.xyz, l(0,0,0,0) -mov r5.x, l(1.000000) -mov r5.z, r2.y -mov r8.w, l(0) -loop - lt r9.w, l(0.010000), r5.x - ine r10.w, r5.z, l(0) - and r10.w, r9.w, r10.w - if_nz r10.w - firstbit_lo r10.w, r5.z - ishl r11.w, l(1), r10.w - xor r5.z, r5.z, r11.w - ishl r10.w, r10.w, l(3) - dp4 r20.x, cb1[r10.w + 6].xyzw, r7.xyzw - dp4 r20.y, cb1[r10.w + 7].xyzw, r7.xyzw - dp4 r20.z, cb1[r10.w + 8].xyzw, r7.xyzw - ge r21.xyz, cb1[r10.w + 5].xyzx, |r20.xyzx| - and r11.w, r21.y, r21.x - and r11.w, r21.z, r11.w - if_nz r11.w - mul r11.w, l(0.100000), cb1[r10.w + 5].x - mul r21.xyz, |r20.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r13.zw, r21.xxxy, r21.xxxy - add r21.xyw, -|r20.xyxz|, cb1[r10.w + 5].xyxz - mul r21.xyw, r21.xyxw, cb1[r10.w + 9].xyxz - eq r12.z, l(1.000000), cb1[r10.w + 10].x - if_nz r12.z - dp3 r22.x, cb1[r10.w + 6].xyzx, r18.xyzx - dp3 r22.y, cb1[r10.w + 7].xyzx, r18.xyzx - dp3 r22.z, cb1[r10.w + 8].xyzx, r18.xyzx - add r23.xyz, -r20.xyzx, cb1[r10.w + 5].xyzx - div r23.xyz, r23.xyzx, r22.xyzx - add r24.xyz, -r20.xyzx, -cb1[r10.w + 5].xyzx - div r24.xyz, r24.xyzx, r22.xyzx - lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx - movc r23.xyz, r25.xyzx, r23.xyzx, r24.xyzx - min r12.z, r23.y, r23.x - min r12.z, r23.z, r12.z - mad r20.xyz, r22.xyzx, r12.zzzz, r20.xyzx - else - mov r20.xyz, r18.xyzx - endif - dp3 r12.z, r20.xyzx, r20.xyzx - rsq r12.z, r12.z - mul r20.xyz, r12.zzzz, r20.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx - lt r23.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r22.xyz, -r22.xyzx, r23.xyzx - itof r22.xyz, r22.xyzx - dp3 r12.z, r20.xyzx, r22.xyzx - div r20.xyz, r20.xyzx, r12.zzzz - lt r12.z, r20.z, l(0.000000) - add r20.zw, -|r20.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r20.zw, r20.zzzw, r22.xxxy - movc r20.xy, r12.zzzz, r20.zwzz, r20.xyxx - dp4 r12.z, cb1[r10.w + 4].xyzw, r6.xyzw - max r12.z, r12.z, l(0.000000) - max r12.z, r12.z, l(0.000100) - min r17.w, r21.w, r21.y - min r17.w, r17.w, r21.x - add r13.z, r13.w, r13.z - mad r13.z, r21.z, r21.z, r13.z - mad r11.w, r11.w, r11.w, -r13.z - mul r11.w, r11.w, cb1[r10.w + 9].x - mul r11.w, r11.w, cb1[r10.w + 9].x - add r13.z, l(1.000000), -cb1[r10.w + 10].y - mul r11.w, r11.w, r13.z - mul r11.w, r11.w, l(100.000000) - mad_sat r11.w, r17.w, cb1[r10.w + 10].y, r11.w - mul r13.z, r11.w, cb1[r10.w + 10].w - mad r20.xy, r20.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r20.xy, r20.xyxx, cb1[1].wwww, cb1[2].wwww - mov r20.z, cb1[r10.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r20.xyz, r20.xyzx, t5.xyzw, s3, r0.z - mul r20.xyz, r20.xyzx, cb1[r10.w + 9].wwww - div r13.w, r3.w, r12.z - min r13.w, |r13.w|, l(1.000000) - mad r13.w, r13.w, l(2.000000), r3.w - add r12.z, r12.z, l(2.000000) - div r12.z, r13.w, r12.z - add r12.z, r12.z, l(-1.000000) - mad r12.z, r12.z, cb0[112].w, l(1.000000) - mul r20.xyz, r12.zzzz, r20.xyzx - mul r20.xyz, r13.zzzz, r20.xyzx - mad r19.xyz, r20.xyzx, r5.xxxx, r19.xyzx - mad r10.w, -r11.w, cb1[r10.w + 10].w, l(1.000000) - mul r5.x, r5.x, r10.w - endif - mov r8.w, l(-1) - continue - else - mov r8.w, r9.w - break - endif - mov r8.w, r9.w -endloop -if_nz r8.w - dp3 r2.y, r18.xyzx, r18.xyzx - rsq r2.y, r2.y - mul r18.xyz, r2.yyyy, r18.xyzx - lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyzx - lt r21.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r20.xyz, -r20.xyzx, r21.xyzx - itof r20.xyz, r20.xyzx - dp3 r2.y, r18.xyzx, r20.xyzx - div r18.xyz, r18.xyzx, r2.yyyy - lt r2.y, r18.z, l(0.000000) - add r13.zw, -|r18.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r13.zw, r13.zzzw, r20.xxxy - movc r13.zw, r2.yyyy, r13.zzzw, r18.xxxy - dp4 r2.y, cb1[3].xyzw, r6.xyzw - max r2.y, r2.y, l(0.000000) - max r2.y, r2.y, l(0.000100) - mad r13.zw, r13.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r18.xy, r13.zwzz, cb1[1].wwww, cb1[2].wwww - mov r18.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r18.xyz, r18.xyzx, t5.xyzw, s3, r0.z - div r0.z, r3.w, r2.y - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r3.w - add r2.y, r2.y, l(2.000000) - div r0.z, r0.z, r2.y - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r18.xyz, r0.zzzz, r18.xyzx - mad r19.xyz, r18.xyzx, r5.xxxx, r19.xyzx -endif -mul r18.xyz, r19.xyzx, cb0[112].zzzz -mul r18.xyz, r18.xyzx, cb0[111].yyyy -if_nz r2.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r19.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x - add r2.y, -r0.z, l(1.000000) - mul r20.xyz, r2.yyyy, r18.xyzx - mad r18.xyz, r19.xyzx, r0.zzzz, r20.xyzx -endif -mul r17.xyz, r3.xyzx, r17.xyzx -mul r17.xyz, r17.xyzx, cb0[111].xxxx -mad r0.z, r2.x, r13.x, r13.y -mul r2.xyz, r0.zzzz, r18.xyzx -mul r2.xyz, r10.xyzx, r2.xyzx -mad r2.xyz, r17.xyzx, r12.xywx, r2.xyzx -mul r6.xyzw, r6.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) -dp4 r10.x, r15.xyzw, r6.xyzw -dp4 r10.y, r14.xyzw, r6.xyzw -dp4 r10.z, r16.xyzw, r6.xyzw -max r6.xyz, r10.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -mul r6.xyz, r6.xyzx, cb0[111].xxxx -mul r6.xyz, r12.xywx, r6.xyzx -max r0.z, r3.y, r3.x -max r0.z, r3.z, r0.z -max r0.z, r0.z, l(0.010000) -div r3.xyz, r3.xyzx, r0.zzzz -mul r3.xyz, r3.xyzx, r6.xyzx -mul r0.z, r4.x, l(0.00787401572) -min r3.w, r5.y, l(1.000000) -bfi r1.z, l(3), l(2), r1.z, l(0) -ftou r2.w, r2.w -bfi r1.z, l(2), l(0), r2.w, r1.z -utof r1.z, r1.z -mul r1.z, r1.z, l(0.0322580636) -mad r0.z, r0.z, r3.w, r1.z -mul r3.xyz, r0.zzzz, r3.xyzx -mad r2.xyz, r3.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000), r2.xyzx -add r1.xyz, r1.xywx, r2.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r7.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r5.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r7.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xyz, r0.zzzz, cb0[155].xyzx -mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r2.xyz, r2.xyzx -dp3 r0.z, -r11.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.w, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.w -lt r2.w, l(0.000000), cb0[163].z -if_nz r2.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r11.xyzx, -r9.xyzx - add r2.w, r7.y, -cb0[44].y - lt r3.z, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.z - mul r0.x, r0.x, cb0[163].w - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w - mul r3.w, r0.x, r3.z - mad r4.x, r3.w, r2.w, cb0[44].y - mad r2.w, -r3.w, r2.w, r2.w - mul r3.w, r2.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - mul r2.w, r2.w, cb0[162].x - max r2.w, r2.w, l(-127.000000) - add r5.x, r4.x, -cb0[159].x - mul r5.x, r5.x, cb0[159].z - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[159].y - lt r5.y, l(5.960464478E-08), |r3.w| - exp r5.z, -r3.w - add r5.z, -r5.z, l(1.000000) - div r5.z, r5.z, r3.w - mad r3.w, -r3.w, l(0.240226507), l(0.693147182) - movc r3.w, r5.y, r5.z, r3.w - add r4.x, r4.x, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r5.y, l(5.960464478E-08), |r2.w| - exp r5.z, -r2.w - add r5.z, -r5.z, l(1.000000) - div r5.z, r5.z, r2.w - mad r2.w, -r2.w, l(0.240226507), l(0.693147182) - movc r2.w, r5.y, r5.z, r2.w - mul r2.w, r2.w, r4.x - mad r2.w, r5.x, r3.w, r2.w - mad r0.x, -r0.x, r3.z, l(1.000000) - mul r0.x, r5.w, r0.x - mul r0.x, r0.x, r2.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r3.zw, r5.wwww, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r3.z - add r0.x, r3.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz - mul r3.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r4.w|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r3.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t12.xyzw, s1, l(0.000000) - add r0.y, |r4.w|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r0.x, r0.x, r3.w -else - add r0.y, r7.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.w, cb0[44].y, -cb0[159].x - mul r2.w, r2.w, cb0[159].z - max r2.w, r2.w, l(-127.000000) - exp r2.w, -r2.w - mul r2.w, r2.w, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.w, r0.w, r0.y - mul r0.y, r5.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r5.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r3.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r2.xyzx -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.w, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r2.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx -mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx -dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -dp3 r1.w, r8.xyzx, r8.xyzx -sqrt r1.w, r1.w -mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) -mul r2.x, r1.w, cb0[169].x -mad r1.w, -cb0[169].x, r1.w, l(1.000000) -mul r2.yzw, cb0[168].xxyz, cb0[183].wwww -mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw -sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t25.xwyz, s2, l(0.000000) -dp2 r2.x, r2.yyyy, r2.xxxx -add r1.w, r1.w, r2.x -add r2.x, r0.w, l(1.000000) -min r1.w, r1.w, r2.x -add r0.xyz, -r1.xyzx, r0.xyzx -mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx -mov o0.w, r0.w -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0_original_backup.asm deleted file mode 100644 index eb832b91d3..0000000000 --- a/src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0_original_backup.asm +++ /dev/null @@ -1,1911 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 22:27:23 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy w -// TEXCOORD 0 xy 1 NONE float xy -// TEXCOORD 1 xyz 2 NONE float xyz -// TEXCOORD 2 xyz 3 NONE float xyz -// TEXCOORD 3 xyzw 4 NONE float xyzw -// TEXCOORD 4 xyz 5 NONE float xyz -// TEXCOORD 5 xyz 6 NONE float xyz -// TEXCOORD 6 xyz 7 NONE float xyz -// TEXCOORD 7 xyz 8 NONE float xyz -// TEXCOORD 8 x 9 NONE uint x -// SV_IsFrontFace 0 x 10 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[216], immediateIndexed -dcl_constantbuffer CB1[4093], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[14], immediateIndexed -dcl_constantbuffer CB6[160], dynamicIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_comparison -dcl_sampler s3, mode_default -dcl_sampler s4, mode_default -dcl_sampler s5, mode_default -dcl_sampler s6, mode_default -dcl_sampler s7, mode_default -dcl_resource_structured t0, 4 -dcl_resource_structured t1, 16 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture3d (float,float,float,float) t4 -dcl_resource_texture3d (float,float,float,float) t5 -dcl_resource_texture3d (float,float,float,float) t6 -dcl_resource_texture3d (float,float,float,float) t7 -dcl_resource_texture3d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texturecube (float,float,float,float) t17 -dcl_resource_texture2d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_input_ps_siv linear noperspective v0.xyw, position -dcl_input_ps linear v1.xy -dcl_input_ps linear v2.xyz -dcl_input_ps linear v3.xyz -dcl_input_ps linear v4.xyzw -dcl_input_ps linear v5.xyz -dcl_input_ps linear v6.xyz -dcl_input_ps linear v7.xyz -dcl_input_ps linear v8.xyz -dcl_input_ps constant v9.x -dcl_input_ps_sgv constant v10.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 32 -add r0.xyz, -v2.xyzx, cb0[44].xyzx -mov r1.x, cb0[0].z -mov r1.y, cb0[1].z -mov r1.z, cb0[2].z -add r2.xyz, -r0.xyzx, r1.xyzx -mad r0.xyz, cb0[86].wwww, r2.xyzx, r0.xyzx -dp3 r0.w, r0.xyzx, r0.xyzx -max r1.w, r0.w, l(9.999999939E-09) -rsq r1.w, r1.w -mul r2.xyz, r0.xyzx, r1.wwww -ishl r2.w, v9.x, l(4) -and r3.x, l(16), cb1[r2.w + 4].w -if_nz r3.x - iadd r3.x, l(2), cb1[r2.w + 5].x - ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r3.x, l(12), t1.xxxx - ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.y, cb1[r2.w + 5].x, l(12), t1.xxxx -else - mov r3.xy, cb1[r2.w + 3].zxzz -endif -sample_b_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t13.xyzw, s4, cb0[108].x -sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t14.xyzw, s5, cb0[108].x -add r3.z, -r5.w, l(1.000000) -mul r4.xyzw, r4.xyzw, cb5[5].xyzw -mul r6.xyz, r4.xyzx, cb5[4].zzzz -dp3 r3.w, r6.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r6.xyz, r4.xyzx, cb5[4].zzzz, -r3.wwww -mad r6.xyz, cb5[4].wwww, r6.xyzx, r3.wwww -sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, v1.xyxx, t15.xywz, s6, cb0[108].x -mul r7.x, r7.x, r7.z -mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r3.w, r7.xyxx, r7.xyxx -min r3.w, r3.w, l(1.000000) -add r3.w, -r3.w, l(1.000000) -sqrt r3.w, r3.w -max r3.w, r3.w, l(1.000000017E-16) -mul r7.xy, r7.xyxx, cb5[0].wwww -sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, v1.xyxx, t16.xyzw, s7, cb0[108].x -add r9.xz, -r3.yyxy, v2.xxzx -mov r9.y, l(0.0000610351562) -dp3 r3.x, r9.xyzx, r9.xyzx -rsq r3.x, r3.x -mul r9.xyz, r3.xxxx, r9.xyzx -mul r10.xyz, v3.zxyz, v4.yzxy -mad r10.xyz, v3.yzxy, v4.zxyz, -r10.xyzx -mul r10.xyz, r10.xyzx, v4.wwww -mul r7.yzw, r7.yyyy, r10.xxyz -mad r7.xyz, r7.xxxx, v4.xyzx, r7.yzwy -mad r3.xyw, r3.wwww, v3.xyxz, r7.xyxz -mad r6.w, cb5[1].y, l(2.000000), l(-1.000000) -movc r6.w, v10.x, l(1.000000), r6.w -dp3 r7.x, r3.xywx, r3.xywx -max r7.x, r7.x, l(1.175494351E-38) -rsq r7.x, r7.x -mul r3.xyw, r3.xyxw, r7.xxxx -mul r7.xyz, r6.wwww, r3.xywx -dp3 r8.w, v3.xyzx, v3.xyzx -rsq r8.w, r8.w -mul r11.xyz, r8.wwww, v3.xyzx -mul r11.xyz, r6.wwww, r11.xyzx -ftou r12.xy, v0.xyxx -add r8.w, l(1.000000), -cb0[111].x -mad r8.w, cb0[198].w, r8.w, cb0[111].x -mul r8.w, r8.w, cb0[109].x -lt r9.w, cb0[187].y, l(0.500000) -if_nz r9.w - mad r13.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx - add r13.xyz, -r13.xyzx, v2.xzyx - max r9.w, |r13.y|, |r13.x| - add r9.w, r9.w, l(-464.000000) - mul_sat r9.w, r9.w, l(0.031250) - add r10.w, |r13.z|, l(-208.000000) - mul_sat r10.w, r10.w, l(0.031250) - max r9.w, r9.w, r10.w - ne r10.w, l(0.000000), cb0[210].w - lt r11.w, r9.w, l(1.000000) - and r10.w, r10.w, r11.w - if_nz r10.w - mad r13.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r13.xyz, -r13.xyzx, v2.xzyx - max r10.w, |r13.y|, |r13.x| - add r10.w, r10.w, l(-29.000000) - mul_sat r10.w, r10.w, l(0.500000) - add r11.w, |r13.z|, l(-13.000000) - mul_sat r11.w, r11.w, l(0.500000) - max r10.w, r10.w, r11.w - lt r11.w, r10.w, l(1.000000) - if_nz r11.w - mad r13.xyz, v2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r14.xyz, r13.xyzx, cb0[211].xyzx - round_ni r14.xyz, r14.xyzx - mad r13.xyz, r13.xyzx, cb0[211].xyzx, -r14.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r14.xyw, r13.xyzx, t4.yzwx, s1, l(0.000000) - add r11.w, -r10.w, l(1.000000) - mul r15.x, l(0.500000), cb0[211].y - mad r15.y, -cb0[211].y, l(0.500000), l(1.000000) - max r13.y, r13.y, r15.x - min r13.y, r15.y, r13.y - mul r13.w, r13.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r13.xwzx, t5.xyzw, s0, l(0.000000) - mad r13.y, r15.w, r11.w, r9.w - add r16.xyz, r13.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s0, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r14.yyyy, r16.xyzx - mov r16.w, r14.y - mul r16.xyzw, r11.wwww, r16.xyzw - add r13.xzw, r13.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t5.xwyz, s0, l(0.000000) - mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r17.xyz, r14.xxxx, r13.xzwx - mov r17.w, r14.x - mul r17.xyzw, r11.wwww, r17.xyzw - mad r13.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r14.xyz, r14.wwww, r13.xzwx - mul r14.xyzw, r11.wwww, r14.xyzw - else - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r13.y, r9.w - endif - mad r13.xzw, cb0[6].xxzy, -cb0[212].zzzz, cb0[210].xxzy - add r13.xzw, -r13.xxzw, v2.xxzy - max r11.w, |r13.z|, |r13.x| - add r11.w, r11.w, l(-116.000000) - mul_sat r11.w, r11.w, l(0.125000) - add r13.x, |r13.w|, l(-52.000000) - mul_sat r13.x, r13.x, l(0.125000) - max r11.w, r11.w, r13.x - lt r13.x, r11.w, l(1.000000) - if_nz r13.x - mad r13.xzw, v2.xxyz, l(0.500000, 0.000000, 0.500000, 0.500000), l(0.500000, 0.000000, 0.500000, 0.500000) - mul r15.xyz, r13.xzwx, cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r15.xyz, r13.xzwx, cb0[211].xyzx, -r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r15.xyzx, t6.yzwx, s1, l(0.000000) - add r13.x, -r11.w, l(1.000000) - mul r10.w, r10.w, r13.x - mul r13.x, l(0.500000), cb0[211].y - mad r13.z, -cb0[211].y, l(0.500000), l(1.000000) - max r13.x, r13.x, r15.y - min r13.x, r13.z, r13.x - mul r15.w, r13.x, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r15.xwzx, t7.xyzw, s0, l(0.000000) - mad r13.y, r19.w, r10.w, r13.y - add r13.xzw, r15.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t7.xwyz, s0, l(0.000000) - mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r20.xyz, r18.yyyy, r13.xzwx - mov r20.w, r18.y - mad r16.xyzw, r20.xyzw, r10.wwww, r16.xyzw - add r13.xzw, r15.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t7.xwyz, s0, l(0.000000) - mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r15.xyz, r18.xxxx, r13.xzwx - mov r15.w, r18.x - mad r17.xyzw, r15.xyzw, r10.wwww, r17.xyzw - mad r13.xzw, r19.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r18.xyz, r18.wwww, r13.xzwx - mad r14.xyzw, r18.xyzw, r10.wwww, r14.xyzw - endif - lt r10.w, l(0.000000), r11.w - if_nz r10.w - mad r13.xzw, v2.xxyz, l(0.125000, 0.000000, 0.125000, 0.125000), l(0.500000, 0.000000, 0.500000, 0.500000) - mul r15.xyz, r13.xzwx, cb0[211].xyzx - mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r13.xzw, r13.xxzw, cb0[211].xxyz, -r15.xxyz - mad r15.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r13.xzw, r18.xxyz, r13.xxzw - min r19.xyz, r15.xyzx, r13.xzwx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r19.xyzx, t8.yzwx, s1, l(0.000000) - add r10.w, -r9.w, l(1.000000) - mul r10.w, r10.w, r11.w - max r11.w, r18.y, r19.y - min r11.w, r15.y, r11.w - mul r19.w, r11.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r19.xwzx, t9.xyzw, s0, l(0.000000) - add r13.xzw, r19.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t9.xwyz, s0, l(0.000000) - mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r18.xyz, r20.yyyy, r13.xzwx - mov r18.w, r20.y - mad r16.xyzw, r18.xyzw, r10.wwww, r16.xyzw - add r13.xzw, r19.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t9.xwyz, s0, l(0.000000) - mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r18.xyz, r20.xxxx, r13.xzwx - mov r18.w, r20.x - mad r17.xyzw, r18.xyzw, r10.wwww, r17.xyzw - mad r13.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r20.xyz, r20.wwww, r13.xzwx - mad r14.xyzw, r20.xyzw, r10.wwww, r14.xyzw - mad r13.y, r15.w, r10.w, r13.y - endif - mad_sat r10.w, r13.y, l(2.000000), l(-1.000000) - add r13.x, -r9.w, r10.w - add r9.w, r9.w, r10.w - mul r13.y, r9.w, l(0.500000) - else - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r13.xy, l(0,1.000000,0,0) - endif - mul r15.xyzw, r13.yyyx, cb0[213].xyzw - mad r15.y, r15.w, l(0.500000), r15.y - mul r13.zw, r13.yyyx, cb0[213].wwwy - mad r15.w, r13.w, l(0.375000), r13.z - add r14.xyzw, r14.xyzw, r15.xyzw - mul r15.xyzw, r13.yyyx, cb0[214].xyzw - mad r15.y, r15.w, l(0.500000), r15.y - mul r13.zw, r13.yyyx, cb0[214].wwwy - mad r15.w, r13.w, l(0.375000), r13.z - add r15.xyzw, r15.xyzw, r17.xyzw - mul r17.xyzw, r13.yyyx, cb0[215].xyzw - mad r17.y, r17.w, l(0.500000), r17.y - mul r13.xy, r13.yxyy, cb0[215].wyww - mad r17.w, r13.y, l(0.375000), r13.x - add r13.xyzw, r16.xyzw, r17.xyzw - mov r7.w, l(1.000000) - dp4 r16.x, r14.xyzw, r7.xyzw - dp4 r16.y, r15.xyzw, r7.xyzw - dp4 r16.z, r13.xyzw, r7.xyzw - max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r17.xyz, r8.wwww, r16.xyzx - mul r18.xyz, r15.xyzx, l(0.715200, 0.715200, 0.715200, 0.000000) - mad r18.xyz, r14.xyzx, l(0.212600, 0.212600, 0.212600, 0.000000), r18.xyzx - mad r18.xyz, r13.xyzx, l(0.072200, 0.072200, 0.072200, 0.000000), r18.xyzx - dp3 r7.w, r18.xyzx, r18.xyzx - max r7.w, r7.w, l(1.175494351E-38) - rsq r7.w, r7.w - mul r18.xyz, r7.wwww, r18.xyzx - mov r18.y, |r18.y| - mov r18.w, l(1.000000) - dp4 r14.x, r14.xyzw, r18.xyzw - dp4 r14.y, r15.xyzw, r18.xyzw - dp4 r14.z, r13.xyzw, r18.xyzw - max r13.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - ge r7.w, r17.y, r17.z - and r7.w, r7.w, l(0x3f800000) - mov r14.xy, r17.zyzz - mov r14.zw, l(0,0,-1.000000,0.666666687) - mad r15.xy, r16.yzyy, r8.wwww, -r14.xyxx - mov r15.zw, l(0,0,1.000000,-1.000000) - mad r14.xyzw, r7.wwww, r15.xyzw, r14.xyzw - ge r7.w, r17.x, r14.x - and r7.w, r7.w, l(0x3f800000) - mov r15.xyz, r14.xywx - mov r15.w, r17.x - mov r14.xyw, r15.wywx - add r14.xyzw, -r15.xyzw, r14.xyzw - mad r14.xyzw, r7.wwww, r14.xyzw, r15.xyzw - min r7.w, r14.y, r14.w - add r7.w, -r7.w, r14.x - add r9.w, -r14.y, r14.w - mad r10.w, r7.w, l(6.000000), l(0.000100) - div r9.w, r9.w, r10.w - add r9.w, r9.w, r14.z - frc r9.w, |r9.w| - add r10.w, r14.x, l(0.000100) - div r7.w, r7.w, r10.w - add r15.xyzw, r9.wwww, l(-0.500000, 1.000000, 0.666666687, 0.333333343) - add r9.w, |r15.x|, l(-0.450000) - mul_sat r9.w, r9.w, l(-10.000001) - mad r10.w, r9.w, l(-2.000000), l(3.000000) - mul r9.w, r9.w, r9.w - mul r9.w, r9.w, r10.w - mad r9.w, r9.w, l(-0.350000), l(0.700000) - mov_sat r14.x, r14.x - mul r9.w, r9.w, r14.x - min r7.w, r7.w, r9.w - add r9.w, -r7.w, l(2.000000) - div r9.w, l(2.000000), r9.w - frc r14.xyz, r15.yzwy - mad r14.xyz, r14.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) - add_sat r14.xyz, |r14.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r14.xyz, r14.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) - mad r14.xyz, r7.wwww, r14.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mul r14.xyz, r9.wwww, r14.xyzx - max r7.w, r13.y, r13.x - max r7.w, r13.z, r7.w - mul r8.w, r8.w, r7.w - mov r7.w, l(1.000000) -else - mov r18.xyz, l(0,0,0,0) - mov r17.xyz, l(1.000000,1.000000,1.000000,0) - mov r14.xyz, cb0[188].xyzx - mov r7.w, l(0) -endif -dp3 r13.x, v4.xyzx, r2.xyzx -dp3 r13.y, r10.xyzx, r2.xyzx -dp3 r13.z, v3.xyzx, r2.xyzx -dp3 r9.w, r13.xyzx, r13.xyzx -max r9.w, r9.w, l(1.175494351E-38) -rsq r9.w, r9.w -mul r10.xyz, r9.wwww, r13.xyzx -mad r13.xy, v1.xyxx, cb5[13].xyxx, cb5[13].zwzz -deriv_rtx_coarse r13.zw, v1.xxxy -deriv_rty_coarse r15.xy, v1.xyxx -min r9.w, l(20.000000), cb5[11].x -div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w -max r10.z, r10.z, l(0.001000) -div r10.xy, r10.xyxx, r10.zzzz -mul r10.xy, r10.xyxx, -cb5[11].yyyy -mul r15.zw, r10.wwww, r10.xxxy -add r10.z, -r10.w, l(1.000000) -add r9.w, r9.w, l(1.000000) -mul r13.zw, r13.zzzw, cb0[108].yyyy -mul r15.xy, r15.xyxx, cb0[108].yyyy -mov r16.xy, r15.zwzz -mov r16.zw, l(0,0,0,0) -mov r11.w, r10.z -mov r14.w, l(0) -mov r17.w, l(1.000000) -mov r18.w, l(0) -mov r19.x, l(0) -loop - lt r19.y, r19.x, r9.w - if_nz r19.y - add r19.yz, r13.xxyx, r16.xxyx - sample_d_indexable(texture2d)(float,float,float,float) r19.y, r19.yzyy, t10.yxzw, s3, r13.zwzz, r15.xyxx - lt r19.z, r11.w, r19.y - if_nz r19.z - mov r18.w, r19.y - break - endif - add r19.x, r19.x, l(1.000000) - mad r19.zw, r10.xxxy, r10.wwww, r16.xxxy - add r20.x, -r10.w, r11.w - mov r16.zw, r16.xxxy - mov r14.w, r19.y - mov r17.w, r11.w - mov r11.w, r20.x - mov r16.xy, r19.zwzz - continue - else - mov r18.w, r14.w - break - endif -endloop -add r9.w, r14.w, -r17.w -add r10.x, r14.w, -r18.w -add r10.x, r11.w, r10.x -add r10.x, -r17.w, r10.x -div r9.w, r9.w, r10.x -mad r10.xy, r15.zwzz, r9.wwww, r16.zwzz -add r10.xy, r13.xyxx, r10.xyxx -sample_b_indexable(texture2d)(float,float,float,float) r9.w, r10.xyxx, t10.yzwx, s3, cb0[108].x -add r10.x, -v2.y, cb1[r2.w + 12].z -add r10.x, r10.x, l(0.200000) -mul_sat r10.x, r10.x, l(2.85714269) -mad r10.y, r10.x, l(-2.000000), l(3.000000) -mul r10.x, r10.x, r10.x -mul r10.x, r10.x, r10.y -mul r10.x, r10.x, cb1[r2.w + 12].y -max r10.x, r10.x, cb1[r2.w + 12].w -add r10.y, r10.x, cb1[r2.w + 12].x -lt r10.y, l(0.010000), r10.y -if_nz r10.y - add r10.y, -r5.x, l(1.000000) - mul r13.xyz, r4.xyzx, r10.yyyy - dp3 r10.z, r13.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r10.z, r10.z, l(-0.350000) - mul_sat r10.z, r10.z, l(-4.000000) - mad r10.w, r10.z, l(-2.000000), l(3.000000) - mul r10.z, r10.z, r10.z - mul r11.w, r10.z, r10.w - mul r13.xyzw, v8.xyxz, l(1.000000, -1.000000, 1.000000, 1.000000) - movc r13.xyzw, cb1[r2.w + 4].wwww, r13.xyzw, v8.xzxy - mul r15.xyzw, r13.xyzw, cb0[196].zzzz - movc r16.yz, cb1[r2.w + 4].wwww, v7.zzyz, v7.yyzy - mov r16.x, v7.x - add r19.xyz, |r16.xyzx|, l(-0.200000, -0.200000, -0.200000, 0.000000) - mul r20.xyz, r19.xyzx, r19.xyzx - mul r19.xyz, r19.xyzx, r20.xyzx - max r19.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - dp3 r13.x, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - div r19.xyz, r19.xyzx, r13.xxxx - sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r15.zyzz, t11.xyzw, s4, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.zwzz, t11.xyzw, s4, cb0[108].x - mul r22.xyzw, r19.zzzz, r22.xyzw - mad r21.xyzw, r21.xyzw, r19.yyyy, r22.xyzw - sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.ywyy, t11.xyzw, s4, cb0[108].x - mad r19.xyzw, r22.xyzw, r19.xxxx, r21.xyzw - add r16.yw, -r19.wwww, l(0.000000, 0.800000, 0.000000, 0.450000) - mul r21.xyz, r7.yyxy, l(0.200000, 0.000000, 1.000000, 0.000000) - mad_sat r13.x, cb1[r2.w + 12].x, r10.y, r21.x - add r13.x, -r16.y, r13.x - mul_sat r13.x, r13.x, l(3.33333325) - mad r14.w, r13.x, l(-2.000000), l(3.000000) - mul r13.x, r13.x, r13.x - mul r13.x, r13.x, r14.w - mul_sat r10.y, r10.y, r10.x - add r10.y, -r16.w, r10.y - mul_sat r10.y, r10.y, l(1.53846145) - mad r14.w, r10.y, l(-2.000000), l(3.000000) - mul r10.y, r10.y, r10.y - mul r10.y, r10.y, r14.w - max r10.y, r10.y, r13.x - add r13.x, r5.x, l(-0.500000) - mul_sat r13.x, r13.x, l(4.000000) - mad r14.w, r13.x, l(-2.000000), l(3.000000) - mul r13.x, r13.x, r13.x - mul r13.x, r13.x, r14.w - add r5.w, -r5.w, l(0.199999988) - mul_sat r5.w, r5.w, l(-5.00000048) - mad r14.w, r5.w, l(-2.000000), l(3.000000) - mul r5.w, r5.w, r5.w - mul r5.w, r5.w, r14.w - mad r14.w, r5.w, r11.w, r13.x - min r14.w, r14.w, l(1.000000) - max r10.x, r10.x, cb1[r2.w + 12].x - mad r16.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mul r19.xyw, r15.yzyw, l(20.000000, 20.000000, 0.000000, 20.000000) - mul r22.xyz, r15.yzwy, l(34.345600, 34.345600, 34.345600, 0.000000) - mul r23.xyz, r20.xyzx, r20.xyzx - mul r23.xyz, r23.xyzx, r23.xyzx - mul r20.xyz, r20.xyzx, r23.xyzx - dp3 r17.w, r20.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - div r20.xyz, r20.xyzx, r17.wwww - round_ni r23.xyzw, r19.yxyw - mul r24.xyzw, r23.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r24.xyzw, r24.xyzw - add r25.xyzw, r24.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r17.w, r24.xyxx, r25.xyxx - add r21.xw, r17.wwww, r24.xxxy - mul r17.w, r21.w, r21.x - add r18.w, r21.w, r21.x - frc r17.w, r17.w - frc r26.w, r18.w - add r27.xyzw, r23.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) - mul r27.xyzw, r27.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r27.xyzw, r27.xyzw - add r28.xyzw, r27.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r18.w, r27.xyxx, r28.xyxx - add r21.xw, r18.wwww, r27.xxxy - mul r18.w, r21.w, r21.x - add r19.y, r21.w, r21.x - frc r24.x, r18.w - frc r24.y, r19.y - mad r18.w, r17.w, l(0.399999976), l(0.600000) - mul r19.y, r18.w, l(0.250000) - mad r23.xyzw, r15.zyzw, l(20.000000, 20.000000, 20.000000, 20.000000), -r23.xyzw - mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.xxxy - add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) - mul r23.x, r21.x, l(1.250000) - lt r20.w, r21.w, l(0.000000) - movc r20.w, r20.w, l(1.250000), l(0.750000) - mul r23.y, r20.w, r21.w - mad r17.w, cb0[102].x, l(3.000000), r17.w - frc r17.w, r17.w - add r21.xw, r17.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) - mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) - mad r25.xy, r21.xwxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) - mul r21.xw, r21.xxxw, r21.xxxw - mul r21.xw, r21.xxxw, r25.xxxy - mul r17.w, r21.w, r21.x - dp2 r20.w, r23.xyxx, r23.xyxx - sqrt r20.w, r20.w - mad r18.w, -r18.w, l(0.250000), r20.w - div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.y - mul_sat r18.w, r18.w, r20.w - mad r20.w, r18.w, l(-2.000000), l(3.000000) - mul r18.w, r18.w, r18.w - mul r18.w, r18.w, r20.w - ge r18.w, r18.w, l(0.001000) - and r18.w, r18.w, l(0x3f800000) - mul r26.z, r17.w, r18.w - div r21.xw, r23.xxxy, r19.yyyy - max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) - min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - ge r17.w, r26.z, l(0.001000) - and r17.w, r17.w, l(0x3f800000) - mul r21.xw, r17.wwww, r21.xxxw - mad r17.w, r24.x, l(0.250000), l(0.250000) - mul r26.xy, r17.wwww, r21.xwxx - dp2 r17.w, r24.zwzz, r25.zwzz - add r21.xw, r17.wwww, r24.zzzw - mul r17.w, r21.w, r21.x - add r18.w, r21.w, r21.x - frc r17.w, r17.w - frc r24.w, r18.w - dp2 r18.w, r27.zwzz, r28.zwzz - add r21.xw, r18.wwww, r27.zzzw - mul r18.w, r21.w, r21.x - add r19.y, r21.w, r21.x - frc r23.x, r18.w - frc r23.y, r19.y - mad r18.w, r17.w, l(0.399999976), l(0.600000) - mul r19.y, r18.w, l(0.250000) - mad r21.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.zzzw - add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) - mul r25.x, r21.x, l(1.250000) - lt r20.w, r21.w, l(0.000000) - movc r20.w, r20.w, l(1.250000), l(0.750000) - mul r25.y, r20.w, r21.w - mad r17.w, cb0[102].x, l(3.000000), r17.w - frc r17.w, r17.w - add r21.xw, r17.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) - mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) - mad r23.yz, r21.xxwx, l(0.000000, -2.000000, -2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000) - mul r21.xw, r21.xxxw, r21.xxxw - mul r21.xw, r21.xxxw, r23.yyyz - mul r17.w, r21.w, r21.x - dp2 r20.w, r25.xyxx, r25.xyxx - sqrt r20.w, r20.w - mad r18.w, -r18.w, l(0.250000), r20.w - div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.y - mul_sat r18.w, r18.w, r20.w - mad r20.w, r18.w, l(-2.000000), l(3.000000) - mul r18.w, r18.w, r18.w - mul r18.w, r18.w, r20.w - ge r18.w, r18.w, l(0.001000) - and r18.w, r18.w, l(0x3f800000) - mul r24.z, r17.w, r18.w - div r21.xw, r25.xxxy, r19.yyyy - max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) - min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - ge r17.w, r24.z, l(0.001000) - and r17.w, r17.w, l(0x3f800000) - mul r21.xw, r17.wwww, r21.xxxw - mad r17.w, r23.x, l(0.250000), l(0.250000) - mul r24.xy, r17.wwww, r21.xwxx - round_ni r19.xy, r19.xwxx - mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r21.xw, r21.xxxw - add r23.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r17.w, r21.xwxx, r23.xyxx - add r21.xw, r17.wwww, r21.xxxw - mul r17.w, r21.w, r21.x - add r18.w, r21.w, r21.x - frc r17.w, r17.w - frc r23.w, r18.w - add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) - mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r21.xw, r21.xxxw - add r25.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r18.w, r21.xwxx, r25.xyxx - add r21.xw, r18.wwww, r21.xxxw - mul r18.w, r21.w, r21.x - add r19.w, r21.w, r21.x - frc r25.x, r18.w - frc r25.y, r19.w - mad r18.w, r17.w, l(0.399999976), l(0.600000) - mul r19.w, r18.w, l(0.250000) - mad r19.xy, r15.ywyy, l(20.000000, 20.000000, 0.000000, 0.000000), -r19.xyxx - mad r21.xw, r25.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx - add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - mul r27.x, r19.x, l(1.250000) - lt r19.x, r19.y, l(0.000000) - movc r19.x, r19.x, l(1.250000), l(0.750000) - mul r27.y, r19.x, r19.y - mad r17.w, cb0[102].x, l(3.000000), r17.w - frc r17.w, r17.w - add r19.xy, r17.wwww, l(-0.200000, -0.850000, 0.000000, 0.000000) - mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) - mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r19.xy, r19.xyxx, r19.xyxx - mul r19.xy, r19.xyxx, r21.xwxx - mul r17.w, r19.y, r19.x - dp2 r19.x, r27.xyxx, r27.xyxx - sqrt r19.x, r19.x - mad r18.w, -r18.w, l(0.250000), r19.x - div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.w - mul_sat r18.w, r18.w, r19.x - mad r19.x, r18.w, l(-2.000000), l(3.000000) - mul r18.w, r18.w, r18.w - mul r18.w, r18.w, r19.x - ge r18.w, r18.w, l(0.001000) - and r18.w, r18.w, l(0x3f800000) - mul r23.z, r17.w, r18.w - div r19.xy, r27.xyxx, r19.wwww - max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r17.w, r23.z, l(0.001000) - and r17.w, r17.w, l(0x3f800000) - mul r19.xy, r17.wwww, r19.xyxx - mad r17.w, r25.x, l(0.250000), l(0.250000) - mul r23.xy, r17.wwww, r19.xyxx - mul r24.xyzw, r20.zzzz, r24.xyzw - mad r24.xyzw, r26.xyzw, r20.yyyy, r24.xyzw - mad r23.xyzw, r23.xyzw, r20.xxxx, r24.xyzw - round_ni r24.xyzw, r22.yxyz - mul r25.xyzw, r24.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r25.xyzw, r25.xyzw - add r26.xyzw, r25.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r17.w, r25.xyxx, r26.xyxx - add r19.xy, r17.wwww, r25.xyxx - mul r17.w, r19.y, r19.x - add r18.w, r19.y, r19.x - frc r17.w, r17.w - frc r27.w, r18.w - add r28.xyzw, r24.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) - mul r28.xyzw, r28.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r28.xyzw, r28.xyzw - add r29.xyzw, r28.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r18.w, r28.xyxx, r29.xyxx - add r19.xy, r18.wwww, r28.xyxx - mul r18.w, r19.y, r19.x - add r19.x, r19.y, r19.x - frc r25.x, r18.w - frc r25.y, r19.x - mad r18.w, r17.w, l(0.399999976), l(0.600000) - mul r19.x, r18.w, l(0.250000) - mad r24.xyzw, r15.xyzw, l(34.345600, 34.345600, 34.345600, 34.345600), -r24.xyzw - mad r19.yw, r25.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.xxxy - add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) - mul r24.x, r19.y, l(1.250000) - lt r15.x, r19.w, l(0.000000) - movc r15.x, r15.x, l(1.250000), l(0.750000) - mul r24.y, r15.x, r19.w - mad r15.x, cb0[102].x, l(4.345600), r17.w - frc r15.x, r15.x - add r19.yw, r15.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) - mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) - mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r19.yw, r19.yyyw, r19.yyyw - mul r19.yw, r19.yyyw, r21.xxxw - mul r15.x, r19.w, r19.y - dp2 r17.w, r24.xyxx, r24.xyxx - sqrt r17.w, r17.w - mad r17.w, -r18.w, l(0.250000), r17.w - div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.x - mul_sat r17.w, r17.w, r18.w - mad r18.w, r17.w, l(-2.000000), l(3.000000) - mul r17.w, r17.w, r17.w - mul r17.w, r17.w, r18.w - ge r17.w, r17.w, l(0.001000) - and r17.w, r17.w, l(0x3f800000) - mul r27.z, r15.x, r17.w - div r19.xy, r24.xyxx, r19.xxxx - max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r15.x, r27.z, l(0.001000) - and r15.x, r15.x, l(0x3f800000) - mul r19.xy, r15.xxxx, r19.xyxx - mad r15.x, r25.x, l(0.250000), l(0.250000) - mul r27.xy, r15.xxxx, r19.xyxx - dp2 r15.x, r25.zwzz, r26.zwzz - add r19.xy, r15.xxxx, r25.zwzz - mul r15.x, r19.y, r19.x - add r17.w, r19.y, r19.x - frc r15.x, r15.x - frc r25.w, r17.w - dp2 r17.w, r28.zwzz, r29.zwzz - add r19.xy, r17.wwww, r28.zwzz - mul r17.w, r19.y, r19.x - add r18.w, r19.y, r19.x - frc r19.x, r17.w - frc r19.y, r18.w - mad r17.w, r15.x, l(0.399999976), l(0.600000) - mul r18.w, r17.w, l(0.250000) - mad r19.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.zzzw - add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) - mul r24.x, r19.y, l(1.250000) - lt r19.y, r19.w, l(0.000000) - movc r19.y, r19.y, l(1.250000), l(0.750000) - mul r24.y, r19.y, r19.w - mad r15.x, cb0[102].x, l(4.345600), r15.x - frc r15.x, r15.x - add r19.yw, r15.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) - mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) - mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r19.yw, r19.yyyw, r19.yyyw - mul r19.yw, r19.yyyw, r21.xxxw - mul r15.x, r19.w, r19.y - dp2 r19.y, r24.xyxx, r24.xyxx - sqrt r19.y, r19.y - mad r17.w, -r17.w, l(0.250000), r19.y - div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w - mul_sat r17.w, r17.w, r19.y - mad r19.y, r17.w, l(-2.000000), l(3.000000) - mul r17.w, r17.w, r17.w - mul r17.w, r17.w, r19.y - ge r17.w, r17.w, l(0.001000) - and r17.w, r17.w, l(0x3f800000) - mul r25.z, r15.x, r17.w - div r19.yw, r24.xxxy, r18.wwww - max r19.yw, r19.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) - min r19.yw, r19.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) - ge r15.x, r25.z, l(0.001000) - and r15.x, r15.x, l(0x3f800000) - mul r19.yw, r15.xxxx, r19.yyyw - mad r15.x, r19.x, l(0.250000), l(0.250000) - mul r25.xy, r15.xxxx, r19.ywyy - round_ni r19.xy, r22.xzxx - mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r21.xw, r21.xxxw - add r22.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r15.x, r21.xwxx, r22.xyxx - add r21.xw, r15.xxxx, r21.xxxw - mul r15.x, r21.w, r21.x - add r17.w, r21.w, r21.x - frc r15.x, r15.x - frc r22.w, r17.w - add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) - mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r21.xw, r21.xxxw - add r24.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r17.w, r21.xwxx, r24.xyxx - add r21.xw, r17.wwww, r21.xxxw - mul r17.w, r21.w, r21.x - add r18.w, r21.w, r21.x - frc r24.x, r17.w - frc r24.y, r18.w - mad r17.w, r15.x, l(0.399999976), l(0.600000) - mul r18.w, r17.w, l(0.250000) - mad r19.xy, r15.ywyy, l(34.345600, 34.345600, 0.000000, 0.000000), -r19.xyxx - mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx - add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - mul r26.x, r19.x, l(1.250000) - lt r19.x, r19.y, l(0.000000) - movc r19.x, r19.x, l(1.250000), l(0.750000) - mul r26.y, r19.x, r19.y - mad r15.x, cb0[102].x, l(4.345600), r15.x - frc r15.x, r15.x - add r19.xy, r15.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) - mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) - mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r19.xy, r19.xyxx, r19.xyxx - mul r19.xy, r19.xyxx, r21.xwxx - mul r15.x, r19.y, r19.x - dp2 r19.x, r26.xyxx, r26.xyxx - sqrt r19.x, r19.x - mad r17.w, -r17.w, l(0.250000), r19.x - div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w - mul_sat r17.w, r17.w, r19.x - mad r19.x, r17.w, l(-2.000000), l(3.000000) - mul r17.w, r17.w, r17.w - mul r17.w, r17.w, r19.x - ge r17.w, r17.w, l(0.001000) - and r17.w, r17.w, l(0x3f800000) - mul r22.z, r15.x, r17.w - div r19.xy, r26.xyxx, r18.wwww - max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r15.x, r22.z, l(0.001000) - and r15.x, r15.x, l(0x3f800000) - mul r19.xy, r15.xxxx, r19.xyxx - mad r15.x, r24.x, l(0.250000), l(0.250000) - mul r22.xy, r15.xxxx, r19.xyxx - mul r24.xyzw, r20.zzzz, r25.xyzw - mad r24.xyzw, r27.xyzw, r20.yyyy, r24.xyzw - mad r20.xyzw, r22.xyzw, r20.xxxx, r24.xyzw - max r19.xy, r20.zwzz, r23.zwzz - mad r20.zw, -r14.wwww, r10.xxxx, l(0.000000, 0.000000, 1.000000, 1.010000) - add r15.x, r19.y, l(-0.100000) - ge r15.x, r15.x, r20.z - and r15.x, r15.x, l(0x3f800000) - mul r15.x, r15.x, r19.x - ge r2.w, cb1[r2.w + 12].x, l(0.010000) - and r2.w, r2.w, l(0x3f800000) - mul r2.w, r2.w, r15.x - lt r15.x, l(0.001000), r2.w - add r19.xy, r20.xyxx, r23.xyxx - mul r17.w, cb0[102].x, cb0[196].z - mul r20.y, r17.w, l(0.750000) - dp2 r17.w, r16.xzxx, r16.xzxx - max r17.w, r17.w, l(1.175494351E-38) - rsq r17.w, r17.w - mul r16.xz, r16.xxzx, r17.wwww - add r16.xz, |r16.xxzx|, l(-0.200000, 0.000000, -0.200000, 0.000000) - mul r21.xw, r16.xxxz, r16.xxxz - mul r16.xz, r16.xxzx, r21.xxwx - max r16.xz, r16.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) - dp2 r17.w, r16.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) - div r16.xz, r16.xxzx, r17.wwww - sample_b_indexable(texture2d)(float,float,float,float) r22.xyz, r15.zwzz, t12.xyzw, s4, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r15.yzw, r15.ywyy, t12.wxyz, s4, cb0[108].x - mul r15.yzw, r16.xxxx, r15.yyzw - mad r15.yzw, r22.xxyz, r16.zzzz, r15.yyzw - movc r16.yw, r15.xxxx, r19.xxxy, r16.yyyw - mad r15.xy, r15.yzyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mov r20.x, l(0) - mad r22.xyzw, r13.zwyw, cb0[196].zzzz, r20.xyxy - sample_b_indexable(texture2d)(float,float,float,float) r13.y, r22.xyxx, t12.xwyz, s4, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r13.z, r22.zwzz, t12.xywz, s4, cb0[108].x - mul r13.z, r16.x, r13.z - mad r13.y, r13.y, r16.z, r13.z - mad r13.yz, r15.xxyx, r13.yyyy, r16.yywy - ge r13.w, r19.z, r20.w - and r13.w, r13.w, l(0x3f800000) - max r2.w, r2.w, r13.w - add r13.w, -r15.w, l(1.000000) - mad r10.x, r14.w, r10.x, -r13.w - mul_sat r10.x, r10.x, l(9.999998) - mad r13.w, r10.x, l(-2.000000), l(3.000000) - mul r10.x, r10.x, r10.x - mul r10.x, r10.x, r13.w - max r2.w, r2.w, r10.x - mad r15.xy, -r7.zyzz, l(1.000000, 0.000000, 0.000000, 0.000000), r21.yzyy - dp2 r10.x, r15.xyxx, r15.xyxx - lt r13.w, l(0.0000610351562), r10.x - rsq r10.x, r10.x - mul r15.xy, r10.xxxx, r15.xyxx - mov r15.xy, -r15.xyxx - movc r16.z, r13.w, r15.x, l(-1.000000) - and r16.y, r13.w, r15.y - min r10.x, r3.z, l(0.050000) - add r13.w, -r3.z, r10.x - mad r13.w, r2.w, r13.w, r3.z - mad r10.z, -r10.w, r10.z, l(1.000000) - mul r10.z, r10.z, r10.y - mad r5.w, -r5.w, r11.w, l(1.000000) - mul r5.w, r5.w, r10.z - mad r5.w, r5.w, l(-0.500000), l(1.000000) - mov r16.x, l(0) - mad r3.xyw, -r3.xyxw, r6.wwww, r16.zxzy - mad r3.xyw, r13.yyyy, r3.xyxw, r7.xyxz - mul r15.xyz, r7.zxyz, r16.xyzx - mad r15.xyz, r7.yzxy, r16.yzxy, -r15.xyzx - add r15.xyz, -r3.xywx, r15.xyzx - mad r3.xyw, r13.zzzz, r15.xyxz, r3.xyxw - dp3 r6.w, r3.xywx, r3.xywx - rsq r6.w, r6.w - mad r3.xyw, r3.xyxw, r6.wwww, -r7.xyxz - mad r3.xyw, r2.wwww, r3.xyxw, r7.xyxz - dp3 r6.w, r3.xywx, r3.xywx - rsq r6.w, r6.w - mul r3.xyw, r3.xyxw, r6.wwww - mul r6.w, r11.w, r10.y - mad r6.w, -r6.w, l(0.200000), r13.w - min r10.y, r13.w, l(0.200000) - max r3.z, r6.w, r10.y - mul r6.xyz, r5.wwww, r6.xyzx - dp3 r6.w, r4.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r6.w, r6.w, l(-0.700000) - mul_sat r6.w, r6.w, l(-2.50000024) - mad r10.y, r6.w, l(-2.000000), l(3.000000) - mul r6.w, r6.w, r6.w - mul r6.w, r6.w, r10.y - mad r6.w, r6.w, l(0.500000), l(1.000000) - mul r10.y, r13.x, r2.w - mad r13.xyz, r4.xyzx, r6.wwww, -r4.xyzx - mad r10.yzw, r10.yyyy, r13.xxyz, r4.xxyz - mul r4.xyz, r5.wwww, r10.yzwy -else - mov r3.xyw, r7.xyxz - mov r10.x, l(0.010000) - mov r2.w, l(0) -endif -mul r5.w, r5.y, l(0.040000) -mad r6.w, -r5.x, l(0.960000), l(0.960000) -mul r10.yzw, r4.xxyz, r6.wwww -mad r13.xyz, -r5.yyyy, l(0.040000, 0.040000, 0.040000, 0.000000), r4.xyzx -mad r13.xyz, r5.xxxx, r13.xyzx, r5.wwww -mul r6.xyz, r6.wwww, r6.xyzx -mul r5.y, r3.z, r3.z -max r5.y, r5.y, l(0.00781250000) -max r5.w, v5.z, l(9.999999939E-09) -div r15.xy, v5.xyxx, r5.wwww -max r5.w, v6.z, l(9.999999939E-09) -div r15.zw, v6.xxxy, r5.wwww -add r15.xy, -r15.zwzz, r15.xyxx -mul r16.xy, r15.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) -sqrt r16.xy, |r16.xyxx| -sqrt r16.xy, r16.xyxx -mov r15.z, -r15.y -lt r15.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xxxz -lt r15.xz, r15.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r15.xy, -r15.ywyy, r15.xzxx -itof r15.xy, r15.xyxx -mul r15.xy, r15.xyxx, r16.xyxx -mad o1.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -lt r5.w, l(0.500000), r2.w -movc o1.w, r5.w, l(0.700000), l(0.400000) -add r15.xyz, cb0[197].xyzx, cb3[0].xyzx -mad r15.xyz, cb0[187].wwww, r15.xyzx, -cb3[0].xyzx -mov r15.w, l(0.0000610351562) -dp3 r5.w, r15.xzwx, r15.xzwx -rsq r5.w, r5.w -mul r16.xyz, r5.wwww, r15.xwzx -add r19.xyz, cb0[191].xyzx, -cb3[3].xyzx -mad r19.xyz, cb0[198].yyyy, r19.xyzx, cb3[3].xyzx -add r5.w, l(1.000000), -cb3[3].w -mad r5.w, cb0[198].w, r5.w, cb3[3].w -mul r20.xyz, r5.wwww, r19.xyzx -mov r12.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r21.xy, r12.xyzz, t3.xyzw -add r11.w, r21.x, l(-1.000000) -mad r11.w, cb4[34].x, r11.w, l(1.000000) -add r12.z, -r11.w, l(1.000000) -mad r11.w, cb0[187].z, r12.z, r11.w -dp3 r12.z, r7.xyzx, r15.xyzx -mul r21.xzw, r6.xxyz, cb0[186].zzzz -mul r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000) -dp3 r13.w, r10.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) -dp2 r14.w, cb0[6].xzxx, cb0[6].xzxx -rsq r14.w, r14.w -mul r23.xy, r14.wwww, cb0[6].xzxx -dp2 r14.w, r16.xzxx, r23.xyxx -mov_sat r14.w, -r14.w -add r23.xy, l(1.000000, 1.000000, 0.000000, 0.000000), -cb0[198].xyxx -mad r15.w, r12.z, l(0.500000), l(-1.000000) -mad r15.w, -r12.z, r15.w, -r12.z -add r16.w, l(0.750000), -|cb0[6].y| -add_sat r16.w, r16.w, r16.w -mad r17.w, r16.w, l(-2.000000), l(3.000000) -mul r16.w, r16.w, r16.w -mul r16.w, r16.w, r17.w -mul r16.w, r14.w, r16.w -mul r16.w, r23.x, r16.w -add r15.w, r15.w, l(0.500000) -mad r12.z, r16.w, r15.w, r12.z -mad r12.z, cb0[197].w, cb0[198].x, r12.z -max r12.z, r12.z, l(-1.000000) -min r12.z, r12.z, l(1.000000) -add r12.z, r12.z, l(-0.250000) -mul r12.z, r12.z, l(1.33333337) -max r12.z, r12.z, l(0.000000) -mad r15.w, r12.z, l(-2.000000), l(3.000000) -mul r12.z, r12.z, r12.z -mul r12.z, r12.z, r15.w -dp3 r15.w, r7.xyzx, cb0[6].xyzx -add r15.w, r15.w, l(-0.250000) -mul_sat r15.w, r15.w, l(1.33333337) -mad r16.w, r15.w, l(-2.000000), l(3.000000) -mul r15.w, r15.w, r15.w -mul r15.w, r15.w, r16.w -mul r16.w, r5.z, r21.y -min r17.w, r5.z, r21.y -min r18.w, r12.z, r17.w -mul r19.w, r15.w, r16.w -dp3 r20.w, r7.xyzx, cb0[192].xyzx -add_sat r20.w, r20.w, cb0[193].x -mad r20.w, r20.w, cb0[193].y, cb0[193].z -mul r22.w, r18.w, cb0[187].y -add r24.xyz, -r14.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r24.xyz, r22.wwww, r24.xyzx, r14.xyzx -mul r24.xyz, r20.wwww, r24.xyzx -mad r20.w, r8.w, l(0.350000024), l(0.650000) -min r20.w, r20.w, l(1.500000) -max r25.xyz, r8.wwww, l(1.250000, 0.000000, 0.500000, 0.000000) -min r25.xyz, r25.xyzx, l(1.750000, 1.500000, 1.500000, 0.000000) -add r8.w, -r20.w, r25.x -mad r8.w, cb0[187].x, r8.w, r20.w -mul r26.xyz, r8.wwww, r24.xyzx -mul r26.xyz, r26.xyzx, cb0[186].wwww -dp3 r8.w, r20.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r20.xyz, r19.xyzx, r5.wwww, -r8.wwww -mad r20.xyz, r18.wwww, r20.xyzx, r8.wwww -mul r24.xyz, r24.xyzx, r25.yyyy -mad r23.yzw, r19.xxyz, cb0[198].yyyy, r23.yyyy -mad r20.xyz, r24.xyzx, r23.yzwy, r20.xyzx -mad r20.xyz, r20.xyzx, cb0[186].yyyy, -r26.xyzx -mad r20.xyz, r11.wwww, r20.xyzx, r26.xyzx -dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000), -r8.wwww -mad r22.xyz, r22.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r8.wwww -mad_sat r8.w, r15.w, r16.w, r12.z -mad r23.yzw, r6.xxyz, cb0[186].zzzz, -r22.xxyz -mad r22.xyz, r8.wwww, r23.yzwy, r22.xyzx -mad r23.yzw, r4.xxyz, r6.wwww, -r22.xxyz -mad r22.xyz, r18.wwww, r23.yzwy, r22.xyzx -mad r23.yzw, r4.xxyz, r6.wwww, -r13.wwww -mad r23.yzw, r23.yyzw, l(0.000000, 1.200000, 1.200000, 1.200000), r13.wwww -mad r23.yzw, -r6.xxyz, cb0[186].zzzz, r23.yyzw -mad r21.xzw, r19.wwww, r23.yyzw, r21.xxzw -dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -max r12.z, r8.w, l(0.001000) -div r12.z, l(1.000000, 1.000000, 1.000000, 1.000000), r12.z -mul r8.w, r8.w, r12.z -max r8.w, r8.w, l(0.000000) -min r8.w, r8.w, l(1.500000) -mad r22.xyz, r22.xyzx, r8.wwww, -r21.xzwx -mad r21.xzw, r11.wwww, r22.xxyz, r21.xxzw -mad r8.w, -r15.w, r16.w, r18.w -mad r8.w, r11.w, r8.w, r19.w -add r12.z, l(1.000000), -cb0[186].z -mad r12.z, r8.w, r12.z, cb0[186].z -add r15.w, r15.y, l(-0.500000) -mad r22.y, r11.w, r15.w, l(0.500000) -dp3_sat r24.x, r3.xywx, r2.xyzx -mov r22.xz, cb0[6].xxzx -dp3 r15.w, r22.xyzx, r22.xyzx -max r15.w, r15.w, l(1.175494351E-38) -rsq r15.w, r15.w -mul r22.xyz, r15.wwww, r22.xyzx -add r22.xyz, r22.xyzx, r22.xyzx -mad r15.xyz, r15.xyzx, r11.wwww, r22.xyzx -add r15.w, r11.w, l(2.000000) -mad r15.xyz, r2.xyzx, r15.wwww, r15.xyzx -dp3 r15.w, r15.xyzx, r15.xyzx -rsq r15.w, r15.w -mul r15.xyz, r15.wwww, r15.xyzx -dp3 r15.x, r3.xywx, r15.xyzx -mul r15.y, r5.y, r5.y -mad r15.z, r15.x, r15.y, -r15.x -mad r15.x, r15.z, r15.x, l(1.000000) -mul r15.x, r15.x, r15.x -add r15.z, l(1.000000), -cb5[1].z -mad r15.z, r4.w, cb5[1].z, r15.z -mul r22.xyz, r20.xyzx, r21.xzwx -ne r15.w, r15.x, r15.y -div r15.x, r15.y, r15.x -movc r15.x, r15.w, r15.x, l(1.000000) -mad r15.y, r24.x, l(2.000000), r5.y -add r15.y, r15.y, l(0.000100) -div r15.y, l(0.500000), r15.y -mad r15.x, r15.x, r15.y, l(-0.0000610351562) -max r15.x, r15.x, l(0.000000) -min r15.x, r15.x, l(20.000000) -mul r15.xyw, r13.xyxz, r15.xxxx -mad r8.w, r8.w, l(0.500000), l(0.500000) -mul r8.w, r12.z, r8.w -mul r20.xyz, r8.wwww, r20.xyzx -mul r15.xyw, r15.xyxw, r20.xyxz -mul r15.xyw, r15.xyxw, cb0[199].wwww -mad r15.xyw, r22.xyxz, r15.zzzz, r15.xyxw -dp3 r8.w, r15.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r16.w, r8.w, l(-0.500000) -max r16.w, r16.w, l(0.000000) -min r16.w, r16.w, l(0.500000) -mov r20.y, l(0) -mov r20.xz, cb0[195].yyxy -mul r22.xyz, r20.xyzx, cb0[6].zxyz -mad r20.xyz, cb0[6].yzxy, r20.yzxy, -r22.xyzx -dp3 r18.w, r20.xyzx, r20.xyzx -rsq r18.w, r18.w -mul r20.xyz, r18.wwww, r20.xyzx -dp3 r18.w, r2.xyzx, r7.xyzx -add r22.xy, -|r18.wwww|, l(1.000000, 0.399999976, 0.000000, 0.000000) -dp3 r16.x, r16.xyzx, r7.xyzx -add r16.y, -r11.w, l(1.000000) -add r10.x, -r3.z, r10.x -mad r2.w, r2.w, r10.x, r3.z -mul r26.y, r2.w, r2.w -mul r27.x, r24.x, r24.x -mul r27.z, r24.x, r27.x -mul r10.x, r26.y, r26.y -mul r26.z, r26.y, r10.x -mov r24.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r25.x, l(3.327070, 1.000000, 0.000000, 0.000000), r24.xyxx -dp2 r25.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r24.xzxx -mov r26.x, l(1.000000) -dp2 r10.x, r25.xyxx, r26.xyxx -mov r27.yw, l(0,9.044010,0,1.000000) -dp3 r28.x, l(3.596850, -1.367720, 1.000000, 0.000000), r27.xzwx -dp3 r28.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r27.xyzx -mov r29.x, l(5.565890) -mov r29.yz, r27.xxzx -dp3 r28.z, l(1.000000, 19.788601, -20.212299, 0.000000), r29.xyzx -dp3 r16.z, r28.xyzx, r26.xyzx -div r10.x, r10.x, r16.z -dp2 r25.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r24.xwxx -mov r27.x, l(1.296780) -mov r27.y, r24.x -dp2 r25.y, l(1.000000, -0.755907, 0.000000, 0.000000), r27.xyxx -dp2 r16.z, r25.xyxx, r26.xyxx -dp3 r28.x, l(2.923380, 59.418800, 1.000000, 0.000000), r27.yzwy -mov r27.xw, l(20.322500,0,0,121.563004) -dp3 r28.y, l(1.000000, -27.030199, 222.591995, 0.000000), r27.xyzx -dp3 r28.z, l(626.130005, 316.627014, 1.000000, 0.000000), r27.yzwy -dp3 r19.w, r28.xyzx, r26.xyzx -div r16.z, r16.z, r19.w -mad r23.yzw, r13.xxyz, r10.xxxx, r16.zzzz -add r10.x, r10.x, r16.z -mad r16.z, r16.w, r16.w, l(1.000000) -add r15.xyw, -r8.wwww, r15.xyxw -mad r15.xyw, r16.zzzz, r15.xyxw, r8.wwww -mad r16.zw, cb0[195].wwww, l(0.000000, 0.000000, -0.600000, -0.399999976), l(0.000000, 0.000000, 0.800000, 0.900000) -add r8.w, -r16.z, r16.w -add r16.z, -r16.z, r22.x -div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w -mul_sat r8.w, r8.w, r16.z -mad r16.z, r8.w, l(-2.000000), l(3.000000) -mul r8.w, r8.w, r8.w -mul r8.w, r8.w, r16.z -mul r24.yzw, r8.wwww, cb0[194].xxyz -mul r24.yzw, r24.yyzw, cb0[194].wwww -dp3 r8.w, r9.xyzx, r20.xyzx -add_sat r8.w, r8.w, l(1.000000) -min r5.z, r5.z, r8.w -min r5.z, r21.y, r5.z -mul r24.yzw, r5.zzzz, r24.yyzw -mad r25.xyw, r4.xyxz, r6.wwww, l(-0.250000, -0.250000, 0.000000, -0.250000) -mad r25.xyw, cb0[195].zzzz, r25.xyxw, l(0.250000, 0.250000, 0.000000, 0.250000) -dp3_sat r5.z, r20.xyzx, r7.xyzx -mul r20.xyz, r5.zzzz, r25.xywx -max r5.z, r17.y, r17.x -max r5.z, r17.z, r5.z -mul r5.z, r5.z, l(0.500000) -max r5.z, r5.z, l(1.000000) -div r5.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z -mul r17.xyz, r5.zzzz, r17.xyzx -mad r19.xyz, r19.xyzx, r5.wwww, -r17.xyzx -mad r17.xyz, r11.wwww, r19.xyzx, r17.xyzx -dp3 r5.z, r18.xyzx, r7.xyzx -mul r5.w, r7.w, r5.z -mad r8.w, r16.x, l(0.500000), l(-1.000000) -mad r8.w, -r16.x, r8.w, l(0.500000) -mad r5.z, -r5.z, r7.w, r8.w -mad_sat r5.z, r11.w, r5.z, r5.w -mul r16.xzw, r5.zzzz, r17.xxyz -mad r5.z, r14.w, r11.w, r16.y -mul r5.z, r23.x, r5.z -mul r16.xzw, r5.zzzz, r16.xxzw -mul_sat r5.z, r22.y, l(5.00000048) -mad r5.w, r5.z, l(-2.000000), l(3.000000) -mul r5.z, r5.z, r5.z -mul r5.z, r5.z, r5.w -mul r16.xzw, r5.zzzz, r16.xxzw -mul r16.xzw, r17.wwww, r16.xxzw -add r5.z, r13.w, l(-0.100000) -mul_sat r5.z, r5.z, l(-16.666666) -mad r5.w, r5.z, l(-2.000000), l(3.000000) -mul r5.z, r5.z, r5.z -mul r5.z, r5.z, r5.w -mad r5.z, r5.z, r11.w, r16.y -mul r16.xzw, r5.zzzz, r16.xxzw -max r17.xyz, r10.yzwy, l(0.150000, 0.150000, 0.150000, 0.000000) -mul r16.xzw, r16.xxzw, r17.xxyz -mad r16.xzw, r24.yyzw, r20.xxyz, r16.xxzw -add r15.xyw, r15.xyxw, r16.xzxw -utof r5.zw, r12.xxxy -mul r16.xz, r5.zzwz, l(0.031250, 0.000000, 0.031250, 0.000000) -round_ni r16.xz, r16.xxzx -mad r7.w, r16.z, cb2[1].y, r16.x -mul r7.w, r7.w, l(8.000000) -ftoi r7.w, r7.w -mad r8.w, -cb0[85].y, cb2[2].w, v0.w -round_ni r8.w, r8.w -add r11.w, l(-1.000000), cb2[1].w -max r13.w, r8.w, l(0.000000) -min r11.w, r11.w, r13.w -mul r13.w, r11.w, l(8.000000) -ftoi r13.w, r13.w -mul r8.xyz, r8.xyzx, cb5[6].xyzx -mul r16.xzw, r9.wwww, cb5[12].xxyz -mul r16.xzw, r4.wwww, r16.xxzw -mad r8.xyz, r8.xyzx, cb5[1].wwww, r16.xzwx -mad r8.xyz, r8.xyzx, r15.zzzz, r15.xywx -dp3 r9.w, -r2.xyzx, r3.xywx -add r9.w, r9.w, r9.w -mad r15.xyw, r3.xyxw, -r9.wwww, -r2.xyxz -max r2.w, r2.w, l(0.001000) -log r2.w, r2.w -mad r2.w, r2.w, l(1.200000), l(5.000000) -sample_l_indexable(texturecube)(float,float,float,float) r15.xyw, r15.xywx, t17.xywz, s0, r2.w -add r2.w, -r10.x, l(1.000000) -div r2.w, r2.w, r10.x -mul r16.xzw, r2.wwww, r13.xxyz -mad r16.xzw, r16.xxzw, r23.yyzw, r23.yyzw -mul r15.xyw, r15.xyxw, r16.xzxw -mul r2.w, r25.z, cb0[186].w -mul r2.w, r12.z, r2.w -mul r15.xyw, r2.wwww, r15.xyxw -mad r8.xyz, r15.xywx, r14.xyzx, r8.xyzx -ge r2.w, r11.w, r8.w -iadd r8.w, r13.w, cb0[110].y -mad r9.w, r16.y, l(-0.250000), l(0.750000) -mad r4.xyz, r4.xyzx, r6.wwww, l(-0.500000, -0.500000, -0.500000, 0.000000) -add r6.w, -r5.y, l(0.010000) -ge r5.x, r5.x, l(0.500000) -and r5.x, r5.x, l(0x3f800000) -mov r14.w, l(1.000000) -mov r15.xyw, r8.xyxz -mov r10.x, l(0) -loop - ilt r11.w, l(7), r10.x - breakc_nz r11.w - iadd r11.w, r7.w, r10.x - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx - iadd r12.z, r8.w, r10.x - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.z, r12.z, l(0), t0.xxxx - and r11.w, r11.w, r12.z - and r11.w, r2.w, r11.w - ishl r12.z, r10.x, l(5) - mov r16.xyz, r15.xywx - mov r13.w, r11.w - loop - breakc_z r13.w - firstbit_lo r16.w, r13.w - ishl r17.x, l(1), r16.w - xor r17.x, r13.w, r17.x - iadd r16.w, r12.z, r16.w - bfi r19.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 5, 6, 7) - ftou r17.y, cb3[r19.y + 6].w - ieq r17.y, r17.y, l(1) - if_nz r17.y - add r14.xyz, v2.xyzx, -cb3[r19.x + 6].xyzx - and r17.yzw, l(0, 0x0000ffff, 0x0000ffff, 0x0000ffff), cb3[r19.y + 6].xxzy - and r18.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r19.z + 6].yxzy - ushr r20.xyz, cb3[r19.y + 6].xzyx, l(16, 16, 16, 0) - ushr r22.yzw, cb3[r19.z + 6].yyxz, l(0, 16, 16, 16) - f16tof32 r17.yzw, r17.yyzw - f16tof32 r18.xyz, r18.xyzx - f16tof32 r20.xyz, r20.xyzx - f16tof32 r23.xyw, r22.zyzw - mov r25.xz, r17.yywy - mov r25.yw, r20.xxxz - dp4 r17.y, r14.xyzw, r25.xyzw - mov r20.x, r17.z - mov r20.z, r18.y - mov r20.w, r23.x - dp4 r17.z, r14.xyzw, r20.xyzw - mov r23.xz, r18.xxzx - dp4 r14.x, r14.xyzw, r23.xyzw - max r14.y, |r17.z|, |r17.y| - max r14.x, |r14.x|, r14.y - mad r14.y, cb3[r19.w + 6].x, l(0.500000), l(0.500000) - add r14.x, -r14.y, r14.x - mad r14.y, -cb3[r19.w + 6].x, l(0.500000), l(0.500000) - div_sat r14.x, r14.x, r14.y - add r14.x, -r14.x, l(1.000000) - mul r14.x, r14.x, r14.x - else - mov r14.x, l(1.000000) - endif - lt r14.y, r14.x, l(0.001000) - if_nz r14.y - mov r13.w, r17.x - continue - endif - ishl r14.y, r16.w, l(3) - lt r14.z, cb3[r14.y + 6].w, l(1.500000) - if_nz r14.z - bfi r14.z, l(29), l(3), r16.w, l(3) - ieq r17.y, l(16), cb3[r14.z + 6].w - add r17.z, cb0[198].z, cb3[r14.z + 6].z - lt r17.z, r17.z, l(0.500000) - or r17.y, r17.z, r17.y - if_z r17.y - bfi r17.yz, l(0, 29, 29, 0), l(0, 3, 3, 0), r16.wwww, l(0, 2, 4, 0) - ftou r16.w, cb3[r14.y + 6].w - and r16.w, r16.w, l(1) - ieq r17.w, r16.w, l(0) - not r17.w, r17.w - lt r18.x, l(0.000000), cb3[r17.y + 6].z - and r17.w, r17.w, r18.x - ieq r18.x, l(4), cb3[r14.z + 6].w - movc r18.y, r16.w, l(0), l(1.000000) - mad r18.z, cb3[r17.y + 6].y, l(0.500000), l(0.500000) - add r20.z, r18.z, -|cb3[r17.y + 6].x| - add r20.x, -r20.z, cb3[r17.y + 6].y - add r18.z, -|r20.z|, l(1.000000) - add r18.z, -|r20.x|, r18.z - max r18.z, r18.z, l(0.000488281250) - ge r19.y, cb3[r17.y + 6].x, l(0.000000) - movc r20.y, r19.y, r18.z, -r18.z - dp3 r18.z, r20.xyzx, r20.xyzx - rsq r18.z, r18.z - mul r20.xyz, r18.zzzz, r20.xyzx - add r18.z, cb3[r17.z + 6].y, cb3[r17.z + 6].y - max r18.z, r18.z, l(0.100000) - and r19.y, r18.x, l(0x3f800000) - add r18.z, r18.z, -cb3[r19.z + 6].w - mad r18.z, r19.y, r18.z, cb3[r19.z + 6].w - add r22.yzw, -v2.xxyz, cb3[r19.x + 6].xxyz - dp3 r19.y, r22.zwyz, -r20.xyzx - lt r19.z, l(0.500000), cb3[r17.z + 6].z - and r19.z, r18.x, r19.z - and r19.z, r19.z, l(0x3f800000) - mul r19.z, r18.y, r19.z - mad r23.xyz, -r20.zxyz, r19.yyyy, -r22.yzwy - mad r22.yzw, r19.zzzz, r23.xxyz, r22.yyzw - dp3 r19.y, r22.yzwy, r22.yzwy - rsq r19.z, r19.y - mul r23.xyz, r19.zzzz, r22.yzwy - if_nz r17.w - mul r24.yzw, r20.zzxy, cb3[r17.y + 6].zzzz - mad r25.xyz, -r24.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), r22.yzwy - mad r24.yzw, r24.yyzw, l(0.000000, 0.500000, 0.500000, 0.500000), r22.yyzw - dp3 r19.z, r25.xyzx, r25.xyzx - sqrt r19.z, r19.z - dp3 r20.w, r24.yzwy, r24.yzwy - sqrt r20.w, r20.w - mul r26.xyz, r20.xyzx, r23.xyzx - mad r26.xyz, r20.zxyz, r23.yzxy, -r26.xyzx - mul r27.xyz, r20.xyzx, r26.xyzx - mad r26.xyz, r26.zxyz, r20.yzxy, -r27.xyzx - dp3 r21.y, r26.xyzx, r26.xyzx - rsq r21.y, r21.y - mul r23.xyz, r21.yyyy, r26.xyzx - dp3 r21.y, r25.xyzx, r24.yzwy - mad r21.y, r19.z, r20.w, r21.y - mad r21.y, r21.y, l(0.500000), l(1.000000) - div r21.y, l(1.000000, 1.000000, 1.000000, 1.000000), r21.y - dp3 r23.w, r23.xyzx, r25.xyzx - div r19.z, r23.w, r19.z - dp3 r23.w, r23.xyzx, r24.yzwy - div r20.w, r23.w, r20.w - add r19.z, r19.z, r20.w - mul_sat r19.z, r19.z, l(0.500000) - mul r19.z, r19.z, r21.y - else - mov r19.z, l(1.000000) - endif - lt r20.w, r18.z, l(0.000000) - if_nz r20.w - mul r20.w, cb3[r19.x + 6].w, cb3[r19.x + 6].w - mul r20.w, r19.y, r20.w - mad r20.w, -r20.w, r20.w, l(1.000000) - max r20.w, r20.w, l(0.000000) - add r19.y, r19.y, l(1.000000) - div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), r19.y - and r21.y, r17.w, l(0x3f800000) - add r23.w, -r19.y, r19.z - mad r19.y, r21.y, r23.w, r19.y - mul r20.w, r20.w, r20.w - mul r19.y, r19.y, r20.w - else - mul r24.yzw, r22.yyzw, cb3[r19.x + 6].wwww - dp3 r20.w, r24.yzwy, r24.yzwy - min r20.w, r20.w, l(1.000000) - add r20.w, -r20.w, l(1.000000) - log r20.w, r20.w - mul r18.z, r18.z, r20.w - exp r18.z, r18.z - mul r19.y, r18.z, r19.z - endif - dp3 r18.z, r23.yzxy, -r20.xyzx - add r18.z, r18.z, -cb3[r17.y + 6].z - mul_sat r18.z, r18.z, cb3[r17.y + 6].w - mad r18.z, r18.z, r18.z, l(-1.000000) - mad r18.y, r18.y, r18.z, l(1.000000) - mul r18.y, r18.y, r19.y - ftoi r18.z, cb3[r19.w + 6].w - not r17.w, r17.w - ige r19.y, r18.z, l(0) - and r17.w, r17.w, r19.y - if_nz r17.w - if_z r16.w - ishl r17.w, r18.z, l(2) - mul r20.xyz, v2.yyyy, cb6[r17.w + 33].xywx - mad r20.xyz, cb6[r17.w + 32].xywx, v2.xxxx, r20.xyzx - mad r20.xyz, cb6[r17.w + 34].xywx, v2.zzzz, r20.xyzx - add r20.xyz, r20.xyzx, cb6[r17.w + 35].xywx - div_sat r19.yz, r20.xxyx, r20.zzzz - mad r19.yz, r19.yyzy, cb6[r18.z + 0].zzwz, cb6[r18.z + 0].xxyx - else - ishl r17.w, r18.z, l(2) - dp3 r20.x, -r22.yzwy, cb6[r17.w + 32].xyzx - dp3 r20.y, -r22.yzwy, cb6[r17.w + 33].xyzx - dp3 r20.z, -r22.yzwy, cb6[r17.w + 34].xyzx - lt r17.w, |r20.x|, |r20.y| - and r17.w, r17.w, l(1) - dp2 r20.w, |r20.xyxx|, icb[r17.w + 0].xyxx - lt r20.w, r20.w, |r20.z| - movc r17.w, r20.w, l(2), r17.w - dp3 r20.w, r20.xyzx, icb[r17.w + 0].xyzx - lt r20.w, r20.w, l(0.000000) - bfi r17.w, l(31), l(1), r17.w, r20.w - ushr r20.w, r17.w, l(1) - dp3 r20.w, r20.xyzx, icb[r20.w + 0].xyzx - div r21.y, l(0.000244140625), cb6[r18.z + 0].w - add r21.y, -r21.y, l(0.500000) - utof r22.y, r17.w - ult r22.z, r17.w, l(2) - and r22.z, r22.z, l(2) - dp2 r20.x, r20.xzxx, icb[r22.z + 0].xzxx - mul r20.x, r20.x, icb[r17.w + 4].z - div r20.x, r20.x, |r20.w| - mad r20.x, r20.x, r21.y, r22.y - add r20.x, r20.x, l(0.500000) - mul_sat r25.x, r20.x, l(0.166666672) - iadd r20.x, l(-1), icb[r17.w + 4].y - dp2 r20.x, r20.yzyy, icb[r20.x + 0].xyxx - mul r17.w, r20.x, icb[r17.w + 4].w - div r17.w, r17.w, |r20.w| - mad_sat r25.y, -r17.w, r21.y, l(0.500000) - mad r19.yz, r25.xxyx, cb6[r18.z + 0].zzwz, cb6[r18.z + 0].xxyx - endif - sample_l_indexable(texture2d)(float,float,float,float) r17.w, r19.yzyy, t18.yzwx, s0, l(0.000000) - mul r18.y, r17.w, r18.y - endif - mul r14.x, r14.x, r18.y - lt r17.w, l(0.000100), r14.x - if_nz r17.w - if_nz r18.x - add r17.w, l(1.000000), -cb3[r17.z + 6].w - dp3 r18.y, r11.xyzx, r23.xyzx - add_sat r18.y, r18.y, l(0.500000) - mad r18.z, r18.y, l(-2.000000), l(3.000000) - mul r18.y, r18.y, r18.y - mul r18.y, r18.y, r18.z - mad r17.w, r18.y, cb3[r17.z + 6].w, r17.w - mul r17.w, r17.w, cb3[r17.z + 6].x - mul r17.w, r14.x, r17.w - add r20.xyz, -r16.xyzx, cb3[r14.y + 6].xyzx - mad r20.xyz, r17.wwww, r20.xyzx, r16.xyzx - endif - if_z r18.x - dp3 r17.w, r7.xyzx, r23.xyzx - mov_sat r18.y, r17.w - if_nz cb3[r14.z + 6].w - if_z r16.w - ftoi r16.w, cb3[r14.z + 6].x - else - add r22.yzw, v2.xxyz, -cb3[r19.x + 6].xxyz - lt r24.yzw, |r22.zzww|, |r22.yyyz| - and r18.z, r24.z, r24.y - lt r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r22.yyzw - ushr r19.y, cb3[r17.y + 6].w, l(24) - ubfe r24.yz, l(0, 8, 8, 0), l(0, 16, 8, 0), cb3[r17.y + 6].wwww - movc r19.y, r22.y, r19.y, r24.y - and r17.y, l(255), cb3[r17.y + 6].w - movc r17.y, r22.z, r24.z, r17.y - ubfe r19.z, l(8), l(8), cb3[r14.z + 6].x - and r20.w, l(255), cb3[r14.z + 6].x - movc r19.z, r22.w, r19.z, r20.w - movc r17.y, r24.w, r17.y, r19.z - movc r17.y, r18.z, r19.y, r17.y - ilt r18.z, r17.y, l(80) - movc r16.w, r18.z, r17.y, l(-1) - endif - ige r17.y, r16.w, l(0) - if_nz r17.y - add r19.xyz, v2.xyzx, -cb3[r19.x + 6].xyzx - ishl r17.y, r16.w, l(2) - dp3 r18.z, r19.xyzx, r19.xyzx - max r18.z, r18.z, l(1.175494351E-38) - rsq r18.z, r18.z - mul r19.xyz, r18.zzzz, r19.xyzx - mad r19.xyz, -r19.xyzx, cb4[r16.w + 288].xxxx, v2.xyzx - mul r18.z, l(5.000000), cb4[r16.w + 288].y - mad r19.xyz, r11.xyzx, r18.zzzz, r19.xyzx - mul r25.xyzw, r19.yyyy, cb4[r17.y + 65].xyzw - mad r25.xyzw, cb4[r17.y + 64].xyzw, r19.xxxx, r25.xyzw - mad r25.xyzw, cb4[r17.y + 66].xyzw, r19.zzzz, r25.xyzw - add r25.xyzw, r25.xyzw, cb4[r17.y + 67].xyzw - div r19.xyz, r25.xyzx, r25.wwww - ge r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxyz - ge r24.yzw, r19.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000) - add r25.xy, -cb4[r16.w + 344].xyxx, cb4[r16.w + 344].zwzz - mad r19.xy, r19.xyxx, r25.xyxx, cb4[r16.w + 344].xyxx - mad r25.xy, r19.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r25.xy, r25.xyxx - mad r19.xy, r19.xyxx, cb4[400].zwzz, -r25.xyxx - add r26.xyzw, r19.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r27.xyzw, r26.xxzz, r26.xxzz - add r25.zw, -r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r26.xz, r19.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r28.xy, r19.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy - add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r19.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r19.xyxx - mul r30.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r19.xy, -r26.xzxx, r26.xzxx, r25.zwzz - add r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r31.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r19.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r30.z, r31.x - mov r30.w, r19.x - mov r29.z, r28.x - mov r29.w, r27.x - add r26.xyzw, r29.zwxz, r30.zwxz - mov r31.z, r30.y - mov r31.w, r19.y - mov r28.z, r29.y - mov r28.w, r27.z - add r27.xyz, r28.zywz, r31.zywz - div r29.xyz, r29.xzwx, r26.zwyz - add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r29.xyz, r29.yxzy, cb4[400].xxxx - div r28.xyz, r28.zywz, r27.xyzx - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyz, r28.xyzx, cb4[400].yyyy - mov r29.w, r28.x - mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r29.ywxw - mad r19.xy, r25.xyxx, cb4[400].xyxx, r29.zwzz - mov r28.w, r29.y - mov r29.yw, r28.yyyz - mad r31.xyzw, r25.xyxy, cb4[400].xyxy, r29.xyzy - mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz - mad r25.xyzw, r25.xyxy, cb4[400].xyxy, r29.xwzw - mul r29.xyzw, r26.zwyz, r27.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r30.xyxx, t2.xxxx, s2, r19.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r30.zwzz, t2.xxxx, s2, r19.z - mul r18.z, r18.z, r29.y - mad r17.y, r29.x, r17.y, r18.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r19.xyxx, t2.xxxx, s2, r19.z - mad r17.y, r29.z, r18.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.xyxx, t2.xxxx, s2, r19.z - mad r17.y, r29.w, r18.z, r17.y - mul r29.xyzw, r26.xyzw, r27.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r31.xyxx, t2.xxxx, s2, r19.z - mad r17.y, r29.x, r18.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r31.zwzz, t2.xxxx, s2, r19.z - mad r17.y, r29.y, r18.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.zwzz, t2.xxxx, s2, r19.z - mad r17.y, r29.z, r18.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r25.xyxx, t2.xxxx, s2, r19.z - mad r17.y, r29.w, r18.z, r17.y - or r22.yzw, r22.yyzw, r24.yyzw - or r18.z, r22.z, r22.y - or r18.z, r22.w, r18.z - and r19.x, r19.z, l(0x7fffffff) - ult r19.x, l(0x7f800000), r19.x - or r18.z, r18.z, r19.x - mul r19.x, r26.y, r27.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.y, r25.zwzz, t2.xxxx, s2, r19.z - mad r17.y, r19.x, r19.y, r17.y - add r17.y, r17.y, l(-1.000000) - mad r16.w, cb4[r16.w + 288].w, r17.y, l(1.000000) - movc r16.w, r18.z, l(1.000000), r16.w - else - dp3 r17.y, r9.xyzx, r23.xyzx - add_sat r16.w, r17.y, l(1.000000) - endif - else - mov r16.w, l(1.000000) - endif - if_z cb3[r14.z + 6].w - mul r19.xyz, r14.xxxx, cb3[r14.y + 6].xyzx - add r17.y, l(1.000000), -cb3[r17.z + 6].y - max r18.z, r19.y, r19.x - max r18.z, r19.z, r18.z - mul r18.z, r9.w, r18.z - max r18.z, r18.z, l(1.000000) - div r18.z, l(1.000000, 1.000000, 1.000000, 1.000000), r18.z - mad r17.y, r18.z, cb3[r17.z + 6].y, r17.y - mul r19.xyz, r17.yyyy, cb3[r14.y + 6].xyzx - mul r17.y, l(0.250000), cb3[r17.z + 6].x - add_sat r18.z, r17.w, l(0.500000) - mad r20.w, -cb3[r17.z + 6].x, l(0.250000), l(1.000000) - mad r17.y, r18.z, r20.w, r17.y - mul r19.xyz, r17.yyyy, r19.xyzx - mov r22.yzw, r21.xxzw - mov r24.yzw, r21.xxzw - mov r17.y, l(1.000000) - mov r18.z, l(0) - else - ieq r20.w, l(3), cb3[r14.z + 6].w - if_nz r20.w - mad r25.xy, cb3[r17.z + 6].xxxx, l(-0.600000, -0.399999976, 0.000000, 0.000000), l(0.800000, 0.900000, 0.000000, 0.000000) - add r20.w, -r25.x, r25.y - add r21.y, r22.x, -r25.x - div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w - mul_sat r20.w, r20.w, r21.y - mad r21.y, r20.w, l(-2.000000), l(3.000000) - mul r20.w, r20.w, r20.w - mul r20.w, r20.w, r21.y - mul r20.w, r16.w, r20.w - mul r14.x, r14.x, r20.w - mul r25.xyz, r23.zxyz, cb0[6].xyzx - mad r25.xyz, cb0[6].zxyz, r23.xyzx, -r25.xyzx - mul r26.xyz, r25.xyzx, cb0[6].zxyz - mad r25.xyz, cb0[6].yzxy, r25.yzxy, -r26.xyzx - dp3 r20.w, r25.xyzx, r25.xyzx - rsq r20.w, r20.w - mul r25.xyz, r20.wwww, r25.xyzx - dp3_sat r18.y, r7.xyzx, -r25.xyzx - mad r22.yzw, cb3[r17.z + 6].yyyy, r4.xxyz, l(0.000000, 0.500000, 0.500000, 0.500000) - mov r24.yzw, l(0,0,0,0) - mov r17.y, l(1.000000) - mov r18.z, l(0) - else - ieq r20.w, l(1), cb3[r14.z + 6].w - if_nz r20.w - add r17.w, r17.w, cb3[r17.z + 6].x - max_sat r17.w, r17.w, l(-1.000000) - mul r18.y, r16.w, r17.w - mul r24.yzw, r6.xxyz, cb3[r17.z + 6].yyyy - mov r17.y, l(1.000000) - mov r18.z, l(0) - else - ieq r16.w, l(2), cb3[r14.z + 6].w - if_nz r16.w - add r17.w, l(0.050000), cb3[r17.z + 6].x - add r17.w, r3.z, -r17.w - mul_sat r17.w, r17.w, l(-10.000000) - mad r21.y, r17.w, l(-2.000000), l(3.000000) - mul r17.w, r17.w, r17.w - mul r17.w, r17.w, r21.y - add r21.y, l(1.000000), -cb3[r17.z + 6].z - mad r21.y, r5.x, cb3[r17.z + 6].z, r21.y - mul r17.y, r17.w, r21.y - else - mov r17.y, l(1.000000) - endif - and r18.z, r16.w, cb3[r17.z + 6].y - mov r24.yzw, l(0,0,0,0) - endif - and r22.yzw, r10.yyzw, r20.wwww - endif - mov r19.xyz, cb3[r14.y + 6].xyzx - endif - ine r14.y, l(3), cb3[r14.z + 6].w - if_nz r14.y - mad r14.y, r18.z, r6.w, r5.y - mad r23.xyz, r0.xyzx, r1.wwww, r23.xyzx - dp3 r14.z, r23.xyzx, r23.xyzx - rsq r14.z, r14.z - mul r23.xyz, r14.zzzz, r23.xyzx - dp3 r14.z, r3.xywx, r23.xyzx - mul r16.w, r14.y, r14.y - mad r17.z, r14.z, r16.w, -r14.z - mad r14.z, r17.z, r14.z, l(1.000000) - mul r14.z, r14.z, r14.z - ne r17.z, r14.z, r16.w - div r14.z, r16.w, r14.z - movc r14.z, r17.z, r14.z, l(1.000000) - mad r14.y, r24.x, l(2.000000), r14.y - add r14.y, r14.y, l(0.000100) - div r14.y, l(0.500000), r14.y - mad r14.y, r14.z, r14.y, l(-0.0000610351562) - max r14.y, r14.y, l(0.000000) - min r14.y, r14.y, l(20.000000) - mul r23.xyz, r13.xyzx, r14.yyyy - mul r17.yzw, r17.yyyy, r23.xxyz - mul r17.yzw, r17.yyzw, cb3[r19.w + 6].zzzz - else - mov r17.yzw, l(0,0,0,0) - endif - mul r14.xyz, r14.xxxx, r19.xyzx - add r19.xyz, r22.yzwy, -r24.yzwy - mad r19.xyz, r18.yyyy, r19.xyzx, r24.yzwy - mul r19.xyz, r14.xyzx, r19.xyzx - mul r14.xyz, r17.yzwy, r14.xyzx - mul r14.xyz, r18.yyyy, r14.xyzx - mad r14.xyz, r19.xyzx, r15.zzzz, r14.xyzx - add r16.xyz, r14.xyzx, r16.xyzx - endif - else - mov r18.x, l(0) - endif - movc r16.xyz, r18.xxxx, r20.xyzx, r16.xyzx - endif - endif - mov r13.w, r17.x - endloop - mov r15.xyw, r16.xyxz - iadd r10.x, r10.x, l(1) -endloop -lt r0.x, l(0.500000), cb5[3].x -if_nz r0.x - dp3 r0.x, r15.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r3.xyz, -r0.xxxx, r15.xywx - mad r0.xyz, cb5[3].zzzz, r3.xyzx, r0.xxxx - add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) - mad r0.xyz, cb5[3].wwww, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r3.xyz, r0.xyzx, cb5[3].yyyy - mad r0.xyz, -r0.xyzx, cb5[3].yyyy, cb5[7].xyzx - mad r0.xyz, cb5[7].wwww, r0.xyzx, r3.xyzx - add r2.w, l(1.000000), -cb5[4].x - mov_sat r18.w, r18.w - add r3.x, -r18.w, l(1.000000) - add r3.y, -r2.w, l(1.000000) - add r2.w, -r2.w, r3.x - div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y - mul_sat r2.w, r2.w, r3.x - mad r3.x, r2.w, l(-2.000000), l(3.000000) - mul r2.w, r2.w, r2.w - mul r2.w, r2.w, r3.x - mul r3.xyz, r2.wwww, cb5[8].xyzx - mad r15.xyw, r3.xyxz, cb5[4].yyyy, r0.xyxz -endif -div r0.xyz, r15.xywx, cb0[109].xxxx -eq r2.w, l(1.000000), cb5[2].x -movc o0.w, r2.w, r4.w, l(1.000000) -lt r2.w, cb0[198].w, l(0.500000) -if_nz r2.w - mul r0.w, r0.w, r1.w - mad r1.w, v2.y, cb0[156].w, cb0[157].w - max r1.w, r1.w, l(0.010000) - mad r2.w, r0.w, cb0[154].w, -cb0[153].w - max r2.w, r2.w, l(0.000000) - mul r3.x, r1.w, l(-1.442695) - exp r3.x, r3.x - add r3.x, -r3.x, l(1.000000) - div r1.w, r3.x, r1.w - mad r3.x, v2.y, cb0[156].w, cb0[158].w - mul r3.x, r3.x, l(1.442695) - exp r3.x, r3.x - mul r1.w, r1.w, r3.x - mul r1.w, r1.w, -r2.w - mul r3.xyz, r1.wwww, cb0[155].xyzx - mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) - exp r3.xyz, r3.xyzx - dp3 r1.w, -r2.xyzx, cb0[154].xyzx - mad r2.w, cb0[155].w, cb0[155].w, l(1.000000) - dp2 r3.w, r1.wwww, cb0[155].wwww - add r2.w, r2.w, -r3.w - lt r3.w, l(0.000000), cb0[163].z - if_nz r3.w - and r12.w, l(7), cb0[108].w - imad r4.xyz, r12.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r3.w, r4.y, r4.z, r4.x - imad r4.x, r4.z, r3.w, r4.y - imad r4.y, r3.w, r4.x, r4.z - imad r5.x, r4.x, r4.y, r3.w - dp3 r1.x, -r2.xyzx, -r1.xyzx - add r1.y, v2.y, -cb0[44].y - lt r1.z, l(5.960464478E-08), r1.x - div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x - and r1.x, r1.x, r1.z - mul r1.x, r1.x, cb0[163].w - div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w - mul r2.x, r1.z, r1.x - mad r2.y, r2.x, r1.y, cb0[44].y - mad r1.y, -r2.x, r1.y, r1.y - mul r2.x, r1.y, cb0[159].z - mul r1.y, r1.y, cb0[162].x - max r1.y, r1.y, l(-127.000000) - add r2.z, r2.y, -cb0[159].x - mul r2.z, r2.z, cb0[159].z - max r2.xz, r2.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - exp r2.z, -r2.z - mul r2.z, r2.z, cb0[159].y - lt r3.w, l(5.960464478E-08), |r2.x| - exp r4.z, -r2.x - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r2.x - mad r2.x, -r2.x, l(0.240226507), l(0.693147182) - movc r2.x, r3.w, r4.z, r2.x - add r2.y, r2.y, -cb0[162].z - mul r2.y, r2.y, cb0[162].x - max r2.y, r2.y, l(-127.000000) - exp r2.y, -r2.y - mul r2.y, r2.y, cb0[162].y - lt r3.w, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r3.w, r4.z, r1.y - mul r1.y, r1.y, r2.y - mad r1.y, r2.z, r2.x, r1.y - mad r1.x, -r1.x, r1.z, l(1.000000) - mul r1.x, r0.w, r1.x - mul r1.x, r1.x, r1.y - exp r1.x, -r1.x - min r1.x, r1.x, l(1.000000) - max r1.x, r1.x, cb0[161].w - mad_sat r1.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx - add r1.x, r1.y, r1.x - add r1.x, r1.z, r1.x - min r1.x, r1.x, l(1.000000) - imad r5.y, r4.y, r5.x, r4.x - ushr r1.yz, r5.xxyx, l(0, 16, 16, 0) - utof r1.yz, r1.yyzy - mad r1.yz, r1.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) - mad r1.yz, r1.yyzy, cb0[167].wwww, r5.zzwz - mul r2.xy, r1.yzyy, cb0[165].xyxx - mad r1.y, v0.w, cb0[164].x, cb0[164].y - log r1.y, r1.y - mul r1.y, r1.y, cb0[164].z - div r2.z, r1.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t19.xyzw, s0, l(0.000000) - add r1.y, v0.w, -cb0[166].z - mul_sat r1.y, r1.y, l(1000000.000000) - add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r4.xyzw, r1.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r1.y, -r1.x, l(1.000000) - mul r2.xyz, r1.yyyy, cb0[161].xyzx - mad r2.xyz, r2.xyzx, r4.wwww, r4.xyzx - mul r1.x, r1.x, r4.w - else - add r1.y, v2.y, -cb0[44].y - mul r1.z, r1.y, cb0[159].z - mul r1.y, r1.y, cb0[162].x - max r1.yz, r1.yyzy, l(0.000000, -127.000000, -127.000000, 0.000000) - add r3.w, cb0[44].y, -cb0[159].x - mul r3.w, r3.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[159].y - lt r4.x, l(5.960464478E-08), |r1.z| - exp r4.y, -r1.z - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r1.z - mad r1.z, -r1.z, l(0.240226507), l(0.693147182) - movc r1.z, r4.x, r4.y, r1.z - add r4.x, cb0[44].y, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.y, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r4.y, r4.z, r1.y - mul r1.y, r1.y, r4.x - mad r1.y, r3.w, r1.z, r1.y - mul r1.y, r0.w, r1.y - exp r1.y, -r1.y - min r1.y, r1.y, l(1.000000) - max r1.y, r1.y, cb0[161].w - mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.w, r1.y, r4.x - add r0.w, r4.y, r0.w - min r1.x, r0.w, l(1.000000) - add r0.w, -r1.x, l(1.000000) - mul r2.xyz, r0.wwww, cb0[161].xyzx - endif - mul r4.xyz, r1.xxxx, r3.xyzx - mad r0.w, r1.w, r1.w, l(1.000000) - mul r0.w, r0.w, l(0.0596831031) - mad r1.yzw, cb0[156].xxyz, r0.wwww, cb0[158].xxyz - mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) - mul r3.w, r2.w, l(12.566371) - sqrt r2.w, r2.w - mul r2.w, r2.w, r3.w - max r2.w, r2.w, l(0.001000) - div r0.w, r0.w, r2.w - mad_sat r1.yzw, cb0[157].xxyz, r0.wwww, r1.yyzw - mul r1.yzw, r1.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) - add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mul r1.yzw, r1.yyzw, r3.xxyz - mad r1.xyz, r1.yzwy, r1.xxxx, r2.xyzx - mad o0.xyz, r0.xyzx, r4.xyzx, r1.xyzx -else - mov o0.xyz, r0.xyzx -endif -mov o1.z, l(1.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xD3FA93FC.cso b/src/games/endfield/deferred-lighting/0xD3FA93FC.cso index 243a01365cc91d14d04cc1c82dfd8ed16b50d32b..32e50ebb97cb2766c6b89e76f7a841698762af2b 100644 GIT binary patch delta 203 zcmbR7n`y=$CMlN)Cuh0YjnWlC>(kRaM8)nq|KG#Nz`!7}Z=%#9&WODX3;{r1*v6yU zjEusYKQeX~sG2h{a0xL8FmM1RtQr&;c!9JK5HmV3F#HDsE|A>j%A(&)zCfkCm!L|& z^&^zF@k6vT0ktqNG}wbk2;E?B!N9;?1k?j^g&PxuZes?jpM1AWdUH?d9ydmz&7OPw M8979OcG>|k07}FwssI20 delta 76 zcmV-S0JHy?`~sN!0vbeELPNKPjUbh%j$1CUadp4WZJYrB005Z1ks6{2*t`G$Pyhe` iHnGJk0RauO@d1l)v!rtP0<-LO)JBsKz67(xyi5VO&mX-2 diff --git a/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm index 2ab496bfc0..4a9ce18fa8 100644 --- a/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm @@ -37,7 +37,7 @@ dcl_constantbuffer CB3[2054], dynamicIndexed dcl_constantbuffer CB4[401], dynamicIndexed dcl_constantbuffer CB5[160], dynamicIndexed dcl_constantbuffer CB6[4], immediateIndexed -dcl_constantbuffer CB13[13], immediateIndexed +dcl_constantbuffer CB13[19], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -966,6 +966,7 @@ loop endloop mad r1.xyz, r21.xyzx, r13.wwww, r13.xyzx ne r8.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx +movc r8.x, cb13[18].w, l(0xFFFFFFFF), r8.x if_nz r8.x sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x mad r0.z, r0.z, l(0.750000), l(0.250000) @@ -992,6 +993,8 @@ else mov r8.xzw, r3.wwww mov r13.xyz, r3.wwww endif +movc r8.xzw, cb13[18].wwww, r8.xzww, l(1.0, 0, 1.0, 1.0) +mul r1.xyz, r1.xyzx, r8.xzwx mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx add r16.xyz, r7.xzyx, -r16.xyzx max r0.z, |r16.y|, |r16.x| @@ -1570,32 +1573,21 @@ mul r0.yzw, r0.yyzw, r3.xxyz mad r0.xyz, r0.yzwy, r0.xxxx, r2.xyzx // Check fog modification toggle (cb13[12].y) -// If 0 (Original), skip fog modification and output original if_z cb13[12].y mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) ret +else + // === Fog Modification (Anti-Banding) === + mul r5.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) + mul r6.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) + add r7.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r7.xyz, r7.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx + mul r6.xyz, r6.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + mad r8.xyz, r5.xyzx, r7.xyzx, r6.xyzx + mul o0.xyz, r8.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) + dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) + ret endif - -// === Simplified Fog Modification (Anti-Banding) === -// r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter (0-255) - -// Normalize colors to 0-1 range -mul r5.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r1/255 -mul r6.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 - -// Boost transmittance: transmittance = lerp(transmittance, 1, 0.35) to reduce fog density -add r7.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r7.xyz, r7.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx - -// Reduce fog inscatter intensity -mul r6.xyz, r6.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - -// Standard fog blend with reduced intensity -mad r8.xyz, r5.xyzx, r7.xyzx, r6.xyzx - -// Output: scale back to 0-255 range -mul o0.xyz, r8.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) ret // Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0_original_backup.asm deleted file mode 100644 index 005e698cc8..0000000000 --- a/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0_original_backup.asm +++ /dev/null @@ -1,1573 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Thu Jan 29 18:08:39 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[160], dynamicIndexed -dcl_constantbuffer CB6[4], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture3d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_resource_texture2d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 37 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t22.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t23.xyzw -ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t24.xyzw -mul r1.xyzw, r1.xwyz, l(1023.000000, 3.000000, 1023.000000, 1023.000000) -ftou r1.xyw, r1.xyxw -ubfe r4.x, l(7), l(3), r1.x -bfi r4.yz, l(0, 3, 3, 0), l(0, 2, 2, 0), r1.xxwx, l(0, 0, 0, 0) -bfi r1.x, l(2), l(0), r1.y, r4.y -utof r1.x, r1.x -mul r1.y, r1.x, l(0.0322580636) -round_ne r1.z, r1.z -ftou r1.z, r1.z -ubfe r4.y, l(7), l(3), r1.z -utof r4.xy, r4.xyxx -mul r4.y, r4.y, l(0.00787401572) -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r4.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r5.y, -r4.w, l(1.000000) -lt r4.w, r5.y, l(0.000000) -ge r6.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r6.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r6.xy, r6.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r6.xy, r6.xyxx, r6.zwzz -movc r5.xz, r4.wwww, r6.xxyx, r2.xxyx -dp3 r2.x, r5.xyzx, r5.xyzx -rsq r2.x, r2.x -mul r5.xyz, r2.xxxx, r5.xyzx -and r1.z, r1.z, l(7) -utof r1.z, r1.z -mad r1.z, r1.z, l(0.107142866), l(0.500000) -utof r2.xy, r0.xyxx -mul r6.xy, v0.xyxx, cb0[82].zwzz -mad r6.zw, r6.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -add r7.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mul r7.xy, r7.xyxx, cb0[82].zwzz -sample_l_indexable(texture2d)(float,float,float,float) r4.w, r7.xyxx, t1.yzwx, s0, l(0.000000) -mul r7.xyzw, -r6.wwww, cb0[25].xyzw -mad r7.xyzw, cb0[24].xyzw, r6.zzzz, r7.xyzw -mad r7.xyzw, cb0[26].xyzw, r4.wwww, r7.xyzw -add r7.xyzw, r7.xyzw, cb0[27].xyzw -div r7.xyz, r7.xyzx, r7.wwww -mul r4.w, r7.y, cb0[1].z -mad r4.w, cb0[0].z, r7.x, r4.w -mad r4.w, cb0[2].z, r7.z, r4.w -add r4.w, r4.w, cb0[3].z -eq r6.z, l(0.000000), cb0[86].w -add r8.xyz, -r7.xyzx, cb0[44].xyzx -mov r9.x, cb0[0].z -mov r9.y, cb0[1].z -mov r9.z, cb0[2].z -movc r8.xyz, r6.zzzz, r8.xyzx, r9.xyzx -dp3 r6.z, r8.xyzx, r8.xyzx -max r6.w, r6.z, l(9.999999939E-09) -rsq r6.w, r6.w -mul r10.xyz, r6.wwww, r8.xyzx -mul r6.z, r6.w, r6.z -lt r8.w, l(0.000488281250), cb0[234].x -if_nz r8.w - sample_b_indexable(texture2d)(float,float,float,float) r8.w, v1.xyxx, t21.yzwx, s1, cb0[108].x -else - mov r8.w, l(1.000000) -endif -add r8.w, -r8.w, l(1.000000) -mul r2.w, r2.w, l(3.000000) -mad_sat r9.w, r2.z, l(0.300000), l(0.250000) -mul r9.w, r9.w, cb0[222].x -mul r9.w, r8.w, r9.w -mad r9.w, r9.w, l(-0.750000), l(1.000000) -mul r3.xyz, r3.xyzx, r9.wwww -min r9.w, r2.z, l(0.300000) -mul r8.w, r8.w, cb0[222].x -mul r8.w, r8.w, l(0.500000) -add r9.w, -r2.z, r9.w -mad r11.w, r8.w, r9.w, r2.z -mul r2.z, r1.z, l(0.080000) -dp3 r8.w, r5.xyzx, r10.xyzx -max r9.w, r8.w, l(0.000000) -mad r12.xyzw, r11.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r10.w, r12.x, r12.x -mul r13.x, r9.w, l(-9.280000) -exp r13.x, r13.x -min r10.w, r10.w, r13.x -mad r10.w, r10.w, r12.x, r12.y -mad r12.xy, r10.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r12.zwzz -ld_indexable(texture2d)(float,float,float,float) r12.z, r0.xyzz, t7.zwxy -lt r0.z, l(0.001000), r12.z -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r6.xyxx, t10.yzxw, s1, l(0.000000) - dp3 r10.w, -r10.xyzx, r5.xyzx - add r10.w, r10.w, r10.w - mad r13.xyz, r5.xyzx, -r10.wwww, -r10.xyzx - dp3 r10.w, -cb3[0].xyzx, r13.xyzx - mad r14.xyz, cb3[0].xyzx, r10.wwww, r13.xyzx - lt r10.w, r10.w, cb3[4].z - dp3 r13.w, r14.xyzx, r14.xyzx - max r13.w, r13.w, l(0.0000610351562) - rsq r13.w, r13.w - mul r14.xyz, r13.wwww, r14.xyzx - mul r14.xyz, r14.xyzx, cb3[4].yyyy - mad r14.xyz, -cb3[0].xyzx, cb3[4].zzzz, r14.xyzx - dp3 r13.w, r14.xyzx, r14.xyzx - rsq r13.w, r13.w - mul r14.xyz, r13.wwww, r14.xyzx - movc r13.xyz, r10.wwww, r14.xyzx, r13.xyzx - mad r14.xyz, r8.xyzx, r6.wwww, r13.xyzx - dp3 r10.w, r14.xyzx, r14.xyzx - max r10.w, r10.w, l(0.0000610351562) - rsq r10.w, r10.w - mul r14.xyz, r10.wwww, r14.xyzx - dp3 r10.w, r5.xyzx, r13.xyzx - mov_sat r11.y, r10.w - dp3_sat r13.w, r5.xyzx, r14.xyzx - dp3 r13.x, r10.xyzx, r13.xyzx - min r11.z, r9.w, l(1.000000) - mul r13.y, r11.w, r11.w - mul r13.y, r13.y, r13.y - mad r13.z, r13.w, r13.y, -r13.w - mad r13.z, r13.z, r13.w, l(1.000000) - dp3_sat r13.w, r10.xyzx, r14.xyzx - add r13.w, -r13.w, l(1.000000) - mul r14.x, r13.w, r13.w - mul r14.x, r14.x, r14.x - mul r14.y, r13.w, r14.x - add r14.z, -r11.w, l(1.000000) - mad r14.w, -r14.z, l(0.383026), l(-0.0761947036) - mad r14.w, r14.z, r14.w, l(1.049970) - mad r14.z, r14.z, r14.w, l(0.409255) - min r14.z, r14.z, l(0.999000) - add r14.w, -r14.z, l(1.000000) - mad r15.x, -r1.z, l(0.080000), l(1.000000) - mad r15.x, r15.x, l(0.0476190485), r2.z - mov_sat r15.y, -r13.x - mul r15.y, r15.y, r15.y - mad r15.y, r15.y, l(-0.640000), l(1.000000) - mul r15.y, r15.y, r15.y - mad r13.w, -r14.x, r13.w, l(1.000000) - mad r13.w, r2.z, r13.w, r14.y - mul r13.z, r13.z, r13.z - div r13.z, r13.y, r13.z - mad r14.xy, -r11.zyzz, r13.yyyy, r11.zyzz - mad r14.xy, r14.xyxx, r11.zyzz, r13.yyyy - sqrt r14.xy, r14.xyxx - mul r14.xy, r11.yzyy, r14.xyxx - add r13.y, r14.y, r14.x - add r13.y, r13.y, l(0.000100) - div r13.y, l(0.500000), r13.y - mul r13.y, r13.y, r13.z - mul r13.y, r13.y, r13.w - min r13.y, r13.y, l(2048.000000) - mad r16.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r11.z, r16.xyxx, t9.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r13.z, r16.zwzz, t9.yzxw, s1, l(0.000000) - mul r11.z, r11.z, r13.z - mul r11.z, r14.z, r11.z - div r11.z, r11.z, r14.w - mul r13.z, r15.x, r15.x - mul r11.z, r11.z, r13.z - mad r13.z, -r15.x, r14.w, l(1.000000) - div r11.z, r11.z, r13.z - add r11.z, r11.z, r13.y - add_sat r13.y, r8.w, l(0.200000) - mov_sat r13.z, r13.x - add r13.z, r13.z, l(0.500000) - min r13.z, r13.z, l(1.000000) - mul r13.w, r13.z, r13.y - add_sat r13.x, r13.x, l(1.000000) - mad r13.y, -r13.y, r13.z, l(1.000000) - mad r13.x, r13.x, r13.y, r13.w - mul r11.z, r11.z, r13.x - mul r11.z, r4.y, r11.z - mul r13.xyz, r4.yyyy, r3.xyzx - ubfe r1.w, l(7), l(3), r1.w - utof r1.w, r1.w - mul r1.w, r1.w, l(0.00787401572) - mul r11.z, r11.z, cb3[4].x - max r11.z, r11.z, l(0.000000) - min r11.z, r11.z, l(1000.000000) - mul r11.z, r11.y, r11.z - mad r13.xyz, r13.xyzx, r1.wwww, r11.zzzz - max r1.w, r3.y, r3.x - max r1.w, r3.z, r1.w - max r1.w, r1.w, l(0.010000) - div r14.xyz, r3.xyzx, r1.wwww - mul r1.w, r4.x, l(0.00393700786) - mul r14.xyz, r1.wwww, r14.xyzx - add_sat r1.w, -r10.w, l(0.500000) - ne r11.z, r15.y, l(0.360000) - div r13.w, l(0.360000), r15.y - movc r11.z, r11.z, r13.w, l(1.000000) - mul r1.w, r1.w, r11.z - mad_sat r10.w, r1.x, l(0.0322580636), r10.w - add r10.w, -r11.y, r10.w - mul r15.xyz, r3.xyzx, r10.wwww - mad r14.xyz, r14.xyzx, r1.wwww, r15.xyzx - mad r13.xyz, r14.xyzx, r4.yyyy, r13.xyzx - mul r13.xyz, r13.xyzx, cb3[1].xyzx - mov r12.w, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r14.xyz, r12.zwzz, t8.xyzw, s1, cb0[108].x - add r1.w, -r12.z, l(1.000000) - mad r14.xyz, r13.xyzx, r14.xyzx, -r13.xyzx - mad r13.xyz, r1.wwww, r14.xyzx, r13.xyzx - max r1.w, r4.y, r0.z - add r1.w, -r0.z, r1.w - mad r0.z, r1.y, r1.w, r0.z - mul r13.xyz, r0.zzzz, r13.xyzx -else - mov r13.xyz, l(0,0,0,0) -endif -mul r1.yw, r2.xxxy, l(0.000000, 0.031250, 0.000000, 0.031250) -round_ni r1.yw, r1.yyyw -mad r0.z, r1.w, cb2[1].y, r1.y -mul r0.z, r0.z, l(8.000000) -ftoi r0.z, r0.z -mad r1.y, -cb0[85].y, cb2[2].w, |r4.w| -round_ni r1.y, r1.y -add r1.w, l(-1.000000), cb2[1].w -max r10.w, r1.y, l(0.000000) -min r1.w, r1.w, r10.w -mul r10.w, r1.w, l(8.000000) -ftoi r10.w, r10.w -ge r1.y, r1.w, r1.y -iadd r1.w, r10.w, cb0[110].y -mul r10.w, r11.w, r11.w -dp3 r11.y, -r10.xyzx, r5.xyzx -add r11.y, r11.y, r11.y -mad r14.xyz, r5.xyzx, -r11.yyyy, -r10.xyzx -min r11.x, r9.w, l(1.000000) -add r11.y, -r11.w, l(1.000000) -mad r11.z, -r11.y, l(0.383026), l(-0.0761947036) -mad r11.z, r11.y, r11.z, l(1.049970) -mad r11.y, r11.y, r11.z, l(0.409255) -min r11.y, r11.y, l(0.999000) -add r11.z, -r11.y, l(1.000000) -mad r1.z, -r1.z, l(0.080000), l(1.000000) -mad r1.z, r1.z, l(0.0476190485), r2.z -mad r12.zw, r11.xxxw, l(0.000000, 0.000000, 0.968750, 0.968750), l(0.000000, 0.000000, 0.015625, 0.015625) -sample_l_indexable(texture2d)(float,float,float,float) r12.z, r12.zwzz, t9.yzxw, s1, l(0.000000) -mad r12.w, -r1.z, r11.z, l(1.000000) -add_sat r8.w, r8.w, l(0.200000) -max r13.w, r3.y, r3.x -max r13.w, r3.z, r13.w -max r13.w, r13.w, l(0.010000) -div r15.xyz, r3.xyzx, r13.wwww -mul r13.w, r4.x, l(0.00393700786) -mul r16.xyz, r13.wwww, r15.xyzx -mul r17.xyz, r4.yyyy, r3.xyzx -mul r1.z, r1.z, r1.z -mov r18.w, l(1.000000) -mov r19.y, l(1.000000) -mov r20.z, r11.w -mov r21.xyz, l(0,0,0,0) -mov r13.w, l(1.000000) -mov r14.w, l(0) -loop - ilt r15.w, l(7), r14.w - breakc_nz r15.w - iadd r15.w, r0.z, r14.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r15.w, r15.w, l(0), t0.xxxx - iadd r16.w, r1.w, r14.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r16.w, r16.w, l(0), t0.xxxx - and r15.w, r15.w, r16.w - and r15.w, r1.y, r15.w - ishl r16.w, r14.w, l(5) - mov r22.xyz, l(0,0,0,0) - mov r17.w, r13.w - mov r19.z, r15.w - loop - breakc_z r19.z - firstbit_lo r19.w, r19.z - ishl r20.w, l(1), r19.w - xor r20.w, r19.z, r20.w - iadd r19.w, r16.w, r19.w - bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r19.wwww, l(1, 3, 5, 6) - bfi r21.w, l(29), l(3), r19.w, l(7) - ftou r22.w, cb3[r23.z + 6].w - ieq r22.w, r22.w, l(1) - if_nz r22.w - add r18.xyz, r7.xyzx, -cb3[r23.x + 6].xyzx - and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.z + 6].xzyx - and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.w + 6].yxzy - ushr r26.xyz, cb3[r23.z + 6].xzyx, l(16, 16, 16, 0) - ushr r27.xyz, cb3[r23.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r24.xyz, r24.xyzx - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyz, r26.xyzx - f16tof32 r27.xyw, r27.yxyz - mov r28.xz, r24.xxzx - mov r28.yw, r26.xxxz - dp4 r22.w, r18.xyzw, r28.xyzw - mov r26.x, r24.y - mov r26.z, r25.y - mov r26.w, r27.x - dp4 r23.z, r18.xyzw, r26.xyzw - mov r27.xz, r25.xxzx - dp4 r18.x, r18.xyzw, r27.xyzw - max r18.y, |r22.w|, |r23.z| - max r18.x, |r18.x|, r18.y - mad r18.y, cb3[r21.w + 6].x, l(0.500000), l(0.500000) - add r18.x, -r18.y, r18.x - mad r18.y, -cb3[r21.w + 6].x, l(0.500000), l(0.500000) - div_sat r18.x, r18.x, r18.y - add r18.x, -r18.x, l(1.000000) - mul r18.x, r18.x, r18.x - else - mov r18.x, l(1.000000) - endif - lt r18.y, l(0.500000), cb3[r23.y + 6].z - lt r18.z, r18.x, l(0.001000) - or r18.z, r18.y, r18.z - if_nz r18.z - mov r19.z, r20.w - continue - endif - ishl r18.z, r19.w, l(3) - bfi r19.w, l(29), l(3), r19.w, l(2) - lt r22.w, cb3[r18.z + 6].w, l(1.500000) - if_nz r22.w - mad r22.w, cb3[r19.w + 6].y, l(0.500000), l(0.500000) - add r24.x, r22.w, -|cb3[r19.w + 6].x| - add r24.y, -r24.x, cb3[r19.w + 6].y - add r22.w, -|r24.x|, l(1.000000) - add r22.w, -|r24.y|, r22.w - max r22.w, r22.w, l(0.000488281250) - ge r23.z, cb3[r19.w + 6].x, l(0.000000) - movc r24.z, r23.z, r22.w, -r22.w - dp3 r22.w, r24.xyzx, r24.xyzx - rsq r22.w, r22.w - mul r24.xyz, r22.wwww, r24.xyzx - add r25.xyz, -r7.xyzx, cb3[r23.x + 6].xyzx - dp3 r22.w, r25.xyzx, r25.xyzx - rsq r23.z, r22.w - mul r26.xyz, r23.zzzz, r25.xyzx - ftoi r24.w, cb3[r21.w + 6].w - mul r27.xyz, r24.xyzx, cb3[r19.w + 6].zzzz - mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - ftou r25.w, cb3[r18.z + 6].w - and r25.w, r25.w, l(1) - ieq r26.w, r25.w, l(0) - not r26.w, r26.w - lt r27.w, l(0.000000), cb3[r19.w + 6].z - and r26.w, r26.w, r27.w - dp3 r27.w, r28.xyzx, r28.xyzx - sqrt r27.w, r27.w - dp3 r28.w, r29.xyzx, r29.xyzx - sqrt r28.w, r28.w - dp3 r29.w, r5.xyzx, r28.xyzx - div r29.w, r29.w, r27.w - dp3 r30.x, r5.xyzx, r29.xyzx - div r30.x, r30.x, r28.w - add r29.w, r29.w, r30.x - mul_sat r30.x, r29.w, l(0.500000) - dp3 r29.x, r28.xyzx, r29.xyzx - mad r27.w, r27.w, r28.w, r29.x - mad r27.w, r27.w, l(0.500000), l(1.000000) - div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r27.w - dp3_sat r19.x, r5.xyzx, r26.xyzx - movc r20.xy, r26.wwww, r30.xyxx, r19.xyxx - lt r19.x, cb3[r23.w + 6].w, l(0.000000) - if_nz r19.x - mul r19.x, cb3[r23.x + 6].w, cb3[r23.x + 6].w - mul r19.x, r19.x, r22.w - mad r19.x, -r19.x, r19.x, l(1.000000) - max r19.x, r19.x, l(0.000000) - add r22.w, r22.w, l(1.000000) - div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w - and r27.w, r26.w, l(0x3f800000) - add r28.w, r20.y, -r22.w - mad r22.w, r27.w, r28.w, r22.w - mul r19.x, r19.x, r19.x - mul r19.x, r19.x, r22.w - else - mul r29.xyz, r25.xyzx, cb3[r23.x + 6].wwww - dp3 r22.w, r29.xyzx, r29.xyzx - min r22.w, r22.w, l(1.000000) - add r22.w, -r22.w, l(1.000000) - log r22.w, r22.w - mul r22.w, r22.w, cb3[r23.w + 6].w - exp r22.w, r22.w - mul r19.x, r20.y, r22.w - endif - dp3 r20.y, r26.xyzx, -r24.xyzx - add r20.y, r20.y, -cb3[r19.w + 6].z - mul_sat r20.y, r20.y, cb3[r19.w + 6].w - mul r20.y, r20.y, r20.y - movc r20.y, r25.w, l(1.000000), r20.y - mul r19.x, r19.x, r20.y - not r20.y, r26.w - ige r22.w, r24.w, l(0) - and r20.y, r20.y, r22.w - if_nz r20.y - if_z r25.w - ishl r20.y, r24.w, l(2) - mul r24.xyz, r7.yyyy, cb5[r20.y + 33].xywx - mad r24.xyz, cb5[r20.y + 32].xywx, r7.xxxx, r24.xyzx - mad r24.xyz, cb5[r20.y + 34].xywx, r7.zzzz, r24.xyzx - add r24.xyz, r24.xyzx, cb5[r20.y + 35].xywx - div_sat r24.xy, r24.xyxx, r24.zzzz - mad r24.xy, r24.xyxx, cb5[r24.w + 0].zwzz, cb5[r24.w + 0].xyxx - else - ishl r20.y, r24.w, l(2) - dp3 r29.x, -r25.xyzx, cb5[r20.y + 32].xyzx - dp3 r29.y, -r25.xyzx, cb5[r20.y + 33].xyzx - dp3 r29.z, -r25.xyzx, cb5[r20.y + 34].xyzx - lt r20.y, |r29.x|, |r29.y| - and r20.y, r20.y, l(1) - dp2 r22.w, |r29.xyxx|, icb[r20.y + 0].xyxx - lt r22.w, r22.w, |r29.z| - movc r20.y, r22.w, l(2), r20.y - dp3 r22.w, r29.xyzx, icb[r20.y + 0].xyzx - lt r22.w, r22.w, l(0.000000) - bfi r20.y, l(31), l(1), r20.y, r22.w - ushr r22.w, r20.y, l(1) - dp3 r22.w, r29.xyzx, icb[r22.w + 0].xyzx - div r24.z, l(0.000244140625), cb5[r24.w + 0].w - add r24.z, -r24.z, l(0.500000) - utof r25.x, r20.y - ult r25.y, r20.y, l(2) - and r25.y, r25.y, l(2) - dp2 r25.y, r29.xzxx, icb[r25.y + 0].xzxx - mul r25.y, r25.y, icb[r20.y + 4].z - div r25.y, r25.y, |r22.w| - mad r25.x, r25.y, r24.z, r25.x - add r25.x, r25.x, l(0.500000) - mul_sat r25.x, r25.x, l(0.166666672) - iadd r25.z, l(-1), icb[r20.y + 4].y - dp2 r25.z, r29.yzyy, icb[r25.z + 0].xyxx - mul r20.y, r25.z, icb[r20.y + 4].w - div r20.y, r20.y, |r22.w| - mad_sat r25.y, -r20.y, r24.z, l(0.500000) - mad r24.xy, r25.xyxx, cb5[r24.w + 0].zwzz, cb5[r24.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r20.y, r24.xyxx, t11.yxzw, s1, l(0.000000) - mul r19.x, r19.x, r20.y - endif - lt r20.y, l(0.000000), r19.x - if_nz r20.y - if_z r25.w - ftoi r22.w, cb3[r23.y + 6].x - else - add r24.xyz, r7.xyzx, -cb3[r23.x + 6].xyzx - lt r25.xyz, |r24.yzzy|, |r24.xxyx| - and r24.w, r25.y, r25.x - lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx - ushr r25.x, cb3[r19.w + 6].w, l(24) - ubfe r25.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb3[r19.w + 6].wwww - movc r24.x, r24.x, r25.x, r25.y - and r25.x, l(255), cb3[r19.w + 6].w - movc r24.y, r24.y, r25.w, r25.x - ubfe r25.x, l(8), l(8), cb3[r23.y + 6].x - and r25.y, l(255), cb3[r23.y + 6].x - movc r24.z, r24.z, r25.x, r25.y - movc r24.y, r25.z, r24.y, r24.z - movc r24.x, r24.w, r24.x, r24.y - ilt r24.y, r24.x, l(80) - movc r22.w, r24.y, r24.x, l(-1) - endif - ishl r24.x, r22.w, l(2) - mad r24.yzw, r26.xxyz, cb4[r22.w + 288].xxxx, r7.xxyz - mul r25.x, l(5.000000), cb4[r22.w + 288].y - mad r24.yzw, r5.xxyz, r25.xxxx, r24.yyzw - mul r25.xyzw, r24.zzzz, cb4[r24.x + 65].xyzw - mad r25.xyzw, cb4[r24.x + 64].xyzw, r24.yyyy, r25.xyzw - mad r25.xyzw, cb4[r24.x + 66].xyzw, r24.wwww, r25.xyzw - add r24.xyzw, r25.xyzw, cb4[r24.x + 67].xyzw - div r24.xyz, r24.xyzx, r24.wwww - ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx - ge r29.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r30.xy, -cb4[r22.w + 344].xyxx, cb4[r22.w + 344].zwzz - mad r24.xy, r24.xyxx, r30.xyxx, cb4[r22.w + 344].xyxx - mad r30.xy, r24.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r30.xy, r30.xyxx - mad r24.xy, r24.xyxx, cb4[400].zwzz, -r30.xyxx - add r31.xyzw, r24.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r32.xyzw, r31.xxzz, r31.xxzz - add r30.zw, -r24.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r31.xz, r24.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r33.xy, r24.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r34.xy, r30.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy - add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r24.xy, r32.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r24.xyxx - mul r35.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r24.xy, -r31.xzxx, r31.xzxx, r30.zwzz - add r24.xy, r24.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r36.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r24.xy, r31.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r35.z, r36.x - mov r35.w, r24.x - mov r34.z, r33.x - mov r34.w, r32.x - add r31.xyzw, r34.zwxz, r35.zwxz - mov r36.z, r35.y - mov r36.w, r24.y - mov r33.z, r34.y - mov r33.w, r32.z - add r24.xyw, r33.zyzw, r36.zyzw - div r32.xyz, r34.xzwx, r31.zwyz - add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r32.xyz, r32.yxzy, cb4[400].xxxx - div r33.xyz, r33.zywz, r24.xywx - add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r33.xyz, r33.xyzx, cb4[400].yyyy - mov r32.w, r33.x - mad r34.xyzw, r30.xyxy, cb4[400].xyxy, r32.ywxw - mad r30.zw, r30.xxxy, cb4[400].xxxy, r32.zzzw - mov r33.w, r32.y - mov r32.yw, r33.yyyz - mad r35.xyzw, r30.xyxy, cb4[400].xyxy, r32.xyzy - mad r33.xyzw, r30.xyxy, cb4[400].xyxy, r33.wywz - mad r32.xyzw, r30.xyxy, cb4[400].xyxy, r32.xwzw - mul r36.xyzw, r24.xxxy, r31.zwyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r34.xyxx, t6.xxxx, s4, r24.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r34.zwzz, t6.xxxx, s4, r24.z - mul r25.w, r25.w, r36.y - mad r24.x, r36.x, r24.x, r25.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r30.zwzz, t6.xxxx, s4, r24.z - mad r24.x, r36.z, r25.w, r24.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r33.xyxx, t6.xxxx, s4, r24.z - mad r24.x, r36.w, r25.w, r24.x - mul r30.xyzw, r24.yyww, r31.xyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r35.xyxx, t6.xxxx, s4, r24.z - mad r24.x, r30.x, r24.y, r24.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r35.zwzz, t6.xxxx, s4, r24.z - mad r24.x, r30.y, r24.y, r24.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r33.zwzz, t6.xxxx, s4, r24.z - mad r24.x, r30.z, r24.y, r24.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r32.xyxx, t6.xxxx, s4, r24.z - mad r24.x, r30.w, r24.y, r24.x - ige r24.y, r22.w, l(0) - or r25.xyz, r25.xyzx, r29.xyzx - or r25.x, r25.y, r25.x - or r25.x, r25.z, r25.x - and r25.y, r24.z, l(0x7fffffff) - ult r25.y, l(0x7f800000), r25.y - or r25.x, r25.y, r25.x - mul r24.w, r24.w, r31.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r32.zwzz, t6.xxxx, s4, r24.z - mad r24.x, r24.w, r24.z, r24.x - add r24.x, r24.x, l(-1.000000) - mad r22.w, cb4[r22.w + 288].w, r24.x, l(1.000000) - movc r22.w, r25.x, l(1.000000), r22.w - movc r22.w, r24.y, r22.w, l(1.000000) - else - mov r22.w, l(1.000000) - endif - if_nz r26.w - dp3 r24.x, r14.xyzx, r27.xyzx - mul_sat r24.y, r23.z, cb3[r19.w + 6].z - mad r24.y, r24.y, l(0.500000), r10.w - min r24.y, r24.y, l(1.000000) - div r24.y, r10.w, r24.y - mad r25.xyz, r14.xyzx, r24.xxxx, -r27.xyzx - dp3 r24.z, r28.xyzx, r25.xyzx - mul r24.x, r24.x, r24.x - mad r24.x, cb3[r19.w + 6].z, cb3[r19.w + 6].z, -r24.x - div_sat r24.x, r24.z, r24.x - mad r24.xzw, r27.xxyz, r24.xxxx, r28.xxyz - dp3 r25.x, r24.xzwx, r24.xzwx - rsq r25.x, r25.x - mul r26.xyz, r24.xzwx, r25.xxxx - else - mov r24.y, l(1.000000) - endif - if_nz r20.y - mul_sat r20.y, r23.z, cb3[r21.w + 6].y - mad r24.xzw, r8.xxyz, r6.wwww, r26.xxyz - dp3 r23.z, r24.xzwx, r24.xzwx - max r23.z, r23.z, l(0.0000610351562) - rsq r23.z, r23.z - mul r24.xzw, r23.zzzz, r24.xxzw - dp3 r23.z, r5.xyzx, r26.xyzx - dp3_sat r25.x, r5.xyzx, r24.xzwx - dp3_sat r24.x, r10.xyzx, r24.xzwx - dp3 r24.z, r10.xyzx, r26.xyzx - lt r24.w, l(0.000000), r20.y - mul r20.y, r20.y, r20.y - mad r25.y, r24.x, l(3.600000), l(0.400000) - div r20.y, r20.y, r25.y - mad r20.y, r11.w, r11.w, r20.y - min r20.y, r20.y, l(1.000000) - movc r20.y, r24.w, r20.y, r10.w - mul r20.y, r20.y, r20.y - mad r24.w, r25.x, r20.y, -r25.x - mad r24.w, r24.w, r25.x, l(1.000000) - add r24.x, -r24.x, l(1.000000) - mul r25.x, r24.x, r24.x - mul r25.x, r25.x, r25.x - mul r25.y, r24.x, r25.x - mov_sat r25.z, -r24.z - mul r25.z, r25.z, r25.z - mad r25.z, r25.z, l(-0.640000), l(1.000000) - mul r25.z, r25.z, r25.z - mad r24.x, -r25.x, r24.x, l(1.000000) - mad r24.x, r2.z, r24.x, r25.y - mul r24.w, r24.w, r24.w - div r24.w, r20.y, r24.w - mul r24.y, r24.y, r24.w - mad r24.w, -r11.x, r20.y, r11.x - mad r24.w, r24.w, r11.x, r20.y - sqrt r24.w, r24.w - mad r25.x, -r20.x, r20.y, r20.x - mad r20.y, r25.x, r20.x, r20.y - sqrt r20.y, r20.y - mul r20.y, r11.x, r20.y - mad r20.y, r20.x, r24.w, r20.y - add r20.y, r20.y, l(0.000100) - div r20.y, l(0.500000), r20.y - mul r20.y, r20.y, r24.y - mul r20.y, r20.y, r24.x - min r20.y, r20.y, l(2048.000000) - mad r24.xy, r20.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r24.x, r24.xyxx, t9.xyzw, s1, l(0.000000) - mul r24.x, r12.z, r24.x - mul r24.x, r11.y, r24.x - div r24.x, r24.x, r11.z - mul r24.x, r1.z, r24.x - div r24.x, r24.x, r12.w - add r20.y, r20.y, r24.x - mov_sat r24.x, r24.z - add r24.x, r24.x, l(0.500000) - min r24.x, r24.x, l(1.000000) - mul r24.y, r8.w, r24.x - add_sat r24.z, r24.z, l(1.000000) - mad r24.x, -r8.w, r24.x, l(1.000000) - mad r24.x, r24.z, r24.x, r24.y - mul r20.y, r20.y, r24.x - mul r20.y, r4.y, r20.y - mul r20.y, r20.y, cb3[r21.w + 6].z - max r20.y, r20.y, l(0.000000) - min r20.y, r20.y, l(1000.000000) - add_sat r24.x, -r23.z, l(0.500000) - ne r24.y, r25.z, l(0.360000) - div r24.z, l(0.360000), r25.z - movc r24.y, r24.y, r24.z, l(1.000000) - mul r24.x, r24.y, r24.x - mad_sat r23.z, r1.x, l(0.0322580636), r23.z - add r23.z, -r20.x, r23.z - mul r24.yzw, r3.xxyz, r23.zzzz - mad r24.xyz, r16.xyzx, r24.xxxx, r24.yzwy - mul r24.xyz, r4.yyyy, r24.xyzx - mad r24.xyz, r20.yyyy, r20.xxxx, r24.xyzx - mad r24.xyz, r17.xyzx, r20.xxxx, r24.xyzx - mul r25.xyz, r19.xxxx, cb3[r18.z + 6].xyzx - mul r25.xyz, r22.wwww, r25.xyzx - mul r25.xyz, r18.xxxx, r25.xyzx - mul r24.xyz, r24.xyzx, r25.xyzx - else - mov r24.xyz, l(0,0,0,0) - endif - else - if_z r18.y - mad r18.x, cb3[r19.w + 6].y, l(0.500000), l(0.500000) - add r25.x, r18.x, -|cb3[r19.w + 6].x| - add r25.y, -r25.x, cb3[r19.w + 6].y - add r18.x, -|r25.x|, l(1.000000) - add r18.x, -|r25.y|, r18.x - max r18.x, r18.x, l(0.000488281250) - ge r18.y, cb3[r19.w + 6].x, l(0.000000) - movc r25.z, r18.y, r18.x, -r18.x - dp3 r18.x, r25.xyzx, r25.xyzx - rsq r18.x, r18.x - mul r25.xyz, r18.xxxx, r25.xyzx - add r26.xyz, -r7.xyzx, cb3[r23.x + 6].xyzx - dp3 r18.x, r26.xyzx, r26.xyzx - rsq r18.y, r18.x - mul r27.xyz, r18.yyyy, r26.xyzx - ftoi r18.y, cb3[r21.w + 6].w - mul r28.xyz, r25.xyzx, cb3[r19.w + 6].zzzz - mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - mad r28.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - ftou r18.z, cb3[r18.z + 6].w - and r18.z, r18.z, l(1) - ieq r19.x, r18.z, l(0) - not r19.x, r19.x - lt r20.x, l(0.000000), cb3[r19.w + 6].z - and r19.x, r19.x, r20.x - dp3 r20.x, r29.xyzx, r29.xyzx - dp3 r20.y, r28.xyzx, r28.xyzx - sqrt r20.xy, r20.xyxx - dp3 r21.w, r29.xyzx, r28.xyzx - mad r20.x, r20.x, r20.y, r21.w - mad r20.x, r20.x, l(0.500000), l(1.000000) - div r20.x, l(1.000000, 1.000000, 1.000000, 1.000000), r20.x - movc r20.x, r19.x, r20.x, l(1.000000) - lt r20.y, cb3[r23.w + 6].w, l(0.000000) - if_nz r20.y - mul r20.y, cb3[r23.x + 6].w, cb3[r23.x + 6].w - mul r20.y, r18.x, r20.y - mad r20.y, -r20.y, r20.y, l(1.000000) - max r20.y, r20.y, l(0.000000) - add r18.x, r18.x, l(1.000000) - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x - and r21.w, r19.x, l(0x3f800000) - add r22.w, -r18.x, r20.x - mad r18.x, r21.w, r22.w, r18.x - mul r20.y, r20.y, r20.y - mul r18.x, r18.x, r20.y - else - mul r28.xyz, r26.xyzx, cb3[r23.x + 6].wwww - dp3 r20.y, r28.xyzx, r28.xyzx - min r20.y, r20.y, l(1.000000) - add r20.y, -r20.y, l(1.000000) - log r20.y, r20.y - mul r20.y, r20.y, cb3[r23.w + 6].w - exp r20.y, r20.y - mul r18.x, r20.y, r20.x - endif - dp3 r20.x, r27.xyzx, -r25.xyzx - add r20.x, r20.x, -cb3[r19.w + 6].z - mul_sat r20.x, r20.x, cb3[r19.w + 6].w - mul r20.x, r20.x, r20.x - movc r20.x, r18.z, l(1.000000), r20.x - mul r18.x, r18.x, r20.x - not r19.x, r19.x - ige r20.x, r18.y, l(0) - and r19.x, r19.x, r20.x - if_nz r19.x - if_z r18.z - ishl r19.x, r18.y, l(2) - mul r25.xyz, r7.yyyy, cb5[r19.x + 33].xywx - mad r25.xyz, cb5[r19.x + 32].xywx, r7.xxxx, r25.xyzx - mad r25.xyz, cb5[r19.x + 34].xywx, r7.zzzz, r25.xyzx - add r25.xyz, r25.xyzx, cb5[r19.x + 35].xywx - div_sat r20.xy, r25.xyxx, r25.zzzz - mad r20.xy, r20.xyxx, cb5[r18.y + 0].zwzz, cb5[r18.y + 0].xyxx - else - ishl r19.x, r18.y, l(2) - dp3 r25.x, -r26.xyzx, cb5[r19.x + 32].xyzx - dp3 r25.y, -r26.xyzx, cb5[r19.x + 33].xyzx - dp3 r25.z, -r26.xyzx, cb5[r19.x + 34].xyzx - lt r19.x, |r25.x|, |r25.y| - and r19.x, r19.x, l(1) - dp2 r21.w, |r25.xyxx|, icb[r19.x + 0].xyxx - lt r21.w, r21.w, |r25.z| - movc r19.x, r21.w, l(2), r19.x - dp3 r21.w, r25.xyzx, icb[r19.x + 0].xyzx - lt r21.w, r21.w, l(0.000000) - bfi r19.x, l(31), l(1), r19.x, r21.w - ushr r21.w, r19.x, l(1) - dp3 r21.w, r25.xyzx, icb[r21.w + 0].xyzx - div r22.w, l(0.000244140625), cb5[r18.y + 0].w - add r22.w, -r22.w, l(0.500000) - utof r23.z, r19.x - ult r23.w, r19.x, l(2) - and r23.w, r23.w, l(2) - dp2 r23.w, r25.xzxx, icb[r23.w + 0].xzxx - mul r23.w, r23.w, icb[r19.x + 4].z - div r23.w, r23.w, |r21.w| - mad r23.z, r23.w, r22.w, r23.z - add r23.z, r23.z, l(0.500000) - mul_sat r26.x, r23.z, l(0.166666672) - iadd r23.z, l(-1), icb[r19.x + 4].y - dp2 r23.z, r25.yzyy, icb[r23.z + 0].xyxx - mul r19.x, r23.z, icb[r19.x + 4].w - div r19.x, r19.x, |r21.w| - mad_sat r26.y, -r19.x, r22.w, l(0.500000) - mad r20.xy, r26.xyxx, cb5[r18.y + 0].zwzz, cb5[r18.y + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r18.y, r20.xyxx, t11.yxzw, s1, l(0.000000) - mul r18.x, r18.y, r18.x - endif - lt r18.x, l(0.000000), r18.x - if_nz r18.x - if_z r18.z - ftoi r18.x, cb3[r23.y + 6].x - else - add r23.xzw, r7.xxyz, -cb3[r23.x + 6].xxyz - lt r25.xyz, |r23.zwwz|, |r23.xxzx| - and r18.y, r25.y, r25.x - lt r23.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xxzw - ushr r18.z, cb3[r19.w + 6].w, l(24) - ubfe r20.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r19.w + 6].wwww - movc r18.z, r23.x, r18.z, r20.x - and r19.x, l(255), cb3[r19.w + 6].w - movc r19.x, r23.z, r20.y, r19.x - ubfe r19.w, l(8), l(8), cb3[r23.y + 6].x - and r20.x, l(255), cb3[r23.y + 6].x - movc r19.w, r23.w, r19.w, r20.x - movc r19.x, r25.z, r19.x, r19.w - movc r18.y, r18.y, r18.z, r19.x - ilt r18.z, r18.y, l(80) - movc r18.x, r18.z, r18.y, l(-1) - endif - ishl r18.y, r18.x, l(2) - mad r23.xyz, r27.xyzx, cb4[r18.x + 288].xxxx, r7.xyzx - mul r18.z, l(5.000000), cb4[r18.x + 288].y - mad r23.xyz, r5.xyzx, r18.zzzz, r23.xyzx - mul r25.xyzw, r23.yyyy, cb4[r18.y + 65].xyzw - mad r25.xyzw, cb4[r18.y + 64].xyzw, r23.xxxx, r25.xyzw - mad r23.xyzw, cb4[r18.y + 66].xyzw, r23.zzzz, r25.xyzw - add r23.xyzw, r23.xyzw, cb4[r18.y + 67].xyzw - div r23.xyz, r23.xyzx, r23.wwww - ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx - ge r26.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r18.yz, -cb4[r18.x + 344].xxyx, cb4[r18.x + 344].zzwz - mad r18.yz, r23.xxyx, r18.yyzy, cb4[r18.x + 344].xxyx - mad r19.xw, r18.yyyz, cb4[400].zzzw, l(0.500000, 0.000000, 0.000000, 0.500000) - round_ni r19.xw, r19.xxxw - mad r18.yz, r18.yyzy, cb4[400].zzwz, -r19.xxwx - add r27.xyzw, r18.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r28.xyzw, r27.xxzz, r27.xxzz - add r20.xy, -r18.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) - min r23.xy, r18.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r27.xz, r18.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r29.xy, r20.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r27.xz, -r27.xxzx, r27.xxzx, r27.yywy - add r27.xz, r27.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) - mul r30.xy, r27.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r27.xz, r28.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r18.yz, r28.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r18.yyzy - mul r28.xy, r18.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r18.yz, -r23.xxyx, r23.xxyx, r20.xxyx - add r18.yz, r18.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r31.xy, r18.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r18.yz, r27.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r28.z, r31.x - mov r28.w, r18.y - mov r29.z, r30.x - mov r29.w, r27.x - add r32.xyzw, r28.zwxz, r29.zwxz - mov r31.z, r28.y - mov r31.w, r18.z - mov r30.z, r29.y - mov r30.w, r27.z - add r23.xyw, r30.zyzw, r31.zyzw - div r27.xyz, r29.xzwx, r32.zwyz - add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r27.xyz, r27.yxzy, cb4[400].xxxx - div r28.xyz, r30.zywz, r23.xywx - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyz, r28.xyzx, cb4[400].yyyy - mov r27.w, r28.x - mad r29.xyzw, r19.xwxw, cb4[400].xyxy, r27.ywxw - mad r18.yz, r19.xxwx, cb4[400].xxyx, r27.zzwz - mov r28.w, r27.y - mov r27.yw, r28.yyyz - mad r30.xyzw, r19.xwxw, cb4[400].xyxy, r27.xyzy - mad r28.xyzw, r19.xwxw, cb4[400].xyxy, r28.wywz - mad r27.xyzw, r19.xwxw, cb4[400].xyxy, r27.xwzw - mul r31.xyzw, r23.xxxy, r32.zwyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r29.xyxx, t6.xxxx, s4, r23.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.w, r29.zwzz, t6.xxxx, s4, r23.z - mul r19.w, r19.w, r31.y - mad r19.x, r31.x, r19.x, r19.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r18.yzyy, t6.xxxx, s4, r23.z - mad r18.y, r31.z, r18.y, r19.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.xyxx, t6.xxxx, s4, r23.z - mad r18.y, r31.w, r18.z, r18.y - mul r29.xyzw, r23.yyww, r32.xyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r30.xyxx, t6.xxxx, s4, r23.z - mad r18.y, r29.x, r18.z, r18.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r30.zwzz, t6.xxxx, s4, r23.z - mad r18.y, r29.y, r18.z, r18.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.zwzz, t6.xxxx, s4, r23.z - mad r18.y, r29.z, r18.z, r18.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r27.xyxx, t6.xxxx, s4, r23.z - mad r18.y, r29.w, r18.z, r18.y - ige r18.z, r18.x, l(0) - or r25.xyz, r25.xyzx, r26.xyzx - or r19.x, r25.y, r25.x - or r19.x, r25.z, r19.x - and r19.w, r23.z, l(0x7fffffff) - ult r19.w, l(0x7f800000), r19.w - or r19.x, r19.w, r19.x - mul r19.w, r23.w, r32.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r27.zwzz, t6.xxxx, s4, r23.z - mad r18.y, r19.w, r20.x, r18.y - add r18.y, r18.y, l(-1.000000) - mad r18.x, cb4[r18.x + 288].w, r18.y, l(1.000000) - movc r18.x, r19.x, l(1.000000), r18.x - movc r18.x, r18.z, r18.x, l(1.000000) - else - mov r18.x, l(1.000000) - endif - else - mov r18.x, l(1.000000) - endif - mul r17.w, r17.w, r18.x - mov r24.xyz, l(0,0,0,0) - endif - add r22.xyz, r22.xyzx, r24.xyzx - mov r19.z, r20.w - endloop - mov r13.w, r17.w - add r21.xyz, r21.xyzx, r22.xyzx - iadd r14.w, r14.w, l(1) -endloop -mad r1.xyz, r21.xyzx, r13.wwww, r13.xyzx -ne r8.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx -if_nz r8.x - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - mad r0.z, r0.z, l(0.750000), l(0.250000) - min r0.z, r3.w, r0.z - add r1.w, r0.z, r9.w - mad r4.y, r11.w, l(-16.000000), l(-1.000000) - exp r4.y, r4.y - log r1.w, |r1.w| - mul r1.w, r1.w, r4.y - exp r1.w, r1.w - add r1.w, r0.z, r1.w - add r1.w, r1.w, l(-1.000000) - mov_sat r8.xzw, r1.wwww - mad r13.xyz, r3.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r13.xyz, r0.zzzz, r13.xyzx - mad r13.xyz, r3.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r13.xyzx - add r13.xyz, r13.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r13.xyz, r0.zzzz, r13.xyzx - mad r13.xyz, r3.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r13.xyzx - add r13.xyz, r13.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r13.xyz, r0.zzzz, r13.xyzx - max r13.xyz, r0.zzzz, r13.xyzx -else - mov r8.xzw, r3.wwww - mov r13.xyz, r3.wwww -endif -mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r16.xyz, r7.xzyx, -r16.xyzx -max r0.z, |r16.y|, |r16.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.w, |r16.z|, l(-208.000000) -mul_sat r1.w, r1.w, l(0.031250) -max r0.z, r0.z, r1.w -ne r1.w, l(0.000000), cb0[210].w -lt r3.w, r0.z, l(1.000000) -and r1.w, r1.w, r3.w -if_nz r1.w - mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r16.xyz, r7.xzyx, -r16.xyzx - max r1.w, |r16.y|, |r16.x| - add r1.w, r1.w, l(-29.000000) - mul_sat r1.w, r1.w, l(0.500000) - add r3.w, |r16.z|, l(-13.000000) - mul_sat r3.w, r3.w, l(0.500000) - max r1.w, r1.w, r3.w - lt r3.w, r1.w, l(1.000000) - if_nz r3.w - mad r16.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r16.xyzx, cb0[211].xyzx - round_ni r17.xyz, r17.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t15.yzwx, s2, l(0.000000) - add r3.w, -r1.w, l(1.000000) - mul r4.y, l(0.500000), cb0[211].y - mad r6.w, -cb0[211].y, l(0.500000), l(1.000000) - max r4.y, r4.y, r16.y - min r4.y, r6.w, r4.y - mul r16.w, r4.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t16.xyzw, s1, l(0.000000) - mad r4.y, r18.w, r3.w, r0.z - add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t16.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r17.yyyy, r19.xyzx - mov r19.w, r17.y - mul r19.xyzw, r3.wwww, r19.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t16.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r17.xxxx, r16.xyzx - mov r16.w, r17.x - mul r16.xyzw, r3.wwww, r16.xyzw - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r17.wwww, r18.xyzx - mul r17.xyzw, r3.wwww, r17.xyzw - else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r4.y, r0.z - endif - mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r18.xyz, r7.xzyx, -r18.xyzx - max r3.w, |r18.y|, |r18.x| - add r3.w, r3.w, l(-116.000000) - mul_sat r3.w, r3.w, l(0.125000) - add r6.w, |r18.z|, l(-52.000000) - mul_sat r6.w, r6.w, l(0.125000) - max r3.w, r3.w, r6.w - lt r6.w, r3.w, l(1.000000) - if_nz r6.w - mad r18.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r20.xyz, r18.xyzx, cb0[211].xyzx - round_ni r20.xyz, r20.xyzx - mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t17.yzwx, s2, l(0.000000) - add r6.w, -r3.w, l(1.000000) - mul r1.w, r1.w, r6.w - mul r6.w, l(0.500000), cb0[211].y - mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) - max r6.w, r6.w, r18.y - min r6.w, r9.w, r6.w - mul r18.w, r6.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t18.xyzw, s1, l(0.000000) - mad r4.y, r21.w, r1.w, r4.y - add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t18.xyzw, s1, l(0.000000) - mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r20.yyyy, r22.xyzx - mov r22.w, r20.y - mad r19.xyzw, r22.xyzw, r1.wwww, r19.xyzw - add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r20.xxxx, r18.xyzx - mov r18.w, r20.x - mad r16.xyzw, r18.xyzw, r1.wwww, r16.xyzw - mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r18.xyzx - mad r17.xyzw, r20.xyzw, r1.wwww, r17.xyzw - endif - lt r1.w, l(0.000000), r3.w - if_nz r1.w - mad r18.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r20.xyz, r18.xyzx, cb0[211].xyzx - mul r21.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r20.xyz, r20.xyzx - mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx - mad r20.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r18.xyz, r21.xyzx, r18.xyzx - min r18.xyz, r20.xyzx, r18.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r18.xyzx, t19.yzwx, s2, l(0.000000) - add r1.w, -r0.z, l(1.000000) - mul r1.w, r1.w, r3.w - max r3.w, r21.y, r18.y - min r3.w, r20.y, r3.w - mul r18.w, r3.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t20.xyzw, s1, l(0.000000) - add r21.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t20.xyzw, s1, l(0.000000) - mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r22.yyyy, r21.xyzx - mov r21.w, r22.y - mad r19.xyzw, r21.xyzw, r1.wwww, r19.xyzw - add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t20.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r22.xxxx, r18.xyzx - mov r18.w, r22.x - mad r16.xyzw, r18.xyzw, r1.wwww, r16.xyzw - mad r18.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r22.wwww, r18.xyzx - mad r17.xyzw, r22.xyzw, r1.wwww, r17.xyzw - mad r4.y, r20.w, r1.w, r4.y - endif - mad_sat r1.w, r4.y, l(2.000000), l(-1.000000) - add r18.x, -r0.z, r1.w - add r0.z, r0.z, r1.w - mul r18.y, r0.z, l(0.500000) -else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r18.xy, l(0,1.000000,0,0) -endif -mul r20.xyzw, r18.yyyx, cb0[213].xyzw -mad r20.y, r20.w, l(0.500000), r20.y -mul r11.yz, r18.yyxy, cb0[213].wwyw -mad r20.w, r11.z, l(0.375000), r11.y -add r17.xyzw, r17.xyzw, r20.xyzw -mul r20.xyzw, r18.yyyx, cb0[214].xyzw -mad r20.y, r20.w, l(0.500000), r20.y -mul r11.yz, r18.yyxy, cb0[214].wwyw -mad r20.w, r11.z, l(0.375000), r11.y -add r16.xyzw, r16.xyzw, r20.xyzw -mul r20.xyzw, r18.yyyx, cb0[215].xyzw -mad r20.y, r20.w, l(0.500000), r20.y -mul r11.yz, r18.yyxy, cb0[215].wwyw -mad r20.w, r11.z, l(0.375000), r11.y -add r18.xyzw, r19.xyzw, r20.xyzw -ge r11.yz, r6.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r11.z, r11.y -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r19.xyzw, r6.xyxx, t14.xyzw, s1, l(0.000000) - lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r19.xyzw| - or r6.xy, r20.zwzz, r20.xyxx - or r0.z, r6.y, r6.x - if_nz r0.z - dp3 r0.z, r19.yzwy, r19.yzwy - sqrt r0.z, r0.z - mov r6.x, l(1.000000) - mov r6.y, r0.z - mov r1.w, l(0) - loop - ge r3.w, l(4.600000), r6.y - breakc_nz r3.w - iadd r3.w, r1.w, l(1) - mul r11.yz, r6.xxyx, l(0.000000, 0.500000, 0.500000, 0.000000) - mov r6.xy, r11.yzyy - mov r1.w, r3.w - continue - endloop - mul r19.xyzw, r6.xxxx, r19.xyzw - dp3 r0.z, r19.yzwy, r19.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb6[3].x, cb6[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r6.x, r0.z, l(0.00390625000) - mov r6.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r6.xy, r6.xyxx, t13.xyzw, s1, l(0.000000) - mad r6.xy, r6.xyxx, cb6[2].xyxx, cb6[2].zwzz - mul r20.x, r6.x, l(3.54490781) - mul r20.yzw, r6.yyyy, r19.yyzw - mul r0.z, r19.x, l(0.406976730) - exp r0.z, r0.z - mul r19.xyzw, r0.zzzz, r20.xyzw - mov r20.xyzw, r19.xyzw - mov r0.z, l(0) - loop - uge r3.w, r0.z, r1.w - breakc_nz r3.w - mul r21.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r3.w, r21.xyzw, r20.xyzw - dp2 r4.y, r21.yxyy, r20.xyxx - dp2 r6.x, r21.zxzz, r20.xzxx - dp2 r6.y, r21.wxww, r20.xwxx - iadd r6.w, r0.z, l(1) - mov r20.x, r3.w - mov r20.y, r4.y - mov r20.zw, r6.xxxy - mov r0.z, r6.w - continue - endloop - mul r19.xyzw, r20.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r20.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r19.xyzw, r20.xyzw - dp2 r1.w, r19.yxyy, r20.xyxx - dp2 r3.w, r19.zxzz, r20.xzxx - dp2 r4.y, r19.wxww, r20.xwxx - mul r20.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r6.x, r19.xyzw, r20.xyzw - dp2 r6.y, r19.yxyy, r20.xyxx - dp2 r6.w, r19.zxzz, r20.xzxx - dp2 r9.w, r19.wxww, r20.xwxx - mul r20.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r10.w, r19.xyzw, r20.xyzw - dp2 r11.y, r19.yxyy, r20.xyxx - dp2 r11.z, r19.zxzz, r20.xzxx - dp2 r12.z, r19.wxww, r20.xwxx - mul r17.w, r0.z, l(0.886226952) - mul r17.x, r4.y, l(-1.02332675) - mul r17.y, r1.w, l(-1.02332675) - mul r17.z, r3.w, l(1.02332675) - mul r16.x, r9.w, l(-1.02332675) - mul r16.yzw, r6.yywx, l(0.000000, -1.02332675, 1.02332675, 0.886226952) - mul r18.w, r10.w, l(0.886226952) - mul r18.x, r12.z, l(-1.02332675) - mul r18.yz, r11.yyzy, l(0.000000, -1.02332675, 1.02332675, 0.000000) - endif -endif -mov r5.w, l(1.000000) -dp4 r19.x, r17.xyzw, r5.xyzw -dp4 r19.y, r16.xyzw, r5.xyzw -dp4 r19.z, r18.xyzw, r5.xyzw -max r6.xyw, r19.xyxz, l(0.000000, 0.000000, 0.000000, 0.000000) -add r0.z, l(-1.000000), cb0[113].x -max r1.w, r11.w, l(0.001000) -log r1.w, r1.w -mad r1.w, -r1.w, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.w -mul r11.yz, r2.xxyx, cb1[0].wwww -round_ni r11.yz, r11.yyzy -add r1.w, |r4.w|, -cb1[2].y -round_ni r1.w, r1.w -add r3.w, l(-1.000000), cb1[1].x -max r4.y, r1.w, l(0.000000) -min r3.w, r3.w, r4.y -ge r1.w, r3.w, r1.w -mad r4.y, r11.z, cb1[0].x, r11.y -ftoi r4.y, r4.y -iadd r4.y, r4.y, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r4.y, r4.y, l(0), t0.xxxx -ftoi r3.w, r3.w -iadd r3.w, r3.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx -and r3.w, r3.w, r4.y -and r1.w, r1.w, r3.w -mul r11.yzw, r6.xxyw, cb0[111].xxxx -dp3 r3.w, r11.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r7.w, l(1.000000) -mov r11.yzw, l(0,0,0,0) -mov r4.y, l(1.000000) -mov r9.w, r1.w -mov r10.w, l(0) -loop - lt r12.z, l(0.010000), r4.y - ine r12.w, r9.w, l(0) - and r12.w, r12.z, r12.w - if_nz r12.w - firstbit_lo r12.w, r9.w - ishl r13.w, l(1), r12.w - xor r9.w, r9.w, r13.w - ishl r12.w, r12.w, l(3) - dp4 r19.x, cb1[r12.w + 6].xyzw, r7.xyzw - dp4 r19.y, cb1[r12.w + 7].xyzw, r7.xyzw - dp4 r19.z, cb1[r12.w + 8].xyzw, r7.xyzw - ge r20.xyz, cb1[r12.w + 5].xyzx, |r19.xyzx| - and r13.w, r20.y, r20.x - and r13.w, r20.z, r13.w - if_nz r13.w - mul r13.w, l(0.100000), cb1[r12.w + 5].x - mul r20.xyz, |r19.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r20.xy, r20.xyxx, r20.xyxx - add r21.xyz, -|r19.xyzx|, cb1[r12.w + 5].xyzx - mul r21.xyz, r21.xyzx, cb1[r12.w + 9].xyzx - eq r14.w, l(1.000000), cb1[r12.w + 10].x - if_nz r14.w - dp3 r22.x, cb1[r12.w + 6].xyzx, r14.xyzx - dp3 r22.y, cb1[r12.w + 7].xyzx, r14.xyzx - dp3 r22.z, cb1[r12.w + 8].xyzx, r14.xyzx - add r23.xyz, -r19.xyzx, cb1[r12.w + 5].xyzx - div r23.xyz, r23.xyzx, r22.xyzx - add r24.xyz, -r19.xyzx, -cb1[r12.w + 5].xyzx - div r24.xyz, r24.xyzx, r22.xyzx - lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx - movc r23.xyz, r25.xyzx, r23.xyzx, r24.xyzx - min r14.w, r23.y, r23.x - min r14.w, r23.z, r14.w - mad r19.xyz, r22.xyzx, r14.wwww, r19.xyzx - else - mov r19.xyz, r14.xyzx - endif - dp3 r14.w, r19.xyzx, r19.xyzx - rsq r14.w, r14.w - mul r19.xyz, r14.wwww, r19.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - lt r23.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r22.xyz, -r22.xyzx, r23.xyzx - itof r22.xyz, r22.xyzx - dp3 r14.w, r19.xyzx, r22.xyzx - div r19.xyz, r19.xyzx, r14.wwww - lt r14.w, r19.z, l(0.000000) - add r19.zw, -|r19.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r19.zw, r19.zzzw, r22.xxxy - movc r19.xy, r14.wwww, r19.zwzz, r19.xyxx - dp4 r14.w, cb1[r12.w + 4].xyzw, r5.xyzw - max r14.w, r14.w, l(0.000000) - max r14.w, r14.w, l(0.000100) - min r15.w, r21.z, r21.y - min r15.w, r15.w, r21.x - add r19.z, r20.y, r20.x - mad r19.z, r20.z, r20.z, r19.z - mad r13.w, r13.w, r13.w, -r19.z - mul r13.w, r13.w, cb1[r12.w + 9].x - mul r13.w, r13.w, cb1[r12.w + 9].x - add r19.z, l(1.000000), -cb1[r12.w + 10].y - mul r13.w, r13.w, r19.z - mul r13.w, r13.w, l(100.000000) - mad_sat r13.w, r15.w, cb1[r12.w + 10].y, r13.w - mul r15.w, r13.w, cb1[r12.w + 10].w - mad r19.xy, r19.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r19.xy, r19.xyxx, cb1[1].wwww, cb1[2].wwww - mov r19.z, cb1[r12.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r19.xyz, r19.xyzx, t5.xyzw, s3, r0.z - mul r19.xyz, r19.xyzx, cb1[r12.w + 9].wwww - div r19.w, r3.w, r14.w - min r19.w, |r19.w|, l(1.000000) - mad r19.w, r19.w, l(2.000000), r3.w - add r14.w, r14.w, l(2.000000) - div r14.w, r19.w, r14.w - add r14.w, r14.w, l(-1.000000) - mad r14.w, r14.w, cb0[112].w, l(1.000000) - mul r19.xyz, r14.wwww, r19.xyzx - mul r19.xyz, r15.wwww, r19.xyzx - mad r11.yzw, r19.xxyz, r4.yyyy, r11.yyzw - mad r12.w, -r13.w, cb1[r12.w + 10].w, l(1.000000) - mul r4.y, r4.y, r12.w - endif - mov r10.w, l(-1) - continue - else - mov r10.w, r12.z - break - endif - mov r10.w, r12.z -endloop -if_nz r10.w - dp3 r1.w, r14.xyzx, r14.xyzx - rsq r1.w, r1.w - mul r7.xzw, r1.wwww, r14.xxyz - lt r14.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r7.xzwx - lt r19.xyz, r7.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r14.xyz, -r14.xyzx, r19.xyzx - itof r14.xyz, r14.xyzx - dp3 r1.w, r7.xzwx, r14.xyzx - div r7.xzw, r7.xxzw, r1.wwww - lt r1.w, r7.w, l(0.000000) - add r12.zw, -|r7.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r12.zw, r12.zzzw, r14.xxxy - movc r7.xz, r1.wwww, r12.zzwz, r7.xxzx - dp4 r1.w, cb1[3].xyzw, r5.xyzw - max r1.w, r1.w, l(0.000000) - max r1.w, r1.w, l(0.000100) - mad r7.xz, r7.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) - mad r14.xy, r7.xzxx, cb1[1].wwww, cb1[2].wwww - mov r14.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r7.xzw, r14.xyzx, t5.xwyz, s3, r0.z - div r0.z, r3.w, r1.w - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r3.w - add r1.w, r1.w, l(2.000000) - div r0.z, r0.z, r1.w - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r7.xzw, r0.zzzz, r7.xxzw - mad r11.yzw, r7.xxzw, r4.yyyy, r11.yyzw -endif -mul r7.xzw, r11.yyzw, cb0[112].zzzz -mul r7.xzw, r7.xxzw, cb0[111].yyyy -if_nz r8.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r11.yzw, v1.xyxx, t2.wxyz, s1, cb0[108].x - add r1.w, -r0.z, l(1.000000) - mul r14.xyz, r1.wwww, r7.xzwx - mad r7.xzw, r11.yyzw, r0.zzzz, r14.xxyz -endif -mul r3.xyz, r3.xyzx, r6.xywx -mul r3.xyz, r3.xyzx, cb0[111].xxxx -mad r0.z, r2.z, r12.x, r12.y -mul r6.xyw, r0.zzzz, r7.xzxw -mul r6.xyw, r8.xzxw, r6.xyxw -mad r3.xyz, r3.xyzx, r13.xyzx, r6.xywx -mul r5.xyzw, r5.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) -dp4 r8.x, r17.xyzw, r5.xyzw -dp4 r8.y, r16.xyzw, r5.xyzw -dp4 r8.z, r18.xyzw, r5.xyzw -max r5.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -mul r5.xyz, r5.xyzx, cb0[111].xxxx -mul r5.xyz, r13.xyzx, r5.xyzx -mul r5.xyz, r15.xyzx, r5.xyzx -mul r0.z, r4.x, r11.x -ftou r1.w, r2.w -bfi r1.w, l(2), l(0), r1.w, r4.z -utof r1.w, r1.w -mul r1.w, r1.w, l(0.0322580636) -mad r0.z, r0.z, l(0.00787401572), r1.w -mul r4.xyz, r0.zzzz, r5.xyzx -mad r3.xyz, r4.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000), r3.xyzx -add r1.xyz, r1.xyzx, r3.xyzx -mad r0.z, r7.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r6.z, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.z, r0.z, l(-1.442695) -exp r2.z, r2.z -add r2.z, -r2.z, l(1.000000) -div r0.z, r2.z, r0.z -mad r2.z, r7.y, cb0[156].w, cb0[158].w -mul r2.z, r2.z, l(1.442695) -exp r2.z, r2.z -mul r0.z, r0.z, r2.z -mul r0.z, r0.z, -r1.w -mul r3.xyz, r0.zzzz, cb0[155].xyzx -mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r3.xyz, r3.xyzx -dp3 r0.z, -r10.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.z, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.z -lt r2.z, l(0.000000), cb0[163].z -if_nz r2.z - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r4.x, r0.y, r0.w, r0.x - dp3 r0.x, -r10.xyzx, -r9.xyzx - add r2.z, r7.y, -cb0[44].y - lt r2.w, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r2.w - mul r0.x, r0.x, cb0[163].w - div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), r6.z - mul r3.w, r0.x, r2.w - mad r4.z, r3.w, r2.z, cb0[44].y - mad r2.z, -r3.w, r2.z, r2.z - mul r3.w, r2.z, cb0[159].z - max r3.w, r3.w, l(-127.000000) - mul r2.z, r2.z, cb0[162].x - max r2.z, r2.z, l(-127.000000) - add r5.x, r4.z, -cb0[159].x - mul r5.x, r5.x, cb0[159].z - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[159].y - lt r5.y, l(5.960464478E-08), |r3.w| - exp r5.z, -r3.w - add r5.z, -r5.z, l(1.000000) - div r5.z, r5.z, r3.w - mad r3.w, -r3.w, l(0.240226507), l(0.693147182) - movc r3.w, r5.y, r5.z, r3.w - add r4.z, r4.z, -cb0[162].z - mul r4.z, r4.z, cb0[162].x - max r4.z, r4.z, l(-127.000000) - exp r4.z, -r4.z - mul r4.z, r4.z, cb0[162].y - lt r5.y, l(5.960464478E-08), |r2.z| - exp r5.z, -r2.z - add r5.z, -r5.z, l(1.000000) - div r5.z, r5.z, r2.z - mad r2.z, -r2.z, l(0.240226507), l(0.693147182) - movc r2.z, r5.y, r5.z, r2.z - mul r2.z, r2.z, r4.z - mad r2.z, r5.x, r3.w, r2.z - mad r0.x, -r0.x, r2.w, l(1.000000) - mul r0.x, r6.z, r0.x - mul r0.x, r0.x, r2.z - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r2.zw, r6.zzzz, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r2.z - add r0.x, r2.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r4.y, r0.w, r4.x, r0.y - ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r2.xxxy - mul r2.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r4.w|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r2.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r2.xyzw, r2.xyzx, t12.xyzw, s1, l(0.000000) - add r0.y, |r4.w|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r2.xyzw, r2.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r2.xyzw, r0.yyyy, r2.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r2.xyz, r4.xyzx, r2.wwww, r2.xyzx - mul r0.x, r0.x, r2.w -else - add r0.y, r7.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.w, cb0[44].y, -cb0[159].x - mul r2.w, r2.w, cb0[159].z - max r2.w, r2.w, l(-127.000000) - exp r2.w, -r2.w - mul r2.w, r2.w, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.w, r0.w, r0.y - mul r0.y, r6.z, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r6.zzzz, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r2.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r3.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.w, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r3.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r2.xyzx -mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx -dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xD5B102A4.cso b/src/games/endfield/deferred-lighting/0xD5B102A4.cso index b4458e5229bcb17f80a3b10224da68d383598d06..81a2b599a51d02cdef0ba45e72321cf30f8652f3 100644 GIT binary patch delta 299 zcmdn8mg&rTCMlN)CuhOx&GFGM{ZGY6yfq~)7^odf7IC-WsFa!X3hbJCQ zW)$A6$tdroYRzzh_(YEWR{1=2!5%;>2LiArEYvcvB?KnMCBUnEf^Tsi-2m_fNI>Bpfoc?&*l)n3?)u6po|qz1=Hq@1y%fV zEHFz!7MlQdHv#2fYQ!cx@(ROsh)rfR6SjfN0o8*X$-v-X51||EV74;>MM1WM=x_WG O^F)ElH)}NXhyegiVlmwS delta 76 zcmV-S0JHzhuL88K0vbeELPO43I2P!fWPV7#$kvgq=U)K;006X>ks6{2^pyYrPyhe` ieUZgu0S&V$0Ut`Ua7zpWv&>FtBC|+wZx6FWfr%EDFdX*) diff --git a/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm index c203b31c3e..836daa6ec2 100644 --- a/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm @@ -25,7 +25,7 @@ dcl_constantbuffer CB1[259], dynamicIndexed dcl_constantbuffer CB2[5], immediateIndexed dcl_constantbuffer CB3[5], immediateIndexed dcl_constantbuffer CB4[4], immediateIndexed -dcl_constantbuffer CB13[13], immediateIndexed +dcl_constantbuffer CB13[19], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -648,6 +648,7 @@ else mov r6.xyz, l(0,0,0,0) endif ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +movc r3.y, cb13[18].w, l(0xFFFFFFFF), r3.y if_nz r3.y sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x min r0.z, r1.y, r0.z @@ -675,6 +676,8 @@ else mov r11.xyw, r1.yyyy mov r12.xyz, r1.yyyy endif +movc r11.xyw, cb13[18].wwww, r11.xyzw, l(1.0, 1.0, 0, 1.0) +mul r6.xyz, r6.xyzx, r11.xywx mad r14.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx round_z r0.z, cb0[212].x mad r15.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx @@ -957,6 +960,7 @@ and r2.w, r2.w, r3.y and r1.y, r1.y, r2.w mul r14.xyz, r16.xyzx, cb0[111].xxxx dp3 r2.w, r14.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r22.w, r2.w // Store ambient luminance for cubemap modulation mov r5.w, l(1.000000) mov r13.w, l(1.000000) mov r14.xyz, l(0,0,0,0) @@ -1089,6 +1093,13 @@ if_nz r4.w endif mul r2.xyz, r14.xyzx, cb0[112].zzzz mul r2.xyz, r2.xyzx, cb0[111].yyyy +// Cubemap ambient link modulation (cb13[13].w) +if_nz cb13[13].w + max r22.w, r22.w, l(0.000000) + min r22.w, r22.w, l(1.000000) + mad r22.w, r22.w, l(0.750000), l(0.250000) + mul r2.xyz, r2.xyzx, r22.wwww +endif if_nz r3.z sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x diff --git a/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0_original_backup.asm b/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0_original_backup.asm deleted file mode 100644 index cbebeb69e0..0000000000 --- a/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0_original_backup.asm +++ /dev/null @@ -1,1263 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 22:30:13 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[5], immediateIndexed -dcl_constantbuffer CB3[5], immediateIndexed -dcl_constantbuffer CB4[4], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture3d (float,float,float,float) t21 -dcl_resource_texture3d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_resource_texture2d (float,float,float,float) t25 -dcl_resource_texture2d (float,float,float,float) t26 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 23 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t24.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t25.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r2.xyw, r1.wwww, r3.xyxz -utof r4.xy, r0.xyxx -mul r4.zw, v0.xxxy, cb0[82].zzzw -mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) -mul r5.zw, r5.zzzw, cb0[82].zzzw -sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) -mul r6.xyzw, -r5.yyyy, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw -mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r3.w, r5.y, cb0[1].z -mad r3.w, cb0[0].z, r5.x, r3.w -mad r3.w, cb0[2].z, r5.z, r3.w -add r3.w, r3.w, cb0[3].z -eq r6.x, l(0.000000), cb0[86].w -add r6.yzw, -r5.xxyz, cb0[44].xxyz -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r6.xyz, r6.xxxx, r6.yzwy, r7.xyzx -dp3 r6.w, r6.xyzx, r6.xyzx -max r7.w, r6.w, l(9.999999939E-09) -rsq r7.w, r7.w -mul r8.xyz, r6.xyzx, r7.wwww -mul r6.w, r6.w, r7.w -lt r8.w, l(0.000488281250), cb0[234].x -if_nz r8.w - sample_b_indexable(texture2d)(float,float,float,float) r9.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x -else - mov r9.xy, l(1.000000,1.000000,0,0) -endif -lt r9.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[226].xxxy -if_nz r9.z - add r9.z, |r2.y|, |r2.x| - add r9.z, |r2.w|, r9.z - div r9.z, l(1.000000, 1.000000, 1.000000, 1.000000), r9.z - mul r10.xyz, |r2.xywx|, r9.zzzz - mul r11.xyz, r5.xyzx, cb0[229].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r9.z, r11.xyzx, t9.yzxw, s2, l(0.000000) - mul r11.xyzw, r10.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) - add r10.xyw, r11.zwzz, r11.xxxy - mad r10.xyz, r10.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r10.xywx - mad r10.w, r9.z, l(2.000000), l(-1.000000) - mul r10.xyz, r10.wwww, r10.xyzx - mov r10.w, |r2.y| - add r10.w, r10.w, l(-0.700000) - mul_sat r10.w, r10.w, l(4.000000) - mad r11.x, r10.w, l(-2.000000), l(3.000000) - mul r10.w, r10.w, r10.w - mul r10.w, r10.w, r11.x - add r11.x, -cb0[229].z, cb0[229].y - mad r10.w, r10.w, r11.x, cb0[229].z - mul r10.xyz, r10.wwww, r10.xyzx -else - mov r10.xyz, l(0,0,0,0) - mov r9.z, l(0) -endif -mad r10.w, -r3.y, r1.w, l(-0.200000) -if_nz r9.w - mul r11.xyz, r2.xywx, cb0[233].zzzz - mul r12.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy - mad r11.xyz, r11.xyzx, cb0[225].xxxx, r12.xyzx - max r9.w, -r2.y, l(0.000000) - min r9.w, r9.w, l(0.900000) - add r9.w, -r9.w, l(1.000000) - mul_sat r11.w, r10.w, l(-10.000000) - mad r12.x, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r12.x - max r11.w, r11.w, l(0.100000) - min r11.w, r11.w, l(1.000000) - mul r9.w, r9.w, r11.w - mad r11.xyz, r11.xyzx, r9.wwww, r5.xyzx - add r10.xyz, r10.xyzx, r11.xyzx - mul r11.xyz, r10.yyyy, cb3[1].xyzx - mad r11.xyz, cb3[0].xyzx, r10.xxxx, r11.xyzx - mad r10.xyz, cb3[2].xyzx, r10.zzzz, r11.xyzx - add r10.xyz, r10.xyzx, cb3[3].xyzx - mad r11.x, r10.x, l(0.500000), cb3[4].x - mad r9.w, r10.y, l(0.500000), l(0.500000) - add r11.z, -r9.w, cb3[4].y - add r10.xy, r11.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r9.w, r10.z, l(0.000488281250) - sample_c_lz_indexable(texture2d)(float,float,float,float) r9.w, r10.xyxx, t8.xxxx, s4, r9.w -else - mov r9.w, l(1.000000) -endif -mov_sat r10.x, r2.y -add r10.y, l(1.000000), -cb0[230].w -mad r10.x, r10.x, r10.y, cb0[230].w -add r10.yz, r5.xxzx, -cb0[44].xxzx -max r10.y, |r10.z|, |r10.y| -mul r10.z, r9.w, r10.x -mul r11.x, l(0.0500000119), cb0[222].w -mad r11.y, -cb0[222].w, l(0.700000), r10.y -div r11.x, l(1.000000, 1.000000, 1.000000, 1.000000), r11.x -mul_sat r11.x, r11.x, r11.y -mad r11.y, r11.x, l(-2.000000), l(3.000000) -mul r11.x, r11.x, r11.x -mul r11.x, r11.x, r11.y -mad r9.w, -r10.x, r9.w, l(1.000000) -mad r9.w, r11.x, r9.w, r10.z -ge r10.z, r1.z, l(0.045000) -and r10.z, r10.z, l(0x3f800000) -mul r10.z, r9.w, r10.z -deriv_rty_coarse r11.xyz, r5.xyzx -deriv_rtx_coarse r12.xyz, r5.zxyz -mul r13.xyz, r11.xyzx, r12.xyzx -mad r11.xyz, r11.zxyz, r12.yzxy, -r13.xyzx -dp3 r11.w, r11.xyzx, r11.xyzx -max r11.w, r11.w, l(1.175494351E-38) -rsq r11.w, r11.w -mul r12.xyz, r11.wwww, r11.xzyx -mov_sat r11.y, r12.x -add r11.z, r11.y, l(-0.988000) -mul_sat r11.z, r11.z, l(1000.012878) -mad r12.w, r11.z, l(-2.000000), l(3.000000) -mul r11.z, r11.z, r11.z -mul r11.z, r11.z, r12.w -add r12.w, |r3.w|, l(-15.000000) -mul_sat r12.w, r12.w, l(0.015000) -add r12.w, -r12.w, l(1.000000) -lt r13.x, l(0.000488281250), cb0[223].y -mad r13.y, cb0[223].z, l(0.300000), l(0.687000) -add r11.y, r11.y, -r13.y -mul_sat r11.y, r11.y, l(-1000.012878) -mad r13.y, r11.y, l(-2.000000), l(3.000000) -mul r11.y, r11.y, r11.y -mul r11.y, r11.y, r13.y -mad r11.x, r11.x, r11.w, l(0.500000) -mul_sat r11.x, r11.x, l(2.500000) -mad r11.w, r11.x, l(-2.000000), l(3.000000) -mul r11.x, r11.x, r11.x -mul r11.x, r11.x, r11.w -mul r11.x, r11.x, r11.y -lt r11.x, l(0.000488281250), r11.x -and r11.x, r11.x, r13.x -if_nz r11.x - mul r11.xy, |r12.yzyy|, |r12.yzyy| - add r11.w, r11.y, r11.x - div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w - mul r11.xy, r11.wwww, r11.xyxx - mul r13.xyz, r12.xzyx, l(0.000000, 1.000000, 0.000000, 0.000000) - mad r13.xyz, r12.yxzy, l(1.000000, 0.000000, 0.000000, 0.000000), -r13.xyzx - dp2 r11.w, r13.xyxx, r13.xyxx - rsq r11.w, r11.w - mul r13.xyz, r11.wwww, r13.xyzx - mul r14.xyz, r12.xzyx, r13.xyzx - mad r14.xyz, r13.zxyz, r12.zyxz, -r14.xyzx - dp3 r11.w, r14.xyzx, r14.xyzx - rsq r11.w, r11.w - mul r14.xyz, r11.wwww, r14.xyzx - add r15.xyz, r5.xyzx, r5.xyzx - round_ni r15.xyz, r15.xyzx - add r15.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - add r13.zw, r15.yyyy, r15.xxxz - dp2 r11.w, r13.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r11.w, null, r11.w - mul r11.w, r11.w, l(43758.546875) - frc r11.w, r11.w - lt r13.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.zzzy - lt r15.xy, r12.zyzz, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r13.zw, r13.zzzw, -r15.xxxy - itof r13.zw, r13.zzzw - mul r15.xy, r5.xzxx, r13.zwzz - mul r13.z, r9.z, r11.w - add r13.w, -r11.w, l(1.000000) - mad r13.w, r13.w, l(0.700000), l(0.300000) - mul r16.xy, r13.zzzz, l(3.000000, 6.000000, 0.000000, 0.000000) - mad r13.z, -cb0[223].x, r13.w, r16.x - frc r17.x, r13.z - mad r13.z, cb0[223].x, l(-0.300000), r16.y - frc r17.y, r13.z - mul r11.w, r11.w, l(5.000000) - round_ni r11.w, r11.w - add r16.x, r11.w, l(1.000000) - mul r16.y, r5.y, r16.x - mov r5.w, l(0.100000) - mul r13.zw, r5.yyyw, r16.xxxy - frc r13.zw, r13.zzzw - add r16.xy, r17.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - add r16.xy, r13.zwzz, -r16.xyxx - add r16.xy, r16.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) - mul_sat r16.xy, r16.xyxx, l(5.00000048, 5.00000048, 0.000000, 0.000000) - mad r16.zw, r16.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) - mul r16.xy, r16.xyxx, r16.xyxx - mul r16.xy, r16.xyxx, r16.zwzz - add r16.zw, -r13.zzzw, r17.xxxy - max r16.xy, r16.zwzz, r16.xyxx - add r17.zw, -r17.xxxy, r13.zzzw - add r17.zw, r17.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) - mul r17.zw, r17.zzzw, l(0.000000, 0.000000, 5.00000048, 5.00000048) - max r17.zw, r17.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r18.xy, r17.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) - mul r17.zw, r17.zzzw, r17.zzzw - mul r17.zw, r17.zzzw, r18.xxxy - add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - max r16.zw, r16.zzzw, r17.zzzw - ge r13.zw, r13.zzzw, r17.xxxy - and r13.zw, r13.zzzw, l(0, 0, 0x3f800000, 0x3f800000) - add r16.zw, -r16.xxxy, r16.zzzw - mad r13.zw, r13.zzzw, r16.zzzw, r16.xxxy - mad r11.w, r13.z, r13.z, l(-0.400000) - mul_sat r11.w, r11.w, l(1.66666663) - mad r13.z, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r13.z - mad r13.z, r13.w, l(2.000000), l(-1.000000) - mul r16.x, r11.w, l(0.010000) - mul r16.y, r13.z, r16.x - mad r17.x, r9.z, l(0.100000), r16.y - mul r16.x, r11.w, r16.x - mad r16.x, r16.x, r13.z, r9.z - mul r17.y, r9.z, r16.x - mov r15.z, r5.y - mad r16.xy, r15.yzyy, cb0[224].xyxx, r17.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r16.xyxx, t10.xyzw, s2, cb0[108].x - mov r15.w, -r15.x - mad r15.xy, r15.wzww, cb0[224].xyxx, r17.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r15.xyzw, r15.xyxx, t10.xyzw, s2, cb0[108].x - mul r15.xyzw, r11.yyyy, r15.xyzw - mad r15.xyzw, r16.xyzw, r11.xxxx, r15.xyzw - mad r11.xy, r15.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mad r9.z, r11.w, l(2.000000), l(-1.000000) - mad_sat r9.z, r9.z, l(0.800000), r13.w - mad r13.w, -r15.w, l(0.500000), l(1.000000) - mad r9.z, r9.z, r13.w, l(-0.700000) - mul_sat r9.z, r9.z, l(3.33333325) - mad r13.w, r9.z, l(-2.000000), l(3.000000) - mul r9.z, r9.z, r9.z - mul r9.z, r9.z, r13.w - mul r13.z, r13.z, r15.w - mad_sat r11.w, r13.z, l(0.500000), r11.w - mad r11.w, r11.w, l(0.500000), l(0.100000) - max r9.z, r9.z, r11.w - add r11.w, -r9.z, l(1.000000) - max r11.w, r11.w, l(0.000000) - mul r13.z, r11.w, r11.w - mul r13.z, r13.z, r13.z - mul r11.w, r11.w, r13.z - ge r11.w, r15.z, r11.w - and r11.w, r11.w, l(0x3f800000) - mad r9.z, r9.z, l(0.700000), l(0.200000018) - mad r9.z, r11.w, r9.z, l(0.100000) - mul r9.z, r15.z, r9.z - mul r9.z, r9.z, cb0[223].y - mul r9.z, r9.z, l(0.330000) - mul r11.w, r10.z, cb0[222].x - mul r11.w, r12.w, r11.w - mul r9.z, r9.z, r11.w - dp2 r11.w, r11.xyxx, r11.xyxx - min r11.w, r11.w, l(1.000000) - add r11.w, -r11.w, l(1.000000) - sqrt r11.w, r11.w - max r11.w, r11.w, l(0.000488281250) - mul_sat r13.z, r9.z, l(10.000000) - mad r13.w, r13.z, l(-2.000000), l(3.000000) - mul r13.z, r13.z, r13.z - mul r13.z, r13.z, r13.w - mul r13.z, r13.z, cb0[223].y - mul r15.xy, r11.xyxx, r13.zzzz - add r11.x, l(-1.500000), cb0[223].y - mul_sat r11.x, r11.x, l(0.666666687) - mad r11.y, r11.x, l(-2.000000), l(3.000000) - mul r11.x, r11.x, r11.x - mul r11.x, r11.x, r11.y - mul r11.y, r11.x, l(-0.200000) - mad r11.x, -r11.x, l(-0.200000), r11.w - mad r15.z, r9.z, r11.x, r11.y - dp3 r11.x, r15.xyzx, r15.xyzx - max r11.x, r11.x, l(1.175494351E-38) - rsq r11.x, r11.x - mul r11.xyw, r11.xxxx, r15.xyxz - mov r15.x, r13.y - mov r15.y, r14.x - mov r15.z, r12.y - dp3 r15.x, r15.xyzx, r11.xywx - mov r14.w, r12.x - dp2 r15.y, r14.ywyy, r11.ywyy - mov r12.x, r13.x - mov r12.y, r14.z - dp3 r15.z, r12.xyzx, r11.xywx - mad r11.xyw, -r3.xyxz, r1.wwww, r15.xyxz - mad r13.xyz, r9.zzzz, r11.xywx, r2.xywx - mul r9.z, r9.z, cb0[223].y - mul r9.z, r9.z, l(0.330000) -else - mov r13.xyz, r2.xywx - mov r9.z, l(0) -endif -lt r11.xy, l(0.000488281250, 0.000488281250, 0.000000, 0.000000), cb0[227].ywyy -or r11.x, r11.y, r11.x -lt r11.y, l(0.000488281250), r11.z -and r11.x, r11.y, r11.x -if_nz r11.x - mul r11.xyw, r2.ywyx, l(1.000000, 0.000000, 0.000000, 0.000000) - mad r11.xyw, r2.xyxw, l(0.000000, 0.000000, 0.000000, 1.000000), -r11.xyxw - dp2 r12.x, r11.xwxx, r11.xwxx - rsq r12.x, r12.x - mul r11.xyw, r11.xyxw, r12.xxxx - mul r12.xyz, r2.ywxy, r11.xywx - mad r12.xyz, r11.wxyw, r2.wxyw, -r12.xyzx - dp3 r11.y, r12.xyzx, r12.xyzx - rsq r11.y, r11.y - mul r14.xyz, r11.yyyy, r12.xzyx - mul r12.xy, -r5.xzxx, cb0[228].xyxx - frc r15.xy, r12.xyxx - round_ni r12.xy, r12.xyxx - dp2 r11.y, r12.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r11.y, null, r11.y - mul r11.y, r11.y, l(43758.546875) - frc r11.y, r11.y - add r12.x, r11.y, cb0[227].x - frc r12.x, r12.x - mul r12.y, cb0[228].z, cb0[228].z - mul r12.x, r12.y, r12.x - round_ni r12.x, r12.x - div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[228].z - mad r15.zw, -r5.xxxz, cb0[228].xxxy, cb0[227].zzzz - sample_b_indexable(texture2d)(float,float,float,float) r16.xy, r15.zwzz, t11.zwxy, s2, cb0[108].x - mad r15.zw, -r5.xxxz, cb0[228].xxxy, -cb0[227].zzzz - sample_b_indexable(texture2d)(float,float,float,float) r16.zw, r15.zwzz, t11.xyzw, s2, cb0[108].x - mul r16.xyzw, r16.xyzw, cb0[227].wwww - mad r16.xyzw, r16.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -cb0[227].wwww - ge r11.y, l(0.500000), r11.y - and r11.y, r11.y, l(0x3f800000) - add r15.zw, -r15.xxxy, r15.yyyx - mad r15.xy, r11.yyyy, r15.zwzz, r15.xyxx - div r11.y, r12.x, cb0[228].z - ge r12.z, r11.y, -r11.y - frc r11.y, |r11.y| - movc r11.y, r12.z, r11.y, -r11.y - mul r11.y, r11.y, cb0[228].z - mul r17.x, r11.y, r12.y - add r15.zw, l(0.000000, 0.000000, -0.050000, -1.000000), cb0[228].wwwz - mul r11.y, r12.y, r12.x - round_ni r11.y, r11.y - add r11.y, -r11.y, r15.w - mul r17.y, r11.y, r12.y - mad r12.xy, r15.xyxx, r12.yyyy, r17.xyxx - frc r12.xy, r12.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r12.xy, r12.xyxx, t11.xyzw, s1, cb0[108].x - mul r12.xy, r12.xyxx, cb0[227].yyyy - mad r12.xy, r12.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[227].yyyy - add r15.xy, r16.zwzz, r16.xyxx - add r12.xy, r12.xyxx, r15.xyxx - dp2 r11.y, r12.xyxx, r12.xyxx - min r11.y, r11.y, l(1.000000) - add r11.y, -r11.y, l(1.000000) - sqrt r11.y, r11.y - max r12.z, r11.y, l(0.000488281250) - dp3 r11.y, r12.xyzx, r12.xyzx - rsq r11.y, r11.y - mul r12.xyz, r11.yyyy, r12.xyzx - mov r14.w, r2.x - dp2 r16.x, r14.xwxx, r12.yzyy - mov r17.x, r11.w - mov r17.y, r14.z - mov r17.z, r2.y - dp3 r16.y, r17.xyzx, r12.xyzx - mov r14.x, r11.x - mov r14.z, r2.w - dp3 r16.z, r14.xyzx, r12.xyzx - mul r10.z, r10.z, cb0[222].x - mul r10.z, r11.z, r10.z - max r11.x, l(0.000488281250), cb0[228].w - mov_sat r15.z, r15.z - add r11.y, -r11.x, r15.z - add r11.x, r2.z, -r11.x - div r11.y, l(1.000000, 1.000000, 1.000000, 1.000000), r11.y - mul_sat r11.x, r11.y, r11.x - mad r11.y, r11.x, l(-2.000000), l(3.000000) - mul r11.x, r11.x, r11.x - mul r11.x, r11.x, r11.y - mul r10.z, r10.z, r11.x - mul r10.z, r12.w, r10.z - mad r3.xyz, -r3.xyzx, r1.wwww, r16.xyzx - mad r13.xyz, r10.zzzz, r3.xyzx, r2.xywx -endif -min r1.w, r9.y, r9.x -mul r3.x, r10.x, cb0[230].z -mad r3.y, -cb0[230].z, r10.x, l(1.000000) -mad r3.x, r9.w, r3.y, r3.x -mad r3.y, cb0[230].x, cb0[222].w, -cb0[222].w -add r3.z, r10.y, -cb0[222].w -div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y -mul_sat r3.y, r3.y, r3.z -mad r3.z, r3.y, l(-2.000000), l(3.000000) -mul r3.y, r3.y, r3.y -mul r3.y, r3.y, r3.z -add r3.z, -r3.x, cb0[230].y -mad r3.x, r3.y, r3.z, r3.x -add r3.x, -r3.x, l(1.000000) -mul r3.y, r3.x, r9.x -add r1.z, r1.z, l(-0.050000) -mul_sat r1.z, r1.z, l(1.052600) -add r3.z, -r2.z, l(1.000000) -mad_sat r9.w, r3.z, cb0[222].z, cb0[222].y -mad_sat r9.w, r9.z, cb0[224].z, r9.w -add r10.x, -r9.w, l(1.000000) -mad r9.w, r1.x, r10.x, r9.w -mul_sat r10.x, r10.w, l(3.33333325) -mad r10.y, r10.x, l(-2.000000), l(3.000000) -mul r10.x, r10.x, r10.x -mad r10.x, -r10.y, r10.x, l(1.000000) -mul r10.y, r9.w, cb0[222].x -add r10.z, -r1.x, l(1.000000) -mul r10.y, r10.z, r10.y -mul r10.y, r10.x, r10.y -mad r10.y, r10.y, l(-0.750000), l(1.000000) -mad r9.w, r9.w, l(-0.299999952), l(0.900000) -sqrt r10.z, r3.z -add r9.w, r9.w, r10.z -add_sat r9.w, r9.w, l(-0.600000) -max r9.w, r3.z, r9.w -min r9.w, r9.w, l(0.990000) -add_sat r10.z, l(2.000000), -cb0[222].x -mul r10.z, r10.z, cb0[222].x -mul r10.x, r10.x, r10.z -mad r3.x, -r9.x, r3.x, l(1.000000) -mul r3.x, r3.x, r10.x -add r9.x, -r3.z, r9.w -mad r3.x, r3.x, r9.x, r3.z -add r3.x, -r3.x, l(1.000000) -mul_sat r3.z, r9.z, l(20.000000) -mad r9.x, r3.z, l(-2.000000), l(3.000000) -mul r3.z, r3.z, r3.z -mul r3.z, r3.z, r9.x -mad r3.z, r3.z, l(-0.900000), l(1.000000) -mul r9.x, r3.z, r3.x -add r9.y, r9.y, l(-1.000000) -mad r11.x, r1.z, r9.y, l(1.000000) -add r11.y, -r1.z, l(1.000000) -movc r9.yz, r8.wwww, r11.xxyx, l(0,1.000000,1.000000,0) -min r1.z, r9.x, r9.y -mad r3.x, r3.x, r3.z, -r1.z -mad r1.z, r1.w, r3.x, r1.z -add r2.z, -r1.z, r2.z -mad r11.z, r3.y, r2.z, r1.z -ld_indexable(texture2d)(float,float,float,float) r9.xyw, r0.xyzz, t26.xywz -min r1.z, r10.y, r9.z -add r2.z, -r1.z, r10.y -mad r1.z, r1.w, r2.z, r1.z -add r1.w, -r1.z, l(1.000000) -mad r1.z, r3.y, r1.w, r1.z -mul r3.xyz, r1.zzzz, r9.xywx -mul r10.xyz, r1.xxxx, r3.xyzx -mad r9.xyz, r9.xywx, r1.zzzz, -r10.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz -dp3 r2.z, r13.xyzx, r8.xyzx -max r10.x, r2.z, l(0.000000) -mul r3.y, r11.z, r11.z -mul r12.x, r10.x, r10.x -mul r12.z, r10.x, r12.x -mul r2.z, r3.y, r3.y -mul r3.z, r3.y, r2.z -mov r10.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r14.x, l(3.327070, 1.000000, 0.000000, 0.000000), r10.xyxx -dp2 r14.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r10.xzxx -mov r3.x, l(1.000000) -dp2 r8.w, r14.xyxx, r3.xyxx -mov r12.yw, l(0,9.044010,0,1.000000) -dp3 r14.x, l(3.596850, -1.367720, 1.000000, 0.000000), r12.xzwx -dp3 r14.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r12.xyzx -mov r15.x, l(5.565890) -mov r15.yz, r12.xxzx -dp3 r14.z, l(1.000000, 19.788601, -20.212299, 0.000000), r15.xyzx -dp3 r9.w, r14.xyzx, r3.xyzx -div r8.w, r8.w, r9.w -dp2 r14.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r10.xwxx -mov r12.x, l(1.296780) -mov r12.y, r10.x -dp2 r14.y, l(1.000000, -0.755907, 0.000000, 0.000000), r12.xyxx -dp2 r9.w, r14.xyxx, r3.xyxx -dp3 r14.x, l(2.923380, 59.418800, 1.000000, 0.000000), r12.yzwy -mov r12.xw, l(20.322500,0,0,121.563004) -dp3 r14.y, l(1.000000, -27.030199, 222.591995, 0.000000), r12.xyzx -dp3 r14.z, l(626.130005, 316.627014, 1.000000, 0.000000), r12.yzwy -dp3 r3.x, r14.xyzx, r3.xyzx -div r3.x, r9.w, r3.x -mad r10.yzw, r1.xxzw, r8.wwww, r3.xxxx -add r3.x, r3.x, r8.w -ld_indexable(texture2d)(float,float,float,float) r3.y, r0.xyzz, t6.zxyw -lt r0.z, l(0.001000), r3.y -if_nz r0.z - dp3 r0.z, -r8.xyzx, r13.xyzx - add r0.z, r0.z, r0.z - mad r12.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx - dp3 r0.z, -cb2[0].xyzx, r12.xyzx - mad r14.xyz, cb2[0].xyzx, r0.zzzz, r12.xyzx - lt r0.z, r0.z, cb2[4].z - dp3 r8.w, r14.xyzx, r14.xyzx - max r8.w, r8.w, l(0.0000610351562) - rsq r8.w, r8.w - mul r14.xyz, r8.wwww, r14.xyzx - mul r14.xyz, r14.xyzx, cb2[4].yyyy - mad r14.xyz, -cb2[0].xyzx, cb2[4].zzzz, r14.xyzx - dp3 r8.w, r14.xyzx, r14.xyzx - rsq r8.w, r8.w - mul r14.xyz, r8.wwww, r14.xyzx - movc r12.xyz, r0.zzzz, r14.xyzx, r12.xyzx - mad r6.xyz, r6.xyzx, r7.wwww, r12.xyzx - dp3 r0.z, r6.xyzx, r6.xyzx - max r0.z, r0.z, l(0.0000610351562) - rsq r0.z, r0.z - mul r6.xyz, r0.zzzz, r6.xyzx - dp3_sat r11.x, r12.xyzx, r13.xyzx - dp3_sat r0.z, r13.xyzx, r6.xyzx - min r11.y, r10.x, l(1.000000) - mad r7.w, r0.z, r2.z, -r0.z - mad r0.z, r7.w, r0.z, l(1.000000) - dp3_sat r6.x, r8.xyzx, r6.xyzx - add r6.x, -r6.x, l(1.000000) - mul r6.y, r6.x, r6.x - mul r6.y, r6.y, r6.y - mul r6.z, r6.x, r6.y - add r7.w, -r11.z, l(1.000000) - mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) - mad r8.w, r7.w, r8.w, l(1.049970) - mad r7.w, r7.w, r8.w, l(0.409255) - min r7.w, r7.w, l(0.999000) - add r8.w, -r7.w, l(1.000000) - add r14.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r14.xyz, r14.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx - mad r6.x, -r6.y, r6.x, l(1.000000) - mad r6.xyz, r1.xzwx, r6.xxxx, r6.zzzz - mul r0.z, r0.z, r0.z - div r0.z, r2.z, r0.z - mad r15.xy, -r11.yxyy, r2.zzzz, r11.yxyy - mad r15.xy, r15.xyxx, r11.yxyy, r2.zzzz - sqrt r15.xy, r15.xyxx - mul r15.xy, r11.xyxx, r15.xyxx - add r2.z, r15.y, r15.x - add r2.z, r2.z, l(0.000100) - div r2.z, l(0.500000), r2.z - mul r0.z, r0.z, r2.z - mul r6.xyz, r0.zzzz, r6.xyzx - min r6.xyz, r6.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r15.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r15.xyxx, t12.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r2.z, r15.zwzz, t12.yzxw, s1, l(0.000000) - mul r0.z, r0.z, r2.z - mul r0.z, r7.w, r0.z - div r0.z, r0.z, r8.w - mul r15.xyz, r14.xyzx, r14.xyzx - mul r15.xyz, r0.zzzz, r15.xyzx - mad r14.xyz, -r14.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r14.xyz, r15.xyzx, r14.xyzx - add r6.xyz, r6.xyzx, r14.xyzx - mul r6.xyz, r6.xyzx, cb2[4].xxxx - max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r6.xyz, r6.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - dp3_sat r0.z, r12.xyzx, r2.xywx - mul r12.xyz, r0.zzzz, r9.xyzx - mad r6.xyz, r6.xyzx, r11.xxxx, r12.xyzx - mul r6.xyz, r6.xyzx, cb2[1].xyzx - mov r3.z, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r3.yzyy, t7.xywz, s1, cb0[108].x - add r0.z, -r3.y, l(1.000000) - mad r11.xyw, r6.xyxz, r11.xyxw, -r6.xyxz - mad r6.xyz, r0.zzzz, r11.xywx, r6.xyzx - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t13.yzxw, s1, l(0.000000) - min r0.z, r0.z, l(1.000000) - mul r6.xyz, r0.zzzz, r6.xyzx -else - mov r6.xyz, l(0,0,0,0) -endif -ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -if_nz r3.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - dp3 r2.z, r2.xywx, r8.xyzx - max r2.z, r2.z, l(0.000000) - add r2.z, r0.z, r2.z - mad r3.y, r11.z, l(-16.000000), l(-1.000000) - exp r3.y, r3.y - log r2.z, |r2.z| - mul r2.z, r2.z, r3.y - exp r2.z, r2.z - add r2.z, r0.z, r2.z - add r2.z, r2.z, l(-1.000000) - mov_sat r11.xyw, r2.zzzz - mad r12.xyz, r9.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - mad r12.xyz, r9.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx - add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - mad r12.xyz, r9.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx - add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - max r12.xyz, r0.zzzz, r12.xyzx -else - mov r11.xyw, r1.yyyy - mov r12.xyz, r1.yyyy -endif -mad r14.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[212].x -mad r15.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx -dp2 r0.z, r15.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r14.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r14.xyzx -mad r15.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r15.xyz, r14.xzyx, -r15.xyzx -max r0.z, |r15.y|, |r15.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.y, |r15.z|, l(-208.000000) -mul_sat r1.y, r1.y, l(0.031250) -max r0.z, r0.z, r1.y -ne r1.y, l(0.000000), cb0[210].w -lt r2.z, r0.z, l(1.000000) -and r1.y, r1.y, r2.z -if_nz r1.y - mad r15.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r15.xyz, r14.xzyx, -r15.xyzx - max r1.y, |r15.y|, |r15.x| - add r1.y, r1.y, l(-29.000000) - mul_sat r1.y, r1.y, l(0.500000) - add r2.z, |r15.z|, l(-13.000000) - mul_sat r2.z, r2.z, l(0.500000) - max r1.y, r1.y, r2.z - lt r2.z, r1.y, l(1.000000) - if_nz r2.z - mad r15.xyz, r14.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r16.xyz, r15.xyzx, cb0[211].xyzx - round_ni r16.xyz, r16.xyzx - mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r16.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) - add r2.z, -r1.y, l(1.000000) - mul r3.y, l(0.500000), cb0[211].y - mad r7.w, -cb0[211].y, l(0.500000), l(1.000000) - max r3.y, r3.y, r15.y - min r3.y, r7.w, r3.y - mul r15.w, r3.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) - mad r3.y, r17.w, r2.z, r0.z - add r18.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r16.yyyy, r18.xyzx - mov r18.w, r16.y - mul r18.xyzw, r2.zzzz, r18.xyzw - add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r16.xxxx, r15.xyzx - mov r15.w, r16.x - mul r15.xyzw, r2.zzzz, r15.xyzw - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r16.wwww, r17.xyzx - mul r16.xyzw, r2.zzzz, r16.xyzw - else - mov r18.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r3.y, r0.z - endif - mad r17.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r17.xyz, r14.xzyx, -r17.xyzx - max r2.z, |r17.y|, |r17.x| - add r2.z, r2.z, l(-116.000000) - mul_sat r2.z, r2.z, l(0.125000) - add r7.w, |r17.z|, l(-52.000000) - mul_sat r7.w, r7.w, l(0.125000) - max r2.z, r2.z, r7.w - lt r7.w, r2.z, l(1.000000) - if_nz r7.w - mad r17.xyz, r14.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r19.xyz, r17.xyzx, cb0[211].xyzx - round_ni r19.xyz, r19.xyzx - mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r19.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r17.xyzx, t19.yzwx, s2, l(0.000000) - add r7.w, -r2.z, l(1.000000) - mul r1.y, r1.y, r7.w - mul r7.w, l(0.500000), cb0[211].y - mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) - max r7.w, r7.w, r17.y - min r7.w, r8.w, r7.w - mul r17.w, r7.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t20.xyzw, s1, l(0.000000) - mad r3.y, r20.w, r1.y, r3.y - add r21.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t20.xyzw, s1, l(0.000000) - mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r19.yyyy, r21.xyzx - mov r21.w, r19.y - mad r18.xyzw, r21.xyzw, r1.yyyy, r18.xyzw - add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t20.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r19.xxxx, r17.xyzx - mov r17.w, r19.x - mad r15.xyzw, r17.xyzw, r1.yyyy, r15.xyzw - mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r19.wwww, r17.xyzx - mad r16.xyzw, r19.xyzw, r1.yyyy, r16.xyzw - endif - lt r1.y, l(0.000000), r2.z - if_nz r1.y - mad r14.xyz, r14.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r14.xyzx, cb0[211].xyzx - mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r17.xyz, r17.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r17.xyzx - mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r14.xyz, r19.xyzx, r14.xyzx - min r14.xyz, r17.xyzx, r14.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r14.xyzx, t21.yzwx, s2, l(0.000000) - add r1.y, -r0.z, l(1.000000) - mul r1.y, r1.y, r2.z - max r2.z, r19.y, r14.y - min r2.z, r17.y, r2.z - mul r14.w, r2.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r14.xwzx, t22.xyzw, s1, l(0.000000) - add r19.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r20.yyyy, r19.xyzx - mov r19.w, r20.y - mad r18.xyzw, r19.xyzw, r1.yyyy, r18.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t22.xyzw, s1, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r20.xxxx, r14.xyzx - mov r14.w, r20.x - mad r15.xyzw, r14.xyzw, r1.yyyy, r15.xyzw - mad r14.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r14.xyzx - mad r16.xyzw, r20.xyzw, r1.yyyy, r16.xyzw - mad r3.y, r17.w, r1.y, r3.y - endif - mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) - add r14.x, -r0.z, r1.y - add r0.z, r0.z, r1.y - mul r14.y, r0.z, l(0.500000) -else - mov r18.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r14.xy, l(0,1.000000,0,0) -endif -mul r17.xyzw, r14.yxyy, cb0[213].ywzx -mad r17.y, r17.y, l(0.500000), r17.x -mul r14.zw, r14.yyyx, cb0[213].wwwy -mad r17.x, r14.w, l(0.375000), r14.z -add r16.xyzw, r16.xyzw, r17.wyzx -mul r17.xyzw, r14.yxyy, cb0[214].ywzx -mad r17.y, r17.y, l(0.500000), r17.x -mul r14.zw, r14.yyyx, cb0[214].wwwy -mad r17.x, r14.w, l(0.375000), r14.z -add r15.xyzw, r15.xyzw, r17.wyzx -mul r17.xyzw, r14.yxyy, cb0[215].ywzx -mad r17.y, r17.y, l(0.500000), r17.x -mul r14.xy, r14.yxyy, cb0[215].wyww -mad r17.x, r14.y, l(0.375000), r14.x -add r14.xyzw, r17.wyzx, r18.xyzw -ge r17.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r17.y, r17.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r4.zwzz, t16.xyzw, s1, l(0.000000) - lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| - or r4.zw, r18.zzzw, r18.xxxy - or r0.z, r4.w, r4.z - if_nz r0.z - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mov r4.z, l(1.000000) - mov r4.w, r0.z - mov r1.y, l(0) - loop - ge r2.z, l(4.600000), r4.w - breakc_nz r2.z - iadd r2.z, r1.y, l(1) - mul r18.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - mov r4.zw, r18.xxxy - mov r1.y, r2.z - continue - endloop - mul r17.xyzw, r4.zzzz, r17.xyzw - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb4[3].x, cb4[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r18.x, r0.z, l(0.00390625000) - mov r18.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r18.xyxx, t15.zwxy, s1, l(0.000000) - mad r4.zw, r4.zzzw, cb4[2].xxxy, cb4[2].zzzw - mul r18.x, r4.z, l(3.54490781) - mul r18.yzw, r4.wwww, r17.yyzw - mul r0.z, r17.x, l(0.406976730) - exp r0.z, r0.z - mul r17.xyzw, r0.zzzz, r18.xyzw - mov r18.xyzw, r17.xyzw - mov r0.z, l(0) - loop - uge r2.z, r0.z, r1.y - breakc_nz r2.z - mul r19.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r2.z, r19.xyzw, r18.xyzw - dp2 r3.y, r19.yxyy, r18.xyxx - dp2 r4.z, r19.zxzz, r18.xzxx - dp2 r4.w, r19.wxww, r18.xwxx - iadd r7.w, r0.z, l(1) - mov r18.x, r2.z - mov r18.y, r3.y - mov r18.zw, r4.zzzw - mov r0.z, r7.w - continue - endloop - mul r17.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r18.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r17.xyzw, r18.xyzw - dp2 r1.y, r17.yxyy, r18.xyxx - dp2 r2.z, r17.zxzz, r18.xzxx - dp2 r3.y, r17.wxww, r18.xwxx - mul r18.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r4.z, r17.xyzw, r18.xyzw - dp2 r4.w, r17.yxyy, r18.xyxx - dp2 r7.w, r17.zxzz, r18.xzxx - dp2 r8.w, r17.wxww, r18.xwxx - mul r18.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r9.w, r17.xyzw, r18.xyzw - dp2 r10.x, r17.yxyy, r18.xyxx - dp2 r12.w, r17.zxzz, r18.xzxx - dp2 r17.x, r17.wxww, r18.xwxx - mul r16.w, r0.z, l(0.886226952) - mul r16.x, r3.y, l(-1.02332675) - mul r16.y, r1.y, l(-1.02332675) - mul r16.z, r2.z, l(1.02332675) - mul r15.x, r8.w, l(-1.02332675) - mul r15.yw, r4.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) - mul r15.z, r7.w, l(1.02332675) - mul r14.w, r9.w, l(0.886226952) - mul r14.x, r17.x, l(-1.02332675) - mul r14.y, r10.x, l(-1.02332675) - mul r14.z, r12.w, l(1.02332675) - endif -endif -dp3 r0.z, r16.xyzx, r2.xywx -add r0.z, r16.w, r0.z -max r16.x, r0.z, l(0.000000) -dp3 r0.z, r15.xyzx, r2.xywx -add r0.z, r15.w, r0.z -max r16.y, r0.z, l(0.000000) -dp3 r0.z, r14.xyzx, r2.xywx -add r0.z, r14.w, r0.z -max r16.z, r0.z, l(0.000000) -dp3 r0.z, -r8.xyzx, r13.xyzx -add r0.z, r0.z, r0.z -mad r2.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx -add r0.z, l(-1.000000), cb0[113].x -max r1.y, r11.z, l(0.001000) -log r1.y, r1.y -mad r1.y, -r1.y, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.y -mul r4.zw, r4.xxxy, cb1[0].wwww -round_ni r4.zw, r4.zzzw -add r1.y, |r3.w|, -cb1[2].y -round_ni r1.y, r1.y -add r2.w, l(-1.000000), cb1[1].x -max r3.y, r1.y, l(0.000000) -min r2.w, r2.w, r3.y -ge r1.y, r2.w, r1.y -mad r3.y, r4.w, cb1[0].x, r4.z -ftoi r3.y, r3.y -iadd r3.y, r3.y, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.y, r3.y, l(0), t0.xxxx -ftoi r2.w, r2.w -iadd r2.w, r2.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.w, r2.w, l(0), t0.xxxx -and r2.w, r2.w, r3.y -and r1.y, r1.y, r2.w -mul r14.xyz, r16.xyzx, cb0[111].xxxx -dp3 r2.w, r14.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r5.w, l(1.000000) -mov r13.w, l(1.000000) -mov r14.xyz, l(0,0,0,0) -mov r3.y, l(1.000000) -mov r4.z, r1.y -mov r4.w, l(0) -loop - lt r7.w, l(0.010000), r3.y - ine r8.w, r4.z, l(0) - and r8.w, r7.w, r8.w - if_nz r8.w - firstbit_lo r8.w, r4.z - ishl r9.w, l(1), r8.w - xor r4.z, r4.z, r9.w - ishl r8.w, r8.w, l(3) - dp4 r15.x, cb1[r8.w + 6].xyzw, r5.xyzw - dp4 r15.y, cb1[r8.w + 7].xyzw, r5.xyzw - dp4 r15.z, cb1[r8.w + 8].xyzw, r5.xyzw - ge r17.xyz, cb1[r8.w + 5].xyzx, |r15.xyzx| - and r9.w, r17.y, r17.x - and r9.w, r17.z, r9.w - if_nz r9.w - mul r9.w, l(0.100000), cb1[r8.w + 5].x - mul r17.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r17.xy, r17.xyxx, r17.xyxx - add r18.xyz, -|r15.xyzx|, cb1[r8.w + 5].xyzx - mul r18.xyz, r18.xyzx, cb1[r8.w + 9].xyzx - eq r10.x, l(1.000000), cb1[r8.w + 10].x - if_nz r10.x - dp3 r19.x, cb1[r8.w + 6].xyzx, r2.xyzx - dp3 r19.y, cb1[r8.w + 7].xyzx, r2.xyzx - dp3 r19.z, cb1[r8.w + 8].xyzx, r2.xyzx - add r20.xyz, -r15.xyzx, cb1[r8.w + 5].xyzx - div r20.xyz, r20.xyzx, r19.xyzx - add r21.xyz, -r15.xyzx, -cb1[r8.w + 5].xyzx - div r21.xyz, r21.xyzx, r19.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx - min r10.x, r20.y, r20.x - min r10.x, r20.z, r10.x - mad r15.xyz, r19.xyzx, r10.xxxx, r15.xyzx - else - mov r15.xyz, r2.xyzx - endif - dp3 r10.x, r15.xyzx, r15.xyzx - rsq r10.x, r10.x - mul r15.xyz, r10.xxxx, r15.xyzx - lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx - lt r20.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r19.xyz, -r19.xyzx, r20.xyzx - itof r19.xyz, r19.xyzx - dp3 r10.x, r15.xyzx, r19.xyzx - div r15.xyz, r15.xyzx, r10.xxxx - lt r10.x, r15.z, l(0.000000) - add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r15.zw, r15.zzzw, r19.xxxy - movc r15.xy, r10.xxxx, r15.zwzz, r15.xyxx - dp4 r10.x, cb1[r8.w + 4].xyzw, r13.xyzw - max r10.x, r10.x, l(0.000000) - max r10.x, r10.x, l(0.000100) - min r11.z, r18.z, r18.y - min r11.z, r11.z, r18.x - add r12.w, r17.y, r17.x - mad r12.w, r17.z, r17.z, r12.w - mad r9.w, r9.w, r9.w, -r12.w - mul r9.w, r9.w, cb1[r8.w + 9].x - mul r9.w, r9.w, cb1[r8.w + 9].x - add r12.w, l(1.000000), -cb1[r8.w + 10].y - mul r9.w, r9.w, r12.w - mul r9.w, r9.w, l(100.000000) - mad_sat r9.w, r11.z, cb1[r8.w + 10].y, r9.w - mul r11.z, r9.w, cb1[r8.w + 10].w - mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r15.xy, r15.xyxx, cb1[1].wwww, cb1[2].wwww - mov r15.z, cb1[r8.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z - mul r15.xyz, r15.xyzx, cb1[r8.w + 9].wwww - div r12.w, r2.w, r10.x - min r12.w, |r12.w|, l(1.000000) - mad r12.w, r12.w, l(2.000000), r2.w - add r10.x, r10.x, l(2.000000) - div r10.x, r12.w, r10.x - add r10.x, r10.x, l(-1.000000) - mad r10.x, r10.x, cb0[112].w, l(1.000000) - mul r15.xyz, r10.xxxx, r15.xyzx - mul r15.xyz, r11.zzzz, r15.xyzx - mad r14.xyz, r15.xyzx, r3.yyyy, r14.xyzx - mad r8.w, -r9.w, cb1[r8.w + 10].w, l(1.000000) - mul r3.y, r3.y, r8.w - endif - mov r4.w, l(-1) - continue - else - mov r4.w, r7.w - break - endif - mov r4.w, r7.w -endloop -if_nz r4.w - dp3 r1.y, r2.xyzx, r2.xyzx - rsq r1.y, r1.y - mul r2.xyz, r1.yyyy, r2.xyzx - lt r5.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r2.xxyz - lt r15.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r5.xzw, -r5.xxzw, r15.xxyz - itof r5.xzw, r5.xxzw - dp3 r1.y, r2.xyzx, r5.xzwx - div r2.xyz, r2.xyzx, r1.yyyy - lt r1.y, r2.z, l(0.000000) - add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r4.zw, r4.zzzw, r5.xxxz - movc r2.xy, r1.yyyy, r4.zwzz, r2.xyxx - mov r13.w, l(1.000000) - dp4 r1.y, cb1[3].xyzw, r13.xyzw - max r1.y, r1.y, l(0.000000) - max r1.y, r1.y, l(0.000100) - mad r2.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r2.xy, r2.xyxx, cb1[1].wwww, cb1[2].wwww - mov r2.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r2.xyz, r2.xyzx, t5.xyzw, s3, r0.z - div r0.z, r2.w, r1.y - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r2.w - add r1.y, r1.y, l(2.000000) - div r0.z, r0.z, r1.y - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r2.xyz, r0.zzzz, r2.xyzx - mad r14.xyz, r2.xyzx, r3.yyyy, r14.xyzx -endif -mul r2.xyz, r14.xyzx, cb0[112].zzzz -mul r2.xyz, r2.xyzx, cb0[111].yyyy -if_nz r3.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x - add r1.y, -r0.z, l(1.000000) - mul r13.xyz, r1.yyyy, r2.xyzx - mad r2.xyz, r5.xzwx, r0.zzzz, r13.xyzx -endif -mul r5.xzw, r9.xxyz, r16.xxyz -mul r5.xzw, r5.xxzw, cb0[111].xxxx -add r0.z, -r3.x, l(1.000000) -div r0.z, r0.z, r3.x -mul r1.xyz, r0.zzzz, r1.xzwx -mad r1.xyz, r1.xyzx, r10.yzwy, r10.yzwy -mul r1.xyz, r1.xyzx, r2.xyzx -mul r1.xyz, r11.xywx, r1.xyzx -mad r1.xyz, r5.xzwx, r12.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r6.xyzx -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r6.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r5.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xyz, r0.zzzz, cb0[155].xyzx -mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r2.xyz, r2.xyzx -dp3 r0.z, -r8.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.w, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.w -lt r2.w, l(0.000000), cb0[163].z -if_nz r2.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r8.xyzx, -r7.xyzx - add r2.w, r5.y, -cb0[44].y - lt r3.z, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.z - mul r0.x, r0.x, cb0[163].w - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.w - mul r4.z, r0.x, r3.z - mad r4.w, r4.z, r2.w, cb0[44].y - mad r2.w, -r4.z, r2.w, r2.w - mul r4.z, r2.w, cb0[159].z - max r4.z, r4.z, l(-127.000000) - mul r2.w, r2.w, cb0[162].x - max r2.w, r2.w, l(-127.000000) - add r5.x, r4.w, -cb0[159].x - mul r5.x, r5.x, cb0[159].z - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[159].y - lt r5.z, l(5.960464478E-08), |r4.z| - exp r5.w, -r4.z - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r4.z - mad r4.z, -r4.z, l(0.240226507), l(0.693147182) - movc r4.z, r5.z, r5.w, r4.z - add r4.w, r4.w, -cb0[162].z - mul r4.w, r4.w, cb0[162].x - max r4.w, r4.w, l(-127.000000) - exp r4.w, -r4.w - mul r4.w, r4.w, cb0[162].y - lt r5.z, l(5.960464478E-08), |r2.w| - exp r5.w, -r2.w - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r2.w - mad r2.w, -r2.w, l(0.240226507), l(0.693147182) - movc r2.w, r5.z, r5.w, r2.w - mul r2.w, r2.w, r4.w - mad r2.w, r5.x, r4.z, r2.w - mad r0.x, -r0.x, r3.z, l(1.000000) - mul r0.x, r6.w, r0.x - mul r0.x, r0.x, r2.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r4.zw, r6.wwww, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r4.z - add r0.x, r4.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r4.xxxy - mul r3.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r3.w|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r3.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r3.xyzx, t14.xyzw, s1, l(0.000000) - add r0.y, |r3.w|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r3.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r0.x, r0.x, r3.w -else - add r0.y, r5.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.w, cb0[44].y, -cb0[159].x - mul r2.w, r2.w, cb0[159].z - max r2.w, r2.w, l(-127.000000) - exp r2.w, -r2.w - mul r2.w, r2.w, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.w, r0.w, r0.y - mul r0.y, r6.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r6.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r3.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r2.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.w, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r2.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx -mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx -dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xD88CD7C9.cso b/src/games/endfield/deferred-lighting/0xD88CD7C9.cso index 2b05e4aae3f044b291692604a5cc3566c9ad5384..8222887ace8591107411c08f9708d80c718169ff 100644 GIT binary patch delta 203 zcmdmTmT}8DMk$vFC+AKl=9|CYX~x~EDdD_2Gc=Nsfq}s!eWKJN&XP0+h5#UM?!=?P zjKZ5G87E7snlmtPIWY(@umHua8Wb3KfwT}1GdeIZ{09Opklf~#QrDSefl7Hd0l8d2 z>2LiArEYvcvB?XWMWq|;Ef^Tsi-2m_fNI>Bpfoc`{-KEQ<_WSd47nK?9PB}+GcYu4 XZuWmD$|$rsHPxSyLlkJK9S{QmjvXx7 delta 90 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 u5MOZCNi4a>)_t8559fVSaP%BL>JcxxHtloFJr1 0.5 + lt r37.z, l(0.500000), r37.y + if_nz r37.z + add r37.w, r37.y, l(-0.500000) + mul r37.w, r37.w, l(-0.666667) + exp r37.w, r37.w + add r37.w, -r37.w, l(1.000000) + mad r37.w, r37.w, l(1.500000), l(0.500000) + max r38.x, r37.y, l(0.001000) + div r38.x, r37.w, r38.x + mul r10.xyz, r10.xyzx, r38.xxxx + endif +endif mov o0.xyzw, r10.xyzw mov o1.w, l(0) ret diff --git a/src/games/endfield/glass/0x41AF9F2B.cso b/src/games/endfield/glass/0x41AF9F2B.cso new file mode 100644 index 0000000000000000000000000000000000000000..ff5f914aeaec86ed4cb3bbdafa5af7a94355ceb9 GIT binary patch literal 55588 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/glass/0x41AF9F2B.ps_5_0.asm b/src/games/endfield/glass/0x41AF9F2B.ps_5_0.asm new file mode 100644 index 0000000000..c2183dfbf0 --- /dev/null +++ b/src/games/endfield/glass/0x41AF9F2B.ps_5_0.asm @@ -0,0 +1,1805 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Feb 6 19:58:05 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xyz +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 zw 1 NONE float zw +// TEXCOORD 2 xyz 2 NONE float xyz +// TEXCOORD 3 xyzw 3 NONE float xyzw +// TEXCOORD 4 xyzw 4 NONE float x +// TEXCOORD 5 xyz 5 NONE float xyz +// TEXCOORD 6 xyz 6 NONE float xyz +// TEXCOORD 7 x 7 NONE uint x +// SV_IsFrontFace 0 x 8 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[244], immediateIndexed +dcl_constantbuffer CB1[4085], dynamicIndexed +dcl_constantbuffer CB2[24], immediateIndexed +dcl_constantbuffer CB3[259], dynamicIndexed +dcl_constantbuffer CB4[3], immediateIndexed +dcl_constantbuffer CB5[2054], dynamicIndexed +dcl_constantbuffer CB6[715], dynamicIndexed +dcl_constantbuffer CB7[160], dynamicIndexed +dcl_constantbuffer CB13[15], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_sampler s7, mode_default +dcl_sampler s8, mode_default +dcl_sampler s9, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2darray (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2d (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_input_ps_siv linear noperspective v0.xyz, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v1.zw +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyzw +dcl_input_ps linear v4.x +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps constant v7.x +dcl_input_ps_sgv constant v8.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 40 +mul r0.xy, v0.xyxx, cb0[82].zwzz +mad r0.zw, r0.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +mul r1.xyzw, -r0.wwww, cb0[25].xyzw +mad r1.xyzw, cb0[24].xyzw, r0.zzzz, r1.xyzw +mad r1.xyzw, cb0[26].xyzw, v0.zzzz, r1.xyzw +add r1.xyzw, r1.xyzw, cb0[27].xyzw +div r1.xyz, r1.xyzx, r1.wwww +mul r0.z, r1.y, cb0[1].z +mad r0.z, cb0[0].z, r1.x, r0.z +mad r0.z, cb0[2].z, r1.z, r0.z +add r0.z, r0.z, cb0[3].z +mov r2.z, |r0.z| +lt r0.z, l(0.000000), v3.w +movc r0.z, r0.z, l(1.000000), l(-1.000000) +eq r0.w, l(0.000000), cb0[86].w +add r3.xyz, -r1.xyzx, cb0[44].xyzx +mov r4.x, cb0[0].z +mov r4.y, cb0[1].z +mov r4.z, cb0[2].z +movc r3.xyz, r0.wwww, r3.xyzx, r4.xyzx +dp3 r0.w, r3.xyzx, r3.xyzx +max r2.w, r0.w, l(9.999999939E-09) +rsq r2.w, r2.w +mul r5.xyz, r2.wwww, r3.xyzx +mul r0.w, r0.w, r2.w +add r6.xy, -v1.xyxx, v1.zwzz +mad r6.zw, cb2[3].xxxx, r6.xxxy, v1.xxxy +mad r6.zw, r6.zzzw, cb2[12].xxxy, cb2[12].zzzw +mad r6.xy, cb2[2].wwww, r6.xyxx, v1.xyxx +mad r6.xy, r6.xyxx, cb2[11].xyxx, cb2[11].zwzz +sample_b_indexable(texture2d)(float,float,float,float) r7.xyzw, r6.xyxx, t3.xyzw, s5, cb0[108].x +add r3.w, cb0[108].x, cb2[3].y +sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r6.zwzz, t4.xywz, s6, r3.w +mul r8.x, r8.x, r8.z +mad r6.xy, r8.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +mul r8.xy, r6.xyxx, cb2[0].xxxx +sample_b_indexable(texture2d)(float,float,float,float) r9.xyz, r6.zwzz, t5.xyzw, s7, cb0[108].x +mul r7.xyzw, r7.xyzw, cb2[8].xyzw +mul_sat r7.xyz, r7.xyzx, cb2[4].zzzz +add r10.xyz, -r7.xyzx, cb2[8].xyzx +mad r7.xyz, cb2[4].xxxx, r10.xyzx, r7.xyzx +mad r3.w, r7.w, v4.x, -r7.w +mad r10.w, cb2[23].x, r3.w, r7.w +add r3.w, -cb2[0].z, cb2[0].w +mad r11.w, r9.y, r3.w, cb2[0].z +add_sat r3.w, l(-1.000000), cb2[3].w +add r4.w, -r9.x, cb2[4].y +mad r3.w, r3.w, r4.w, r9.x +mul r9.xyw, v2.zxzy, v3.yzyx +mad r9.xyw, v2.yzyx, v3.zxzy, -r9.xyxw +mul r9.xyw, r0.zzzz, r9.xyxw +mul r8.yzw, r8.yyyy, r9.xxyw +mad r8.xyz, v3.xyzx, r8.xxxx, r8.yzwy +dp2 r0.z, r6.xyxx, r6.xyxx +min r0.z, r0.z, l(1.000000) +add r0.z, -r0.z, l(1.000000) +sqrt r0.z, r0.z +max r0.z, r0.z, l(1.000000017E-16) +lt r4.w, l(0.000000), cb2[1].w +movc r4.w, r4.w, l(-1.000000), l(1.000000) +movc r4.w, v8.x, l(1.000000), r4.w +mul r0.z, r0.z, r4.w +mad r6.xyz, v2.xyzx, r0.zzzz, r8.xyzx +dp3 r0.z, r6.xyzx, r6.xyzx +rsq r0.z, r0.z +mul r6.xyz, r0.zzzz, r6.xyzx +dp3 r0.z, r6.xyzx, r5.xyzx +dp3 r4.w, -r5.xyzx, r6.xyzx +mul r5.w, cb2[19].z, cb2[19].z +mad r7.w, -r4.w, r4.w, l(1.000000) +mad r5.w, -r5.w, r7.w, l(1.000000) +sqrt r7.w, r5.w +mad r7.w, cb2[19].z, r4.w, r7.w +ge r5.w, r5.w, l(0.000000) +mul r8.xyz, r6.xyzx, r7.wwww +mad r8.xyz, cb2[19].zzzz, -r5.xyzx, -r8.xyzx +and r8.xyz, r5.wwww, r8.xyzx +mul r5.w, r0.z, v0.z +max r5.w, r5.w, l(0.500000) +div r5.w, cb2[19].w, r5.w +add r5.w, r5.w, -cb2[19].w +mad r5.w, cb2[20].x, r5.w, cb2[19].w +mul r8.xyz, r5.wwww, r8.xyzx +mul r8.yw, r8.yyyy, cb0[1].xxxy +mad r8.xy, cb0[0].xyxx, r8.xxxx, r8.ywyy +mad r8.xy, cb0[2].xyxx, r8.zzzz, r8.xyxx +mad r8.zw, v1.xxxy, cb2[22].xxxy, cb2[22].zzzw +sample_b_indexable(texture2d)(float,float,float,float) r8.zw, r8.zwzz, t7.zwxy, s8, cb0[108].x +mad r8.zw, r8.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +mad r8.zw, r8.zzzw, cb2[19].yyyy, -r8.xxxy +mad r8.xy, cb2[19].xxxx, r8.zwzz, r8.xyxx +mad r8.zw, v0.xxxy, cb0[82].zzzw, r8.xxxy +mul r8.xy, r8.xyxx, l(0.250000, 0.250000, 0.000000, 0.000000) +mad r9.xy, v0.xyxx, cb0[82].zwzz, r8.xyxx +sample_b_indexable(texture2d)(float,float,float,float) r5.w, r8.zwzz, t1.yzwx, s0, cb0[108].x +sample_b_indexable(texture2d)(float,float,float,float) r7.w, r9.xyxx, t1.yzwx, s0, cb0[108].x +mad r7.w, cb0[84].z, r7.w, cb0[84].w +div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w +ge r7.w, r7.w, r2.z +and r7.w, r7.w, l(0x3f800000) +mad r0.xy, r7.wwww, r8.xyxx, r0.xyxx +mad r5.w, cb0[84].z, r5.w, cb0[84].w +div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w +ge r5.w, r5.w, r2.z +and r5.w, r5.w, l(0x3f800000) +add r8.xy, -r0.xyxx, r8.zwzz +mad r0.xy, r5.wwww, r8.xyxx, r0.xyxx +sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r0.xyxx, t6.xyzw, s9, cb0[108].x +max r0.x, v5.z, l(9.999999939E-09) +div r0.xy, v5.xyxx, r0.xxxx +max r5.w, v6.z, l(9.999999939E-09) +div r9.xy, v6.xyxx, r5.wwww +add r12.xy, r0.xyxx, -r9.xyxx +mul r0.x, l(0.080000), cb2[0].y +mad r9.xyw, -r7.xyxz, r3.wwww, r7.xyxz +mad r0.x, -r0.x, r3.w, r0.x +mad r7.xyz, r7.xyzx, r3.wwww, r0.xxxx +mad r13.xyzw, r11.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r0.x, r13.x, r13.x +max r0.y, r0.z, l(0.000000) +mul r0.z, r0.y, l(-9.280000) +exp r0.z, r0.z +min r0.x, r0.z, r0.x +mad r0.x, r0.x, r13.x, r13.y +mad r0.xz, r0.xxxx, l(-1.040000, 0.000000, 1.040000, 0.000000), r13.zzwz +eq r3.w, l(1.000000), cb0[113].y +mul r13.xyzw, r1.yyyy, cb0[241].xyzw +mad r13.xyzw, cb0[240].xyzw, r1.xxxx, r13.xyzw +mad r13.xyzw, cb0[242].xyzw, r1.zzzz, r13.xyzw +add r13.xyzw, r13.xyzw, cb0[243].xyzw +div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r13.w +mul r13.xyz, r13.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) +mul r13.xyz, r5.wwww, r13.xyzx +mad_sat r13.xy, r13.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +mul r13.xy, r13.xyxx, cb0[82].xyxx +ftou r14.xy, r13.xyxx +mad r5.w, cb0[84].z, r13.z, cb0[84].w +div r14.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w +ftou r2.xy, v0.xyxx +movc r13.xyz, r3.wwww, r14.xyzx, r2.xyzx +mad r2.xyz, r6.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r1.xyzx +mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r14.xyz, r2.xzyx, -r14.xyzx +max r3.w, |r14.y|, |r14.x| +add r3.w, r3.w, l(-464.000000) +mul_sat r3.w, r3.w, l(0.031250) +add r5.w, |r14.z|, l(-208.000000) +mul_sat r5.w, r5.w, l(0.031250) +max r3.w, r3.w, r5.w +ne r5.w, l(0.000000), cb0[210].w +lt r7.w, r3.w, l(1.000000) +and r5.w, r5.w, r7.w +if_nz r5.w + mad r14.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r14.xyz, r2.xzyx, -r14.xyzx + max r5.w, |r14.y|, |r14.x| + add r5.w, r5.w, l(-29.000000) + mul_sat r5.w, r5.w, l(0.500000) + add r7.w, |r14.z|, l(-13.000000) + mul_sat r7.w, r7.w, l(0.500000) + max r5.w, r5.w, r7.w + lt r7.w, r5.w, l(1.000000) + if_nz r7.w + mad r14.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r15.xyz, r14.xyzx, cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r14.xyzx, t14.xyzw, s2, l(0.000000) + add r7.w, -r5.w, l(1.000000) + mul r8.w, l(0.500000), cb0[211].y + mad r12.w, -cb0[211].y, l(0.500000), l(1.000000) + max r8.w, r8.w, r14.y + min r8.w, r12.w, r8.w + mul r14.w, r8.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t15.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r15.xxxx, r16.xyzx + add r16.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t15.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r15.yyyy, r16.xyzx + add r14.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t15.xyzw, s1, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r15.zzzz, r14.xyzx + mad r8.w, r16.w, r7.w, r3.w + mov r14.w, r15.z + mul r14.xyzw, r7.wwww, r14.xyzw + mov r18.w, r15.y + mul r16.xyzw, r7.wwww, r18.xyzw + mov r17.w, r15.x + mul r15.xyzw, r7.wwww, r17.xyzw + else + mov r14.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r8.w, r3.w + endif + mad r17.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r17.xyz, r2.xzyx, -r17.xyzx + max r7.w, |r17.y|, |r17.x| + add r7.w, r7.w, l(-116.000000) + mul_sat r7.w, r7.w, l(0.125000) + add r12.w, |r17.z|, l(-52.000000) + mul_sat r12.w, r12.w, l(0.125000) + max r7.w, r7.w, r12.w + lt r12.w, r7.w, l(1.000000) + if_nz r12.w + mad r17.xyz, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r17.xyzx, t16.xyzw, s2, l(0.000000) + add r12.w, -r7.w, l(1.000000) + mul r5.w, r5.w, r12.w + mul r12.w, l(0.500000), cb0[211].y + mad r18.w, -cb0[211].y, l(0.500000), l(1.000000) + max r12.w, r12.w, r17.y + min r12.w, r18.w, r12.w + mul r17.w, r12.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t17.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.xxxx, r19.xyzx + add r19.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t17.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r18.yyyy, r19.xyzx + add r17.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t17.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.zzzz, r17.xyzx + mad r8.w, r19.w, r5.w, r8.w + mov r17.w, r18.z + mad r14.xyzw, r17.xyzw, r5.wwww, r14.xyzw + mov r21.w, r18.y + mad r16.xyzw, r21.xyzw, r5.wwww, r16.xyzw + mov r20.w, r18.x + mad r15.xyzw, r20.xyzw, r5.wwww, r15.xyzw + endif + lt r5.w, l(0.000000), r7.w + if_nz r5.w + mad r2.xyz, r2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r2.xyzx, cb0[211].xyzx + mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r2.xyz, r2.xyzx, cb0[211].xyzx, -r17.xyzx + mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r2.xyz, r18.xyzx, r2.xyzx + min r19.xyz, r17.xyzx, r2.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r19.xyzx, t18.yzwx, s2, l(0.000000) + add r2.x, -r3.w, l(1.000000) + mul r2.x, r2.x, r7.w + max r2.y, r18.y, r19.y + min r2.y, r17.y, r2.y + mul r19.w, r2.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r19.xwzx, t19.xyzw, s1, l(0.000000) + add r18.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t19.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.yyyy, r18.xyzx + mov r18.w, r20.y + mad r14.xyzw, r18.xyzw, r2.xxxx, r14.xyzw + add r18.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t19.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.xxxx, r18.xyzx + mov r18.w, r20.x + mad r16.xyzw, r18.xyzw, r2.xxxx, r16.xyzw + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r17.xyzx + mad r15.xyzw, r20.xyzw, r2.xxxx, r15.xyzw + mad r8.w, r17.w, r2.x, r8.w + endif + mad_sat r2.x, r8.w, l(2.000000), l(-1.000000) + add r17.x, -r3.w, r2.x + add r2.x, r3.w, r2.x + mul r17.y, r2.x, l(0.500000) +else + mov r14.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r17.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r17.yyyx, cb0[213].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r2.xy, r17.yxyy, cb0[213].wyww +mad r18.w, r2.y, l(0.375000), r2.x +add r15.xyzw, r15.xyzw, r18.xyzw +mul r18.xyzw, r17.yyyx, cb0[214].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r2.xy, r17.yxyy, cb0[214].wyww +mad r18.w, r2.y, l(0.375000), r2.x +add r16.xyzw, r16.xyzw, r18.xyzw +mul r18.xyzw, r17.yyyx, cb0[215].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r2.xy, r17.yxyy, cb0[215].wyww +mad r18.w, r2.y, l(0.375000), r2.x +add r14.xyzw, r14.xyzw, r18.xyzw +dp3 r2.x, r15.xyzx, r6.xyzx +add r2.x, r15.w, r2.x +max r2.x, r2.x, l(0.000000) +dp3 r3.w, r16.xyzx, r6.xyzx +add r3.w, r16.w, r3.w +max r2.y, r3.w, l(0.000000) +dp3 r3.w, r14.xyzx, r6.xyzx +add r3.w, r14.w, r3.w +max r2.z, r3.w, l(0.000000) +add r3.w, r4.w, r4.w +mad r14.xyz, r6.xyzx, -r3.wwww, -r5.xyzx +add r3.w, l(-1.000000), cb0[113].x +max r4.w, r11.w, l(0.001000) +log r4.w, r4.w +mad r4.w, -r4.w, l(1.200000), l(1.000000) +add r3.w, r3.w, -r4.w +utof r15.xy, r13.xyxx +mul r15.zw, r15.xxxy, cb3[0].wwww +round_ni r15.zw, r15.zzzw +add r4.w, r13.z, -cb3[2].y +round_ni r4.w, r4.w +add r5.w, l(-1.000000), cb3[1].x +max r7.w, r4.w, l(0.000000) +min r5.w, r5.w, r7.w +ge r4.w, r5.w, r4.w +mad r7.w, r15.w, cb3[0].x, r15.z +ftoi r7.w, r7.w +iadd r7.w, r7.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r7.w, r7.w, l(0), t0.xxxx +ftoi r5.w, r5.w +iadd r5.w, r5.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.w, r5.w, l(0), t0.xxxx +and r5.w, r5.w, r7.w +and r4.w, r4.w, r5.w +mul r16.xyz, r2.xyzx, cb0[111].xxxx +dp3 r5.w, r16.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r1.w, l(1.000000) +mov r6.w, l(1.000000) +mov r16.xyz, l(0,0,0,0) +mov r7.w, l(1.000000) +mov r8.w, r4.w +mov r12.w, l(0) +loop + lt r14.w, l(0.010000), r7.w + ine r15.z, r8.w, l(0) + and r15.z, r14.w, r15.z + if_nz r15.z + firstbit_lo r15.z, r8.w + ishl r15.w, l(1), r15.z + xor r8.w, r8.w, r15.w + ishl r15.z, r15.z, l(3) + dp4 r17.x, cb3[r15.z + 6].xyzw, r1.xyzw + dp4 r17.y, cb3[r15.z + 7].xyzw, r1.xyzw + dp4 r17.z, cb3[r15.z + 8].xyzw, r1.xyzw + ge r18.xyz, cb3[r15.z + 5].xyzx, |r17.xyzx| + and r15.w, r18.y, r18.x + and r15.w, r18.z, r15.w + if_nz r15.w + mul r15.w, l(0.100000), cb3[r15.z + 5].x + mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r17.xyzx|, cb3[r15.z + 5].xyzx + mul r19.xyz, r19.xyzx, cb3[r15.z + 9].xyzx + eq r16.w, l(1.000000), cb3[r15.z + 10].x + if_nz r16.w + dp3 r20.x, cb3[r15.z + 6].xyzx, r14.xyzx + dp3 r20.y, cb3[r15.z + 7].xyzx, r14.xyzx + dp3 r20.z, cb3[r15.z + 8].xyzx, r14.xyzx + add r21.xyz, -r17.xyzx, cb3[r15.z + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r17.xyzx, -cb3[r15.z + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r16.w, r21.y, r21.x + min r16.w, r21.z, r16.w + mad r17.xyz, r20.xyzx, r16.wwww, r17.xyzx + else + mov r17.xyz, r14.xyzx + endif + dp3 r16.w, r17.xyzx, r17.xyzx + rsq r16.w, r16.w + mul r17.xyz, r16.wwww, r17.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r21.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r16.w, r17.xyzx, r20.xyzx + div r17.xyz, r17.xyzx, r16.wwww + lt r16.w, r17.z, l(0.000000) + add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r17.zw, r17.zzzw, r20.xxxy + movc r17.xy, r16.wwww, r17.zwzz, r17.xyxx + dp4 r16.w, cb3[r15.z + 4].xyzw, r6.xyzw + max r16.w, r16.w, l(0.000000) + max r16.w, r16.w, l(0.000100) + min r17.z, r19.z, r19.y + min r17.z, r17.z, r19.x + add r17.w, r18.y, r18.x + mad r17.w, r18.z, r18.z, r17.w + mad r15.w, r15.w, r15.w, -r17.w + mul r15.w, r15.w, cb3[r15.z + 9].x + mul r15.w, r15.w, cb3[r15.z + 9].x + add r17.w, l(1.000000), -cb3[r15.z + 10].y + mul r15.w, r15.w, r17.w + mul r15.w, r15.w, l(100.000000) + mad_sat r15.w, r17.z, cb3[r15.z + 10].y, r15.w + mul r17.z, r15.w, cb3[r15.z + 10].w + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r18.xy, r17.xyxx, cb3[1].wwww, cb3[2].wwww + mov r18.z, cb3[r15.z + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyw, r18.xyzx, t2.xywz, s3, r3.w + mul r17.xyw, r17.xyxw, cb3[r15.z + 9].wwww + div r18.x, r5.w, r16.w + min r18.x, |r18.x|, l(1.000000) + mad r18.x, r18.x, l(2.000000), r5.w + add r16.w, r16.w, l(2.000000) + div r16.w, r18.x, r16.w + add r16.w, r16.w, l(-1.000000) + mad r16.w, r16.w, cb0[112].w, l(1.000000) + mul r17.xyw, r16.wwww, r17.xyxw + mul r17.xyz, r17.zzzz, r17.xywx + mad r16.xyz, r17.xyzx, r7.wwww, r16.xyzx + mad r15.z, -r15.w, cb3[r15.z + 10].w, l(1.000000) + mul r7.w, r7.w, r15.z + endif + mov r12.w, l(-1) + continue + else + mov r12.w, r14.w + break + endif + mov r12.w, r14.w +endloop +if_nz r12.w + dp3 r1.w, r14.xyzx, r14.xyzx + rsq r1.w, r1.w + mul r17.xyz, r1.wwww, r14.xyzx + lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r19.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r18.xyz, -r18.xyzx, r19.xyzx + itof r18.xyz, r18.xyzx + dp3 r1.w, r17.xyzx, r18.xyzx + div r17.xyz, r17.xyzx, r1.wwww + lt r1.w, r17.z, l(0.000000) + add r15.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r18.xxxy + movc r15.zw, r1.wwww, r15.zzzw, r17.xxxy + mov r6.w, l(1.000000) + dp4 r1.w, cb3[3].xyzw, r6.xyzw + max r1.w, r1.w, l(0.000000) + max r1.w, r1.w, l(0.000100) + mad r15.zw, r15.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r17.xy, r15.zwzz, cb3[1].wwww, cb3[2].wwww + mov r17.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t2.xyzw, s3, r3.w + div r3.w, r5.w, r1.w + min r3.w, |r3.w|, l(1.000000) + mad r3.w, r3.w, l(2.000000), r5.w + add r1.w, r1.w, l(2.000000) + div r1.w, r3.w, r1.w + add r1.w, r1.w, l(-1.000000) + mad r1.w, r1.w, cb0[112].w, l(1.000000) + mul r17.xyz, r1.wwww, r17.xyzx + mad r16.xyz, r17.xyzx, r7.wwww, r16.xyzx +endif +mul r2.xyz, r9.xywx, r2.xyzx +add r1.w, r9.z, l(-1.000000) +mad r1.w, cb2[1].x, r1.w, l(1.000000) +mul r2.xyz, r1.wwww, r2.xyzx +mul r16.xyz, r16.xyzx, cb0[112].zzzz +// === Glass Fix: Reduce reflection probe intensity === +lt r37.x, l(0.500000), cb13[14].x +if_nz r37.x + mul r16.xyz, r16.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) +endif +mul r16.xyz, r16.xyzx, cb0[111].yyyy +mul_sat r1.w, r7.y, l(50.000000) +mul r0.z, r0.z, r1.w +mad r17.xyz, r7.xyzx, r0.xxxx, r0.zzzz +mul r16.xyz, r16.xyzx, r17.xyzx +mad r2.xyz, r2.xyzx, cb0[111].xxxx, r16.xyzx +lt r0.x, cb6[35].w, l(0.990000) +if_nz r0.x + ftoi r0.x, cb6[35].x + ieq r0.z, r0.x, l(2) + movc r16.xyz, r0.zzzz, cb6[20].xyzx, cb0[44].xyzx + add r16.xyz, r1.xyzx, -r16.xyzx + dp3 r0.z, r16.xyzx, r16.xyzx + add r0.z, -r0.z, cb6[34].w + mul_sat r0.z, r0.z, cb6[34].z + lt r1.w, l(0.000000), r0.z + if_nz r1.w + ilt r0.x, l(0), r0.x + if_nz r0.x + add r16.xyz, r1.xyzx, -cb6[20].xyzx + add r17.xyz, r1.xyzx, -cb6[21].xyzx + add r18.xyz, r1.xyzx, -cb6[22].xyzx + add r19.xyz, r1.xyzx, -cb6[23].xyzx + dp3 r16.x, r16.xyzx, r16.xyzx + dp3 r16.y, r17.xyzx, r17.xyzx + dp3 r16.z, r18.xyzx, r18.xyzx + dp3 r16.w, r19.xyzx, r19.xyzx + lt r17.x, r16.x, cb6[20].w + lt r17.y, r16.y, cb6[21].w + lt r17.z, r16.z, cb6[22].w + lt r17.w, r16.w, cb6[23].w + and r18.xyzw, r17.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) + movc r17.xyz, r17.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) + add r17.xyz, r17.xyzx, r18.yzwy + max r18.yzw, r17.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) + dp4 r0.x, r18.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) + add r0.x, -r0.x, l(4.000000) + max r0.x, r0.x, l(0.000000) + min r0.x, r0.x, l(3.000000) + add r1.w, r0.x, l(1.000000) + min r1.w, r1.w, l(3.000000) + ftou r1.w, r1.w + dp3 r3.w, r16.yzwy, icb[r1.w + 0].yzwy + div r1.w, r3.w, cb6[r1.w + 20].w + ge r3.w, r1.w, l(0.000000) + ge r1.w, l(1.000000), r1.w + and r1.w, r1.w, r3.w + if_nz r1.w + ftou r1.w, r0.x + add r15.zw, r15.xxxy, l(0.000000, 0.000000, 2.083000, 4.867000) + dp2 r3.w, r15.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r3.w, r3.w + mul r3.w, r3.w, l(52.982918) + frc r3.w, r3.w + dp4 r4.w, r16.xyzw, icb[r1.w + 0].xyzw + div r1.w, r4.w, cb6[r1.w + 20].w + sqrt r1.w, r1.w + add r1.w, r1.w, l(-0.900000) + mul r1.w, r1.w, l(12.000000) + ge r1.w, r1.w, r3.w + and r1.w, r1.w, l(0x3f800000) + add r0.x, r0.x, r1.w + endif + dp3 r1.w, r6.xyzx, cb5[0].xyzx + max r1.w, r1.w, l(0.000000) + min r1.w, r1.w, l(0.900000) + add r1.w, -r1.w, l(1.000000) + ftou r3.w, r0.x + ishl r4.w, r3.w, l(2) + mul r15.zw, r1.wwww, cb6[r3.w + 24].xxxy + max r1.w, r15.z, l(0.000000) + mad r16.xyz, -cb5[0].xyzx, r1.wwww, r1.xyzx + mad r16.xyz, r6.xyzx, r15.wwww, r16.xyzx + mul r17.xyz, r16.yyyy, cb6[r4.w + 1].xyzx + mad r16.xyw, cb6[r4.w + 0].xyxz, r16.xxxx, r17.xyxz + mad r16.xyz, cb6[r4.w + 2].xyzx, r16.zzzz, r16.xywx + add r16.xyz, r16.xyzx, cb6[r4.w + 3].xyzx + ge r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + ge r18.xyz, r16.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + or r17.xyz, r17.xyzx, r18.xyzx + or r1.w, r17.y, r17.x + or r1.w, r17.z, r1.w + and r3.w, r16.z, l(0x7fffffff) + ult r3.w, l(0x7f800000), r3.w + or r17.z, r1.w, r3.w + ftoi r0.x, r0.x + mad r15.zw, r16.xxxy, cb6[r0.x + 28].zzzw, cb6[r0.x + 28].xxxy + mad r16.xy, r15.zwzz, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r16.xy, r16.xyxx + mad r15.zw, r15.zzzw, cb6[32].zzzw, -r16.xxxy + add r18.xyzw, r15.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r19.xw, r18.xxxz, r18.xxxz + min r18.xz, r15.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + max r20.xy, r15.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r20.zw, r19.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r15.zzzw + add r15.zw, -r15.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r15.zw, -r18.xxxz, r18.xxxz, r15.zzzw + mad r18.xy, -r20.xyxx, r20.xyxx, r18.ywyy + mov r21.x, r20.z + mov r21.y, r15.z + mov r21.z, r18.x + mov r21.w, r19.x + mul r21.xyzw, r21.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r19.x, r20.w + mov r19.y, r15.w + mov r19.z, r18.y + mul r18.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r19.xyzw, r21.ywyw, r21.xzxz + add r20.xyzw, r18.yyww, r18.xxzz + div r15.zw, r21.yyyw, r19.zzzw + add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r21.xy, r15.zwzz, cb6[32].xxxx + div r15.zw, r18.yyyw, r20.yyyw + add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r21.zw, r15.zzzw, cb6[32].yyyy + mul r18.xyzw, r19.xyzw, r20.xyzw + mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r19.xyxx, t8.xxxx, s4, r16.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t8.xxxx, s4, r16.z + mul r1.w, r1.w, r18.y + mad r0.x, r18.x, r0.x, r1.w + mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.xyxx, t8.xxxx, s4, r16.z + mad r0.x, r18.z, r1.w, r0.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t8.xxxx, s4, r16.z + mad r0.x, r18.w, r1.w, r0.x + movc r17.x, r17.z, l(1.000000), r0.x + else + mov r17.xz, l(1.000000,0,0,0) + endif + else + mov r17.xz, l(1.000000,0,0,0) + endif + lt r0.x, r0.z, l(1.000000) + if_nz r0.x + dp3 r0.x, r6.xyzx, cb5[0].xyzx + max r0.x, r0.x, l(0.000000) + min r0.x, r0.x, l(0.900000) + add r0.x, -r0.x, l(1.000000) + mul r15.zw, r0.xxxx, cb6[584].xxxy + mad r16.xyz, -cb5[0].xyzx, r15.zzzz, r1.xyzx + mad r16.xyz, r6.xyzx, r15.wwww, r16.xyzx + mul r15.zw, r16.yyyy, cb6[581].xxxy + mad r15.zw, cb6[580].xxxy, r16.xxxx, r15.zzzw + mad r15.zw, cb6[582].xxxy, r16.zzzz, r15.zzzw + add r15.zw, r15.zzzw, cb6[583].xxxy + lt r18.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r15.zwzz + and r0.x, r18.y, r18.x + lt r18.xy, r15.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000) + and r1.w, r18.y, r18.x + and r0.x, r0.x, r1.w + if_nz r0.x + mul r0.x, r15.w, cb6[585].z + round_ni r0.x, r0.x + add r0.x, r15.z, r0.x + mul r0.x, r0.x, cb6[585].y + ftou r0.x, r0.x + umin r0.x, r0.x, l(127) + and r1.w, l(0x0000ffff), cb6[r0.x + 587].x + f16tof32 r18.x, r1.w + ge r1.w, r18.x, l(0.000000) + if_nz r1.w + mov r19.x, cb6[576].x + mov r19.y, cb6[577].x + mov r19.z, cb6[578].x + mov r19.w, cb6[r0.x + 587].y + mov r16.w, l(1.000000) + dp4 r19.x, r19.xyzw, r16.xyzw + mov r20.x, cb6[576].y + mov r20.y, cb6[577].y + mov r20.z, cb6[578].y + mov r20.w, cb6[r0.x + 587].z + dp4 r19.y, r20.xyzw, r16.xyzw + mov r20.x, cb6[576].z + mov r20.y, cb6[577].z + mov r20.z, cb6[578].z + mov r20.w, cb6[r0.x + 587].w + dp4 r1.w, r20.xyzw, r16.xyzw + lt r15.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxxy + lt r3.w, l(0.000000), r1.w + and r4.w, r15.w, r15.z + and r3.w, r3.w, r4.w + lt r15.zw, r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + lt r4.w, r1.w, l(1.000000) + and r5.w, r15.w, r15.z + and r4.w, r4.w, r5.w + and r3.w, r3.w, r4.w + if_nz r3.w + ushr r0.x, cb6[r0.x + 587].x, l(16) + f16tof32 r18.y, r0.x + mad r15.zw, r19.xxxy, cb6[584].zzzw, r18.xxxy + mad r16.xy, r15.zwzz, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r16.xy, r16.xyxx + mad r15.zw, r15.zzzw, cb6[586].zzzw, -r16.xxxy + add r18.xyzw, r15.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r19.xw, r18.xxxz, r18.xxxz + min r16.zw, r15.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + max r18.xz, r15.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r20.xy, r19.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r15.zwzz + add r15.zw, -r15.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r15.zw, -r16.zzzw, r16.zzzw, r15.zzzw + mad r16.zw, -r18.xxxz, r18.xxxz, r18.yyyw + mov r18.x, r20.x + mov r18.y, r15.z + mov r18.z, r16.z + mov r18.w, r19.x + mul r18.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r19.x, r20.y + mov r19.y, r15.w + mov r19.z, r16.w + mul r19.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r20.xyzw, r18.ywyw, r18.xzxz + add r21.xyzw, r19.yyww, r19.xxzz + div r15.zw, r18.yyyw, r20.zzzw + add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r18.xy, r15.zwzz, cb6[586].xxxx + div r15.zw, r19.yyyw, r21.yyyw + add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r18.zw, r15.zzzw, cb6[586].yyyy + mul r19.xyzw, r20.xyzw, r21.xyzw + mad r20.xyzw, r16.xyxy, cb6[586].xyxy, r18.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r20.xyxx, t11.xxxx, s4, r1.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r20.zwzz, t11.xxxx, s4, r1.w + mul r3.w, r3.w, r19.y + mad r0.x, r19.x, r0.x, r3.w + mad r16.xyzw, r16.xyxy, cb6[586].xyxy, r18.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r16.xyxx, t11.xxxx, s4, r1.w + mad r0.x, r19.z, r3.w, r0.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r16.zwzz, t11.xxxx, s4, r1.w + mad r17.y, r19.w, r1.w, r0.x + else + mov r17.y, l(1.000000) + endif + else + mov r17.y, l(1.000000) + endif + else + mov r17.y, l(1.000000) + endif + movc r17.x, r17.z, r17.y, r17.x + else + mov r17.y, l(1.000000) + endif + add r0.x, -r17.y, r17.x + mad r0.x, r0.z, r0.x, r17.y + lt r0.z, l(0.001000), r0.x + if_nz r0.z + add r16.xyz, r1.xyzx, -cb0[173].xyzx + mad r15.zw, cb0[176].xxxz, r16.yyyy, r16.xxxz + mul r16.yw, r15.zzzw, cb0[174].zzzz + mul r17.xy, cb0[175].xyxx, cb0[183].wwww + mad r15.zw, r15.zzzw, cb0[174].zzzz, r17.xxxy + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r15.zwzz, t10.yzxw, s2, l(0.000000) + mad r15.zw, r16.yyyw, cb0[175].wwww, r17.xxxy + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r15.zwzz, t10.yzwx, s2, l(0.000000) + dp2 r3.w, r16.xzxx, r16.xzxx + sqrt r3.w, r3.w + add r4.w, -cb0[174].x, cb0[174].y + add r3.w, r3.w, -cb0[174].x + div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul_sat r3.w, r3.w, r4.w + mad r4.w, r3.w, l(-2.000000), l(3.000000) + mul r3.w, r3.w, r3.w + mul r3.w, r3.w, r4.w + add r1.w, -r0.z, r1.w + mad r0.z, r3.w, r1.w, r0.z + add r0.z, r0.z, l(-1.000000) + mad r0.z, cb0[175].z, r0.z, l(1.000000) + mul r0.x, r0.z, r0.x + endif + add r0.z, -r0.x, cb6[35].z + mad r0.x, cb6[35].w, r0.z, r0.x +else + mov r0.x, cb6[35].z +endif +min r0.x, r0.x, l(1.000000) +add r0.x, r0.x, l(-1.000000) +mad r16.x, cb6[34].x, r0.x, l(1.000000) +lt r0.x, l(0.001000), r16.x +if_nz r0.x + dp3 r0.x, -cb5[0].xyzx, r14.xyzx + mad r17.xyz, cb5[0].xyzx, r0.xxxx, r14.xyzx + lt r0.x, r0.x, cb5[4].z + dp3 r0.z, r17.xyzx, r17.xyzx + max r0.z, r0.z, l(0.0000610351562) + rsq r0.z, r0.z + mul r17.xyz, r0.zzzz, r17.xyzx + mul r17.xyz, r17.xyzx, cb5[4].yyyy + mad r17.xyz, -cb5[0].xyzx, cb5[4].zzzz, r17.xyzx + dp3 r0.z, r17.xyzx, r17.xyzx + rsq r0.z, r0.z + mul r17.xyz, r0.zzzz, r17.xyzx + movc r17.xyz, r0.xxxx, r17.xyzx, r14.xyzx + mad r18.xyz, r3.xyzx, r2.wwww, r17.xyzx + dp3 r0.x, r18.xyzx, r18.xyzx + max r0.x, r0.x, l(0.0000610351562) + rsq r0.x, r0.x + mul r18.xyz, r0.xxxx, r18.xyzx + dp3_sat r11.y, r17.xyzx, r6.xyzx + dp3_sat r0.x, r6.xyzx, r18.xyzx + min r11.z, r0.y, l(1.000000) + mul r0.z, r11.w, r11.w + mul r0.z, r0.z, r0.z + mad r1.w, r0.x, r0.z, -r0.x + mad r0.x, r1.w, r0.x, l(1.000000) + dp3_sat r1.w, r5.xyzx, r18.xyzx + add r1.w, -r1.w, l(1.000000) + mul r3.w, r1.w, r1.w + mul r3.w, r3.w, r3.w + mul r4.w, r1.w, r3.w + add r5.w, -r11.w, l(1.000000) + mad r6.w, -r5.w, l(0.383026), l(-0.0761947036) + mad r6.w, r5.w, r6.w, l(1.049970) + mad r5.w, r5.w, r6.w, l(0.409255) + min r5.w, r5.w, l(0.999000) + add r6.w, -r5.w, l(1.000000) + add r17.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r17.xyz, r17.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx + mad r1.w, -r3.w, r1.w, l(1.000000) + mad r18.xyz, r7.xyzx, r1.wwww, r4.wwww + mul r0.x, r0.x, r0.x + div r0.x, r0.z, r0.x + mad r15.zw, -r11.zzzy, r0.zzzz, r11.zzzy + mad r15.zw, r15.zzzw, r11.zzzy, r0.zzzz + sqrt r15.zw, r15.zzzw + mul r15.zw, r11.yyyz, r15.zzzw + add r0.z, r15.w, r15.z + add r0.z, r0.z, l(0.000100) + div r0.z, l(0.500000), r0.z + mul r0.x, r0.z, r0.x + mul r18.xyz, r0.xxxx, r18.xyzx + min r18.xyz, r18.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r19.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.x, r19.xyxx, t13.xyzw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r19.zwzz, t13.yzxw, s1, l(0.000000) + mul r0.x, r0.z, r0.x + mul r0.x, r5.w, r0.x + div r0.x, r0.x, r6.w + mul r19.xyz, r17.xyzx, r17.xyzx + mul r19.xyz, r0.xxxx, r19.xyzx + mad r17.xyz, -r17.xyzx, r6.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r17.xyz, r19.xyzx, r17.xyzx + add r17.xyz, r17.xyzx, r18.xyzx + mul r17.xyz, r17.xyzx, cb5[4].xxxx + // === Glass Fix: Reduce sun specular intensity === + lt r37.x, l(0.500000), cb13[14].x + if_nz r37.x + mul r17.xyz, r17.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + endif + max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r17.xyz, r17.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + max r0.x, r10.w, l(0.010000) + div r17.xyz, r17.xyzx, r0.xxxx + min r17.xyz, r17.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r18.xyz, r9.xywx, r11.yyyy + mad r17.xyz, r17.xyzx, r11.yyyy, r18.xyzx + mul r17.xyz, r17.xyzx, cb5[1].xyzx + mov r16.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r16.yzw, r16.xyxx, t12.wxyz, s1, cb0[108].x + add r0.x, -r16.x, l(1.000000) + mad r16.xyz, r17.xyzx, r16.yzwy, -r17.xyzx + mad r16.xyz, r0.xxxx, r16.xyzx, r17.xyzx +else + mov r16.xyz, l(0,0,0,0) +endif +mul r0.xz, r15.xxyx, l(0.031250, 0.000000, 0.031250, 0.000000) +round_ni r0.xz, r0.xxzx +mad r0.x, r0.z, cb4[1].y, r0.x +mul r0.x, r0.x, l(8.000000) +ftoi r0.x, r0.x +mad r0.z, -cb0[85].y, cb4[2].w, r13.z +round_ni r0.z, r0.z +add r1.w, l(-1.000000), cb4[1].w +max r3.w, r0.z, l(0.000000) +min r1.w, r1.w, r3.w +mul r3.w, r1.w, l(8.000000) +ftoi r3.w, r3.w +ge r0.z, r1.w, r0.z +iadd r1.w, r3.w, cb0[110].y +mul r3.w, r11.w, r11.w +min r11.x, r0.y, l(1.000000) +add r0.y, -r11.w, l(1.000000) +mad r4.w, -r0.y, l(0.383026), l(-0.0761947036) +mad r4.w, r0.y, r4.w, l(1.049970) +mad r0.y, r0.y, r4.w, l(0.409255) +min r0.y, r0.y, l(0.999000) +add r4.w, -r0.y, l(1.000000) +add r17.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r17.xyz, r17.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx +mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r5.w, r11.yzyy, t13.yzwx, s1, l(0.000000) +mad r18.xyz, -r17.xyzx, r4.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r17.xyz, r17.xyzx, r17.xyzx +mov r19.w, l(1.000000) +mov r20.y, l(1.000000) +mov r21.z, r11.w +mov r22.xyz, l(0,0,0,0) +mov r6.w, l(1.000000) +mov r7.w, l(0) +loop + ilt r8.w, l(7), r7.w + breakc_nz r8.w + iadd r8.w, r0.x, r7.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r8.w, r8.w, l(0), t0.xxxx + iadd r9.z, r1.w, r7.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.z, r9.z, l(0), t0.xxxx + and r8.w, r8.w, r9.z + and r8.w, r0.z, r8.w + ishl r9.z, r7.w, l(5) + mov r23.xyz, l(0,0,0,0) + mov r11.y, r6.w + mov r11.z, r8.w + loop + breakc_z r11.z + firstbit_lo r12.w, r11.z + ishl r14.w, l(1), r12.w + xor r14.w, r11.z, r14.w + iadd r12.w, r9.z, r12.w + bfi r24.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r12.wwww, l(1, 3, 5, 6) + bfi r15.z, l(29), l(3), r12.w, l(7) + ftou r15.w, cb5[r24.z + 6].w + ieq r15.w, r15.w, l(1) + if_nz r15.w + add r19.xyz, r1.xyzx, -cb5[r24.x + 6].xyzx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r24.z + 6].xzyx + and r26.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r24.w + 6].yxzy + ushr r27.xyz, cb5[r24.z + 6].xzyx, l(16, 16, 16, 0) + ushr r28.xyz, cb5[r24.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyz, r27.xyzx + f16tof32 r28.xyw, r28.yxyz + mov r29.xz, r25.xxzx + mov r29.yw, r27.xxxz + dp4 r15.w, r19.xyzw, r29.xyzw + mov r27.x, r25.y + mov r27.z, r26.y + mov r27.w, r28.x + dp4 r16.w, r19.xyzw, r27.xyzw + mov r28.xz, r26.xxzx + dp4 r17.w, r19.xyzw, r28.xyzw + max r15.w, |r15.w|, |r16.w| + max r15.w, |r17.w|, r15.w + mad r16.w, cb5[r15.z + 6].x, l(0.500000), l(0.500000) + add r15.w, r15.w, -r16.w + mad r16.w, -cb5[r15.z + 6].x, l(0.500000), l(0.500000) + div_sat r15.w, r15.w, r16.w + add r15.w, -r15.w, l(1.000000) + mul r15.w, r15.w, r15.w + else + mov r15.w, l(1.000000) + endif + lt r16.w, l(0.500000), cb5[r24.y + 6].z + lt r17.w, r15.w, l(0.001000) + or r17.w, r16.w, r17.w + if_nz r17.w + mov r11.z, r14.w + continue + endif + ishl r17.w, r12.w, l(3) + bfi r12.w, l(29), l(3), r12.w, l(2) + lt r18.w, cb5[r17.w + 6].w, l(1.500000) + if_nz r18.w + mad r18.w, cb5[r12.w + 6].y, l(0.500000), l(0.500000) + add r19.x, r18.w, -|cb5[r12.w + 6].x| + add r19.y, -r19.x, cb5[r12.w + 6].y + add r18.w, -|r19.x|, l(1.000000) + add r18.w, -|r19.y|, r18.w + max r18.w, r18.w, l(0.000488281250) + ge r20.z, cb5[r12.w + 6].x, l(0.000000) + movc r19.z, r20.z, r18.w, -r18.w + dp3 r18.w, r19.xyzx, r19.xyzx + rsq r18.w, r18.w + mul r19.xyz, r18.wwww, r19.xyzx + add r25.xyz, -r1.xyzx, cb5[r24.x + 6].xyzx + dp3 r18.w, r25.xyzx, r25.xyzx + rsq r20.z, r18.w + mul r26.xyz, r20.zzzz, r25.xyzx + ftoi r20.w, cb5[r15.z + 6].w + mul r27.xyz, r19.xyzx, cb5[r12.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r21.w, cb5[r17.w + 6].w + and r21.w, r21.w, l(1) + ieq r22.w, r21.w, l(0) + not r22.w, r22.w + lt r23.w, l(0.000000), cb5[r12.w + 6].z + and r22.w, r22.w, r23.w + dp3 r23.w, r28.xyzx, r28.xyzx + sqrt r23.w, r23.w + dp3 r24.z, r29.xyzx, r29.xyzx + sqrt r24.z, r24.z + dp3 r25.w, r6.xyzx, r28.xyzx + div r25.w, r25.w, r23.w + dp3 r26.w, r6.xyzx, r29.xyzx + div r26.w, r26.w, r24.z + add r25.w, r25.w, r26.w + mul_sat r30.x, r25.w, l(0.500000) + dp3 r25.w, r28.xyzx, r29.xyzx + mad r23.w, r23.w, r24.z, r25.w + mad r23.w, r23.w, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r23.w + dp3_sat r20.x, r6.xyzx, r26.xyzx + movc r21.xy, r22.wwww, r30.xyxx, r20.xyxx + lt r20.x, cb5[r24.w + 6].w, l(0.000000) + if_nz r20.x + mul r20.x, cb5[r24.x + 6].w, cb5[r24.x + 6].w + mul r20.x, r18.w, r20.x + mad r20.x, -r20.x, r20.x, l(1.000000) + max r20.x, r20.x, l(0.000000) + add r18.w, r18.w, l(1.000000) + div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), r18.w + and r23.w, r22.w, l(0x3f800000) + add r24.z, -r18.w, r21.y + mad r18.w, r23.w, r24.z, r18.w + mul r20.x, r20.x, r20.x + mul r18.w, r18.w, r20.x + else + mul r29.xyz, r25.xyzx, cb5[r24.x + 6].wwww + dp3 r20.x, r29.xyzx, r29.xyzx + min r20.x, r20.x, l(1.000000) + add r20.x, -r20.x, l(1.000000) + log r20.x, r20.x + mul r20.x, r20.x, cb5[r24.w + 6].w + exp r20.x, r20.x + mul r18.w, r20.x, r21.y + endif + dp3 r19.x, r26.xyzx, -r19.xyzx + add r19.x, r19.x, -cb5[r12.w + 6].z + mul_sat r19.x, r19.x, cb5[r12.w + 6].w + mul r19.x, r19.x, r19.x + movc r19.x, r21.w, l(1.000000), r19.x + mul r18.w, r18.w, r19.x + not r19.x, r22.w + ige r19.y, r20.w, l(0) + and r19.x, r19.y, r19.x + if_nz r19.x + if_z r21.w + ishl r19.x, r20.w, l(2) + mul r29.xyz, r1.yyyy, cb7[r19.x + 33].xywx + mad r29.xyz, cb7[r19.x + 32].xywx, r1.xxxx, r29.xyzx + mad r29.xyz, cb7[r19.x + 34].xywx, r1.zzzz, r29.xyzx + add r19.xyz, r29.xyzx, cb7[r19.x + 35].xywx + div_sat r19.xy, r19.xyxx, r19.zzzz + mad r19.xy, r19.xyxx, cb7[r20.w + 0].zwzz, cb7[r20.w + 0].xyxx + else + ishl r19.z, r20.w, l(2) + dp3 r29.x, -r25.xyzx, cb7[r19.z + 32].xyzx + dp3 r29.y, -r25.xyzx, cb7[r19.z + 33].xyzx + dp3 r29.z, -r25.xyzx, cb7[r19.z + 34].xyzx + lt r19.z, |r29.x|, |r29.y| + and r19.z, r19.z, l(1) + dp2 r20.x, |r29.xyxx|, icb[r19.z + 0].xyxx + lt r20.x, r20.x, |r29.z| + movc r19.z, r20.x, l(2), r19.z + dp3 r20.x, r29.xyzx, icb[r19.z + 0].xyzx + lt r20.x, r20.x, l(0.000000) + bfi r19.z, l(31), l(1), r19.z, r20.x + ushr r20.x, r19.z, l(1) + dp3 r20.x, r29.xyzx, icb[r20.x + 0].xyzx + div r21.y, l(0.000244140625), cb7[r20.w + 0].w + add r21.y, -r21.y, l(0.500000) + utof r23.w, r19.z + ult r24.z, r19.z, l(2) + and r24.z, r24.z, l(2) + dp2 r24.z, r29.xzxx, icb[r24.z + 0].xzxx + mul r24.z, r24.z, icb[r19.z + 4].z + div r24.z, r24.z, |r20.x| + mad r23.w, r24.z, r21.y, r23.w + add r23.w, r23.w, l(0.500000) + mul_sat r25.x, r23.w, l(0.166666672) + iadd r23.w, l(-1), icb[r19.z + 4].y + dp2 r23.w, r29.yzyy, icb[r23.w + 0].xyxx + mul r19.z, r23.w, icb[r19.z + 4].w + div r19.z, r19.z, |r20.x| + mad_sat r25.y, -r19.z, r21.y, l(0.500000) + mad r19.xy, r25.xyxx, cb7[r20.w + 0].zwzz, cb7[r20.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r19.x, r19.xyxx, t21.xyzw, s1, l(0.000000) + mul r18.w, r18.w, r19.x + endif + lt r19.x, l(0.000000), r18.w + if_nz r19.x + if_z r21.w + ftoi r19.y, cb5[r24.y + 6].x + else + add r25.xyz, r1.xyzx, -cb5[r24.x + 6].xyzx + lt r29.xyz, |r25.yzzy|, |r25.xxyx| + and r19.z, r29.y, r29.x + lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ushr r20.x, cb5[r12.w + 6].w, l(24) + ubfe r21.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb5[r12.w + 6].wwww + movc r20.x, r25.x, r20.x, r21.y + and r20.w, l(255), cb5[r12.w + 6].w + movc r20.w, r25.y, r21.w, r20.w + ubfe r21.y, l(8), l(8), cb5[r24.y + 6].x + and r21.w, l(255), cb5[r24.y + 6].x + movc r21.y, r25.z, r21.y, r21.w + movc r20.w, r29.z, r20.w, r21.y + movc r19.z, r19.z, r20.x, r20.w + ilt r20.x, r19.z, l(80) + movc r19.y, r20.x, r19.z, l(-1) + endif + mad r25.xyz, r26.xyzx, cb6[r19.y + 288].xxxx, r1.xyzx + mul r19.z, l(5.000000), cb6[r19.y + 288].y + mad r25.xyz, r6.xyzx, r19.zzzz, r25.xyzx + ishl r19.z, r19.y, l(2) + mul r29.xyzw, r25.yyyy, cb6[r19.z + 65].xyzw + mad r29.xyzw, cb6[r19.z + 64].xyzw, r25.xxxx, r29.xyzw + mad r25.xyzw, cb6[r19.z + 66].xyzw, r25.zzzz, r29.xyzw + add r25.xyzw, r25.xyzw, cb6[r19.z + 67].xyzw + div r25.xyz, r25.xyzx, r25.wwww + ge r29.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ge r30.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r20.xw, -cb6[r19.y + 344].xxxy, cb6[r19.y + 344].zzzw + mad r20.xw, r25.xxxy, r20.xxxw, cb6[r19.y + 344].xxxy + mad r21.yw, r20.xxxw, cb6[400].zzzw, l(0.000000, 0.500000, 0.000000, 0.500000) + round_ni r21.yw, r21.yyyw + mad r20.xw, r20.xxxw, cb6[400].zzzw, -r21.yyyw + add r31.xyzw, r20.xxww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r32.xyzw, r31.xxzz, r31.xxzz + add r25.xy, -r20.xwxx, l(1.000000, 1.000000, 0.000000, 0.000000) + min r31.xz, r20.xxwx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r33.xy, r20.xwxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r34.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy + add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r20.xw, r32.yyyw, l(0.500000, 0.000000, 0.000000, 0.500000), -r20.xxxw + mul r35.xy, r20.xwxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r20.xw, -r31.xxxz, r31.xxxz, r25.xxxy + add r20.xw, r20.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) + mul r36.xy, r20.xwxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r20.xw, r31.yyyw, l(0.160000, 0.000000, 0.000000, 0.160000) + mov r35.z, r36.x + mov r35.w, r20.x + mov r34.z, r33.x + mov r34.w, r32.x + add r31.xyzw, r34.zwxz, r35.zwxz + mov r36.z, r35.y + mov r36.w, r20.w + mov r33.z, r34.y + mov r33.w, r32.z + add r25.xyw, r33.zyzw, r36.zyzw + div r32.xyz, r34.xzwx, r31.zwyz + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyz, r32.xyzx, cb6[400].xxxx + div r33.xyz, r33.zywz, r25.xywx + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyw, r33.xyxz, cb6[400].yyyy + mul r34.xyzw, r25.xxxy, r31.zwyz + mov r32.w, r33.x + mad r35.xyzw, r21.ywyw, cb6[400].xyxy, r32.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r35.xyxx, t9.xxxx, s4, r25.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r35.zwzz, t9.xxxx, s4, r25.z + mul r20.x, r20.x, r34.y + mad r19.z, r34.x, r19.z, r20.x + mad r20.xw, r21.yyyw, cb6[400].xxxy, r32.zzzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r20.xwxx, t9.xxxx, s4, r25.z + mad r19.z, r34.z, r20.x, r19.z + mov r33.z, r32.x + mad r35.xyzw, r21.ywyw, cb6[400].xyxy, r33.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r35.xyxx, t9.xxxx, s4, r25.z + mad r19.z, r34.w, r20.x, r19.z + mul r34.xyzw, r25.yyww, r31.xyzw + mov r33.xz, r32.yyzy + mad r32.xyzw, r21.ywyw, cb6[400].xyxy, r33.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r32.xyxx, t9.xxxx, s4, r25.z + mad r19.z, r34.x, r20.x, r19.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r32.zwzz, t9.xxxx, s4, r25.z + mad r19.z, r34.y, r20.x, r19.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r35.zwzz, t9.xxxx, s4, r25.z + mad r19.z, r34.z, r20.x, r19.z + ige r20.x, r19.y, l(0) + or r29.xyz, r29.xyzx, r30.xyzx + or r20.w, r29.y, r29.x + or r20.w, r29.z, r20.w + and r23.w, r25.z, l(0x7fffffff) + ult r23.w, l(0x7f800000), r23.w + or r20.w, r20.w, r23.w + mad r29.xyzw, r21.ywyw, cb6[400].xyxy, r33.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.y, r29.xyxx, t9.xxxx, s4, r25.z + mad r19.z, r34.w, r21.y, r19.z + mul r21.y, r25.w, r31.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r29.zwzz, t9.xxxx, s4, r25.z + mad r19.z, r21.y, r21.w, r19.z + add r19.z, r19.z, l(-1.000000) + mad r19.y, cb6[r19.y + 288].w, r19.z, l(1.000000) + movc r19.y, r20.w, l(1.000000), r19.y + movc r19.y, r20.x, r19.y, l(1.000000) + else + mov r19.y, l(1.000000) + endif + if_nz r22.w + dp3 r19.z, r14.xyzx, r27.xyzx + mul_sat r20.x, r20.z, cb5[r12.w + 6].z + mad r20.x, r20.x, l(0.500000), r3.w + min r20.x, r20.x, l(1.000000) + div r20.x, r3.w, r20.x + mad r25.xyz, r14.xyzx, r19.zzzz, -r27.xyzx + dp3 r20.w, r28.xyzx, r25.xyzx + mul r19.z, r19.z, r19.z + mad r19.z, cb5[r12.w + 6].z, cb5[r12.w + 6].z, -r19.z + div_sat r19.z, r20.w, r19.z + mad r25.xyz, r27.xyzx, r19.zzzz, r28.xyzx + dp3 r19.z, r25.xyzx, r25.xyzx + rsq r19.z, r19.z + mul r26.xyz, r19.zzzz, r25.xyzx + else + mov r20.x, l(1.000000) + endif + if_nz r19.x + mul_sat r19.x, r20.z, cb5[r15.z + 6].y + mad r25.xyz, r3.xyzx, r2.wwww, r26.xyzx + dp3 r19.z, r25.xyzx, r25.xyzx + max r19.z, r19.z, l(0.0000610351562) + rsq r19.z, r19.z + mul r25.xyz, r19.zzzz, r25.xyzx + dp3_sat r19.z, r6.xyzx, r25.xyzx + dp3_sat r20.z, r5.xyzx, r25.xyzx + lt r20.w, l(0.000000), r19.x + mul r19.x, r19.x, r19.x + mad r21.y, r20.z, l(3.600000), l(0.400000) + div r19.x, r19.x, r21.y + mad r19.x, r11.w, r11.w, r19.x + min r19.x, r19.x, l(1.000000) + movc r19.x, r20.w, r19.x, r3.w + mul r19.x, r19.x, r19.x + mad r20.w, r19.z, r19.x, -r19.z + mad r19.z, r20.w, r19.z, l(1.000000) + add r20.z, -r20.z, l(1.000000) + mul r20.w, r20.z, r20.z + mul r20.w, r20.w, r20.w + mul r21.y, r20.z, r20.w + mad r20.z, -r20.w, r20.z, l(1.000000) + mad r25.xyz, r7.xyzx, r20.zzzz, r21.yyyy + mul r19.z, r19.z, r19.z + div r19.z, r19.x, r19.z + mul r19.z, r20.x, r19.z + mad r20.x, -r11.x, r19.x, r11.x + mad r20.x, r20.x, r11.x, r19.x + sqrt r20.x, r20.x + mad r20.z, -r21.x, r19.x, r21.x + mad r19.x, r20.z, r21.x, r19.x + sqrt r19.x, r19.x + mul r19.x, r11.x, r19.x + mad r19.x, r21.x, r20.x, r19.x + add r19.x, r19.x, l(0.000100) + div r19.x, l(0.500000), r19.x + mul r19.x, r19.x, r19.z + mul r20.xzw, r19.xxxx, r25.xxyz + min r20.xzw, r20.xxzw, l(2048.000000, 0.000000, 2048.000000, 2048.000000) + mad r19.xz, r21.xxzx, l(0.968750, 0.000000, 0.968750, 0.000000), l(0.015625, 0.000000, 0.015625, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r19.x, r19.xzxx, t13.xyzw, s1, l(0.000000) + mul r19.x, r5.w, r19.x + mul r19.x, r0.y, r19.x + div r19.x, r19.x, r4.w + mul r25.xyz, r17.xyzx, r19.xxxx + div r25.xyz, r25.xyzx, r18.xyzx + add r20.xzw, r20.xxzw, r25.xxyz + mul r20.xzw, r20.xxzw, cb5[r15.z + 6].zzzz + max r20.xzw, r20.xxzw, l(0.000000, 0.000000, 0.000000, 0.000000) + min r20.xzw, r20.xxzw, l(1000.000000, 0.000000, 1000.000000, 1000.000000) + mul r25.xyz, r9.xywx, r21.xxxx + mad r20.xzw, r20.xxzw, r21.xxxx, r25.xxyz + mul r21.xyw, r18.wwww, cb5[r17.w + 6].xyxz + mul r19.xyz, r19.yyyy, r21.xywx + mul r19.xyz, r15.wwww, r19.xyzx + mul r19.xyz, r19.xyzx, r20.xzwx + else + mov r19.xyz, l(0,0,0,0) + endif + else + if_z r16.w + mad r15.w, cb5[r12.w + 6].y, l(0.500000), l(0.500000) + add r25.x, r15.w, -|cb5[r12.w + 6].x| + add r25.y, -r25.x, cb5[r12.w + 6].y + add r15.w, -|r25.x|, l(1.000000) + add r15.w, -|r25.y|, r15.w + max r15.w, r15.w, l(0.000488281250) + ge r16.w, cb5[r12.w + 6].x, l(0.000000) + movc r25.z, r16.w, r15.w, -r15.w + dp3 r15.w, r25.xyzx, r25.xyzx + rsq r15.w, r15.w + mul r20.xzw, r15.wwww, r25.xxyz + add r21.xyw, -r1.xyxz, cb5[r24.x + 6].xyxz + dp3 r15.w, r21.xywx, r21.xywx + rsq r16.w, r15.w + mul r25.xyz, r16.wwww, r21.xywx + ftoi r15.z, cb5[r15.z + 6].w + mul r26.xyz, r20.xzwx, cb5[r12.w + 6].zzzz + mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r21.xywx + mad r26.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r21.xywx + ftou r16.w, cb5[r17.w + 6].w + and r16.w, r16.w, l(1) + ieq r17.w, r16.w, l(0) + not r17.w, r17.w + lt r18.w, l(0.000000), cb5[r12.w + 6].z + and r17.w, r17.w, r18.w + dp3 r18.w, r27.xyzx, r27.xyzx + sqrt r18.w, r18.w + dp3 r22.w, r26.xyzx, r26.xyzx + sqrt r22.w, r22.w + dp3 r23.w, r27.xyzx, r26.xyzx + mad r18.w, r18.w, r22.w, r23.w + mad r18.w, r18.w, l(0.500000), l(1.000000) + div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), r18.w + movc r18.w, r17.w, r18.w, l(1.000000) + lt r22.w, cb5[r24.w + 6].w, l(0.000000) + if_nz r22.w + mul r22.w, cb5[r24.x + 6].w, cb5[r24.x + 6].w + mul r22.w, r15.w, r22.w + mad r22.w, -r22.w, r22.w, l(1.000000) + max r22.w, r22.w, l(0.000000) + add r15.w, r15.w, l(1.000000) + div r15.w, l(1.000000, 1.000000, 1.000000, 1.000000), r15.w + and r23.w, r17.w, l(0x3f800000) + add r24.z, -r15.w, r18.w + mad r15.w, r23.w, r24.z, r15.w + mul r22.w, r22.w, r22.w + mul r15.w, r15.w, r22.w + else + mul r26.xyz, r21.xywx, cb5[r24.x + 6].wwww + dp3 r22.w, r26.xyzx, r26.xyzx + min r22.w, r22.w, l(1.000000) + add r22.w, -r22.w, l(1.000000) + log r22.w, r22.w + mul r22.w, r22.w, cb5[r24.w + 6].w + exp r22.w, r22.w + mul r15.w, r18.w, r22.w + endif + dp3 r18.w, r25.xyzx, -r20.xzwx + add r18.w, r18.w, -cb5[r12.w + 6].z + mul_sat r18.w, r18.w, cb5[r12.w + 6].w + mul r18.w, r18.w, r18.w + movc r18.w, r16.w, l(1.000000), r18.w + mul r15.w, r15.w, r18.w + not r17.w, r17.w + ige r18.w, r15.z, l(0) + and r17.w, r17.w, r18.w + if_nz r17.w + if_z r16.w + ishl r17.w, r15.z, l(2) + mul r20.xzw, r1.yyyy, cb7[r17.w + 33].xxyw + mad r20.xzw, cb7[r17.w + 32].xxyw, r1.xxxx, r20.xxzw + mad r20.xzw, cb7[r17.w + 34].xxyw, r1.zzzz, r20.xxzw + add r20.xzw, r20.xxzw, cb7[r17.w + 35].xxyw + div_sat r20.xz, r20.xxzx, r20.wwww + mad r20.xz, r20.xxzx, cb7[r15.z + 0].zzwz, cb7[r15.z + 0].xxyx + else + ishl r17.w, r15.z, l(2) + dp3 r26.x, -r21.xywx, cb7[r17.w + 32].xyzx + dp3 r26.y, -r21.xywx, cb7[r17.w + 33].xyzx + dp3 r26.z, -r21.xywx, cb7[r17.w + 34].xyzx + lt r17.w, |r26.x|, |r26.y| + and r17.w, r17.w, l(1) + dp2 r18.w, |r26.xyxx|, icb[r17.w + 0].xyxx + lt r18.w, r18.w, |r26.z| + movc r17.w, r18.w, l(2), r17.w + dp3 r18.w, r26.xyzx, icb[r17.w + 0].xyzx + lt r18.w, r18.w, l(0.000000) + bfi r17.w, l(31), l(1), r17.w, r18.w + ushr r18.w, r17.w, l(1) + dp3 r18.w, r26.xyzx, icb[r18.w + 0].xyzx + div r20.w, l(0.000244140625), cb7[r15.z + 0].w + add r20.w, -r20.w, l(0.500000) + utof r21.x, r17.w + ult r21.y, r17.w, l(2) + and r21.y, r21.y, l(2) + dp2 r21.y, r26.xzxx, icb[r21.y + 0].xzxx + mul r21.y, r21.y, icb[r17.w + 4].z + div r21.y, r21.y, |r18.w| + mad r21.x, r21.y, r20.w, r21.x + add r21.x, r21.x, l(0.500000) + mul_sat r21.x, r21.x, l(0.166666672) + iadd r21.w, l(-1), icb[r17.w + 4].y + dp2 r21.w, r26.yzyy, icb[r21.w + 0].xyxx + mul r17.w, r21.w, icb[r17.w + 4].w + div r17.w, r17.w, |r18.w| + mad_sat r21.y, -r17.w, r20.w, l(0.500000) + mad r20.xz, r21.xxyx, cb7[r15.z + 0].zzwz, cb7[r15.z + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r15.z, r20.xzxx, t21.yzxw, s1, l(0.000000) + mul r15.w, r15.z, r15.w + endif + lt r15.z, l(0.000000), r15.w + if_nz r15.z + if_z r16.w + ftoi r15.z, cb5[r24.y + 6].x + else + add r20.xzw, r1.xxyz, -cb5[r24.x + 6].xxyz + lt r21.xyw, |r20.zwzw|, |r20.xxxz| + and r15.w, r21.y, r21.x + lt r20.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xxzw + ushr r16.w, cb5[r12.w + 6].w, l(24) + ubfe r21.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r12.w + 6].wwww + movc r16.w, r20.x, r16.w, r21.x + and r12.w, l(255), cb5[r12.w + 6].w + movc r12.w, r20.z, r21.y, r12.w + ubfe r17.w, l(8), l(8), cb5[r24.y + 6].x + and r18.w, l(255), cb5[r24.y + 6].x + movc r17.w, r20.w, r17.w, r18.w + movc r12.w, r21.w, r12.w, r17.w + movc r12.w, r15.w, r16.w, r12.w + ilt r15.w, r12.w, l(80) + movc r15.z, r15.w, r12.w, l(-1) + endif + mad r20.xzw, r25.xxyz, cb6[r15.z + 288].xxxx, r1.xxyz + mul r12.w, l(5.000000), cb6[r15.z + 288].y + mad r20.xzw, r6.xxyz, r12.wwww, r20.xxzw + ishl r12.w, r15.z, l(2) + mul r24.xyzw, r20.zzzz, cb6[r12.w + 65].xyzw + mad r24.xyzw, cb6[r12.w + 64].xyzw, r20.xxxx, r24.xyzw + mad r24.xyzw, cb6[r12.w + 66].xyzw, r20.wwww, r24.xyzw + add r24.xyzw, r24.xyzw, cb6[r12.w + 67].xyzw + div r20.xzw, r24.xxyz, r24.wwww + ge r21.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xzxw + ge r24.xyz, r20.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r25.xy, -cb6[r15.z + 344].xyxx, cb6[r15.z + 344].zwzz + mad r20.xz, r20.xxzx, r25.xxyx, cb6[r15.z + 344].xxyx + mad r25.xy, r20.xzxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r25.xy, r25.xyxx + mad r20.xz, r20.xxzx, cb6[400].zzwz, -r25.xxyx + add r26.xyzw, r20.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r25.zw, -r20.xxxz, l(0.000000, 0.000000, 1.000000, 1.000000) + min r26.xz, r20.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r20.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r20.xz, r27.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r20.xxzx + mul r30.xy, r20.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r20.xz, -r26.xxzx, r26.xxzx, r25.zzwz + add r20.xz, r20.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r31.xy, r20.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r20.xz, r26.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) + mov r30.z, r31.x + mov r30.w, r20.x + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r20.z + mov r28.z, r29.y + mov r28.w, r27.z + add r27.xyz, r28.zywz, r31.zywz + div r29.xyz, r29.xzwx, r26.zwyz + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.xyzx, cb6[400].xxxx + div r28.xyz, r28.zywz, r27.xyzx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyw, r28.xyxz, cb6[400].yyyy + mul r30.xyzw, r26.zwyz, r27.xxxy + mov r29.w, r28.x + mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r29.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r12.w, r31.xyxx, t9.xxxx, s4, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r31.zwzz, t9.xxxx, s4, r20.w + mul r15.w, r15.w, r30.y + mad r12.w, r30.x, r12.w, r15.w + mad r20.xz, r25.xxyx, cb6[400].xxyx, r29.zzwz + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r20.xzxx, t9.xxxx, s4, r20.w + mad r12.w, r30.z, r15.w, r12.w + mov r28.z, r29.x + mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r28.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r31.xyxx, t9.xxxx, s4, r20.w + mad r12.w, r30.w, r15.w, r12.w + mul r30.xyzw, r26.xyzw, r27.yyzz + mov r28.xz, r29.yyzy + mad r29.xyzw, r25.xyxy, cb6[400].xyxy, r28.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r29.xyxx, t9.xxxx, s4, r20.w + mad r12.w, r30.x, r15.w, r12.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r29.zwzz, t9.xxxx, s4, r20.w + mad r12.w, r30.y, r15.w, r12.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r31.zwzz, t9.xxxx, s4, r20.w + mad r12.w, r30.z, r15.w, r12.w + ige r15.w, r15.z, l(0) + or r21.xyw, r21.xyxw, r24.xyxz + or r16.w, r21.y, r21.x + or r16.w, r21.w, r16.w + and r17.w, r20.w, l(0x7fffffff) + ult r17.w, l(0x7f800000), r17.w + or r16.w, r16.w, r17.w + mad r24.xyzw, r25.xyxy, cb6[400].xyxy, r28.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r24.xyxx, t9.xxxx, s4, r20.w + mad r12.w, r30.w, r17.w, r12.w + mul r17.w, r26.y, r27.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r24.zwzz, t9.xxxx, s4, r20.w + mad r12.w, r17.w, r18.w, r12.w + add r12.w, r12.w, l(-1.000000) + mad r12.w, cb6[r15.z + 288].w, r12.w, l(1.000000) + movc r12.w, r16.w, l(1.000000), r12.w + movc r12.w, r15.w, r12.w, l(1.000000) + else + mov r12.w, l(1.000000) + endif + else + mov r12.w, l(1.000000) + endif + mul r11.y, r11.y, r12.w + mov r19.xyz, l(0,0,0,0) + endif + add r23.xyz, r19.xyzx, r23.xyzx + mov r11.z, r14.w + endloop + mov r6.w, r11.y + add r22.xyz, r22.xyzx, r23.xyzx + iadd r7.w, r7.w, l(1) +endloop +// === Glass Fix: Reduce clustered lights and overall brightness === +lt r37.x, l(0.500000), cb13[14].x +if_nz r37.x + mul r22.xyz, r22.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mul r2.xyz, r2.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) +endif +dp3 r0.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r1.xzw, -r0.xxxx, r2.xxyz +mad r0.xyz, cb0[184].wwww, r1.xzwx, r0.xxxx +mad r1.xzw, r22.xxyz, r6.wwww, r16.xxyz +mul r2.xyz, cb2[20].zzzz, cb2[21].xyzx +add r2.w, -r10.w, l(1.000000) +add r3.x, l(1.000000), -cb2[20].y +max r3.x, r3.x, l(0.010000) +div_sat r2.w, r2.w, r3.x +mad r2.xyz, r8.xyzx, r2.xyzx, -r1.xzwx +mad r1.xzw, r2.wwww, r2.xxyz, r1.xxzw +mad r0.xyz, r0.xyzx, cb0[184].xyzx, r1.xzwx +mad r1.x, r1.y, cb0[156].w, cb0[157].w +mad r1.z, r0.w, cb0[154].w, -cb0[153].w +max r1.xz, r1.xxzx, l(0.010000, 0.000000, 0.000000, 0.000000) +mul r1.w, r1.x, l(-1.442695) +exp r1.w, r1.w +add r1.w, -r1.w, l(1.000000) +div r1.x, r1.w, r1.x +mad r1.w, r1.y, cb0[156].w, cb0[158].w +mul r1.w, r1.w, l(1.442695) +exp r1.w, r1.w +mul r1.x, r1.w, r1.x +mul r1.x, r1.x, -r1.z +mul r1.xzw, r1.xxxx, cb0[155].xxyz +mul r1.xzw, r1.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r1.xzw, r1.xxzw +dp3 r2.x, -r5.xyzx, cb0[154].xyzx +mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r2.xxxx, cb0[155].wwww +add r2.y, -r2.z, r2.y +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r13.w, l(7), cb0[108].w + imad r3.xyz, r13.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r2.z, r3.y, r3.z, r3.x + imad r2.w, r3.z, r2.z, r3.y + imad r3.x, r2.z, r2.w, r3.z + imad r6.x, r2.w, r3.x, r2.z + dp3 r2.z, -r5.xyzx, -r4.xyzx + add r3.y, r1.y, -cb0[44].y + lt r3.z, l(5.960464478E-08), r2.z + div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z + and r2.z, r2.z, r3.z + mul r2.z, r2.z, cb0[163].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w + mul r3.w, r2.z, r3.z + mad r4.x, r3.w, r3.y, cb0[44].y + mad r3.y, -r3.w, r3.y, r3.y + mul r3.w, r3.y, cb0[159].z + mul r3.y, r3.y, cb0[162].x + max r3.yw, r3.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) + add r4.y, r4.x, -cb0[159].x + mul r4.y, r4.y, cb0[159].z + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[159].y + lt r4.z, l(5.960464478E-08), |r3.w| + exp r4.w, -r3.w + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r4.z, r4.w, r3.w + add r4.x, r4.x, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.z, l(5.960464478E-08), |r3.y| + exp r4.w, -r3.y + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r3.y + mad r3.y, -r3.y, l(0.240226507), l(0.693147182) + movc r3.y, r4.z, r4.w, r3.y + mul r3.y, r3.y, r4.x + mad r3.y, r4.y, r3.w, r3.y + mad r2.z, -r2.z, r3.z, l(1.000000) + mul r2.z, r0.w, r2.z + mul r2.z, r2.z, r3.y + exp r2.z, -r2.z + min r2.z, r2.z, l(1.000000) + max r2.z, r2.z, cb0[161].w + mad_sat r3.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx + add r2.z, r2.z, r3.y + add r2.z, r3.z, r2.z + min r2.z, r2.z, l(1.000000) + imad r6.y, r3.x, r6.x, r2.w + ushr r3.xy, r6.xyxx, l(16, 16, 0, 0) + utof r3.xy, r3.xyxx + mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb0[167].wwww, r15.xyxx + mul r3.xy, r3.xyxx, cb0[165].xyxx + mad r2.w, r13.z, cb0[164].x, cb0[164].y + log r2.w, r2.w + mul r2.w, r2.w, cb0[164].z + div r3.z, r2.w, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t20.xyzw, s1, l(0.000000) + add r2.w, r13.z, -cb0[166].z + mul_sat r2.w, r2.w, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r2.wwww, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r2.w, -r2.z, l(1.000000) + mul r4.xyz, r2.wwww, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r2.z, r2.z, r3.w +else + add r1.y, r1.y, -cb0[44].y + mul r2.w, r1.y, cb0[159].z + max r2.w, r2.w, l(-127.000000) + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(5.960464478E-08), |r2.w| + exp r4.y, -r2.w + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r4.x, r4.y, r2.w + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(5.960464478E-08), |r1.y| + exp r4.z, -r1.y + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.y, r4.z, r1.y + mul r1.y, r1.y, r4.x + mad r1.y, r3.w, r2.w, r1.y + mul r1.y, r0.w, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx + add r0.w, r1.y, r4.x + add r0.w, r4.y, r0.w + min r2.z, r0.w, l(1.000000) + add r0.w, -r2.z, l(1.000000) + mul r3.xyz, r0.wwww, cb0[161].xyzx +endif +mul r4.xyz, r1.xzwx, r2.zzzz +mad r0.w, r2.x, r2.x, l(1.000000) +mul r0.w, r0.w, l(0.0596831031) +mad r5.xyz, cb0[156].xyzx, r0.wwww, cb0[158].xyzx +mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) +mul r1.y, r2.y, l(12.566371) +sqrt r2.x, r2.y +mul r1.y, r1.y, r2.x +max r1.y, r1.y, l(0.001000) +div r0.w, r0.w, r1.y +mad_sat r2.xyw, cb0[157].xyxz, r0.wwww, r5.xyxz +mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) +add r1.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r1.xyz, r1.xyzx, r2.xywx +mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx +// === Glass Transparency Fix === +lt r37.x, l(0.500000), cb13[14].x +if_nz r37.x + add r37.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r37.xyz, r37.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r4.xyzx + mul r38.xyz, r1.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000) + mad r10.xyz, r0.xyzx, r37.xyzx, r38.xyzx +else + mad r10.xyz, r0.xyzx, r4.xyzx, r1.xyzx +endif +mul r0.xy, r12.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) +sqrt r0.xy, |r0.xyxx| +sqrt r0.xy, r0.xyxx +mov r12.z, -r12.y +lt r0.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.xxxz +lt r1.xy, r12.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r0.zw, -r0.zzzw, r1.xxxy +itof r0.zw, r0.zzzw +mul r0.xy, r0.zwzz, r0.xyxx +mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +ishl r0.z, v7.x, l(4) +max r0.z, cb1[r0.z + 4].z, cb1[r0.z + 4].y +add r0.z, r0.z, l(-0.100000024) +lt r0.w, l(0.000000), r0.z +lt r0.z, r0.z, l(0.000000) +iadd r0.z, -r0.w, r0.z +itof r0.z, r0.z +mov_sat r0.z, r0.z +add r1.xy, -r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mad r0.xy, r0.zzzz, r1.xyxx, r0.xyxx +min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) +dp3 r0.x, r10.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mul r0.x, r10.w, r0.x +max r0.x, r10.w, r0.x +mul_sat r0.x, r0.x, l(10.000000) +lt r0.x, l(0.500000), r0.x +and o1.z, r0.x, l(0x3f800000) +// === Glass Highlight Compression === +lt r37.x, l(0.500000), cb13[14].x +if_nz r37.x + dp3 r37.y, r10.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) + lt r37.z, l(0.500000), r37.y + if_nz r37.z + add r37.w, r37.y, l(-0.500000) + mul r37.w, r37.w, l(-0.666667) + exp r37.w, r37.w + add r37.w, -r37.w, l(1.000000) + mad r37.w, r37.w, l(1.500000), l(0.500000) + max r38.x, r37.y, l(0.001000) + div r38.x, r37.w, r38.x + mul r10.xyz, r10.xyzx, r38.xxxx + endif +endif +mov o0.xyzw, r10.xyzw +mov o1.w, l(0) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0x424F9536.cso b/src/games/endfield/glass/0x424F9536.cso new file mode 100644 index 0000000000000000000000000000000000000000..bca560f4143d46a01f802d71fa27cc0a91df06ff GIT binary patch literal 56364 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/glass/0x69B6459F.ps_5_0.asm b/src/games/endfield/glass/0x69B6459F.ps_5_0.asm new file mode 100644 index 0000000000..b5e25d39e4 --- /dev/null +++ b/src/games/endfield/glass/0x69B6459F.ps_5_0.asm @@ -0,0 +1,1812 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Feb 6 19:58:05 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xyz +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 zw 1 NONE float zw +// TEXCOORD 2 xyz 2 NONE float xyz +// TEXCOORD 3 xyzw 3 NONE float xyzw +// TEXCOORD 4 xyzw 4 NONE float x +// TEXCOORD 5 xyz 5 NONE float xyz +// TEXCOORD 6 xyz 6 NONE float xyz +// TEXCOORD 7 x 7 NONE uint x +// SV_IsFrontFace 0 x 8 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[244], immediateIndexed +dcl_constantbuffer CB1[4096], dynamicIndexed +dcl_constantbuffer CB2[24], immediateIndexed +dcl_constantbuffer CB3[259], dynamicIndexed +dcl_constantbuffer CB4[3], immediateIndexed +dcl_constantbuffer CB5[2054], dynamicIndexed +dcl_constantbuffer CB6[715], dynamicIndexed +dcl_constantbuffer CB7[160], dynamicIndexed +dcl_constantbuffer CB13[15], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_comparison +dcl_sampler s4, mode_default +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2darray (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2d (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture3d (float,float,float,float) t11 +dcl_resource_texture3d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture2d (float,float,float,float) t18 +dcl_input_ps_siv linear noperspective v0.xyz, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v1.zw +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyzw +dcl_input_ps linear v4.x +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps constant v7.x +dcl_input_ps_sgv constant v8.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 43 +ishl r0.x, v7.x, l(4) +max r0.y, cb1[r0.x + 4].z, cb1[r0.x + 4].y +dp2 r0.z, v0.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +ge r0.w, cb1[r0.x + 4].x, l(0.000000) +movc r0.w, r0.w, r0.z, -r0.z +add r0.w, -r0.w, cb1[r0.x + 4].x +add r0.z, -r0.y, -r0.z +add r0.z, r0.z, l(1.000000) +min r0.z, r0.z, r0.w +lt r0.z, r0.z, l(0.000000) +discard_nz r0.z +mul r0.zw, v0.xxxy, cb0[82].zzzw +mad r1.xy, r0.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +mul r2.xyzw, -r1.yyyy, cb0[25].xyzw +mad r1.xyzw, cb0[24].xyzw, r1.xxxx, r2.xyzw +mad r1.xyzw, cb0[26].xyzw, v0.zzzz, r1.xyzw +add r1.xyzw, r1.xyzw, cb0[27].xyzw +div r1.xyz, r1.xyzx, r1.wwww +lt r2.x, l(0.000000), v3.w +movc r2.x, r2.x, l(1.000000), l(-1.000000) +eq r2.y, l(0.000000), cb0[86].w +add r3.xyz, -r1.xyzx, cb0[44].xyzx +mov r4.x, cb0[0].z +mov r4.y, cb0[1].z +mov r4.z, cb0[2].z +movc r2.yzw, r2.yyyy, r3.xxyz, r4.xxyz +dp3 r3.x, r2.yzwy, r2.yzwy +max r3.y, r3.x, l(9.999999939E-09) +rsq r3.y, r3.y +mul r5.xyz, r2.yzwy, r3.yyyy +mul r3.x, r3.y, r3.x +add r3.zw, -v1.xxxy, v1.zzzw +mad r6.xy, cb2[2].wwww, r3.zwzz, v1.xyxx +mad r6.xy, r6.xyxx, cb2[11].xyxx, cb2[11].zwzz +sample_b_indexable(texture2d)(float,float,float,float) r6.xyzw, r6.xyxx, t2.xyzw, s4, cb0[108].x +mad r3.zw, cb2[3].xxxx, r3.zzzw, v1.xxxy +mad r3.zw, r3.zzzw, cb2[12].xxxy, cb2[12].zzzw +add r4.w, cb0[108].x, cb2[3].y +sample_b_indexable(texture2d)(float,float,float,float) r7.xyzw, r3.zwzz, t3.xyzw, s5, r4.w +mad r3.zw, r7.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +lt r7.xy, |r3.zwzz|, l(0.012000, 0.012000, 0.000000, 0.000000) +movc r3.zw, r7.xxxy, l(0,0,0,0), r3.zzzw +mul r7.xy, r3.zwzz, cb2[0].xxxx +add r8.xy, -r6.wwww, r7.wzww +mad r4.w, cb2[1].z, r8.x, r6.w +mul r4.w, r4.w, cb2[8].w +mad r5.w, r4.w, v4.x, -r4.w +mad r9.w, cb2[23].x, r5.w, r4.w +add r4.w, -cb2[0].z, cb2[0].w +mad r10.w, r7.z, r4.w, cb2[0].z +add_sat r4.w, l(-1.000000), cb2[3].w +add r5.w, -r6.w, cb2[4].y +mad r4.w, r4.w, r5.w, r6.w +mov_sat r5.w, cb2[21].y +add_sat r8.xz, l(-1.000000, 0.000000, -2.000000, 0.000000), cb2[21].yyyy +mad r6.w, r8.x, r8.y, r6.w +add r7.z, -r6.w, r7.w +mad r6.w, r8.z, r7.z, r6.w +add r6.w, r6.w, l(-1.000000) +mad r6.w, r5.w, r6.w, l(1.000000) +mad_sat r6.w, r6.w, l(1.11111116), l(-0.0555555597) +ge r7.z, r6.w, l(0.100000) +and r7.z, r7.z, l(0x3f800000) +mul r8.x, r7.z, cb1[r0.x + 15].w +mul r6.xyz, r6.xyzx, cb2[8].xyzx +mul_sat r6.xyz, r6.xyzx, cb2[4].zzzz +add r8.yzw, -r6.xxyz, cb2[8].xxyz +mad r6.xyz, cb2[4].xxxx, r8.yzwy, r6.xyzx +mad r7.z, -cb1[r0.x + 15].w, r7.z, l(1.000000) +mad r8.xyz, cb1[r0.x + 15].xyzx, r8.xxxx, r7.zzzz +mul r11.xyz, r6.xyzx, r8.xyzx +mul r12.xyz, v2.zxyz, v3.yzxy +mad r12.xyz, v2.yzxy, v3.zxyz, -r12.xyzx +mul r12.xyz, r2.xxxx, r12.xyzx +mul r12.xyz, r7.yyyy, r12.xyzx +mad r7.xyz, v3.xyzx, r7.xxxx, r12.xyzx +dp2 r2.x, r3.zwzz, r3.zwzz +add r2.x, -r2.x, l(1.000000) +max r2.x, r2.x, l(0.000000) +sqrt r2.x, r2.x +lt r3.z, l(0.000000), cb2[1].w +movc r3.z, r3.z, l(-1.000000), l(1.000000) +movc r3.z, v8.x, l(1.000000), r3.z +mul r2.x, r2.x, r3.z +mad r7.xyz, v2.xyzx, r2.xxxx, r7.xyzx +dp3 r2.x, r7.xyzx, r7.xyzx +rsq r2.x, r2.x +mul r12.xyz, r2.xxxx, r7.xyzx +dp3 r2.x, -r5.xyzx, r12.xyzx +mul r3.z, cb2[22].x, cb2[22].x +mad r3.w, -r2.x, r2.x, l(1.000000) +mad r3.z, -r3.z, r3.w, l(1.000000) +sqrt r3.w, r3.z +mad r3.w, cb2[22].x, r2.x, r3.w +ge r3.z, r3.z, l(0.000000) +mul r7.xyz, r12.xyzx, r3.wwww +mad r7.xyz, cb2[22].xxxx, -r5.xyzx, -r7.xyzx +and r7.xyz, r3.zzzz, r7.xyzx +mul r3.zw, r7.yyyy, cb0[1].xxxy +mad r3.zw, cb0[0].xxxy, r7.xxxx, r3.zzzw +mad r3.zw, cb0[2].xxxy, r7.zzzz, r3.zzzw +mul r3.zw, r3.zzzw, cb2[22].yyyy +mad r0.zw, r3.zzzw, r9.wwww, r0.zzzw +sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, r0.zwzz, t4.xyzw, s6, cb0[108].x +max r0.z, v5.z, l(9.999999939E-09) +div r0.zw, v5.xxxy, r0.zzzz +max r3.z, v6.z, l(9.999999939E-09) +div r3.zw, v6.xxxy, r3.zzzz +add r13.xy, r0.zwzz, -r3.zwzz +mul r0.z, l(0.080000), cb2[0].y +mul r14.xyz, r4.wwww, r11.xyzx +mad r14.xyz, r6.xyzx, r8.xyzx, -r14.xyzx +mad r0.z, -r0.z, r4.w, r0.z +mad r15.xyz, r11.xyzx, r4.wwww, r0.zzzz +dp3 r0.z, r12.xyzx, r5.xyzx +mad r16.xyzw, r10.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r0.w, r16.x, r16.x +max r0.z, r0.z, l(0.000000) +mul r3.z, r0.z, l(-9.280000) +exp r3.z, r3.z +min r0.w, r0.w, r3.z +mad r0.w, r0.w, r16.x, r16.y +mad r3.zw, r0.wwww, l(0.000000, 0.000000, -1.040000, 1.040000), r16.zzzw +eq r0.w, l(1.000000), cb0[113].y +mul r16.xyzw, r1.yyyy, cb0[241].xyzw +mad r16.xyzw, cb0[240].xyzw, r1.xxxx, r16.xyzw +mad r16.xyzw, cb0[242].xyzw, r1.zzzz, r16.xyzw +add r16.xyzw, r16.xyzw, cb0[243].xyzw +div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), r16.w +mul r16.xyz, r16.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) +mul r16.xyz, r4.wwww, r16.xyzx +mad_sat r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +mul r16.xy, r16.xyxx, cb0[82].xyxx +ftou r17.xy, r16.xyxx +mad r4.w, cb0[84].z, r16.z, cb0[84].w +div r17.z, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w +ftou r16.xy, v0.xyxx +mul r4.w, r1.y, cb0[1].z +mad r4.w, cb0[0].z, r1.x, r4.w +mad r4.w, cb0[2].z, r1.z, r4.w +add r4.w, r4.w, cb0[3].z +mov r16.z, |r4.w| +movc r16.xyz, r0.wwww, r17.xyzx, r16.xyzx +mad r17.xyz, r12.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r1.xyzx +mad r18.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r18.xyz, r17.xzyx, -r18.xyzx +max r0.w, |r18.y|, |r18.x| +add r0.w, r0.w, l(-464.000000) +mul_sat r0.w, r0.w, l(0.031250) +add r4.w, |r18.z|, l(-208.000000) +mul_sat r4.w, r4.w, l(0.031250) +max r0.w, r0.w, r4.w +ne r4.w, l(0.000000), cb0[210].w +lt r8.w, r0.w, l(1.000000) +and r4.w, r4.w, r8.w +if_nz r4.w + mad r18.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r18.xyz, r17.xzyx, -r18.xyzx + max r4.w, |r18.y|, |r18.x| + add r4.w, r4.w, l(-29.000000) + mul_sat r4.w, r4.w, l(0.500000) + add r8.w, |r18.z|, l(-13.000000) + mul_sat r8.w, r8.w, l(0.500000) + max r4.w, r4.w, r8.w + lt r8.w, r4.w, l(1.000000) + if_nz r8.w + mad r18.xyz, r17.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r18.xyzx, cb0[211].xyzx + round_ni r19.xyz, r19.xyzx + mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r19.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r18.xyzx, t11.yzwx, s1, l(0.000000) + add r8.w, -r4.w, l(1.000000) + mul r11.w, l(0.500000), cb0[211].y + mad r13.w, -cb0[211].y, l(0.500000), l(1.000000) + max r11.w, r11.w, r18.y + min r11.w, r13.w, r11.w + mul r18.w, r11.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t12.xyzw, s0, l(0.000000) + mad r11.w, r20.w, r8.w, r0.w + add r21.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t12.xyzw, s0, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r19.yyyy, r21.xyzx + mov r21.w, r19.y + mul r21.xyzw, r8.wwww, r21.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t12.xyzw, s0, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r19.xxxx, r18.xyzx + mov r18.w, r19.x + mul r18.xyzw, r8.wwww, r18.xyzw + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r19.wwww, r20.xyzx + mul r19.xyzw, r8.wwww, r19.xyzw + else + mov r21.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r19.xyzw, l(0,0,0,0) + mov r11.w, r0.w + endif + mad r20.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r20.xyz, r17.xzyx, -r20.xyzx + max r8.w, |r20.y|, |r20.x| + add r8.w, r8.w, l(-116.000000) + mul_sat r8.w, r8.w, l(0.125000) + add r13.w, |r20.z|, l(-52.000000) + mul_sat r13.w, r13.w, l(0.125000) + max r8.w, r8.w, r13.w + lt r13.w, r8.w, l(1.000000) + if_nz r13.w + mad r20.xyz, r17.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r22.xyz, r20.xyzx, cb0[211].xyzx + round_ni r22.xyz, r22.xyzx + mad r20.xyz, r20.xyzx, cb0[211].xyzx, -r22.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r20.xyzx, t13.yzwx, s1, l(0.000000) + add r13.w, -r8.w, l(1.000000) + mul r4.w, r4.w, r13.w + mul r13.w, l(0.500000), cb0[211].y + mad r14.w, -cb0[211].y, l(0.500000), l(1.000000) + max r13.w, r13.w, r20.y + min r13.w, r14.w, r13.w + mul r20.w, r13.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyzw, r20.xwzx, t14.xyzw, s0, l(0.000000) + mad r11.w, r23.w, r4.w, r11.w + add r24.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t14.xyzw, s0, l(0.000000) + mad r24.xyz, r24.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r24.xyz, r22.yyyy, r24.xyzx + mov r24.w, r22.y + mad r21.xyzw, r24.xyzw, r4.wwww, r21.xyzw + add r20.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t14.xyzw, s0, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r22.xxxx, r20.xyzx + mov r20.w, r22.x + mad r18.xyzw, r20.xyzw, r4.wwww, r18.xyzw + mad r20.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r20.xyzx + mad r19.xyzw, r22.xyzw, r4.wwww, r19.xyzw + endif + lt r4.w, l(0.000000), r8.w + if_nz r4.w + mad r17.xyz, r17.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r17.xyzx, cb0[211].xyzx + mul r22.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r20.xyz, r20.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r20.xyzx + mad r20.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r17.xyz, r22.xyzx, r17.xyzx + min r17.xyz, r20.xyzx, r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r23.xyw, r17.xyzx, t15.yzwx, s1, l(0.000000) + add r4.w, -r0.w, l(1.000000) + mul r4.w, r4.w, r8.w + max r8.w, r22.y, r17.y + min r8.w, r20.y, r8.w + mul r17.w, r8.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t16.xyzw, s0, l(0.000000) + add r22.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t16.xyzw, s0, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r23.yyyy, r22.xyzx + mov r22.w, r23.y + mad r21.xyzw, r22.xyzw, r4.wwww, r21.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s0, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r23.xxxx, r17.xyzx + mov r17.w, r23.x + mad r18.xyzw, r17.xyzw, r4.wwww, r18.xyzw + mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r23.wwww, r17.xyzx + mad r19.xyzw, r23.xyzw, r4.wwww, r19.xyzw + mad r11.w, r20.w, r4.w, r11.w + endif + mad_sat r4.w, r11.w, l(2.000000), l(-1.000000) + add r17.x, -r0.w, r4.w + add r0.w, r0.w, r4.w + mul r17.y, r0.w, l(0.500000) +else + mov r21.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r19.xyzw, l(0,0,0,0) + mov r17.xy, l(0,1.000000,0,0) +endif +mul r20.xyzw, r17.yyyx, cb0[213].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r17.zw, r17.yyyx, cb0[213].wwwy +mad r20.w, r17.w, l(0.375000), r17.z +add r19.xyzw, r19.xyzw, r20.xyzw +mul r20.xyzw, r17.yyyx, cb0[214].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r17.zw, r17.yyyx, cb0[214].wwwy +mad r20.w, r17.w, l(0.375000), r17.z +add r18.xyzw, r18.xyzw, r20.xyzw +mul r20.xyzw, r17.yyyx, cb0[215].xyzw +mad r20.y, r20.w, l(0.500000), r20.y +mul r17.xy, r17.yxyy, cb0[215].wyww +mad r20.w, r17.y, l(0.375000), r17.x +add r17.xyzw, r20.xyzw, r21.xyzw +dp3 r0.w, r19.xyzx, r12.xyzx +add r0.w, r19.w, r0.w +max r19.x, r0.w, l(0.000000) +dp3 r0.w, r18.xyzx, r12.xyzx +add r0.w, r18.w, r0.w +max r19.y, r0.w, l(0.000000) +dp3 r0.w, r17.xyzx, r12.xyzx +add r0.w, r17.w, r0.w +max r19.z, r0.w, l(0.000000) +add r0.w, r2.x, r2.x +mad r17.xyz, r12.xyzx, -r0.wwww, -r5.xyzx +add r0.w, l(-1.000000), cb0[113].x +max r2.x, r10.w, l(0.001000) +log r2.x, r2.x +mad r2.x, -r2.x, l(1.200000), l(1.000000) +add r0.w, r0.w, -r2.x +utof r18.xy, r16.xyxx +mul r18.zw, r18.xxxy, cb3[0].wwww +round_ni r18.zw, r18.zzzw +add r2.x, r16.z, -cb3[2].y +round_ni r2.x, r2.x +add r4.w, l(-1.000000), cb3[1].x +max r8.w, r2.x, l(0.000000) +min r4.w, r4.w, r8.w +ge r2.x, r4.w, r2.x +mad r8.w, r18.w, cb3[0].x, r18.z +ftoi r8.w, r8.w +iadd r8.w, r8.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r8.w, r8.w, l(0), t0.xxxx +ftoi r4.w, r4.w +iadd r4.w, r4.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r4.w, r4.w, l(0), t0.xxxx +and r4.w, r4.w, r8.w +and r2.x, r2.x, r4.w +mul r20.xyz, r19.xyzx, cb0[111].xxxx +dp3 r4.w, r20.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r1.w, l(1.000000) +mov r12.w, l(1.000000) +mov r20.xyz, l(0,0,0,0) +mov r8.w, l(1.000000) +mov r11.w, r2.x +mov r13.w, l(0) +loop + lt r14.w, l(0.010000), r8.w + ine r15.w, r11.w, l(0) + and r15.w, r14.w, r15.w + if_nz r15.w + firstbit_lo r15.w, r11.w + ishl r17.w, l(1), r15.w + xor r11.w, r11.w, r17.w + ishl r15.w, r15.w, l(3) + dp4 r21.x, cb3[r15.w + 6].xyzw, r1.xyzw + dp4 r21.y, cb3[r15.w + 7].xyzw, r1.xyzw + dp4 r21.z, cb3[r15.w + 8].xyzw, r1.xyzw + ge r22.xyz, cb3[r15.w + 5].xyzx, |r21.xyzx| + and r17.w, r22.y, r22.x + and r17.w, r22.z, r17.w + if_nz r17.w + mul r17.w, l(0.100000), cb3[r15.w + 5].x + mul r22.xyz, |r21.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.zw, r22.xxxy, r22.xxxy + add r22.xyw, -|r21.xyxz|, cb3[r15.w + 5].xyxz + mul r22.xyw, r22.xyxw, cb3[r15.w + 9].xyxz + eq r19.w, l(1.000000), cb3[r15.w + 10].x + if_nz r19.w + dp3 r23.x, cb3[r15.w + 6].xyzx, r17.xyzx + dp3 r23.y, cb3[r15.w + 7].xyzx, r17.xyzx + dp3 r23.z, cb3[r15.w + 8].xyzx, r17.xyzx + add r24.xyz, -r21.xyzx, cb3[r15.w + 5].xyzx + div r24.xyz, r24.xyzx, r23.xyzx + add r25.xyz, -r21.xyzx, -cb3[r15.w + 5].xyzx + div r25.xyz, r25.xyzx, r23.xyzx + lt r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + movc r24.xyz, r26.xyzx, r24.xyzx, r25.xyzx + min r19.w, r24.y, r24.x + min r19.w, r24.z, r19.w + mad r21.xyz, r23.xyzx, r19.wwww, r21.xyzx + else + mov r21.xyz, r17.xyzx + endif + dp3 r19.w, r21.xyzx, r21.xyzx + rsq r19.w, r19.w + mul r21.xyz, r19.wwww, r21.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx + lt r24.xyz, r21.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r23.xyz, -r23.xyzx, r24.xyzx + itof r23.xyz, r23.xyzx + dp3 r19.w, r21.xyzx, r23.xyzx + div r21.xyz, r21.xyzx, r19.wwww + lt r19.w, r21.z, l(0.000000) + add r21.zw, -|r21.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r21.zw, r21.zzzw, r23.xxxy + movc r21.xy, r19.wwww, r21.zwzz, r21.xyxx + dp4 r19.w, cb3[r15.w + 4].xyzw, r12.xyzw + max r19.w, r19.w, l(0.000000) + max r19.w, r19.w, l(0.000100) + min r20.w, r22.w, r22.y + min r20.w, r20.w, r22.x + add r18.z, r18.w, r18.z + mad r18.z, r22.z, r22.z, r18.z + mad r17.w, r17.w, r17.w, -r18.z + mul r17.w, r17.w, cb3[r15.w + 9].x + mul r17.w, r17.w, cb3[r15.w + 9].x + add r18.z, l(1.000000), -cb3[r15.w + 10].y + mul r17.w, r17.w, r18.z + mul r17.w, r17.w, l(100.000000) + mad_sat r17.w, r20.w, cb3[r15.w + 10].y, r17.w + mul r18.z, r17.w, cb3[r15.w + 10].w + mad r21.xy, r21.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r21.xy, r21.xyxx, cb3[1].wwww, cb3[2].wwww + mov r21.z, cb3[r15.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r21.xyz, r21.xyzx, t1.xyzw, s2, r0.w + mul r21.xyz, r21.xyzx, cb3[r15.w + 9].wwww + div r18.w, r4.w, r19.w + min r18.w, |r18.w|, l(1.000000) + mad r18.w, r18.w, l(2.000000), r4.w + add r19.w, r19.w, l(2.000000) + div r18.w, r18.w, r19.w + add r18.w, r18.w, l(-1.000000) + mad r18.w, r18.w, cb0[112].w, l(1.000000) + mul r21.xyz, r18.wwww, r21.xyzx + mul r21.xyz, r18.zzzz, r21.xyzx + mad r20.xyz, r21.xyzx, r8.wwww, r20.xyzx + mad r15.w, -r17.w, cb3[r15.w + 10].w, l(1.000000) + mul r8.w, r8.w, r15.w + endif + mov r13.w, l(-1) + continue + else + mov r13.w, r14.w + break + endif + mov r13.w, r14.w +endloop +if_nz r13.w + dp3 r1.w, r17.xyzx, r17.xyzx + rsq r1.w, r1.w + mul r21.xyz, r1.wwww, r17.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx + lt r23.xyz, r21.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r22.xyz, -r22.xyzx, r23.xyzx + itof r22.xyz, r22.xyzx + dp3 r1.w, r21.xyzx, r22.xyzx + div r21.xyz, r21.xyzx, r1.wwww + lt r1.w, r21.z, l(0.000000) + add r18.zw, -|r21.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r18.zw, r18.zzzw, r22.xxxy + movc r18.zw, r1.wwww, r18.zzzw, r21.xxxy + mov r12.w, l(1.000000) + dp4 r1.w, cb3[3].xyzw, r12.xyzw + max r1.w, r1.w, l(0.000000) + max r1.w, r1.w, l(0.000100) + mad r18.zw, r18.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r21.xy, r18.zwzz, cb3[1].wwww, cb3[2].wwww + mov r21.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r21.xyz, r21.xyzx, t1.xyzw, s2, r0.w + div r0.w, r4.w, r1.w + min r0.w, |r0.w|, l(1.000000) + mad r0.w, r0.w, l(2.000000), r4.w + add r1.w, r1.w, l(2.000000) + div r0.w, r0.w, r1.w + add r0.w, r0.w, l(-1.000000) + mad r0.w, r0.w, cb0[112].w, l(1.000000) + mul r21.xyz, r0.wwww, r21.xyzx + mad r20.xyz, r21.xyzx, r8.wwww, r20.xyzx +endif +mul r19.xyz, r14.xyzx, r19.xyzx +add r0.w, r7.w, l(-1.000000) +mad r0.w, cb2[1].x, r0.w, l(1.000000) +mul r19.xyz, r0.wwww, r19.xyzx +mul r20.xyz, r20.xyzx, cb0[112].zzzz +// === Glass Fix: Reduce reflection probe intensity === +lt r40.x, l(0.500000), cb13[14].x +if_nz r40.x + mul r20.xyz, r20.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) +endif +mul r20.xyz, r20.xyzx, cb0[111].yyyy +mul_sat r0.w, r15.y, l(50.000000) +mul r0.w, r3.w, r0.w +mad r21.xyz, r15.xyzx, r3.zzzz, r0.wwww +mul r20.xyz, r20.xyzx, r21.xyzx +mad r19.xyz, r19.xyzx, cb0[111].xxxx, r20.xyzx +lt r0.w, cb6[35].w, l(0.990000) +if_nz r0.w + ftoi r0.w, cb6[35].x + ieq r1.w, r0.w, l(2) + movc r20.xyz, r1.wwww, cb6[20].xyzx, cb0[44].xyzx + add r20.xyz, r1.xyzx, -r20.xyzx + dp3 r1.w, r20.xyzx, r20.xyzx + add r1.w, -r1.w, cb6[34].w + mul_sat r1.w, r1.w, cb6[34].z + lt r2.x, l(0.000000), r1.w + if_nz r2.x + ilt r0.w, l(0), r0.w + if_nz r0.w + add r20.xyz, r1.xyzx, -cb6[20].xyzx + add r21.xyz, r1.xyzx, -cb6[21].xyzx + add r22.xyz, r1.xyzx, -cb6[22].xyzx + add r23.xyz, r1.xyzx, -cb6[23].xyzx + dp3 r20.x, r20.xyzx, r20.xyzx + dp3 r20.y, r21.xyzx, r21.xyzx + dp3 r20.z, r22.xyzx, r22.xyzx + dp3 r20.w, r23.xyzx, r23.xyzx + lt r21.x, r20.x, cb6[20].w + lt r21.y, r20.y, cb6[21].w + lt r21.z, r20.z, cb6[22].w + lt r21.w, r20.w, cb6[23].w + and r22.xyzw, r21.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) + movc r21.xyz, r21.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) + add r21.xyz, r21.xyzx, r22.yzwy + max r22.yzw, r21.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) + dp4 r0.w, r22.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) + add r0.w, -r0.w, l(4.000000) + max r0.w, r0.w, l(0.000000) + min r0.w, r0.w, l(3.000000) + add r2.x, r0.w, l(1.000000) + min r2.x, r2.x, l(3.000000) + ftou r2.x, r2.x + dp3 r3.z, r20.yzwy, icb[r2.x + 0].yzwy + div r2.x, r3.z, cb6[r2.x + 20].w + ge r3.z, r2.x, l(0.000000) + ge r2.x, l(1.000000), r2.x + and r2.x, r2.x, r3.z + if_nz r2.x + ftou r2.x, r0.w + add r3.zw, r18.xxxy, l(0.000000, 0.000000, 2.083000, 4.867000) + dp2 r3.z, r3.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r3.z, r3.z + mul r3.z, r3.z, l(52.982918) + frc r3.z, r3.z + dp4 r3.w, r20.xyzw, icb[r2.x + 0].xyzw + div r2.x, r3.w, cb6[r2.x + 20].w + sqrt r2.x, r2.x + add r2.x, r2.x, l(-0.900000) + mul r2.x, r2.x, l(12.000000) + ge r2.x, r2.x, r3.z + and r2.x, r2.x, l(0x3f800000) + add r0.w, r0.w, r2.x + endif + dp3 r2.x, r12.xyzx, cb5[0].xyzx + max r2.x, r2.x, l(0.000000) + min r2.x, r2.x, l(0.900000) + add r2.x, -r2.x, l(1.000000) + ftou r3.z, r0.w + ishl r3.w, r3.z, l(2) + mul r18.zw, r2.xxxx, cb6[r3.z + 24].xxxy + max r2.x, r18.z, l(0.000000) + mad r20.xyz, -cb5[0].xyzx, r2.xxxx, r1.xyzx + mad r20.xyz, r12.xyzx, r18.wwww, r20.xyzx + mul r21.xyz, r20.yyyy, cb6[r3.w + 1].xyzx + mad r20.xyw, cb6[r3.w + 0].xyxz, r20.xxxx, r21.xyxz + mad r20.xyz, cb6[r3.w + 2].xyzx, r20.zzzz, r20.xywx + add r20.xyz, r20.xyzx, cb6[r3.w + 3].xyzx + ge r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + ge r22.xyz, r20.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + or r21.xyz, r21.xyzx, r22.xyzx + or r2.x, r21.y, r21.x + or r2.x, r21.z, r2.x + and r3.z, r20.z, l(0x7fffffff) + ult r3.z, l(0x7f800000), r3.z + or r21.z, r2.x, r3.z + ftoi r0.w, r0.w + mad r3.zw, r20.xxxy, cb6[r0.w + 28].zzzw, cb6[r0.w + 28].xxxy + mad r18.zw, r3.zzzw, cb6[32].zzzw, l(0.000000, 0.000000, 0.500000, 0.500000) + round_ni r18.zw, r18.zzzw + mad r3.zw, r3.zzzw, cb6[32].zzzw, -r18.zzzw + add r22.xyzw, r3.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r23.xw, r22.xxxz, r22.xxxz + min r20.xy, r3.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) + max r22.xz, r3.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r24.xy, r23.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r3.zwzz + add r3.zw, -r3.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r3.zw, -r20.xxxy, r20.xxxy, r3.zzzw + mad r20.xy, -r22.xzxx, r22.xzxx, r22.ywyy + mov r22.x, r24.x + mov r22.y, r3.z + mov r22.z, r20.x + mov r22.w, r23.x + mul r22.xyzw, r22.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r23.x, r24.y + mov r23.y, r3.w + mov r23.z, r20.y + mul r23.xyzw, r23.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r24.xyzw, r22.ywyw, r22.xzxz + add r25.xyzw, r23.yyww, r23.xxzz + div r3.zw, r22.yyyw, r24.zzzw + add r3.zw, r3.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r22.xy, r3.zwzz, cb6[32].xxxx + div r3.zw, r23.yyyw, r25.yyyw + add r3.zw, r3.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r22.zw, r3.zzzw, cb6[32].yyyy + mul r23.xyzw, r24.xyzw, r25.xyzw + mad r24.xyzw, r18.zwzw, cb6[32].xyxy, r22.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.w, r24.xyxx, t5.xxxx, s3, r20.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r24.zwzz, t5.xxxx, s3, r20.z + mul r2.x, r2.x, r23.y + mad r0.w, r23.x, r0.w, r2.x + mad r22.xyzw, r18.zwzw, cb6[32].xyxy, r22.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r22.xyxx, t5.xxxx, s3, r20.z + mad r0.w, r23.z, r2.x, r0.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r22.zwzz, t5.xxxx, s3, r20.z + mad r0.w, r23.w, r2.x, r0.w + movc r21.x, r21.z, l(1.000000), r0.w + else + mov r21.xz, l(1.000000,0,0,0) + endif + else + mov r21.xz, l(1.000000,0,0,0) + endif + lt r0.w, r1.w, l(1.000000) + if_nz r0.w + dp3 r0.w, r12.xyzx, cb5[0].xyzx + max r0.w, r0.w, l(0.000000) + min r0.w, r0.w, l(0.900000) + add r0.w, -r0.w, l(1.000000) + mul r3.zw, r0.wwww, cb6[584].xxxy + mad r20.xyz, -cb5[0].xyzx, r3.zzzz, r1.xyzx + mad r20.xyz, r12.xyzx, r3.wwww, r20.xyzx + mul r3.zw, r20.yyyy, cb6[581].xxxy + mad r3.zw, cb6[580].xxxy, r20.xxxx, r3.zzzw + mad r3.zw, cb6[582].xxxy, r20.zzzz, r3.zzzw + add r3.zw, r3.zzzw, cb6[583].xxxy + lt r18.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r3.zzzw + and r0.w, r18.w, r18.z + lt r18.zw, r3.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + and r2.x, r18.w, r18.z + and r0.w, r0.w, r2.x + if_nz r0.w + mul r0.w, r3.w, cb6[585].z + round_ni r0.w, r0.w + add r0.w, r3.z, r0.w + mul r0.w, r0.w, cb6[585].y + ftou r0.w, r0.w + umin r0.w, r0.w, l(127) + and r2.x, l(0x0000ffff), cb6[r0.w + 587].x + f16tof32 r22.x, r2.x + ge r2.x, r22.x, l(0.000000) + if_nz r2.x + mov r23.x, cb6[576].x + mov r23.y, cb6[577].x + mov r23.z, cb6[578].x + mov r23.w, cb6[r0.w + 587].y + mov r20.w, l(1.000000) + dp4 r23.x, r23.xyzw, r20.xyzw + mov r24.x, cb6[576].y + mov r24.y, cb6[577].y + mov r24.z, cb6[578].y + mov r24.w, cb6[r0.w + 587].z + dp4 r23.y, r24.xyzw, r20.xyzw + mov r24.x, cb6[576].z + mov r24.y, cb6[577].z + mov r24.z, cb6[578].z + mov r24.w, cb6[r0.w + 587].w + dp4 r2.x, r24.xyzw, r20.xyzw + lt r3.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xxxy + lt r4.w, l(0.000000), r2.x + and r3.z, r3.w, r3.z + and r3.z, r4.w, r3.z + lt r18.zw, r23.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + lt r3.w, r2.x, l(1.000000) + and r4.w, r18.w, r18.z + and r3.w, r3.w, r4.w + and r3.z, r3.w, r3.z + if_nz r3.z + ushr r0.w, cb6[r0.w + 587].x, l(16) + f16tof32 r22.y, r0.w + mad r3.zw, r23.xxxy, cb6[584].zzzw, r22.xxxy + mad r18.zw, r3.zzzw, cb6[586].zzzw, l(0.000000, 0.000000, 0.500000, 0.500000) + round_ni r18.zw, r18.zzzw + mad r3.zw, r3.zzzw, cb6[586].zzzw, -r18.zzzw + add r20.xyzw, r3.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r22.xw, r20.xxxz, r20.xxxz + min r20.xz, r3.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + max r23.xy, r3.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r23.zw, r22.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r3.zzzw + add r3.zw, -r3.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r3.zw, -r20.xxxz, r20.xxxz, r3.zzzw + mad r20.xy, -r23.xyxx, r23.xyxx, r20.ywyy + mov r24.x, r23.z + mov r24.y, r3.z + mov r24.z, r20.x + mov r24.w, r22.x + mul r24.xyzw, r24.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r22.x, r23.w + mov r22.y, r3.w + mov r22.z, r20.y + mul r20.xyzw, r22.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r22.xyzw, r24.ywyw, r24.xzxz + add r23.xyzw, r20.yyww, r20.xxzz + div r3.zw, r24.yyyw, r22.zzzw + add r3.zw, r3.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r24.xy, r3.zwzz, cb6[586].xxxx + div r3.zw, r20.yyyw, r23.yyyw + add r3.zw, r3.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r24.zw, r3.zzzw, cb6[586].yyyy + mad r20.xyzw, r18.zwzw, cb6[586].xyxy, r24.xzyz + mad r24.xyzw, r18.zwzw, cb6[586].xyxy, r24.xwyw + mul r22.xyzw, r22.xyzw, r23.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.w, r20.xyxx, t8.xxxx, s3, r2.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.z, r20.zwzz, t8.xxxx, s3, r2.x + mul r3.z, r3.z, r22.y + mad r0.w, r22.x, r0.w, r3.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r3.z, r24.xyxx, t8.xxxx, s3, r2.x + mad r0.w, r22.z, r3.z, r0.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r24.zwzz, t8.xxxx, s3, r2.x + mad r21.y, r22.w, r2.x, r0.w + else + mov r21.y, l(1.000000) + endif + else + mov r21.y, l(1.000000) + endif + else + mov r21.y, l(1.000000) + endif + movc r21.x, r21.z, r21.y, r21.x + else + mov r21.y, l(1.000000) + endif + add r0.w, -r21.y, r21.x + mad r0.w, r1.w, r0.w, r21.y + lt r1.w, l(0.001000), r0.w + if_nz r1.w + add r20.xyz, r1.xyzx, -cb0[173].xyzx + mad r3.zw, cb0[176].xxxz, r20.yyyy, r20.xxxz + mul r18.zw, r3.zzzw, cb0[174].zzzz + mul r20.yw, cb0[175].xxxy, cb0[183].wwww + mad r3.zw, r3.zzzw, cb0[174].zzzz, r20.yyyw + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r3.zwzz, t7.yzwx, s1, l(0.000000) + mad r3.zw, r18.zzzw, cb0[175].wwww, r20.yyyw + sample_l_indexable(texture2d)(float,float,float,float) r2.x, r3.zwzz, t7.xyzw, s1, l(0.000000) + dp2 r3.z, r20.xzxx, r20.xzxx + sqrt r3.z, r3.z + add r3.w, -cb0[174].x, cb0[174].y + add r3.z, r3.z, -cb0[174].x + div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r3.w + mul_sat r3.z, r3.w, r3.z + mad r3.w, r3.z, l(-2.000000), l(3.000000) + mul r3.z, r3.z, r3.z + mul r3.z, r3.z, r3.w + add r2.x, -r1.w, r2.x + mad r1.w, r3.z, r2.x, r1.w + add r1.w, r1.w, l(-1.000000) + mad r1.w, cb0[175].z, r1.w, l(1.000000) + mul r0.w, r0.w, r1.w + endif + add r1.w, -r0.w, cb6[35].z + mad r0.w, cb6[35].w, r1.w, r0.w +else + mov r0.w, cb6[35].z +endif +min r0.w, r0.w, l(1.000000) +add r0.w, r0.w, l(-1.000000) +mad r20.x, cb6[34].x, r0.w, l(1.000000) +lt r0.w, l(0.001000), r20.x +if_nz r0.w + dp3 r0.w, -cb5[0].xyzx, r17.xyzx + mad r21.xyz, cb5[0].xyzx, r0.wwww, r17.xyzx + lt r0.w, r0.w, cb5[4].z + dp3 r1.w, r21.xyzx, r21.xyzx + max r1.w, r1.w, l(0.0000610351562) + rsq r1.w, r1.w + mul r21.xyz, r1.wwww, r21.xyzx + mul r21.xyz, r21.xyzx, cb5[4].yyyy + mad r21.xyz, -cb5[0].xyzx, cb5[4].zzzz, r21.xyzx + dp3 r1.w, r21.xyzx, r21.xyzx + rsq r1.w, r1.w + mul r21.xyz, r1.wwww, r21.xyzx + movc r21.xyz, r0.wwww, r21.xyzx, r17.xyzx + mad r22.xyz, r2.yzwy, r3.yyyy, r21.xyzx + dp3 r0.w, r22.xyzx, r22.xyzx + max r0.w, r0.w, l(0.0000610351562) + rsq r0.w, r0.w + mul r22.xyz, r0.wwww, r22.xyzx + dp3_sat r10.y, r21.xyzx, r12.xyzx + dp3_sat r0.w, r12.xyzx, r22.xyzx + min r10.z, r0.z, l(1.000000) + mul r1.w, r10.w, r10.w + mul r1.w, r1.w, r1.w + mad r2.x, r0.w, r1.w, -r0.w + mad r0.w, r2.x, r0.w, l(1.000000) + dp3_sat r2.x, r5.xyzx, r22.xyzx + add r2.x, -r2.x, l(1.000000) + mul r3.z, r2.x, r2.x + mul r3.z, r3.z, r3.z + mul r3.w, r2.x, r3.z + add r4.w, -r10.w, l(1.000000) + mad r7.w, -r4.w, l(0.383026), l(-0.0761947036) + mad r7.w, r4.w, r7.w, l(1.049970) + mad r4.w, r4.w, r7.w, l(0.409255) + min r4.w, r4.w, l(0.999000) + add r7.w, -r4.w, l(1.000000) + add r21.xyz, -r15.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r21.xyz, r21.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r15.xyzx + mad r2.x, -r3.z, r2.x, l(1.000000) + mad r22.xyz, r15.xyzx, r2.xxxx, r3.wwww + mul r0.w, r0.w, r0.w + div r0.w, r1.w, r0.w + mad r3.zw, -r10.zzzy, r1.wwww, r10.zzzy + mad r3.zw, r3.zzzw, r10.zzzy, r1.wwww + sqrt r3.zw, r3.zzzw + mul r3.zw, r3.zzzw, r10.yyyz + add r1.w, r3.w, r3.z + add r1.w, r1.w, l(0.000100) + div r1.w, l(0.500000), r1.w + mul r0.w, r0.w, r1.w + mul r22.xyz, r0.wwww, r22.xyzx + min r22.xyz, r22.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r23.xyzw, r10.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.w, r23.xyxx, t10.yzwx, s0, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r23.zwzz, t10.yzwx, s0, l(0.000000) + mul r0.w, r0.w, r1.w + mul r0.w, r4.w, r0.w + div r0.w, r0.w, r7.w + mul r23.xyz, r21.xyzx, r21.xyzx + mul r23.xyz, r0.wwww, r23.xyzx + mad r21.xyz, -r21.xyzx, r7.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r21.xyz, r23.xyzx, r21.xyzx + add r21.xyz, r21.xyzx, r22.xyzx + mul r21.xyz, r21.xyzx, cb5[4].xxxx + // === Glass Fix: Reduce sun specular intensity === + lt r40.x, l(0.500000), cb13[14].x + if_nz r40.x + mul r21.xyz, r21.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + endif + max r21.xyz, r21.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r21.xyz, r21.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r22.xyz, r10.yyyy, r14.xyzx + mad r21.xyz, r21.xyzx, r10.yyyy, r22.xyzx + mul r21.xyz, r21.xyzx, cb5[1].xyzx + mov r20.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r20.yzw, r20.xyxx, t9.wxyz, s0, cb0[108].x + add r0.w, -r20.x, l(1.000000) + mad r20.xyz, r21.xyzx, r20.yzwy, -r21.xyzx + mad r20.xyz, r0.wwww, r20.xyzx, r21.xyzx +else + mov r20.xyz, l(0,0,0,0) +endif +mul r3.zw, r18.xxxy, l(0.000000, 0.000000, 0.031250, 0.031250) +round_ni r3.zw, r3.zzzw +mad r0.w, r3.w, cb4[1].y, r3.z +mul r0.w, r0.w, l(8.000000) +ftoi r0.w, r0.w +mad r1.w, -cb0[85].y, cb4[2].w, r16.z +round_ni r1.w, r1.w +add r2.x, l(-1.000000), cb4[1].w +max r3.z, r1.w, l(0.000000) +min r2.x, r2.x, r3.z +mul r3.z, r2.x, l(8.000000) +ftoi r3.z, r3.z +ge r1.w, r2.x, r1.w +iadd r2.x, r3.z, cb0[110].y +mul r3.z, r10.w, r10.w +min r10.x, r0.z, l(1.000000) +add r0.z, -r10.w, l(1.000000) +mad r3.w, -r0.z, l(0.383026), l(-0.0761947036) +mad r3.w, r0.z, r3.w, l(1.049970) +mad r0.z, r0.z, r3.w, l(0.409255) +min r0.z, r0.z, l(0.999000) +add r3.w, -r0.z, l(1.000000) +add r21.xyz, -r15.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r21.xyz, r21.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r15.xyzx +mad r10.yz, r10.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r4.w, r10.yzyy, t10.yzwx, s0, l(0.000000) +mad r22.xyz, -r21.xyzx, r3.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r21.xyz, r21.xyzx, r21.xyzx +mov r23.w, l(1.000000) +mov r24.y, l(1.000000) +mov r25.z, r10.w +mov r26.xyz, l(0,0,0,0) +mov r7.w, l(1.000000) +mov r8.w, l(0) +loop + ilt r10.y, l(7), r8.w + breakc_nz r10.y + iadd r10.y, r0.w, r8.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.y, r10.y, l(0), t0.xxxx + iadd r10.z, r2.x, r8.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.z, r10.z, l(0), t0.xxxx + and r10.y, r10.z, r10.y + and r10.y, r1.w, r10.y + ishl r10.z, r8.w, l(5) + mov r27.xyz, l(0,0,0,0) + mov r11.w, r7.w + mov r12.w, r10.y + loop + breakc_z r12.w + firstbit_lo r13.w, r12.w + ishl r14.w, l(1), r13.w + xor r14.w, r12.w, r14.w + iadd r13.w, r10.z, r13.w + bfi r28.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r13.wwww, l(1, 3, 5, 6) + bfi r15.w, l(29), l(3), r13.w, l(7) + ftou r17.w, cb5[r28.z + 6].w + ieq r17.w, r17.w, l(1) + if_nz r17.w + add r23.xyz, r1.xyzx, -cb5[r28.x + 6].xyzx + and r29.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r28.z + 6].xzyx + and r30.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r28.w + 6].yxzy + ushr r31.xyz, cb5[r28.z + 6].xzyx, l(16, 16, 16, 0) + ushr r32.xyz, cb5[r28.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r29.xyz, r29.xyzx + f16tof32 r30.xyz, r30.xyzx + f16tof32 r31.xyz, r31.xyzx + f16tof32 r32.xyw, r32.yxyz + mov r33.xz, r29.xxzx + mov r33.yw, r31.xxxz + dp4 r17.w, r23.xyzw, r33.xyzw + mov r31.x, r29.y + mov r31.z, r30.y + mov r31.w, r32.x + dp4 r18.z, r23.xyzw, r31.xyzw + mov r32.xz, r30.xxzx + dp4 r18.w, r23.xyzw, r32.xyzw + max r17.w, |r17.w|, |r18.z| + max r17.w, |r18.w|, r17.w + mad r18.z, cb5[r15.w + 6].x, l(0.500000), l(0.500000) + add r17.w, r17.w, -r18.z + mad r18.z, -cb5[r15.w + 6].x, l(0.500000), l(0.500000) + div_sat r17.w, r17.w, r18.z + add r17.w, -r17.w, l(1.000000) + mul r17.w, r17.w, r17.w + else + mov r17.w, l(1.000000) + endif + lt r18.z, l(0.500000), cb5[r28.y + 6].z + lt r18.w, r17.w, l(0.001000) + or r18.w, r18.z, r18.w + if_nz r18.w + mov r12.w, r14.w + continue + endif + ishl r18.w, r13.w, l(3) + bfi r13.w, l(29), l(3), r13.w, l(2) + lt r19.w, cb5[r18.w + 6].w, l(1.500000) + if_nz r19.w + mad r19.w, cb5[r13.w + 6].y, l(0.500000), l(0.500000) + add r23.x, r19.w, -|cb5[r13.w + 6].x| + add r23.y, -r23.x, cb5[r13.w + 6].y + add r19.w, -|r23.x|, l(1.000000) + add r19.w, -|r23.y|, r19.w + max r19.w, r19.w, l(0.000488281250) + ge r20.w, cb5[r13.w + 6].x, l(0.000000) + movc r23.z, r20.w, r19.w, -r19.w + dp3 r19.w, r23.xyzx, r23.xyzx + rsq r19.w, r19.w + mul r23.xyz, r19.wwww, r23.xyzx + add r29.xyz, -r1.xyzx, cb5[r28.x + 6].xyzx + dp3 r19.w, r29.xyzx, r29.xyzx + rsq r20.w, r19.w + mul r30.xyz, r20.wwww, r29.xyzx + ftoi r21.w, cb5[r15.w + 6].w + mul r31.xyz, r23.xyzx, cb5[r13.w + 6].zzzz + mad r32.xyz, -r31.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r29.xyzx + mad r33.xyz, r31.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r29.xyzx + ftou r22.w, cb5[r18.w + 6].w + and r22.w, r22.w, l(1) + ieq r24.z, r22.w, l(0) + not r24.z, r24.z + lt r24.w, l(0.000000), cb5[r13.w + 6].z + and r24.z, r24.w, r24.z + dp3 r24.w, r32.xyzx, r32.xyzx + sqrt r24.w, r24.w + dp3 r25.w, r33.xyzx, r33.xyzx + sqrt r25.w, r25.w + dp3 r26.w, r12.xyzx, r32.xyzx + div r26.w, r26.w, r24.w + dp3 r27.w, r12.xyzx, r33.xyzx + div r27.w, r27.w, r25.w + add r26.w, r26.w, r27.w + mul_sat r34.x, r26.w, l(0.500000) + dp3 r26.w, r32.xyzx, r33.xyzx + mad r24.w, r24.w, r25.w, r26.w + mad r24.w, r24.w, l(0.500000), l(1.000000) + div r34.y, l(1.000000, 1.000000, 1.000000, 1.000000), r24.w + dp3_sat r24.x, r12.xyzx, r30.xyzx + movc r25.xy, r24.zzzz, r34.xyxx, r24.xyxx + lt r24.x, cb5[r28.w + 6].w, l(0.000000) + if_nz r24.x + mul r24.x, cb5[r28.x + 6].w, cb5[r28.x + 6].w + mul r24.x, r19.w, r24.x + mad r24.x, -r24.x, r24.x, l(1.000000) + max r24.x, r24.x, l(0.000000) + add r19.w, r19.w, l(1.000000) + div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), r19.w + and r24.w, r24.z, l(0x3f800000) + add r25.w, -r19.w, r25.y + mad r19.w, r24.w, r25.w, r19.w + mul r24.x, r24.x, r24.x + mul r19.w, r19.w, r24.x + else + mul r33.xyz, r29.xyzx, cb5[r28.x + 6].wwww + dp3 r24.x, r33.xyzx, r33.xyzx + min r24.x, r24.x, l(1.000000) + add r24.x, -r24.x, l(1.000000) + log r24.x, r24.x + mul r24.x, r24.x, cb5[r28.w + 6].w + exp r24.x, r24.x + mul r19.w, r24.x, r25.y + endif + dp3 r23.x, r30.xyzx, -r23.xyzx + add r23.x, r23.x, -cb5[r13.w + 6].z + mul_sat r23.x, r23.x, cb5[r13.w + 6].w + mul r23.x, r23.x, r23.x + movc r23.x, r22.w, l(1.000000), r23.x + mul r19.w, r19.w, r23.x + not r23.x, r24.z + ige r23.y, r21.w, l(0) + and r23.x, r23.y, r23.x + if_nz r23.x + if_z r22.w + ishl r23.x, r21.w, l(2) + mul r33.xyz, r1.yyyy, cb7[r23.x + 33].xywx + mad r33.xyz, cb7[r23.x + 32].xywx, r1.xxxx, r33.xyzx + mad r33.xyz, cb7[r23.x + 34].xywx, r1.zzzz, r33.xyzx + add r23.xyz, r33.xyzx, cb7[r23.x + 35].xywx + div_sat r23.xy, r23.xyxx, r23.zzzz + mad r23.xy, r23.xyxx, cb7[r21.w + 0].zwzz, cb7[r21.w + 0].xyxx + else + ishl r23.z, r21.w, l(2) + dp3 r33.x, -r29.xyzx, cb7[r23.z + 32].xyzx + dp3 r33.y, -r29.xyzx, cb7[r23.z + 33].xyzx + dp3 r33.z, -r29.xyzx, cb7[r23.z + 34].xyzx + lt r23.z, |r33.x|, |r33.y| + and r23.z, r23.z, l(1) + dp2 r24.x, |r33.xyxx|, icb[r23.z + 0].xyxx + lt r24.x, r24.x, |r33.z| + movc r23.z, r24.x, l(2), r23.z + dp3 r24.x, r33.xyzx, icb[r23.z + 0].xyzx + lt r24.x, r24.x, l(0.000000) + bfi r23.z, l(31), l(1), r23.z, r24.x + ushr r24.x, r23.z, l(1) + dp3 r24.x, r33.xyzx, icb[r24.x + 0].xyzx + div r24.w, l(0.000244140625), cb7[r21.w + 0].w + add r24.w, -r24.w, l(0.500000) + utof r25.y, r23.z + ult r25.w, r23.z, l(2) + and r25.w, r25.w, l(2) + dp2 r25.w, r33.xzxx, icb[r25.w + 0].xzxx + mul r25.w, r25.w, icb[r23.z + 4].z + div r25.w, r25.w, |r24.x| + mad r25.y, r25.w, r24.w, r25.y + add r25.y, r25.y, l(0.500000) + mul_sat r29.x, r25.y, l(0.166666672) + iadd r25.y, l(-1), icb[r23.z + 4].y + dp2 r25.y, r33.yzyy, icb[r25.y + 0].xyxx + mul r23.z, r25.y, icb[r23.z + 4].w + div r23.z, r23.z, |r24.x| + mad_sat r29.y, -r23.z, r24.w, l(0.500000) + mad r23.xy, r29.xyxx, cb7[r21.w + 0].zwzz, cb7[r21.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r21.w, r23.xyxx, t18.yzwx, s0, l(0.000000) + mul r19.w, r19.w, r21.w + endif + lt r21.w, l(0.000000), r19.w + if_nz r21.w + if_z r22.w + ftoi r22.w, cb5[r28.y + 6].x + else + add r23.xyz, r1.xyzx, -cb5[r28.x + 6].xyzx + lt r29.xyz, |r23.yzzy|, |r23.xxyx| + and r24.x, r29.y, r29.x + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + ushr r24.w, cb5[r13.w + 6].w, l(24) + ubfe r25.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb5[r13.w + 6].wwww + movc r23.x, r23.x, r24.w, r25.y + and r24.w, l(255), cb5[r13.w + 6].w + movc r23.y, r23.y, r25.w, r24.w + ubfe r24.w, l(8), l(8), cb5[r28.y + 6].x + and r25.y, l(255), cb5[r28.y + 6].x + movc r23.z, r23.z, r24.w, r25.y + movc r23.y, r29.z, r23.y, r23.z + movc r23.x, r24.x, r23.x, r23.y + ilt r23.y, r23.x, l(80) + movc r22.w, r23.y, r23.x, l(-1) + endif + ishl r23.x, r22.w, l(2) + mad r29.xyz, r30.xyzx, cb6[r22.w + 288].xxxx, r1.xyzx + mul r23.y, l(5.000000), cb6[r22.w + 288].y + mad r29.xyz, r12.xyzx, r23.yyyy, r29.xyzx + mul r33.xyzw, r29.yyyy, cb6[r23.x + 65].xyzw + mad r33.xyzw, cb6[r23.x + 64].xyzw, r29.xxxx, r33.xyzw + mad r29.xyzw, cb6[r23.x + 66].xyzw, r29.zzzz, r33.xyzw + add r29.xyzw, r29.xyzw, cb6[r23.x + 67].xyzw + div r23.xyz, r29.xyzx, r29.wwww + ge r29.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx + ge r33.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r24.xw, -cb6[r22.w + 344].xxxy, cb6[r22.w + 344].zzzw + mad r23.xy, r23.xyxx, r24.xwxx, cb6[r22.w + 344].xyxx + mad r24.xw, r23.xxxy, cb6[400].zzzw, l(0.500000, 0.000000, 0.000000, 0.500000) + round_ni r24.xw, r24.xxxw + mad r23.xy, r23.xyxx, cb6[400].zwzz, -r24.xwxx + add r34.xyzw, r23.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r35.xyzw, r34.xxzz, r34.xxzz + add r25.yw, -r23.xxxy, l(0.000000, 1.000000, 0.000000, 1.000000) + min r34.xz, r23.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r36.xy, r23.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r37.xy, r25.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r36.xy, -r36.xyxx, r36.xyxx, r34.ywyy + add r36.xy, r36.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r36.xy, r36.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r35.xz, r35.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r23.xy, r35.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r23.xyxx + mul r38.xy, r23.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r23.xy, -r34.xzxx, r34.xzxx, r25.ywyy + add r23.xy, r23.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r39.xy, r23.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r23.xy, r34.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mov r38.z, r39.x + mov r38.w, r23.x + mov r37.z, r36.x + mov r37.w, r35.x + add r34.xyzw, r37.zwxz, r38.zwxz + mov r39.z, r38.y + mov r39.w, r23.y + mov r36.z, r37.y + mov r36.w, r35.z + add r35.xyz, r36.zywz, r39.zywz + div r37.xyz, r37.xzwx, r34.zwyz + add r37.xyz, r37.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r37.xyz, r37.xyzx, cb6[400].xxxx + div r36.xyz, r36.zywz, r35.xyzx + add r36.xyz, r36.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r36.xyw, r36.xyxz, cb6[400].yyyy + mul r38.xyzw, r34.zwyz, r35.xxxy + mov r37.w, r36.x + mad r39.xyzw, r24.xwxw, cb6[400].xyxy, r37.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r39.xyxx, t6.xxxx, s3, r23.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.y, r39.zwzz, t6.xxxx, s3, r23.z + mul r23.y, r23.y, r38.y + mad r23.x, r38.x, r23.x, r23.y + mad r25.yw, r24.xxxw, cb6[400].xxxy, r37.zzzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.y, r25.ywyy, t6.xxxx, s3, r23.z + mad r23.x, r38.z, r23.y, r23.x + mov r36.z, r37.x + mad r39.xyzw, r24.xwxw, cb6[400].xyxy, r36.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.y, r39.xyxx, t6.xxxx, s3, r23.z + mad r23.x, r38.w, r23.y, r23.x + mul r38.xyzw, r34.xyzw, r35.yyzz + mov r36.xz, r37.yyzy + mad r37.xyzw, r24.xwxw, cb6[400].xyxy, r36.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.y, r37.xyxx, t6.xxxx, s3, r23.z + mad r23.x, r38.x, r23.y, r23.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.y, r37.zwzz, t6.xxxx, s3, r23.z + mad r23.x, r38.y, r23.y, r23.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.y, r39.zwzz, t6.xxxx, s3, r23.z + mad r23.x, r38.z, r23.y, r23.x + ige r23.y, r22.w, l(0) + or r29.xyz, r29.xyzx, r33.xyzx + or r25.y, r29.y, r29.x + or r25.y, r29.z, r25.y + and r25.w, r23.z, l(0x7fffffff) + ult r25.w, l(0x7f800000), r25.w + or r25.y, r25.w, r25.y + mad r29.xyzw, r24.xwxw, cb6[400].xyxy, r36.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.x, r29.xyxx, t6.xxxx, s3, r23.z + mad r23.x, r38.w, r24.x, r23.x + mul r24.x, r34.y, r35.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r23.z, r29.zwzz, t6.xxxx, s3, r23.z + mad r23.x, r24.x, r23.z, r23.x + add r23.x, r23.x, l(-1.000000) + mad r22.w, cb6[r22.w + 288].w, r23.x, l(1.000000) + movc r22.w, r25.y, l(1.000000), r22.w + movc r22.w, r23.y, r22.w, l(1.000000) + else + mov r22.w, l(1.000000) + endif + if_nz r24.z + dp3 r23.x, r17.xyzx, r31.xyzx + mul_sat r23.y, r20.w, cb5[r13.w + 6].z + mad r23.y, r23.y, l(0.500000), r3.z + min r23.y, r23.y, l(1.000000) + div r23.y, r3.z, r23.y + mad r24.xzw, r17.xxyz, r23.xxxx, -r31.xxyz + dp3 r23.z, r32.xyzx, r24.xzwx + mul r23.x, r23.x, r23.x + mad r23.x, cb5[r13.w + 6].z, cb5[r13.w + 6].z, -r23.x + div_sat r23.x, r23.z, r23.x + mad r24.xzw, r31.xxyz, r23.xxxx, r32.xxyz + dp3 r23.x, r24.xzwx, r24.xzwx + rsq r23.x, r23.x + mul r30.xyz, r23.xxxx, r24.xzwx + else + mov r23.y, l(1.000000) + endif + if_nz r21.w + mul_sat r20.w, r20.w, cb5[r15.w + 6].y + mad r24.xzw, r2.yyzw, r3.yyyy, r30.xxyz + dp3 r21.w, r24.xzwx, r24.xzwx + max r21.w, r21.w, l(0.0000610351562) + rsq r21.w, r21.w + mul r24.xzw, r21.wwww, r24.xxzw + dp3_sat r21.w, r12.xyzx, r24.xzwx + dp3_sat r23.x, r5.xyzx, r24.xzwx + lt r23.z, l(0.000000), r20.w + mul r20.w, r20.w, r20.w + mad r24.x, r23.x, l(3.600000), l(0.400000) + div r20.w, r20.w, r24.x + mad r20.w, r10.w, r10.w, r20.w + min r20.w, r20.w, l(1.000000) + movc r20.w, r23.z, r20.w, r3.z + mul r20.w, r20.w, r20.w + mad r23.z, r21.w, r20.w, -r21.w + mad r21.w, r23.z, r21.w, l(1.000000) + add r23.x, -r23.x, l(1.000000) + mul r23.z, r23.x, r23.x + mul r23.z, r23.z, r23.z + mul r24.x, r23.x, r23.z + mad r23.x, -r23.z, r23.x, l(1.000000) + mad r24.xzw, r15.xxyz, r23.xxxx, r24.xxxx + mul r21.w, r21.w, r21.w + div r21.w, r20.w, r21.w + mul r21.w, r23.y, r21.w + mad r23.x, -r10.x, r20.w, r10.x + mad r23.x, r23.x, r10.x, r20.w + sqrt r23.x, r23.x + mad r23.y, -r25.x, r20.w, r25.x + mad r20.w, r23.y, r25.x, r20.w + sqrt r20.w, r20.w + mul r20.w, r10.x, r20.w + mad r20.w, r25.x, r23.x, r20.w + add r20.w, r20.w, l(0.000100) + div r20.w, l(0.500000), r20.w + mul r20.w, r20.w, r21.w + mul r23.xyz, r20.wwww, r24.xzwx + min r23.xyz, r23.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r24.xz, r25.xxzx, l(0.968750, 0.000000, 0.968750, 0.000000), l(0.015625, 0.000000, 0.015625, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r20.w, r24.xzxx, t10.yzwx, s0, l(0.000000) + mul r20.w, r4.w, r20.w + mul r20.w, r0.z, r20.w + div r20.w, r20.w, r3.w + mul r24.xzw, r20.wwww, r21.xxyz + div r24.xzw, r24.xxzw, r22.xxyz + add r23.xyz, r23.xyzx, r24.xzwx + mul r23.xyz, r23.xyzx, cb5[r15.w + 6].zzzz + max r23.xyz, r23.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r23.xyz, r23.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r24.xzw, r14.xxyz, r25.xxxx + mad r23.xyz, r23.xyzx, r25.xxxx, r24.xzwx + mul r24.xzw, r19.wwww, cb5[r18.w + 6].xxyz + mul r24.xzw, r22.wwww, r24.xxzw + mul r24.xzw, r17.wwww, r24.xxzw + mul r23.xyz, r23.xyzx, r24.xzwx + else + mov r23.xyz, l(0,0,0,0) + endif + else + if_z r18.z + mad r17.w, cb5[r13.w + 6].y, l(0.500000), l(0.500000) + add r29.x, r17.w, -|cb5[r13.w + 6].x| + add r29.y, -r29.x, cb5[r13.w + 6].y + add r17.w, -|r29.x|, l(1.000000) + add r17.w, -|r29.y|, r17.w + max r17.w, r17.w, l(0.000488281250) + ge r18.z, cb5[r13.w + 6].x, l(0.000000) + movc r29.z, r18.z, r17.w, -r17.w + dp3 r17.w, r29.xyzx, r29.xyzx + rsq r17.w, r17.w + mul r24.xzw, r17.wwww, r29.xxyz + add r25.xyw, -r1.xyxz, cb5[r28.x + 6].xyxz + dp3 r17.w, r25.xywx, r25.xywx + rsq r18.z, r17.w + mul r29.xyz, r18.zzzz, r25.xywx + ftoi r15.w, cb5[r15.w + 6].w + mul r30.xyz, r24.xzwx, cb5[r13.w + 6].zzzz + mad r31.xyz, -r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xywx + mad r30.xyz, r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xywx + ftou r18.z, cb5[r18.w + 6].w + and r18.z, r18.z, l(1) + ieq r18.w, r18.z, l(0) + not r18.w, r18.w + lt r19.w, l(0.000000), cb5[r13.w + 6].z + and r18.w, r18.w, r19.w + dp3 r19.w, r31.xyzx, r31.xyzx + sqrt r19.w, r19.w + dp3 r20.w, r30.xyzx, r30.xyzx + sqrt r20.w, r20.w + dp3 r21.w, r31.xyzx, r30.xyzx + mad r19.w, r19.w, r20.w, r21.w + mad r19.w, r19.w, l(0.500000), l(1.000000) + div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), r19.w + movc r19.w, r18.w, r19.w, l(1.000000) + lt r20.w, cb5[r28.w + 6].w, l(0.000000) + if_nz r20.w + mul r20.w, cb5[r28.x + 6].w, cb5[r28.x + 6].w + mul r20.w, r17.w, r20.w + mad r20.w, -r20.w, r20.w, l(1.000000) + max r20.w, r20.w, l(0.000000) + add r17.w, r17.w, l(1.000000) + div r17.w, l(1.000000, 1.000000, 1.000000, 1.000000), r17.w + and r21.w, r18.w, l(0x3f800000) + add r22.w, -r17.w, r19.w + mad r17.w, r21.w, r22.w, r17.w + mul r20.w, r20.w, r20.w + mul r17.w, r17.w, r20.w + else + mul r30.xyz, r25.xywx, cb5[r28.x + 6].wwww + dp3 r20.w, r30.xyzx, r30.xyzx + min r20.w, r20.w, l(1.000000) + add r20.w, -r20.w, l(1.000000) + log r20.w, r20.w + mul r20.w, r20.w, cb5[r28.w + 6].w + exp r20.w, r20.w + mul r17.w, r19.w, r20.w + endif + dp3 r19.w, r29.xyzx, -r24.xzwx + add r19.w, r19.w, -cb5[r13.w + 6].z + mul_sat r19.w, r19.w, cb5[r13.w + 6].w + mul r19.w, r19.w, r19.w + movc r19.w, r18.z, l(1.000000), r19.w + mul r17.w, r17.w, r19.w + not r18.w, r18.w + ige r19.w, r15.w, l(0) + and r18.w, r18.w, r19.w + if_nz r18.w + if_z r18.z + ishl r18.w, r15.w, l(2) + mul r24.xzw, r1.yyyy, cb7[r18.w + 33].xxyw + mad r24.xzw, cb7[r18.w + 32].xxyw, r1.xxxx, r24.xxzw + mad r24.xzw, cb7[r18.w + 34].xxyw, r1.zzzz, r24.xxzw + add r24.xzw, r24.xxzw, cb7[r18.w + 35].xxyw + div_sat r24.xz, r24.xxzx, r24.wwww + mad r24.xz, r24.xxzx, cb7[r15.w + 0].zzwz, cb7[r15.w + 0].xxyx + else + ishl r18.w, r15.w, l(2) + dp3 r30.x, -r25.xywx, cb7[r18.w + 32].xyzx + dp3 r30.y, -r25.xywx, cb7[r18.w + 33].xyzx + dp3 r30.z, -r25.xywx, cb7[r18.w + 34].xyzx + lt r18.w, |r30.x|, |r30.y| + and r18.w, r18.w, l(1) + dp2 r19.w, |r30.xyxx|, icb[r18.w + 0].xyxx + lt r19.w, r19.w, |r30.z| + movc r18.w, r19.w, l(2), r18.w + dp3 r19.w, r30.xyzx, icb[r18.w + 0].xyzx + lt r19.w, r19.w, l(0.000000) + bfi r18.w, l(31), l(1), r18.w, r19.w + ushr r19.w, r18.w, l(1) + dp3 r19.w, r30.xyzx, icb[r19.w + 0].xyzx + div r20.w, l(0.000244140625), cb7[r15.w + 0].w + add r20.w, -r20.w, l(0.500000) + utof r21.w, r18.w + ult r22.w, r18.w, l(2) + and r22.w, r22.w, l(2) + dp2 r22.w, r30.xzxx, icb[r22.w + 0].xzxx + mul r22.w, r22.w, icb[r18.w + 4].z + div r22.w, r22.w, |r19.w| + mad r21.w, r22.w, r20.w, r21.w + add r21.w, r21.w, l(0.500000) + mul_sat r25.x, r21.w, l(0.166666672) + iadd r21.w, l(-1), icb[r18.w + 4].y + dp2 r21.w, r30.yzyy, icb[r21.w + 0].xyxx + mul r18.w, r21.w, icb[r18.w + 4].w + div r18.w, r18.w, |r19.w| + mad_sat r25.y, -r18.w, r20.w, l(0.500000) + mad r24.xz, r25.xxyx, cb7[r15.w + 0].zzwz, cb7[r15.w + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r15.w, r24.xzxx, t18.yzwx, s0, l(0.000000) + mul r17.w, r15.w, r17.w + endif + lt r15.w, l(0.000000), r17.w + if_nz r15.w + if_z r18.z + ftoi r15.w, cb5[r28.y + 6].x + else + add r24.xzw, r1.xxyz, -cb5[r28.x + 6].xxyz + lt r25.xyw, |r24.zwzw|, |r24.xxxz| + and r17.w, r25.y, r25.x + lt r24.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xxzw + ushr r18.z, cb5[r13.w + 6].w, l(24) + ubfe r25.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r13.w + 6].wwww + movc r18.z, r24.x, r18.z, r25.x + and r13.w, l(255), cb5[r13.w + 6].w + movc r13.w, r24.z, r25.y, r13.w + ubfe r18.w, l(8), l(8), cb5[r28.y + 6].x + and r19.w, l(255), cb5[r28.y + 6].x + movc r18.w, r24.w, r18.w, r19.w + movc r13.w, r25.w, r13.w, r18.w + movc r13.w, r17.w, r18.z, r13.w + ilt r17.w, r13.w, l(80) + movc r15.w, r17.w, r13.w, l(-1) + endif + ishl r13.w, r15.w, l(2) + mad r24.xzw, r29.xxyz, cb6[r15.w + 288].xxxx, r1.xxyz + mul r17.w, l(5.000000), cb6[r15.w + 288].y + mad r24.xzw, r12.xxyz, r17.wwww, r24.xxzw + mul r28.xyzw, r24.zzzz, cb6[r13.w + 65].xyzw + mad r28.xyzw, cb6[r13.w + 64].xyzw, r24.xxxx, r28.xyzw + mad r28.xyzw, cb6[r13.w + 66].xyzw, r24.wwww, r28.xyzw + add r28.xyzw, r28.xyzw, cb6[r13.w + 67].xyzw + div r24.xzw, r28.xxyz, r28.wwww + ge r25.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xzxw + ge r28.xyz, r24.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r18.zw, -cb6[r15.w + 344].xxxy, cb6[r15.w + 344].zzzw + mad r18.zw, r24.xxxz, r18.zzzw, cb6[r15.w + 344].xxxy + mad r24.xz, r18.zzwz, cb6[400].zzwz, l(0.500000, 0.000000, 0.500000, 0.000000) + round_ni r24.xz, r24.xxzx + mad r18.zw, r18.zzzw, cb6[400].zzzw, -r24.xxxz + add r29.xyzw, r18.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r30.xyzw, r29.xxzz, r29.xxzz + add r29.xz, -r18.zzwz, l(1.000000, 0.000000, 1.000000, 0.000000) + min r31.xy, r18.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) + max r31.zw, r18.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r32.xy, r29.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r31.zw, -r31.zzzw, r31.zzzw, r29.yyyw + add r31.zw, r31.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r33.xy, r31.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r30.xz, r30.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r18.zw, r30.yyyw, l(0.000000, 0.000000, 0.500000, 0.500000), -r18.zzzw + mul r34.xy, r18.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r18.zw, -r31.xxxy, r31.xxxy, r29.xxxz + add r18.zw, r18.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r31.xy, r18.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r18.zw, r29.yyyw, l(0.000000, 0.000000, 0.160000, 0.160000) + mov r34.z, r31.x + mov r34.w, r18.z + mov r32.z, r33.x + mov r32.w, r30.x + add r29.xyzw, r32.zwxz, r34.zwxz + mov r31.z, r34.y + mov r31.w, r18.w + mov r33.z, r32.y + mov r33.w, r30.z + add r30.xyz, r31.zywz, r33.zywz + div r31.xyz, r32.xzwx, r29.zwyz + add r31.xyz, r31.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r31.xyz, r31.xyzx, cb6[400].xxxx + div r32.xyz, r33.zywz, r30.xyzx + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyw, r32.xyxz, cb6[400].yyyy + mul r33.xyzw, r29.zwyz, r30.xxxy + mov r31.w, r32.x + mad r34.xyzw, r24.xzxz, cb6[400].xyxy, r31.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r13.w, r34.xyxx, t6.xxxx, s3, r24.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r34.zwzz, t6.xxxx, s3, r24.w + mul r17.w, r17.w, r33.y + mad r13.w, r33.x, r13.w, r17.w + mad r18.zw, r24.xxxz, cb6[400].xxxy, r31.zzzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r18.zwzz, t6.xxxx, s3, r24.w + mad r13.w, r33.z, r17.w, r13.w + mov r32.z, r31.x + mad r34.xyzw, r24.xzxz, cb6[400].xyxy, r32.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r34.xyxx, t6.xxxx, s3, r24.w + mad r13.w, r33.w, r17.w, r13.w + mul r33.xyzw, r29.xyzw, r30.yyzz + mov r32.xz, r31.yyzy + mad r31.xyzw, r24.xzxz, cb6[400].xyxy, r32.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r31.xyxx, t6.xxxx, s3, r24.w + mad r13.w, r33.x, r17.w, r13.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r31.zwzz, t6.xxxx, s3, r24.w + mad r13.w, r33.y, r17.w, r13.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r34.zwzz, t6.xxxx, s3, r24.w + mad r13.w, r33.z, r17.w, r13.w + ige r17.w, r15.w, l(0) + or r25.xyw, r25.xyxw, r28.xyxz + or r18.z, r25.y, r25.x + or r18.z, r25.w, r18.z + and r18.w, r24.w, l(0x7fffffff) + ult r18.w, l(0x7f800000), r18.w + or r18.z, r18.w, r18.z + mad r28.xyzw, r24.xzxz, cb6[400].xyxy, r32.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r28.xyxx, t6.xxxx, s3, r24.w + mad r13.w, r33.w, r18.w, r13.w + mul r18.w, r29.y, r30.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.w, r28.zwzz, t6.xxxx, s3, r24.w + mad r13.w, r18.w, r19.w, r13.w + add r13.w, r13.w, l(-1.000000) + mad r13.w, cb6[r15.w + 288].w, r13.w, l(1.000000) + movc r13.w, r18.z, l(1.000000), r13.w + movc r13.w, r17.w, r13.w, l(1.000000) + else + mov r13.w, l(1.000000) + endif + else + mov r13.w, l(1.000000) + endif + mul r11.w, r11.w, r13.w + mov r23.xyz, l(0,0,0,0) + endif + add r27.xyz, r23.xyzx, r27.xyzx + mov r12.w, r14.w + endloop + mov r7.w, r11.w + add r26.xyz, r26.xyzx, r27.xyzx + iadd r8.w, r8.w, l(1) +endloop +// === Glass Fix: Reduce clustered lights and overall brightness === +lt r40.x, l(0.500000), cb13[14].x +if_nz r40.x + mul r26.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r19.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) +endif +dp3 r0.z, r19.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r1.xzw, -r0.zzzz, r19.xxyz +mad r1.xzw, cb0[184].wwww, r1.xxzw, r0.zzzz +add r2.xyz, -cb2[20].xyzx, cb1[r0.x + 13].xyzx +mad r2.xyz, cb1[r0.x + 13].wwww, r2.xyzx, cb2[20].xyzx +mul r2.xyz, r6.wwww, r2.xyzx +mul r2.xyz, r2.xyzx, cb2[21].xxxx +mul r2.xyz, r2.xyzx, r5.wwww +mad r3.yzw, -r6.xxyz, r8.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000) +mad r3.yzw, cb2[19].yyyy, r3.yyzw, r11.xxyz +mul r2.xyz, r2.xyzx, r3.yzwy +add r0.x, l(1.000000), -cb1[r0.x + 11].x +mul r0.xzw, r0.xxxx, r2.xxyz +add r2.x, l(1.000000), -cb2[19].x +mad r2.x, cb0[109].x, cb2[19].x, r2.x +div r2.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.x +mul r0.xzw, r0.xxzw, r2.xxxx +mad r0.xzw, r1.xxzw, cb0[184].xxyz, r0.xxzw +mad r1.xzw, r26.xxyz, r7.wwww, r20.xxyz +add r0.xzw, r0.xxzw, r1.xxzw +mad r1.x, r1.y, cb0[156].w, cb0[157].w +mad r1.z, r3.x, cb0[154].w, -cb0[153].w +max r1.xz, r1.xxzx, l(0.010000, 0.000000, 0.000000, 0.000000) +mul r1.w, r1.x, l(-1.442695) +exp r1.w, r1.w +add r1.w, -r1.w, l(1.000000) +div r1.x, r1.w, r1.x +mad r1.w, r1.y, cb0[156].w, cb0[158].w +mul r1.w, r1.w, l(1.442695) +exp r1.w, r1.w +mul r1.x, r1.w, r1.x +mul r1.x, r1.x, -r1.z +mul r1.xzw, r1.xxxx, cb0[155].xxyz +mul r1.xzw, r1.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r1.xzw, r1.xxzw +dp3 r2.x, -r5.xyzx, cb0[154].xyzx +mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r2.xxxx, cb0[155].wwww +add r2.y, -r2.z, r2.y +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r16.w, l(7), cb0[108].w + imad r3.yzw, r16.xxyw, l(0, 0x0019660d, 0x0019660d, 0x0019660d), l(0, 0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f) + imad r2.z, r3.z, r3.w, r3.y + imad r2.w, r3.w, r2.z, r3.z + imad r3.y, r2.z, r2.w, r3.w + imad r6.x, r2.w, r3.y, r2.z + dp3 r2.z, -r5.xyzx, -r4.xyzx + add r3.z, r1.y, -cb0[44].y + lt r3.w, l(5.960464478E-08), r2.z + div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z + and r2.z, r2.z, r3.w + mul r2.z, r2.z, cb0[163].w + div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r3.x + mul r4.x, r2.z, r3.w + mad r4.y, r4.x, r3.z, cb0[44].y + mad r3.z, -r4.x, r3.z, r3.z + mul r4.x, r3.z, cb0[159].z + mul r3.z, r3.z, cb0[162].x + max r3.z, r3.z, l(-127.000000) + add r4.z, r4.y, -cb0[159].x + mul r4.z, r4.z, cb0[159].z + max r4.xz, r4.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + exp r4.z, -r4.z + mul r4.z, r4.z, cb0[159].y + lt r4.w, l(5.960464478E-08), |r4.x| + exp r5.x, -r4.x + add r5.x, -r5.x, l(1.000000) + div r5.x, r5.x, r4.x + mad r4.x, -r4.x, l(0.240226507), l(0.693147182) + movc r4.x, r4.w, r5.x, r4.x + add r4.y, r4.y, -cb0[162].z + mul r4.y, r4.y, cb0[162].x + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[162].y + lt r4.w, l(5.960464478E-08), |r3.z| + exp r5.x, -r3.z + add r5.x, -r5.x, l(1.000000) + div r5.x, r5.x, r3.z + mad r3.z, -r3.z, l(0.240226507), l(0.693147182) + movc r3.z, r4.w, r5.x, r3.z + mul r3.z, r3.z, r4.y + mad r3.z, r4.z, r4.x, r3.z + mad r2.z, -r2.z, r3.w, l(1.000000) + mul r2.z, r3.x, r2.z + mul r2.z, r2.z, r3.z + exp r2.z, -r2.z + min r2.z, r2.z, l(1.000000) + max r2.z, r2.z, cb0[161].w + mad_sat r3.zw, r3.xxxx, cb0[160].yyyw, cb0[160].xxxz + add r2.z, r2.z, r3.z + add r2.z, r3.w, r2.z + min r2.z, r2.z, l(1.000000) + imad r6.y, r3.y, r6.x, r2.w + ushr r3.yz, r6.xxyx, l(0, 16, 16, 0) + utof r3.yz, r3.yyzy + mad r3.yz, r3.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + mad r3.yz, r3.yyzy, cb0[167].wwww, r18.xxyx + mul r4.xy, r3.yzyy, cb0[165].xyxx + mad r2.w, r16.z, cb0[164].x, cb0[164].y + log r2.w, r2.w + mul r2.w, r2.w, cb0[164].z + div r4.z, r2.w, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t17.xyzw, s0, l(0.000000) + add r2.w, r16.z, -cb0[166].z + mul_sat r2.w, r2.w, l(1000000.000000) + add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r4.xyzw, r2.wwww, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r2.w, -r2.z, l(1.000000) + mul r3.yzw, r2.wwww, cb0[161].xxyz + mad r3.yzw, r3.yyzw, r4.wwww, r4.xxyz + mul r2.z, r2.z, r4.w +else + add r1.y, r1.y, -cb0[44].y + mul r2.w, r1.y, cb0[159].z + max r2.w, r2.w, l(-127.000000) + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r4.x, cb0[44].y, -cb0[159].x + mul r4.x, r4.x, cb0[159].z + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[159].y + lt r4.y, l(5.960464478E-08), |r2.w| + exp r4.z, -r2.w + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r2.w + mad r2.w, -r2.w, l(0.240226507), l(0.693147182) + movc r2.w, r4.y, r4.z, r2.w + add r4.y, cb0[44].y, -cb0[162].z + mul r4.y, r4.y, cb0[162].x + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[162].y + lt r4.z, l(5.960464478E-08), |r1.y| + exp r4.w, -r1.y + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.z, r4.w, r1.y + mul r1.y, r1.y, r4.y + mad r1.y, r4.x, r2.w, r1.y + mul r1.y, r3.x, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r3.xxxx, cb0[160].ywyy, cb0[160].xzxx + add r1.y, r1.y, r4.x + add r1.y, r4.y, r1.y + min r2.z, r1.y, l(1.000000) + add r1.y, -r2.z, l(1.000000) + mul r3.yzw, r1.yyyy, cb0[161].xxyz +endif +mul r4.xyz, r1.xzwx, r2.zzzz +mad r1.y, r2.x, r2.x, l(1.000000) +mul r1.y, r1.y, l(0.0596831031) +mad r5.xyz, cb0[156].xyzx, r1.yyyy, cb0[158].xyzx +mad r1.y, -cb0[155].w, cb0[155].w, l(1.000000) +mul r2.x, r2.y, l(12.566371) +sqrt r2.y, r2.y +mul r2.x, r2.y, r2.x +max r2.x, r2.x, l(0.001000) +div r1.y, r1.y, r2.x +mad_sat r2.xyw, cb0[157].xyxz, r1.yyyy, r5.xyxz +mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) +add r1.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r1.xyz, r1.xyzx, r2.xywx +mad r1.xyz, r1.xyzx, r2.zzzz, r3.yzwy +// === Glass Transparency Fix === +lt r40.x, l(0.500000), cb13[14].x +if_nz r40.x + // Boost transmittance: lerp(r4, 1, 0.5) + add r40.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r40.xyz, r40.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r4.xyzx + // Reduce inscatter intensity + mul r41.xyz, r1.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000) + // Modified fog blend + mad r0.xzw, r0.xxzw, r40.xxyz, r41.xxyz +else + // Original fog blend + mad r0.xzw, r0.xxzw, r4.xxyz, r1.xxyz +endif +add r0.xzw, -r7.xxyz, r0.xxzw +mad r9.xyz, r9.wwww, r0.xzwx, r7.xyzx +mul r0.xz, r13.xxyx, l(0.500000, 0.000000, -0.500000, 0.000000) +sqrt r0.xz, |r0.xxzx| +sqrt r0.xz, r0.xxzx +mov r13.z, -r13.y +lt r1.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r13.xzxx +lt r1.zw, r13.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r1.xy, -r1.xyxx, r1.zwzz +itof r1.xy, r1.xyxx +mul r0.xz, r0.xxzx, r1.xxyx +mad r0.xz, r0.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) +add r0.y, r0.y, l(-0.100000024) +lt r0.w, l(0.000000), r0.y +lt r0.y, r0.y, l(0.000000) +iadd r0.y, -r0.w, r0.y +itof r0.y, r0.y +mov_sat r0.y, r0.y +add r1.xy, -r0.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mad r0.xy, r0.yyyy, r1.xyxx, r0.xzxx +min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) +dp3 r0.x, r9.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mul r0.x, r9.w, r0.x +max r0.x, r9.w, r0.x +mul_sat r0.x, r0.x, l(10.000000) +lt r0.x, l(0.500000), r0.x +and o1.z, r0.x, l(0x3f800000) +// === Glass Highlight Compression === +lt r40.x, l(0.500000), cb13[14].x +if_nz r40.x + dp3 r40.y, r9.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) + lt r40.z, l(0.500000), r40.y + if_nz r40.z + add r40.w, r40.y, l(-0.500000) + mul r40.w, r40.w, l(-0.666667) + exp r40.w, r40.w + add r40.w, -r40.w, l(1.000000) + mad r40.w, r40.w, l(1.500000), l(0.500000) + max r41.x, r40.y, l(0.001000) + div r41.x, r40.w, r41.x + mul r9.xyz, r9.xyzx, r41.xxxx + endif +endif +mov o0.xyzw, r9.xyzw +mov o1.w, l(0) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0x843686F6.cso b/src/games/endfield/glass/0x843686F6.cso new file mode 100644 index 0000000000000000000000000000000000000000..43374ca4248350739f6f926e11ab7eeff8e3b90a GIT binary patch literal 57100 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 z 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 l;IPIS~ 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 PbNiYjPm2!CISv0G5Vn>n literal 0 HcmV?d00001 diff --git a/src/games/endfield/glass/0xD2EC68A2.ps_5_0.asm b/src/games/endfield/glass/0xD2EC68A2.ps_5_0.asm new file mode 100644 index 0000000000..532b243882 --- /dev/null +++ b/src/games/endfield/glass/0xD2EC68A2.ps_5_0.asm @@ -0,0 +1,1817 @@ +// +// Generated by Microsoft (R) D3D Shader Disassembler +// +// using 3Dmigoto v1.4.1 on Fri Feb 6 19:58:05 2026 +// +// +// Input signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Position 0 xyzw 0 POS float xyz +// TEXCOORD 0 xy 1 NONE float xy +// TEXCOORD 1 zw 1 NONE float zw +// TEXCOORD 2 xyz 2 NONE float xyz +// TEXCOORD 3 xyzw 3 NONE float xyzw +// TEXCOORD 4 xyzw 4 NONE float x +// TEXCOORD 5 xyz 5 NONE float xyz +// TEXCOORD 6 xyz 6 NONE float xyz +// TEXCOORD 7 x 7 NONE uint x +// SV_IsFrontFace 0 x 8 FFACE uint x +// +// +// Output signature: +// +// Name Index Mask Register SysValue Format Used +// -------------------- ----- ------ -------- -------- ------- ------ +// SV_Target 0 xyzw 0 TARGET float xyzw +// SV_Target 1 xyzw 1 TARGET float xyzw +// +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[244], immediateIndexed +dcl_constantbuffer CB1[4085], dynamicIndexed +dcl_constantbuffer CB2[24], immediateIndexed +dcl_constantbuffer CB3[259], dynamicIndexed +dcl_constantbuffer CB4[3], immediateIndexed +dcl_constantbuffer CB5[2054], dynamicIndexed +dcl_constantbuffer CB6[715], dynamicIndexed +dcl_constantbuffer CB7[160], dynamicIndexed +dcl_constantbuffer CB13[15], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_sampler s5, mode_default +dcl_sampler s6, mode_default +dcl_sampler s7, mode_default +dcl_sampler s8, mode_default +dcl_sampler s9, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2darray (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2d (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_input_ps_siv linear noperspective v0.xyz, position +dcl_input_ps linear v1.xy +dcl_input_ps linear v1.zw +dcl_input_ps linear v2.xyz +dcl_input_ps linear v3.xyzw +dcl_input_ps linear v4.x +dcl_input_ps linear v5.xyz +dcl_input_ps linear v6.xyz +dcl_input_ps constant v7.x +dcl_input_ps_sgv constant v8.x, is_front_face +dcl_output o0.xyzw +dcl_output o1.xyzw +dcl_temps 40 +ishl r0.x, v7.x, l(4) +max r0.y, cb1[r0.x + 4].z, cb1[r0.x + 4].y +dp2 r0.z, v0.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +ge r0.w, cb1[r0.x + 4].x, l(0.000000) +movc r0.w, r0.w, r0.z, -r0.z +add r0.x, -r0.w, cb1[r0.x + 4].x +add r0.z, -r0.y, -r0.z +add r0.z, r0.z, l(1.000000) +min r0.x, r0.z, r0.x +lt r0.x, r0.x, l(0.000000) +discard_nz r0.x +mul r0.xz, v0.xxyx, cb0[82].zzwz +mad r1.xy, r0.xzxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +mul r2.xyzw, -r1.yyyy, cb0[25].xyzw +mad r1.xyzw, cb0[24].xyzw, r1.xxxx, r2.xyzw +mad r1.xyzw, cb0[26].xyzw, v0.zzzz, r1.xyzw +add r1.xyzw, r1.xyzw, cb0[27].xyzw +div r1.xyz, r1.xyzx, r1.wwww +mul r0.w, r1.y, cb0[1].z +mad r0.w, cb0[0].z, r1.x, r0.w +mad r0.w, cb0[2].z, r1.z, r0.w +add r0.w, r0.w, cb0[3].z +mov r2.z, |r0.w| +lt r0.w, l(0.000000), v3.w +movc r0.w, r0.w, l(1.000000), l(-1.000000) +eq r2.w, l(0.000000), cb0[86].w +add r3.xyz, -r1.xyzx, cb0[44].xyzx +mov r4.x, cb0[0].z +mov r4.y, cb0[1].z +mov r4.z, cb0[2].z +movc r3.xyz, r2.wwww, r3.xyzx, r4.xyzx +dp3 r2.w, r3.xyzx, r3.xyzx +max r3.w, r2.w, l(9.999999939E-09) +rsq r3.w, r3.w +mul r5.xyz, r3.wwww, r3.xyzx +mul r2.w, r2.w, r3.w +add r6.xy, -v1.xyxx, v1.zwzz +mad r6.zw, cb2[3].xxxx, r6.xxxy, v1.xxxy +mad r6.zw, r6.zzzw, cb2[12].xxxy, cb2[12].zzzw +mad r6.xy, cb2[2].wwww, r6.xyxx, v1.xyxx +mad r6.xy, r6.xyxx, cb2[11].xyxx, cb2[11].zwzz +sample_b_indexable(texture2d)(float,float,float,float) r7.xyzw, r6.xyxx, t3.xyzw, s5, cb0[108].x +add r4.w, cb0[108].x, cb2[3].y +sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r6.zwzz, t4.xywz, s6, r4.w +mul r8.x, r8.x, r8.z +mad r6.xy, r8.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +mul r8.xy, r6.xyxx, cb2[0].xxxx +sample_b_indexable(texture2d)(float,float,float,float) r9.xyz, r6.zwzz, t5.xyzw, s7, cb0[108].x +mul r7.xyzw, r7.xyzw, cb2[8].xyzw +mul_sat r7.xyz, r7.xyzx, cb2[4].zzzz +add r10.xyz, -r7.xyzx, cb2[8].xyzx +mad r7.xyz, cb2[4].xxxx, r10.xyzx, r7.xyzx +mad r4.w, r7.w, v4.x, -r7.w +mad r10.w, cb2[23].x, r4.w, r7.w +add r4.w, -cb2[0].z, cb2[0].w +mad r11.w, r9.y, r4.w, cb2[0].z +add_sat r4.w, l(-1.000000), cb2[3].w +add r5.w, -r9.x, cb2[4].y +mad r4.w, r4.w, r5.w, r9.x +mul r9.xyw, v2.zxzy, v3.yzyx +mad r9.xyw, v2.yzyx, v3.zxzy, -r9.xyxw +mul r9.xyw, r0.wwww, r9.xyxw +mul r8.yzw, r8.yyyy, r9.xxyw +mad r8.xyz, v3.xyzx, r8.xxxx, r8.yzwy +dp2 r0.w, r6.xyxx, r6.xyxx +min r0.w, r0.w, l(1.000000) +add r0.w, -r0.w, l(1.000000) +sqrt r0.w, r0.w +max r0.w, r0.w, l(1.000000017E-16) +lt r5.w, l(0.000000), cb2[1].w +movc r5.w, r5.w, l(-1.000000), l(1.000000) +movc r5.w, v8.x, l(1.000000), r5.w +mul r0.w, r0.w, r5.w +mad r6.xyz, v2.xyzx, r0.wwww, r8.xyzx +dp3 r0.w, r6.xyzx, r6.xyzx +rsq r0.w, r0.w +mul r6.xyz, r0.wwww, r6.xyzx +dp3 r0.w, r6.xyzx, r5.xyzx +dp3 r5.w, -r5.xyzx, r6.xyzx +mul r7.w, cb2[19].z, cb2[19].z +mad r8.x, -r5.w, r5.w, l(1.000000) +mad r7.w, -r7.w, r8.x, l(1.000000) +sqrt r8.x, r7.w +mad r8.x, cb2[19].z, r5.w, r8.x +ge r7.w, r7.w, l(0.000000) +mul r8.xyz, r6.xyzx, r8.xxxx +mad r8.xyz, cb2[19].zzzz, -r5.xyzx, -r8.xyzx +and r8.xyz, r7.wwww, r8.xyzx +mul r7.w, r0.w, v0.z +max r7.w, r7.w, l(0.500000) +div r7.w, cb2[19].w, r7.w +add r7.w, r7.w, -cb2[19].w +mad r7.w, cb2[20].x, r7.w, cb2[19].w +mul r8.xyz, r7.wwww, r8.xyzx +mul r8.yw, r8.yyyy, cb0[1].xxxy +mad r8.xy, cb0[0].xyxx, r8.xxxx, r8.ywyy +mad r8.xy, cb0[2].xyxx, r8.zzzz, r8.xyxx +mad r8.zw, v1.xxxy, cb2[22].xxxy, cb2[22].zzzw +sample_b_indexable(texture2d)(float,float,float,float) r8.zw, r8.zwzz, t7.zwxy, s8, cb0[108].x +mad r8.zw, r8.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +mad r8.zw, r8.zzzw, cb2[19].yyyy, -r8.xxxy +mad r8.xy, cb2[19].xxxx, r8.zwzz, r8.xyxx +mad r8.zw, v0.xxxy, cb0[82].zzzw, r8.xxxy +mul r8.xy, r8.xyxx, l(0.250000, 0.250000, 0.000000, 0.000000) +mad r9.xy, v0.xyxx, cb0[82].zwzz, r8.xyxx +sample_b_indexable(texture2d)(float,float,float,float) r7.w, r8.zwzz, t1.yzwx, s0, cb0[108].x +sample_b_indexable(texture2d)(float,float,float,float) r9.x, r9.xyxx, t1.xyzw, s0, cb0[108].x +mad r9.x, cb0[84].z, r9.x, cb0[84].w +div r9.x, l(1.000000, 1.000000, 1.000000, 1.000000), r9.x +ge r9.x, r9.x, r2.z +and r9.x, r9.x, l(0x3f800000) +mad r0.xz, r9.xxxx, r8.xxyx, r0.xxzx +mad r7.w, cb0[84].z, r7.w, cb0[84].w +div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w +ge r7.w, r7.w, r2.z +and r7.w, r7.w, l(0x3f800000) +add r8.xy, -r0.xzxx, r8.zwzz +mad r0.xz, r7.wwww, r8.xxyx, r0.xxzx +sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r0.xzxx, t6.xyzw, s9, cb0[108].x +max r0.x, v5.z, l(9.999999939E-09) +div r0.xz, v5.xxyx, r0.xxxx +max r7.w, v6.z, l(9.999999939E-09) +div r9.xy, v6.xyxx, r7.wwww +add r12.xy, r0.xzxx, -r9.xyxx +mul r0.x, l(0.080000), cb2[0].y +mad r9.xyw, -r7.xyxz, r4.wwww, r7.xyxz +mad r0.x, -r0.x, r4.w, r0.x +mad r7.xyz, r7.xyzx, r4.wwww, r0.xxxx +mad r13.xyzw, r11.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) +mul r0.x, r13.x, r13.x +max r0.z, r0.w, l(0.000000) +mul r0.w, r0.z, l(-9.280000) +exp r0.w, r0.w +min r0.x, r0.w, r0.x +mad r0.x, r0.x, r13.x, r13.y +mad r0.xw, r0.xxxx, l(-1.040000, 0.000000, 0.000000, 1.040000), r13.zzzw +eq r4.w, l(1.000000), cb0[113].y +mul r13.xyzw, r1.yyyy, cb0[241].xyzw +mad r13.xyzw, cb0[240].xyzw, r1.xxxx, r13.xyzw +mad r13.xyzw, cb0[242].xyzw, r1.zzzz, r13.xyzw +add r13.xyzw, r13.xyzw, cb0[243].xyzw +div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r13.w +mul r13.xyz, r13.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) +mul r13.xyz, r7.wwww, r13.xyzx +mad_sat r13.xy, r13.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) +mul r13.xy, r13.xyxx, cb0[82].xyxx +ftou r14.xy, r13.xyxx +mad r7.w, cb0[84].z, r13.z, cb0[84].w +div r14.z, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w +ftou r2.xy, v0.xyxx +movc r13.xyz, r4.wwww, r14.xyzx, r2.xyzx +mad r2.xyz, r6.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r1.xyzx +mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx +add r14.xyz, r2.xzyx, -r14.xyzx +max r4.w, |r14.y|, |r14.x| +add r4.w, r4.w, l(-464.000000) +mul_sat r4.w, r4.w, l(0.031250) +add r7.w, |r14.z|, l(-208.000000) +mul_sat r7.w, r7.w, l(0.031250) +max r4.w, r4.w, r7.w +ne r7.w, l(0.000000), cb0[210].w +lt r8.w, r4.w, l(1.000000) +and r7.w, r7.w, r8.w +if_nz r7.w + mad r14.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx + add r14.xyz, r2.xzyx, -r14.xyzx + max r7.w, |r14.y|, |r14.x| + add r7.w, r7.w, l(-29.000000) + mul_sat r7.w, r7.w, l(0.500000) + add r8.w, |r14.z|, l(-13.000000) + mul_sat r8.w, r8.w, l(0.500000) + max r7.w, r7.w, r8.w + lt r8.w, r7.w, l(1.000000) + if_nz r8.w + mad r14.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r15.xyz, r14.xyzx, cb0[211].xyzx + round_ni r15.xyz, r15.xyzx + mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r14.xyzx, t14.xyzw, s2, l(0.000000) + add r8.w, -r7.w, l(1.000000) + mul r12.w, l(0.500000), cb0[211].y + mad r15.w, -cb0[211].y, l(0.500000), l(1.000000) + max r12.w, r12.w, r14.y + min r12.w, r15.w, r12.w + mul r14.w, r12.w, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t15.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r15.xxxx, r16.xyzx + add r16.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t15.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r15.yyyy, r16.xyzx + add r14.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t15.xyzw, s1, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r15.zzzz, r14.xyzx + mad r12.w, r16.w, r8.w, r4.w + mov r14.w, r15.z + mul r14.xyzw, r8.wwww, r14.xyzw + mov r18.w, r15.y + mul r16.xyzw, r8.wwww, r18.xyzw + mov r17.w, r15.x + mul r15.xyzw, r8.wwww, r17.xyzw + else + mov r14.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r12.w, r4.w + endif + mad r17.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx + add r17.xyz, r2.xzyx, -r17.xyzx + max r8.w, |r17.y|, |r17.x| + add r8.w, r8.w, l(-116.000000) + mul_sat r8.w, r8.w, l(0.125000) + add r17.x, |r17.z|, l(-52.000000) + mul_sat r17.x, r17.x, l(0.125000) + max r8.w, r8.w, r17.x + lt r17.x, r8.w, l(1.000000) + if_nz r17.x + mad r17.xyz, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[211].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r17.xyzx, t16.xyzw, s2, l(0.000000) + add r18.w, -r8.w, l(1.000000) + mul r7.w, r7.w, r18.w + mul r18.w, l(0.500000), cb0[211].y + mad r19.x, -cb0[211].y, l(0.500000), l(1.000000) + max r17.y, r17.y, r18.w + min r17.y, r19.x, r17.y + mul r17.w, r17.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t17.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.xxxx, r19.xyzx + add r19.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t17.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r18.yyyy, r19.xyzx + add r17.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t17.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.zzzz, r17.xyzx + mad r12.w, r19.w, r7.w, r12.w + mov r17.w, r18.z + mad r14.xyzw, r17.xyzw, r7.wwww, r14.xyzw + mov r21.w, r18.y + mad r16.xyzw, r21.xyzw, r7.wwww, r16.xyzw + mov r20.w, r18.x + mad r15.xyzw, r20.xyzw, r7.wwww, r15.xyzw + endif + lt r7.w, l(0.000000), r8.w + if_nz r7.w + mad r2.xyz, r2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r2.xyzx, cb0[211].xyzx + mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx + round_ni r17.xyz, r17.xyzx + mad r2.xyz, r2.xyzx, cb0[211].xyzx, -r17.xyzx + mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r2.xyz, r18.xyzx, r2.xyzx + min r19.xyz, r17.xyzx, r2.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r19.xyzx, t18.yzwx, s2, l(0.000000) + add r2.x, -r4.w, l(1.000000) + mul r2.x, r2.x, r8.w + max r2.y, r18.y, r19.y + min r2.y, r17.y, r2.y + mul r19.w, r2.y, l(0.333333343) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r19.xwzx, t19.xyzw, s1, l(0.000000) + add r18.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t19.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.yyyy, r18.xyzx + mov r18.w, r20.y + mad r14.xyzw, r18.xyzw, r2.xxxx, r14.xyzw + add r18.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t19.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.xxxx, r18.xyzx + mov r18.w, r20.x + mad r16.xyzw, r18.xyzw, r2.xxxx, r16.xyzw + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r17.xyzx + mad r15.xyzw, r20.xyzw, r2.xxxx, r15.xyzw + mad r12.w, r17.w, r2.x, r12.w + endif + mad_sat r2.x, r12.w, l(2.000000), l(-1.000000) + add r17.x, -r4.w, r2.x + add r2.x, r4.w, r2.x + mul r17.y, r2.x, l(0.500000) +else + mov r14.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r17.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r17.yyyx, cb0[213].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r2.xy, r17.yxyy, cb0[213].wyww +mad r18.w, r2.y, l(0.375000), r2.x +add r15.xyzw, r15.xyzw, r18.xyzw +mul r18.xyzw, r17.yyyx, cb0[214].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r2.xy, r17.yxyy, cb0[214].wyww +mad r18.w, r2.y, l(0.375000), r2.x +add r16.xyzw, r16.xyzw, r18.xyzw +mul r18.xyzw, r17.yyyx, cb0[215].xyzw +mad r18.y, r18.w, l(0.500000), r18.y +mul r2.xy, r17.yxyy, cb0[215].wyww +mad r18.w, r2.y, l(0.375000), r2.x +add r14.xyzw, r14.xyzw, r18.xyzw +dp3 r2.x, r15.xyzx, r6.xyzx +add r2.x, r15.w, r2.x +max r2.x, r2.x, l(0.000000) +dp3 r4.w, r16.xyzx, r6.xyzx +add r4.w, r16.w, r4.w +max r2.y, r4.w, l(0.000000) +dp3 r4.w, r14.xyzx, r6.xyzx +add r4.w, r14.w, r4.w +max r2.z, r4.w, l(0.000000) +add r4.w, r5.w, r5.w +mad r14.xyz, r6.xyzx, -r4.wwww, -r5.xyzx +add r4.w, l(-1.000000), cb0[113].x +max r5.w, r11.w, l(0.001000) +log r5.w, r5.w +mad r5.w, -r5.w, l(1.200000), l(1.000000) +add r4.w, r4.w, -r5.w +utof r15.xy, r13.xyxx +mul r15.zw, r15.xxxy, cb3[0].wwww +round_ni r15.zw, r15.zzzw +add r5.w, r13.z, -cb3[2].y +round_ni r5.w, r5.w +add r7.w, l(-1.000000), cb3[1].x +max r8.w, r5.w, l(0.000000) +min r7.w, r7.w, r8.w +ge r5.w, r7.w, r5.w +mad r8.w, r15.w, cb3[0].x, r15.z +ftoi r8.w, r8.w +iadd r8.w, r8.w, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r8.w, r8.w, l(0), t0.xxxx +ftoi r7.w, r7.w +iadd r7.w, r7.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r7.w, r7.w, l(0), t0.xxxx +and r7.w, r7.w, r8.w +and r5.w, r5.w, r7.w +mul r16.xyz, r2.xyzx, cb0[111].xxxx +dp3 r7.w, r16.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mov r1.w, l(1.000000) +mov r6.w, l(1.000000) +mov r16.xyz, l(0,0,0,0) +mov r8.w, l(1.000000) +mov r12.w, r5.w +mov r14.w, l(0) +loop + lt r15.z, l(0.010000), r8.w + ine r15.w, r12.w, l(0) + and r15.w, r15.z, r15.w + if_nz r15.w + firstbit_lo r15.w, r12.w + ishl r16.w, l(1), r15.w + xor r12.w, r12.w, r16.w + ishl r15.w, r15.w, l(3) + dp4 r17.x, cb3[r15.w + 6].xyzw, r1.xyzw + dp4 r17.y, cb3[r15.w + 7].xyzw, r1.xyzw + dp4 r17.z, cb3[r15.w + 8].xyzw, r1.xyzw + ge r18.xyz, cb3[r15.w + 5].xyzx, |r17.xyzx| + and r16.w, r18.y, r18.x + and r16.w, r18.z, r16.w + if_nz r16.w + mul r16.w, l(0.100000), cb3[r15.w + 5].x + mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r17.xyzx|, cb3[r15.w + 5].xyzx + mul r19.xyz, r19.xyzx, cb3[r15.w + 9].xyzx + eq r17.w, l(1.000000), cb3[r15.w + 10].x + if_nz r17.w + dp3 r20.x, cb3[r15.w + 6].xyzx, r14.xyzx + dp3 r20.y, cb3[r15.w + 7].xyzx, r14.xyzx + dp3 r20.z, cb3[r15.w + 8].xyzx, r14.xyzx + add r21.xyz, -r17.xyzx, cb3[r15.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r17.xyzx, -cb3[r15.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r17.w, r21.y, r21.x + min r17.w, r21.z, r17.w + mad r17.xyz, r20.xyzx, r17.wwww, r17.xyzx + else + mov r17.xyz, r14.xyzx + endif + dp3 r17.w, r17.xyzx, r17.xyzx + rsq r17.w, r17.w + mul r17.xyz, r17.wwww, r17.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r21.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r17.w, r17.xyzx, r20.xyzx + div r17.xyz, r17.xyzx, r17.wwww + lt r17.z, r17.z, l(0.000000) + add r20.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r20.xy, r20.zwzz, r20.xyxx + movc r17.xy, r17.zzzz, r20.xyxx, r17.xyxx + dp4 r17.z, cb3[r15.w + 4].xyzw, r6.xyzw + max r17.z, r17.z, l(0.000000) + max r17.z, r17.z, l(0.000100) + min r17.w, r19.z, r19.y + min r17.w, r17.w, r19.x + add r18.x, r18.y, r18.x + mad r18.x, r18.z, r18.z, r18.x + mad r16.w, r16.w, r16.w, -r18.x + mul r16.w, r16.w, cb3[r15.w + 9].x + mul r16.w, r16.w, cb3[r15.w + 9].x + add r18.x, l(1.000000), -cb3[r15.w + 10].y + mul r16.w, r16.w, r18.x + mul r16.w, r16.w, l(100.000000) + mad_sat r16.w, r17.w, cb3[r15.w + 10].y, r16.w + mul r17.w, r16.w, cb3[r15.w + 10].w + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r18.xy, r17.xyxx, cb3[1].wwww, cb3[2].wwww + mov r18.z, cb3[r15.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r18.xyz, r18.xyzx, t2.xyzw, s3, r4.w + mul r18.xyz, r18.xyzx, cb3[r15.w + 9].wwww + div r17.x, r7.w, r17.z + min r17.x, |r17.x|, l(1.000000) + mad r17.x, r17.x, l(2.000000), r7.w + add r17.y, r17.z, l(2.000000) + div r17.x, r17.x, r17.y + add r17.x, r17.x, l(-1.000000) + mad r17.x, r17.x, cb0[112].w, l(1.000000) + mul r17.xyz, r17.xxxx, r18.xyzx + mul r17.xyz, r17.wwww, r17.xyzx + mad r16.xyz, r17.xyzx, r8.wwww, r16.xyzx + mad r15.w, -r16.w, cb3[r15.w + 10].w, l(1.000000) + mul r8.w, r8.w, r15.w + endif + mov r14.w, l(-1) + continue + else + mov r14.w, r15.z + break + endif + mov r14.w, r15.z +endloop +if_nz r14.w + dp3 r1.w, r14.xyzx, r14.xyzx + rsq r1.w, r1.w + mul r17.xyz, r1.wwww, r14.xyzx + lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r19.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r18.xyz, -r18.xyzx, r19.xyzx + itof r18.xyz, r18.xyzx + dp3 r1.w, r17.xyzx, r18.xyzx + div r17.xyz, r17.xyzx, r1.wwww + lt r1.w, r17.z, l(0.000000) + add r15.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r18.xxxy + movc r15.zw, r1.wwww, r15.zzzw, r17.xxxy + mov r6.w, l(1.000000) + dp4 r1.w, cb3[3].xyzw, r6.xyzw + max r1.w, r1.w, l(0.000000) + max r1.w, r1.w, l(0.000100) + mad r15.zw, r15.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r17.xy, r15.zwzz, cb3[1].wwww, cb3[2].wwww + mov r17.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t2.xyzw, s3, r4.w + div r4.w, r7.w, r1.w + min r4.w, |r4.w|, l(1.000000) + mad r4.w, r4.w, l(2.000000), r7.w + add r1.w, r1.w, l(2.000000) + div r1.w, r4.w, r1.w + add r1.w, r1.w, l(-1.000000) + mad r1.w, r1.w, cb0[112].w, l(1.000000) + mul r17.xyz, r1.wwww, r17.xyzx + mad r16.xyz, r17.xyzx, r8.wwww, r16.xyzx +endif +mul r2.xyz, r9.xywx, r2.xyzx +add r1.w, r9.z, l(-1.000000) +mad r1.w, cb2[1].x, r1.w, l(1.000000) +mul r2.xyz, r1.wwww, r2.xyzx +mul r16.xyz, r16.xyzx, cb0[112].zzzz +// === Glass Fix: Reduce reflection probe intensity === +lt r37.x, l(0.500000), cb13[14].x +if_nz r37.x + mul r16.xyz, r16.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) +endif +mul r16.xyz, r16.xyzx, cb0[111].yyyy +mul_sat r1.w, r7.y, l(50.000000) +mul r0.w, r0.w, r1.w +mad r17.xyz, r7.xyzx, r0.xxxx, r0.wwww +mul r16.xyz, r16.xyzx, r17.xyzx +mad r2.xyz, r2.xyzx, cb0[111].xxxx, r16.xyzx +lt r0.x, cb6[35].w, l(0.990000) +if_nz r0.x + ftoi r0.x, cb6[35].x + ieq r0.w, r0.x, l(2) + movc r16.xyz, r0.wwww, cb6[20].xyzx, cb0[44].xyzx + add r16.xyz, r1.xyzx, -r16.xyzx + dp3 r0.w, r16.xyzx, r16.xyzx + add r0.w, -r0.w, cb6[34].w + mul_sat r0.w, r0.w, cb6[34].z + lt r1.w, l(0.000000), r0.w + if_nz r1.w + ilt r0.x, l(0), r0.x + if_nz r0.x + add r16.xyz, r1.xyzx, -cb6[20].xyzx + add r17.xyz, r1.xyzx, -cb6[21].xyzx + add r18.xyz, r1.xyzx, -cb6[22].xyzx + add r19.xyz, r1.xyzx, -cb6[23].xyzx + dp3 r16.x, r16.xyzx, r16.xyzx + dp3 r16.y, r17.xyzx, r17.xyzx + dp3 r16.z, r18.xyzx, r18.xyzx + dp3 r16.w, r19.xyzx, r19.xyzx + lt r17.x, r16.x, cb6[20].w + lt r17.y, r16.y, cb6[21].w + lt r17.z, r16.z, cb6[22].w + lt r17.w, r16.w, cb6[23].w + and r18.xyzw, r17.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) + movc r17.xyz, r17.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) + add r17.xyz, r17.xyzx, r18.yzwy + max r18.yzw, r17.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) + dp4 r0.x, r18.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) + add r0.x, -r0.x, l(4.000000) + max r0.x, r0.x, l(0.000000) + min r0.x, r0.x, l(3.000000) + add r1.w, r0.x, l(1.000000) + min r1.w, r1.w, l(3.000000) + ftou r1.w, r1.w + dp3 r4.w, r16.yzwy, icb[r1.w + 0].yzwy + div r1.w, r4.w, cb6[r1.w + 20].w + ge r4.w, r1.w, l(0.000000) + ge r1.w, l(1.000000), r1.w + and r1.w, r1.w, r4.w + if_nz r1.w + ftou r1.w, r0.x + add r15.zw, r15.xxxy, l(0.000000, 0.000000, 2.083000, 4.867000) + dp2 r4.w, r15.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) + frc r4.w, r4.w + mul r4.w, r4.w, l(52.982918) + frc r4.w, r4.w + dp4 r5.w, r16.xyzw, icb[r1.w + 0].xyzw + div r1.w, r5.w, cb6[r1.w + 20].w + sqrt r1.w, r1.w + add r1.w, r1.w, l(-0.900000) + mul r1.w, r1.w, l(12.000000) + ge r1.w, r1.w, r4.w + and r1.w, r1.w, l(0x3f800000) + add r0.x, r0.x, r1.w + endif + dp3 r1.w, r6.xyzx, cb5[0].xyzx + max r1.w, r1.w, l(0.000000) + min r1.w, r1.w, l(0.900000) + add r1.w, -r1.w, l(1.000000) + ftou r4.w, r0.x + ishl r5.w, r4.w, l(2) + mul r15.zw, r1.wwww, cb6[r4.w + 24].xxxy + max r1.w, r15.z, l(0.000000) + mad r16.xyz, -cb5[0].xyzx, r1.wwww, r1.xyzx + mad r16.xyz, r6.xyzx, r15.wwww, r16.xyzx + mul r17.xyz, r16.yyyy, cb6[r5.w + 1].xyzx + mad r16.xyw, cb6[r5.w + 0].xyxz, r16.xxxx, r17.xyxz + mad r16.xyz, cb6[r5.w + 2].xyzx, r16.zzzz, r16.xywx + add r16.xyz, r16.xyzx, cb6[r5.w + 3].xyzx + ge r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + ge r18.xyz, r16.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + or r17.xyz, r17.xyzx, r18.xyzx + or r1.w, r17.y, r17.x + or r1.w, r17.z, r1.w + and r4.w, r16.z, l(0x7fffffff) + ult r4.w, l(0x7f800000), r4.w + or r17.z, r1.w, r4.w + ftoi r0.x, r0.x + mad r15.zw, r16.xxxy, cb6[r0.x + 28].zzzw, cb6[r0.x + 28].xxxy + mad r16.xy, r15.zwzz, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r16.xy, r16.xyxx + mad r15.zw, r15.zzzw, cb6[32].zzzw, -r16.xxxy + add r18.xyzw, r15.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r19.xw, r18.xxxz, r18.xxxz + min r18.xz, r15.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + max r20.xy, r15.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r20.zw, r19.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r15.zzzw + add r15.zw, -r15.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r15.zw, -r18.xxxz, r18.xxxz, r15.zzzw + mad r18.xy, -r20.xyxx, r20.xyxx, r18.ywyy + mov r21.x, r20.z + mov r21.y, r15.z + mov r21.z, r18.x + mov r21.w, r19.x + mul r21.xyzw, r21.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r19.x, r20.w + mov r19.y, r15.w + mov r19.z, r18.y + mul r18.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r19.xyzw, r21.ywyw, r21.xzxz + add r20.xyzw, r18.yyww, r18.xxzz + div r15.zw, r21.yyyw, r19.zzzw + add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r21.xy, r15.zwzz, cb6[32].xxxx + div r15.zw, r18.yyyw, r20.yyyw + add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r21.zw, r15.zzzw, cb6[32].yyyy + mul r18.xyzw, r19.xyzw, r20.xyzw + mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r19.xyxx, t8.xxxx, s4, r16.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t8.xxxx, s4, r16.z + mul r1.w, r1.w, r18.y + mad r0.x, r18.x, r0.x, r1.w + mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.xyxx, t8.xxxx, s4, r16.z + mad r0.x, r18.z, r1.w, r0.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t8.xxxx, s4, r16.z + mad r0.x, r18.w, r1.w, r0.x + movc r17.x, r17.z, l(1.000000), r0.x + else + mov r17.xz, l(1.000000,0,0,0) + endif + else + mov r17.xz, l(1.000000,0,0,0) + endif + lt r0.x, r0.w, l(1.000000) + if_nz r0.x + dp3 r0.x, r6.xyzx, cb5[0].xyzx + max r0.x, r0.x, l(0.000000) + min r0.x, r0.x, l(0.900000) + add r0.x, -r0.x, l(1.000000) + mul r15.zw, r0.xxxx, cb6[584].xxxy + mad r16.xyz, -cb5[0].xyzx, r15.zzzz, r1.xyzx + mad r16.xyz, r6.xyzx, r15.wwww, r16.xyzx + mul r15.zw, r16.yyyy, cb6[581].xxxy + mad r15.zw, cb6[580].xxxy, r16.xxxx, r15.zzzw + mad r15.zw, cb6[582].xxxy, r16.zzzz, r15.zzzw + add r15.zw, r15.zzzw, cb6[583].xxxy + lt r18.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r15.zwzz + and r0.x, r18.y, r18.x + lt r18.xy, r15.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000) + and r1.w, r18.y, r18.x + and r0.x, r0.x, r1.w + if_nz r0.x + mul r0.x, r15.w, cb6[585].z + round_ni r0.x, r0.x + add r0.x, r15.z, r0.x + mul r0.x, r0.x, cb6[585].y + ftou r0.x, r0.x + umin r0.x, r0.x, l(127) + and r1.w, l(0x0000ffff), cb6[r0.x + 587].x + f16tof32 r18.x, r1.w + ge r1.w, r18.x, l(0.000000) + if_nz r1.w + mov r19.x, cb6[576].x + mov r19.y, cb6[577].x + mov r19.z, cb6[578].x + mov r19.w, cb6[r0.x + 587].y + mov r16.w, l(1.000000) + dp4 r19.x, r19.xyzw, r16.xyzw + mov r20.x, cb6[576].y + mov r20.y, cb6[577].y + mov r20.z, cb6[578].y + mov r20.w, cb6[r0.x + 587].z + dp4 r19.y, r20.xyzw, r16.xyzw + mov r20.x, cb6[576].z + mov r20.y, cb6[577].z + mov r20.z, cb6[578].z + mov r20.w, cb6[r0.x + 587].w + dp4 r1.w, r20.xyzw, r16.xyzw + lt r15.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxxy + lt r4.w, l(0.000000), r1.w + and r5.w, r15.w, r15.z + and r4.w, r4.w, r5.w + lt r15.zw, r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) + lt r5.w, r1.w, l(1.000000) + and r6.w, r15.w, r15.z + and r5.w, r5.w, r6.w + and r4.w, r4.w, r5.w + if_nz r4.w + ushr r0.x, cb6[r0.x + 587].x, l(16) + f16tof32 r18.y, r0.x + mad r15.zw, r19.xxxy, cb6[584].zzzw, r18.xxxy + mad r16.xy, r15.zwzz, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r16.xy, r16.xyxx + mad r15.zw, r15.zzzw, cb6[586].zzzw, -r16.xxxy + add r18.xyzw, r15.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r19.xw, r18.xxxz, r18.xxxz + min r16.zw, r15.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) + max r18.xz, r15.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r20.xy, r19.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r15.zwzz + add r15.zw, -r15.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mad r15.zw, -r16.zzzw, r16.zzzw, r15.zzzw + mad r16.zw, -r18.xxxz, r18.xxxz, r18.yyyw + mov r18.x, r20.x + mov r18.y, r15.z + mov r18.z, r16.z + mov r18.w, r19.x + mul r18.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + mov r19.x, r20.y + mov r19.y, r15.w + mov r19.z, r16.w + mul r19.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) + add r20.xyzw, r18.ywyw, r18.xzxz + add r21.xyzw, r19.yyww, r19.xxzz + div r15.zw, r18.yyyw, r20.zzzw + add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r18.xy, r15.zwzz, cb6[586].xxxx + div r15.zw, r19.yyyw, r21.yyyw + add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) + mul r18.zw, r15.zzzw, cb6[586].yyyy + mul r19.xyzw, r20.xyzw, r21.xyzw + mad r20.xyzw, r16.xyxy, cb6[586].xyxy, r18.xzyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r20.xyxx, t11.xxxx, s4, r1.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r4.w, r20.zwzz, t11.xxxx, s4, r1.w + mul r4.w, r4.w, r19.y + mad r0.x, r19.x, r0.x, r4.w + mad r16.xyzw, r16.xyxy, cb6[586].xyxy, r18.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r4.w, r16.xyxx, t11.xxxx, s4, r1.w + mad r0.x, r19.z, r4.w, r0.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r16.zwzz, t11.xxxx, s4, r1.w + mad r17.y, r19.w, r1.w, r0.x + else + mov r17.y, l(1.000000) + endif + else + mov r17.y, l(1.000000) + endif + else + mov r17.y, l(1.000000) + endif + movc r17.x, r17.z, r17.y, r17.x + else + mov r17.y, l(1.000000) + endif + add r0.x, -r17.y, r17.x + mad r0.x, r0.w, r0.x, r17.y + lt r0.w, l(0.001000), r0.x + if_nz r0.w + add r16.xyz, r1.xyzx, -cb0[173].xyzx + mad r15.zw, cb0[176].xxxz, r16.yyyy, r16.xxxz + mul r16.yw, r15.zzzw, cb0[174].zzzz + mul r17.xy, cb0[175].xyxx, cb0[183].wwww + mad r15.zw, r15.zzzw, cb0[174].zzzz, r17.xxxy + sample_l_indexable(texture2d)(float,float,float,float) r0.w, r15.zwzz, t10.yzwx, s2, l(0.000000) + mad r15.zw, r16.yyyw, cb0[175].wwww, r17.xxxy + sample_l_indexable(texture2d)(float,float,float,float) r1.w, r15.zwzz, t10.yzwx, s2, l(0.000000) + dp2 r4.w, r16.xzxx, r16.xzxx + sqrt r4.w, r4.w + add r5.w, -cb0[174].x, cb0[174].y + add r4.w, r4.w, -cb0[174].x + div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w + mul_sat r4.w, r4.w, r5.w + mad r5.w, r4.w, l(-2.000000), l(3.000000) + mul r4.w, r4.w, r4.w + mul r4.w, r4.w, r5.w + add r1.w, -r0.w, r1.w + mad r0.w, r4.w, r1.w, r0.w + add r0.w, r0.w, l(-1.000000) + mad r0.w, cb0[175].z, r0.w, l(1.000000) + mul r0.x, r0.w, r0.x + endif + add r0.w, -r0.x, cb6[35].z + mad r0.x, cb6[35].w, r0.w, r0.x +else + mov r0.x, cb6[35].z +endif +min r0.x, r0.x, l(1.000000) +add r0.x, r0.x, l(-1.000000) +mad r16.x, cb6[34].x, r0.x, l(1.000000) +lt r0.x, l(0.001000), r16.x +if_nz r0.x + dp3 r0.x, -cb5[0].xyzx, r14.xyzx + mad r17.xyz, cb5[0].xyzx, r0.xxxx, r14.xyzx + lt r0.x, r0.x, cb5[4].z + dp3 r0.w, r17.xyzx, r17.xyzx + max r0.w, r0.w, l(0.0000610351562) + rsq r0.w, r0.w + mul r17.xyz, r0.wwww, r17.xyzx + mul r17.xyz, r17.xyzx, cb5[4].yyyy + mad r17.xyz, -cb5[0].xyzx, cb5[4].zzzz, r17.xyzx + dp3 r0.w, r17.xyzx, r17.xyzx + rsq r0.w, r0.w + mul r17.xyz, r0.wwww, r17.xyzx + movc r17.xyz, r0.xxxx, r17.xyzx, r14.xyzx + mad r18.xyz, r3.xyzx, r3.wwww, r17.xyzx + dp3 r0.x, r18.xyzx, r18.xyzx + max r0.x, r0.x, l(0.0000610351562) + rsq r0.x, r0.x + mul r18.xyz, r0.xxxx, r18.xyzx + dp3_sat r11.y, r17.xyzx, r6.xyzx + dp3_sat r0.x, r6.xyzx, r18.xyzx + min r11.z, r0.z, l(1.000000) + mul r0.w, r11.w, r11.w + mul r0.w, r0.w, r0.w + mad r1.w, r0.x, r0.w, -r0.x + mad r0.x, r1.w, r0.x, l(1.000000) + dp3_sat r1.w, r5.xyzx, r18.xyzx + add r1.w, -r1.w, l(1.000000) + mul r4.w, r1.w, r1.w + mul r4.w, r4.w, r4.w + mul r5.w, r1.w, r4.w + add r6.w, -r11.w, l(1.000000) + mad r7.w, -r6.w, l(0.383026), l(-0.0761947036) + mad r7.w, r6.w, r7.w, l(1.049970) + mad r6.w, r6.w, r7.w, l(0.409255) + min r6.w, r6.w, l(0.999000) + add r7.w, -r6.w, l(1.000000) + add r17.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r17.xyz, r17.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx + mad r1.w, -r4.w, r1.w, l(1.000000) + mad r18.xyz, r7.xyzx, r1.wwww, r5.wwww + mul r0.x, r0.x, r0.x + div r0.x, r0.w, r0.x + mad r15.zw, -r11.zzzy, r0.wwww, r11.zzzy + mad r15.zw, r15.zzzw, r11.zzzy, r0.wwww + sqrt r15.zw, r15.zzzw + mul r15.zw, r11.yyyz, r15.zzzw + add r0.w, r15.w, r15.z + add r0.w, r0.w, l(0.000100) + div r0.w, l(0.500000), r0.w + mul r0.x, r0.w, r0.x + mul r18.xyz, r0.xxxx, r18.xyzx + min r18.xyz, r18.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r19.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.x, r19.xyxx, t13.xyzw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r0.w, r19.zwzz, t13.yzwx, s1, l(0.000000) + mul r0.x, r0.w, r0.x + mul r0.x, r6.w, r0.x + div r0.x, r0.x, r7.w + mul r19.xyz, r17.xyzx, r17.xyzx + mul r19.xyz, r0.xxxx, r19.xyzx + mad r17.xyz, -r17.xyzx, r7.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r17.xyz, r19.xyzx, r17.xyzx + add r17.xyz, r17.xyzx, r18.xyzx + mul r17.xyz, r17.xyzx, cb5[4].xxxx + // === Glass Fix: Reduce sun specular intensity === + lt r37.x, l(0.500000), cb13[14].x + if_nz r37.x + mul r17.xyz, r17.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + endif + max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r17.xyz, r17.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + max r0.x, r10.w, l(0.010000) + div r17.xyz, r17.xyzx, r0.xxxx + min r17.xyz, r17.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r18.xyz, r9.xywx, r11.yyyy + mad r17.xyz, r17.xyzx, r11.yyyy, r18.xyzx + mul r17.xyz, r17.xyzx, cb5[1].xyzx + mov r16.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r16.yzw, r16.xyxx, t12.wxyz, s1, cb0[108].x + add r0.x, -r16.x, l(1.000000) + mad r16.xyz, r17.xyzx, r16.yzwy, -r17.xyzx + mad r16.xyz, r0.xxxx, r16.xyzx, r17.xyzx +else + mov r16.xyz, l(0,0,0,0) +endif +mul r0.xw, r15.xxxy, l(0.031250, 0.000000, 0.000000, 0.031250) +round_ni r0.xw, r0.xxxw +mad r0.x, r0.w, cb4[1].y, r0.x +mul r0.x, r0.x, l(8.000000) +ftoi r0.x, r0.x +mad r0.w, -cb0[85].y, cb4[2].w, r13.z +round_ni r0.w, r0.w +add r1.w, l(-1.000000), cb4[1].w +max r4.w, r0.w, l(0.000000) +min r1.w, r1.w, r4.w +mul r4.w, r1.w, l(8.000000) +ftoi r4.w, r4.w +ge r0.w, r1.w, r0.w +iadd r1.w, r4.w, cb0[110].y +min r11.x, r0.z, l(1.000000) +mul r0.z, r11.w, r11.w +add r4.w, -r11.w, l(1.000000) +mad r5.w, -r4.w, l(0.383026), l(-0.0761947036) +mad r5.w, r4.w, r5.w, l(1.049970) +mad r4.w, r4.w, r5.w, l(0.409255) +min r4.w, r4.w, l(0.999000) +add r5.w, -r4.w, l(1.000000) +add r17.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r17.xyz, r17.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx +mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r6.w, r11.yzyy, t13.yzwx, s1, l(0.000000) +mad r18.xyz, -r17.xyzx, r5.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r17.xyz, r17.xyzx, r17.xyzx +mov r19.w, l(1.000000) +mov r20.y, l(1.000000) +mov r21.z, r11.w +mov r22.xyz, l(0,0,0,0) +mov r7.w, l(1.000000) +mov r8.w, l(0) +loop + ilt r9.z, l(7), r8.w + breakc_nz r9.z + iadd r9.z, r0.x, r8.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.z, r9.z, l(0), t0.xxxx + iadd r11.y, r1.w, r8.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.y, r11.y, l(0), t0.xxxx + and r9.z, r9.z, r11.y + and r9.z, r0.w, r9.z + ishl r11.y, r8.w, l(5) + mov r23.xyz, l(0,0,0,0) + mov r11.z, r7.w + mov r12.w, r9.z + loop + breakc_z r12.w + firstbit_lo r14.w, r12.w + ishl r15.z, l(1), r14.w + xor r15.z, r12.w, r15.z + iadd r14.w, r11.y, r14.w + bfi r24.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r14.wwww, l(1, 3, 5, 6) + bfi r15.w, l(29), l(3), r14.w, l(7) + ftou r16.w, cb5[r24.z + 6].w + ieq r16.w, r16.w, l(1) + if_nz r16.w + add r19.xyz, r1.xyzx, -cb5[r24.x + 6].xyzx + and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r24.z + 6].xzyx + and r26.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r24.w + 6].yxzy + ushr r27.xyz, cb5[r24.z + 6].xzyx, l(16, 16, 16, 0) + ushr r28.xyz, cb5[r24.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyz, r26.xyzx + f16tof32 r27.xyz, r27.xyzx + f16tof32 r28.xyw, r28.yxyz + mov r29.xz, r25.xxzx + mov r29.yw, r27.xxxz + dp4 r16.w, r19.xyzw, r29.xyzw + mov r27.x, r25.y + mov r27.z, r26.y + mov r27.w, r28.x + dp4 r17.w, r19.xyzw, r27.xyzw + mov r28.xz, r26.xxzx + dp4 r18.w, r19.xyzw, r28.xyzw + max r16.w, |r16.w|, |r17.w| + max r16.w, |r18.w|, r16.w + mad r17.w, cb5[r15.w + 6].x, l(0.500000), l(0.500000) + add r16.w, r16.w, -r17.w + mad r17.w, -cb5[r15.w + 6].x, l(0.500000), l(0.500000) + div_sat r16.w, r16.w, r17.w + add r16.w, -r16.w, l(1.000000) + mul r16.w, r16.w, r16.w + else + mov r16.w, l(1.000000) + endif + lt r17.w, l(0.500000), cb5[r24.y + 6].z + lt r18.w, r16.w, l(0.001000) + or r18.w, r17.w, r18.w + if_nz r18.w + mov r12.w, r15.z + continue + endif + ishl r18.w, r14.w, l(3) + bfi r14.w, l(29), l(3), r14.w, l(2) + lt r19.x, cb5[r18.w + 6].w, l(1.500000) + if_nz r19.x + mad r19.x, cb5[r14.w + 6].y, l(0.500000), l(0.500000) + add r19.x, r19.x, -|cb5[r14.w + 6].x| + add r19.y, -r19.x, cb5[r14.w + 6].y + add r20.z, -|r19.x|, l(1.000000) + add r20.z, -|r19.y|, r20.z + max r20.z, r20.z, l(0.000488281250) + ge r20.w, cb5[r14.w + 6].x, l(0.000000) + movc r19.z, r20.w, r20.z, -r20.z + dp3 r20.z, r19.xyzx, r19.xyzx + rsq r20.z, r20.z + mul r19.xyz, r19.xyzx, r20.zzzz + add r25.xyz, -r1.xyzx, cb5[r24.x + 6].xyzx + dp3 r20.z, r25.xyzx, r25.xyzx + rsq r20.w, r20.z + mul r26.xyz, r20.wwww, r25.xyzx + ftoi r21.w, cb5[r15.w + 6].w + mul r27.xyz, r19.xyzx, cb5[r14.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r22.w, cb5[r18.w + 6].w + and r22.w, r22.w, l(1) + ieq r23.w, r22.w, l(0) + not r23.w, r23.w + lt r24.z, l(0.000000), cb5[r14.w + 6].z + and r23.w, r23.w, r24.z + dp3 r24.z, r28.xyzx, r28.xyzx + sqrt r24.z, r24.z + dp3 r25.w, r29.xyzx, r29.xyzx + sqrt r25.w, r25.w + dp3 r26.w, r6.xyzx, r28.xyzx + div r26.w, r26.w, r24.z + dp3 r27.w, r6.xyzx, r29.xyzx + div r27.w, r27.w, r25.w + add r26.w, r26.w, r27.w + mul_sat r30.x, r26.w, l(0.500000) + dp3 r26.w, r28.xyzx, r29.xyzx + mad r24.z, r24.z, r25.w, r26.w + mad r24.z, r24.z, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r24.z + dp3_sat r20.x, r6.xyzx, r26.xyzx + movc r21.xy, r23.wwww, r30.xyxx, r20.xyxx + lt r20.x, cb5[r24.w + 6].w, l(0.000000) + if_nz r20.x + mul r20.x, cb5[r24.x + 6].w, cb5[r24.x + 6].w + mul r20.x, r20.x, r20.z + mad r20.x, -r20.x, r20.x, l(1.000000) + max r20.x, r20.x, l(0.000000) + add r20.z, r20.z, l(1.000000) + div r20.z, l(1.000000, 1.000000, 1.000000, 1.000000), r20.z + and r24.z, r23.w, l(0x3f800000) + add r25.w, -r20.z, r21.y + mad r20.z, r24.z, r25.w, r20.z + mul r20.x, r20.x, r20.x + mul r20.x, r20.x, r20.z + else + mul r29.xyz, r25.xyzx, cb5[r24.x + 6].wwww + dp3 r20.z, r29.xyzx, r29.xyzx + min r20.z, r20.z, l(1.000000) + add r20.z, -r20.z, l(1.000000) + log r20.z, r20.z + mul r20.z, r20.z, cb5[r24.w + 6].w + exp r20.z, r20.z + mul r20.x, r20.z, r21.y + endif + dp3 r19.x, r26.xyzx, -r19.xyzx + add r19.x, r19.x, -cb5[r14.w + 6].z + mul_sat r19.x, r19.x, cb5[r14.w + 6].w + mul r19.x, r19.x, r19.x + movc r19.x, r22.w, l(1.000000), r19.x + mul r19.x, r19.x, r20.x + not r19.y, r23.w + ige r19.z, r21.w, l(0) + and r19.y, r19.z, r19.y + if_nz r19.y + if_z r22.w + ishl r19.y, r21.w, l(2) + mul r29.xyz, r1.yyyy, cb7[r19.y + 33].xywx + mad r29.xyz, cb7[r19.y + 32].xywx, r1.xxxx, r29.xyzx + mad r29.xyz, cb7[r19.y + 34].xywx, r1.zzzz, r29.xyzx + add r29.xyz, r29.xyzx, cb7[r19.y + 35].xywx + div_sat r19.yz, r29.xxyx, r29.zzzz + mad r19.yz, r19.yyzy, cb7[r21.w + 0].zzwz, cb7[r21.w + 0].xxyx + else + ishl r20.x, r21.w, l(2) + dp3 r29.x, -r25.xyzx, cb7[r20.x + 32].xyzx + dp3 r29.y, -r25.xyzx, cb7[r20.x + 33].xyzx + dp3 r29.z, -r25.xyzx, cb7[r20.x + 34].xyzx + lt r20.x, |r29.x|, |r29.y| + and r20.x, r20.x, l(1) + dp2 r20.z, |r29.xyxx|, icb[r20.x + 0].xyxx + lt r20.z, r20.z, |r29.z| + movc r20.x, r20.z, l(2), r20.x + dp3 r20.z, r29.xyzx, icb[r20.x + 0].xyzx + lt r20.z, r20.z, l(0.000000) + bfi r20.x, l(31), l(1), r20.x, r20.z + ushr r20.z, r20.x, l(1) + dp3 r20.z, r29.xyzx, icb[r20.z + 0].xyzx + div r21.y, l(0.000244140625), cb7[r21.w + 0].w + add r21.y, -r21.y, l(0.500000) + utof r24.z, r20.x + ult r25.x, r20.x, l(2) + and r25.x, r25.x, l(2) + dp2 r25.x, r29.xzxx, icb[r25.x + 0].xzxx + mul r25.x, r25.x, icb[r20.x + 4].z + div r25.x, r25.x, |r20.z| + mad r24.z, r25.x, r21.y, r24.z + add r24.z, r24.z, l(0.500000) + mul_sat r25.x, r24.z, l(0.166666672) + iadd r24.z, l(-1), icb[r20.x + 4].y + dp2 r24.z, r29.yzyy, icb[r24.z + 0].xyxx + mul r20.x, r24.z, icb[r20.x + 4].w + div r20.x, r20.x, |r20.z| + mad_sat r25.y, -r20.x, r21.y, l(0.500000) + mad r19.yz, r25.xxyx, cb7[r21.w + 0].zzwz, cb7[r21.w + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r19.y, r19.yzyy, t21.yxzw, s1, l(0.000000) + mul r19.x, r19.y, r19.x + endif + lt r19.y, l(0.000000), r19.x + if_nz r19.y + if_z r22.w + ftoi r19.z, cb5[r24.y + 6].x + else + add r25.xyz, r1.xyzx, -cb5[r24.x + 6].xyzx + lt r29.xyz, |r25.yzzy|, |r25.xxyx| + and r20.x, r29.y, r29.x + lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ushr r20.z, cb5[r14.w + 6].w, l(24) + ubfe r21.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb5[r14.w + 6].wwww + movc r20.z, r25.x, r20.z, r21.y + and r21.y, l(255), cb5[r14.w + 6].w + movc r21.y, r25.y, r21.w, r21.y + ubfe r21.w, l(8), l(8), cb5[r24.y + 6].x + and r22.w, l(255), cb5[r24.y + 6].x + movc r21.w, r25.z, r21.w, r22.w + movc r21.y, r29.z, r21.y, r21.w + movc r20.x, r20.x, r20.z, r21.y + ilt r20.z, r20.x, l(80) + movc r19.z, r20.z, r20.x, l(-1) + endif + mad r25.xyz, r26.xyzx, cb6[r19.z + 288].xxxx, r1.xyzx + mul r20.x, l(5.000000), cb6[r19.z + 288].y + mad r25.xyz, r6.xyzx, r20.xxxx, r25.xyzx + ishl r20.x, r19.z, l(2) + mul r29.xyzw, r25.yyyy, cb6[r20.x + 65].xyzw + mad r29.xyzw, cb6[r20.x + 64].xyzw, r25.xxxx, r29.xyzw + mad r25.xyzw, cb6[r20.x + 66].xyzw, r25.zzzz, r29.xyzw + add r25.xyzw, r25.xyzw, cb6[r20.x + 67].xyzw + div r25.xyz, r25.xyzx, r25.wwww + ge r29.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx + ge r30.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r20.xz, -cb6[r19.z + 344].xxyx, cb6[r19.z + 344].zzwz + mad r20.xz, r25.xxyx, r20.xxzx, cb6[r19.z + 344].xxyx + mad r21.yw, r20.xxxz, cb6[400].zzzw, l(0.000000, 0.500000, 0.000000, 0.500000) + round_ni r21.yw, r21.yyyw + mad r20.xz, r20.xxzx, cb6[400].zzwz, -r21.yywy + add r31.xyzw, r20.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r32.xyzw, r31.xxzz, r31.xxzz + add r25.xy, -r20.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) + min r31.xz, r20.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r33.xy, r20.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r34.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy + add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r20.xz, r32.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r20.xxzx + mul r35.xy, r20.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r20.xz, -r31.xxzx, r31.xxzx, r25.xxyx + add r20.xz, r20.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r36.xy, r20.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r20.xz, r31.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) + mov r35.z, r36.x + mov r35.w, r20.x + mov r34.z, r33.x + mov r34.w, r32.x + add r31.xyzw, r34.zwxz, r35.zwxz + mov r36.z, r35.y + mov r36.w, r20.z + mov r33.z, r34.y + mov r33.w, r32.z + add r25.xyw, r33.zyzw, r36.zyzw + div r32.xyz, r34.xzwx, r31.zwyz + add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r32.xyz, r32.xyzx, cb6[400].xxxx + div r33.xyz, r33.zywz, r25.xywx + add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r33.xyw, r33.xyxz, cb6[400].yyyy + mul r34.xyzw, r25.xxxy, r31.zwyz + mov r32.w, r33.x + mad r35.xyzw, r21.ywyw, cb6[400].xyxy, r32.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r35.xyxx, t9.xxxx, s4, r25.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r35.zwzz, t9.xxxx, s4, r25.z + mul r20.z, r20.z, r34.y + mad r20.x, r34.x, r20.x, r20.z + mad r34.xy, r21.ywyy, cb6[400].xyxx, r32.zwzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r34.xyxx, t9.xxxx, s4, r25.z + mad r20.x, r34.z, r20.z, r20.x + mov r33.z, r32.x + mad r35.xyzw, r21.ywyw, cb6[400].xyxy, r33.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r35.xyxx, t9.xxxx, s4, r25.z + mad r20.x, r34.w, r20.z, r20.x + mul r34.xyzw, r25.yyww, r31.xyzw + mov r33.xz, r32.yyzy + mad r32.xyzw, r21.ywyw, cb6[400].xyxy, r33.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r32.xyxx, t9.xxxx, s4, r25.z + mad r20.x, r34.x, r20.z, r20.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r32.zwzz, t9.xxxx, s4, r25.z + mad r20.x, r34.y, r20.z, r20.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r35.zwzz, t9.xxxx, s4, r25.z + mad r20.x, r34.z, r20.z, r20.x + ige r20.z, r19.z, l(0) + or r29.xyz, r29.xyzx, r30.xyzx + or r22.w, r29.y, r29.x + or r22.w, r29.z, r22.w + and r24.z, r25.z, l(0x7fffffff) + ult r24.z, l(0x7f800000), r24.z + or r22.w, r22.w, r24.z + mad r29.xyzw, r21.ywyw, cb6[400].xyxy, r33.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.y, r29.xyxx, t9.xxxx, s4, r25.z + mad r20.x, r34.w, r21.y, r20.x + mul r21.y, r25.w, r31.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r29.zwzz, t9.xxxx, s4, r25.z + mad r20.x, r21.y, r21.w, r20.x + add r20.x, r20.x, l(-1.000000) + mad r19.z, cb6[r19.z + 288].w, r20.x, l(1.000000) + movc r19.z, r22.w, l(1.000000), r19.z + movc r19.z, r20.z, r19.z, l(1.000000) + else + mov r19.z, l(1.000000) + endif + if_nz r23.w + dp3 r20.x, r14.xyzx, r27.xyzx + mul_sat r20.z, r20.w, cb5[r14.w + 6].z + mad r20.z, r20.z, l(0.500000), r0.z + min r20.z, r20.z, l(1.000000) + div r20.z, r0.z, r20.z + mad r25.xyz, r14.xyzx, r20.xxxx, -r27.xyzx + dp3 r21.y, r28.xyzx, r25.xyzx + mul r20.x, r20.x, r20.x + mad r20.x, cb5[r14.w + 6].z, cb5[r14.w + 6].z, -r20.x + div_sat r20.x, r21.y, r20.x + mad r25.xyz, r27.xyzx, r20.xxxx, r28.xyzx + dp3 r20.x, r25.xyzx, r25.xyzx + rsq r20.x, r20.x + mul r26.xyz, r20.xxxx, r25.xyzx + else + mov r20.z, l(1.000000) + endif + if_nz r19.y + mul_sat r19.y, r20.w, cb5[r15.w + 6].y + mad r25.xyz, r3.xyzx, r3.wwww, r26.xyzx + dp3 r20.x, r25.xyzx, r25.xyzx + max r20.x, r20.x, l(0.0000610351562) + rsq r20.x, r20.x + mul r25.xyz, r20.xxxx, r25.xyzx + dp3_sat r20.x, r6.xyzx, r25.xyzx + dp3_sat r20.w, r5.xyzx, r25.xyzx + lt r21.y, l(0.000000), r19.y + mul r19.y, r19.y, r19.y + mad r21.w, r20.w, l(3.600000), l(0.400000) + div r19.y, r19.y, r21.w + mad r19.y, r11.w, r11.w, r19.y + min r19.y, r19.y, l(1.000000) + movc r19.y, r21.y, r19.y, r0.z + mul r19.y, r19.y, r19.y + mad r21.y, r20.x, r19.y, -r20.x + mad r20.x, r21.y, r20.x, l(1.000000) + add r20.w, -r20.w, l(1.000000) + mul r21.y, r20.w, r20.w + mul r21.y, r21.y, r21.y + mul r21.w, r20.w, r21.y + mad r20.w, -r21.y, r20.w, l(1.000000) + mad r25.xyz, r7.xyzx, r20.wwww, r21.wwww + mul r20.x, r20.x, r20.x + div r20.x, r19.y, r20.x + mul r20.x, r20.z, r20.x + mad r20.z, -r11.x, r19.y, r11.x + mad r20.z, r20.z, r11.x, r19.y + sqrt r20.z, r20.z + mad r20.w, -r21.x, r19.y, r21.x + mad r19.y, r20.w, r21.x, r19.y + sqrt r19.y, r19.y + mul r19.y, r11.x, r19.y + mad r19.y, r21.x, r20.z, r19.y + add r19.y, r19.y, l(0.000100) + div r19.y, l(0.500000), r19.y + mul r19.y, r19.y, r20.x + mul r20.xzw, r19.yyyy, r25.xxyz + min r20.xzw, r20.xxzw, l(2048.000000, 0.000000, 2048.000000, 2048.000000) + mad r21.yw, r21.xxxz, l(0.000000, 0.968750, 0.000000, 0.968750), l(0.000000, 0.015625, 0.000000, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r19.y, r21.ywyy, t13.yxzw, s1, l(0.000000) + mul r19.y, r6.w, r19.y + mul r19.y, r4.w, r19.y + div r19.y, r19.y, r5.w + mul r25.xyz, r17.xyzx, r19.yyyy + div r25.xyz, r25.xyzx, r18.xyzx + add r20.xzw, r20.xxzw, r25.xxyz + mul r20.xzw, r20.xxzw, cb5[r15.w + 6].zzzz + max r20.xzw, r20.xxzw, l(0.000000, 0.000000, 0.000000, 0.000000) + min r20.xzw, r20.xxzw, l(1000.000000, 0.000000, 1000.000000, 1000.000000) + mul r25.xyz, r9.xywx, r21.xxxx + mad r20.xzw, r20.xxzw, r21.xxxx, r25.xxyz + mul r21.xyw, r19.xxxx, cb5[r18.w + 6].xyxz + mul r19.xyz, r19.zzzz, r21.xywx + mul r19.xyz, r16.wwww, r19.xyzx + mul r19.xyz, r19.xyzx, r20.xzwx + else + mov r19.xyz, l(0,0,0,0) + endif + else + if_z r17.w + mad r16.w, cb5[r14.w + 6].y, l(0.500000), l(0.500000) + add r25.x, r16.w, -|cb5[r14.w + 6].x| + add r25.y, -r25.x, cb5[r14.w + 6].y + add r16.w, -|r25.x|, l(1.000000) + add r16.w, -|r25.y|, r16.w + max r16.w, r16.w, l(0.000488281250) + ge r17.w, cb5[r14.w + 6].x, l(0.000000) + movc r25.z, r17.w, r16.w, -r16.w + dp3 r16.w, r25.xyzx, r25.xyzx + rsq r16.w, r16.w + mul r20.xzw, r16.wwww, r25.xxyz + add r21.xyw, -r1.xyxz, cb5[r24.x + 6].xyxz + dp3 r16.w, r21.xywx, r21.xywx + rsq r17.w, r16.w + mul r25.xyz, r17.wwww, r21.xywx + ftoi r15.w, cb5[r15.w + 6].w + mul r26.xyz, r20.xzwx, cb5[r14.w + 6].zzzz + mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r21.xywx + mad r26.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r21.xywx + ftou r17.w, cb5[r18.w + 6].w + and r17.w, r17.w, l(1) + ieq r18.w, r17.w, l(0) + not r18.w, r18.w + lt r22.w, l(0.000000), cb5[r14.w + 6].z + and r18.w, r18.w, r22.w + dp3 r22.w, r27.xyzx, r27.xyzx + sqrt r22.w, r22.w + dp3 r23.w, r26.xyzx, r26.xyzx + sqrt r23.w, r23.w + dp3 r24.z, r27.xyzx, r26.xyzx + mad r22.w, r22.w, r23.w, r24.z + mad r22.w, r22.w, l(0.500000), l(1.000000) + div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w + movc r22.w, r18.w, r22.w, l(1.000000) + lt r23.w, cb5[r24.w + 6].w, l(0.000000) + if_nz r23.w + mul r23.w, cb5[r24.x + 6].w, cb5[r24.x + 6].w + mul r23.w, r16.w, r23.w + mad r23.w, -r23.w, r23.w, l(1.000000) + max r23.w, r23.w, l(0.000000) + add r16.w, r16.w, l(1.000000) + div r16.w, l(1.000000, 1.000000, 1.000000, 1.000000), r16.w + and r24.z, r18.w, l(0x3f800000) + add r25.w, -r16.w, r22.w + mad r16.w, r24.z, r25.w, r16.w + mul r23.w, r23.w, r23.w + mul r16.w, r16.w, r23.w + else + mul r26.xyz, r21.xywx, cb5[r24.x + 6].wwww + dp3 r23.w, r26.xyzx, r26.xyzx + min r23.w, r23.w, l(1.000000) + add r23.w, -r23.w, l(1.000000) + log r23.w, r23.w + mul r23.w, r23.w, cb5[r24.w + 6].w + exp r23.w, r23.w + mul r16.w, r22.w, r23.w + endif + dp3 r20.x, r25.xyzx, -r20.xzwx + add r20.x, r20.x, -cb5[r14.w + 6].z + mul_sat r20.x, r20.x, cb5[r14.w + 6].w + mul r20.x, r20.x, r20.x + movc r20.x, r17.w, l(1.000000), r20.x + mul r16.w, r16.w, r20.x + not r18.w, r18.w + ige r20.x, r15.w, l(0) + and r18.w, r18.w, r20.x + if_nz r18.w + if_z r17.w + ishl r18.w, r15.w, l(2) + mul r20.xzw, r1.yyyy, cb7[r18.w + 33].xxyw + mad r20.xzw, cb7[r18.w + 32].xxyw, r1.xxxx, r20.xxzw + mad r20.xzw, cb7[r18.w + 34].xxyw, r1.zzzz, r20.xxzw + add r20.xzw, r20.xxzw, cb7[r18.w + 35].xxyw + div_sat r20.xz, r20.xxzx, r20.wwww + mad r20.xz, r20.xxzx, cb7[r15.w + 0].zzwz, cb7[r15.w + 0].xxyx + else + ishl r18.w, r15.w, l(2) + dp3 r26.x, -r21.xywx, cb7[r18.w + 32].xyzx + dp3 r26.y, -r21.xywx, cb7[r18.w + 33].xyzx + dp3 r26.z, -r21.xywx, cb7[r18.w + 34].xyzx + lt r18.w, |r26.x|, |r26.y| + and r18.w, r18.w, l(1) + dp2 r20.w, |r26.xyxx|, icb[r18.w + 0].xyxx + lt r20.w, r20.w, |r26.z| + movc r18.w, r20.w, l(2), r18.w + dp3 r20.w, r26.xyzx, icb[r18.w + 0].xyzx + lt r20.w, r20.w, l(0.000000) + bfi r18.w, l(31), l(1), r18.w, r20.w + ushr r20.w, r18.w, l(1) + dp3 r20.w, r26.xyzx, icb[r20.w + 0].xyzx + div r21.x, l(0.000244140625), cb7[r15.w + 0].w + add r21.x, -r21.x, l(0.500000) + utof r21.y, r18.w + ult r21.w, r18.w, l(2) + and r21.w, r21.w, l(2) + dp2 r21.w, r26.xzxx, icb[r21.w + 0].xzxx + mul r21.w, r21.w, icb[r18.w + 4].z + div r21.w, r21.w, |r20.w| + mad r21.y, r21.w, r21.x, r21.y + add r21.y, r21.y, l(0.500000) + mul_sat r27.x, r21.y, l(0.166666672) + iadd r21.y, l(-1), icb[r18.w + 4].y + dp2 r21.y, r26.yzyy, icb[r21.y + 0].xyxx + mul r18.w, r21.y, icb[r18.w + 4].w + div r18.w, r18.w, |r20.w| + mad_sat r27.y, -r18.w, r21.x, l(0.500000) + mad r20.xz, r27.xxyx, cb7[r15.w + 0].zzwz, cb7[r15.w + 0].xxyx + endif + sample_l_indexable(texture2d)(float,float,float,float) r15.w, r20.xzxx, t21.yzwx, s1, l(0.000000) + mul r16.w, r15.w, r16.w + endif + lt r15.w, l(0.000000), r16.w + if_nz r15.w + if_z r17.w + ftoi r15.w, cb5[r24.y + 6].x + else + add r20.xzw, r1.xxyz, -cb5[r24.x + 6].xxyz + lt r21.xyw, |r20.zwzw|, |r20.xxxz| + and r16.w, r21.y, r21.x + lt r20.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xxzw + ushr r17.w, cb5[r14.w + 6].w, l(24) + ubfe r21.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r14.w + 6].wwww + movc r17.w, r20.x, r17.w, r21.x + and r14.w, l(255), cb5[r14.w + 6].w + movc r14.w, r20.z, r21.y, r14.w + ubfe r18.w, l(8), l(8), cb5[r24.y + 6].x + and r20.x, l(255), cb5[r24.y + 6].x + movc r18.w, r20.w, r18.w, r20.x + movc r14.w, r21.w, r14.w, r18.w + movc r14.w, r16.w, r17.w, r14.w + ilt r16.w, r14.w, l(80) + movc r15.w, r16.w, r14.w, l(-1) + endif + mad r20.xzw, r25.xxyz, cb6[r15.w + 288].xxxx, r1.xxyz + mul r14.w, l(5.000000), cb6[r15.w + 288].y + mad r20.xzw, r6.xxyz, r14.wwww, r20.xxzw + ishl r14.w, r15.w, l(2) + mul r24.xyzw, r20.zzzz, cb6[r14.w + 65].xyzw + mad r24.xyzw, cb6[r14.w + 64].xyzw, r20.xxxx, r24.xyzw + mad r24.xyzw, cb6[r14.w + 66].xyzw, r20.wwww, r24.xyzw + add r24.xyzw, r24.xyzw, cb6[r14.w + 67].xyzw + div r20.xzw, r24.xxyz, r24.wwww + ge r21.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xzxw + ge r24.xyz, r20.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r25.xy, -cb6[r15.w + 344].xyxx, cb6[r15.w + 344].zwzz + mad r20.xz, r20.xxzx, r25.xxyx, cb6[r15.w + 344].xxyx + mad r25.xy, r20.xzxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r25.xy, r25.xyxx + mad r20.xz, r20.xxzx, cb6[400].zzwz, -r25.xxyx + add r26.xyzw, r20.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r25.zw, -r20.xxxz, l(0.000000, 0.000000, 1.000000, 1.000000) + min r26.xz, r20.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) + max r28.xy, r20.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy + add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r20.xz, r27.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r20.xxzx + mul r30.xy, r20.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r20.xz, -r26.xxzx, r26.xxzx, r25.zzwz + add r20.xz, r20.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r31.xy, r20.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r20.xz, r26.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) + mov r30.z, r31.x + mov r30.w, r20.x + mov r29.z, r28.x + mov r29.w, r27.x + add r26.xyzw, r29.zwxz, r30.zwxz + mov r31.z, r30.y + mov r31.w, r20.z + mov r28.z, r29.y + mov r28.w, r27.z + add r27.xyz, r28.zywz, r31.zywz + div r29.xyz, r29.xzwx, r26.zwyz + add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r29.xyz, r29.xyzx, cb6[400].xxxx + div r28.xyz, r28.zywz, r27.xyzx + add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r28.xyw, r28.xyxz, cb6[400].yyyy + mul r30.xyzw, r26.zwyz, r27.xxxy + mov r29.w, r28.x + mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r29.xwyw + sample_c_lz_indexable(texture2d)(float,float,float,float) r14.w, r31.xyxx, t9.xxxx, s4, r20.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r31.zwzz, t9.xxxx, s4, r20.w + mul r16.w, r16.w, r30.y + mad r14.w, r30.x, r14.w, r16.w + mad r20.xz, r25.xxyx, cb6[400].xxyx, r29.zzwz + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r20.xzxx, t9.xxxx, s4, r20.w + mad r14.w, r30.z, r16.w, r14.w + mov r28.z, r29.x + mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r28.zyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r31.xyxx, t9.xxxx, s4, r20.w + mad r14.w, r30.w, r16.w, r14.w + mul r30.xyzw, r26.xyzw, r27.yyzz + mov r28.xz, r29.yyzy + mad r29.xyzw, r25.xyxy, cb6[400].xyxy, r28.xyzy + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r29.xyxx, t9.xxxx, s4, r20.w + mad r14.w, r30.x, r16.w, r14.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r29.zwzz, t9.xxxx, s4, r20.w + mad r14.w, r30.y, r16.w, r14.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r31.zwzz, t9.xxxx, s4, r20.w + mad r14.w, r30.z, r16.w, r14.w + ige r16.w, r15.w, l(0) + or r21.xyw, r21.xyxw, r24.xyxz + or r17.w, r21.y, r21.x + or r17.w, r21.w, r17.w + and r18.w, r20.w, l(0x7fffffff) + ult r18.w, l(0x7f800000), r18.w + or r17.w, r17.w, r18.w + mad r24.xyzw, r25.xyxy, cb6[400].xyxy, r28.xwzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r24.xyxx, t9.xxxx, s4, r20.w + mad r14.w, r30.w, r18.w, r14.w + mul r18.w, r26.y, r27.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r24.zwzz, t9.xxxx, s4, r20.w + mad r14.w, r18.w, r20.x, r14.w + add r14.w, r14.w, l(-1.000000) + mad r14.w, cb6[r15.w + 288].w, r14.w, l(1.000000) + movc r14.w, r17.w, l(1.000000), r14.w + movc r14.w, r16.w, r14.w, l(1.000000) + else + mov r14.w, l(1.000000) + endif + else + mov r14.w, l(1.000000) + endif + mul r11.z, r11.z, r14.w + mov r19.xyz, l(0,0,0,0) + endif + add r23.xyz, r19.xyzx, r23.xyzx + mov r12.w, r15.z + endloop + mov r7.w, r11.z + add r22.xyz, r22.xyzx, r23.xyzx + iadd r8.w, r8.w, l(1) +endloop +// === Glass Fix: Reduce clustered lights and overall brightness === +lt r37.x, l(0.500000), cb13[14].x +if_nz r37.x + mul r22.xyz, r22.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + mul r2.xyz, r2.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) +endif +dp3 r0.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +add r1.xzw, -r0.xxxx, r2.xxyz +mad r0.xzw, cb0[184].wwww, r1.xxzw, r0.xxxx +mad r1.xzw, r22.xxyz, r7.wwww, r16.xxyz +mul r2.xyz, cb2[20].zzzz, cb2[21].xyzx +add r3.x, -r10.w, l(1.000000) +add r3.y, l(1.000000), -cb2[20].y +max r3.y, r3.y, l(0.010000) +div_sat r3.x, r3.x, r3.y +mad r2.xyz, r8.xyzx, r2.xyzx, -r1.xzwx +mad r1.xzw, r3.xxxx, r2.xxyz, r1.xxzw +mad r0.xzw, r0.xxzw, cb0[184].xxyz, r1.xxzw +mad r1.x, r1.y, cb0[156].w, cb0[157].w +mad r1.z, r2.w, cb0[154].w, -cb0[153].w +max r1.xz, r1.xxzx, l(0.010000, 0.000000, 0.000000, 0.000000) +mul r1.w, r1.x, l(-1.442695) +exp r1.w, r1.w +add r1.w, -r1.w, l(1.000000) +div r1.x, r1.w, r1.x +mad r1.w, r1.y, cb0[156].w, cb0[158].w +mul r1.w, r1.w, l(1.442695) +exp r1.w, r1.w +mul r1.x, r1.w, r1.x +mul r1.x, r1.x, -r1.z +mul r1.xzw, r1.xxxx, cb0[155].xxyz +mul r1.xzw, r1.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) +exp r1.xzw, r1.xxzw +dp3 r2.x, -r5.xyzx, cb0[154].xyzx +mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.z, r2.xxxx, cb0[155].wwww +add r2.y, -r2.z, r2.y +lt r2.z, l(0.000000), cb0[163].z +if_nz r2.z + and r13.w, l(7), cb0[108].w + imad r3.xyz, r13.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) + imad r2.z, r3.y, r3.z, r3.x + imad r3.x, r3.z, r2.z, r3.y + imad r3.y, r2.z, r3.x, r3.z + imad r6.x, r3.x, r3.y, r2.z + dp3 r2.z, -r5.xyzx, -r4.xyzx + add r3.z, r1.y, -cb0[44].y + lt r3.w, l(5.960464478E-08), r2.z + div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z + and r2.z, r2.z, r3.w + mul r2.z, r2.z, cb0[163].w + div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w + mul r4.x, r2.z, r3.w + mad r4.y, r4.x, r3.z, cb0[44].y + mad r3.z, -r4.x, r3.z, r3.z + mul r4.x, r3.z, cb0[159].z + mul r3.z, r3.z, cb0[162].x + max r3.z, r3.z, l(-127.000000) + add r4.z, r4.y, -cb0[159].x + mul r4.z, r4.z, cb0[159].z + max r4.xz, r4.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) + exp r4.z, -r4.z + mul r4.z, r4.z, cb0[159].y + lt r4.w, l(5.960464478E-08), |r4.x| + exp r5.x, -r4.x + add r5.x, -r5.x, l(1.000000) + div r5.x, r5.x, r4.x + mad r4.x, -r4.x, l(0.240226507), l(0.693147182) + movc r4.x, r4.w, r5.x, r4.x + add r4.y, r4.y, -cb0[162].z + mul r4.y, r4.y, cb0[162].x + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[162].y + lt r4.w, l(5.960464478E-08), |r3.z| + exp r5.x, -r3.z + add r5.x, -r5.x, l(1.000000) + div r5.x, r5.x, r3.z + mad r3.z, -r3.z, l(0.240226507), l(0.693147182) + movc r3.z, r4.w, r5.x, r3.z + mul r3.z, r3.z, r4.y + mad r3.z, r4.z, r4.x, r3.z + mad r2.z, -r2.z, r3.w, l(1.000000) + mul r2.z, r2.w, r2.z + mul r2.z, r2.z, r3.z + exp r2.z, -r2.z + min r2.z, r2.z, l(1.000000) + max r2.z, r2.z, cb0[161].w + mad_sat r3.zw, r2.wwww, cb0[160].yyyw, cb0[160].xxxz + add r2.z, r2.z, r3.z + add r2.z, r3.w, r2.z + min r2.z, r2.z, l(1.000000) + imad r6.y, r3.y, r6.x, r3.x + ushr r3.xy, r6.xyxx, l(16, 16, 0, 0) + utof r3.xy, r3.xyxx + mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb0[167].wwww, r15.xyxx + mul r3.xy, r3.xyxx, cb0[165].xyxx + mad r3.w, r13.z, cb0[164].x, cb0[164].y + log r3.w, r3.w + mul r3.w, r3.w, cb0[164].z + div r3.z, r3.w, cb0[163].z + sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t20.xyzw, s1, l(0.000000) + add r4.x, r13.z, -cb0[166].z + mul_sat r4.x, r4.x, l(1000000.000000) + add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r3.xyzw, r4.xxxx, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r4.x, -r2.z, l(1.000000) + mul r4.xyz, r4.xxxx, cb0[161].xyzx + mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx + mul r2.z, r2.z, r3.w +else + add r1.y, r1.y, -cb0[44].y + mul r3.w, r1.y, cb0[159].z + max r3.w, r3.w, l(-127.000000) + mul r1.y, r1.y, cb0[162].x + max r1.y, r1.y, l(-127.000000) + add r4.x, cb0[44].y, -cb0[159].x + mul r4.x, r4.x, cb0[159].z + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[159].y + lt r4.y, l(5.960464478E-08), |r3.w| + exp r4.z, -r3.w + add r4.z, -r4.z, l(1.000000) + div r4.z, r4.z, r3.w + mad r3.w, -r3.w, l(0.240226507), l(0.693147182) + movc r3.w, r4.y, r4.z, r3.w + add r4.y, cb0[44].y, -cb0[162].z + mul r4.y, r4.y, cb0[162].x + max r4.y, r4.y, l(-127.000000) + exp r4.y, -r4.y + mul r4.y, r4.y, cb0[162].y + lt r4.z, l(5.960464478E-08), |r1.y| + exp r4.w, -r1.y + add r4.w, -r4.w, l(1.000000) + div r4.w, r4.w, r1.y + mad r1.y, -r1.y, l(0.240226507), l(0.693147182) + movc r1.y, r4.z, r4.w, r1.y + mul r1.y, r1.y, r4.y + mad r1.y, r4.x, r3.w, r1.y + mul r1.y, r2.w, r1.y + exp r1.y, -r1.y + min r1.y, r1.y, l(1.000000) + max r1.y, r1.y, cb0[161].w + mad_sat r4.xy, r2.wwww, cb0[160].ywyy, cb0[160].xzxx + add r1.y, r1.y, r4.x + add r1.y, r4.y, r1.y + min r2.z, r1.y, l(1.000000) + add r1.y, -r2.z, l(1.000000) + mul r3.xyz, r1.yyyy, cb0[161].xyzx +endif +mul r4.xyz, r1.xzwx, r2.zzzz +mad r1.y, r2.x, r2.x, l(1.000000) +mul r1.y, r1.y, l(0.0596831031) +mad r5.xyz, cb0[156].xyzx, r1.yyyy, cb0[158].xyzx +mad r1.y, -cb0[155].w, cb0[155].w, l(1.000000) +mul r2.x, r2.y, l(12.566371) +sqrt r2.y, r2.y +mul r2.x, r2.y, r2.x +max r2.x, r2.x, l(0.001000) +div r1.y, r1.y, r2.x +mad_sat r2.xyw, cb0[157].xyxz, r1.yyyy, r5.xyxz +mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) +add r1.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r1.xyz, r1.xyzx, r2.xywx +mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx +// === Glass Transparency Fix === +lt r37.x, l(0.500000), cb13[14].x +if_nz r37.x + add r37.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r37.xyz, r37.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r4.xyzx + mul r38.xyz, r1.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000) + mad r10.xyz, r0.xzwx, r37.xyzx, r38.xyzx +else + mad r10.xyz, r0.xzwx, r4.xyzx, r1.xyzx +endif +mul r0.xz, r12.xxyx, l(0.500000, 0.000000, -0.500000, 0.000000) +sqrt r0.xz, |r0.xxzx| +sqrt r0.xz, r0.xxzx +mov r12.z, -r12.y +lt r1.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r12.xzxx +lt r1.zw, r12.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000) +iadd r1.xy, -r1.xyxx, r1.zwzz +itof r1.xy, r1.xyxx +mul r0.xz, r0.xxzx, r1.xxyx +mad r0.xz, r0.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) +add r0.y, r0.y, l(-0.100000024) +lt r0.w, l(0.000000), r0.y +lt r0.y, r0.y, l(0.000000) +iadd r0.y, -r0.w, r0.y +itof r0.y, r0.y +mov_sat r0.y, r0.y +add r1.xy, -r0.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mad r0.xy, r0.yyyy, r1.xyxx, r0.xzxx +min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) +dp3 r0.x, r10.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) +mul r0.x, r10.w, r0.x +max r0.x, r10.w, r0.x +mul_sat r0.x, r0.x, l(10.000000) +lt r0.x, l(0.500000), r0.x +and o1.z, r0.x, l(0x3f800000) +// === Glass Highlight Compression === +lt r37.x, l(0.500000), cb13[14].x +if_nz r37.x + dp3 r37.y, r10.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) + lt r37.z, l(0.500000), r37.y + if_nz r37.z + add r37.w, r37.y, l(-0.500000) + mul r37.w, r37.w, l(-0.666667) + exp r37.w, r37.w + add r37.w, -r37.w, l(1.000000) + mad r37.w, r37.w, l(1.500000), l(0.500000) + max r38.x, r37.y, l(0.001000) + div r38.x, r37.w, r38.x + mul r10.xyz, r10.xyzx, r38.xxxx + endif +endif +mov o0.xyzw, r10.xyzw +mov o1.w, l(0) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0xF831814B.cso b/src/games/endfield/glass/0xF831814B.cso new file mode 100644 index 0000000000000000000000000000000000000000..a3ab094752610f9857a4151b214c8306284b4592 GIT binary patch literal 53924 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 1.0f) { r0.xyz = ApplyRCAS(r0.xyz, v1.xy, t0, s0_s); } + + // Apply color calibration (temp 6750K + magenta 0.03) — Tech Test Look + if (TECH_TEST_LOOK > 0.5f) { + r0.xyz = ApplyColorCalibration(r0.xyz); + } o0.xyz = r0.xyz; o0.w = 0; diff --git a/src/games/endfield/others/skybox2_0xEC809E79.ps_5_0.hlsl b/src/games/endfield/others/skybox2_0xEC809E79.ps_5_0.hlsl index 6b9daf3e12..eadcc7b9aa 100644 --- a/src/games/endfield/others/skybox2_0xEC809E79.ps_5_0.hlsl +++ b/src/games/endfield/others/skybox2_0xEC809E79.ps_5_0.hlsl @@ -902,6 +902,15 @@ void main( r2.xyz = r4.xyz * r2.xyz; r2.xyz = r2.xyz * r1.yyy + r3.yzw; o0.xyz = r0.xyz * r1.xzw + r2.xyz; + + // ========================================================================== + // SKYBOX DESATURATION (50%) — Tech Test Look + // ========================================================================== + if (TECH_TEST_LOOK > 0.5f) { + float skyboxLuma = dot(o0.xyz, float3(0.2126f, 0.7152f, 0.0722f)); + o0.xyz = lerp(o0.xyz, float3(skyboxLuma, skyboxLuma, skyboxLuma), 0.5f); + } + r0.x = max(9.99999994e-09, v3.z); r0.xy = v3.xy / r0.xx; r0.z = max(9.99999994e-09, v4.z); diff --git a/src/games/endfield/others/skybox_0x9E0DE464.ps_5_0.hlsl b/src/games/endfield/others/skybox_0x9E0DE464.ps_5_0.hlsl index ddf5d9aec5..6f51cf4b3c 100644 --- a/src/games/endfield/others/skybox_0x9E0DE464.ps_5_0.hlsl +++ b/src/games/endfield/others/skybox_0x9E0DE464.ps_5_0.hlsl @@ -567,6 +567,14 @@ void main( r2.xyz = r4.xyz * r2.xyz; r2.xyz = r2.xyz * r1.yyy + r3.yzw; o0.xyz = r0.xyz * r1.xzw + r2.xyz; + + // ========================================================================== + // SKYBOX DESATURATION (50%) — Tech Test Look + // ========================================================================== + if (TECH_TEST_LOOK > 0.5f) { + float skyboxLuma = dot(o0.xyz, float3(0.2126f, 0.7152f, 0.0722f)); + o0.xyz = lerp(o0.xyz, float3(skyboxLuma, skyboxLuma, skyboxLuma), 0.5f); + } // ========================================================================== // VELOCITY BUFFER OUTPUT (for motion blur / TAA) diff --git a/src/games/endfield/others/sun-lens-dirt_0xC3217979.ps_5_0.hlsl b/src/games/endfield/others/sun-lens-dirt_0xC3217979.ps_5_0.hlsl index b1dfa9ad53..a642ee934f 100644 --- a/src/games/endfield/others/sun-lens-dirt_0xC3217979.ps_5_0.hlsl +++ b/src/games/endfield/others/sun-lens-dirt_0xC3217979.ps_5_0.hlsl @@ -32,6 +32,6 @@ void main( r0.xyzw = t0.SampleBias(s0_s, v1.xy, cb0[108].x).xyzw; r0.xyzw = cb1[6].xyzw * r0.xyzw; - o0.xyzw = w1 * r0.xyzw; + o0.xyzw = w1 * r0.xyzw * 0.25f; return; } \ No newline at end of file diff --git a/src/games/endfield/shadows/cloud-shadows_0x61FA72DD.ps_5_0.hlsl b/src/games/endfield/shadows/cloud-shadows_0x61FA72DD.ps_5_0.hlsl index 1225476fee..f739471418 100644 --- a/src/games/endfield/shadows/cloud-shadows_0x61FA72DD.ps_5_0.hlsl +++ b/src/games/endfield/shadows/cloud-shadows_0x61FA72DD.ps_5_0.hlsl @@ -1,4 +1,4 @@ -// ---- Created with 3Dmigoto v1.4.1 on Sat Jan 24 04:33:32 2026 + #include "../shared.h" Texture2D t5 : register(t5); diff --git a/src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl b/src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl index 674518ae94..42788250ac 100644 --- a/src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl +++ b/src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl @@ -1,5 +1,4 @@ -// ---- Created with 3Dmigoto v1.4.1 on Sat Jan 24 06:14:41 2026 -// Fixed for compilation + #include "../shared.h" groupshared struct { float val[1]; } g0[128]; @@ -26,14 +25,9 @@ cbuffer cb0 : register(b0) [numthreads(64, 1, 1)] void main(uint3 vThreadIDInGroup : SV_GroupThreadID, uint3 vThreadGroupID : SV_GroupID) { -// Needs manual fix for instruction: -// unknown dcl_: dcl_uav_typed_texture2d (unorm,unorm,unorm,unorm) u0 float4 r0,r1,r2,r3,r4,r5,r6,r7,r8; uint4 bitmask, uiDest; float4 fDest; - -// Needs manual fix for instruction: -// unknown dcl_: dcl_thread_group 64, 1, 1 r0.x = cmp(0 < cb1[2].w); r0.x = r0.x ? 0 : 63; r0.x = (int)r0.x ^ (int)vThreadIDInGroup.x; diff --git a/src/games/endfield/shared.h b/src/games/endfield/shared.h index 8e301166ca..ef22ab020c 100644 --- a/src/games/endfield/shared.h +++ b/src/games/endfield/shared.h @@ -96,7 +96,26 @@ struct ShaderInjectData { float ssr_gi_intensity; float metallic_ibl_intensity; float cubemap_ambient_link; - float glass_transparency; + float glass_transparency; + float improved_ssr; + float tech_test_look; + float ui_aspect_ratio; + float ao_radius; + float ao_radius_scale; + float ao_falloff_range; + float ao_distribution_power; + float ao_thin_occluder; + float ao_gamma; + float ao_temporal_frame; + float ao_mip_bias; + float ao_direction_count; + float ao_step_count; + float ao_normal_attenuation; + float ao_thickness; + float ao_denoiser_blur_beta; + float ao_debug_view; + float ao_bitmask; + float improved_gtao; }; #ifndef __cplusplus @@ -157,6 +176,24 @@ cbuffer shader_injection : register(b13) { #define CHROMATIC_ABERRATION_STRENGTH shader_injection.chromatic_aberration_strength #define FOG_MODIFICATION shader_injection.fog_modification #define GLASS_TRANSPARENCY shader_injection.glass_transparency +#define TECH_TEST_LOOK shader_injection.tech_test_look +#define UI_ASPECT_RATIO shader_injection.ui_aspect_ratio +#define AO_RADIUS shader_injection.ao_radius +#define AO_RADIUS_SCALE shader_injection.ao_radius_scale +#define AO_FALLOFF_RANGE shader_injection.ao_falloff_range +#define AO_DISTRIBUTION_POWER shader_injection.ao_distribution_power +#define AO_THIN_OCCLUDER shader_injection.ao_thin_occluder +#define AO_GAMMA shader_injection.ao_gamma +#define AO_TEMPORAL_FRAME shader_injection.ao_temporal_frame +#define AO_MIP_BIAS shader_injection.ao_mip_bias +#define AO_DIRECTION_COUNT shader_injection.ao_direction_count +#define AO_STEP_COUNT shader_injection.ao_step_count +#define AO_NORMAL_ATTENUATION shader_injection.ao_normal_attenuation +#define AO_THICKNESS shader_injection.ao_thickness +#define AO_DENOISER_BLUR_BETA shader_injection.ao_denoiser_blur_beta +#define AO_DEBUG_VIEW shader_injection.ao_debug_view +#define AO_BITMASK shader_injection.ao_bitmask +#define IMPROVED_GTAO shader_injection.improved_gtao #include "../../shaders/renodx.hlsl" diff --git a/src/games/endfield/ssr/ssr-denoiser_0xF99BCA96.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-denoiser_0xF99BCA96.cs_5_0.hlsl new file mode 100644 index 0000000000..35be5fc904 --- /dev/null +++ b/src/games/endfield/ssr/ssr-denoiser_0xF99BCA96.cs_5_0.hlsl @@ -0,0 +1,203 @@ + +#include "../shared.h" + +Texture2D t3 : register(t3); +Texture2D t2 : register(t2); +Texture2D t1 : register(t1); +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb0 : register(b0) +{ + float4 cb0[83]; +} + +RWTexture2D u0 : register(u0); + +#define cmp - + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13; + uint4 bitmask, uiDest; + float4 fDest; + + // === ORIGINAL DENOISER === + r0.xyzw = (int4)vThreadID.xyxy + int4(0,1,1,1); + r0.xyzw = (int4)r0.xyzw; + r0.xyzw = float4(0.5,0.5,0.5,0.5) + r0.xyzw; + r0.xyzw = cb0[82].zwzw * r0.xyzw; + r1.xyz = t1.SampleLevel(s0_s, r0.zw, 0).xyz; + r0.xyz = t1.SampleLevel(s0_s, r0.xy, 0).xyz; + r0.w = dot(r1.xz, float2(0.5,-0.5)); + r2.y = 0.501960814 + r0.w; + r0.w = dot(r1.xzy, float3(-0.25,-0.25,0.5)); + r2.x = dot(r1.xzy, float3(0.25,0.25,0.5)); + r2.z = 0.501960814 + r0.w; + r0.w = dot(r0.xz, float2(0.5,-0.5)); + r1.y = 0.501960814 + r0.w; + r0.w = dot(r0.xzy, float3(-0.25,-0.25,0.5)); + r1.x = dot(r0.xzy, float3(0.25,0.25,0.5)); + r1.z = 0.501960814 + r0.w; + r0.xyzw = (int4)vThreadID.xyxy + int4(1,0,-1,1); + r0.xyzw = (int4)r0.xyzw; + r0.xyzw = float4(0.5,0.5,0.5,0.5) + r0.xyzw; + r0.xyzw = cb0[82].zwzw * r0.xyzw; + r3.xyz = t1.SampleLevel(s0_s, r0.zw, 0).xyz; + r0.xyz = t1.SampleLevel(s0_s, r0.xy, 0).xyz; + r0.w = dot(r3.xz, float2(0.5,-0.5)); + r4.y = 0.501960814 + r0.w; + r0.w = dot(r3.xzy, float3(-0.25,-0.25,0.5)); + r4.x = dot(r3.xzy, float3(0.25,0.25,0.5)); + r4.z = 0.501960814 + r0.w; + r0.w = dot(r0.xz, float2(0.5,-0.5)); + r3.y = 0.501960814 + r0.w; + r0.w = dot(r0.xzy, float3(-0.25,-0.25,0.5)); + r3.x = dot(r0.xzy, float3(0.25,0.25,0.5)); + r3.z = 0.501960814 + r0.w; + r0.xyzw = (int4)vThreadID.xyxy + int4(1,-1,-1,0); + r0.xyzw = (int4)r0.xyzw; + r0.xyzw = float4(0.5,0.5,0.5,0.5) + r0.xyzw; + r0.xyzw = cb0[82].zwzw * r0.xyzw; + r5.xyz = t1.SampleLevel(s0_s, r0.zw, 0).xyz; + r0.xyz = t1.SampleLevel(s0_s, r0.xy, 0).xyz; + r0.w = dot(r5.xz, float2(0.5,-0.5)); + r6.y = 0.501960814 + r0.w; + r0.w = dot(r5.xzy, float3(-0.25,-0.25,0.5)); + r6.x = dot(r5.xzy, float3(0.25,0.25,0.5)); + r6.z = 0.501960814 + r0.w; + r0.w = dot(r0.xz, float2(0.5,-0.5)); + r5.y = 0.501960814 + r0.w; + r0.w = dot(r0.xzy, float3(-0.25,-0.25,0.5)); + r5.x = dot(r0.xzy, float3(0.25,0.25,0.5)); + r5.z = 0.501960814 + r0.w; + r0.xyzw = (int4)vThreadID.xyxy + int4(-1,-1,0,-1); + r0.xyzw = (int4)r0.xyzw; + r0.xyzw = float4(0.5,0.5,0.5,0.5) + r0.xyzw; + r0.xyzw = cb0[82].zwzw * r0.xyzw; + r7.xyz = t1.SampleLevel(s0_s, r0.xy, 0).xyz; + r0.xyz = t1.SampleLevel(s0_s, r0.zw, 0).xyz; + r0.w = dot(r7.xz, float2(0.5,-0.5)); + r8.y = 0.501960814 + r0.w; + r0.w = dot(r7.xzy, float3(-0.25,-0.25,0.5)); + r8.x = dot(r7.xzy, float3(0.25,0.25,0.5)); + r8.z = 0.501960814 + r0.w; + r0.w = dot(r0.xz, float2(0.5,-0.5)); + r7.y = 0.501960814 + r0.w; + r0.w = dot(r0.xzy, float3(-0.25,-0.25,0.5)); + r7.x = dot(r0.xzy, float3(0.25,0.25,0.5)); + r7.z = 0.501960814 + r0.w; + r0.xyz = r7.xyz * r7.xyz; + r0.xyz = r8.xyz * r8.xyz + r0.xyz; + r0.xyz = r5.xyz * r5.xyz + r0.xyz; + r0.xyz = r6.xyz * r6.xyz + r0.xyz; + r9.xy = (int2)vThreadID.xy; + r9.xy = float2(0.5,0.5) + r9.xy; + r9.xy = cb0[82].zw * r9.xy; + r10.xyz = t1.SampleLevel(s0_s, r9.xy, 0).xyz; + r0.w = dot(r10.xz, float2(0.5,-0.5)); + r11.y = 0.501960814 + r0.w; + r0.w = dot(r10.xzy, float3(-0.25,-0.25,0.5)); + r11.z = 0.501960814 + r0.w; + r11.x = dot(r10.xzy, float3(0.25,0.25,0.5)); + r0.xyz = r11.xyz * r11.xyz + r0.xyz; + r0.xyz = r3.xyz * r3.xyz + r0.xyz; + r0.xyz = r4.xyz * r4.xyz + r0.xyz; + r0.xyz = r1.xyz * r1.xyz + r0.xyz; + r0.xyz = r2.xyz * r2.xyz + r0.xyz; + r12.xyz = r8.xyz + r7.xyz; + r12.xyz = r12.xyz + r5.xyz; + r12.xyz = r12.xyz + r6.xyz; + r12.xyz = r12.xyz + r11.xyz; + r12.xyz = r12.xyz + r3.xyz; + r12.xyz = r12.xyz + r4.xyz; + r12.xyz = r12.xyz + r1.xyz; + r12.xyz = r12.xyz + r2.xyz; + r13.xyz = float3(0.111111112,0.111111112,0.111111112) * r12.xyz; + r13.xyz = r13.xyz * r13.xyz; + r0.xyz = r0.xyz * float3(0.111111112,0.111111112,0.111111112) + -r13.xyz; + r0.xyz = sqrt(r0.xyz); + + // Variance multiplier: wider = more history survives the clamp = less shimmer + // Vanilla is 1.25. In Reduced mode, widen to 2.0 for stability. + + float variance_mult = (shader_injection.improved_ssr >= 0.5f) ? 2.0f : 1.25f; + r0.xyz = variance_mult * r0.xyz; + r13.xyz = r12.xyz * float3(0.111111112,0.111111112,0.111111112) + -r0.xyz; + r0.xyz = r12.xyz * float3(0.111111112,0.111111112,0.111111112) + r0.xyz; + r12.xyz = min(r8.xyz, r5.xyz); + r5.xyz = max(r8.xyz, r5.xyz); + r8.xyz = min(r4.xyz, r2.xyz); + r2.xyz = max(r4.xyz, r2.xyz); + r2.xyz = max(r5.xyz, r2.xyz); + r4.xyz = min(r12.xyz, r8.xyz); + r5.xyz = min(r3.xyz, r1.xyz); + r1.xyz = max(r3.xyz, r1.xyz); + r3.xyz = min(r11.xyz, r6.xyz); + r6.xyz = max(r11.xyz, r6.xyz); + r1.xyz = max(r6.xyz, r1.xyz); + r1.xyz = max(r7.xyz, r1.xyz); + r3.xyz = min(r3.xyz, r5.xyz); + r3.xyz = min(r7.xyz, r3.xyz); + r4.xyz = min(r3.xyz, r4.xyz); + r3.xyz = r4.xyz + r3.xyz; + r3.xyz = float3(0.5,0.5,0.5) * r3.xyz; + r3.xyz = min(r3.xyz, r13.xyz); + r2.xyz = max(r1.xyz, r2.xyz); + r1.xyz = r2.xyz + r1.xyz; + r1.xyz = float3(0.5,0.5,0.5) * r1.xyz; + r0.xyz = max(r1.xyz, r0.xyz); + r1.xyz = r0.xyz + -r3.xyz; + r0.xyz = r0.xyz + r3.xyz; + r1.xyz = float3(0.5,0.5,0.5) * r1.xyz; + r2.xy = t0.SampleLevel(s0_s, r9.xy, 0).xy; + r2.zw = float2(-0.5,-0.5) + r2.xy; + r2.xy = abs(r2.xy) * float2(2,2) + float2(-1,-1); + r2.xy = r2.xy * r2.xy; + r2.xy = r2.xy * r2.xy; + r3.xy = cmp(float2(0,0) < r2.zw); + r2.zw = cmp(r2.zw < float2(0,0)); + r2.zw = (int2)-r3.xy + (int2)r2.zw; + r2.zw = (int2)r2.zw; + r2.xy = -r2.xy * r2.zw + r9.xy; + r0.w = t2.SampleLevel(s0_s, r9.xy, 0).x; + r0.w = 0.899999976 * r0.w; + if (shader_injection.improved_ssr >= 0.5f) { + // Manual bilinear interpolation for history color + float2 texelPos = r2.xy * cb0[82].xy - 0.5; + float2 f = frac(texelPos); + float2 base = (floor(texelPos) + 0.5) * cb0[82].zw; + float3 h00 = t3.SampleLevel(s0_s, base, 0).xyz; + float3 h10 = t3.SampleLevel(s0_s, base + float2(cb0[82].z, 0), 0).xyz; + float3 h01 = t3.SampleLevel(s0_s, base + float2(0, cb0[82].w), 0).xyz; + float3 h11 = t3.SampleLevel(s0_s, base + cb0[82].zw, 0).xyz; + r2.xyz = lerp(lerp(h00, h10, f.x), lerp(h01, h11, f.x), f.y); + } else { + r2.xyz = t3.SampleLevel(s0_s, r2.xy, 0).xyz; + } + r1.w = dot(r2.xz, float2(0.5,-0.5)); + r3.y = 0.501960814 + r1.w; + r1.w = dot(r2.xzy, float3(-0.25,-0.25,0.5)); + r3.x = dot(r2.xzy, float3(0.25,0.25,0.5)); + r3.z = 0.501960814 + r1.w; + r2.xyz = -r0.xyz * float3(0.5,0.5,0.5) + r3.xyz; + r1.xyz = r2.xyz / r1.xyz; + r1.y = max(abs(r1.y), abs(r1.z)); + r1.x = max(abs(r1.x), r1.y); + r1.yzw = r2.xyz / r1.xxx; + r1.x = cmp(1 < r1.x); + r0.xyz = r0.xyz * float3(0.5,0.5,0.5) + r1.yzw; + r0.xyz = r1.xxx ? r0.xyz : r3.xyz; + r0.yz = float2(-0.501960814,-0.501960814) + r0.yz; + r1.xy = r0.xx + r0.yz; + r1.xw = r1.xx + -r0.zz; + r0.y = r0.x + -r0.y; + r1.z = r0.y + -r0.z; + r1.xyzw = r1.xyzw + -r10.xyzx; + r0.xyzw = r0.wwww * r1.xyzw + r10.xyzx; + r0.xyzw = max(float4(0.00100000005,0.00100000005,0.00100000005,0.00100000005), r0.xyzw); + u0[vThreadID.xy] = r0.xyzw; + return; +} \ No newline at end of file diff --git a/src/games/endfield/ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl new file mode 100644 index 0000000000..6910ab5780 --- /dev/null +++ b/src/games/endfield/ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl @@ -0,0 +1,348 @@ + +#include "../shared.h" + +Texture2D t2 : register(t2); +Texture2D t1 : register(t1); +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[6]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[85]; +} + +RWTexture2D u0 : register(u0); +RWTexture2D u1 : register(u1); +RWTexture2D u2 : register(u2); + +#define cmp - + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12; + uint4 bitmask, uiDest; + float4 fDest; + r0.xy = (int2)vThreadID.xy; + r0.xy = float2(0.5,0.5) + r0.xy; + r0.zw = cb1[0].zw * r0.xy; + r1.z = t0.SampleLevel(s0_s, r0.zw, 0).x; + r2.x = cb0[84].z * r1.z + cb0[84].w; + r1.xy = r0.zw * float2(2,2) + float2(-1,-1); + r3.xyzw = cb0[13].xyzw * r1.yyyy; + r3.xyzw = cb0[12].xyzw * r1.xxxx + r3.xyzw; + r3.xyzw = cb0[14].xyzw * r1.zzzz + r3.xyzw; + r3.xyzw = cb0[15].xyzw + r3.xyzw; + r3.xyz = r3.xyz / r3.www; + r2.yzw = t1.SampleLevel(s0_s, r0.zw, 0).xyz; + r2.yz = r2.yz * float2(2,2) + float2(-1,-1); + r4.x = dot(float2(1,1), abs(r2.yz)); + r4.y = 1 + -r4.x; + r4.w = cmp(r4.y < 0); + r5.xy = cmp(r2.yz >= float2(0,0)); + r5.zw = float2(1,1) + -abs(r2.zy); + r5.xy = r5.xy ? float2(1,1) : float2(-1,-1); + r5.xy = r5.zw * r5.xy; + r4.xz = r4.ww ? r5.xy : r2.yz; + r2.y = dot(r4.xyz, r4.xyz); + r2.y = rsqrt(r2.y); + r4.xyz = r4.xyz * r2.yyy; + r2.y = r2.w * r2.w; + r2.y = r2.y * r2.y; + r5.xyz = cb0[1].xyz * r4.yyy; + r5.xyz = cb0[0].xyz * r4.xxx + r5.xyz; + r5.xyz = cb0[2].xyz * r4.zzz + r5.xyz; + r6.xy = float2(-0.0700000003,0.0199999996) / r2.xx; + r2.z = 1.44269502 * r6.x; + r2.z = exp2(r2.z); + r2.z = r2.z + r2.z; + r2.z = max(0.125, r2.z); + r2.z = min(1, r2.z); + r2.z = cb1[3].x * r2.z; + r2.z = ceil(r2.z); + r2.z = max((shader_injection.improved_ssr >= 0.5f) ? 256 : 32, r2.z); + r4.w = cmp(r2.w >= 0.300000012); + r5.w = 0.125 * r2.z; + r2.z = r4.w ? r5.w : r2.z; + r3.w = -r3.y; + r3.y = dot(r3.xzw, r3.xzw); + r3.y = rsqrt(r3.y); + r3.xyz = r3.xwz * r3.yyy; + r3.w = dot(r3.xyz, r5.xyz); + r4.w = r3.w + r3.w; + r3.xyz = r5.xyz * -r4.www + r3.xyz; + r5.xyzw = cb0[9].xyzw * r3.yyyy; + r5.xyzw = cb0[8].xyzw * r3.xxxx + r5.xyzw; + r5.xyzw = cb0[10].xyzw * r3.zzzz + r5.xyzw; + r1.w = 1; + r5.xyzw = r5.xyzw * float4(1,-1,1,1) + r1.xyzw; + r3.xyz = r5.xyz / r5.www; + r3.xyz = r3.xyz + -r1.xyz; + r1.w = dot(r3.xy, r3.xy); + r1.w = sqrt(r1.w); + r4.w = 0.5 * r1.w; + r5.xy = r1.xy * r4.ww + r3.xy; + r5.xy = -r1.ww * float2(0.5,0.5) + abs(r5.xy); + r5.xy = max(float2(0,0), r5.xy); + r5.xy = r5.xy / abs(r3.xy); + r5.xy = float2(1,1) + -r5.xy; + r1.w = min(r5.x, r5.y); + r1.w = r1.w / r4.w; + r3.xyz = r3.xyz * r1.www; + r1.w = abs(r3.z) / r2.z; + r1.w = max(9.99999975e-05, r1.w); + r4.w = 1 / r2.z; + r3.xyz = float3(0.5,0.5,1) * r3.xyz; + r3.xyz = r3.xyz * r4.www; + r5.xy = cb1[0].xy * r3.xy; + r4.w = max(abs(r5.x), abs(r5.y)); + r5.x = cmp(r4.w < 1); + r4.w = 0.00100000005 + r4.w; + r4.w = 1 / r4.w; + r5.y = trunc(cb1[1].x); + r0.xy = r5.yy * float2(2.08299994,4.8670001) + r0.xy; + r0.x = dot(r0.xy, float2(0.0671105608,0.00583714992)); + r0.x = frac(r0.x); + r0.x = 52.9829178 * r0.x; + r0.x = frac(r0.x); + r0.x = r5.x ? r4.w : r0.x; + r5.xyz = r1.xyz * float3(0.5,0.5,1) + float3(0.5,0.5,0); + r5.xyz = r3.xyz * r0.xxx + r5.xyz; + r0.x = t0.SampleLevel(s0_s, r5.xy, 0).x; + r0.x = r5.z + -r0.x; + r6.xzw = float3(0,0,0); + r7.xyz = float3(0,0,0); + r8.xyz = r5.xyz; + r0.y = 0; + r4.w = 0; + r5.w = r0.x; + while (true) { + r7.w = cmp(r4.w < r2.z); + if (r7.w != 0) { + r9.xyzw = r3.xyxy * float4(1,1,2,2) + r8.xyxy; + r10.xyzw = r3.xyxy * float4(3,3,4,4) + r8.xyxy; + r11.xyzw = r3.zzzz * float4(1,2,3,4) + r8.zzzz; + r12.x = t0.SampleLevel(s0_s, r9.xy, 0).x; + r12.y = t0.SampleLevel(s0_s, r9.zw, 0).x; + r12.z = t0.SampleLevel(s0_s, r10.xy, 0).x; + r12.w = t0.SampleLevel(s0_s, r10.zw, 0).x; + r9.xyzw = -r12.xyzw + r11.xyzw; + r10.xyzw = r9.xyzw + r1.wwww; + r10.xyzw = cmp(abs(r10.xyzw) < r1.wwww); + r11.xy = (int2)r10.zw | (int2)r10.xy; + r7.w = (int)r11.y | (int)r11.x; + if (r7.w != 0) { + r11.xy = r10.zz ? r9.zy : r9.wz; + r9.yz = r10.yy ? r9.yx : r11.xy; + r7.w = r10.x ? r9.x : r9.y; + r8.w = r10.x ? r5.w : r9.z; + r9.x = r10.z ? 2 : 3; + r9.x = r10.y ? 1 : r9.x; + r9.x = r10.x ? 0 : r9.x; + r7.w = r8.w + -r7.w; + r7.w = saturate(r8.w / r7.w); + r7.w = r9.x + r7.w; + r9.xyz = r3.xyz * r7.www + r8.xyz; + r0.y = -1; + r7.xyz = r9.xyz; + break; + } + r8.xyz = r3.xyz * float3(4,4,4) + r8.xyz; + r4.w = 4 + r4.w; + r6.xzw = r8.xyz; + r0.y = 0; + r5.w = r9.w; + continue; + } else { + r7.xyz = r6.xzw; + r0.y = 0; + break; + } + r0.y = 0; + } + if (r0.y != 0) { + r0.x = max(r7.x, r7.y); + r0.x = 1 + -r0.x; + r0.y = min(r7.x, r7.y); + r0.x = min(r0.x, r0.y); + r3.xy = t2.SampleLevel(s0_s, r7.xy, 0).xy; + r5.xy = abs(r3.xy) * float2(2,2) + float2(-1,-1); + r5.xy = r5.xy * r5.xy; + r5.xy = r5.xy * r5.xy; + r3.xy = float2(-0.5,-0.5) + r3.xy; + r5.zw = cmp(float2(0,0) < r3.xy); + r3.xy = cmp(r3.xy < float2(0,0)); + r3.xy = (int2)-r5.zw + (int2)r3.xy; + r3.xy = (int2)r3.xy; + r3.xy = r5.xy * r3.xy; + r0.y = -cb1[2].z + 1; + r5.xy = r3.xy * r0.yy; + r1.w = cmp(cb1[1].y < r0.x); + r0.x = saturate(r0.x / cb1[1].y); + r0.x = r1.w ? 1 : r0.x; + r1.w = saturate(abs(r3.w) * cb1[1].z + cb1[1].w); + r1.w = 1 + -r1.w; + r0.x = r1.w * r0.x; + r1.w = cmp(r2.w < 0.100000001); + r2.x = 1 / r2.x; + r2.x = 100 + -r2.x; + r2.x = saturate(0.100000001 * r2.x); + r1.w = r1.w ? 1 : r2.x; + r0.x = r1.w * r0.x; + r0.zw = -r3.xy * r0.yy + r7.xy; + } else { + r5.xy = float2(0,0); + r0.x = 0; + } + r2.xz = t2.SampleLevel(s0_s, r0.zw, 0).xy; + r3.xy = abs(r2.xz) * float2(2,2) + float2(-1,-1); + r3.xy = r3.xy * r3.xy; + r0.y = 2 / r2.y; + r0.y = -1 + r0.y; + r0.y = 1 / r0.y; + r0.y = -2.03504682 * r0.y; + r0.y = exp2(r0.y); + r1.w = 1 + -r0.y; + r1.w = sqrt(r1.w); + r2.w = r0.y * -0.0187292993 + 0.0742610022; + r2.w = r2.w * r0.y + -0.212114394; + r0.y = r2.w * r0.y + 1.57072878; + r0.y = r0.y * r1.w; + r8.xyzw = cb0[25].xyzw * r1.yyyy; + r8.xyzw = cb0[24].xyzw * r1.xxxx + r8.xyzw; + r1.xyzw = cb0[26].xyzw * r1.zzzz + r8.xyzw; + r1.xyzw = cb0[27].xyzw + r1.xyzw; + r1.xyzw = r1.xyzw / r1.wwww; + r3.zw = r7.xy * float2(2,2) + float2(-1,-1); + r8.xyzw = cb0[25].xyzw * r3.wwww; + r8.xyzw = cb0[24].xyzw * r3.zzzz + r8.xyzw; + r7.xyzw = cb0[26].xyzw * r7.zzzz + r8.xyzw; + r7.xyzw = cb0[27].xyzw + r7.xyzw; + r6.xzw = cb0[44].xyz + -r1.xyz; + r2.w = dot(r6.xzw, r6.xzw); + r3.z = rsqrt(r2.w); + r8.xyz = r6.xzw * r3.zzz; + r2.w = sqrt(r2.w); + r3.w = cmp(abs(r4.z) < 0.999000013); + r9.z = r3.w ? 0 : 1; + r9.y = r3.w ? 1.000000 : 0; + r9.x = 0; + r10.xyz = r9.xyz * r4.xyz; + r9.xyz = r9.zxy * r4.yzx + -r10.xyz; + r3.w = dot(r9.xyz, r9.xyz); + r3.w = rsqrt(r3.w); + r9.xyz = r9.xyz * r3.www; + r7.xyzw = r7.xyzw / r7.wwww; + r1.xyzw = r7.xyzw + -r1.xyzw; + r1.x = dot(r1.xyzw, r1.xyzw); + r1.x = sqrt(r1.x); + r1.yzw = r9.zxy * r8.xyz; + r1.yzw = r9.yzx * r8.yzx + -r1.yzw; + sincos(r0.y, r7.x, r10.x); + r7.yzw = -r8.xyz * r2.www + cb0[44].xyz; + r10.yzw = r9.xyz * r4.xyz; + r4.xyz = r4.zxy * r9.yzx + -r10.yzw; + r9.xyz = r4.xyz * r8.xyz; + r4.xyz = r4.zxy * r8.yzx + -r9.xyz; + r0.y = r1.x + r2.w; + r9.xyz = r8.xyz * r0.yyy; + r10.yzw = cb0[21].xyw * -r9.yyy; + r9.xyw = cb0[20].xyw * -r9.xxx + r10.yzw; + r9.xyz = cb0[22].xyw * -r9.zzz + r9.xyw; + r9.xyz = cb0[23].xyw + r9.xyz; + r5.zw = r9.xy / r9.zz; + r5.zw = r5.zw * float2(0.5,0.5) + float2(0.5,0.5); + r5.zw = cb1[0].xy * r5.zw; + r0.y = dot(r1.zwy, -r8.xyz); + r9.xyz = r1.zwy * r0.yyy; + r10.yzw = -r6.xzw * r3.zzz + -r9.xyz; + r9.xyz = r10.xxx * r10.yzw + r9.xyz; + r10.yzw = r1.yzw * -r8.yzx; + r1.yzw = r1.wyz * -r8.zxy + -r10.yzw; + r1.yzw = r1.yzw * r7.xxx + r9.xyz; + r1.yzw = r1.yzw * r1.xxx + r7.yzw; + r1.yzw = -cb0[44].xyz + r1.yzw; + r9.xyz = cb0[21].xyw * r1.zzz; + r9.xyz = cb0[20].xyw * r1.yyy + r9.xyz; + r1.yzw = cb0[22].xyw * r1.www + r9.xyz; + r1.yzw = cb0[23].xyw + r1.yzw; + r0.y = dot(r4.yzx, -r8.xyz); + r9.xyz = r4.yzx * r0.yyy; + r6.xzw = -r6.xzw * r3.zzz + -r9.xyz; + r6.xzw = r10.xxx * r6.xzw + r9.xyz; + r9.xyz = r4.xyz * -r8.yzx; + r4.xyz = r4.zxy * -r8.zxy + -r9.xyz; + r4.xyz = r4.xyz * r7.xxx + r6.xzw; + r4.xyz = r4.xyz * r1.xxx + r7.yzw; + r4.xyz = -cb0[44].xyz + r4.xyz; + r6.xzw = cb0[21].xyw * r4.yyy; + r4.xyw = cb0[20].xyw * r4.xxx + r6.xzw; + r4.xyz = cb0[22].xyw * r4.zzz + r4.xyw; + r4.xyz = cb0[23].xyw + r4.xyz; + // Write UV coords to u0 + u0[vThreadID.xy] = r0.zwzz; + + r0.yz = r3.xy * r3.xy; + r2.xz = float2(-0.5,-0.5) + r2.xz; + r3.xy = cmp(float2(0,0) < r2.xz); + r2.xz = cmp(r2.xz < float2(0,0)); + r2.xz = (int2)-r3.xy + (int2)r2.xz; + r2.xz = (int2)r2.xz; + r0.yz = r0.yz * r2.xz + r5.xy; + r0.yz = cb0[82].xy * r0.yz; + r0.y = dot(r0.yz, r0.yz); + r0.y = sqrt(r0.y); + r0.z = log2(r6.y); + r0.z = saturate(r0.z * 0.693147182 + 0.00999999978); + r0.y = -r0.y * r0.z; + r0.y = 1.44269502 * r0.y; + r3.xzw = exp2(r0.yyy); + r0.y = cmp(9.99999975e-05 >= r2.y); + r0.zw = r1.yz / r1.ww; + r0.zw = r0.zw * float2(0.5,0.5) + float2(0.5,0.5); + r0.zw = -r0.zw * cb1[0].xy + r5.zw; + r0.z = dot(r0.zw, r0.zw); + r1.xy = r4.xy / r4.zz; + r1.xy = r1.xy * float2(0.5,0.5) + float2(0.5,0.5); + r1.xy = -r1.xy * cb1[0].xy + r5.zw; + r0.w = dot(r1.xy, r1.xy); + r0.z = r0.z + r0.w; + r0.z = sqrt(r0.z); + r0.z = 0.5 * r0.z; + r0.z = log2(r0.z); + r0.z = max(0, r0.z); + r0.z = min(cb1[5].y, r0.z); + r0.z = r0.z / cb1[5].y; + r3.y = r0.y ? 0 : r0.z; + + // Write blend weights to u1 + // r3.x, r3.z = temporal confidence (how much history to blend in) + // r3.y = mip/blur level (controls spatial denoiser blur radius) + // r3.w = same as r3.x + // + // Vanilla: unchanged + // Improved: keep temporal confidence for anti-firefly, disable spatial blur + // on smooth surfaces but retain it for rough ones (wood, stone) + + if (shader_injection.improved_ssr >= 0.5f) { + float mip_threshold = 0.25f; + float adjusted_mip = saturate((r3.y - mip_threshold) / (1.0f - mip_threshold)); + u1[vThreadID.xy] = float4(r3.x, adjusted_mip, r3.z, r3.x); + } else { + u1[vThreadID.xy] = r3.xyzw; + } + + // Metallic IBL intensity control + float ssr_blend = r0.x; + if (shader_injection.metallic_ibl_intensity == 1.f) { + ssr_blend = max(ssr_blend, 0.75); + } + u2[vThreadID.xy] = ssr_blend.xxxx; + return; +} \ No newline at end of file diff --git a/src/games/endfield/ssr/0xE92EE541.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl similarity index 95% rename from src/games/endfield/ssr/0xE92EE541.cs_5_0.hlsl rename to src/games/endfield/ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl index 92c81bd918..4bc2bc01da 100644 --- a/src/games/endfield/ssr/0xE92EE541.cs_5_0.hlsl +++ b/src/games/endfield/ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl @@ -1,4 +1,4 @@ -// ---- Created with 3Dmigoto v1.4.1 on Tue Feb 3 19:30:39 2026 + #include "../shared.h" RWTexture2D u0 : register(u0); @@ -191,7 +191,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r4.y = min(1, r4.y); r4.y = cb1[3].x * r4.y; r4.y = ceil(r4.y); - r4.y = max(32, r4.y); + r4.y = max((shader_injection.improved_ssr >= 0.5f) ? 256 : 32, r4.y); r2.w = cmp(r2.w >= 0.300000012); r5.w = 0.125 * r4.y; r2.w = r2.w ? r5.w : r4.y; @@ -446,20 +446,29 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.z = min(cb1[5].y, r0.z); r0.z = r0.z / cb1[5].y; r3.y = r0.y ? 0 : r0.z; - + // Write blend weights to u1 - u1[vThreadID.xy] = r3.xyzw; + // r3.x, r3.z = temporal confidence (how much history to blend in) + // r3.y = mip/blur level (controls spatial denoiser blur radius) + // r3.w = same as r3.x + // + // Vanilla: unchanged + // Improved: keep temporal confidence for anti-firefly, disable spatial blur + // on smooth surfaces but retain it for rough ones (wood, stone) + + if (shader_injection.improved_ssr >= 0.5f) { + float mip_threshold = 0.25f; + float adjusted_mip = saturate((r3.y - mip_threshold) / (1.0f - mip_threshold)); + u1[vThreadID.xy] = float4(r3.x, adjusted_mip, r3.z, r3.x); + } else { + u1[vThreadID.xy] = r3.xyzw; + } // Metallic IBL intensity control - // r0.x is the vanilla SSR blend factor (0 = full IBL, 1 = full SSR/no IBL) - // To reduce IBL intensity, we increase this value float ssr_blend = r0.x; - if (shader_injection.metallic_ibl_intensity == 1.f) { - // set minimum blend of 0.75 ssr_blend = max(ssr_blend, 0.75); } - // else: metallic_ibl_intensity == 0.f = Vanilla (no change) u2[vThreadID.xy] = ssr_blend.xxxx; } \ No newline at end of file diff --git a/src/games/endfield/ssr/ssr-upsample_0xE714AB7B.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-upsample_0xE714AB7B.cs_5_0.hlsl new file mode 100644 index 0000000000..90b99d05d7 --- /dev/null +++ b/src/games/endfield/ssr/ssr-upsample_0xE714AB7B.cs_5_0.hlsl @@ -0,0 +1,76 @@ + +#include "../shared.h" + +Texture2D t2 : register(t2); +Texture2D t1 : register(t1); +Texture2D t0 : register(t0); + +SamplerState s1_s : register(s1); +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[6]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[83]; +} + +RWTexture2D u0 : register(u0); + +#define cmp - + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) +{ + float4 r0, r1; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xy = (uint2)vThreadID.xy; + r0.xy = float2(0.5, 0.5) + r0.xy; + r0.xy = cb0[82].zw * r0.xy; + + // Sample sharp temporal color and apply inverse Reinhard + r1.xyz = t1.SampleLevel(s1_s, r0.xy, 0).xyz; + r0.z = max(r1.x, r1.y); + r0.z = max(r0.z, r1.z); + r0.z = 1 + -r0.z; + r0.z = 1 / r0.z; + r1.xyzw = r1.xyzx * r0.zzzz; + + // Read mip from filter weight texture + r0.z = t0.SampleLevel(s0_s, r0.xy, 0).y; + r0.z = cb1[5].y * r0.z; + + if (shader_injection.improved_ssr >= 0.5f) { + // Improved mode: fractional mip blending (ported from Miru's Vulkan mod) + if (r0.z < 0.25) { + // Low mip — use sharp temporal color directly + r0.xyzw = r1.xyzw; + } else { + // Blend between sharp and blurred based on fractional mip + float mip0 = floor(r0.z); + float fraction = saturate(r0.z - mip0); + float4 color_blurred = t2.SampleLevel(s1_s, r0.xy, 0).xyzx; + + if (mip0 == 0.0) { + // Fractional blend between sharp and blurred + r0.xyzw = lerp(r1.xyzw, color_blurred, fraction); + } else { + // High mip — use blurred resolve entirely + r0.xyzw = color_blurred; + } + } + } else { + // Vanilla mode: hard cutoff at mip 0.25 + r0.xyw = t2.SampleLevel(s1_s, r0.xy, 0).xyz; + r0.z = cmp(r0.z < 0.25); + r0.xyzw = r0.zzzz ? r1.xyzw : r0.xywx; + } + + u0[vThreadID.xy] = r0.xyzw; + return; +} diff --git a/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl b/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl index c8e819337b..3ab5ea531c 100644 --- a/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl +++ b/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl @@ -1,5 +1,3 @@ -// Latency bar icon vertex shader - selective hiding based on vertex positions -// Original shader: 0x9BDC181F #include "../shared.h" @@ -34,21 +32,33 @@ cbuffer cb0 : register(b0) } // Latency bar icon vertex positions (12 vertices = 3 bars) -// These are the same coordinates from Vulkan implementation -static const float2 latency_bar_verts[12] = { - float2(-1167.0001220703, -653.4990234375), - float2(-1167.0001220703, -644.4990234375), - float2(-1162.0001220703, -644.4990234375), - float2(-1162.0001220703, -653.4990234375), - float2(-1160.5, -653.4990234375), - float2(-1160.5, -640.4990234375), - float2(-1155.5, -640.4990234375), - float2(-1155.5, -653.4990234375), - float2(-1154.0, -653.4990234375), - float2(-1154.0, -636.4990234375), - float2(-1149.0, -636.4990234375), - float2(-1149.0, -653.4990234375) -}; +// Y coordinates are computed dynamically based on aspect ratio +// Formula: Y = offset - 1200.0 * (height/width) +// This ensures correct detection on both 16:9 and 21:9 (ultrawide) displays +float2 GetLatencyBarVert(int index) +{ + float aspect = UI_ASPECT_RATIO; + float base_y = 21.5 - 1200.0 * aspect; + + // X positions and Y offsets for each vertex + // Vertices form 3 bars: short (9px), medium (13px), tall (17px) + switch (index) + { + case 0: return float2(-1167.0, base_y); // bar1 bottom-left + case 1: return float2(-1167.0, 30.5 - 1200.0 * aspect); // bar1 top-left + case 2: return float2(-1162.0, 30.5 - 1200.0 * aspect); // bar1 top-right + case 3: return float2(-1162.0, base_y); // bar1 bottom-right + case 4: return float2(-1160.5, base_y); // bar2 bottom-left + case 5: return float2(-1160.5, 34.5 - 1200.0 * aspect); // bar2 top-left + case 6: return float2(-1155.5, 34.5 - 1200.0 * aspect); // bar2 top-right + case 7: return float2(-1155.5, base_y); // bar2 bottom-right + case 8: return float2(-1154.0, base_y); // bar3 bottom-left + case 9: return float2(-1154.0, 38.5 - 1200.0 * aspect); // bar3 top-left + case 10: return float2(-1149.0, 38.5 - 1200.0 * aspect); // bar3 top-right + case 11: return float2(-1149.0, base_y); // bar3 bottom-right + default: return float2(0, 0); + } +} // Check if this vertex is part of the latency bar icon bool IsLatencyBarVertex(float2 pos) @@ -56,8 +66,8 @@ bool IsLatencyBarVertex(float2 pos) [unroll] for (int i = 0; i < 12; i++) { - float2 diff = abs(latency_bar_verts[i] - pos); - if (dot(diff, diff) < 0.001) + float2 diff = abs(GetLatencyBarVert(i) - pos); + if (dot(diff, diff) < 1.0) { return true; } diff --git a/src/games/endfield/ui/ui14_0xB084133A.ps_5_0.hlsl b/src/games/endfield/ui/ui14_0xB084133A.ps_5_0.hlsl new file mode 100644 index 0000000000..695d43f442 --- /dev/null +++ b/src/games/endfield/ui/ui14_0xB084133A.ps_5_0.hlsl @@ -0,0 +1,95 @@ +// ---- Created with 3Dmigoto v1.4.1 on Sun Feb 8 01:22:43 2026 +#include "../shared.h" + +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[4]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[1]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float2 v1 : TEXCOORD0, + out float4 o0 : SV_Target0) +{ + float4 r0,r1; + uint4 bitmask, uiDest; + float4 fDest; + + r0.x = cb0[0].x * 40; + r0.x = floor(r0.x); + r0.x = 25 * r0.x; + r0.y = 8 * v1.y; + r0.y = floor(r0.y); + r0.x = r0.y * 0.125 + r0.x; + r0.x = dot(r0.xx, float2(12.9898005,78.2330017)); + r0.x = sin(r0.x); + r0.x = 43758.5469 * r0.x; + r0.x = frac(r0.x); + r0.x = 24 * r0.x; + r0.y = cb0[0].x * r0.x; + r0.y = 10 * r0.y; + r0.y = floor(r0.y); + r0.x = r0.y / r0.x; + r0.x = r0.x * 6 + v1.y; + r0.y = cb1[2].x * 8; + r0.z = r0.x * r0.y; + r0.x = 7 * r0.x; + r0.xz = floor(r0.xz); + r0.x = 0.142857149 * r0.x; + r0.x = dot(r0.xx, float2(12.9898005,78.2330017)); + r0.x = sin(r0.x); + r0.y = r0.z / r0.y; + r0.y = dot(r0.yy, float2(12.9898005,78.2330017)); + r0.y = sin(r0.y); + r0.xy = float2(43758.5469,43758.5469) * r0.xy; + r0.xy = frac(r0.xy); + r0.x = r0.y + r0.x; + r0.x = -1 + r0.x; + r0.y = cmp(0 < r0.x); + r0.z = cmp(r0.x < 0); + r0.x = -cb1[2].y + abs(r0.x); + r0.x = saturate(2.5 * r0.x); + r0.y = (int)-r0.y + (int)r0.z; + r0.y = (int)r0.y; + r0.x = r0.y * r0.x; + r0.x = cb1[2].z * r0.x; + r0.y = ceil(r0.x); + r1.x = 0.100000001 * r0.x; + r0.x = 1 + -r0.y; + r1.yw = float2(0,0); + r0.yz = saturate(v1.xy + r1.xy); + r1.x = v1.y; + r1.y = cb0[0].x; + r0.w = dot(r1.xy, float2(12.9898005,78.2330017)); + r0.w = sin(r0.w); + r0.w = 43758.5469 * r0.w; + r0.w = frac(r0.w); + r0.w = r0.w * 2 + -1; + r1.x = cmp(abs(r0.w) >= cb1[2].w); + r1.x = r1.x ? 1.000000 : 0; + r1.x = cb1[3].x * r1.x; + r1.z = r1.x * r0.w; + r0.yz = r0.yz + r1.zw; + r0.yz = frac(r0.yz); + r1.xy = v1.xy + -r0.yz; + r0.xy = r0.xx * r1.xy + r0.yz; + o0.xyzw = t0.Sample(s0_s, r0.xy).xyzw; + if (UI_VISIBILITY < 0.5f) o0 = 0; + return; +} \ No newline at end of file diff --git a/src/games/endfield/ui/ui15_0x25054A9A.ps_5_0.hlsl b/src/games/endfield/ui/ui15_0x25054A9A.ps_5_0.hlsl new file mode 100644 index 0000000000..0dcc02d512 --- /dev/null +++ b/src/games/endfield/ui/ui15_0x25054A9A.ps_5_0.hlsl @@ -0,0 +1,97 @@ +// ---- Created with 3Dmigoto v1.4.1 on Sun Feb 8 01:22:43 2026 +#include "../shared.h" + +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s3_s : register(s3); + +SamplerState s2_s : register(s2); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[31]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[1]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float4 v1 : TEXCOORD0, + float2 v2 : TEXCOORD1, + float2 w2 : TEXCOORD7, + float4 v3 : TEXCOORD2, + float4 v4 : TEXCOORD3, + float4 v5 : TEXCOORD4, + float4 v6 : TEXCOORD5, + float4 v7 : TEXCOORD6, + out float4 o0 : SV_Target0) +{ + float4 r0,r1,r2,r3; + uint4 bitmask, uiDest; + float4 fDest; + + r0.x = t2.Sample(s2_s, v2.xy).w; + r0.y = -v3.x + r0.x; + r0.y = cmp(r0.y < 0); + if (r0.y != 0) discard; + r0.x = v3.z + -r0.x; + r0.y = cb1[22].w * cb1[6].x; + r0.z = cb1[22].w * cb1[4].y; + r0.yw = v3.yy * r0.yz; + r1.xyz = cb1[3].xyz * v1.xyz; + r2.xy = cb1[2].xy * cb0[0].yy + v6.xy; + r2.xyzw = t0.Sample(s0_s, r2.xy).xyzw; + r1.xyz = r2.xyz * r1.xyz; + r2.w = cb1[3].w * r2.w; + r3.xy = cb1[4].zw * cb0[0].yy + v6.zw; + r3.xyzw = t1.Sample(s1_s, r3.xy).xyzw; + r3.xyzw = cb1[5].xyzw * r3.xyzw; + r1.w = 0.5 * r0.y; + r2.xyz = r2.www * r1.xyz; + r3.xyz = r3.xyz * r3.www; + r1.x = saturate(r0.x * v3.y + r1.w); + r0.y = min(1, r0.y); + r0.y = sqrt(r0.y); + r0.y = r1.x * r0.y; + r3.xyzw = r3.xyzw + -r2.xyzw; + r2.xyzw = r0.yyyy * r3.xyzw + r2.xyzw; + r0.x = r0.x * v3.y + -r1.w; + r0.x = r0.w * 0.5 + r0.x; + r0.y = r0.z * v3.y + 1; + r0.x = saturate(r0.x / r0.y); + r0.x = 1 + -r0.x; + r0.xyzw = r2.xyzw * r0.xxxx; + r1.xy = w2.xy * cb1[30].xy + cb1[30].zw; + r1.x = t3.Sample(s3_s, r1.xy).w; + r1.yz = cmp(float2(1,1) >= w2.xy); + r1.yz = r1.yz ? float2(1,1) : 0; + r2.xy = cmp(float2(0,0) >= -w2.xy); + r2.xy = r2.xy ? float2(1,1) : 0; + r1.yz = r2.xy * r1.yz; + r1.x = r1.x * r1.y; + r1.x = saturate(r1.x * r1.z); + r1.x = v1.w * r1.x; + o0.xyzw = r1.xxxx * r0.xyzw; + if (UI_VISIBILITY < 0.5f) o0 = 0; + return; +} \ No newline at end of file diff --git a/src/games/endfield/waterfalls/0xF5AB0A61.cso b/src/games/endfield/waterfalls/0xF5AB0A61.cso new file mode 100644 index 0000000000000000000000000000000000000000..c76cbb5e467799c778daff652b3c253f8e7aba91 GIT binary patch literal 59728 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 Date: Sun, 15 Feb 2026 11:56:41 -0700 Subject: [PATCH 16/40] feat(endfield): switch to mcleod boynton hue, remove hue sliders --- src/games/endfield/addon.cpp | 6 +- src/games/endfield/common.hlsl | 314 ++++++++++++++++++ .../others/lutbuilder_0x88BD6DCA.ps_5_0.hlsl | 41 ++- src/games/endfield/shared.h | 1 + .../uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x039C28DA.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x086097D2.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x09270FDA.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x0E520F06.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x10076711.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x21241B7A.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x51359B4D.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x53875523.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x57737D9F.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x6166487A.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x61908D50.ps_5_0.hlsl | 32 +- .../uberpost/uberpost_0x64CEB255.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x6A76C719.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x86420EBC.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x9790A50C.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0xA6501734.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0xA8213A68.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0xBCD91195.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0xE0058043.ps_5_0.hlsl | 33 +- .../uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl | 33 +- 32 files changed, 430 insertions(+), 855 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index c3e94edf83..88a4453f62 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -435,12 +435,12 @@ renodx::utils::settings::Settings settings = { .max = 100.f, .is_enabled = []() { return shader_injection.tone_map_type >= 1; }, .parse = [](float value) { return value * 0.01f; }, - .is_visible = []() { return current_settings_mode >= 1; }, + .is_visible = []() { return false; }, }, new renodx::utils::settings::Setting{ .key = "ToneMapPerChannelBlowout", .binding = &shader_injection.tone_map_blowout, - .default_value = 50.f, + .default_value = 25.f, .label = "Per Channel Blowout", .section = "Tone Mapping", .tooltip = "Per Channel Blowout strength.", @@ -448,7 +448,7 @@ renodx::utils::settings::Settings settings = { .max = 100.f, .is_enabled = []() { return shader_injection.tone_map_type >= 1; }, .parse = [](float value) { return value * 0.01f; }, - .is_visible = []() { return current_settings_mode >= 1; }, + .is_visible = []() { return false; }, }, new renodx::utils::settings::Setting{ .key = "ToneMapClampColorSpace", diff --git a/src/games/endfield/common.hlsl b/src/games/endfield/common.hlsl index 9cfcbb2fe9..29b0da174b 100644 --- a/src/games/endfield/common.hlsl +++ b/src/games/endfield/common.hlsl @@ -1,4 +1,5 @@ #include "./shared.h" +#include "../../shaders/color/macleod_boynton.hlsl" static inline float3 AutoHDRVideo(float3 sdr_video) { if (RENODX_TONE_MAP_TYPE == 0.f || RENODX_TONE_MAP_HDR_VIDEO == 0.f) { @@ -47,6 +48,209 @@ float3 HueAndChrominanceOKLab( return incorrect_color; } +float3 CorrectHueAndPurityMBGated( + float3 target_color_bt709, + float3 reference_color_bt709, + float hue_strength = 1.f, + float hue_t_ramp_start = 0.5f, + float hue_t_ramp_end = 1.f, + float purity_strength = 1.f, + float curve_gamma = 1.f, + float2 mb_white_override = float2(-1.f, -1.f), + float t_min = 1e-6f) { + if (purity_strength <= 0.f && hue_strength <= 0.f) { + return target_color_bt709; + } + + float3 target_color_bt2020 = renodx::color::bt2020::from::BT709(target_color_bt709); + float3 reference_color_bt2020 = renodx::color::bt2020::from::BT709(reference_color_bt709); + + if (hue_strength <= 0.f) { + float target_purity01 = renodx::color::macleod_boynton::ApplyBT2020( + target_color_bt2020, 1.f, 1.f, mb_white_override, t_min) + .purityCur01; + float reference_purity01 = renodx::color::macleod_boynton::ApplyBT2020( + reference_color_bt2020, 1.f, 1.f, mb_white_override, t_min) + .purityCur01; + float applied_purity01 = lerp(target_purity01, reference_purity01, saturate(purity_strength)); + return renodx::color::bt709::from::BT2020( + renodx::color::macleod_boynton::ApplyBT2020( + target_color_bt2020, applied_purity01, curve_gamma, mb_white_override, t_min) + .rgbOut); + } + + float3 target_lms = mul(renodx::color::macleod_boynton::XYZ_TO_LMS_2006, + mul(renodx::color::BT2020_TO_XYZ_MAT, target_color_bt2020)); + float target_t = target_lms.x + target_lms.y; + if (target_t <= t_min) { + return target_color_bt709; + } + + float hue_blend = saturate(hue_strength) * + saturate(renodx::math::DivideSafe(target_t - hue_t_ramp_start, + hue_t_ramp_end - hue_t_ramp_start, 0.f)); + + float target_purity01 = renodx::color::macleod_boynton::ApplyBT2020( + target_color_bt2020, 1.f, 1.f, mb_white_override, t_min) + .purityCur01; + float reference_purity01 = renodx::color::macleod_boynton::ApplyBT2020( + reference_color_bt2020, 1.f, 1.f, mb_white_override, t_min) + .purityCur01; + float applied_purity01 = lerp(target_purity01, reference_purity01, saturate(purity_strength)); + + if (hue_blend <= 0.f) { + return renodx::color::bt709::from::BT2020( + renodx::color::macleod_boynton::ApplyBT2020( + target_color_bt2020, applied_purity01, curve_gamma, mb_white_override, t_min) + .rgbOut); + } + + float3 reference_lms = mul(renodx::color::macleod_boynton::XYZ_TO_LMS_2006, + mul(renodx::color::BT2020_TO_XYZ_MAT, reference_color_bt2020)); + + float2 white = (mb_white_override.x >= 0.f && mb_white_override.y >= 0.f) + ? mb_white_override + : renodx::color::macleod_boynton::MB_White_D65(); + + float2 target_direction = renodx::color::macleod_boynton::MB_From_LMS(target_lms) - white; + float2 reference_direction = renodx::color::macleod_boynton::MB_From_LMS(reference_lms) - white; + + float target_len_sq = dot(target_direction, target_direction); + float reference_len_sq = dot(reference_direction, reference_direction); + + if (target_len_sq < renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON && + reference_len_sq < renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON) { + return renodx::color::bt709::from::BT2020( + renodx::color::macleod_boynton::ApplyBT2020( + target_color_bt2020, applied_purity01, curve_gamma, mb_white_override, t_min) + .rgbOut); + } + + float2 target_unit = (target_len_sq > renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON) + ? target_direction * rsqrt(target_len_sq) + : float2(0.f, 0.f); + float2 reference_unit = (reference_len_sq > renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON) + ? reference_direction * rsqrt(reference_len_sq) + : target_unit; + if (target_len_sq <= renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON) { + target_unit = reference_unit; + } + + float2 blended_unit = lerp(target_unit, reference_unit, hue_blend); + float blended_len_sq = dot(blended_unit, blended_unit); + if (blended_len_sq <= renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON) { + blended_unit = (hue_blend >= 0.5f) ? reference_unit : target_unit; + blended_len_sq = dot(blended_unit, blended_unit); + } + blended_unit *= rsqrt(max(blended_len_sq, 1e-20f)); + + float seed_len = sqrt(max(target_len_sq, 0.f)); + if (seed_len <= 1e-6f) { + seed_len = sqrt(max(reference_len_sq, 0.f)); + } + seed_len = max(seed_len, 1e-6f); + + float3 seed_bt2020 = mul( + renodx::color::XYZ_TO_BT2020_MAT, + mul(renodx::color::macleod_boynton::LMS_TO_XYZ_2006, + renodx::color::macleod_boynton::LMS_From_MB_T(white + blended_unit * seed_len, target_t))); + + return renodx::color::bt709::from::BT2020( + renodx::color::macleod_boynton::ApplyBT2020( + seed_bt2020, applied_purity01, curve_gamma, mb_white_override, t_min) + .rgbOut); +} + +float3 ApplyMBLowHueThenHighHueAndPurity( + float3 target_bt709, + float3 low_hue_reference_bt709, + float3 high_reference_bt709, + float high_hue_strength = 1.f, + float hue_t_ramp_start = 0.5f, + float hue_t_ramp_end = 1.f, + float curve_gamma = 1.f, + float2 mb_white_override = float2(-1.f, -1.f), + float t_min = 1e-6f) { + const float kNearWhiteEpsilon = renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON; + + float3 target_bt2020 = renodx::color::bt2020::from::BT709(target_bt709); + float3 low_reference_bt2020 = renodx::color::bt2020::from::BT709(low_hue_reference_bt709); + float3 high_reference_bt2020 = renodx::color::bt2020::from::BT709(high_reference_bt709); + + float high_purity01 = renodx::color::macleod_boynton::ApplyBT2020( + high_reference_bt2020, 1.f, 1.f, mb_white_override, t_min) + .purityCur01; + + float3 target_lms = mul(renodx::color::macleod_boynton::XYZ_TO_LMS_2006, + mul(renodx::color::BT2020_TO_XYZ_MAT, target_bt2020)); + float3 low_reference_lms = mul(renodx::color::macleod_boynton::XYZ_TO_LMS_2006, + mul(renodx::color::BT2020_TO_XYZ_MAT, low_reference_bt2020)); + float3 high_reference_lms = mul(renodx::color::macleod_boynton::XYZ_TO_LMS_2006, + mul(renodx::color::BT2020_TO_XYZ_MAT, high_reference_bt2020)); + + float target_t = target_lms.x + target_lms.y; + if (target_t <= t_min) { + return target_bt709; + } + + float2 white = (mb_white_override.x >= 0.f && mb_white_override.y >= 0.f) + ? mb_white_override + : renodx::color::macleod_boynton::MB_White_D65(); + + float2 target_direction = renodx::color::macleod_boynton::MB_From_LMS(target_lms) - white; + float2 low_reference_direction = renodx::color::macleod_boynton::MB_From_LMS(low_reference_lms) - white; + float2 high_reference_direction = renodx::color::macleod_boynton::MB_From_LMS(high_reference_lms) - white; + + float target_len_sq = dot(target_direction, target_direction); + float low_len_sq = dot(low_reference_direction, low_reference_direction); + float high_len_sq = dot(high_reference_direction, high_reference_direction); + + float2 low_unit = float2(0.f, 0.f); + if (low_len_sq > kNearWhiteEpsilon) { + low_unit = low_reference_direction * rsqrt(low_len_sq); + } else if (target_len_sq > kNearWhiteEpsilon) { + low_unit = target_direction * rsqrt(target_len_sq); + } else if (high_len_sq > kNearWhiteEpsilon) { + low_unit = high_reference_direction * rsqrt(high_len_sq); + } + + float2 high_unit = (high_len_sq > kNearWhiteEpsilon) + ? high_reference_direction * rsqrt(high_len_sq) + : low_unit; + + float hue_blend = saturate(high_hue_strength) * + saturate(renodx::math::DivideSafe(target_t - hue_t_ramp_start, + hue_t_ramp_end - hue_t_ramp_start, 0.f)); + + float2 hue_unit = lerp(low_unit, high_unit, hue_blend); + + float hue_len_sq = dot(hue_unit, hue_unit); + if (hue_len_sq <= kNearWhiteEpsilon) { + return renodx::color::bt709::from::BT2020( + renodx::color::macleod_boynton::ApplyBT2020( + target_bt2020, high_purity01, curve_gamma, mb_white_override, t_min) + .rgbOut); + } + + hue_unit *= rsqrt(hue_len_sq); + + float seed_len = sqrt(max(target_len_sq, 0.f)); + if (seed_len <= 1e-6f) { + seed_len = sqrt(max(lerp(low_len_sq, high_len_sq, hue_blend), 0.f)); + } + seed_len = max(seed_len, 1e-6f); + + float3 seed_bt2020 = mul( + renodx::color::XYZ_TO_BT2020_MAT, + mul(renodx::color::macleod_boynton::LMS_TO_XYZ_2006, + renodx::color::macleod_boynton::LMS_From_MB_T(white + hue_unit * seed_len, target_t))); + + return renodx::color::bt709::from::BT2020( + renodx::color::macleod_boynton::ApplyBT2020( + seed_bt2020, high_purity01, curve_gamma, mb_white_override, t_min) + .rgbOut); +} + float3 ApplyHermiteSplineByMaxChannel(float3 input, float peak_ratio, float white_clip = 100.f) { float max_channel = renodx::math::Max(input); @@ -152,6 +356,45 @@ float3 ApplyExposureContrastFlareHighlightsShadowsByLuminance(float3 untonemappe float3 ApplySaturationBlowoutHueCorrectionHighlightSaturation(float3 tonemapped, float3 hue_reference_color, float y, UserGradingConfig config) { float3 color = tonemapped; if (config.saturation != 1.f || config.dechroma != 0.f || config.hue_emulation_strength != 0.f || config.chrominance_emulation_strength != 0.f || config.highlight_saturation != 0.f) { + if (config.hue_emulation_strength != 0.0 || config.chrominance_emulation_strength != 0.0) { + color = CorrectHueAndPurityMBGated( + color, + hue_reference_color, + config.hue_emulation_strength, + 0.5f, + 1.f, + config.chrominance_emulation_strength, + 1.f); + } + + float mb_scale = max(config.saturation, 0.f); + + if (config.dechroma != 0.f) { + float dechroma_scale = lerp(1.f, 0.f, saturate(pow(y / (10000.f / 100.f), (1.f - config.dechroma)))); + mb_scale *= max(dechroma_scale, 0.f); + } + + if (config.highlight_saturation != 0.f) { + float percent_max = saturate(y * 100.f / 10000.f); + float highlight_saturation_strength = 100.f; + float highlight_saturation_change = pow(1.f - percent_max, highlight_saturation_strength * abs(config.highlight_saturation)); + if (config.highlight_saturation < 0) { + highlight_saturation_change = (2.f - highlight_saturation_change); + } + mb_scale *= max(highlight_saturation_change, 0.f); + } + + if (abs(mb_scale - 1.f) > 1e-6f) { + float3 color_bt2020 = renodx::color::bt2020::from::BT709(color); + color = renodx::color::bt709::from::BT2020( + renodx::color::macleod_boynton::ApplyScaleBT2020(color_bt2020, mb_scale) + .rgbOut); + } + + color = renodx::color::bt709::clamp::AP1(color); + + /* Disabled OKLab path (kept for reference) + float3 perceptual_new = renodx::color::oklab::from::BT709(color); // hue and chrominance emulation @@ -201,6 +444,77 @@ float3 ApplySaturationBlowoutHueCorrectionHighlightSaturation(float3 tonemapped, color = renodx::color::bt709::from::OkLab(perceptual_new); color = renodx::color::bt709::clamp::AP1(color); + + */ } return color; +} + +struct LUTSampleResult { + float3 graded; + float y; + float3 graded_ap1; +}; + +LUTSampleResult LUTSAMPLE( + SamplerState lut_sampler, + float3 lut_size, + Texture2D lut_texture, + float3 sample_input) { + renodx::lut::Config lut_config = renodx::lut::config::Create( + lut_sampler, + shader_injection.color_grade_strength, + 0.f, + renodx::lut::config::type::ARRI_C1000_NO_CUT, + renodx::lut::config::type::LINEAR, + lut_size); + + LUTSampleResult result; + result.graded = renodx::lut::Sample(lut_texture, lut_config, sample_input); + result.y = renodx::color::y::from::BT709(result.graded); + result.graded_ap1 = renodx::color::ap1::from::BT709(result.graded); + return result; +} + +float3 SDRGRADE(LUTSampleResult lut_sample) { + float3 graded = lut_sample.graded; + float3 graded_ap1 = lut_sample.graded_ap1; + float y = lut_sample.y; + + float3 hue_chrominance_reference_color = + renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); + + UserGradingConfig cg_config; + cg_config.saturation = 1.f; + cg_config.dechroma = .1f; + cg_config.hue_emulation_strength = 1.f; + cg_config.chrominance_emulation_strength = .5f; + cg_config.highlight_saturation = 0.f; + + float3 output = ApplySaturationBlowoutHueCorrectionHighlightSaturation( + graded, hue_chrominance_reference_color, y, cg_config); + output = renodx::color::bt2020::from::BT709(output); + output = renodx::tonemap::neutwo::MaxChannel(output, 1.0f, 2.0f); + output = renodx::color::bt709::from::BT2020(output); + return output; +} + +float3 HDRGRADE(LUTSampleResult lut_sample) { + float3 graded = lut_sample.graded; + float3 graded_ap1 = lut_sample.graded_ap1; + float y = lut_sample.y; + + float3 hue_chrominance_reference_color = + renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); + + UserGradingConfig cg_config = CreateColorGradeConfig(); + float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); + + float3 output = ApplySaturationBlowoutHueCorrectionHighlightSaturation( + graded_bt709, hue_chrominance_reference_color, y, cg_config); + output = renodx::color::bt2020::from::BT709(output); + output = renodx::tonemap::neutwo::MaxChannel( + output, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); + output = renodx::color::bt709::from::BT2020(output); + return output; } \ No newline at end of file diff --git a/src/games/endfield/others/lutbuilder_0x88BD6DCA.ps_5_0.hlsl b/src/games/endfield/others/lutbuilder_0x88BD6DCA.ps_5_0.hlsl index a117bc6657..822cc07a0e 100644 --- a/src/games/endfield/others/lutbuilder_0x88BD6DCA.ps_5_0.hlsl +++ b/src/games/endfield/others/lutbuilder_0x88BD6DCA.ps_5_0.hlsl @@ -25,7 +25,20 @@ cbuffer cb0 : register(b0) { // 3Dmigoto declarations #define cmp - -#include "../shared.h" +#include "../common.hlsl" + +static float ACESLikeScalar(float value) { + static const float a = 278.5085; + static const float b = 10.7772; + static const float c = 293.6045; + static const float d = 88.7122; + static const float e = 80.6889; + const float divergence_point = 0.267010625; + + float tonemapped = (value * (a * value + b)) / (value * (c * value + d) + e); + float linear_extension = 0.9174704430474515 * value - 0.06355161968502177; + return (value < divergence_point) ? tonemapped : linear_extension; +} void main( float4 v0: SV_Position0, @@ -244,20 +257,22 @@ void main( r0.yzw = min(float3(1, 1, 1), r0.yzw); #else float3 untonemapped = r0.rgb; - static const float a = 278.5085; - static const float b = 10.7772; - static const float c = 293.6045; - static const float d = 88.7122; - static const float e = 80.6889; - - float3 tonemapped = (untonemapped * (a * untonemapped + b)) / (untonemapped * (c * untonemapped + d) + e); - - const float divergence_point = 0.267010625; - float3 linear_extension = 0.9174704430474515 * untonemapped - 0.06355161968502177; + float3 per_channel_tonemapped = float3( + ACESLikeScalar(untonemapped.x), + ACESLikeScalar(untonemapped.y), + ACESLikeScalar(untonemapped.z)); - tonemapped = renodx::math::Select(untonemapped < divergence_point, tonemapped, linear_extension); + float luminance_in = renodx::color::y::from::BT709(untonemapped); + float luminance_tonemapped = ACESLikeScalar(luminance_in); + float3 luminance_tonemapped_color = renodx::color::correct::Luminance( + untonemapped, + luminance_in, + luminance_tonemapped); - r0.yzw = tonemapped; + r0.yzw = ApplyMBLowHueThenHighHueAndPurity( + luminance_tonemapped_color, + untonemapped, + per_channel_tonemapped); #endif r0.x = dot(r0.xyz, float3(0.272228986, 0.674081981, 0.0536894985)); diff --git a/src/games/endfield/shared.h b/src/games/endfield/shared.h index ef22ab020c..36909d963c 100644 --- a/src/games/endfield/shared.h +++ b/src/games/endfield/shared.h @@ -16,6 +16,7 @@ // #define RENODX_TONE_MAP_FLARE 0 // #define RENODX_TONE_MAP_HUE_CORRECTION 1.f // #define RENODX_TONE_MAP_HUE_SHIFT 0 +// #define RENODX_TONE_MAP_HUE_METHOD 0 // #define RENODX_TONE_MAP_WORKING_COLOR_SPACE color::convert::COLOR_SPACE_BT709 // #define RENODX_TONE_MAP_CLAMP_COLOR_SPACE color::convert::COLOR_SPACE_NONE // #define RENODX_TONE_MAP_CLAMP_PEAK color::convert::COLOR_SPACE_BT709 diff --git a/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl index 76fba7310c..d0c7d6c36e 100644 --- a/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl @@ -194,39 +194,12 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); } */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t1, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl index 30d139f79a..89b0f8564d 100644 --- a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl @@ -222,39 +222,12 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(renodx::draw::ToneMapPass(r0.yzx, graded)); } */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t1, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( diff --git a/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl index 7cc9546d25..7dc60fa2c8 100644 --- a/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl @@ -161,39 +161,12 @@ void main( r0.xyz = r0.xxx * r0.yzw + cb1[4].zxy; r0.xyz = r1.xyz * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl index 743eabf6b4..8fa22ac10c 100644 --- a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl @@ -232,39 +232,12 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); } */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( diff --git a/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl index 48dd70fd0b..1be39770f5 100644 --- a/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl @@ -176,39 +176,12 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); } */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( diff --git a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl index 770a60c0ed..85d0d32ecb 100644 --- a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl @@ -266,39 +266,12 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); } */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl index ddf8e6571f..eb0d3c27fd 100644 --- a/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl @@ -173,39 +173,12 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); } */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl index 6e1aa5df1e..ceca60d82a 100644 --- a/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl @@ -203,39 +203,12 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); } */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl index 46ed1b3db9..f57b0f6203 100644 --- a/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl @@ -178,39 +178,12 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); } */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl index fe612e4990..230b1effa2 100644 --- a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl @@ -287,39 +287,12 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); } */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl index 54afc1b0f7..2e1cec72e6 100644 --- a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl @@ -164,39 +164,12 @@ void main( o0.w = min(1, r1.w); return; */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( diff --git a/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl index 69596eab87..69c7978373 100644 --- a/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl @@ -219,39 +219,12 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); } */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl index 46eeac4a2e..a6ee0dea95 100644 --- a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl @@ -240,39 +240,12 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); } */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl index b06e852846..a858153e68 100644 --- a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl @@ -149,38 +149,12 @@ void main( r1.xyz = -cb1[4].zxy + float3(1, 1, 1); r1.xyz = r0.www * r1.xyz + cb1[4].zxy; r0.xyz = r1.xyz * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl index 1caed954e8..8e7a2e2802 100644 --- a/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl @@ -188,39 +188,12 @@ void main( r0.xyz = r1.xyz * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl index ae8b8d2472..ffae9697ef 100644 --- a/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl @@ -123,39 +123,12 @@ void main( r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( diff --git a/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl index 8deb6a674d..52b5ec498b 100644 --- a/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl @@ -125,39 +125,12 @@ void main( r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( diff --git a/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl index 3aefbecaac..88d057ed81 100644 --- a/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl @@ -145,39 +145,12 @@ void main( r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; */ - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl index 897dd371db..837919d477 100644 --- a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl @@ -233,39 +233,12 @@ void main( r1.xyz = r0.www * r1.xyz + cb1[4].zxy; r0.xyz = r1.xyz * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl index 61ed70f1a6..9466396cd5 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl @@ -78,39 +78,12 @@ void main( r0.xyz = r1.xyz * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t1, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl index b6bfa9ca5d..25065786da 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl @@ -200,39 +200,12 @@ void main( r1.xyz = r0.www * r1.xyz + float3(1,1,1); r0.xyz = r1.xyz * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( diff --git a/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl index 6ebba85a66..84648ab85c 100644 --- a/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl @@ -138,39 +138,12 @@ void main( r1.xyz = r0.www * r1.xyz + float3(1,1,1); r0.xyz = r1.xyz * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( diff --git a/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl index a1e1682af9..32d9a52e58 100644 --- a/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl @@ -154,39 +154,12 @@ void main( r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( diff --git a/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl index ed87501a65..112c55a1b5 100644 --- a/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl @@ -203,39 +203,12 @@ void main( r1.xyz = r0.www * r1.xyz + cb1[4].zxy; r0.xyz = r1.xyz * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl index 206cbea6e2..7e666c2441 100644 --- a/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl @@ -62,39 +62,12 @@ void main( o0.w = min(1, r1.w); r0.xyz = cb1[9].xxx * r0.xyz + r2.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( diff --git a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl index 3844e7feda..b096ccbd64 100644 --- a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl @@ -158,39 +158,12 @@ void main( r0.xyz = r0.xyz * r2.www; r0.xyz = cb0[109].xxx * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( diff --git a/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl index 806262a93f..36a68644f4 100644 --- a/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl @@ -97,39 +97,12 @@ void main( r0.xyz = r1.xyz * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } // Apply vignette after tonemapping o0.xyz *= vignette_value; diff --git a/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl index 82cca59361..49f3a645e8 100644 --- a/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl @@ -95,39 +95,12 @@ void main( r0.xyz = r1.xxx * r0.xyz; r0.xyz = cb0[109].xxx * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR, - cb1[7].xyz - ); - float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); - - float y = renodx::color::y::from::BT709(graded); - float3 graded_ap1 = renodx::color::ap1::from::BT709(graded); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .7f; - cg_config.highlight_saturation = 0.f; - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, 1.0f, 2.0f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = SDRGRADE(lut_sample); } else { - float3 hue_chrominance_reference_color = renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); - UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); - o0.xyz = ApplySaturationBlowoutHueCorrectionHighlightSaturation(graded_bt709, hue_chrominance_reference_color, y, cg_config); - o0.xyz = renodx::color::bt2020::from::BT709(o0.xyz); - o0.xyz = renodx::tonemap::neutwo::MaxChannel(o0.xyz, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); - o0.xyz = renodx::color::bt709::from::BT2020(o0.xyz); + o0.xyz = HDRGRADE(lut_sample); } if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( o0.xyz, From b12371efc3d8708e21cfa55c6c9686090e794a84 Mon Sep 17 00:00:00 2001 From: SGTForgery Date: Wed, 18 Feb 2026 17:33:47 +0000 Subject: [PATCH 17/40] feat(endfield): Added AO distance scaling, Removed legacy code + cbuffers to fix FSR4 incompat issues, Added separate slider to control fake in-game cloud shadows --- src/games/endfield/addon.cpp | 219 ++---------------- .../ao/gtao-main_0xE1A460D9.cs_5_0.hlsl | 21 +- .../endfield/deferred-lighting/0x0E84DFD1.cso | Bin 60272 -> 60516 bytes .../deferred-lighting/0x0E84DFD1.ps_5_0.asm | 19 +- .../endfield/deferred-lighting/0x1E8A471E.cso | Bin 47540 -> 47552 bytes .../deferred-lighting/0x1E8A471E.ps_5_0.asm | 19 +- .../endfield/deferred-lighting/0x37837806.cso | Bin 27044 -> 27168 bytes .../deferred-lighting/0x37837806.ps_5_0.asm | 12 +- .../endfield/deferred-lighting/0x518D3855.cso | Bin 51840 -> 51964 bytes .../deferred-lighting/0x518D3855.ps_5_0.asm | 12 +- .../endfield/deferred-lighting/0x620A40FD.cso | Bin 28060 -> 28184 bytes .../deferred-lighting/0x620A40FD.ps_5_0.asm | 12 +- .../endfield/deferred-lighting/0x7010AF4B.cso | Bin 27420 -> 27664 bytes .../deferred-lighting/0x7010AF4B.ps_5_0.asm | 19 +- .../endfield/deferred-lighting/0x8BA3C806.cso | Bin 48308 -> 48552 bytes .../deferred-lighting/0x8BA3C806.ps_5_0.asm | 19 +- .../endfield/deferred-lighting/0x99725481.cso | Bin 60792 -> 61036 bytes .../deferred-lighting/0x99725481.ps_5_0.asm | 19 +- .../endfield/deferred-lighting/0xA4113DE8.cso | Bin 39372 -> 39372 bytes .../deferred-lighting/0xA4113DE8.ps_5_0.asm | 10 +- .../endfield/deferred-lighting/0xB094C87E.cso | Bin 51308 -> 51432 bytes .../deferred-lighting/0xB094C87E.ps_5_0.asm | 12 +- .../endfield/deferred-lighting/0xBD99F0C4.cso | Bin 30220 -> 30220 bytes .../deferred-lighting/0xBD99F0C4.ps_5_0.asm | 6 +- .../endfield/deferred-lighting/0xD3FA93FC.cso | Bin 48664 -> 48788 bytes .../deferred-lighting/0xD3FA93FC.ps_5_0.asm | 12 +- .../endfield/deferred-lighting/0xD5B102A4.cso | Bin 38860 -> 39104 bytes .../deferred-lighting/0xD5B102A4.ps_5_0.asm | 19 +- .../endfield/deferred-lighting/0xD88CD7C9.cso | Bin 26420 -> 26664 bytes .../deferred-lighting/0xD88CD7C9.ps_5_0.asm | 19 +- .../endfield/deferred-lighting/0xE322C21D.cso | Bin 49684 -> 49808 bytes .../deferred-lighting/0xE322C21D.ps_5_0.asm | 12 +- .../endfield/deferred-lighting/0xF901F0EC.cso | Bin 29692 -> 29816 bytes .../deferred-lighting/0xF901F0EC.ps_5_0.asm | 12 +- .../deferred-lighting/Notes for future.txt | 79 ++++++- src/games/endfield/glass/0x183ADBF7.cso | Bin 56220 -> 56220 bytes .../endfield/glass/0x183ADBF7.ps_5_0.asm | 10 +- src/games/endfield/glass/0x41AF9F2B.cso | Bin 55588 -> 55588 bytes .../endfield/glass/0x41AF9F2B.ps_5_0.asm | 10 +- src/games/endfield/glass/0x424F9536.cso | Bin 56364 -> 56364 bytes .../endfield/glass/0x424F9536.ps_5_0.asm | 10 +- src/games/endfield/glass/0x69B6459F.cso | Bin 55740 -> 55740 bytes .../endfield/glass/0x69B6459F.ps_5_0.asm | 10 +- src/games/endfield/glass/0x754218B1.cso | Bin 55856 -> 55856 bytes .../endfield/glass/0x754218B1.ps_5_0.asm | 10 +- src/games/endfield/glass/0x843686F6.cso | Bin 57100 -> 57100 bytes .../endfield/glass/0x843686F6.ps_5_0.asm | 10 +- src/games/endfield/glass/0x859412D4.cso | Bin 56676 -> 56676 bytes .../endfield/glass/0x859412D4.ps_5_0.asm | 10 +- src/games/endfield/glass/0xB317E9E1.cso | Bin 53640 -> 53640 bytes .../endfield/glass/0xB317E9E1.ps_5_0.asm | 10 +- src/games/endfield/glass/0xB8941FB1.cso | Bin 55376 -> 55376 bytes .../endfield/glass/0xB8941FB1.ps_5_0.asm | 10 +- src/games/endfield/glass/0xD2EC68A2.cso | Bin 55952 -> 55952 bytes .../endfield/glass/0xD2EC68A2.ps_5_0.asm | 10 +- src/games/endfield/glass/0xF831814B.cso | Bin 53924 -> 53924 bytes .../endfield/glass/0xF831814B.ps_5_0.asm | 10 +- .../endfield/shadows/0xE9345161.ps_5_0.hlsl | 26 +++ ...aracter-capsule-ao_0xD91A8DD3.ps_5_0.hlsl} | 0 ... character-shadows_0xB8580FF6.ps_5_0.hlsl} | 68 +++--- ...creenspace-shadows_0x0C02AB31.cs_5_0.hlsl} | 8 +- ...positing-shadowmap_0x61FA72DD.ps_5_0.hlsl} | 74 +++--- src/games/endfield/shared.h | 48 ++-- .../ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl | 7 +- .../ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl | 8 +- 65 files changed, 439 insertions(+), 462 deletions(-) create mode 100644 src/games/endfield/shadows/0xE9345161.ps_5_0.hlsl rename src/games/endfield/shadows/{0xD91A8DD3.ps_5_0.hlsl => character-capsule-ao_0xD91A8DD3.ps_5_0.hlsl} (100%) rename src/games/endfield/shadows/{0xB8580FF6.ps_5_0.hlsl => character-shadows_0xB8580FF6.ps_5_0.hlsl} (91%) rename src/games/endfield/shadows/{grass-shadowing_0x0C02AB31.cs_5_0.hlsl => screenspace-shadows_0x0C02AB31.cs_5_0.hlsl} (98%) rename src/games/endfield/shadows/{cloud-shadows_0x61FA72DD.ps_5_0.hlsl => shadowcompositing-shadowmap_0x61FA72DD.ps_5_0.hlsl} (89%) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 88a4453f62..cee0685c8c 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -435,7 +435,7 @@ renodx::utils::settings::Settings settings = { .max = 100.f, .is_enabled = []() { return shader_injection.tone_map_type >= 1; }, .parse = [](float value) { return value * 0.01f; }, - .is_visible = []() { return false; }, + .is_visible = []() { return false; }, }, new renodx::utils::settings::Setting{ .key = "ToneMapPerChannelBlowout", @@ -774,195 +774,6 @@ renodx::utils::settings::Settings settings = { .tooltip = "Disables the game's built-in GTAO (Ground Truth Ambient Occlusion).\nUseful when using ReShade-based AO instead.", .labels = {"Off", "On"}, }, - new renodx::utils::settings::Setting{ - .key = "AORadius", - .binding = &shader_injection.ao_radius, - .default_value = 4.f, - .label = "AO Radius", - .section = "Ambient Occlusion", - .tooltip = "World-space sampling radius. Larger values detect occlusion from more distant geometry.", - .max = 16.f, - .format = "%.1f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AORadiusScale", - .binding = &shader_injection.ao_radius_scale, - .default_value = 1.f, - .label = "AO Radius Scale", - .section = "Ambient Occlusion", - .tooltip = "Multiplier on the effective radius. Fine-tune the reach of the AO sampling.", - .max = 5.f, - .format = "%.2f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AOFalloffRange", - .binding = &shader_injection.ao_falloff_range, - .default_value = 1.f, - .label = "AO Falloff Range", - .section = "Ambient Occlusion", - .tooltip = "Fraction of radius used for distance falloff (0-1). Lower = sharper falloff.", - .max = 1.f, - .format = "%.2f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AODistributionPower", - .binding = &shader_injection.ao_distribution_power, - .default_value = 2.f, - .label = "AO Distribution Power", - .section = "Ambient Occlusion", - .tooltip = "Controls how sample distances are distributed. Higher = samples pushed further out.", - .max = 5.f, - .format = "%.2f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AOThinOccluder", - .binding = &shader_injection.ao_thin_occluder, - .default_value = 2.f, - .label = "AO Thin Occluder", - .section = "Ambient Occlusion", - .tooltip = "Thin occluder compensation factor. Higher = more AO contribution from thin objects.", - .max = 8.f, - .format = "%.1f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AOGamma", - .binding = &shader_injection.ao_gamma, - .default_value = 2.2f, - .label = "AO Intensity (Gamma)", - .section = "Ambient Occlusion", - .tooltip = "Power curve applied to the final AO. Higher = darker/stronger occlusion.", - .max = 5.f, - .format = "%.2f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AOTemporalFrame", - .binding = &shader_injection.ao_temporal_frame, - .default_value = 64.f, - .label = "AO Temporal Frame", - .section = "Ambient Occlusion", - .tooltip = "Temporal frame count for jitter rotation cycling. Higher = more noise variation frames.", - .max = 128.f, - .format = "%.0f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AOMipBias", - .binding = &shader_injection.ao_mip_bias, - .default_value = 4.f, - .label = "AO Mip Bias", - .section = "Ambient Occlusion", - .tooltip = "Mip level bias for depth sampling. Higher = coarser/smoother depth reads.", - .max = 8.f, - .format = "%.1f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AODirectionCount", - .binding = &shader_injection.ao_direction_count, - .default_value = 6.f, - .label = "AO Direction Count", - .section = "Ambient Occlusion", - .tooltip = "Number of directional slices for horizon search. More = higher quality, higher cost.", - .min = 1.f, - .max = 12.f, - .format = "%.0f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AOStepCount", - .binding = &shader_injection.ao_step_count, - .default_value = 6.f, - .label = "AO Step Count", - .section = "Ambient Occlusion", - .tooltip = "Number of sample steps per direction. More = better horizon accuracy, higher cost.", - .min = 1.f, - .max = 12.f, - .format = "%.0f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AONormalAttenuation", - .binding = &shader_injection.ao_normal_attenuation, - .default_value = 0.05f, - .label = "AO Normal Attenuation", - .section = "Ambient Occlusion", - .tooltip = "Blends between surface normal and view direction for the visibility integral.", - .max = 1.f, - .format = "%.3f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AOThickness", - .binding = &shader_injection.ao_thickness, - .default_value = 0.5f, - .label = "AO Thickness", - .section = "Ambient Occlusion", - .tooltip = "Assumed thickness of occluders. Controls min-sample distance and bitmask backface offset.", - .max = 5.f, - .format = "%.2f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AODenoiserBlurBeta", - .binding = &shader_injection.ao_denoiser_blur_beta, - .default_value = 0.f, - .label = "AO Denoiser Blur", - .section = "Ambient Occlusion", - .tooltip = "Bilateral blur edge sensitivity. Higher = more blur, less edge preservation.", - .max = 3.f, - .format = "%.2f", - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AODebugView", - .binding = &shader_injection.ao_debug_view, - .value_type = renodx::utils::settings::SettingValueType::INTEGER, - .default_value = 0.f, - .label = "AO Debug View", - .section = "Ambient Occlusion", - .tooltip = "Switches between normal scene rendering and AO-only debug visualization.", - .labels = {"Off", "AO Only"}, - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .key = "AOBitmask", - .binding = &shader_injection.ao_bitmask, - .value_type = renodx::utils::settings::SettingValueType::INTEGER, - .default_value = 1.f, - .label = "AO Visibility Bitmask", - .section = "Ambient Occlusion", - .tooltip = "Enables XeGTAO visibility bitmask method. Replaces the default horizon-based integration with a bitmask-based approach for improved multi-layer occlusion.", - .labels = {"Off", "On"}, - .is_visible = []() { return false; }, - }, - new renodx::utils::settings::Setting{ - .value_type = renodx::utils::settings::SettingValueType::BUTTON, - .label = "Reset AO Settings to Defaults", - .section = "Ambient Occlusion", - .on_change = []() { - renodx::utils::settings::UpdateSetting("AORadius", 4.f); - renodx::utils::settings::UpdateSetting("AORadiusScale", 1.f); - renodx::utils::settings::UpdateSetting("AOFalloffRange", 1.f); - renodx::utils::settings::UpdateSetting("AODistributionPower", 2.f); - renodx::utils::settings::UpdateSetting("AOThinOccluder", 2.f); - renodx::utils::settings::UpdateSetting("AOGamma", 2.2f); - renodx::utils::settings::UpdateSetting("AOTemporalFrame", 64.f); - renodx::utils::settings::UpdateSetting("AOMipBias", 4.f); - renodx::utils::settings::UpdateSetting("AODirectionCount", 6.f); - renodx::utils::settings::UpdateSetting("AOStepCount", 6.f); - renodx::utils::settings::UpdateSetting("AONormalAttenuation", 0.05f); - renodx::utils::settings::UpdateSetting("AOThickness", 0.5f); - renodx::utils::settings::UpdateSetting("AODenoiserBlurBeta", 0.f); - renodx::utils::settings::UpdateSetting("AODebugView", 0.f); - renodx::utils::settings::UpdateSetting("AOBitmask", 1.f); - }, - }, new renodx::utils::settings::Setting{ .key = "HDRSun", .binding = &shader_injection.sun_intensity, @@ -994,6 +805,17 @@ renodx::utils::settings::Settings settings = { .labels = {"Off", "On"}, .is_visible = []() { return current_settings_mode >= 1; }, }, + new renodx::utils::settings::Setting{ + .key = "FAKE_CLOUD_SHADOWS", + .binding = &shader_injection.fake_cloud_shadows, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 1.f, + .label = "Vanilla Fake Cloud Shadows", + .section = "Rendering Improvements", + .tooltip = "Toggles fake cloud shadows", + .labels = {"Off", "On / Vanilla"}, + .is_visible = []() { return current_settings_mode >= 1; }, + }, new renodx::utils::settings::Setting{ .key = "FogModification", .binding = &shader_injection.fog_modification, @@ -1004,17 +826,6 @@ renodx::utils::settings::Settings settings = { .tooltip = "Toggles alternative hue-preserving fog", .labels = {"Original", "Alt"}, }, - new renodx::utils::settings::Setting{ - .key = "MetallicIBLIntensity", - .binding = &shader_injection.metallic_ibl_intensity, - .value_type = renodx::utils::settings::SettingValueType::INTEGER, - .default_value = 0.f, - .label = "Metallic IBL Intensity", - .section = "Rendering Improvements", - .tooltip = "Controls image-based lighting intensity on metallic surfaces", - .labels = {"Vanilla", "Alt"}, - .is_visible = []() { return false; }, - }, new renodx::utils::settings::Setting{ .key = "CubemapAmbientLink", .binding = &shader_injection.cubemap_ambient_link, @@ -1305,9 +1116,9 @@ void OnPresent(reshade::api::command_queue* queue, if (pending_tech_test_preset == 1) { renodx::utils::settings::UpdateSetting("GammaCorrection", 2.f); renodx::utils::settings::UpdateSetting("SwapChainGammaCorrection", 2.f); - renodx::utils::settings::UpdateSetting("ToneMapPerChannelBlowout", 75.f); - renodx::utils::settings::UpdateSetting("ColorGradeExposure", 0.65f); - renodx::utils::settings::UpdateSetting("ColorGradeHighlights", 51.f); + renodx::utils::settings::UpdateSetting("ToneMapPerChannelBlowout", 35.f); + renodx::utils::settings::UpdateSetting("ColorGradeExposure", 0.75f); + renodx::utils::settings::UpdateSetting("ColorGradeHighlights", 50.f); renodx::utils::settings::UpdateSetting("ColorGradeShadows", 80.f); renodx::utils::settings::UpdateSetting("ColorGradeContrast", 55.f); renodx::utils::settings::UpdateSetting("ColorGradeSaturation", 35.f); diff --git a/src/games/endfield/ao/gtao-main_0xE1A460D9.cs_5_0.hlsl b/src/games/endfield/ao/gtao-main_0xE1A460D9.cs_5_0.hlsl index 66ceba1900..b85a143b08 100644 --- a/src/games/endfield/ao/gtao-main_0xE1A460D9.cs_5_0.hlsl +++ b/src/games/endfield/ao/gtao-main_0xE1A460D9.cs_5_0.hlsl @@ -138,6 +138,13 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.z = dot(-r4.xzw, -r4.xzw); r0.z = rsqrt(r0.z); r2.xyz = -r4.xwz * r0.zzz; + + // Distance-based thickness scaling: increase thickness linearly with depth + // to prevent over-attenuation of AO on distant objects. + // No scaling within 100 units (near-field), then ramps at 0.02 per unit beyond. + float viewDist = length(float3(r4.x, r4.w, r4.z)); + float scaledThickness = _ao_thickness * (1.0 + max(0.0, viewDist - 100.0) * 0.02); + r0.z = _ao_radius * _ao_radius_scale; r0.w = _ao_falloff_range * r0.z; r2.w = -1 / r0.w; @@ -153,7 +160,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r4.y = cb0[15].x + r4.y; r4.y = r4.y * r4.z + -r4.x; r0.z = r0.z / r4.y; - r4.y = _ao_thickness / r0.z; + r4.y = scaledThickness / r0.z; r5.x = 10 + -r0.z; r5.x = saturate(0.00999999978 * r5.x); r5.x = 0.5 * r5.x; @@ -237,8 +244,8 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r10.xyz = r10.xzw + -r4.xwz; // Bitmask: process step 0 samples if (_ao_bitmask) { - BM_ProcessSample(r11.xyz, r2.xyz, -1.0, r6.y, _ao_thickness, bitmask); - BM_ProcessSample(r10.xyz, r2.xyz, 1.0, r6.y, _ao_thickness, bitmask); + BM_ProcessSample(r11.xyz, r2.xyz, -1.0, r6.y, scaledThickness, bitmask); + BM_ProcessSample(r10.xyz, r2.xyz, 1.0, r6.y, scaledThickness, bitmask); } r6.w = dot(r11.xyz, r11.xyz); r6.w = sqrt(r6.w); @@ -302,8 +309,8 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r14.xyz = r14.xzw + -r4.xwz; // Bitmask: process step 1 samples if (_ao_bitmask) { - BM_ProcessSample(r12.xyz, r2.xyz, -1.0, r6.y, _ao_thickness, bitmask); - BM_ProcessSample(r14.xyz, r2.xyz, 1.0, r6.y, _ao_thickness, bitmask); + BM_ProcessSample(r12.xyz, r2.xyz, -1.0, r6.y, scaledThickness, bitmask); + BM_ProcessSample(r14.xyz, r2.xyz, 1.0, r6.y, scaledThickness, bitmask); } r7.z = dot(r12.xyz, r12.xyz); r7.z = sqrt(r7.z); @@ -343,8 +350,8 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r10.xyz = r10.xzw + -r4.xwz; // Bitmask: process step 2 samples if (_ao_bitmask) { - BM_ProcessSample(r8.xyz, r2.xyz, -1.0, r6.y, _ao_thickness, bitmask); - BM_ProcessSample(r10.xyz, r2.xyz, 1.0, r6.y, _ao_thickness, bitmask); + BM_ProcessSample(r8.xyz, r2.xyz, -1.0, r6.y, scaledThickness, bitmask); + BM_ProcessSample(r10.xyz, r2.xyz, 1.0, r6.y, scaledThickness, bitmask); } r7.w = dot(r8.xyz, r8.xyz); r7.w = sqrt(r7.w); diff --git a/src/games/endfield/deferred-lighting/0x0E84DFD1.cso b/src/games/endfield/deferred-lighting/0x0E84DFD1.cso index 4d6c85b7da649f468a0ebe56ea77f0c83b102d99..4535042b2ba9bbdaf87dd0df124a6a377aa555ee 100644 GIT binary patch delta 325 zcmexxjrqw9W+|5lC+DE8v-VZRr^K%Knpbdk?atGT3=9k@Zzf7D;#~5Yfgu3Md%5wb zH6tVcW=1A=CPwwmo-F0=hO!I{96}5N3~E4mtp)`KULef_#EcF=f}z3QNP&S<2__Gu z873PlN!No_gLpsyRp|hs9S(qWG(mM(0ckd<0>QI6>8DL1`%lfd)sQ z1juY728693Ghp_CXrMY3uz)#G5y%h_;6fMzQ@nY%_sw8Vn4kDI&z-N$%(<)!;zhpA Q7Z-IKGD>ZZy&^0Q001{O^#A|> delta 122 zcmaEIgZaZXW+|5lC+D2M$Nf6q3A0QHuZobH*}jjFfq|jm^+c&foEu&-Fa!X3Yc?LW zW@HrJ%*f=<#HhB}lcn5!vW_3e<~=@Vf;p`k6c~7cii9>#T%gS?_^ltx1q!(_2{3R^ Ve)vjy^NYn9hKyF51Fs5;0{}bICqDoH diff --git a/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0.asm index 3b7aef3556..3a8a876727 100644 --- a/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0.asm @@ -38,7 +38,7 @@ dcl_constantbuffer CB4[401], dynamicIndexed dcl_constantbuffer CB5[5], immediateIndexed dcl_constantbuffer CB6[160], dynamicIndexed dcl_constantbuffer CB7[4], immediateIndexed -dcl_constantbuffer CB13[19], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -77,7 +77,7 @@ dcl_resource_texture2d (float,float,float,float) t28 dcl_input_ps_siv linear noperspective v0.xy, position dcl_input_ps linear v1.xy dcl_output o0.xyzw -dcl_temps 38 +dcl_temps 39 ftou r0.xy, v0.xyxx mov r0.z, l(0) ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t26.xyzw @@ -658,6 +658,13 @@ if_nz r0.z mad r12.xyz, r14.xyzx, r12.yzwy, -r14.xyzx mad r12.xyz, r0.zzzz, r12.xyzx, r14.xyzx sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t14.yzxw, s1, l(0.000000) + ge r38.x, cb13[12].z, l(1.000000) + mad_sat r38.y, r0.z, l(2.000000), l(-1.000000) + mad_sat r38.z, r0.z, l(4.000000), l(-3.000000) + mad_sat r38.w, r6.w, l(0.050000), l(-1.500000) + add r38.z, r38.z, -r38.y + mad r38.y, r38.w, r38.z, r38.y + movc r0.z, r38.x, r38.y, r0.z min r0.z, r0.z, l(1.000000) mul r12.xyz, r0.zzzz, r12.xyzx else @@ -1332,7 +1339,7 @@ loop endloop mad r6.xyz, r20.xyzx, r11.yyyy, r12.xyzx ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -movc r3.y, cb13[18].w, l(0xFFFFFFFF), r3.y +movc r3.y, cb13[14].z, l(0xFFFFFFFF), r3.y if_nz r3.y sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x min r0.z, r1.y, r0.z @@ -1360,7 +1367,7 @@ else mov r11.xyz, r1.yyyy mov r12.xyz, r1.yyyy endif -movc r11.xyz, cb13[18].wwww, r11.xyzx, l(1.0, 1.0, 1.0, 0) +movc r11.xyz, cb13[14].zzzz, r11.xyzx, l(1.0, 1.0, 1.0, 0) mul r6.xyz, r6.xyzx, r11.xyzx mad r15.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx round_z r0.z, cb0[212].x @@ -1772,8 +1779,8 @@ if_nz r4.w endif mul r2.xyz, r2.yzwy, cb0[112].zzzz mul r2.xyz, r2.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].w) -if_nz cb13[13].w +// Cubemap ambient link modulation (cb13[13].y) +if_nz cb13[13].y max r37.w, r37.w, l(0.000000) min r37.w, r37.w, l(1.000000) mad r37.w, r37.w, l(0.750000), l(0.250000) diff --git a/src/games/endfield/deferred-lighting/0x1E8A471E.cso b/src/games/endfield/deferred-lighting/0x1E8A471E.cso index ff8ad9cc796b947a6158cceb2603114ca9e94421..d1b04e43379942fcd3a8f4ca1d81fc694b8fd6c4 100644 GIT binary patch delta 379 zcmdn;nd!i1CP|kFC+F8Uuas|oHTTbppKL#m%~ZU?$iTpGV4~z=PKKQf3;{rn!^Wf9 zjEwx7KQjJiWK`Y!mf2jqUY3D@Lx@3uK?NwU)u6z@3#55~n9%`9Ff`a3DKKy|S%&BKMd&b8WV$gy8Krs$vgFudwVi0I> z1kxb35d*?8AVa{8hSETFV7@s}4af`-;6jtrf{Gh6Ft9_^Y}S+R3gm=&oNx2NoX<;E6o^4I0KoS>8~^|S delta 286 zcmX@`nQ6;sCP|kFCuf)QPxfWq&iwU6hVj_foeSqMGB7Y~nJBrK^UDqfh5#VPcH>cP zMn>Vy9~pl$GOBET%WN*rXgqmgq4;J4nVLXOs|E!IUZ66e&0BLnGjV?FhjBL+%Feqm~RRrB2b+_Ec-3=9kkSrereaVBIkFa!X35fhIF zGxBeiWIWHvD7E<|Q#!Y(ECU0F5Q6}NBv4wbL4ko6Nb^h<6cP>uiC6(;K*qpm3kC*u wC8%mCG}@ejfwKv!o(oM5tbemF-+Deym?eChS!KnUIhS=o?Bv_5s!;C<03QV+vH$=8 delta 98 zcmZ2*g>lJcMk$vFC+FJM&5Yfp{S(aoo%gRvogK)?z`(F1bE4ED&L;~xce*5y82i0Y5!nkU|{$&QF1Y-%_#YFWDPK%1lGB9umF$gfI0p+zC6c~7cG|%LPM}-;HCQm#nY;D27z^(+9 wmqMe>85lU7fMOuPg(j!PAh7wrWNb1g%uv3~skP$FoXff(cJOU(ZTRg808V=)&;S4c delta 98 zcmew}mAPRmv!qLelXKYj2b}+>&6e5rx?^G3-LJBY3=9kn6D1dO9yrOs5CG&9Y&>es w$SAy-k;$BiQEjs&%W2Wg4N?)woK_7A47@-ELYp7fiZgS5>xXd}8-IHO0Oe^PzW@LL diff --git a/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm index 5da009f1c7..8abc7ffcb7 100644 --- a/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm @@ -38,7 +38,7 @@ dcl_constantbuffer CB4[401], dynamicIndexed dcl_constantbuffer CB5[5], immediateIndexed dcl_constantbuffer CB6[160], dynamicIndexed dcl_constantbuffer CB7[4], immediateIndexed -dcl_constantbuffer CB13[19], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -76,7 +76,7 @@ dcl_resource_texture3d (float,float,float,float) t27 dcl_input_ps_siv linear noperspective v0.xy, position dcl_input_ps linear v1.xy dcl_output o0.xyzw -dcl_temps 38 +dcl_temps 39 ftou r0.xy, v0.xyxx mov r0.z, l(0) ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t24.xyzw @@ -249,6 +249,10 @@ ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t7.xyzw lt r0.z, l(0.001000), r14.x if_nz r0.z sample_l_indexable(texture2d)(float,float,float,float) r0.z, r7.xyxx, t12.yzxw, s1, l(0.000000) + ge r38.x, cb13[12].z, l(1.000000) + mul r38.y, r0.z, r0.z + mul r38.y, r38.y, r38.y + movc r0.z, r38.x, r38.y, r0.z dp3 r9.w, -r12.xyzx, r6.xyzx add r9.w, r9.w, r9.w mad r15.xyz, r6.xyzx, -r9.wwww, -r12.xyzx @@ -1054,7 +1058,7 @@ loop endloop mad r1.xyz, r22.xyzx, r13.zzzz, r14.xyzx ne r11.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx -movc r11.x, cb13[18].w, l(0xFFFFFFFF), r11.x +movc r11.x, cb13[14].z, l(0xFFFFFFFF), r11.x if_nz r11.x sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x mad r0.z, r0.z, l(0.750000), l(0.250000) @@ -1081,7 +1085,7 @@ else mov r11.xzw, r3.wwww mov r14.xyz, r3.wwww endif -movc r11.xzw, cb13[18].wwww, r11.xyzw, l(1.0, 0, 1.0, 1.0) +movc r11.xzw, cb13[14].zzzz, r11.xyzw, l(1.0, 0, 1.0, 1.0) mul r1.xyz, r1.xyzx, r11.xzwx mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx add r17.xyz, r8.xzyx, -r17.xyzx diff --git a/src/games/endfield/deferred-lighting/0x620A40FD.cso b/src/games/endfield/deferred-lighting/0x620A40FD.cso index 33748756a6e198c73c3f4183c59c41e8968aad5a..389529310e462fc4b62391041ae560afc37a2b29 100644 GIT binary patch delta 206 zcmbPpn{mb+Mk$vFC+Cz0Q?*}TNOHD2durb2fE80185kHO@+L|x;*7{;UJ5OXtX&417{OdJr|lBSpVi&zV&>ZFiZG0i^_^Kb1v(G*vYrqR3Y6L0A_(BJpcdz delta 98 zcmbPnhjGqrMk$vFC+8C#`tomfZnXcB;53!G}s#{FmNitP(*RZDZ~&yH397~lNHamqsb@HQ#>W<7(1HCxF%D#dK#r1P5NL1& z(jc}G1Hv&NL%@!P(m-`!zBy10$P5tRLX*>iiW@U9utU^Lwvy`Og!!9q^F^u8Oq|QQ UAi==5`K;`9Lq@61Oa05G0UNnA#Q*>R delta 104 zcmbPmgK^F^Mk$vFCufJNTNwow=(U9VmRCP{KXVZy0|SFh_C%>goH1Dp3;{si^od7< z8HG1XGTvuol-T@}$y|K0iu4Rls|E!IUZAwl=A+V|nK-}o!?*|Kt{XC1ZJrrWE)4({ C)gZS3 diff --git a/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm index ff6a285e58..fb31dffebf 100644 --- a/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm @@ -24,7 +24,7 @@ dcl_constantbuffer CB0[235], immediateIndexed dcl_constantbuffer CB1[259], dynamicIndexed dcl_constantbuffer CB2[5], immediateIndexed dcl_constantbuffer CB3[4], immediateIndexed -dcl_constantbuffer CB13[19], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -56,7 +56,7 @@ dcl_resource_texture3d (float,float,float,float) t23 dcl_input_ps_siv linear noperspective v0.xy, position dcl_input_ps linear v1.xy dcl_output o0.xyzw -dcl_temps 24 +dcl_temps 25 ftou r0.xy, v0.xyxx mov r0.z, l(0) ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t20.xyzw @@ -239,13 +239,20 @@ if_nz r0.z mad r11.xyw, r8.xyxz, r11.xyxw, -r8.xyxz mad r8.xyz, r0.zzzz, r11.xywx, r8.xyzx sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t9.yzxw, s1, l(0.000000) + ge r24.x, cb13[12].z, l(1.000000) + mad_sat r24.y, r0.z, l(2.000000), l(-1.000000) + mad_sat r24.z, r0.z, l(4.000000), l(-3.000000) + mad_sat r24.w, r2.w, l(0.050000), l(-1.500000) + add r24.z, r24.z, -r24.y + mad r24.y, r24.w, r24.z, r24.y + movc r0.z, r24.x, r24.y, r0.z min r0.z, r0.z, l(1.000000) mul r8.xyz, r0.zzzz, r8.xyzx else mov r8.xyz, l(0,0,0,0) endif ne r4.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy -movc r4.z, cb13[18].w, l(0xFFFFFFFF), r4.z +movc r4.z, cb13[14].z, l(0xFFFFFFFF), r4.z if_nz r4.z sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x min r0.z, r1.y, r0.z @@ -271,7 +278,7 @@ else mov r11.xyw, r1.yyyy mov r14.xyz, r1.yyyy endif -movc r11.xyw, cb13[18].wwww, r11.xyzw, l(1.0, 1.0, 0, 1.0) +movc r11.xyw, cb13[14].zzzz, r11.xyzw, l(1.0, 1.0, 0, 1.0) mul r8.xyz, r8.xyzx, r11.xywx mad r15.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx round_z r0.z, cb0[212].x @@ -684,8 +691,8 @@ if_nz r7.w endif mul r3.xyz, r16.xyzx, cb0[112].zzzz mul r3.xyz, r3.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].w) -if_nz cb13[13].w +// Cubemap ambient link modulation (cb13[13].y) +if_nz cb13[13].y max r23.w, r23.w, l(0.000000) min r23.w, r23.w, l(1.000000) mad r23.w, r23.w, l(0.750000), l(0.250000) diff --git a/src/games/endfield/deferred-lighting/0x8BA3C806.cso b/src/games/endfield/deferred-lighting/0x8BA3C806.cso index 7c6475c10edc524756339ad8ca56362fc90b8d46..5b36ed62e674d3e4fcf2242e72274441d13761a4 100644 GIT binary patch delta 363 zcmdn;lWE0oCMlN)C+C$Xl>%RH(MnR{Fo@dyW5!=b1_p)|dnZaQ;(D=%fgu3Mv(n#q zOpB3`fAdF1ZYD;x&3~EA#p`7m7&wF&1Q=9-3bYy&7N; zkOl#W9D@T?&3=#?C#-53plTcrfYdZW)mQ;(CWtxp3}?^y*g_0CupcPKfou@SQBn*7 z4URw>#5Q6;I0j@0*wIiLs1D3G2dV*?0RmiTa#~PvV+ICxh?>oI(p`a^Fpu+XzL@iw YiE~*OBpmoQpUuxVWR%)$yRcju047Q|$p8QV delta 113 zcmZ4Sn`z5WCMlN)C+9~p@!hAE`FpTG+wo|%WNk1b0|UdBJrkuCaedj%zz_iB{ngue zOpB3Gc=Ja_ZYD<6&3~EA#Tkt!Z!8qw>>yJU$Z6G}z`zSsC$#x!?q?>>Z~ZXt!Ge54 LMyt(+i^`<|OiU(s diff --git a/src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0.asm index e3fb3f163e..57b5607129 100644 --- a/src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0.asm @@ -37,7 +37,7 @@ dcl_constantbuffer CB3[2054], dynamicIndexed dcl_constantbuffer CB4[401], dynamicIndexed dcl_constantbuffer CB5[160], dynamicIndexed dcl_constantbuffer CB6[4], immediateIndexed -dcl_constantbuffer CB13[19], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -72,7 +72,7 @@ dcl_resource_texture3d (float,float,float,float) t25 dcl_input_ps_siv linear noperspective v0.xy, position dcl_input_ps linear v1.xy dcl_output o0.xyzw -dcl_temps 37 +dcl_temps 38 ftou r0.xy, v0.xyxx mov r0.z, l(0) ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t22.xyzw @@ -255,6 +255,13 @@ if_nz r0.z mad r14.xzw, r15.xxyz, r16.xxyz, -r15.xxyz mad r14.xzw, r0.zzzz, r14.xxzw, r15.xxyz sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t10.yzxw, s1, l(0.000000) + ge r37.x, cb13[12].z, l(1.000000) + mad_sat r37.y, r0.z, l(2.000000), l(-1.000000) + mad_sat r37.z, r0.z, l(4.000000), l(-3.000000) + mad_sat r37.w, r2.w, l(0.050000), l(-1.500000) + add r37.z, r37.z, -r37.y + mad r37.y, r37.w, r37.z, r37.y + movc r0.z, r37.x, r37.y, r0.z min r0.z, r0.z, l(1.000000) mul r14.xzw, r0.zzzz, r14.xxzw else @@ -911,7 +918,7 @@ loop endloop mad r8.xyz, r21.xyzx, r8.wwww, r14.xzwx ne r4.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy -movc r4.z, cb13[18].w, l(0xFFFFFFFF), r4.z +movc r4.z, cb13[14].z, l(0xFFFFFFFF), r4.z if_nz r4.z sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x min r0.z, r1.y, r0.z @@ -937,7 +944,7 @@ else mov r11.xyz, r1.yyyy mov r14.xyz, r1.yyyy endif -movc r11.xyz, cb13[18].wwww, r11.xyzx, l(1.0, 1.0, 1.0, 0) +movc r11.xyz, cb13[14].zzzz, r11.xyzx, l(1.0, 1.0, 1.0, 0) mul r8.xyz, r8.xyzx, r11.xyzx mad r16.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx round_z r0.z, cb0[212].x @@ -1347,8 +1354,8 @@ if_nz r7.w endif mul r3.xyz, r16.xyzx, cb0[112].zzzz mul r3.xyz, r3.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].w) -if_nz cb13[13].w +// Cubemap ambient link modulation (cb13[13].y) +if_nz cb13[13].y max r36.w, r36.w, l(0.000000) min r36.w, r36.w, l(1.000000) mad r36.w, r36.w, l(0.750000), l(0.250000) diff --git a/src/games/endfield/deferred-lighting/0x99725481.cso b/src/games/endfield/deferred-lighting/0x99725481.cso index b8624e683a0e600e0b10143d1675940ef2c8c778..388c7b2b55ee6224ff4397c9755ff8943d739020 100644 GIT binary patch delta 324 zcmexyi}}qRW+|5lC+Fi*8`p?EIojUgF!lb-p$;=dvz{5BWB~ PT-0sID7Crt3bP~tx9K-6 delta 110 zcmaEJhxx}XW+|5lCufr%2iad9t~@1maf^5{qgNRt0|P_F+lf+(ICs2ZU_?<)?S=i4GIjr3=9l> an{&OjnK_qr!MF?k)QuRWHlJ)@mIMI6`xaXO delta 75 zcmX@Jnd!`CCJ~niC+BY;`WPR6J~?TwIh%;;GUK|9A|i~8!kaZ2t-Uy{8Wb3K85kIZ aHs^Y4Gjo3HhjADBsT(m`Z9dt+EC~Sgc^6Co diff --git a/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm index 73e7610af6..3c551d8e5c 100644 --- a/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm @@ -25,7 +25,7 @@ dcl_constantbuffer CB1[259], dynamicIndexed dcl_constantbuffer CB2[5], immediateIndexed dcl_constantbuffer CB3[5], immediateIndexed dcl_constantbuffer CB4[4], immediateIndexed -dcl_constantbuffer CB13[19], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -649,7 +649,7 @@ else mov r8.xyz, l(0,0,0,0) endif ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -movc r3.y, cb13[18].w, l(0xFFFFFFFF), r3.y +movc r3.y, cb13[14].z, l(0xFFFFFFFF), r3.y if_nz r3.y sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x min r0.z, r1.y, r0.z @@ -677,7 +677,7 @@ else mov r13.xyw, r1.yyyy mov r14.xyz, r1.yyyy endif -movc r13.xyw, cb13[18].wwww, r13.xyzw, l(1.0, 1.0, 0, 1.0) +movc r13.xyw, cb13[14].zzzz, r13.xyzw, l(1.0, 1.0, 0, 1.0) mul r8.xyz, r8.xyzx, r13.xywx mad r15.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx round_z r0.z, cb0[212].x @@ -1094,8 +1094,8 @@ if_nz r4.w endif mul r2.xyz, r15.xyzx, cb0[112].zzzz mul r2.xyz, r2.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].w) -if_nz cb13[13].w +// Cubemap ambient link modulation (cb13[13].y) +if_nz cb13[13].y max r23.w, r23.w, l(0.000000) min r23.w, r23.w, l(1.000000) mad r23.w, r23.w, l(0.750000), l(0.250000) diff --git a/src/games/endfield/deferred-lighting/0xB094C87E.cso b/src/games/endfield/deferred-lighting/0xB094C87E.cso index 7fc52dcd397e92a86c4e62b4ea770095d6284646..d6c7722b87a7faa4395220e8017af24a20923c11 100644 GIT binary patch delta 227 zcmaDef%(NmW=WR_C+AEC1FK7gokH&alUh%1-Pg>>z`*cgqU2&OjS~zE0YDCy(Z*v| zjEwx78JX0X7}YjwvYZyJmt|n!5MmHuPz5T`YEWR{1=2h~%;*3l7#i#?7#P@{RNMTPIh(kRaM8)nq|KG#Nz`!6eQF1Y7#9ju503au9<56u! vM&ZpL8Gkb}s&0PE9L~M@0KZEzr&WUj120g4&}QCZac0hM{V=X>S-J-RRdF4L diff --git a/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm index 4a9ce18fa8..3f3c642e07 100644 --- a/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm @@ -37,7 +37,7 @@ dcl_constantbuffer CB3[2054], dynamicIndexed dcl_constantbuffer CB4[401], dynamicIndexed dcl_constantbuffer CB5[160], dynamicIndexed dcl_constantbuffer CB6[4], immediateIndexed -dcl_constantbuffer CB13[19], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -71,7 +71,7 @@ dcl_resource_texture2d (float,float,float,float) t24 dcl_input_ps_siv linear noperspective v0.xy, position dcl_input_ps linear v1.xy dcl_output o0.xyzw -dcl_temps 37 +dcl_temps 38 ftou r0.xy, v0.xyxx mov r0.z, l(0) ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t22.xyzw @@ -162,6 +162,10 @@ ld_indexable(texture2d)(float,float,float,float) r12.z, r0.xyzz, t7.zwxy lt r0.z, l(0.001000), r12.z if_nz r0.z sample_l_indexable(texture2d)(float,float,float,float) r0.z, r6.xyxx, t10.yzxw, s1, l(0.000000) + ge r37.x, cb13[12].z, l(1.000000) + mul r37.y, r0.z, r0.z + mul r37.y, r37.y, r37.y + movc r0.z, r37.x, r37.y, r0.z dp3 r10.w, -r10.xyzx, r5.xyzx add r10.w, r10.w, r10.w mad r13.xyz, r5.xyzx, -r10.wwww, -r10.xyzx @@ -966,7 +970,7 @@ loop endloop mad r1.xyz, r21.xyzx, r13.wwww, r13.xyzx ne r8.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx -movc r8.x, cb13[18].w, l(0xFFFFFFFF), r8.x +movc r8.x, cb13[14].z, l(0xFFFFFFFF), r8.x if_nz r8.x sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x mad r0.z, r0.z, l(0.750000), l(0.250000) @@ -993,7 +997,7 @@ else mov r8.xzw, r3.wwww mov r13.xyz, r3.wwww endif -movc r8.xzw, cb13[18].wwww, r8.xzww, l(1.0, 0, 1.0, 1.0) +movc r8.xzw, cb13[14].zzzz, r8.xzww, l(1.0, 0, 1.0, 1.0) mul r1.xyz, r1.xyzx, r8.xzwx mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx add r16.xyz, r7.xzyx, -r16.xyzx diff --git a/src/games/endfield/deferred-lighting/0xD5B102A4.cso b/src/games/endfield/deferred-lighting/0xD5B102A4.cso index 81a2b599a51d02cdef0ba45e72321cf30f8652f3..7ab8d3b35246ed9b5b1a3fd80b09fe3ea4c91ca3 100644 GIT binary patch delta 337 zcmX@Jp6S3wCMlN)Cufc8)*5js*LCIo*rvvdTv1?TU|={fW1`d|E`}Kl3;{qMgWAMn zNsRoPH5sLu7$r8lGMBq+$}%u;2r&pShy$gy8Wb3Kfiw>gGdchXh6Z~h1qMzfko@GG z{xbDIjuT8VkOl#$LI()#Z~&yC397~lNV7rJoIT@X3sG}mKTwDR*&LANQVaqOjzAj3 zHe!HU3S@)K06Pvy8$uO=1>l bSZ{4+&ShN?@A7S)=%;SPD7ATKgRnRNMf)>4 delta 117 zcmX@Gk?G8OCMlN)CuhOx&GFGM{ZGY6yfq~)7^odf7xOk>BFa!X3hgByY zOJWq>tjQ?N#3;VmmATw~@&@l2oK_7A47@;jq0NCl+RTFA`k`E)kQ<)>1NY>EETWqi P`EwaDT5Vq2C@c;DqthXB diff --git a/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm index 836daa6ec2..bd9a10f395 100644 --- a/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm @@ -25,7 +25,7 @@ dcl_constantbuffer CB1[259], dynamicIndexed dcl_constantbuffer CB2[5], immediateIndexed dcl_constantbuffer CB3[5], immediateIndexed dcl_constantbuffer CB4[4], immediateIndexed -dcl_constantbuffer CB13[19], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -61,7 +61,7 @@ dcl_resource_texture2d (float,float,float,float) t26 dcl_input_ps_siv linear noperspective v0.xy, position dcl_input_ps linear v1.xy dcl_output o0.xyzw -dcl_temps 23 +dcl_temps 24 ftou r0.xy, v0.xyxx mov r0.z, l(0) ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t24.xyzw @@ -642,13 +642,20 @@ if_nz r0.z mad r11.xyw, r6.xyxz, r11.xyxw, -r6.xyxz mad r6.xyz, r0.zzzz, r11.xywx, r6.xyzx sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t13.yzxw, s1, l(0.000000) + ge r23.x, cb13[12].z, l(1.000000) + mad_sat r23.y, r0.z, l(2.000000), l(-1.000000) + mad_sat r23.z, r0.z, l(4.000000), l(-3.000000) + mad_sat r23.w, r6.w, l(0.050000), l(-1.500000) + add r23.z, r23.z, -r23.y + mad r23.y, r23.w, r23.z, r23.y + movc r0.z, r23.x, r23.y, r0.z min r0.z, r0.z, l(1.000000) mul r6.xyz, r0.zzzz, r6.xyzx else mov r6.xyz, l(0,0,0,0) endif ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -movc r3.y, cb13[18].w, l(0xFFFFFFFF), r3.y +movc r3.y, cb13[14].z, l(0xFFFFFFFF), r3.y if_nz r3.y sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x min r0.z, r1.y, r0.z @@ -676,7 +683,7 @@ else mov r11.xyw, r1.yyyy mov r12.xyz, r1.yyyy endif -movc r11.xyw, cb13[18].wwww, r11.xyzw, l(1.0, 1.0, 0, 1.0) +movc r11.xyw, cb13[14].zzzz, r11.xyzw, l(1.0, 1.0, 0, 1.0) mul r6.xyz, r6.xyzx, r11.xywx mad r14.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx round_z r0.z, cb0[212].x @@ -1093,8 +1100,8 @@ if_nz r4.w endif mul r2.xyz, r14.xyzx, cb0[112].zzzz mul r2.xyz, r2.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].w) -if_nz cb13[13].w +// Cubemap ambient link modulation (cb13[13].y) +if_nz cb13[13].y max r22.w, r22.w, l(0.000000) min r22.w, r22.w, l(1.000000) mad r22.w, r22.w, l(0.750000), l(0.250000) diff --git a/src/games/endfield/deferred-lighting/0xD88CD7C9.cso b/src/games/endfield/deferred-lighting/0xD88CD7C9.cso index 8222887ace8591107411c08f9708d80c718169ff..28637249513bdaf92f0a27f701bc5d1426868140 100644 GIT binary patch delta 360 zcmdmTj&a2WMk$vFCufIJJ}$NruGHOcJ&hioy>^U|fq_9IW1`d|&Wv;hh5#V%*2JU1 zjQpD=8P78^N^E|~WG-GW%fP@P#2~;R4wTkvP+;H%(mX)S=l~=b8tjb}7&w(+@<18{ zAaV>2P&NBOYMijDX@IJ6H~>=91XW`Nq?sV*)H9qt<6{dk=)iuU7zeUJAV*0t2sAhX zX%O3p0pS>sAz(*CX`nhV-yEn0WCjRup~-1M#f=#l*db~rYf1HS!u-v*`JmKiCeCGD UkYM23yjS+RA*0mhss8iD0l^hBvj6}9 delta 104 zcmZ2+fpN<@Mk$vFC+AKl=9|CYX~x~EDdD_2Gc=Nsfq}s!eWKJN&XP0+h5#UM?!=?P zjKZ5G8P78^if?|&WG+5gM0y6NRf7TpFHl-&^H%B4Oq}2PVcd;!*9{r1Hg^Wh7Y6`9 CC?Nd+ diff --git a/src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm index 6f9e24e9a6..e488ef8d7f 100644 --- a/src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm @@ -24,7 +24,7 @@ dcl_constantbuffer CB0[235], immediateIndexed dcl_constantbuffer CB1[259], dynamicIndexed dcl_constantbuffer CB2[5], immediateIndexed dcl_constantbuffer CB3[4], immediateIndexed -dcl_constantbuffer CB13[19], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -55,7 +55,7 @@ dcl_resource_texture2d (float,float,float,float) t22 dcl_input_ps_siv linear noperspective v0.xy, position dcl_input_ps linear v1.xy dcl_output o0.xyzw -dcl_temps 23 +dcl_temps 24 ftou r0.xy, v0.xyxx mov r0.z, l(0) ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t20.xyzw @@ -238,13 +238,20 @@ if_nz r0.z mad r10.xyw, r6.xyxz, r10.xyxw, -r6.xyxz mad r6.xyz, r0.zzzz, r10.xywx, r6.xyzx sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t9.yzxw, s1, l(0.000000) + ge r23.x, cb13[12].z, l(1.000000) + mad_sat r23.y, r0.z, l(2.000000), l(-1.000000) + mad_sat r23.z, r0.z, l(4.000000), l(-3.000000) + mad_sat r23.w, r2.w, l(0.050000), l(-1.500000) + add r23.z, r23.z, -r23.y + mad r23.y, r23.w, r23.z, r23.y + movc r0.z, r23.x, r23.y, r0.z min r0.z, r0.z, l(1.000000) mul r6.xyz, r0.zzzz, r6.xyzx else mov r6.xyz, l(0,0,0,0) endif ne r4.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy -movc r4.z, cb13[18].w, l(0xFFFFFFFF), r4.z +movc r4.z, cb13[14].z, l(0xFFFFFFFF), r4.z if_nz r4.z sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x min r0.z, r1.y, r0.z @@ -270,7 +277,7 @@ else mov r10.xyw, r1.yyyy mov r13.xyz, r1.yyyy endif -movc r10.xyw, cb13[18].wwww, r10.xyzw, l(1.0, 1.0, 0, 1.0) +movc r10.xyw, cb13[14].zzzz, r10.xyzw, l(1.0, 1.0, 0, 1.0) mul r6.xyz, r6.xyzx, r10.xywx mad r14.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx round_z r0.z, cb0[212].x @@ -683,8 +690,8 @@ if_nz r7.w endif mul r3.xyz, r15.xyzx, cb0[112].zzzz mul r3.xyz, r3.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].w) -if_nz cb13[13].w +// Cubemap ambient link modulation (cb13[13].y) +if_nz cb13[13].y max r22.w, r22.w, l(0.000000) min r22.w, r22.w, l(1.000000) mad r22.w, r22.w, l(0.750000), l(0.250000) diff --git a/src/games/endfield/deferred-lighting/0xE322C21D.cso b/src/games/endfield/deferred-lighting/0xE322C21D.cso index 5ff4eb7e87d67db5d2ac17c583661a75c285ecf5..a93b11a79e9385bac2ecf3a221d271079d2bc273 100644 GIT binary patch delta 190 zcmbQz!aSjsS<)rK$$7T8+rF?m1BYWbZOufDx&#;*7#Jo@lw8bt;UEJ;0FYC%@u)T< zBmd@)jND9&>YM*EhjWX{GB9umF$gfI0p+zC6c~7cG|%LNyM!6lCU4v&Y;D27z^(+9 wmqMe>85lU7fMOuPg(j!PAh6k=KQ@^YW+>n0twrL@oXff(cJOV!T59hD0KHoza{vGU delta 98 zcmbQx$~>ioS<)rK$=T!TEb)IF%qO^;bv6hue|3hDfq_9}qU2)Ekb?{i0YFaZ#-rMd vjKZ5gGIBF9s%`$u9L~M@0)Ip@r&WUj120g4&}PG8ac0hM{V;A|nY|AH^dcNW diff --git a/src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0.asm index 3f9b329b38..cc465cefc9 100644 --- a/src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0.asm +++ b/src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0.asm @@ -37,7 +37,7 @@ dcl_constantbuffer CB3[2054], dynamicIndexed dcl_constantbuffer CB4[401], dynamicIndexed dcl_constantbuffer CB5[160], dynamicIndexed dcl_constantbuffer CB6[4], immediateIndexed -dcl_constantbuffer CB13[19], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed dcl_sampler s0, mode_default dcl_sampler s1, mode_default dcl_sampler s2, mode_default @@ -72,7 +72,7 @@ dcl_resource_texture3d (float,float,float,float) t25 dcl_input_ps_siv linear noperspective v0.xy, position dcl_input_ps linear v1.xy dcl_output o0.xyzw -dcl_temps 38 +dcl_temps 39 ftou r0.xy, v0.xyxx mov r0.z, l(0) ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t22.xyzw @@ -163,6 +163,10 @@ ld_indexable(texture2d)(float,float,float,float) r13.z, r0.xyzz, t7.zwxy lt r0.z, l(0.001000), r13.z if_nz r0.z sample_l_indexable(texture2d)(float,float,float,float) r0.z, r6.xyxx, t10.yzxw, s1, l(0.000000) + ge r38.x, cb13[12].z, l(1.000000) + mul r38.y, r0.z, r0.z + mul r38.y, r38.y, r38.y + movc r0.z, r38.x, r38.y, r0.z dp3 r10.w, -r11.xyzx, r5.xyzx add r10.w, r10.w, r10.w mad r14.xyz, r5.xyzx, -r10.wwww, -r11.xyzx @@ -968,7 +972,7 @@ loop endloop mad r1.xyz, r22.xyzx, r13.wwww, r14.xyzx ne r10.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx -movc r10.x, cb13[18].w, l(0xFFFFFFFF), r10.x +movc r10.x, cb13[14].z, l(0xFFFFFFFF), r10.x if_nz r10.x sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x mad r0.z, r0.z, l(0.750000), l(0.250000) @@ -995,7 +999,7 @@ else mov r10.xzw, r3.wwww mov r14.xyz, r3.wwww endif -movc r10.xzw, cb13[18].wwww, r10.xyzw, l(1.0, 0, 1.0, 1.0) +movc r10.xzw, cb13[14].zzzz, r10.xyzw, l(1.0, 0, 1.0, 1.0) mul r1.xyz, r1.xyzx, r10.xzwx mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx add r17.xyz, r7.xzyx, -r17.xyzx diff --git a/src/games/endfield/deferred-lighting/0xF901F0EC.cso b/src/games/endfield/deferred-lighting/0xF901F0EC.cso index 5d15c952eb31fad36936f62636d516c84ea98428..9837ec4530e4fa114bdc7cad3c5dcc5c64456ff1 100644 GIT binary patch delta 208 zcmezKobksCMk$vFCuc>*-BUy_??`XWotS&M)pG*a5e$OKo)VK$ytHKH}gua=i`JK%eVQcx;V4ovMz`%d_Y}pOacrXlLd>#Cr>D1 K+03E+#RC9eVkwFM delta 98 zcmezIg7MFDMk$vFCuhGs3nygH*miaQDy|Fp2~UnOGB7awDV`{`h|{K+fgu3MJ3sMg wGNbTjO~&7hjFOvGnO}=;?vY%>$7$7|z`zTX7uxKoA= 1.0. Uses new temp r36 (dcl_temps bumped 36→37). + +Grass/foliage deferred (0xD3FA93FC.ps_5_0.asm:165-169) — After T10 sample, applies pow(x, 4) power curve when SHADOW_HARDENING >= 1.0. Uses new temp r37 (dcl_temps bumped 37→38). + +Both ASM patches use movc for branchless conditional selection — if the toggle is off, the original shadow value passes through unchanged. The crude 4x gives environment the strong contrast you liked, while pow(4) preserves grass/foliage shadow boundaries (0→0, 1→1 fixed points). + + + +// BRDF // + +The BRDF is Unity's standard Cook-Torrance with GGX distribution + Smith height-correlated visibility + Schlick Fresnel + multiscattering energy compensation term + +1. Material Setup - metallic workflow: F0 = albedo⋅m+0.04⋅(1−m) + + +r1.z = -r1.x * 0.0399999991 + 0.0399999991; // dielectricF0 = 0.04 * (1 - metallic) +r9.xyz = r9.xyz * r1.xxx + r1.zzz; // F0 = albedo * metallic + dielectricF0 + + +2. GGX NDF (D term) + +r2.z = r0.z * r1.x + -r0.z; // NdotH² * (α² - 1) = NdotH * α² - NdotH +r0.z = r2.z * r0.z + 1; // denom = NdotH² * (α² - 1) + 1 +// ... +r0.z = r0.z * r0.z; // denom² +r0.z = r1.x / r0.z; // D = α² / denom² + +3. Schlick Fresnel (F term) + +r2.z = saturate(dot(r8.xyz, r15.xyz)); // VdotH +r2.z = 1 + -r2.z; // (1 - VdotH) +r4.w = r2.z * r2.z; // (1 - VdotH)² +r4.w = r4.w * r4.w; // (1 - VdotH)⁴ +r6.w = r4.w * r2.z; // (1 - VdotH)⁵ +r2.z = -r4.w * r2.z + 1; // 1 - (1-VdotH)⁵ +r15.xyz = r9.xyz * r2.zzz + r6.www; // F0*(1-(1-VdotH)⁵) + (1-VdotH)⁵ + +4. Smith Height-Correlated Visibility (V term) + +r16.xy = -r10.zy * r1.xx + r10.zy; // NdotV/L * (1 - α²) +r16.xy = r16.xy * r10.zy + r1.xx; // NdotV/L² * (1-α²) + α² +r16.xy = sqrt(r16.xy); // √(...) +r16.xy = r16.xy * r10.yz; // NdotL/V * √(...) +r1.x = r16.x + r16.y; // sum of both terms +r1.x = 9.99999975e-05 + r1.x; // ε +r1.x = 0.5 / r1.x; // V = 0.5 / sum +r0.z = r1.x * r0.z; // D * V +r15.xyz = r15.xyz * r0.zzz; // specular = D * V * F + +5. Multiscattering Energy Compensation + +// Multiscattering: from lines ~283-300 +r14.xyz = float3(1,1,1) + -r9.xyz; +r14.xyz = r14.xyz * float3(0.0476190485,...) + r9.xyz; // 1/21 blend +// ... sample BRDF LUT from t9 ... +r16.xyz = r14.xyz * r14.xyz; +r16.xyz = r16.xyz * r0.zzz; // Fms squared * LUT +r14.xyz = -r14.xyz * r8.www + float3(1,1,1); +r14.xyz = r16.xyz / r14.xyz; // Ems / (1 - Fms*Eavg) +r14.xyz = r15.xyz + r14.xyz; // specular + multiscatter + +6. BRDF LUT Texture + +r16.xyzw = r10.zwyw * float4(0.96875,...) + float4(0.015625,...); // UV with half-texel offset +r0.z = t9.SampleLevel(s1_s, r16.xy, 0).x; // sample(NdotL_or_V, roughness) +r1.x = t9.SampleLevel(s1_s, r16.zw, 0).x; // sample(NdotV, roughness) + +​D: GGX / Trowbridge-Reitz +F: Schlick +G/V: Smith height-correlated (exact sqrt form, not the fast approximation) +Energy conservation: Kulla-Conty multiscattering via rational polynomial + 1D BRDF LUT (t9) +IBL: Cubemap probes with DDGI-style cascaded 3D irradiance probes (t15–t20) +Dielectric F0: 0.04 (standard) + diff --git a/src/games/endfield/glass/0x183ADBF7.cso b/src/games/endfield/glass/0x183ADBF7.cso index ea7467bfce3e27c0f87d6111cbf7e1242f60f37e..b0d1d989b530dcdde5a1bb67682cc0419bcedadd 100644 GIT binary patch delta 114 zcmbQUoq5i7W)YVNCugIWhtn;#ZtK+z;%l_9_-DRRM8TO;t3iQ*mw|zSceAZCvo?Y| j+16Qob3tBD5Q>oaW|@N@L=ZxoMX#~5AaPZ1l`{eWP5>P* delta 114 zcmbQUoq5i7W)YVNC+9<%j}J7M9#Wt2ZAso0fy&hzMHHMlxf&E0co`TN_%_=*GixKb jlWm>VHy7mf1fd9tZtp)`KUIqpR-p!4!+1d#1 jjJFe8LEFTBCcgv8x?tDF%4N$DV+ delta 114 zcmZ3pgL%ykW)YVNCuhe~8L5_=L=WvKHImU#*yguUB*m4Jt3iQ*mw|zSZ*!w-wl;!0 jxzSa4Ge;pu3W|{UW`nC4%m|^)3vX~UA#u0fDrW=$KFb|) diff --git a/src/games/endfield/glass/0x424F9536.ps_5_0.asm b/src/games/endfield/glass/0x424F9536.ps_5_0.asm index 7a8c59dfd7..67e0d77e7d 100644 --- a/src/games/endfield/glass/0x424F9536.ps_5_0.asm +++ b/src/games/endfield/glass/0x424F9536.ps_5_0.asm @@ -593,7 +593,7 @@ if_nz r6.w endif mul r1.xyz, r15.xyzx, cb0[112].zzzz // === Glass Fix: Reduce reflection probe intensity === -lt r36.x, l(0.500000), cb13[14].x +lt r36.x, l(0.500000), cb13[13].z if_nz r36.x mul r1.xyz, r1.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) endif @@ -956,7 +956,7 @@ if_nz r4.w add r12.xyw, r12.xyxw, r16.xyxz mul r12.xyw, r12.xyxw, cb5[4].xxxx // === Glass Fix: Reduce sun specular intensity === - lt r36.x, l(0.500000), cb13[14].x + lt r36.x, l(0.500000), cb13[13].z if_nz r36.x mul r12.xyw, r12.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000) endif @@ -1760,7 +1760,7 @@ else mul r4.xyz, r0.wwww, cb0[161].xyzx endif // === Glass Fix: Reduce clustered lights and overall brightness === -lt r36.x, l(0.500000), cb13[14].x +lt r36.x, l(0.500000), cb13[13].z if_nz r36.x mul r20.xyz, r20.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) mul r1.xyz, r1.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) @@ -1789,7 +1789,7 @@ mul r2.xyz, r2.xyzx, r3.xywx mad r2.xyz, r2.xyzx, r3.zzzz, r4.xyzx mul r2.xyz, r1.wwww, r2.xyzx // === Glass Transparency Fix === -lt r36.x, l(0.500000), cb13[14].x +lt r36.x, l(0.500000), cb13[13].z if_nz r36.x // Boost transmittance: lerp(r5, 1, 0.5) add r36.xyz, -r5.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) @@ -1812,7 +1812,7 @@ mul_sat r0.x, r0.x, l(10.000000) lt r0.x, l(0.500000), r0.x and o1.z, r0.x, l(0x3f800000) // === Glass Highlight Compression === -lt r36.x, l(0.500000), cb13[14].x +lt r36.x, l(0.500000), cb13[13].z if_nz r36.x dp3 r36.y, r2.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) lt r36.z, l(0.500000), r36.y diff --git a/src/games/endfield/glass/0x69B6459F.cso b/src/games/endfield/glass/0x69B6459F.cso index 65842f23d7c88836d93e43bf0b6c62b941ab0de2..dbf6f23e62b5f2c927d70f13b9cbd1808677e933 100644 GIT binary patch delta 106 zcmdn9nR(An|3PjerUP1Be(LGtuQkrqcztp)`KUIqpR-pvag+clB6 bhS}*sNZf^c-Nlf&A1`~eAaPx9lrsVVtHB)2 delta 106 zcmdn9nR(A4lH$mz)u6z@%fP_EySdSkSsTHf n+~}x2SwdZ4^O2mIAQWNo%?bNIh#-VEM_vhMLE`SbQO*beC0QV% delta 118 zcmdn6g?YmkW)YVNC+By+pVxgamvI%Yy4tM$xN_k}krYQxt_B4LUIqpRzRit}%-RU< n&CP_woqD&N5dg5xAA0}* delta 110 zcmeC#$K11zS;Qs6$@zIi>2}+c{C}E~w|JgbPYc;7QsTnN)u6z@%fP_Ew|SyVwKfu0 hwBU9+f;)Mli}+@N8yU<9q0NoAxtWl-Q}32D0svZc9wYz& diff --git a/src/games/endfield/glass/0x843686F6.ps_5_0.asm b/src/games/endfield/glass/0x843686F6.ps_5_0.asm index ae793ec720..2ac5997483 100644 --- a/src/games/endfield/glass/0x843686F6.ps_5_0.asm +++ b/src/games/endfield/glass/0x843686F6.ps_5_0.asm @@ -582,7 +582,7 @@ if_nz r5.w endif mul r1.xyz, r16.xyzx, cb0[112].zzzz // === Glass Fix: Reduce reflection probe intensity === -lt r35.x, l(0.500000), cb13[14].x +lt r35.x, l(0.500000), cb13[13].z if_nz r35.x mul r1.xyz, r1.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) endif @@ -947,7 +947,7 @@ if_nz r2.w add r4.w, r4.w, r5.w mul r4.w, r4.w, cb5[4].x // === Glass Fix: Reduce sun specular intensity === - lt r35.x, l(0.500000), cb13[14].x + lt r35.x, l(0.500000), cb13[13].z if_nz r35.x mul r4.w, r4.w, l(0.500000) endif @@ -1787,7 +1787,7 @@ else mul r3.yzw, r0.zzzz, cb0[161].xxyz endif // === Glass Fix: Reduce clustered lights and overall brightness === -lt r35.x, l(0.500000), cb13[14].x +lt r35.x, l(0.500000), cb13[13].z if_nz r35.x mul r19.xyz, r19.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) mul r1.xyz, r1.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) @@ -1816,7 +1816,7 @@ mul r2.xyz, r2.xyzx, r5.xyzx mad r2.xyz, r2.xyzx, r3.xxxx, r3.yzwy mul r2.xyz, r0.yyyy, r2.xyzx // === Glass Transparency Fix === -lt r35.x, l(0.500000), cb13[14].x +lt r35.x, l(0.500000), cb13[13].z if_nz r35.x // Boost transmittance: lerp(r4, 1, 0.5) add r35.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) @@ -1839,7 +1839,7 @@ mul_sat r0.x, r0.x, l(10.000000) lt r0.x, l(0.500000), r0.x and o1.z, r0.x, l(0x3f800000) // === Glass Highlight Compression === -lt r35.x, l(0.500000), cb13[14].x +lt r35.x, l(0.500000), cb13[13].z if_nz r35.x dp3 r35.y, r1.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) lt r35.z, l(0.500000), r35.y diff --git a/src/games/endfield/glass/0x859412D4.cso b/src/games/endfield/glass/0x859412D4.cso index d8f8fe5592f94fd64c2be90b9a7e3e0fe2ad816b..7a1aab74a1fabc5fe3bc0936dfd2bd05dc74f2c0 100644 GIT binary patch delta 113 zcmaE|i}}eeW)YVNC+9bh)Oshm6rIaF7CUn((`=rNA_v?!wHg!{co`TNcqb=b6Q3M$ jooAD~hc-fVb6^pB3KBQ*T0S!p_vTG*CM53L+vSV^hI}Eb delta 113 zcmaE|i}}eeW)YVNC+DNHf{e=@-neeEIQ`n_z+35!A_v?!xf&E0co`TN_$DV_6Q3M$ jooAD~hc-fVb6^pB3KBQ*T0S!p_vTG*CM53L+vSV^gC!ws diff --git a/src/games/endfield/glass/0x859412D4.ps_5_0.asm b/src/games/endfield/glass/0x859412D4.ps_5_0.asm index 5859bb753e..04545a0057 100644 --- a/src/games/endfield/glass/0x859412D4.ps_5_0.asm +++ b/src/games/endfield/glass/0x859412D4.ps_5_0.asm @@ -602,7 +602,7 @@ if_nz r9.w endif mul r1.xyz, r14.xyzx, cb0[112].zzzz // === Glass Fix: Reduce reflection probe intensity === -lt r35.x, l(0.500000), cb13[14].x +lt r35.x, l(0.500000), cb13[13].z if_nz r35.x mul r1.xyz, r1.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) endif @@ -965,7 +965,7 @@ if_nz r5.w add r14.xyw, r14.xyxw, r16.xyxz mul r14.xyw, r14.xyxw, cb5[4].xxxx // === Glass Fix: Reduce sun specular intensity === - lt r35.x, l(0.500000), cb13[14].x + lt r35.x, l(0.500000), cb13[13].z if_nz r35.x mul r14.xyw, r14.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000) endif @@ -1768,7 +1768,7 @@ else mul r3.xyz, r0.yyyy, cb0[161].xyzx endif // === Glass Fix: Reduce clustered lights and overall brightness === -lt r35.x, l(0.500000), cb13[14].x +lt r35.x, l(0.500000), cb13[13].z if_nz r35.x mul r19.xyz, r19.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) mul r1.xyz, r1.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) @@ -1796,7 +1796,7 @@ mul r0.yzw, r0.yyzw, r2.xxyz mad r0.yzw, r0.yyzw, r1.wwww, r3.xxyz mul r0.yzw, r0.xxxx, r0.yyzw // === Glass Transparency Fix === -lt r35.x, l(0.500000), cb13[14].x +lt r35.x, l(0.500000), cb13[13].z if_nz r35.x // Boost transmittance: lerp(r4, 1, 0.5) add r35.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) @@ -1819,7 +1819,7 @@ mul_sat r0.x, r0.x, l(10.000000) lt r0.x, l(0.500000), r0.x and o1.z, r0.x, l(0x3f800000) // === Glass Highlight Compression === -lt r35.x, l(0.500000), cb13[14].x +lt r35.x, l(0.500000), cb13[13].z if_nz r35.x dp3 r35.y, r1.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) lt r35.z, l(0.500000), r35.y diff --git a/src/games/endfield/glass/0xB317E9E1.cso b/src/games/endfield/glass/0xB317E9E1.cso index 069ffe1073adf0d7de2ab782046e28fb7bae09f4..dd604e7a66e85182d225dd0e0cf109f5f1ae7c22 100644 GIT binary patch delta 106 zcmeBJ%-peWKErP_|csiT~i7R-aoDl%KXdGYw delta 106 zcmeBJ%-pe}NL;}S<%|Fi3mp~! diff --git a/src/games/endfield/glass/0xB317E9E1.ps_5_0.asm b/src/games/endfield/glass/0xB317E9E1.ps_5_0.asm index bf3ebe07c7..e05c3dd687 100644 --- a/src/games/endfield/glass/0xB317E9E1.ps_5_0.asm +++ b/src/games/endfield/glass/0xB317E9E1.ps_5_0.asm @@ -517,7 +517,7 @@ mad r0.w, cb2[1].x, r0.w, l(1.000000) mul r13.xyz, r0.wwww, r13.xyzx mul r15.xyz, r15.xyzx, cb0[112].zzzz // === Glass Fix: Reduce reflection probe intensity === -lt r30.x, l(0.500000), cb13[14].x +lt r30.x, l(0.500000), cb13[13].z if_nz r30.x mul r15.xyz, r15.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) endif @@ -866,7 +866,7 @@ if_nz r0.w add r16.xyz, r16.xyzx, r17.xyzx mul r16.xyz, r16.xyzx, cb5[4].xxxx // === Glass Fix: Reduce sun specular intensity === - lt r30.x, l(0.500000), cb13[14].x + lt r30.x, l(0.500000), cb13[13].z if_nz r30.x mul r16.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) endif @@ -1531,7 +1531,7 @@ loop iadd r7.z, r7.z, l(1) endloop // === Glass Fix: Reduce clustered lights and overall brightness === -lt r30.x, l(0.500000), cb13[14].x +lt r30.x, l(0.500000), cb13[13].z if_nz r30.x mul r21.xyz, r21.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) mul r13.xyz, r13.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) @@ -1691,7 +1691,7 @@ add r1.xyz, -r1.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) mul r1.xyz, r1.xyzx, r2.xywx mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx // === Glass Transparency Fix === -lt r30.x, l(0.500000), cb13[14].x +lt r30.x, l(0.500000), cb13[13].z if_nz r30.x // Boost transmittance: lerp(r4, 1, 0.5) add r30.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) @@ -1732,7 +1732,7 @@ mul_sat r0.x, r0.x, l(10.000000) lt r0.x, l(0.500000), r0.x and o1.z, r0.x, l(0x3f800000) // === Glass Highlight Compression === -lt r30.x, l(0.500000), cb13[14].x +lt r30.x, l(0.500000), cb13[13].z if_nz r30.x // Compute luminance dp3 r30.y, r8.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) diff --git a/src/games/endfield/glass/0xB8941FB1.cso b/src/games/endfield/glass/0xB8941FB1.cso index d6a46615aa30f787215cc4667f6304ece6a46270..4f1d23e68d2294542a301fb82fa75388e7a63872 100644 GIT binary patch delta 106 zcmcbxf%(D)W)YVNCubA>RqyhvIyX9Ad9E*duc2q7$P;@`tp)`KUIqpR-pz~-?V3p3 aiJ9p^NLk6%R)YcqF9QPu?`BWic1FM>XNL<~E<%|H((;V;s delta 106 zcmZ3olzGWgW)YVNCuf^$``7qyUm-Z-sm5mp7o$TPMRaUAxf&E0co`TN_%?gmwre7B bZ>FUOA#pu-DhnZTOHZ$7MdIpSEN27&!nzz> diff --git a/src/games/endfield/glass/0xF831814B.ps_5_0.asm b/src/games/endfield/glass/0xF831814B.ps_5_0.asm index fcdc346a6c..41983b2072 100644 --- a/src/games/endfield/glass/0xF831814B.ps_5_0.asm +++ b/src/games/endfield/glass/0xF831814B.ps_5_0.asm @@ -531,7 +531,7 @@ mad r1.w, cb2[1].x, r1.w, l(1.000000) mul r14.xyz, r1.wwww, r14.xyzx mul r15.xyz, r15.xyzx, cb0[112].zzzz // === Glass Fix: Reduce reflection probe intensity === -lt r36.x, l(0.500000), cb13[14].x +lt r36.x, l(0.500000), cb13[13].z if_nz r36.x mul r15.xyz, r15.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) endif @@ -880,7 +880,7 @@ if_nz r1.w add r15.xyz, r15.xyzx, r16.xyzx mul r15.xyz, r15.xyzx, cb5[4].xxxx // === Glass Fix: Reduce sun specular intensity === - lt r36.x, l(0.500000), cb13[14].x + lt r36.x, l(0.500000), cb13[13].z if_nz r36.x mul r15.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) endif @@ -1545,7 +1545,7 @@ loop iadd r8.z, r8.z, l(1) endloop // === Glass Fix: Reduce clustered lights and overall brightness === -lt r36.x, l(0.500000), cb13[14].x +lt r36.x, l(0.500000), cb13[13].z if_nz r36.x mul r20.xyz, r20.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) mul r14.xyz, r14.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) @@ -1690,7 +1690,7 @@ else mul r3.xyz, r0.zzzz, cb0[161].xyzx endif // === Glass Fix: Boost transmittance, reduce inscatter === -lt r36.x, l(0.500000), cb13[14].x +lt r36.x, l(0.500000), cb13[13].z if_nz r36.x add r36.x, -r2.w, l(1.000000) mad r2.w, r36.x, l(0.500000), r2.w @@ -1737,7 +1737,7 @@ mul_sat r0.x, r0.x, l(10.000000) lt r0.x, l(0.500000), r0.x and o1.z, r0.x, l(0x3f800000) // === Glass Highlight Compression === -lt r36.x, l(0.500000), cb13[14].x +lt r36.x, l(0.500000), cb13[13].z if_nz r36.x dp3 r36.y, r9.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) lt r36.z, l(0.500000), r36.y diff --git a/src/games/endfield/shadows/0xE9345161.ps_5_0.hlsl b/src/games/endfield/shadows/0xE9345161.ps_5_0.hlsl new file mode 100644 index 0000000000..be0d706fe3 --- /dev/null +++ b/src/games/endfield/shadows/0xE9345161.ps_5_0.hlsl @@ -0,0 +1,26 @@ +// ---- Created with 3Dmigoto v1.4.1 on Sun Feb 15 13:39:39 2026 +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float2 v1 : TEXCOORD0, + out float oDepth : SV_Depth) +{ + float4 r0; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xyzw = t0.Gather(s0_s, v1.xy).xyzw; + r0.xy = min(r0.xz, r0.yw); + oDepth = min(r0.x, r0.y); + return; +} \ No newline at end of file diff --git a/src/games/endfield/shadows/0xD91A8DD3.ps_5_0.hlsl b/src/games/endfield/shadows/character-capsule-ao_0xD91A8DD3.ps_5_0.hlsl similarity index 100% rename from src/games/endfield/shadows/0xD91A8DD3.ps_5_0.hlsl rename to src/games/endfield/shadows/character-capsule-ao_0xD91A8DD3.ps_5_0.hlsl diff --git a/src/games/endfield/shadows/0xB8580FF6.ps_5_0.hlsl b/src/games/endfield/shadows/character-shadows_0xB8580FF6.ps_5_0.hlsl similarity index 91% rename from src/games/endfield/shadows/0xB8580FF6.ps_5_0.hlsl rename to src/games/endfield/shadows/character-shadows_0xB8580FF6.ps_5_0.hlsl index 8f82563c3b..a4f5568475 100644 --- a/src/games/endfield/shadows/0xB8580FF6.ps_5_0.hlsl +++ b/src/games/endfield/shadows/character-shadows_0xB8580FF6.ps_5_0.hlsl @@ -1,4 +1,3 @@ -// ---- Created with 3Dmigoto v1.4.1 on Sat Jan 24 04:33:32 2026 #include "../shared.h" Texture2D t6 : register(t6); @@ -226,7 +225,7 @@ void main( r0.z = (uint)r0.z; r0.z = min(127, (uint)r0.z); r2.w = 0x0000ffff & asint(cb2[r0.z+587].x); - r6.x = f16tof32(r2.w); + r6.x = f16tof32((uint)r2.w); r2.w = cmp(r6.x >= 0); if (r2.w != 0) { r7.x = cb2[576].x; @@ -256,7 +255,7 @@ void main( r3.w = r3.w ? r4.x : 0; if (r3.w != 0) { r0.z = asuint(cb2[r0.z+587].x) >> 16; - r6.y = f16tof32(r0.z); + r6.y = f16tof32((uint)r0.z); r4.xy = r7.xy * cb2[584].zw + r6.xy; r4.zw = r4.xy * cb2[586].zw + float2(0.5,0.5); r4.zw = floor(r4.zw); @@ -312,38 +311,33 @@ void main( } r0.z = r5.x + -r5.y; r0.z = r0.w * r0.z + r5.y; - r0.w = cmp(0.00100000005 < r0.z); - if (r0.w != 0) { - r4.xyz = -cb0[173].xyz + r2.xyz; - r4.yw = cb0[176].xz * r4.yy + r4.xz; - r5.xy = cb0[174].zz * r4.yw; - r5.zw = cb0[183].ww * cb0[175].xy; - r4.yw = r4.yw * cb0[174].zz + r5.zw; - r0.w = t3.SampleLevel(s2_s, r4.yw, 0).x; - r4.yw = r5.xy * cb0[175].ww + r5.zw; - r2.w = t3.SampleLevel(s2_s, r4.yw, 0).x; - r3.w = dot(r4.xz, r4.xz); - r3.w = sqrt(r3.w); - r4.x = cb0[174].y + -cb0[174].x; - r3.w = -cb0[174].x + r3.w; - r4.x = 1 / r4.x; - r3.w = saturate(r4.x * r3.w); - r4.x = r3.w * -2 + 3; - r3.w = r3.w * r3.w; - r3.w = r4.x * r3.w; - r2.w = r2.w + -r0.w; - r0.w = r3.w * r2.w + r0.w; - r0.w = -1 + r0.w; - r0.w = cb0[175].z * r0.w + 1; - - /* - if (SHADOW_HARDENING>= 1.f) { - - r0.w = 1.0 + (r0.w - 1.0) * 4.0; + // Cloud shadow (t3) — toggle via FAKE_CLOUD_SHADOWS + if (FAKE_CLOUD_SHADOWS >= 1.f) { + r0.w = cmp(0.00100000005 < r0.z); + if (r0.w != 0) { + r4.xyz = -cb0[173].xyz + r2.xyz; + r4.yw = cb0[176].xz * r4.yy + r4.xz; + r5.xy = cb0[174].zz * r4.yw; + r5.zw = cb0[183].ww * cb0[175].xy; + r4.yw = r4.yw * cb0[174].zz + r5.zw; + r0.w = t3.SampleLevel(s2_s, r4.yw, 0).x; + r4.yw = r5.xy * cb0[175].ww + r5.zw; + r2.w = t3.SampleLevel(s2_s, r4.yw, 0).x; + r3.w = dot(r4.xz, r4.xz); + r3.w = sqrt(r3.w); + r4.x = cb0[174].y + -cb0[174].x; + r3.w = -cb0[174].x + r3.w; + r4.x = 1 / r4.x; + r3.w = saturate(r4.x * r3.w); + r4.x = r3.w * -2 + 3; + r3.w = r3.w * r3.w; + r3.w = r4.x * r3.w; + r2.w = r2.w + -r0.w; + r0.w = r3.w * r2.w + r0.w; + r0.w = -1 + r0.w; + r0.w = cb0[175].z * r0.w + 1; + r0.z = r0.z * r0.w; } - */ - - r0.z = r0.z * r0.w; } r0.w = cb2[35].z + -r0.z; r0.z = cb2[35].w * r0.w + r0.z; @@ -433,6 +427,12 @@ void main( } o0.y = r1.w ? r0.y : r0.x; r0.x = min(1, r0.z); + + // Shadow compositing contrast curve: S-curve deepens shadow cores + if (SHADOW_HARDENING >= 1.f) { + r0.x = r0.x * r0.x * (3.0 - 2.0 * r0.x); // smoothstep(0, 1, r0.x) + } + r0.x = -1 + r0.x; o0.x = cb2[34].x * r0.x + 1; o0.z = 0; diff --git a/src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl b/src/games/endfield/shadows/screenspace-shadows_0x0C02AB31.cs_5_0.hlsl similarity index 98% rename from src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl rename to src/games/endfield/shadows/screenspace-shadows_0x0C02AB31.cs_5_0.hlsl index 42788250ac..40386e6949 100644 --- a/src/games/endfield/shadows/grass-shadowing_0x0C02AB31.cs_5_0.hlsl +++ b/src/games/endfield/shadows/screenspace-shadows_0x0C02AB31.cs_5_0.hlsl @@ -375,7 +375,7 @@ void main(uint3 vThreadIDInGroup : SV_GroupThreadID, uint3 vThreadGroupID : SV_G r0.y = min(r0.y, r2.y); r0.y = -1 + r0.y; - // Removed screen edge fade for contact shadows + // Removed screen edge fade for contact shadows (original) // r5.yw = r1.xy * cb1[3].zw + float2(-0.5,-0.5); // r5.yw = abs(r5.yw) * float2(12,12) + float2(-4.80000019,-4.80000019); // r5.yw = max(float2(0,0), r5.yw); @@ -384,9 +384,9 @@ void main(uint3 vThreadIDInGroup : SV_GroupThreadID, uint3 vThreadGroupID : SV_G // r1.w = max(0, r1.w); // r0.y = r1.w * r0.y; - if (SHADOW_HARDENING>= 1.f) { - r0.y = r0.y * 4.0; - } + // Shadow hardening moved to deferred lighting shaders per-material: + // 0x1E8A471E (environment) = crude 4x + // 0xD3FA93FC (grass/foliage) = pow(x,4) power curve r6.xzw = cb1[0].www * r0.yyy + float3(1,1,1); r0.y = -cb1[2].w + r1.z; diff --git a/src/games/endfield/shadows/cloud-shadows_0x61FA72DD.ps_5_0.hlsl b/src/games/endfield/shadows/shadowcompositing-shadowmap_0x61FA72DD.ps_5_0.hlsl similarity index 89% rename from src/games/endfield/shadows/cloud-shadows_0x61FA72DD.ps_5_0.hlsl rename to src/games/endfield/shadows/shadowcompositing-shadowmap_0x61FA72DD.ps_5_0.hlsl index f739471418..8f5dfc7867 100644 --- a/src/games/endfield/shadows/cloud-shadows_0x61FA72DD.ps_5_0.hlsl +++ b/src/games/endfield/shadows/shadowcompositing-shadowmap_0x61FA72DD.ps_5_0.hlsl @@ -189,6 +189,12 @@ void main( bitmask.x = ((~(-1 << 2)) << 2) & 0xffffffff; r0.x = (((uint)r0.x << 2) & bitmask.x) | ((uint)0 & ~bitmask.x); bitmask.x = ((~(-1 << 2)) << 0) & 0xffffffff; r0.x = (((uint)r0.y << 0) & bitmask.x) | ((uint)r0.x & ~bitmask.x); r0.y = dot(cb2[33].xyzw, icb[r0.z+0].xyzw); + + // Per-cascade PCF kernel scaling: sharper near shadows, softer distant shadows + if (SHADOW_HARDENING >= 1.f) { + r0.y *= lerp(0.75, 1.5, saturate((float)r0.z / 3.0)); + } + r0.zw = icb[r0.x+4].xy * float2(1,-1); r4.xy = float2(0,0); r1.z = 0; @@ -262,7 +268,7 @@ void main( r1.x = (uint)r1.x; r1.x = min(127, (uint)r1.x); r1.y = 0x0000ffff & asint(cb2[r1.x+587].x); - r3.x = f16tof32(r1.y); + r3.x = f16tof32((uint)r1.y); r1.y = cmp(r3.x >= 0); if (r1.y != 0) { r4.x = cb2[576].x; @@ -292,7 +298,7 @@ void main( r0.y = r0.z ? r0.y : 0; if (r0.y != 0) { r0.y = asuint(cb2[r1.x+587].x) >> 16; - r3.y = f16tof32(r0.y); + r3.y = f16tof32((uint)r0.y); r0.yz = r4.xy * cb2[584].zw + r3.xy; r1.xy = r0.yz * cb2[586].zw + float2(0.5,0.5); r1.xy = floor(r1.xy); @@ -348,39 +354,34 @@ void main( } r0.x = r5.x + -r5.y; r0.x = r1.w * r0.x + r5.y; - r0.y = cmp(0.00100000005 < r0.x); - if (r0.y != 0) { - r0.yzw = -cb0[173].xyz + r2.xyz; - r1.xy = cb0[176].xz * r0.zz + r0.yw; - r1.zw = cb0[174].zz * r1.xy; - r2.xy = cb0[183].ww * cb0[175].xy; - r1.xy = r1.xy * cb0[174].zz + r2.xy; - r0.z = t2.SampleLevel(s2_s, r1.xy, 0).x; - r1.xy = r1.zw * cb0[175].ww + r2.xy; - r1.x = t2.SampleLevel(s2_s, r1.xy, 0).x; - r0.y = dot(r0.yw, r0.yw); - r0.y = sqrt(r0.y); - r0.w = cb0[174].y + -cb0[174].x; - r0.y = -cb0[174].x + r0.y; - r0.w = 1 / r0.w; - r0.y = saturate(r0.y * r0.w); - r0.w = r0.y * -2 + 3; - r0.y = r0.y * r0.y; - r0.y = r0.w * r0.y; - r0.w = r1.x + -r0.z; - r0.y = r0.y * r0.w + r0.z; - r0.y = -1 + r0.y; - r0.y = cb0[175].z * r0.y + 1; - //if (SHADOW_HARDENING >= 1.f) { - // r0.y = 1.0 + (r0.y - 1.0) * 2.0; - // - // // Soften cloud shadow transitions for diffused look - // //r0.y = smoothstep(0.0, 1.0, r0.y); - // //r0.y = lerp(r0.y, 1.0, 0.25); - //} - - r0.x = r0.x * r0.y; + // Cloud shadow (t2) — toggle via FAKE_CLOUD_SHADOWS + if (FAKE_CLOUD_SHADOWS >= 1.f) { + r0.y = cmp(0.00100000005 < r0.x); + if (r0.y != 0) { + r0.yzw = -cb0[173].xyz + r2.xyz; + r1.xy = cb0[176].xz * r0.zz + r0.yw; + r1.zw = cb0[174].zz * r1.xy; + r2.xy = cb0[183].ww * cb0[175].xy; + r1.xy = r1.xy * cb0[174].zz + r2.xy; + r0.z = t2.SampleLevel(s2_s, r1.xy, 0).x; + r1.xy = r1.zw * cb0[175].ww + r2.xy; + r1.x = t2.SampleLevel(s2_s, r1.xy, 0).x; + r0.y = dot(r0.yw, r0.yw); + r0.y = sqrt(r0.y); + r0.w = cb0[174].y + -cb0[174].x; + r0.y = -cb0[174].x + r0.y; + r0.w = 1 / r0.w; + r0.y = saturate(r0.y * r0.w); + r0.w = r0.y * -2 + 3; + r0.y = r0.y * r0.y; + r0.y = r0.w * r0.y; + r0.w = r1.x + -r0.z; + r0.y = r0.y * r0.w + r0.z; + r0.y = -1 + r0.y; + r0.y = cb0[175].z * r0.y + 1; + r0.x = r0.x * r0.y; + } } r0.y = cb2[35].z + -r0.x; r0.x = cb2[35].w * r0.y + r0.x; @@ -389,6 +390,11 @@ void main( } r0.x = min(1, r0.x); + // Shadow compositing contrast curve: S-curve deepens shadow cores + if (SHADOW_HARDENING >= 1.f) { + r0.x = r0.x * r0.x * (3.0 - 2.0 * r0.x); + } + r0.x = -1 + r0.x; o0.x = cb2[34].x * r0.x + 1; o0.yz = float2(1,0); diff --git a/src/games/endfield/shared.h b/src/games/endfield/shared.h index 36909d963c..7d1cd83bc8 100644 --- a/src/games/endfield/shared.h +++ b/src/games/endfield/shared.h @@ -94,29 +94,13 @@ struct ShaderInjectData { float shadow_hardening; float chromatic_aberration_strength; float disable_game_ao; - float ssr_gi_intensity; - float metallic_ibl_intensity; float cubemap_ambient_link; float glass_transparency; float improved_ssr; float tech_test_look; float ui_aspect_ratio; - float ao_radius; - float ao_radius_scale; - float ao_falloff_range; - float ao_distribution_power; - float ao_thin_occluder; - float ao_gamma; - float ao_temporal_frame; - float ao_mip_bias; - float ao_direction_count; - float ao_step_count; - float ao_normal_attenuation; - float ao_thickness; - float ao_denoiser_blur_beta; - float ao_debug_view; - float ao_bitmask; float improved_gtao; + float fake_cloud_shadows; }; #ifndef __cplusplus @@ -179,22 +163,22 @@ cbuffer shader_injection : register(b13) { #define GLASS_TRANSPARENCY shader_injection.glass_transparency #define TECH_TEST_LOOK shader_injection.tech_test_look #define UI_ASPECT_RATIO shader_injection.ui_aspect_ratio -#define AO_RADIUS shader_injection.ao_radius -#define AO_RADIUS_SCALE shader_injection.ao_radius_scale -#define AO_FALLOFF_RANGE shader_injection.ao_falloff_range -#define AO_DISTRIBUTION_POWER shader_injection.ao_distribution_power -#define AO_THIN_OCCLUDER shader_injection.ao_thin_occluder -#define AO_GAMMA shader_injection.ao_gamma -#define AO_TEMPORAL_FRAME shader_injection.ao_temporal_frame -#define AO_MIP_BIAS shader_injection.ao_mip_bias -#define AO_DIRECTION_COUNT shader_injection.ao_direction_count -#define AO_STEP_COUNT shader_injection.ao_step_count -#define AO_NORMAL_ATTENUATION shader_injection.ao_normal_attenuation -#define AO_THICKNESS shader_injection.ao_thickness -#define AO_DENOISER_BLUR_BETA shader_injection.ao_denoiser_blur_beta -#define AO_DEBUG_VIEW shader_injection.ao_debug_view -#define AO_BITMASK shader_injection.ao_bitmask +#define AO_RADIUS 4.0 +#define AO_RADIUS_SCALE 1.0 +#define AO_FALLOFF_RANGE 1.0 +#define AO_DISTRIBUTION_POWER 2.0 +#define AO_THIN_OCCLUDER 2.0 +#define AO_GAMMA 2.2 +#define AO_TEMPORAL_FRAME 64.0 +#define AO_MIP_BIAS 4.0 +#define AO_DIRECTION_COUNT 6.0 +#define AO_STEP_COUNT 6.0 +#define AO_NORMAL_ATTENUATION 0.05 +#define AO_THICKNESS 0.5 +#define AO_DENOISER_BLUR_BETA 0.0 +#define AO_BITMASK 1.0 #define IMPROVED_GTAO shader_injection.improved_gtao +#define FAKE_CLOUD_SHADOWS shader_injection.fake_cloud_shadows #include "../../shaders/renodx.hlsl" diff --git a/src/games/endfield/ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl index 6910ab5780..c8ac01dc2b 100644 --- a/src/games/endfield/ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl +++ b/src/games/endfield/ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl @@ -338,11 +338,6 @@ void main(uint3 vThreadID : SV_DispatchThreadID) u1[vThreadID.xy] = r3.xyzw; } - // Metallic IBL intensity control - float ssr_blend = r0.x; - if (shader_injection.metallic_ibl_intensity == 1.f) { - ssr_blend = max(ssr_blend, 0.75); - } - u2[vThreadID.xy] = ssr_blend.xxxx; + u2[vThreadID.xy] = r0.xxxx; return; } \ No newline at end of file diff --git a/src/games/endfield/ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl index 4bc2bc01da..01f5f25125 100644 --- a/src/games/endfield/ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl +++ b/src/games/endfield/ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl @@ -464,11 +464,5 @@ void main(uint3 vThreadID : SV_DispatchThreadID) u1[vThreadID.xy] = r3.xyzw; } - // Metallic IBL intensity control - float ssr_blend = r0.x; - if (shader_injection.metallic_ibl_intensity == 1.f) { - ssr_blend = max(ssr_blend, 0.75); - } - - u2[vThreadID.xy] = ssr_blend.xxxx; + u2[vThreadID.xy] = r0.xxxx; } \ No newline at end of file From 6ffee378c42508f862c53acd05cd5f8809da56b9 Mon Sep 17 00:00:00 2001 From: spiwar <92001312+spiwar@users.noreply.github.com> Date: Sun, 22 Feb 2026 00:15:22 -0700 Subject: [PATCH 18/40] fix(endfield): Move color grading functions before tonemapping --- src/games/endfield/common.hlsl | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/games/endfield/common.hlsl b/src/games/endfield/common.hlsl index 29b0da174b..28bcd42571 100644 --- a/src/games/endfield/common.hlsl +++ b/src/games/endfield/common.hlsl @@ -461,6 +461,14 @@ LUTSampleResult LUTSAMPLE( float3 lut_size, Texture2D lut_texture, float3 sample_input) { + [branch] + if (shader_injection.tone_map_type != 0.f) { + UserGradingConfig cg_config = CreateColorGradeConfig(); + float sample_input_y = renodx::color::y::from::BT709(sample_input); + sample_input = ApplyExposureContrastFlareHighlightsShadowsByLuminance( + sample_input, sample_input_y, cg_config); + } + renodx::lut::Config lut_config = renodx::lut::config::Create( lut_sampler, shader_injection.color_grade_strength, @@ -508,10 +516,9 @@ float3 HDRGRADE(LUTSampleResult lut_sample) { renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); UserGradingConfig cg_config = CreateColorGradeConfig(); - float3 graded_bt709 = ApplyExposureContrastFlareHighlightsShadowsByLuminance(graded, y, cg_config); float3 output = ApplySaturationBlowoutHueCorrectionHighlightSaturation( - graded_bt709, hue_chrominance_reference_color, y, cg_config); + graded, hue_chrominance_reference_color, y, cg_config); output = renodx::color::bt2020::from::BT709(output); output = renodx::tonemap::neutwo::MaxChannel( output, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); From 57edfd6ee2185a981128b56b8ca765d6817f6e54 Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Tue, 12 May 2026 19:44:47 +0200 Subject: [PATCH 19/40] fix(endfield): update stable build for 1.2.4 --- src/games/endfield/addon.cpp | 157 +- .../ao/ao-blur_0x3E137F65.cs_5_0.hlsl | 55 + .../ao/ao-blur_0x80CD64F6.cs_5_0.hlsl | 68 - ....hlsl => gtao-main_0x522F7BB8.cs_5_0.hlsl} | 20 +- ...l => gtao-temporal_0xDD16F0F8.cs_5_0.hlsl} | 30 +- .../gtao-vertical-blur_0x0995A677.cs_5_0.hlsl | 54 + .../gtao-vertical-blur_0x88B36DD5.cs_5_0.hlsl | 62 - .../endfield/deferred-lighting/0x05D849CE.cso | Bin 57276 -> 0 bytes .../deferred-lighting/0x05D849CE.ps_5_0.asm | 1864 -------------- .../endfield/deferred-lighting/0x0A8C4B9A.cso | Bin 0 -> 41924 bytes .../deferred-lighting/0x0A8C4B9A.ps_5_0.asm | 1360 ++++++++++ .../endfield/deferred-lighting/0x0E84DFD1.cso | Bin 60516 -> 0 bytes .../deferred-lighting/0x0E84DFD1.ps_5_0.asm | 1980 --------------- .../endfield/deferred-lighting/0x1B08FD76.cso | Bin 0 -> 61996 bytes .../endfield/deferred-lighting/0x1E8A471E.cso | Bin 47552 -> 0 bytes .../deferred-lighting/0x1E8A471E.ps_5_0.asm | 1551 ------------ .../endfield/deferred-lighting/0x32F53924.cso | Bin 0 -> 52244 bytes .../endfield/deferred-lighting/0x355D50B7.cso | Bin 0 -> 27572 bytes .../deferred-lighting/0x355D50B7.ps_5_0.asm | 896 +++++++ .../endfield/deferred-lighting/0x37837806.cso | Bin 27168 -> 0 bytes .../deferred-lighting/0x37837806.ps_5_0.asm | 908 ------- .../endfield/deferred-lighting/0x4A42FD4A.cso | Bin 0 -> 48468 bytes .../deferred-lighting/0x4A42FD4A.ps_5_0.asm | 1559 ++++++++++++ .../endfield/deferred-lighting/0x518D3855.cso | Bin 51964 -> 0 bytes .../deferred-lighting/0x518D3855.ps_5_0.asm | 1705 ------------- .../endfield/deferred-lighting/0x5468822B.cso | Bin 57096 -> 0 bytes .../deferred-lighting/0x5468822B.ps_5_0.asm | 1860 -------------- .../endfield/deferred-lighting/0x5F55ACC9.cso | Bin 0 -> 27616 bytes .../endfield/deferred-lighting/0x620A40FD.cso | Bin 28184 -> 0 bytes .../deferred-lighting/0x620A40FD.ps_5_0.asm | 952 ------- .../endfield/deferred-lighting/0x69D13BAF.cso | Bin 0 -> 41356 bytes .../deferred-lighting/0x69D13BAF.ps_5_0.asm | 1342 ++++++++++ .../endfield/deferred-lighting/0x7010AF4B.cso | Bin 27664 -> 0 bytes .../deferred-lighting/0x7010AF4B.ps_5_0.asm | 931 ------- .../endfield/deferred-lighting/0x7B4BA49D.cso | Bin 0 -> 63360 bytes .../deferred-lighting/0x7B4BA49D.ps_5_0.asm | 2040 +++++++++++++++ .../endfield/deferred-lighting/0x7C0172E6.cso | Bin 0 -> 48060 bytes .../deferred-lighting/0x7C0172E6.ps_5_0.asm | 1545 ++++++++++++ .../endfield/deferred-lighting/0x89E4F419.cso | Bin 0 -> 31080 bytes .../endfield/deferred-lighting/0x8A27350D.cso | Bin 0 -> 62296 bytes .../{0x8D6CC6FA.cso => 0x8ACC6F4B.cso} | Bin 67840 -> 68040 bytes .../endfield/deferred-lighting/0x8BA3C806.cso | Bin 48552 -> 0 bytes .../deferred-lighting/0x8BA3C806.ps_5_0.asm | 1594 ------------ .../deferred-lighting/0x8D6CC6FA.ps_5_0.asm | 2234 ----------------- .../endfield/deferred-lighting/0x9630ACD4.cso | Bin 48560 -> 0 bytes .../deferred-lighting/0x9630ACD4.ps_5_0.asm | 1596 ------------ .../endfield/deferred-lighting/0x99725481.cso | Bin 61036 -> 0 bytes .../deferred-lighting/0x99725481.ps_5_0.asm | 1997 --------------- .../endfield/deferred-lighting/0xA1716606.cso | Bin 0 -> 62792 bytes .../deferred-lighting/0xA1716606.ps_5_0.asm | 2022 +++++++++++++++ .../endfield/deferred-lighting/0xA4113DE8.cso | Bin 39372 -> 0 bytes .../deferred-lighting/0xA4113DE8.ps_5_0.asm | 1310 ---------- .../endfield/deferred-lighting/0xB094C87E.cso | Bin 51432 -> 0 bytes .../deferred-lighting/0xB094C87E.ps_5_0.asm | 1688 ------------- .../endfield/deferred-lighting/0xB9D5AA7B.cso | Bin 0 -> 48768 bytes .../endfield/deferred-lighting/0xBD99F0C4.cso | Bin 30220 -> 0 bytes .../deferred-lighting/0xBD99F0C4.ps_5_0.asm | 1013 -------- .../endfield/deferred-lighting/0xC34914B1.cso | Bin 58856 -> 0 bytes .../deferred-lighting/0xC34914B1.ps_5_0.asm | 1931 -------------- .../endfield/deferred-lighting/0xC70BDAA5.cso | Bin 0 -> 62180 bytes .../endfield/deferred-lighting/0xD3FA93FC.cso | Bin 48788 -> 0 bytes .../deferred-lighting/0xD3FA93FC.ps_5_0.asm | 1597 ------------ .../endfield/deferred-lighting/0xD5B102A4.cso | Bin 39104 -> 0 bytes .../deferred-lighting/0xD5B102A4.ps_5_0.asm | 1301 ---------- .../endfield/deferred-lighting/0xD88CD7C9.cso | Bin 26664 -> 0 bytes .../deferred-lighting/0xD88CD7C9.ps_5_0.asm | 888 ------- .../endfield/deferred-lighting/0xD9882F6B.cso | Bin 0 -> 52748 bytes .../endfield/deferred-lighting/0xDC895E4A.cso | Bin 0 -> 49444 bytes .../endfield/deferred-lighting/0xE322C21D.cso | Bin 49808 -> 0 bytes .../deferred-lighting/0xE322C21D.ps_5_0.asm | 1641 ------------ .../endfield/deferred-lighting/0xE9FA7952.cso | Bin 0 -> 27164 bytes .../deferred-lighting/0xE9FA7952.ps_5_0.asm | 882 +++++++ .../endfield/deferred-lighting/0xEA6F34B7.cso | Bin 0 -> 30552 bytes .../endfield/deferred-lighting/0xEC0BE43D.cso | Bin 57296 -> 0 bytes .../deferred-lighting/0xEC0BE43D.ps_5_0.asm | 1867 -------------- .../endfield/deferred-lighting/0xF014B254.cso | Bin 0 -> 67472 bytes .../endfield/deferred-lighting/0xF314003E.cso | Bin 0 -> 27224 bytes .../endfield/deferred-lighting/0xF45699A5.cso | Bin 0 -> 62796 bytes .../endfield/deferred-lighting/0xF901F0EC.cso | Bin 29816 -> 0 bytes .../deferred-lighting/0xF901F0EC.ps_5_0.asm | 1000 -------- .../glass/{0x843686F6.cso => 0x048D5332.cso} | Bin 57100 -> 57100 bytes .../glass/{0xF831814B.cso => 0x08D1A751.cso} | Bin 53924 -> 53924 bytes .../endfield/glass/0x183ADBF7.ps_5_0.asm | 1832 -------------- .../glass/{0x183ADBF7.cso => 0x1913D5FD.cso} | Bin 56220 -> 56220 bytes .../glass/{0x754218B1.cso => 0x25F7357D.cso} | Bin 55856 -> 55856 bytes .../endfield/glass/0x41AF9F2B.ps_5_0.asm | 1805 ------------- .../endfield/glass/0x424F9536.ps_5_0.asm | 1833 -------------- .../glass/{0x69B6459F.cso => 0x4F5F426C.cso} | Bin 55740 -> 55740 bytes .../glass/{0x41AF9F2B.cso => 0x597C09EE.cso} | Bin 55588 -> 55588 bytes .../glass/{0xD2EC68A2.cso => 0x68EDC7A9.cso} | Bin 55952 -> 55952 bytes .../endfield/glass/0x69B6459F.ps_5_0.asm | 1812 ------------- .../endfield/glass/0x754218B1.ps_5_0.asm | 1822 -------------- .../endfield/glass/0x843686F6.ps_5_0.asm | 1860 -------------- .../endfield/glass/0x859412D4.ps_5_0.asm | 1840 -------------- .../glass/{0x424F9536.cso => 0x91CF3135.cso} | Bin 56364 -> 56364 bytes .../endfield/glass/0xB317E9E1.ps_5_0.asm | 1757 ------------- .../endfield/glass/0xB8941FB1.ps_5_0.asm | 1804 ------------- .../endfield/glass/0xD2EC68A2.ps_5_0.asm | 1817 -------------- .../glass/{0xB317E9E1.cso => 0xD37F588D.cso} | Bin 53640 -> 53640 bytes .../glass/{0xB8941FB1.cso => 0xE32D090A.cso} | Bin 55376 -> 55376 bytes .../glass/{0x859412D4.cso => 0xF52EED7A.cso} | Bin 56676 -> 56676 bytes .../endfield/glass/0xF831814B.ps_5_0.asm | 1758 ------------- ..._0.hlsl => skybox2_0x5AC95588.ps_5_0.hlsl} | 144 +- ...5_0.hlsl => skybox_0x3710A6A1.ps_5_0.hlsl} | 112 +- ...CE4.ps_5_0.hlsl => 0xCAB28784.ps_5_0.hlsl} | 2 +- ...aracter-capsule-ao_0xB4E7E6D9.ps_5_0.hlsl} | 50 +- ... character-shadows_0x68D7EB8E.ps_5_0.hlsl} | 26 +- ...positing-shadowmap_0xBD36930C.ps_5_0.hlsl} | 30 +- ...sl => ssr-denoiser_0x0C2070DE.cs_5_0.hlsl} | 10 +- .../ssr/ssr-temporal2_0x953D811E.cs_5_0.hlsl | 395 +++ .../ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl | 343 --- .../ssr/ssr-temporal_0x0A58A512.cs_5_0.hlsl | 684 +++++ .../ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl | 468 ---- 113 files changed, 13159 insertions(+), 54545 deletions(-) create mode 100644 src/games/endfield/ao/ao-blur_0x3E137F65.cs_5_0.hlsl delete mode 100644 src/games/endfield/ao/ao-blur_0x80CD64F6.cs_5_0.hlsl rename src/games/endfield/ao/{gtao-main_0xE1A460D9.cs_5_0.hlsl => gtao-main_0x522F7BB8.cs_5_0.hlsl} (97%) rename src/games/endfield/ao/{gtao-temporal_0x3F036C0E.cs_5_0.hlsl => gtao-temporal_0xDD16F0F8.cs_5_0.hlsl} (80%) create mode 100644 src/games/endfield/ao/gtao-vertical-blur_0x0995A677.cs_5_0.hlsl delete mode 100644 src/games/endfield/ao/gtao-vertical-blur_0x88B36DD5.cs_5_0.hlsl delete mode 100644 src/games/endfield/deferred-lighting/0x05D849CE.cso delete mode 100644 src/games/endfield/deferred-lighting/0x05D849CE.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x0A8C4B9A.cso create mode 100644 src/games/endfield/deferred-lighting/0x0A8C4B9A.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0x0E84DFD1.cso delete mode 100644 src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x1B08FD76.cso delete mode 100644 src/games/endfield/deferred-lighting/0x1E8A471E.cso delete mode 100644 src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x32F53924.cso create mode 100644 src/games/endfield/deferred-lighting/0x355D50B7.cso create mode 100644 src/games/endfield/deferred-lighting/0x355D50B7.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0x37837806.cso delete mode 100644 src/games/endfield/deferred-lighting/0x37837806.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x4A42FD4A.cso create mode 100644 src/games/endfield/deferred-lighting/0x4A42FD4A.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0x518D3855.cso delete mode 100644 src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0x5468822B.cso delete mode 100644 src/games/endfield/deferred-lighting/0x5468822B.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x5F55ACC9.cso delete mode 100644 src/games/endfield/deferred-lighting/0x620A40FD.cso delete mode 100644 src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x69D13BAF.cso create mode 100644 src/games/endfield/deferred-lighting/0x69D13BAF.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0x7010AF4B.cso delete mode 100644 src/games/endfield/deferred-lighting/0x7010AF4B.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x7B4BA49D.cso create mode 100644 src/games/endfield/deferred-lighting/0x7B4BA49D.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x7C0172E6.cso create mode 100644 src/games/endfield/deferred-lighting/0x7C0172E6.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0x89E4F419.cso create mode 100644 src/games/endfield/deferred-lighting/0x8A27350D.cso rename src/games/endfield/deferred-lighting/{0x8D6CC6FA.cso => 0x8ACC6F4B.cso} (56%) delete mode 100644 src/games/endfield/deferred-lighting/0x8BA3C806.cso delete mode 100644 src/games/endfield/deferred-lighting/0x8BA3C806.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0x8D6CC6FA.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0x9630ACD4.cso delete mode 100644 src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0x99725481.cso delete mode 100644 src/games/endfield/deferred-lighting/0x99725481.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xA1716606.cso create mode 100644 src/games/endfield/deferred-lighting/0xA1716606.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0xA4113DE8.cso delete mode 100644 src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0xB094C87E.cso delete mode 100644 src/games/endfield/deferred-lighting/0xB094C87E.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xB9D5AA7B.cso delete mode 100644 src/games/endfield/deferred-lighting/0xBD99F0C4.cso delete mode 100644 src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0xC34914B1.cso delete mode 100644 src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xC70BDAA5.cso delete mode 100644 src/games/endfield/deferred-lighting/0xD3FA93FC.cso delete mode 100644 src/games/endfield/deferred-lighting/0xD3FA93FC.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0xD5B102A4.cso delete mode 100644 src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0xD88CD7C9.cso delete mode 100644 src/games/endfield/deferred-lighting/0xD88CD7C9.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xD9882F6B.cso create mode 100644 src/games/endfield/deferred-lighting/0xDC895E4A.cso delete mode 100644 src/games/endfield/deferred-lighting/0xE322C21D.cso delete mode 100644 src/games/endfield/deferred-lighting/0xE322C21D.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xE9FA7952.cso create mode 100644 src/games/endfield/deferred-lighting/0xE9FA7952.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xEA6F34B7.cso delete mode 100644 src/games/endfield/deferred-lighting/0xEC0BE43D.cso delete mode 100644 src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xF014B254.cso create mode 100644 src/games/endfield/deferred-lighting/0xF314003E.cso create mode 100644 src/games/endfield/deferred-lighting/0xF45699A5.cso delete mode 100644 src/games/endfield/deferred-lighting/0xF901F0EC.cso delete mode 100644 src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0.asm rename src/games/endfield/glass/{0x843686F6.cso => 0x048D5332.cso} (95%) rename src/games/endfield/glass/{0xF831814B.cso => 0x08D1A751.cso} (95%) delete mode 100644 src/games/endfield/glass/0x183ADBF7.ps_5_0.asm rename src/games/endfield/glass/{0x183ADBF7.cso => 0x1913D5FD.cso} (95%) rename src/games/endfield/glass/{0x754218B1.cso => 0x25F7357D.cso} (95%) delete mode 100644 src/games/endfield/glass/0x41AF9F2B.ps_5_0.asm delete mode 100644 src/games/endfield/glass/0x424F9536.ps_5_0.asm rename src/games/endfield/glass/{0x69B6459F.cso => 0x4F5F426C.cso} (95%) rename src/games/endfield/glass/{0x41AF9F2B.cso => 0x597C09EE.cso} (95%) rename src/games/endfield/glass/{0xD2EC68A2.cso => 0x68EDC7A9.cso} (95%) delete mode 100644 src/games/endfield/glass/0x69B6459F.ps_5_0.asm delete mode 100644 src/games/endfield/glass/0x754218B1.ps_5_0.asm delete mode 100644 src/games/endfield/glass/0x843686F6.ps_5_0.asm delete mode 100644 src/games/endfield/glass/0x859412D4.ps_5_0.asm rename src/games/endfield/glass/{0x424F9536.cso => 0x91CF3135.cso} (95%) delete mode 100644 src/games/endfield/glass/0xB317E9E1.ps_5_0.asm delete mode 100644 src/games/endfield/glass/0xB8941FB1.ps_5_0.asm delete mode 100644 src/games/endfield/glass/0xD2EC68A2.ps_5_0.asm rename src/games/endfield/glass/{0xB317E9E1.cso => 0xD37F588D.cso} (95%) rename src/games/endfield/glass/{0xB8941FB1.cso => 0xE32D090A.cso} (95%) rename src/games/endfield/glass/{0x859412D4.cso => 0xF52EED7A.cso} (95%) delete mode 100644 src/games/endfield/glass/0xF831814B.ps_5_0.asm rename src/games/endfield/others/{skybox2_0xEC809E79.ps_5_0.hlsl => skybox2_0x5AC95588.ps_5_0.hlsl} (93%) rename src/games/endfield/others/{skybox_0x9E0DE464.ps_5_0.hlsl => skybox_0x3710A6A1.ps_5_0.hlsl} (93%) rename src/games/endfield/shadows/{0xA4516CE4.ps_5_0.hlsl => 0xCAB28784.ps_5_0.hlsl} (99%) rename src/games/endfield/shadows/{character-capsule-ao_0xD91A8DD3.ps_5_0.hlsl => character-capsule-ao_0xB4E7E6D9.ps_5_0.hlsl} (98%) rename src/games/endfield/shadows/{character-shadows_0xB8580FF6.ps_5_0.hlsl => character-shadows_0x68D7EB8E.ps_5_0.hlsl} (97%) rename src/games/endfield/shadows/{shadowcompositing-shadowmap_0x61FA72DD.ps_5_0.hlsl => shadowcompositing-shadowmap_0xBD36930C.ps_5_0.hlsl} (96%) rename src/games/endfield/ssr/{ssr-denoiser_0xF99BCA96.cs_5_0.hlsl => ssr-denoiser_0x0C2070DE.cs_5_0.hlsl} (97%) create mode 100644 src/games/endfield/ssr/ssr-temporal2_0x953D811E.cs_5_0.hlsl delete mode 100644 src/games/endfield/ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl create mode 100644 src/games/endfield/ssr/ssr-temporal_0x0A58A512.cs_5_0.hlsl delete mode 100644 src/games/endfield/ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index cee0685c8c..189e4a28dd 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -49,7 +49,7 @@ bool UsingSwapchainUtil() { void UpdateReshadeResolutionUniforms(reshade::api::effect_runtime* runtime, uint32_t width, uint32_t height) { float fwidth = static_cast(width); float fheight = static_cast(height); - + // Enumerate all uniform variables and update those with resolution-related source annotations runtime->enumerate_uniform_variables(nullptr, [fwidth, fheight](reshade::api::effect_runtime* rt, reshade::api::effect_uniform_variable variable) { char source[64] = {}; @@ -66,7 +66,7 @@ void UpdateReshadeResolutionUniforms(reshade::api::effect_runtime* runtime, uint else if (std::strcmp(source, "rcpwidth") == 0 || std::strcmp(source, "bufwidth_rcp") == 0) { rt->set_uniform_value_float(variable, 1.0f / fwidth); } - // Update reciprocal height (1.0 / BUFFER_HEIGHT) + // Update reciprocal height (1.0 / BUFFER_HEIGHT) else if (std::strcmp(source, "rcpheight") == 0 || std::strcmp(source, "bufheight_rcp") == 0) { rt->set_uniform_value_float(variable, 1.0f / fheight); } @@ -106,9 +106,9 @@ static float prev_tech_test_look = -1.f; // impossible initial value forces fi // Callback to disable effects during normal present when bypass is enabled // This prevents double-rendering (once via bypass, once via normal present) -void OnReshadeBeginEffects(reshade::api::effect_runtime* runtime, +void OnReshadeBeginEffects(reshade::api::effect_runtime* runtime, reshade::api::command_list* cmd_list, - reshade::api::resource_view rtv, + reshade::api::resource_view rtv, reshade::api::resource_view rtv_srgb) { // Only intercept if bypass is enabled AND we're not currently in bypass render // When bypass is disabled (current_render_reshade_before_ui == 0), let ReShade render normally @@ -157,17 +157,17 @@ bool ExecuteReshadeEffects(reshade::api::command_list* cmd_list) { #ifdef DEBUG_LEVEL_0 uint32_t swapchain_width = 0, swapchain_height = 0; runtime->get_screenshot_width_and_height(&swapchain_width, &swapchain_height); - + std::stringstream ss; - ss << "[Endfield] ExecuteReshadeEffects: Rendering at RTV=" << rtv_width << "x" << rtv_height + ss << "[Endfield] ExecuteReshadeEffects: Rendering at RTV=" << rtv_width << "x" << rtv_height << " (Swapchain=" << swapchain_width << "x" << swapchain_height << ")"; reshade::log::message(reshade::log::level::info, ss.str().c_str()); #endif - + last_rtv_width = rtv_width; last_rtv_height = rtv_height; } - + UpdateReshadeResolutionUniforms(runtime, rtv_width, rtv_height); bypass_render_active = true; runtime->set_effects_state(true); @@ -204,16 +204,60 @@ bool OnPingDraw(reshade::api::command_list* cmd_list) { bool OnUIDDraw(reshade::api::command_list* cmd_list) { if (is_uid_input_candidate) { if (shader_injection.status_text_opacity < 0.5f) { - return false; + return false; } } return true; } +bool OnUiVisibilityDraw(reshade::api::command_list* cmd_list) { + return shader_injection.ui_visibility >= 0.5f; +} + +bool OnUidOrUiVisibilityDraw(reshade::api::command_list* cmd_list) { + if (shader_injection.ui_visibility < 0.5f) return false; + return OnUIDDraw(cmd_list); +} + +bool KeepOriginalShader(reshade::api::command_list* cmd_list) { + return false; +} + +void RegisterUiVisibilityBypassShader(uint32_t crc) { + auto it = custom_shaders.find(crc); + if (it == custom_shaders.end()) { + renodx::mods::shader::CustomShader cs{}; + cs.crc32 = crc; + cs.on_draw = OnUiVisibilityDraw; + cs.on_replace = KeepOriginalShader; + custom_shaders.emplace(crc, std::move(cs)); + return; + } + + it->second.on_draw = OnUiVisibilityDraw; + it->second.on_replace = KeepOriginalShader; +} + +void RegisterUidBypassShader(uint32_t crc) { + auto it = custom_shaders.find(crc); + if (it == custom_shaders.end()) { + renodx::mods::shader::CustomShader cs{}; + cs.crc32 = crc; + cs.on_draw = OnUidOrUiVisibilityDraw; + cs.on_replace = KeepOriginalShader; + custom_shaders.emplace(crc, std::move(cs)); + return; + } + + it->second.on_draw = OnUidOrUiVisibilityDraw; + it->second.on_replace = KeepOriginalShader; +} + + // Helper function to get key name from virtual key code std::string GetKeyName(int keycode) { if (keycode == 0 || keycode >= 256) return ""; - + static const char* keyboard_keys[256] = { "", "Left Mouse", "Right Mouse", "Cancel", "Middle Mouse", "X1 Mouse", "X2 Mouse", "", "Backspace", "Tab", "", "", "Clear", "Enter", "", "", "Shift", "Control", "Alt", "Pause", "Caps Lock", "", "", "", "", "", "", "Escape", "", "", "", "", @@ -232,7 +276,7 @@ std::string GetKeyName(int keycode) { "", "", "OEM <", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Attn", "CrSel", "ExSel", "Erase EOF", "Play", "Zoom", "", "PA1", "OEM Clear", "" }; - + return keyboard_keys[keycode]; } @@ -242,7 +286,7 @@ int GetLastKeyPressedImGui() { ImGuiKey imgui_key; int vk_code; }; - + static const KeyMapping kKeyMappings[] = { // Function keys {ImGuiKey_F1, VK_F1}, {ImGuiKey_F2, VK_F2}, {ImGuiKey_F3, VK_F3}, {ImGuiKey_F4, VK_F4}, @@ -279,7 +323,7 @@ int GetLastKeyPressedImGui() { {ImGuiKey_Semicolon, VK_OEM_1}, {ImGuiKey_Apostrophe, VK_OEM_7}, {ImGuiKey_Comma, VK_OEM_COMMA}, {ImGuiKey_Period, VK_OEM_PERIOD}, {ImGuiKey_Slash, VK_OEM_2}, }; - + for (const auto& mapping : kKeyMappings) { if (ImGui::IsKeyPressed(mapping.imgui_key, false)) { return mapping.vk_code; @@ -607,7 +651,7 @@ renodx::utils::settings::Settings settings = { .on_draw = []() { static bool key_was_pressed = false; bool changed = false; - + // Get current key name for display std::string key_name = ui_toggle_hotkey != 0 ? GetKeyName(ui_toggle_hotkey) : ""; char buf[64] = {0}; @@ -615,7 +659,7 @@ renodx::utils::settings::Settings settings = { size_t copy_len = (key_name.size() < sizeof(buf) - 1) ? key_name.size() : sizeof(buf) - 1; memcpy(buf, key_name.c_str(), copy_len); } - + // Create the input text widget ImGui::InputTextWithHint( "UI Toggle Hotkey", @@ -624,12 +668,12 @@ renodx::utils::settings::Settings settings = { sizeof(buf), ImGuiInputTextFlags_ReadOnly | ImGuiInputTextFlags_NoUndoRedo | ImGuiInputTextFlags_NoHorizontalScroll ); - + // Check if widget is active and capture key presses if (ImGui::IsItemActive()) { hotkey_input_active = true; int key_pressed = GetLastKeyPressedImGui(); - + if (key_pressed != 0 && !key_was_pressed) { if (key_pressed == VK_BACK || key_pressed == VK_DELETE) { ui_toggle_hotkey = 0; @@ -638,7 +682,7 @@ renodx::utils::settings::Settings settings = { ui_toggle_hotkey = key_pressed; changed = true; } - + if (changed) { reshade::set_config_value(nullptr, renodx::utils::settings::global_name.c_str(), "UIVisibilityHotkey", ui_toggle_hotkey); } @@ -650,11 +694,11 @@ renodx::utils::settings::Settings settings = { hotkey_input_active = false; key_was_pressed = false; } - + if (ImGui::IsItemHovered(ImGuiHoveredFlags_ForTooltip)) { ImGui::SetTooltip("Click and press any key to set hotkey.\nPress Backspace or Delete to clear."); } - + return changed; }, .is_global = true, @@ -982,12 +1026,12 @@ renodx::utils::settings::Settings settings = { }, new renodx::utils::settings::Setting{ .value_type = renodx::utils::settings::SettingValueType::TEXT, - .label = "- Addon maintained by Spiwar & Forge.", + .label = "- Addon developed by Spiwar & Forge.", .section = "About", }, new renodx::utils::settings::Setting{ .value_type = renodx::utils::settings::SettingValueType::TEXT, - .label = "- Made for Arknights: Endfield 1.0", + .label = "- Fixed by Rat for Arknights: Endfield 1.2.4", .section = "About", }, new renodx::utils::settings::Setting{ @@ -1041,7 +1085,7 @@ bool OnDraw( uint32_t first_vertex, uint32_t first_instance) { draw_call_vertex_count = vertex_count; - return false; + return false; } // OnDrawIndexed event handler for heuristic-based ping/UID detection @@ -1052,6 +1096,11 @@ bool OnDrawIndexed( uint32_t first_index, int32_t vertex_offset, uint32_t first_instance) { + auto* shader_state = renodx::utils::shader::GetCurrentState(cmd_list); + const uint32_t pixel_shader_hash = shader_state != nullptr + ? renodx::utils::shader::GetCurrentPixelShaderHash(shader_state) + : 0u; + // Constants for ping/latency bar detection constexpr uint32_t PING_INDEX_COUNT = 18; constexpr uint32_t PING_FIRST_INDEX = 0; @@ -1070,16 +1119,23 @@ bool OnDrawIndexed( constexpr int32_t UID_VERTEX_OFFSET = 12; // Detect UID text: drawn right after ping with specific parameters - // Use is_ping_drawn (set by OnPingDraw) since ping shader draws before UID shader - is_uid_input_candidate = (first_index == UID_FIRST_INDEX) && - (index_count > UID_MIN_INDEX_COUNT) && - (vertex_offset == UID_VERTEX_OFFSET) && - is_ping_drawn; + // Use is_ping_drawn (set by OnPingDraw) for the original path. The current + // post-combat UID path can switch to 0xC24C4DBB without replaying that ping + // callback, so allow the same geometry test on that text shader hash. + const bool uid_geometry_candidate = (first_index == UID_FIRST_INDEX) && + (index_count > UID_MIN_INDEX_COUNT) && + (vertex_offset == UID_VERTEX_OFFSET); + const bool uid_shader_candidate = pixel_shader_hash == 0xC24C4DBBu; + is_uid_input_candidate = uid_geometry_candidate && (is_ping_drawn || uid_shader_candidate); // Reset vertex count after processing draw_call_vertex_count = 0; - return false; + if (is_uid_input_candidate && shader_injection.status_text_opacity < 0.5f) { + return true; + } + + return false; } void OnPresent(reshade::api::command_queue* queue, @@ -1331,7 +1387,7 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { */ const uint32_t target_crcs[] = { // Enviroment deferred (doesnt apply to grass/foliage) - /* + /* 0xD88CD7C9u, 0x1E8A471Eu, 0x8BA3C806u, @@ -1341,22 +1397,21 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { 0xA4113DE8u, 0xD5B102A4u, }; - */ - + */ + // grass/foliage deferred (grass, plants, trees will be included in AO) - - 0x37837806u, - 0xD3FA93FCu, - 0x620A40FDu, - 0xE322C21Du, - 0xB094C87Eu, - 0xF901F0ECu, - 0x518D3855u, - 0xBD99F0C4u, - }; + 0xF314003Eu, + 0xDC895E4Au, + 0x5F55ACC9u, + 0xB9D5AA7Bu, + 0x32F53924u, + 0xEA6F34B7u, + 0xD9882F6Bu, + 0x89E4F419u, + }; // Uberpost - /* + /* 0x00C16AFBu, 0x039C28DAu, 0x086097D2u, @@ -1401,6 +1456,21 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { } } + // UI visibility-only hashes: bypass the draw when hidden, keep the + // game's original shader untouched when visible to avoid text-mask bugs. + const uint32_t ui_visibility_bypass_crcs[] = { + 0x0A02B5A1u, + 0x193A48A5u, + 0x904EE4BBu, + }; + for (uint32_t crc : ui_visibility_bypass_crcs) { + RegisterUiVisibilityBypassShader(crc); + } + + // Post-combat UID can switch to this text hash after combat. + // Keep the original shader, but only hide the draw when it matches the UID heuristic. + RegisterUidBypassShader(0xC24C4DBBu); + // Add on_draw callbacks for ping/UID shaders (heuristic-based detection) // Ping/latency bar shader: 0xEF07F89A { @@ -1416,7 +1486,6 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { it->second.on_draw = OnUIDDraw; } } - // Register draw and draw_indexed events for heuristic ping/UID detection reshade::register_event(OnDraw); reshade::register_event(OnDrawIndexed); diff --git a/src/games/endfield/ao/ao-blur_0x3E137F65.cs_5_0.hlsl b/src/games/endfield/ao/ao-blur_0x3E137F65.cs_5_0.hlsl new file mode 100644 index 0000000000..ae13c55829 --- /dev/null +++ b/src/games/endfield/ao/ao-blur_0x3E137F65.cs_5_0.hlsl @@ -0,0 +1,55 @@ +#include "../shared.h" + +Texture2D t2 : register(t2); +Texture2D t1 : register(t1); +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); +SamplerState s1_s : register(s1); + +cbuffer cb0 : register(b0) { + float4 cb0[5]; +} + +RWTexture2D u0 : register(u0); + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) { + if (shader_injection.disable_game_ao >= 0.5f) { + u0[vThreadID.xy] = 1.0; + return; + } + + float2 pixel = float2(vThreadID.xy) + 0.5; + float2 uv = pixel * cb0[4].zw; + + float radius_scale = 1.0 - t1.SampleLevel(s0_s, uv, 0).z; + radius_scale = saturate(radius_scale + radius_scale); + radius_scale *= AO_DENOISER_BLUR_BETA; + + float center_depth = t0.SampleLevel(s0_s, uv, 0).x; + float inv_width = cb0[4].z; + + float2 offset = 0.0; + float3 accum = float3(-1.0, 0.0, 0.0); + + [loop] + while (true) { + if (1.0 < accum.x) break; + + float step_offset = accum.x * inv_width; + offset.x = step_offset * radius_scale; + + float2 depth_uv = offset * cb0[4].zw + uv; + float sample_depth = t0.SampleLevel(s0_s, depth_uv, 0).x; + float weight = 1.0 - min(1.0, abs(sample_depth - center_depth)); + + float2 ao_uv = pixel * cb0[4].zw + offset; + float ao = t2.SampleLevel(s1_s, ao_uv, 0).x; + + accum = float3(accum.x + 1.0, accum.y + weight, accum.z + ao * weight); + } + + float result = accum.z / max(9.99999975e-05, accum.y); + u0[vThreadID.xy] = result.xxxx; +} diff --git a/src/games/endfield/ao/ao-blur_0x80CD64F6.cs_5_0.hlsl b/src/games/endfield/ao/ao-blur_0x80CD64F6.cs_5_0.hlsl deleted file mode 100644 index 05f0576512..0000000000 --- a/src/games/endfield/ao/ao-blur_0x80CD64F6.cs_5_0.hlsl +++ /dev/null @@ -1,68 +0,0 @@ -#include "../shared.h" - -Texture2D t2 : register(t2); -Texture2D t1 : register(t1); -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - -cbuffer cb0 : register(b0) { - float4 cb0[4]; -} - -RWTexture2D u0 : register(u0); - -[numthreads(8, 8, 1)] -void main(uint3 vThreadID : SV_DispatchThreadID) { - // If game AO is disabled, just write 1.0 (no occlusion) - if (shader_injection.disable_game_ao >= 0.5f) { - u0[vThreadID.xy] = 1.0; - return; - } - - // Original ao-blur logic - float2 r0xy = float2(vThreadID.xy) + float2(0.5, 0.5); - float2 r0zw = cb0[3].zw * r0xy; - - float r1x = t1.SampleLevel(s0_s, r0zw, 0).z; - r1x = 1.0 - r1x; - r1x = saturate(r1x + r1x); - r1x *= AO_DENOISER_BLUR_BETA; - - float r1y = t0.SampleLevel(s0_s, r0zw, 0).x; - float r1z = cb0[3].z; - - float2 r2; - r2.y = 0; - - float3 r3 = float3(-3, 0, 0); - - [loop] - while (true) { - if (3 < r3.x) break; - - float r1w = r3.x * r1z; - r2.x = r1w * r1x; - float2 r2zw = r2.xy * cb0[3].zw + r0zw; - - r1w = t0.SampleLevel(s0_s, r2zw, 0).x; - r1w = r1w - r1y; - r1w = min(1.0, abs(r1w)); - r1w = 1.0 - r1w; - - float3 r4; - r4.x = r3.y + r1w; - - float2 r2xz = r0xy * cb0[3].zw + r2.xy; - float r2x_sample = t2.SampleLevel(s0_s, r2xz, 0).x; - r4.y = r2x_sample * r1w + r3.z; - r4.z = 1.0 + r3.x; - - r3 = r4.zxy; - } - - float result = max(9.99999975e-05, r3.y); - result = r3.z / result; - - u0[vThreadID.xy] = result; -} diff --git a/src/games/endfield/ao/gtao-main_0xE1A460D9.cs_5_0.hlsl b/src/games/endfield/ao/gtao-main_0x522F7BB8.cs_5_0.hlsl similarity index 97% rename from src/games/endfield/ao/gtao-main_0xE1A460D9.cs_5_0.hlsl rename to src/games/endfield/ao/gtao-main_0x522F7BB8.cs_5_0.hlsl index b85a143b08..9cbd8d70f6 100644 --- a/src/games/endfield/ao/gtao-main_0xE1A460D9.cs_5_0.hlsl +++ b/src/games/endfield/ao/gtao-main_0x522F7BB8.cs_5_0.hlsl @@ -7,7 +7,7 @@ SamplerState s0_s : register(s0); cbuffer cb1 : register(b1) { - float4 cb1[4]; + float4 cb1[5]; } cbuffer cb0 : register(b0) @@ -108,7 +108,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.xy = frac(r0.xy); r0.zw = (uint2)vThreadID.xy; r1.xyzw = float4(0.5,0.5,0.5,0.5) + r0.zwzw; - r2.xy = cb1[3].zw * r1.zw; + r2.xy = cb1[4].zw * r1.zw; r2.zw = t0.SampleLevel(s0_s, r2.xy, 0).xy; r2.zw = r2.zw * float2(2,2) + float2(-1,-1); r3.x = dot(float2(1,1), abs(r2.zw)); @@ -125,7 +125,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r4.xyz = cb0[1].xyz * r3.yyy; r3.xyw = cb0[0].xyz * r3.xxx + r4.xyz; r3.xyz = cb0[2].xyz * r3.zzz + r3.xyw; - r0.zw = cb1[3].zw * r0.zw; + r0.zw = cb1[4].zw * r0.zw; r0.z = t1.Gather(s0_s, r0.zw).y; r4.z = 0.999989986 * r0.z; r0.zw = r2.xy * float2(2,2) + float2(-1,-1); @@ -152,7 +152,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r4.y = r4.y * r0.z; r0.w = r4.y / r0.w; r0.w = 1 + r0.w; - r5.xy = r1.zw * cb1[3].zw + cb1[3].zw; + r5.xy = r1.zw * cb1[4].zw + cb1[4].zw; r5.xy = r5.xy * float2(2,2) + float2(-1,-1); r4.y = cb0[13].x * r5.y; r4.y = cb0[12].x * r5.x + r4.y; @@ -221,8 +221,8 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r6.w = max(0, r6.w); r6.w = min(4, r6.w); r9.zw = round(r9.zw); - r9.zw = cb1[3].zw * r9.zw; - r10.xy = r1.zw * cb1[3].zw + r9.zw; + r9.zw = cb1[4].zw * r9.zw; + r10.xy = r1.zw * cb1[4].zw + r9.zw; r11.w = t1.SampleLevel(s0_s, r10.xy, r6.w).x; r10.xy = r10.xy * float2(2,2) + float2(-1,-1); r10.yz = cb0[13].xy * r10.yy; @@ -230,7 +230,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r10.xy = cb0[14].xy + r10.xy; r10.xy = cb0[15].xy + r10.xy; r11.xy = r10.xy * r11.ww; - r9.zw = r1.zw * cb1[3].zw + -r9.zw; + r9.zw = r1.zw * cb1[4].zw + -r9.zw; r10.w = t1.SampleLevel(s0_s, r9.zw, r6.w).x; r9.zw = r9.zw * float2(2,2) + float2(-1,-1); r12.xy = cb0[13].xy * r9.ww; @@ -286,8 +286,8 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r7.z = max(0, r7.z); r7.z = min(4, r7.z); r10.xyzw = round(r8.xyzw); - r10.xyzw = cb1[3].zwzw * r10.xyzw; - r11.xyzw = r1.zwzw * cb1[3].zwzw + r10.xyzw; + r10.xyzw = cb1[4].zwzw * r10.xyzw; + r11.xyzw = r1.zwzw * cb1[4].zwzw + r10.xyzw; r12.w = t1.SampleLevel(s0_s, r11.xy, r7.z).x; r13.xyzw = r11.xyzw * float4(2,2,2,2) + float4(-1,-1,-1,-1); r14.xyzw = cb0[13].xyxy * r13.yyww; @@ -295,7 +295,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r13.xyzw = cb0[14].xyxy + r13.xyzw; r13.xyzw = cb0[15].xyxy + r13.xyzw; r12.xy = r13.xy * r12.ww; - r10.xyzw = r1.xyzw * cb1[3].zwzw + -r10.xyzw; + r10.xyzw = r1.xyzw * cb1[4].zwzw + -r10.xyzw; r14.w = t1.SampleLevel(s0_s, r10.xy, r7.z).x; r15.xyzw = r10.xyzw * float4(2,2,2,2) + float4(-1,-1,-1,-1); r16.xyzw = cb0[13].xyxy * r15.yyww; diff --git a/src/games/endfield/ao/gtao-temporal_0x3F036C0E.cs_5_0.hlsl b/src/games/endfield/ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl similarity index 80% rename from src/games/endfield/ao/gtao-temporal_0x3F036C0E.cs_5_0.hlsl rename to src/games/endfield/ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl index 2fac2b0250..67f191b0d7 100644 --- a/src/games/endfield/ao/gtao-temporal_0x3F036C0E.cs_5_0.hlsl +++ b/src/games/endfield/ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl @@ -11,7 +11,7 @@ SamplerState s0_s : register(s0); cbuffer cb0 : register(b0) { - float4 cb0[4]; + float4 cb0[5]; } @@ -27,7 +27,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) float4 r0,r1,r2,r3,r4; r0.xy = (uint2)vThreadID.xy; r0.xy = float2(0.5,0.5) + r0.xy; - r0.zw = cb0[3].zw * r0.xy; + r0.zw = cb0[4].zw * r0.xy; r1.xy = t2.SampleLevel(s0_s, r0.zw, 0).xy; r1.zw = abs(r1.xy) * float2(2,2) + float2(-1,-1); r1.zw = r1.zw * r1.zw; @@ -38,17 +38,17 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r1.xy = (int2)-r2.xy + (int2)r1.xy; r1.xy = (int2)r1.xy; r1.xy = r1.zw * r1.xy; - r1.zw = r0.xy * cb0[3].zw + -r1.xy; + r1.zw = r0.xy * cb0[4].zw + -r1.xy; if (IMPROVED_GTAO >= 0.5) { // Manual bilinear interpolation for previous AO (reduces wobble/ghosting) // Only interpolate AO (.x), keep depth (.y) point-sampled - float2 texelPos = r1.zw * cb0[3].xy - 0.5; + float2 texelPos = r1.zw * cb0[4].xy - 0.5; float2 f = frac(texelPos); - float2 base = (floor(texelPos) + 0.5) * cb0[3].zw; + float2 base = (floor(texelPos) + 0.5) * cb0[4].zw; float ao00 = t3.SampleLevel(s0_s, base, 0).x; - float ao10 = t3.SampleLevel(s0_s, base + float2(cb0[3].z, 0), 0).x; - float ao01 = t3.SampleLevel(s0_s, base + float2(0, cb0[3].w), 0).x; - float ao11 = t3.SampleLevel(s0_s, base + cb0[3].zw, 0).x; + float ao10 = t3.SampleLevel(s0_s, base + float2(cb0[4].z, 0), 0).x; + float ao01 = t3.SampleLevel(s0_s, base + float2(0, cb0[4].w), 0).x; + float ao11 = t3.SampleLevel(s0_s, base + cb0[4].zw, 0).x; r2.x = lerp(lerp(ao00, ao10, f.x), lerp(ao01, ao11, f.x), f.y); r2.y = t3.SampleLevel(s0_s, r1.zw, 0).y; // depth: point-sampled } else { @@ -66,7 +66,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) if (r1.z != 0) { r3.z = 0; } else { - r1.xy = cb0[3].xy * r1.xy; + r1.xy = cb0[4].xy * r1.xy; r1.x = dot(r1.xy, r1.xy); r1.x = sqrt(r1.x); r1.x = cb0[2].z * -r1.x; @@ -74,24 +74,24 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r1.x = exp2(r1.x); r1.x = 0.970000029 * r1.x; r1.y = r3.y + -r2.y; - r1.y = -1442.69507 * abs(r1.y); + r1.y = -721.347534 * abs(r1.y); r1.y = exp2(r1.y); r3.z = r1.x * r1.y; } r1.x = cmp(0.000000 == cb0[2].y); if (r1.x == 0) { - r1.xy = r0.xy * cb0[3].zw + -cb0[3].zw; + r1.xy = r0.xy * cb0[4].zw + -cb0[4].zw; r1.x = t1.SampleLevel(s0_s, r1.xy, 0).x; - r4.xyzw = cb0[3].zwzw * float4(0,-1,1,-1) + r0.zwzw; + r4.xyzw = cb0[4].zwzw * float4(0,-1,1,-1) + r0.zwzw; r1.y = t1.SampleLevel(s0_s, r4.xy, 0).x; r1.z = t1.SampleLevel(s0_s, r4.zw, 0).x; - r4.xyzw = cb0[3].zwzw * float4(-1,0,1,0) + r0.zwzw; + r4.xyzw = cb0[4].zwzw * float4(-1,0,1,0) + r0.zwzw; r1.w = t1.SampleLevel(s0_s, r4.xy, 0).x; r2.y = t1.SampleLevel(s0_s, r4.zw, 0).x; - r4.xyzw = cb0[3].zwzw * float4(-1,1,0,1) + r0.zwzw; + r4.xyzw = cb0[4].zwzw * float4(-1,1,0,1) + r0.zwzw; r0.z = t1.SampleLevel(s0_s, r4.xy, 0).x; r0.w = t1.SampleLevel(s0_s, r4.zw, 0).x; - r0.xy = r0.xy * cb0[3].zw + cb0[3].zw; + r0.xy = r0.xy * cb0[4].zw + cb0[4].zw; r0.x = t1.SampleLevel(s0_s, r0.xy, 0).x; r0.y = min(r1.w, r3.x); r2.z = min(r2.y, r0.w); diff --git a/src/games/endfield/ao/gtao-vertical-blur_0x0995A677.cs_5_0.hlsl b/src/games/endfield/ao/gtao-vertical-blur_0x0995A677.cs_5_0.hlsl new file mode 100644 index 0000000000..de4609a3fc --- /dev/null +++ b/src/games/endfield/ao/gtao-vertical-blur_0x0995A677.cs_5_0.hlsl @@ -0,0 +1,54 @@ +#include "../shared.h" + +Texture2D t2 : register(t2); +Texture2D t1 : register(t1); +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); +SamplerState s1_s : register(s1); + +cbuffer cb0 : register(b0) { + float4 cb0[5]; +} + +RWTexture2D u0 : register(u0); + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) { + if (shader_injection.disable_game_ao >= 0.5f) { + u0[vThreadID.xy] = 1.0; + return; + } + + float2 pixel = float2(vThreadID.xy) + 0.5; + float2 uv = pixel * cb0[4].zw; + + float radius_scale = 1.0 - t1.SampleLevel(s0_s, uv, 0).z; + radius_scale = saturate(radius_scale + radius_scale); + radius_scale *= AO_DENOISER_BLUR_BETA; + + float center_depth = t0.SampleLevel(s0_s, uv, 0).x; + float2 texel_size = cb0[4].zw; + + float2 offset = 0.0; + float3 accum = float3(0.0, 0.0, -1.0); + + [loop] + while (true) { + if (1.0 < accum.z) break; + + float2 step_offset = float2(0.0, accum.z * texel_size.y * radius_scale); + + float2 depth_uv = step_offset * cb0[4].zw + uv; + float sample_depth = t0.SampleLevel(s0_s, depth_uv, 0).x; + float weight = 1.0 - min(1.0, abs(sample_depth - center_depth)); + + float2 ao_uv = pixel * cb0[4].zw + step_offset; + float ao = t2.SampleLevel(s1_s, ao_uv, 0).x; + + accum = float3(accum.x + weight, accum.y + ao * weight, accum.z + 1.0); + } + + float result = accum.y / max(9.99999975e-05, accum.x); + u0[vThreadID.xy] = result.xxxx; +} diff --git a/src/games/endfield/ao/gtao-vertical-blur_0x88B36DD5.cs_5_0.hlsl b/src/games/endfield/ao/gtao-vertical-blur_0x88B36DD5.cs_5_0.hlsl deleted file mode 100644 index cb9dac591c..0000000000 --- a/src/games/endfield/ao/gtao-vertical-blur_0x88B36DD5.cs_5_0.hlsl +++ /dev/null @@ -1,62 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Tue Feb 10 15:11:49 2026 -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - -cbuffer cb0 : register(b0) -{ - float4 cb0[4]; -} - - -#include "../shared.h" - -#define cmp - - -RWTexture2D u0 : register(u0); - -[numthreads(8, 8, 1)] -void main(uint3 vThreadID : SV_DispatchThreadID) -{ - float4 r0,r1,r2,r3,r4; - r0.xy = (uint2)vThreadID.xy; - r0.xy = float2(0.5,0.5) + r0.xy; - r0.zw = cb0[3].zw * r0.xy; - r1.x = t1.SampleLevel(s0_s, r0.zw, 0).z; - r1.x = 1 + -r1.x; - r1.x = saturate(r1.x + r1.x); - r1.x *= AO_DENOISER_BLUR_BETA; - r1.w = t0.SampleLevel(s0_s, r0.zw, 0).x; - r2.x = cb0[3].z; - r2.y = 1; - r1.y = cb0[3].w; - r1.z = 0; - r3.xyz = float3(0,0,-3); - while (true) { - r2.z = cmp(3 < r3.z); - if (r2.z != 0) break; - r2.zw = r3.zz * r2.xy; - r2.zw = r2.zw * r1.xy; - r2.zw = r2.zw * r1.zx; - r4.xy = r2.zw * cb0[3].zw + r0.zw; - r3.w = t0.SampleLevel(s0_s, r4.xy, 0).x; - r3.w = r3.w + -r1.w; - r3.w = min(1, abs(r3.w)); - r3.w = 1 + -r3.w; - r4.x = r3.x + r3.w; - r2.zw = r0.xy * cb0[3].zw + r2.zw; - r2.z = t2.SampleLevel(s0_s, r2.zw, 0).x; - r4.y = r2.z * r3.w + r3.y; - r4.z = 1 + r3.z; - r3.xyz = r4.xyz; - continue; - } - r0.x = max(9.99999975e-05, r3.x); - r0.x = r3.y / r0.x; - u0[vThreadID.xy] = r0.xxxx; - return; -} \ No newline at end of file diff --git a/src/games/endfield/deferred-lighting/0x05D849CE.cso b/src/games/endfield/deferred-lighting/0x05D849CE.cso deleted file mode 100644 index 263e61cb3e8d02eecb2d8052d78a1234aac0e553..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57276 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 SufnrE{6^3pku=AJ`~Lu0@(0)e diff --git a/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0.asm deleted file mode 100644 index 3a8a876727..0000000000 --- a/src/games/endfield/deferred-lighting/0x0E84DFD1.ps_5_0.asm +++ /dev/null @@ -1,1980 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 16:35:51 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[5], immediateIndexed -dcl_constantbuffer CB6[160], dynamicIndexed -dcl_constantbuffer CB7[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_sampler s5, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture3d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture2d (float,float,float,float) t17 -dcl_resource_texture2d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture3d (float,float,float,float) t21 -dcl_resource_texture3d (float,float,float,float) t22 -dcl_resource_texture3d (float,float,float,float) t23 -dcl_resource_texture3d (float,float,float,float) t24 -dcl_resource_texture2d (float,float,float,float) t25 -dcl_resource_texture2d (float,float,float,float) t26 -dcl_resource_texture2d (float,float,float,float) t27 -dcl_resource_texture2d (float,float,float,float) t28 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 39 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t26.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t27.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r2.xyw, r1.wwww, r3.xyxz -utof r4.xy, r0.xyxx -mul r4.zw, v0.xxxy, cb0[82].zzzw -mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) -mul r5.zw, r5.zzzw, cb0[82].zzzw -sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) -mul r6.xyzw, -r5.yyyy, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw -mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r3.w, r5.y, cb0[1].z -mad r3.w, cb0[0].z, r5.x, r3.w -mad r3.w, cb0[2].z, r5.z, r3.w -add r3.w, r3.w, cb0[3].z -eq r6.x, l(0.000000), cb0[86].w -add r6.yzw, -r5.xxyz, cb0[44].xxyz -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r6.xyz, r6.xxxx, r6.yzwy, r7.xyzx -dp3 r6.w, r6.xyzx, r6.xyzx -max r7.w, r6.w, l(9.999999939E-09) -rsq r7.w, r7.w -mul r8.xyz, r6.xyzx, r7.wwww -mul r6.w, r6.w, r7.w -lt r8.w, l(0.000488281250), cb0[234].x -if_nz r8.w - sample_b_indexable(texture2d)(float,float,float,float) r9.xy, v1.xyxx, t25.xyzw, s1, cb0[108].x -else - mov r9.xy, l(1.000000,1.000000,0,0) -endif -lt r9.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[226].xxxy -if_nz r9.z - add r9.z, |r2.y|, |r2.x| - add r9.z, |r2.w|, r9.z - div r9.z, l(1.000000, 1.000000, 1.000000, 1.000000), r9.z - mul r10.xyz, |r2.xywx|, r9.zzzz - mul r11.xyz, r5.xyzx, cb0[229].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r9.z, r11.xyzx, t10.yzxw, s2, l(0.000000) - mul r11.xyzw, r10.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) - add r10.xyw, r11.zwzz, r11.xxxy - mad r10.xyz, r10.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r10.xywx - mad r10.w, r9.z, l(2.000000), l(-1.000000) - mul r10.xyz, r10.wwww, r10.xyzx - mov r10.w, |r2.y| - add r10.w, r10.w, l(-0.700000) - mul_sat r10.w, r10.w, l(4.000000) - mad r11.x, r10.w, l(-2.000000), l(3.000000) - mul r10.w, r10.w, r10.w - mul r10.w, r10.w, r11.x - add r11.x, -cb0[229].z, cb0[229].y - mad r10.w, r10.w, r11.x, cb0[229].z - mul r10.xyz, r10.wwww, r10.xyzx -else - mov r10.xyz, l(0,0,0,0) - mov r9.z, l(0) -endif -mad r10.w, -r3.y, r1.w, l(-0.200000) -if_nz r9.w - mul r11.xyz, r2.xywx, cb0[233].zzzz - mul r12.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy - mad r11.xyz, r11.xyzx, cb0[225].xxxx, r12.xyzx - max r9.w, -r2.y, l(0.000000) - min r9.w, r9.w, l(0.900000) - add r9.w, -r9.w, l(1.000000) - mul_sat r11.w, r10.w, l(-10.000000) - mad r12.x, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r12.x - max r11.w, r11.w, l(0.100000) - min r11.w, r11.w, l(1.000000) - mul r9.w, r9.w, r11.w - mad r11.xyz, r11.xyzx, r9.wwww, r5.xyzx - add r10.xyz, r10.xyzx, r11.xyzx - mul r11.xyz, r10.yyyy, cb5[1].xyzx - mad r11.xyz, cb5[0].xyzx, r10.xxxx, r11.xyzx - mad r10.xyz, cb5[2].xyzx, r10.zzzz, r11.xyzx - add r10.xyz, r10.xyzx, cb5[3].xyzx - mad r11.x, r10.x, l(0.500000), cb5[4].x - mad r9.w, r10.y, l(0.500000), l(0.500000) - add r11.z, -r9.w, cb5[4].y - add r10.xy, r11.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r9.w, r10.z, l(0.000488281250) - sample_c_lz_indexable(texture2d)(float,float,float,float) r9.w, r10.xyxx, t9.xxxx, s5, r9.w -else - mov r9.w, l(1.000000) -endif -mov_sat r10.x, r2.y -add r10.y, l(1.000000), -cb0[230].w -mad r10.x, r10.x, r10.y, cb0[230].w -add r10.yz, r5.xxzx, -cb0[44].xxzx -max r10.y, |r10.z|, |r10.y| -mul r10.z, r9.w, r10.x -mul r11.x, l(0.0500000119), cb0[222].w -mad r11.y, -cb0[222].w, l(0.700000), r10.y -div r11.x, l(1.000000, 1.000000, 1.000000, 1.000000), r11.x -mul_sat r11.x, r11.x, r11.y -mad r11.y, r11.x, l(-2.000000), l(3.000000) -mul r11.x, r11.x, r11.x -mul r11.x, r11.x, r11.y -mad r9.w, -r10.x, r9.w, l(1.000000) -mad r9.w, r11.x, r9.w, r10.z -ge r10.z, r1.z, l(0.045000) -and r10.z, r10.z, l(0x3f800000) -mul r10.z, r9.w, r10.z -deriv_rty_coarse r11.xyz, r5.xyzx -deriv_rtx_coarse r12.xyz, r5.zxyz -mul r13.xyz, r11.xyzx, r12.xyzx -mad r11.xyz, r11.zxyz, r12.yzxy, -r13.xyzx -dp3 r11.w, r11.xyzx, r11.xyzx -max r11.w, r11.w, l(1.175494351E-38) -rsq r11.w, r11.w -mul r12.xyz, r11.wwww, r11.xzyx -mov_sat r11.y, r12.x -add r11.z, r11.y, l(-0.988000) -mul_sat r11.z, r11.z, l(1000.012878) -mad r12.w, r11.z, l(-2.000000), l(3.000000) -mul r11.z, r11.z, r11.z -mul r11.z, r11.z, r12.w -add r12.w, |r3.w|, l(-15.000000) -mul_sat r12.w, r12.w, l(0.015000) -add r12.w, -r12.w, l(1.000000) -lt r13.x, l(0.000488281250), cb0[223].y -mad r13.y, cb0[223].z, l(0.300000), l(0.687000) -add r11.y, r11.y, -r13.y -mul_sat r11.y, r11.y, l(-1000.012878) -mad r13.y, r11.y, l(-2.000000), l(3.000000) -mul r11.y, r11.y, r11.y -mul r11.y, r11.y, r13.y -mad r11.x, r11.x, r11.w, l(0.500000) -mul_sat r11.x, r11.x, l(2.500000) -mad r11.w, r11.x, l(-2.000000), l(3.000000) -mul r11.x, r11.x, r11.x -mul r11.x, r11.x, r11.w -mul r11.x, r11.x, r11.y -lt r11.x, l(0.000488281250), r11.x -and r11.x, r11.x, r13.x -if_nz r11.x - mul r11.xy, |r12.yzyy|, |r12.yzyy| - add r11.w, r11.y, r11.x - div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w - mul r11.xy, r11.wwww, r11.xyxx - mul r13.xyz, r12.xzyx, l(0.000000, 1.000000, 0.000000, 0.000000) - mad r13.xyz, r12.yxzy, l(1.000000, 0.000000, 0.000000, 0.000000), -r13.xyzx - dp2 r11.w, r13.xyxx, r13.xyxx - rsq r11.w, r11.w - mul r13.xyz, r11.wwww, r13.xyzx - mul r14.xyz, r12.xzyx, r13.xyzx - mad r14.xyz, r13.zxyz, r12.zyxz, -r14.xyzx - dp3 r11.w, r14.xyzx, r14.xyzx - rsq r11.w, r11.w - mul r14.xyz, r11.wwww, r14.xyzx - add r15.xyz, r5.xyzx, r5.xyzx - round_ni r15.xyz, r15.xyzx - add r15.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - add r13.zw, r15.yyyy, r15.xxxz - dp2 r11.w, r13.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r11.w, null, r11.w - mul r11.w, r11.w, l(43758.546875) - frc r11.w, r11.w - lt r13.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.zzzy - lt r15.xy, r12.zyzz, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r13.zw, r13.zzzw, -r15.xxxy - itof r13.zw, r13.zzzw - mul r15.xy, r5.xzxx, r13.zwzz - mul r13.z, r9.z, r11.w - add r13.w, -r11.w, l(1.000000) - mad r13.w, r13.w, l(0.700000), l(0.300000) - mul r16.xy, r13.zzzz, l(3.000000, 6.000000, 0.000000, 0.000000) - mad r13.z, -cb0[223].x, r13.w, r16.x - frc r17.x, r13.z - mad r13.z, cb0[223].x, l(-0.300000), r16.y - frc r17.y, r13.z - mul r11.w, r11.w, l(5.000000) - round_ni r11.w, r11.w - add r16.x, r11.w, l(1.000000) - mul r16.y, r5.y, r16.x - mov r5.w, l(0.100000) - mul r13.zw, r5.yyyw, r16.xxxy - frc r13.zw, r13.zzzw - add r16.xy, r17.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - add r16.xy, r13.zwzz, -r16.xyxx - add r16.xy, r16.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) - mul_sat r16.xy, r16.xyxx, l(5.00000048, 5.00000048, 0.000000, 0.000000) - mad r16.zw, r16.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) - mul r16.xy, r16.xyxx, r16.xyxx - mul r16.xy, r16.xyxx, r16.zwzz - add r16.zw, -r13.zzzw, r17.xxxy - max r16.xy, r16.zwzz, r16.xyxx - add r17.zw, -r17.xxxy, r13.zzzw - add r17.zw, r17.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) - mul r17.zw, r17.zzzw, l(0.000000, 0.000000, 5.00000048, 5.00000048) - max r17.zw, r17.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r18.xy, r17.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) - mul r17.zw, r17.zzzw, r17.zzzw - mul r17.zw, r17.zzzw, r18.xxxy - add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - max r16.zw, r16.zzzw, r17.zzzw - ge r13.zw, r13.zzzw, r17.xxxy - and r13.zw, r13.zzzw, l(0, 0, 0x3f800000, 0x3f800000) - add r16.zw, -r16.xxxy, r16.zzzw - mad r13.zw, r13.zzzw, r16.zzzw, r16.xxxy - mad r11.w, r13.z, r13.z, l(-0.400000) - mul_sat r11.w, r11.w, l(1.66666663) - mad r13.z, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r13.z - mad r13.z, r13.w, l(2.000000), l(-1.000000) - mul r16.x, r11.w, l(0.010000) - mul r16.y, r13.z, r16.x - mad r17.x, r9.z, l(0.100000), r16.y - mul r16.x, r11.w, r16.x - mad r16.x, r16.x, r13.z, r9.z - mul r17.y, r9.z, r16.x - mov r15.z, r5.y - mad r16.xy, r15.yzyy, cb0[224].xyxx, r17.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r16.xyxx, t11.xyzw, s2, cb0[108].x - mov r15.w, -r15.x - mad r15.xy, r15.wzww, cb0[224].xyxx, r17.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r15.xyzw, r15.xyxx, t11.xyzw, s2, cb0[108].x - mul r15.xyzw, r11.yyyy, r15.xyzw - mad r15.xyzw, r16.xyzw, r11.xxxx, r15.xyzw - mad r11.xy, r15.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mad r9.z, r11.w, l(2.000000), l(-1.000000) - mad_sat r9.z, r9.z, l(0.800000), r13.w - mad r13.w, -r15.w, l(0.500000), l(1.000000) - mad r9.z, r9.z, r13.w, l(-0.700000) - mul_sat r9.z, r9.z, l(3.33333325) - mad r13.w, r9.z, l(-2.000000), l(3.000000) - mul r9.z, r9.z, r9.z - mul r9.z, r9.z, r13.w - mul r13.z, r13.z, r15.w - mad_sat r11.w, r13.z, l(0.500000), r11.w - mad r11.w, r11.w, l(0.500000), l(0.100000) - max r9.z, r9.z, r11.w - add r11.w, -r9.z, l(1.000000) - max r11.w, r11.w, l(0.000000) - mul r13.z, r11.w, r11.w - mul r13.z, r13.z, r13.z - mul r11.w, r11.w, r13.z - ge r11.w, r15.z, r11.w - and r11.w, r11.w, l(0x3f800000) - mad r9.z, r9.z, l(0.700000), l(0.200000018) - mad r9.z, r11.w, r9.z, l(0.100000) - mul r9.z, r15.z, r9.z - mul r9.z, r9.z, cb0[223].y - mul r9.z, r9.z, l(0.330000) - mul r11.w, r10.z, cb0[222].x - mul r11.w, r12.w, r11.w - mul r9.z, r9.z, r11.w - dp2 r11.w, r11.xyxx, r11.xyxx - min r11.w, r11.w, l(1.000000) - add r11.w, -r11.w, l(1.000000) - sqrt r11.w, r11.w - max r11.w, r11.w, l(0.000488281250) - mul_sat r13.z, r9.z, l(10.000000) - mad r13.w, r13.z, l(-2.000000), l(3.000000) - mul r13.z, r13.z, r13.z - mul r13.z, r13.z, r13.w - mul r13.z, r13.z, cb0[223].y - mul r15.xy, r11.xyxx, r13.zzzz - add r11.x, l(-1.500000), cb0[223].y - mul_sat r11.x, r11.x, l(0.666666687) - mad r11.y, r11.x, l(-2.000000), l(3.000000) - mul r11.x, r11.x, r11.x - mul r11.x, r11.x, r11.y - mul r11.y, r11.x, l(-0.200000) - mad r11.x, -r11.x, l(-0.200000), r11.w - mad r15.z, r9.z, r11.x, r11.y - dp3 r11.x, r15.xyzx, r15.xyzx - max r11.x, r11.x, l(1.175494351E-38) - rsq r11.x, r11.x - mul r11.xyw, r11.xxxx, r15.xyxz - mov r15.x, r13.y - mov r15.y, r14.x - mov r15.z, r12.y - dp3 r15.x, r15.xyzx, r11.xywx - mov r14.w, r12.x - dp2 r15.y, r14.ywyy, r11.ywyy - mov r12.x, r13.x - mov r12.y, r14.z - dp3 r15.z, r12.xyzx, r11.xywx - mad r11.xyw, -r3.xyxz, r1.wwww, r15.xyxz - mad r13.xyz, r9.zzzz, r11.xywx, r2.xywx - mul r9.z, r9.z, cb0[223].y - mul r9.z, r9.z, l(0.330000) -else - mov r13.xyz, r2.xywx - mov r9.z, l(0) -endif -lt r11.xy, l(0.000488281250, 0.000488281250, 0.000000, 0.000000), cb0[227].ywyy -or r11.x, r11.y, r11.x -lt r11.y, l(0.000488281250), r11.z -and r11.x, r11.y, r11.x -if_nz r11.x - mul r11.xyw, r2.ywyx, l(1.000000, 0.000000, 0.000000, 0.000000) - mad r11.xyw, r2.xyxw, l(0.000000, 0.000000, 0.000000, 1.000000), -r11.xyxw - dp2 r12.x, r11.xwxx, r11.xwxx - rsq r12.x, r12.x - mul r11.xyw, r11.xyxw, r12.xxxx - mul r12.xyz, r2.ywxy, r11.xywx - mad r12.xyz, r11.wxyw, r2.wxyw, -r12.xyzx - dp3 r11.y, r12.xyzx, r12.xyzx - rsq r11.y, r11.y - mul r14.xyz, r11.yyyy, r12.xzyx - mul r12.xy, -r5.xzxx, cb0[228].xyxx - frc r15.xy, r12.xyxx - round_ni r12.xy, r12.xyxx - dp2 r11.y, r12.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r11.y, null, r11.y - mul r11.y, r11.y, l(43758.546875) - frc r11.y, r11.y - add r12.x, r11.y, cb0[227].x - frc r12.x, r12.x - mul r12.y, cb0[228].z, cb0[228].z - mul r12.x, r12.y, r12.x - round_ni r12.x, r12.x - div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[228].z - mad r15.zw, -r5.xxxz, cb0[228].xxxy, cb0[227].zzzz - sample_b_indexable(texture2d)(float,float,float,float) r16.xy, r15.zwzz, t12.zwxy, s2, cb0[108].x - mad r15.zw, -r5.xxxz, cb0[228].xxxy, -cb0[227].zzzz - sample_b_indexable(texture2d)(float,float,float,float) r16.zw, r15.zwzz, t12.xyzw, s2, cb0[108].x - mul r16.xyzw, r16.xyzw, cb0[227].wwww - mad r16.xyzw, r16.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -cb0[227].wwww - ge r11.y, l(0.500000), r11.y - and r11.y, r11.y, l(0x3f800000) - add r15.zw, -r15.xxxy, r15.yyyx - mad r15.xy, r11.yyyy, r15.zwzz, r15.xyxx - div r11.y, r12.x, cb0[228].z - ge r12.z, r11.y, -r11.y - frc r11.y, |r11.y| - movc r11.y, r12.z, r11.y, -r11.y - mul r11.y, r11.y, cb0[228].z - mul r17.x, r11.y, r12.y - add r15.zw, l(0.000000, 0.000000, -0.050000, -1.000000), cb0[228].wwwz - mul r11.y, r12.y, r12.x - round_ni r11.y, r11.y - add r11.y, -r11.y, r15.w - mul r17.y, r11.y, r12.y - mad r12.xy, r15.xyxx, r12.yyyy, r17.xyxx - frc r12.xy, r12.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r12.xy, r12.xyxx, t12.xyzw, s1, cb0[108].x - mul r12.xy, r12.xyxx, cb0[227].yyyy - mad r12.xy, r12.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[227].yyyy - add r15.xy, r16.zwzz, r16.xyxx - add r12.xy, r12.xyxx, r15.xyxx - dp2 r11.y, r12.xyxx, r12.xyxx - min r11.y, r11.y, l(1.000000) - add r11.y, -r11.y, l(1.000000) - sqrt r11.y, r11.y - max r12.z, r11.y, l(0.000488281250) - dp3 r11.y, r12.xyzx, r12.xyzx - rsq r11.y, r11.y - mul r12.xyz, r11.yyyy, r12.xyzx - mov r14.w, r2.x - dp2 r16.x, r14.xwxx, r12.yzyy - mov r17.x, r11.w - mov r17.y, r14.z - mov r17.z, r2.y - dp3 r16.y, r17.xyzx, r12.xyzx - mov r14.x, r11.x - mov r14.z, r2.w - dp3 r16.z, r14.xyzx, r12.xyzx - mul r10.z, r10.z, cb0[222].x - mul r10.z, r11.z, r10.z - max r11.x, l(0.000488281250), cb0[228].w - mov_sat r15.z, r15.z - add r11.y, -r11.x, r15.z - add r11.x, r2.z, -r11.x - div r11.y, l(1.000000, 1.000000, 1.000000, 1.000000), r11.y - mul_sat r11.x, r11.y, r11.x - mad r11.y, r11.x, l(-2.000000), l(3.000000) - mul r11.x, r11.x, r11.x - mul r11.x, r11.x, r11.y - mul r10.z, r10.z, r11.x - mul r10.z, r12.w, r10.z - mad r3.xyz, -r3.xyzx, r1.wwww, r16.xyzx - mad r13.xyz, r10.zzzz, r3.xyzx, r2.xywx -endif -min r1.w, r9.y, r9.x -mul r3.x, r10.x, cb0[230].z -mad r3.y, -cb0[230].z, r10.x, l(1.000000) -mad r3.x, r9.w, r3.y, r3.x -mad r3.y, cb0[230].x, cb0[222].w, -cb0[222].w -add r3.z, r10.y, -cb0[222].w -div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y -mul_sat r3.y, r3.y, r3.z -mad r3.z, r3.y, l(-2.000000), l(3.000000) -mul r3.y, r3.y, r3.y -mul r3.y, r3.y, r3.z -add r3.z, -r3.x, cb0[230].y -mad r3.x, r3.y, r3.z, r3.x -add r3.x, -r3.x, l(1.000000) -mul r3.y, r3.x, r9.x -add r1.z, r1.z, l(-0.050000) -mul_sat r1.z, r1.z, l(1.052600) -add r3.z, -r2.z, l(1.000000) -mad_sat r9.w, r3.z, cb0[222].z, cb0[222].y -mad_sat r9.w, r9.z, cb0[224].z, r9.w -add r10.x, -r9.w, l(1.000000) -mad r9.w, r1.x, r10.x, r9.w -mul_sat r10.x, r10.w, l(3.33333325) -mad r10.y, r10.x, l(-2.000000), l(3.000000) -mul r10.x, r10.x, r10.x -mad r10.x, -r10.y, r10.x, l(1.000000) -mul r10.y, r9.w, cb0[222].x -add r10.z, -r1.x, l(1.000000) -mul r10.y, r10.z, r10.y -mul r10.y, r10.x, r10.y -mad r10.y, r10.y, l(-0.750000), l(1.000000) -mad r9.w, r9.w, l(-0.299999952), l(0.900000) -sqrt r10.z, r3.z -add r9.w, r9.w, r10.z -add_sat r9.w, r9.w, l(-0.600000) -max r9.w, r3.z, r9.w -min r9.w, r9.w, l(0.990000) -add_sat r10.z, l(2.000000), -cb0[222].x -mul r10.z, r10.z, cb0[222].x -mul r10.x, r10.x, r10.z -mad r3.x, -r9.x, r3.x, l(1.000000) -mul r3.x, r3.x, r10.x -add r9.x, -r3.z, r9.w -mad r3.x, r3.x, r9.x, r3.z -add r3.x, -r3.x, l(1.000000) -mul_sat r3.z, r9.z, l(20.000000) -mad r9.x, r3.z, l(-2.000000), l(3.000000) -mul r3.z, r3.z, r3.z -mul r3.z, r3.z, r9.x -mad r3.z, r3.z, l(-0.900000), l(1.000000) -mul r9.x, r3.z, r3.x -add r9.y, r9.y, l(-1.000000) -mad r11.x, r1.z, r9.y, l(1.000000) -add r11.y, -r1.z, l(1.000000) -movc r9.yz, r8.wwww, r11.xxyx, l(0,1.000000,1.000000,0) -min r1.z, r9.x, r9.y -mad r3.x, r3.x, r3.z, -r1.z -mad r1.z, r1.w, r3.x, r1.z -add r2.z, -r1.z, r2.z -mad r11.w, r3.y, r2.z, r1.z -ld_indexable(texture2d)(float,float,float,float) r9.xyw, r0.xyzz, t28.xywz -min r1.z, r10.y, r9.z -add r2.z, -r1.z, r10.y -mad r1.z, r1.w, r2.z, r1.z -add r1.w, -r1.z, l(1.000000) -mad r1.z, r3.y, r1.w, r1.z -mul r3.xyz, r1.zzzz, r9.xywx -mul r10.xyz, r1.xxxx, r3.xyzx -mad r9.xyz, r9.xywx, r1.zzzz, -r10.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz -dp3 r2.z, r13.xyzx, r8.xyzx -max r10.x, r2.z, l(0.000000) -mul r3.y, r11.w, r11.w -mul r12.x, r10.x, r10.x -mul r12.z, r10.x, r12.x -mul r2.z, r3.y, r3.y -mul r3.z, r3.y, r2.z -mov r10.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r14.x, l(3.327070, 1.000000, 0.000000, 0.000000), r10.xyxx -dp2 r14.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r10.xzxx -mov r3.x, l(1.000000) -dp2 r8.w, r14.xyxx, r3.xyxx -mov r12.yw, l(0,9.044010,0,1.000000) -dp3 r14.x, l(3.596850, -1.367720, 1.000000, 0.000000), r12.xzwx -dp3 r14.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r12.xyzx -mov r15.x, l(5.565890) -mov r15.yz, r12.xxzx -dp3 r14.z, l(1.000000, 19.788601, -20.212299, 0.000000), r15.xyzx -dp3 r9.w, r14.xyzx, r3.xyzx -div r8.w, r8.w, r9.w -dp2 r14.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r10.xwxx -mov r12.x, l(1.296780) -mov r12.y, r10.x -dp2 r14.y, l(1.000000, -0.755907, 0.000000, 0.000000), r12.xyxx -dp2 r9.w, r14.xyxx, r3.xyxx -dp3 r14.x, l(2.923380, 59.418800, 1.000000, 0.000000), r12.yzwy -mov r12.xw, l(20.322500,0,0,121.563004) -dp3 r14.y, l(1.000000, -27.030199, 222.591995, 0.000000), r12.xyzx -dp3 r14.z, l(626.130005, 316.627014, 1.000000, 0.000000), r12.yzwy -dp3 r3.x, r14.xyzx, r3.xyzx -div r3.x, r9.w, r3.x -mad r10.yzw, r1.xxzw, r8.wwww, r3.xxxx -add r3.x, r3.x, r8.w -ld_indexable(texture2d)(float,float,float,float) r12.x, r0.xyzz, t7.xyzw -lt r0.z, l(0.001000), r12.x -if_nz r0.z - dp3 r0.z, -r8.xyzx, r13.xyzx - add r0.z, r0.z, r0.z - mad r14.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx - dp3 r0.z, -cb3[0].xyzx, r14.xyzx - mad r15.xyz, cb3[0].xyzx, r0.zzzz, r14.xyzx - lt r0.z, r0.z, cb3[4].z - dp3 r3.z, r15.xyzx, r15.xyzx - max r3.z, r3.z, l(0.0000610351562) - rsq r3.z, r3.z - mul r15.xyz, r3.zzzz, r15.xyzx - mul r15.xyz, r15.xyzx, cb3[4].yyyy - mad r15.xyz, -cb3[0].xyzx, cb3[4].zzzz, r15.xyzx - dp3 r3.z, r15.xyzx, r15.xyzx - rsq r3.z, r3.z - mul r15.xyz, r3.zzzz, r15.xyzx - movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx - mad r15.xyz, r6.xyzx, r7.wwww, r14.xyzx - dp3 r0.z, r15.xyzx, r15.xyzx - max r0.z, r0.z, l(0.0000610351562) - rsq r0.z, r0.z - mul r15.xyz, r0.zzzz, r15.xyzx - dp3_sat r11.y, r14.xyzx, r13.xyzx - dp3_sat r0.z, r13.xyzx, r15.xyzx - min r11.z, r10.x, l(1.000000) - mad r3.z, r0.z, r2.z, -r0.z - mad r0.z, r3.z, r0.z, l(1.000000) - dp3_sat r3.z, r8.xyzx, r15.xyzx - add r3.z, -r3.z, l(1.000000) - mul r8.w, r3.z, r3.z - mul r8.w, r8.w, r8.w - mul r9.w, r3.z, r8.w - add r12.z, -r11.w, l(1.000000) - mad r12.w, -r12.z, l(0.383026), l(-0.0761947036) - mad r12.w, r12.z, r12.w, l(1.049970) - mad r12.z, r12.z, r12.w, l(0.409255) - min r12.z, r12.z, l(0.999000) - add r12.w, -r12.z, l(1.000000) - add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx - mad r3.z, -r8.w, r3.z, l(1.000000) - mad r16.xyz, r1.xzwx, r3.zzzz, r9.wwww - mul r0.z, r0.z, r0.z - div r0.z, r2.z, r0.z - mad r17.xy, -r11.zyzz, r2.zzzz, r11.zyzz - mad r17.xy, r17.xyxx, r11.zyzz, r2.zzzz - sqrt r17.xy, r17.xyxx - mul r17.xy, r11.yzyy, r17.xyxx - add r2.z, r17.y, r17.x - add r2.z, r2.z, l(0.000100) - div r2.z, l(0.500000), r2.z - mul r0.z, r0.z, r2.z - mul r16.xyz, r0.zzzz, r16.xyzx - min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r17.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r17.xyxx, t13.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r2.z, r17.zwzz, t13.yzxw, s1, l(0.000000) - mul r0.z, r0.z, r2.z - mul r0.z, r12.z, r0.z - div r0.z, r0.z, r12.w - mul r17.xyz, r15.xyzx, r15.xyzx - mul r17.xyz, r0.zzzz, r17.xyzx - mad r15.xyz, -r15.xyzx, r12.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r15.xyz, r17.xyzx, r15.xyzx - add r15.xyz, r15.xyzx, r16.xyzx - mul r15.xyz, r15.xyzx, cb3[4].xxxx - max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r15.xyz, r15.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - dp3_sat r0.z, r14.xyzx, r2.xywx - mul r14.xyz, r0.zzzz, r9.xyzx - mad r14.xyz, r15.xyzx, r11.yyyy, r14.xyzx - mul r14.xyz, r14.xyzx, cb3[1].xyzx - mov r12.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r12.yzw, r12.xyxx, t8.wxyz, s1, cb0[108].x - add r0.z, -r12.x, l(1.000000) - mad r12.xyz, r14.xyzx, r12.yzwy, -r14.xyzx - mad r12.xyz, r0.zzzz, r12.xyzx, r14.xyzx - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t14.yzxw, s1, l(0.000000) - ge r38.x, cb13[12].z, l(1.000000) - mad_sat r38.y, r0.z, l(2.000000), l(-1.000000) - mad_sat r38.z, r0.z, l(4.000000), l(-3.000000) - mad_sat r38.w, r6.w, l(0.050000), l(-1.500000) - add r38.z, r38.z, -r38.y - mad r38.y, r38.w, r38.z, r38.y - movc r0.z, r38.x, r38.y, r0.z - min r0.z, r0.z, l(1.000000) - mul r12.xyz, r0.zzzz, r12.xyzx -else - mov r12.xyz, l(0,0,0,0) -endif -mul r11.yz, r4.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) -round_ni r11.yz, r11.yyzy -mad r0.z, r11.z, cb2[1].y, r11.y -mul r0.z, r0.z, l(8.000000) -ftoi r0.z, r0.z -mad r2.z, -cb0[85].y, cb2[2].w, |r3.w| -round_ni r2.z, r2.z -add r3.z, l(-1.000000), cb2[1].w -max r8.w, r2.z, l(0.000000) -min r3.z, r3.z, r8.w -mul r8.w, r3.z, l(8.000000) -ftoi r8.w, r8.w -ge r2.z, r3.z, r2.z -iadd r3.z, r8.w, cb0[110].y -dp3 r8.w, -r8.xyzx, r13.xyzx -add r8.w, r8.w, r8.w -mad r14.xyz, r13.xyzx, -r8.wwww, -r8.xyzx -min r11.x, r10.x, l(1.000000) -add r8.w, -r11.w, l(1.000000) -mad r9.w, -r8.w, l(0.383026), l(-0.0761947036) -mad r9.w, r8.w, r9.w, l(1.049970) -mad r8.w, r8.w, r9.w, l(0.409255) -min r8.w, r8.w, l(0.999000) -add r9.w, -r8.w, l(1.000000) -add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx -mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r10.x, r11.yzyy, t13.xyzw, s1, l(0.000000) -mad r16.xyz, -r15.xyzx, r9.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r15.xyz, r15.xyzx, r15.xyzx -mov r17.w, l(1.000000) -mov r18.y, l(1.000000) -mov r19.z, r11.w -mov r20.xyz, l(0,0,0,0) -mov r11.yz, l(0,1.000000,0,0) -loop - ilt r12.w, l(7), r11.z - breakc_nz r12.w - iadd r12.w, r0.z, r11.z - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx - iadd r14.w, r3.z, r11.z - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r14.w, r14.w, l(0), t0.xxxx - and r12.w, r12.w, r14.w - and r12.w, r2.z, r12.w - ishl r14.w, r11.z, l(5) - mov r21.xyz, l(0,0,0,0) - mov r15.w, r11.y - mov r16.w, r12.w - loop - breakc_z r16.w - firstbit_lo r18.z, r16.w - ishl r18.w, l(1), r18.z - xor r18.w, r16.w, r18.w - iadd r18.z, r14.w, r18.z - bfi r22.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r18.zzzz, l(1, 3, 5, 6) - bfi r19.w, l(29), l(3), r18.z, l(7) - ftou r20.w, cb3[r22.z + 6].w - ieq r20.w, r20.w, l(1) - if_nz r20.w - add r17.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx - and r23.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.z + 6].xzyx - and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.w + 6].yxzy - ushr r25.xyz, cb3[r22.z + 6].xzyx, l(16, 16, 16, 0) - ushr r26.xyz, cb3[r22.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r23.xyz, r23.xyzx - f16tof32 r24.xyz, r24.xyzx - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyw, r26.yxyz - mov r27.xz, r23.xxzx - mov r27.yw, r25.xxxz - dp4 r20.w, r17.xyzw, r27.xyzw - mov r25.x, r23.y - mov r25.z, r24.y - mov r25.w, r26.x - dp4 r21.w, r17.xyzw, r25.xyzw - mov r26.xz, r24.xxzx - dp4 r17.x, r17.xyzw, r26.xyzw - max r17.y, |r20.w|, |r21.w| - max r17.x, |r17.x|, r17.y - mad r17.y, cb3[r19.w + 6].x, l(0.500000), l(0.500000) - add r17.x, -r17.y, r17.x - mad r17.y, -cb3[r19.w + 6].x, l(0.500000), l(0.500000) - div_sat r17.x, r17.x, r17.y - add r17.x, -r17.x, l(1.000000) - mul r17.x, r17.x, r17.x - else - mov r17.x, l(1.000000) - endif - lt r17.y, l(0.500000), cb3[r22.y + 6].z - lt r17.z, r17.x, l(0.001000) - or r17.z, r17.y, r17.z - if_nz r17.z - mov r16.w, r18.w - continue - endif - ishl r17.z, r18.z, l(3) - bfi r18.z, l(29), l(3), r18.z, l(2) - lt r20.w, cb3[r17.z + 6].w, l(1.500000) - if_nz r20.w - mad r20.w, cb3[r18.z + 6].y, l(0.500000), l(0.500000) - add r23.x, r20.w, -|cb3[r18.z + 6].x| - add r23.y, -r23.x, cb3[r18.z + 6].y - add r20.w, -|r23.x|, l(1.000000) - add r20.w, -|r23.y|, r20.w - ge r21.w, cb3[r18.z + 6].x, l(0.000000) - max r22.z, r20.w, l(0.000488281250) - movc r23.z, r21.w, r22.z, -r22.z - dp3 r22.z, r23.xyzx, r23.xyzx - rsq r22.z, r22.z - mul r24.xyz, r22.zzzz, r23.xyzx - add r25.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx - dp3 r22.z, r25.xyzx, r25.xyzx - rsq r23.z, r22.z - mul r26.xyz, r23.zzzz, r25.xyzx - dp3_sat r18.x, r13.xyzx, r26.xyzx - ftoi r24.w, cb3[r19.w + 6].w - mul r27.xyz, r24.xyzx, cb3[r18.z + 6].zzzz - mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - ftou r25.w, cb3[r17.z + 6].w - and r25.w, r25.w, l(1) - ieq r26.w, r25.w, l(0) - not r26.w, r26.w - lt r27.w, l(0.000000), cb3[r18.z + 6].z - and r26.w, r26.w, r27.w - dp3 r27.w, r28.xyzx, r28.xyzx - sqrt r27.w, r27.w - dp3 r28.w, r29.xyzx, r29.xyzx - sqrt r28.w, r28.w - dp3 r29.w, r13.xyzx, r28.xyzx - div r29.w, r29.w, r27.w - dp3 r30.x, r13.xyzx, r29.xyzx - div r30.x, r30.x, r28.w - add r29.w, r29.w, r30.x - mul_sat r30.x, r29.w, l(0.500000) - dp3 r29.x, r28.xyzx, r29.xyzx - mad r27.w, r27.w, r28.w, r29.x - mad r27.w, r27.w, l(0.500000), l(1.000000) - div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r27.w - movc r19.xy, r26.wwww, r30.xyxx, r18.xyxx - lt r27.w, cb3[r22.w + 6].w, l(0.000000) - if_nz r27.w - mul r27.w, cb3[r22.x + 6].w, cb3[r22.x + 6].w - mul r27.w, r22.z, r27.w - mad r27.w, -r27.w, r27.w, l(1.000000) - max r27.w, r27.w, l(0.000000) - add r22.z, r22.z, l(1.000000) - div r22.z, l(1.000000, 1.000000, 1.000000, 1.000000), r22.z - and r28.w, r26.w, l(0x3f800000) - add r29.x, r19.y, -r22.z - mad r22.z, r28.w, r29.x, r22.z - mul r27.w, r27.w, r27.w - mul r22.z, r22.z, r27.w - else - mul r29.xyz, r25.xyzx, cb3[r22.x + 6].wwww - dp3 r27.w, r29.xyzx, r29.xyzx - min r27.w, r27.w, l(1.000000) - add r27.w, -r27.w, l(1.000000) - log r27.w, r27.w - mul r27.w, r27.w, cb3[r22.w + 6].w - exp r27.w, r27.w - mul r22.z, r19.y, r27.w - endif - dp3 r19.y, r26.xyzx, -r24.xyzx - add r19.y, r19.y, -cb3[r18.z + 6].z - mul_sat r19.y, r19.y, cb3[r18.z + 6].w - mul r19.y, r19.y, r19.y - movc r19.y, r25.w, l(1.000000), r19.y - mul r19.y, r19.y, r22.z - not r22.z, r26.w - ige r24.x, r24.w, l(0) - and r22.z, r22.z, r24.x - if_nz r22.z - if_z r25.w - ishl r22.z, r24.w, l(2) - mul r24.xyz, r5.yyyy, cb6[r22.z + 33].xywx - mad r24.xyz, cb6[r22.z + 32].xywx, r5.xxxx, r24.xyzx - mad r24.xyz, cb6[r22.z + 34].xywx, r5.zzzz, r24.xyzx - add r24.xyz, r24.xyzx, cb6[r22.z + 35].xywx - div_sat r24.xy, r24.xyxx, r24.zzzz - mad r24.xy, r24.xyxx, cb6[r24.w + 0].zwzz, cb6[r24.w + 0].xyxx - else - ishl r22.z, r24.w, l(2) - dp3 r29.x, -r25.xyzx, cb6[r22.z + 32].xyzx - dp3 r29.y, -r25.xyzx, cb6[r22.z + 33].xyzx - dp3 r29.z, -r25.xyzx, cb6[r22.z + 34].xyzx - lt r22.z, |r29.x|, |r29.y| - and r22.z, r22.z, l(1) - dp2 r24.z, |r29.xyxx|, icb[r22.z + 0].xyxx - lt r24.z, r24.z, |r29.z| - movc r22.z, r24.z, l(2), r22.z - dp3 r24.z, r29.xyzx, icb[r22.z + 0].xyzx - lt r24.z, r24.z, l(0.000000) - bfi r22.z, l(31), l(1), r22.z, r24.z - ushr r24.z, r22.z, l(1) - dp3 r24.z, r29.xyzx, icb[r24.z + 0].xyzx - div r27.w, l(0.000244140625), cb6[r24.w + 0].w - add r27.w, -r27.w, l(0.500000) - utof r28.w, r22.z - ult r29.w, r22.z, l(2) - and r29.w, r29.w, l(2) - dp2 r29.x, r29.xzxx, icb[r29.w + 0].xzxx - mul r29.x, r29.x, icb[r22.z + 4].z - div r29.x, r29.x, |r24.z| - mad r28.w, r29.x, r27.w, r28.w - add r28.w, r28.w, l(0.500000) - mul_sat r30.x, r28.w, l(0.166666672) - iadd r28.w, l(-1), icb[r22.z + 4].y - dp2 r28.w, r29.yzyy, icb[r28.w + 0].xyxx - mul r22.z, r28.w, icb[r22.z + 4].w - div r22.z, r22.z, |r24.z| - mad_sat r30.y, -r22.z, r27.w, l(0.500000) - mad r24.xy, r30.xyxx, cb6[r24.w + 0].zwzz, cb6[r24.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r22.z, r24.xyxx, t15.yzxw, s1, l(0.000000) - mul r19.y, r19.y, r22.z - endif - lt r22.z, l(0.000000), r19.y - if_nz r22.z - if_z r25.w - ftoi r24.x, cb3[r22.y + 6].x - else - add r24.yzw, r5.xxyz, -cb3[r22.x + 6].xxyz - lt r29.xyz, |r24.zwwz|, |r24.yyzy| - and r25.w, r29.y, r29.x - lt r24.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r24.yyzw - ushr r27.w, cb3[r18.z + 6].w, l(24) - ubfe r29.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r18.z + 6].wwww - movc r24.y, r24.y, r27.w, r29.x - and r27.w, l(255), cb3[r18.z + 6].w - movc r24.z, r24.z, r29.y, r27.w - ubfe r27.w, l(8), l(8), cb3[r22.y + 6].x - and r28.w, l(255), cb3[r22.y + 6].x - movc r24.w, r24.w, r27.w, r28.w - movc r24.z, r29.z, r24.z, r24.w - movc r24.y, r25.w, r24.y, r24.z - ilt r24.z, r24.y, l(80) - movc r24.x, r24.z, r24.y, l(-1) - endif - ishl r24.y, r24.x, l(2) - mad r29.xyz, r26.xyzx, cb4[r24.x + 288].xxxx, r5.xyzx - mul r24.z, l(5.000000), cb4[r24.x + 288].y - mad r29.xyz, r13.xyzx, r24.zzzz, r29.xyzx - mul r30.xyzw, r29.yyyy, cb4[r24.y + 65].xyzw - mad r30.xyzw, cb4[r24.y + 64].xyzw, r29.xxxx, r30.xyzw - mad r29.xyzw, cb4[r24.y + 66].xyzw, r29.zzzz, r30.xyzw - add r29.xyzw, r29.xyzw, cb4[r24.y + 67].xyzw - div r24.yzw, r29.xxyz, r29.wwww - ge r29.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.yzwy - ge r30.xyz, r24.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) - add r31.xy, -cb4[r24.x + 344].xyxx, cb4[r24.x + 344].zwzz - mad r24.yz, r24.yyzy, r31.xxyx, cb4[r24.x + 344].xxyx - mad r31.xy, r24.yzyy, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r31.xy, r31.xyxx - mad r24.yz, r24.yyzy, cb4[400].zzwz, -r31.xxyx - add r32.xyzw, r24.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r33.xyzw, r32.xxzz, r32.xxzz - add r31.zw, -r24.yyyz, l(0.000000, 0.000000, 1.000000, 1.000000) - min r32.xz, r24.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r34.xy, r24.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r35.xy, r31.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r34.xy, -r34.xyxx, r34.xyxx, r32.ywyy - add r34.xy, r34.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r34.xy, r34.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r33.xz, r33.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r24.yz, r33.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r24.yyzy - mul r36.xy, r24.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r24.yz, -r32.xxzx, r32.xxzx, r31.zzwz - add r24.yz, r24.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r37.xy, r24.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r24.yz, r32.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r36.z, r37.x - mov r36.w, r24.y - mov r35.z, r34.x - mov r35.w, r33.x - add r32.xyzw, r35.zwxz, r36.zwxz - mov r37.z, r36.y - mov r37.w, r24.z - mov r34.z, r35.y - mov r34.w, r33.z - add r33.xyz, r34.zywz, r37.zywz - div r35.xyz, r35.xzwx, r32.zwyz - add r35.xyz, r35.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r35.xyz, r35.yxzy, cb4[400].xxxx - div r34.xyz, r34.zywz, r33.xyzx - add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r34.xyz, r34.xyzx, cb4[400].yyyy - mov r35.w, r34.x - mad r36.xyzw, r31.xyxy, cb4[400].xyxy, r35.ywxw - mad r24.yz, r31.xxyx, cb4[400].xxyx, r35.zzwz - mov r34.w, r35.y - mov r35.yw, r34.yyyz - mad r37.xyzw, r31.xyxy, cb4[400].xyxy, r35.xyzy - mad r34.xyzw, r31.xyxy, cb4[400].xyxy, r34.wywz - mad r31.xyzw, r31.xyxy, cb4[400].xyxy, r35.xwzw - mul r35.xyzw, r32.zwyz, r33.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r36.xyxx, t6.xxxx, s4, r24.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r27.w, r36.zwzz, t6.xxxx, s4, r24.w - mul r27.w, r27.w, r35.y - mad r25.w, r35.x, r25.w, r27.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r24.yzyy, t6.xxxx, s4, r24.w - mad r24.y, r35.z, r24.y, r25.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r34.xyxx, t6.xxxx, s4, r24.w - mad r24.y, r35.w, r24.z, r24.y - mul r35.xyzw, r32.xyzw, r33.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r37.xyxx, t6.xxxx, s4, r24.w - mad r24.y, r35.x, r24.z, r24.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r37.zwzz, t6.xxxx, s4, r24.w - mad r24.y, r35.y, r24.z, r24.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r34.zwzz, t6.xxxx, s4, r24.w - mad r24.y, r35.z, r24.z, r24.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r31.xyxx, t6.xxxx, s4, r24.w - mad r24.y, r35.w, r24.z, r24.y - ige r24.z, r24.x, l(0) - or r29.xyz, r29.xyzx, r30.xyzx - or r25.w, r29.y, r29.x - or r25.w, r29.z, r25.w - and r27.w, r24.w, l(0x7fffffff) - ult r27.w, l(0x7f800000), r27.w - or r25.w, r25.w, r27.w - mul r27.w, r32.y, r33.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.w, r31.zwzz, t6.xxxx, s4, r24.w - mad r24.y, r27.w, r24.w, r24.y - add r24.y, r24.y, l(-1.000000) - mad r24.x, cb4[r24.x + 288].w, r24.y, l(1.000000) - movc r24.x, r25.w, l(1.000000), r24.x - movc r24.x, r24.z, r24.x, l(1.000000) - else - mov r24.x, l(1.000000) - endif - if_nz r26.w - dp3 r24.y, r14.xyzx, r27.xyzx - mul_sat r24.z, r23.z, cb3[r18.z + 6].z - mad r24.z, r24.z, l(0.500000), r3.y - min r24.z, r24.z, l(1.000000) - div r24.z, r3.y, r24.z - mad r29.xyz, r14.xyzx, r24.yyyy, -r27.xyzx - dp3 r24.w, r28.xyzx, r29.xyzx - mul r24.y, r24.y, r24.y - mad r24.y, cb3[r18.z + 6].z, cb3[r18.z + 6].z, -r24.y - div_sat r24.y, r24.w, r24.y - mad r27.xyz, r27.xyzx, r24.yyyy, r28.xyzx - dp3 r24.y, r27.xyzx, r27.xyzx - rsq r24.y, r24.y - mul r26.xyz, r24.yyyy, r27.xyzx - else - mov r24.z, l(1.000000) - endif - if_nz r22.z - mul_sat r22.z, r23.z, cb3[r19.w + 6].y - mad r26.xyz, r6.xyzx, r7.wwww, r26.xyzx - dp3 r23.z, r26.xyzx, r26.xyzx - max r23.z, r23.z, l(0.0000610351562) - rsq r23.z, r23.z - mul r26.xyz, r23.zzzz, r26.xyzx - max r20.w, r20.w, l(5.960464478E-08) - movc r23.w, r21.w, r20.w, -r20.w - dp3 r20.w, r23.xywx, r23.xywx - rsq r20.w, r20.w - mul r23.xyz, r20.wwww, r23.xywx - mul r23.xyz, r23.xyzx, cb3[r18.z + 6].zzzz - mad r27.xyz, -r23.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - mad r23.xyz, r23.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - dp3 r20.w, r13.xyzx, r27.xyzx - dp3 r21.w, r27.xyzx, r27.xyzx - sqrt r21.w, r21.w - div r20.w, r20.w, r21.w - dp3 r21.w, r13.xyzx, r23.xyzx - dp3 r23.x, r23.xyzx, r23.xyzx - sqrt r23.x, r23.x - div r21.w, r21.w, r23.x - add r20.w, r20.w, r21.w - mul_sat r20.w, r20.w, l(0.500000) - movc r18.x, r26.w, r20.w, r18.x - dp3_sat r20.w, r13.xyzx, r26.xyzx - dp3_sat r21.w, r8.xyzx, r26.xyzx - lt r23.x, l(0.000000), r22.z - mul r22.z, r22.z, r22.z - mad r23.y, r21.w, l(3.600000), l(0.400000) - div r22.z, r22.z, r23.y - mad r22.z, r11.w, r11.w, r22.z - min r22.z, r22.z, l(1.000000) - movc r22.z, r23.x, r22.z, r3.y - mul r22.z, r22.z, r22.z - mad r23.x, r20.w, r22.z, -r20.w - mad r20.w, r23.x, r20.w, l(1.000000) - add r21.w, -r21.w, l(1.000000) - mul r23.x, r21.w, r21.w - mul r23.x, r23.x, r23.x - mul r23.y, r21.w, r23.x - mad r21.w, -r23.x, r21.w, l(1.000000) - mad r23.xyz, r1.xzwx, r21.wwww, r23.yyyy - mul r20.w, r20.w, r20.w - div r20.w, r22.z, r20.w - mul r20.w, r24.z, r20.w - mad r21.w, -r11.x, r22.z, r11.x - mad r21.w, r21.w, r11.x, r22.z - sqrt r21.w, r21.w - mad r23.w, -r19.x, r22.z, r19.x - mad r22.z, r23.w, r19.x, r22.z - sqrt r22.z, r22.z - mul r22.z, r11.x, r22.z - mad r21.w, r19.x, r21.w, r22.z - add r21.w, r21.w, l(0.000100) - div r21.w, l(0.500000), r21.w - mul r20.w, r20.w, r21.w - mul r23.xyz, r20.wwww, r23.xyzx - min r23.xyz, r23.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r24.yz, r19.xxzx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r20.w, r24.yzyy, t13.yzwx, s1, l(0.000000) - mul r20.w, r10.x, r20.w - mul r20.w, r8.w, r20.w - div r20.w, r20.w, r9.w - mul r24.yzw, r15.xxyz, r20.wwww - div r24.yzw, r24.yyzw, r16.xxyz - add r23.xyz, r23.xyzx, r24.yzwy - mul r23.xyz, r23.xyzx, cb3[r19.w + 6].zzzz - max r23.xyz, r23.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r23.xyz, r23.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r24.yzw, r9.xxyz, r18.xxxx - mad r23.xyz, r23.xyzx, r19.xxxx, r24.yzwy - mul r24.yzw, r19.yyyy, cb3[r17.z + 6].xxyz - mul r24.xyz, r24.xxxx, r24.yzwy - mul r24.xyz, r17.xxxx, r24.xyzx - mul r23.xyz, r23.xyzx, r24.xyzx - else - mov r23.xyz, l(0,0,0,0) - endif - else - if_z r17.y - mad r17.x, cb3[r18.z + 6].y, l(0.500000), l(0.500000) - add r24.x, r17.x, -|cb3[r18.z + 6].x| - add r24.y, -r24.x, cb3[r18.z + 6].y - add r17.x, -|r24.x|, l(1.000000) - add r17.x, -|r24.y|, r17.x - max r17.x, r17.x, l(0.000488281250) - ge r17.y, cb3[r18.z + 6].x, l(0.000000) - movc r24.z, r17.y, r17.x, -r17.x - dp3 r17.x, r24.xyzx, r24.xyzx - rsq r17.x, r17.x - mul r24.xyz, r17.xxxx, r24.xyzx - add r25.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx - dp3 r17.x, r25.xyzx, r25.xyzx - rsq r17.y, r17.x - mul r26.xyz, r17.yyyy, r25.xyzx - ftoi r17.y, cb3[r19.w + 6].w - mul r19.xyw, r24.xyxz, cb3[r18.z + 6].zzzz - mad r27.xyz, -r19.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - mad r19.xyw, r19.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r25.xyxz - ftou r17.z, cb3[r17.z + 6].w - and r17.z, r17.z, l(1) - ieq r18.x, r17.z, l(0) - not r18.x, r18.x - lt r20.w, l(0.000000), cb3[r18.z + 6].z - and r18.x, r18.x, r20.w - dp3 r20.w, r27.xyzx, r27.xyzx - sqrt r20.w, r20.w - dp3 r21.w, r19.xywx, r19.xywx - sqrt r21.w, r21.w - dp3 r19.x, r27.xyzx, r19.xywx - mad r19.x, r20.w, r21.w, r19.x - mad r19.x, r19.x, l(0.500000), l(1.000000) - div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x - movc r19.x, r18.x, r19.x, l(1.000000) - lt r19.y, cb3[r22.w + 6].w, l(0.000000) - if_nz r19.y - mul r19.y, cb3[r22.x + 6].w, cb3[r22.x + 6].w - mul r19.y, r17.x, r19.y - mad r19.y, -r19.y, r19.y, l(1.000000) - max r19.y, r19.y, l(0.000000) - add r17.x, r17.x, l(1.000000) - div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x - and r19.w, r18.x, l(0x3f800000) - add r20.w, -r17.x, r19.x - mad r17.x, r19.w, r20.w, r17.x - mul r19.y, r19.y, r19.y - mul r17.x, r17.x, r19.y - else - mul r27.xyz, r25.xyzx, cb3[r22.x + 6].wwww - dp3 r19.y, r27.xyzx, r27.xyzx - min r19.y, r19.y, l(1.000000) - add r19.y, -r19.y, l(1.000000) - log r19.y, r19.y - mul r19.y, r19.y, cb3[r22.w + 6].w - exp r19.y, r19.y - mul r17.x, r19.y, r19.x - endif - dp3 r19.x, r26.xyzx, -r24.xyzx - add r19.x, r19.x, -cb3[r18.z + 6].z - mul_sat r19.x, r19.x, cb3[r18.z + 6].w - mul r19.x, r19.x, r19.x - movc r19.x, r17.z, l(1.000000), r19.x - mul r17.x, r17.x, r19.x - not r18.x, r18.x - ige r19.x, r17.y, l(0) - and r18.x, r18.x, r19.x - if_nz r18.x - if_z r17.z - ishl r18.x, r17.y, l(2) - mul r19.xyw, r5.yyyy, cb6[r18.x + 33].xyxw - mad r19.xyw, cb6[r18.x + 32].xyxw, r5.xxxx, r19.xyxw - mad r19.xyw, cb6[r18.x + 34].xyxw, r5.zzzz, r19.xyxw - add r19.xyw, r19.xyxw, cb6[r18.x + 35].xyxw - div_sat r19.xy, r19.xyxx, r19.wwww - mad r19.xy, r19.xyxx, cb6[r17.y + 0].zwzz, cb6[r17.y + 0].xyxx - else - ishl r18.x, r17.y, l(2) - dp3 r24.x, -r25.xyzx, cb6[r18.x + 32].xyzx - dp3 r24.y, -r25.xyzx, cb6[r18.x + 33].xyzx - dp3 r24.z, -r25.xyzx, cb6[r18.x + 34].xyzx - lt r18.x, |r24.x|, |r24.y| - and r18.x, r18.x, l(1) - dp2 r19.w, |r24.xyxx|, icb[r18.x + 0].xyxx - lt r19.w, r19.w, |r24.z| - movc r18.x, r19.w, l(2), r18.x - dp3 r19.w, r24.xyzx, icb[r18.x + 0].xyzx - lt r19.w, r19.w, l(0.000000) - bfi r18.x, l(31), l(1), r18.x, r19.w - ushr r19.w, r18.x, l(1) - dp3 r19.w, r24.xyzx, icb[r19.w + 0].xyzx - div r20.w, l(0.000244140625), cb6[r17.y + 0].w - add r20.w, -r20.w, l(0.500000) - utof r21.w, r18.x - ult r22.z, r18.x, l(2) - and r22.z, r22.z, l(2) - dp2 r22.z, r24.xzxx, icb[r22.z + 0].xzxx - mul r22.z, r22.z, icb[r18.x + 4].z - div r22.z, r22.z, |r19.w| - mad r21.w, r22.z, r20.w, r21.w - add r21.w, r21.w, l(0.500000) - mul_sat r25.x, r21.w, l(0.166666672) - iadd r21.w, l(-1), icb[r18.x + 4].y - dp2 r21.w, r24.yzyy, icb[r21.w + 0].xyxx - mul r18.x, r21.w, icb[r18.x + 4].w - div r18.x, r18.x, |r19.w| - mad_sat r25.y, -r18.x, r20.w, l(0.500000) - mad r19.xy, r25.xyxx, cb6[r17.y + 0].zwzz, cb6[r17.y + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r17.y, r19.xyxx, t15.yxzw, s1, l(0.000000) - mul r17.x, r17.y, r17.x - endif - lt r17.x, l(0.000000), r17.x - if_nz r17.x - if_z r17.z - ftoi r17.x, cb3[r22.y + 6].x - else - add r19.xyw, r5.xyxz, -cb3[r22.x + 6].xyxz - lt r22.xzw, |r19.yyww|, |r19.xxxy| - and r17.y, r22.z, r22.x - lt r19.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyxw - ushr r17.z, cb3[r18.z + 6].w, l(24) - ubfe r22.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r18.z + 6].wwww - movc r17.z, r19.x, r17.z, r22.x - and r18.x, l(255), cb3[r18.z + 6].w - movc r18.x, r19.y, r22.z, r18.x - ubfe r18.z, l(8), l(8), cb3[r22.y + 6].x - and r19.x, l(255), cb3[r22.y + 6].x - movc r18.z, r19.w, r18.z, r19.x - movc r18.x, r22.w, r18.x, r18.z - movc r17.y, r17.y, r17.z, r18.x - ilt r17.z, r17.y, l(80) - movc r17.x, r17.z, r17.y, l(-1) - endif - ishl r17.y, r17.x, l(2) - mad r19.xyw, r26.xyxz, cb4[r17.x + 288].xxxx, r5.xyxz - mul r17.z, l(5.000000), cb4[r17.x + 288].y - mad r19.xyw, r2.xyxw, r17.zzzz, r19.xyxw - mul r22.xyzw, r19.yyyy, cb4[r17.y + 65].xyzw - mad r22.xyzw, cb4[r17.y + 64].xyzw, r19.xxxx, r22.xyzw - mad r22.xyzw, cb4[r17.y + 66].xyzw, r19.wwww, r22.xyzw - add r22.xyzw, r22.xyzw, cb4[r17.y + 67].xyzw - div r19.xyw, r22.xyxz, r22.wwww - ge r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xywx - ge r24.xyz, r19.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r17.yz, -cb4[r17.x + 344].xxyx, cb4[r17.x + 344].zzwz - mad r17.yz, r19.xxyx, r17.yyzy, cb4[r17.x + 344].xxyx - mad r18.xz, r17.yyzy, cb4[400].zzwz, l(0.500000, 0.000000, 0.500000, 0.000000) - round_ni r18.xz, r18.xxzx - mad r17.yz, r17.yyzy, cb4[400].zzwz, -r18.xxzx - add r25.xyzw, r17.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r26.xyzw, r25.xxzz, r25.xxzz - add r19.xy, -r17.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) - min r25.xz, r17.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r27.xy, r17.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r28.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r27.xy, -r27.xyxx, r27.xyxx, r25.ywyy - add r27.xy, r27.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r27.xy, r27.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r26.xz, r26.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r17.yz, r26.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r17.yyzy - mul r29.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r17.yz, -r25.xxzx, r25.xxzx, r19.xxyx - add r17.yz, r17.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r30.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r17.yz, r25.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r29.z, r30.x - mov r29.w, r17.y - mov r28.z, r27.x - mov r28.w, r26.x - add r25.xyzw, r28.zwxz, r29.zwxz - mov r30.z, r29.y - mov r30.w, r17.z - mov r27.z, r28.y - mov r27.w, r26.z - add r26.xyz, r27.zywz, r30.zywz - div r28.xyz, r28.xzwx, r25.zwyz - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyz, r28.yxzy, cb4[400].xxxx - div r27.xyz, r27.zywz, r26.xyzx - add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r27.xyz, r27.xyzx, cb4[400].yyyy - mov r28.w, r27.x - mad r29.xyzw, r18.xzxz, cb4[400].xyxy, r28.ywxw - mad r17.yz, r18.xxzx, cb4[400].xxyx, r28.zzwz - mov r27.w, r28.y - mov r28.yw, r27.yyyz - mad r30.xyzw, r18.xzxz, cb4[400].xyxy, r28.xyzy - mad r27.xyzw, r18.xzxz, cb4[400].xyxy, r27.wywz - mad r28.xyzw, r18.xzxz, cb4[400].xyxy, r28.xwzw - mul r31.xyzw, r25.zwyz, r26.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r29.xyxx, t6.xxxx, s4, r19.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r29.zwzz, t6.xxxx, s4, r19.w - mul r18.z, r18.z, r31.y - mad r18.x, r31.x, r18.x, r18.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r17.yzyy, t6.xxxx, s4, r19.w - mad r17.y, r31.z, r17.y, r18.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r27.xyxx, t6.xxxx, s4, r19.w - mad r17.y, r31.w, r17.z, r17.y - mul r29.xyzw, r25.xyzw, r26.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r30.xyxx, t6.xxxx, s4, r19.w - mad r17.y, r29.x, r17.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r30.zwzz, t6.xxxx, s4, r19.w - mad r17.y, r29.y, r17.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r27.zwzz, t6.xxxx, s4, r19.w - mad r17.y, r29.z, r17.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r28.xyxx, t6.xxxx, s4, r19.w - mad r17.y, r29.w, r17.z, r17.y - ige r17.z, r17.x, l(0) - or r22.xyz, r22.xyzx, r24.xyzx - or r18.x, r22.y, r22.x - or r18.x, r22.z, r18.x - and r18.z, r19.w, l(0x7fffffff) - ult r18.z, l(0x7f800000), r18.z - or r18.x, r18.z, r18.x - mul r18.z, r25.y, r26.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r28.zwzz, t6.xxxx, s4, r19.w - mad r17.y, r18.z, r19.x, r17.y - add r17.y, r17.y, l(-1.000000) - mad r17.x, cb4[r17.x + 288].w, r17.y, l(1.000000) - movc r17.x, r18.x, l(1.000000), r17.x - movc r17.x, r17.z, r17.x, l(1.000000) - else - mov r17.x, l(1.000000) - endif - else - mov r17.x, l(1.000000) - endif - mul r15.w, r15.w, r17.x - mov r23.xyz, l(0,0,0,0) - endif - add r21.xyz, r21.xyzx, r23.xyzx - mov r16.w, r18.w - endloop - mov r11.y, r15.w - add r20.xyz, r20.xyzx, r21.xyzx - iadd r11.z, r11.z, l(1) -endloop -mad r6.xyz, r20.xyzx, r11.yyyy, r12.xyzx -ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -movc r3.y, cb13[14].z, l(0xFFFFFFFF), r3.y -if_nz r3.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - dp3 r2.z, r2.xywx, r8.xyzx - max r2.z, r2.z, l(0.000000) - add r2.z, r0.z, r2.z - mad r3.y, r11.w, l(-16.000000), l(-1.000000) - exp r3.y, r3.y - log r2.z, |r2.z| - mul r2.z, r2.z, r3.y - exp r2.z, r2.z - add r2.z, r0.z, r2.z - add r2.z, r2.z, l(-1.000000) - mov_sat r11.xyz, r2.zzzz - mad r12.xyz, r9.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - mad r12.xyz, r9.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx - add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - mad r12.xyz, r9.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx - add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - max r12.xyz, r0.zzzz, r12.xyzx -else - mov r11.xyz, r1.yyyy - mov r12.xyz, r1.yyyy -endif -movc r11.xyz, cb13[14].zzzz, r11.xyzx, l(1.0, 1.0, 1.0, 0) -mul r6.xyz, r6.xyzx, r11.xyzx -mad r15.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[212].x -mad r16.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx -dp2 r0.z, r16.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx -mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r16.xyz, r15.xzyx, -r16.xyzx -max r0.z, |r16.y|, |r16.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.y, |r16.z|, l(-208.000000) -mul_sat r1.y, r1.y, l(0.031250) -max r0.z, r0.z, r1.y -ne r1.y, l(0.000000), cb0[210].w -lt r2.z, r0.z, l(1.000000) -and r1.y, r1.y, r2.z -if_nz r1.y - mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r16.xyz, r15.xzyx, -r16.xyzx - max r1.y, |r16.y|, |r16.x| - add r1.y, r1.y, l(-29.000000) - mul_sat r1.y, r1.y, l(0.500000) - add r2.z, |r16.z|, l(-13.000000) - mul_sat r2.z, r2.z, l(0.500000) - max r1.y, r1.y, r2.z - lt r2.z, r1.y, l(1.000000) - if_nz r2.z - mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r16.xyzx, cb0[211].xyzx - round_ni r17.xyz, r17.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t19.yzwx, s2, l(0.000000) - add r2.z, -r1.y, l(1.000000) - mul r3.y, l(0.500000), cb0[211].y - mad r7.w, -cb0[211].y, l(0.500000), l(1.000000) - max r3.y, r3.y, r16.y - min r3.y, r7.w, r3.y - mul r16.w, r3.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t20.xyzw, s1, l(0.000000) - mad r3.y, r18.w, r2.z, r0.z - add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r17.yyyy, r19.xyzx - mov r19.w, r17.y - mul r19.xyzw, r2.zzzz, r19.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t20.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r17.xxxx, r16.xyzx - mov r16.w, r17.x - mul r16.xyzw, r2.zzzz, r16.xyzw - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r17.wwww, r18.xyzx - mul r17.xyzw, r2.zzzz, r17.xyzw - else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r3.y, r0.z - endif - mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r18.xyz, r15.xzyx, -r18.xyzx - max r2.z, |r18.y|, |r18.x| - add r2.z, r2.z, l(-116.000000) - mul_sat r2.z, r2.z, l(0.125000) - add r7.w, |r18.z|, l(-52.000000) - mul_sat r7.w, r7.w, l(0.125000) - max r2.z, r2.z, r7.w - lt r7.w, r2.z, l(1.000000) - if_nz r7.w - mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r20.xyz, r18.xyzx, cb0[211].xyzx - round_ni r20.xyz, r20.xyzx - mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t21.yzwx, s2, l(0.000000) - add r7.w, -r2.z, l(1.000000) - mul r1.y, r1.y, r7.w - mul r7.w, l(0.500000), cb0[211].y - mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) - max r7.w, r7.w, r18.y - min r7.w, r8.w, r7.w - mul r18.w, r7.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t22.xyzw, s1, l(0.000000) - mad r3.y, r21.w, r1.y, r3.y - add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t22.xyzw, s1, l(0.000000) - mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r20.yyyy, r22.xyzx - mov r22.w, r20.y - mad r19.xyzw, r22.xyzw, r1.yyyy, r19.xyzw - add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t22.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r20.xxxx, r18.xyzx - mov r18.w, r20.x - mad r16.xyzw, r18.xyzw, r1.yyyy, r16.xyzw - mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r18.xyzx - mad r17.xyzw, r20.xyzw, r1.yyyy, r17.xyzw - endif - lt r1.y, l(0.000000), r2.z - if_nz r1.y - mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r15.xyzx, cb0[211].xyzx - mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r18.xyzx - mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r15.xyz, r20.xyzx, r15.xyzx - min r15.xyz, r18.xyzx, r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t23.yzwx, s2, l(0.000000) - add r1.y, -r0.z, l(1.000000) - mul r1.y, r1.y, r2.z - max r2.z, r20.y, r15.y - min r2.z, r18.y, r2.z - mul r15.w, r2.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t24.xyzw, s1, l(0.000000) - add r20.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t24.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r21.yyyy, r20.xyzx - mov r20.w, r21.y - mad r19.xyzw, r20.xyzw, r1.yyyy, r19.xyzw - add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t24.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r21.xxxx, r15.xyzx - mov r15.w, r21.x - mad r16.xyzw, r15.xyzw, r1.yyyy, r16.xyzw - mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r15.xyzx - mad r17.xyzw, r21.xyzw, r1.yyyy, r17.xyzw - mad r3.y, r18.w, r1.y, r3.y - endif - mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) - add r15.x, -r0.z, r1.y - add r0.z, r0.z, r1.y - mul r15.y, r0.z, l(0.500000) -else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r15.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r15.yxyy, cb0[213].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r15.zw, r15.yyyx, cb0[213].wwwy -mad r18.x, r15.w, l(0.375000), r15.z -add r17.xyzw, r17.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[214].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r15.zw, r15.yyyx, cb0[214].wwwy -mad r18.x, r15.w, l(0.375000), r15.z -add r16.xyzw, r16.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[215].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r15.xy, r15.yxyy, cb0[215].wyww -mad r18.x, r15.y, l(0.375000), r15.x -add r15.xyzw, r18.wyzx, r19.xyzw -ge r18.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r18.y, r18.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.zwzz, t18.xyzw, s1, l(0.000000) - lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| - or r4.zw, r19.zzzw, r19.xxxy - or r0.z, r4.w, r4.z - if_nz r0.z - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mov r4.z, l(1.000000) - mov r4.w, r0.z - mov r1.y, l(0) - loop - ge r2.z, l(4.600000), r4.w - breakc_nz r2.z - iadd r2.z, r1.y, l(1) - mul r19.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - mov r4.zw, r19.xxxy - mov r1.y, r2.z - continue - endloop - mul r18.xyzw, r4.zzzz, r18.xyzw - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb7[3].x, cb7[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r19.x, r0.z, l(0.00390625000) - mov r19.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r19.xyxx, t17.zwxy, s1, l(0.000000) - mad r4.zw, r4.zzzw, cb7[2].xxxy, cb7[2].zzzw - mul r19.x, r4.z, l(3.54490781) - mul r19.yzw, r4.wwww, r18.yyzw - mul r0.z, r18.x, l(0.406976730) - exp r0.z, r0.z - mul r18.xyzw, r0.zzzz, r19.xyzw - mov r19.xyzw, r18.xyzw - mov r0.z, l(0) - loop - uge r2.z, r0.z, r1.y - breakc_nz r2.z - mul r20.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r2.z, r20.xyzw, r19.xyzw - dp2 r3.y, r20.yxyy, r19.xyxx - dp2 r4.z, r20.zxzz, r19.xzxx - dp2 r4.w, r20.wxww, r19.xwxx - iadd r7.w, r0.z, l(1) - mov r19.x, r2.z - mov r19.y, r3.y - mov r19.zw, r4.zzzw - mov r0.z, r7.w - continue - endloop - mul r18.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r19.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r18.xyzw, r19.xyzw - dp2 r1.y, r18.yxyy, r19.xyxx - dp2 r2.z, r18.zxzz, r19.xzxx - dp2 r3.y, r18.wxww, r19.xwxx - mul r19.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r4.z, r18.xyzw, r19.xyzw - dp2 r4.w, r18.yxyy, r19.xyxx - dp2 r7.w, r18.zxzz, r19.xzxx - dp2 r8.w, r18.wxww, r19.xwxx - mul r19.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r9.w, r18.xyzw, r19.xyzw - dp2 r10.x, r18.yxyy, r19.xyxx - dp2 r12.w, r18.zxzz, r19.xzxx - dp2 r14.w, r18.wxww, r19.xwxx - mul r17.w, r0.z, l(0.886226952) - mul r17.x, r3.y, l(-1.02332675) - mul r17.y, r1.y, l(-1.02332675) - mul r17.z, r2.z, l(1.02332675) - mul r16.x, r8.w, l(-1.02332675) - mul r16.yw, r4.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) - mul r16.z, r7.w, l(1.02332675) - mul r15.w, r9.w, l(0.886226952) - mul r15.x, r14.w, l(-1.02332675) - mul r15.y, r10.x, l(-1.02332675) - mul r15.z, r12.w, l(1.02332675) - endif -endif -dp3 r0.z, r17.xyzx, r2.xywx -add r0.z, r17.w, r0.z -max r17.x, r0.z, l(0.000000) -dp3 r0.z, r16.xyzx, r2.xywx -add r0.z, r16.w, r0.z -max r17.y, r0.z, l(0.000000) -dp3 r0.z, r15.xyzx, r2.xywx -add r0.z, r15.w, r0.z -max r17.z, r0.z, l(0.000000) -add r0.z, l(-1.000000), cb0[113].x -max r1.y, r11.w, l(0.001000) -log r1.y, r1.y -mad r1.y, -r1.y, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.y -mul r2.xy, r4.xyxx, cb1[0].wwww -round_ni r2.xy, r2.xyxx -add r1.y, |r3.w|, -cb1[2].y -round_ni r1.y, r1.y -add r2.z, l(-1.000000), cb1[1].x -max r2.w, r1.y, l(0.000000) -min r2.z, r2.z, r2.w -ge r1.y, r2.z, r1.y -mad r2.x, r2.y, cb1[0].x, r2.x -ftoi r2.xy, r2.xzxx -iadd r2.xy, r2.xyxx, cb0[110].zwzz -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.x, r2.x, l(0), t0.xxxx -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.y, r2.y, l(0), t0.xxxx -and r2.x, r2.y, r2.x -and r1.y, r1.y, r2.x -mul r2.xyz, r17.xyzx, cb0[111].xxxx -dp3 r2.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r37.w, r2.x // Store ambient luminance for cubemap modulation -mov r5.w, l(1.000000) -mov r13.w, l(1.000000) -mov r2.yzw, l(0,0,0,0) -mov r3.y, l(1.000000) -mov r4.z, r1.y -mov r4.w, l(0) -loop - lt r7.w, l(0.010000), r3.y - ine r8.w, r4.z, l(0) - and r8.w, r7.w, r8.w - if_nz r8.w - firstbit_lo r8.w, r4.z - ishl r9.w, l(1), r8.w - xor r4.z, r4.z, r9.w - ishl r8.w, r8.w, l(3) - dp4 r15.x, cb1[r8.w + 6].xyzw, r5.xyzw - dp4 r15.y, cb1[r8.w + 7].xyzw, r5.xyzw - dp4 r15.z, cb1[r8.w + 8].xyzw, r5.xyzw - ge r16.xyz, cb1[r8.w + 5].xyzx, |r15.xyzx| - and r9.w, r16.y, r16.x - and r9.w, r16.z, r9.w - if_nz r9.w - mul r9.w, l(0.100000), cb1[r8.w + 5].x - mul r16.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r16.xy, r16.xyxx, r16.xyxx - add r18.xyz, -|r15.xyzx|, cb1[r8.w + 5].xyzx - mul r18.xyz, r18.xyzx, cb1[r8.w + 9].xyzx - eq r10.x, l(1.000000), cb1[r8.w + 10].x - if_nz r10.x - dp3 r19.x, cb1[r8.w + 6].xyzx, r14.xyzx - dp3 r19.y, cb1[r8.w + 7].xyzx, r14.xyzx - dp3 r19.z, cb1[r8.w + 8].xyzx, r14.xyzx - add r20.xyz, -r15.xyzx, cb1[r8.w + 5].xyzx - div r20.xyz, r20.xyzx, r19.xyzx - add r21.xyz, -r15.xyzx, -cb1[r8.w + 5].xyzx - div r21.xyz, r21.xyzx, r19.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx - min r10.x, r20.y, r20.x - min r10.x, r20.z, r10.x - mad r15.xyz, r19.xyzx, r10.xxxx, r15.xyzx - else - mov r15.xyz, r14.xyzx - endif - dp3 r10.x, r15.xyzx, r15.xyzx - rsq r10.x, r10.x - mul r15.xyz, r10.xxxx, r15.xyzx - lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx - lt r20.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r19.xyz, -r19.xyzx, r20.xyzx - itof r19.xyz, r19.xyzx - dp3 r10.x, r15.xyzx, r19.xyzx - div r15.xyz, r15.xyzx, r10.xxxx - lt r10.x, r15.z, l(0.000000) - add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r15.zw, r15.zzzw, r19.xxxy - movc r15.xy, r10.xxxx, r15.zwzz, r15.xyxx - dp4 r10.x, cb1[r8.w + 4].xyzw, r13.xyzw - max r10.x, r10.x, l(0.000000) - max r10.x, r10.x, l(0.000100) - min r11.w, r18.z, r18.y - min r11.w, r11.w, r18.x - add r12.w, r16.y, r16.x - mad r12.w, r16.z, r16.z, r12.w - mad r9.w, r9.w, r9.w, -r12.w - mul r9.w, r9.w, cb1[r8.w + 9].x - mul r9.w, r9.w, cb1[r8.w + 9].x - add r12.w, l(1.000000), -cb1[r8.w + 10].y - mul r9.w, r9.w, r12.w - mul r9.w, r9.w, l(100.000000) - mad_sat r9.w, r11.w, cb1[r8.w + 10].y, r9.w - mul r11.w, r9.w, cb1[r8.w + 10].w - mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r15.xy, r15.xyxx, cb1[1].wwww, cb1[2].wwww - mov r15.z, cb1[r8.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z - mul r15.xyz, r15.xyzx, cb1[r8.w + 9].wwww - div r12.w, r2.x, r10.x - min r12.w, |r12.w|, l(1.000000) - mad r12.w, r12.w, l(2.000000), r2.x - add r10.x, r10.x, l(2.000000) - div r10.x, r12.w, r10.x - add r10.x, r10.x, l(-1.000000) - mad r10.x, r10.x, cb0[112].w, l(1.000000) - mul r15.xyz, r10.xxxx, r15.xyzx - mul r15.xyz, r11.wwww, r15.xyzx - mad r2.yzw, r15.xxyz, r3.yyyy, r2.yyzw - mad r8.w, -r9.w, cb1[r8.w + 10].w, l(1.000000) - mul r3.y, r3.y, r8.w - endif - mov r4.w, l(-1) - continue - else - mov r4.w, r7.w - break - endif - mov r4.w, r7.w -endloop -if_nz r4.w - dp3 r1.y, r14.xyzx, r14.xyzx - rsq r1.y, r1.y - mul r5.xzw, r1.yyyy, r14.xxyz - lt r14.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r5.xzwx - lt r15.xyz, r5.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r14.xyz, -r14.xyzx, r15.xyzx - itof r14.xyz, r14.xyzx - dp3 r1.y, r5.xzwx, r14.xyzx - div r5.xzw, r5.xxzw, r1.yyyy - lt r1.y, r5.w, l(0.000000) - add r4.zw, -|r5.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r4.zw, r4.zzzw, r14.xxxy - movc r4.zw, r1.yyyy, r4.zzzw, r5.xxxz - mov r13.w, l(1.000000) - dp4 r1.y, cb1[3].xyzw, r13.xyzw - max r1.y, r1.y, l(0.000000) - max r1.y, r1.y, l(0.000100) - mad r4.zw, r4.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r13.xy, r4.zwzz, cb1[1].wwww, cb1[2].wwww - mov r13.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r5.xzw, r13.xyzx, t5.xwyz, s3, r0.z - div r0.z, r2.x, r1.y - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r2.x - add r1.y, r1.y, l(2.000000) - div r0.z, r0.z, r1.y - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r5.xzw, r0.zzzz, r5.xxzw - mad r2.yzw, r5.xxzw, r3.yyyy, r2.yyzw -endif -mul r2.xyz, r2.yzwy, cb0[112].zzzz -mul r2.xyz, r2.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].y) -if_nz cb13[13].y - max r37.w, r37.w, l(0.000000) - min r37.w, r37.w, l(1.000000) - mad r37.w, r37.w, l(0.750000), l(0.250000) - mul r2.xyz, r2.xyzx, r37.wwww -endif -if_nz r3.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x - add r1.y, -r0.z, l(1.000000) - mul r13.xyz, r1.yyyy, r2.xyzx - mad r2.xyz, r5.xzwx, r0.zzzz, r13.xyzx -endif -mul r5.xzw, r9.xxyz, r17.xxyz -mul r5.xzw, r5.xxzw, cb0[111].xxxx -add r0.z, -r3.x, l(1.000000) -div r0.z, r0.z, r3.x -mul r1.xyz, r0.zzzz, r1.xzwx -mad r1.xyz, r1.xyzx, r10.yzwy, r10.yzwy -mul r1.xyz, r1.xyzx, r2.xyzx -mul r1.xyz, r11.xyzx, r1.xyzx -mad r1.xyz, r5.xzwx, r12.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r6.xyzx -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r6.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r5.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xyz, r0.zzzz, cb0[155].xyzx -mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r2.xyz, r2.xyzx -dp3 r0.z, -r8.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.w, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.w -lt r2.w, l(0.000000), cb0[163].z -if_nz r2.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r8.xyzx, -r7.xyzx - add r2.w, r5.y, -cb0[44].y - lt r3.z, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.z - mul r0.x, r0.x, cb0[163].w - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.w - mul r4.z, r0.x, r3.z - mad r4.w, r4.z, r2.w, cb0[44].y - mad r2.w, -r4.z, r2.w, r2.w - mul r4.z, r2.w, cb0[159].z - max r4.z, r4.z, l(-127.000000) - mul r2.w, r2.w, cb0[162].x - max r2.w, r2.w, l(-127.000000) - add r5.x, r4.w, -cb0[159].x - mul r5.x, r5.x, cb0[159].z - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[159].y - lt r5.z, l(5.960464478E-08), |r4.z| - exp r5.w, -r4.z - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r4.z - mad r4.z, -r4.z, l(0.240226507), l(0.693147182) - movc r4.z, r5.z, r5.w, r4.z - add r4.w, r4.w, -cb0[162].z - mul r4.w, r4.w, cb0[162].x - max r4.w, r4.w, l(-127.000000) - exp r4.w, -r4.w - mul r4.w, r4.w, cb0[162].y - lt r5.z, l(5.960464478E-08), |r2.w| - exp r5.w, -r2.w - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r2.w - mad r2.w, -r2.w, l(0.240226507), l(0.693147182) - movc r2.w, r5.z, r5.w, r2.w - mul r2.w, r2.w, r4.w - mad r2.w, r5.x, r4.z, r2.w - mad r0.x, -r0.x, r3.z, l(1.000000) - mul r0.x, r6.w, r0.x - mul r0.x, r0.x, r2.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r4.zw, r6.wwww, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r4.z - add r0.x, r4.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r4.xxxy - mul r3.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r3.w|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r3.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r3.xyzx, t16.xyzw, s1, l(0.000000) - add r0.y, |r3.w|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r3.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r0.x, r0.x, r3.w -else - add r0.y, r5.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.w, cb0[44].y, -cb0[159].x - mul r2.w, r2.w, cb0[159].z - max r2.w, r2.w, l(-127.000000) - exp r2.w, -r2.w - mul r2.w, r2.w, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.w, r0.w, r0.y - mul r0.y, r6.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r6.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r3.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r2.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.w, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r2.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx - -// === Simplified Fog Modification (Anti-Banding) === -// Check if fog modification is enabled via cb13[12].y -lt r15.x, l(0.500000), cb13[12].y -if_nz r15.x - // r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter - // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density - add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx - - // Reduce fog inscatter intensity - mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - - // Modified fog blend: scene * boostedTrans + reducedInscatter - mad o0.xyz, r1.xyzx, r15.xyzx, r16.xyzx -else - // Original fog blend - mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx -endif -// === End Fog Modification === -dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x1B08FD76.cso b/src/games/endfield/deferred-lighting/0x1B08FD76.cso new file mode 100644 index 0000000000000000000000000000000000000000..db467d59c02e1479bcb7c0f8ba34bcc8ac7bb144 GIT binary patch literal 61996 zcmeI5TaabfS>Jc>mX2n6W;CO=ERPz44=o~KfCBX>(s(RQuW5-!wo}+8(8T5;fCv*v z;Y*E;b0u!IVekcCVuFI4#E3Br#HL6hsK5)F)&L?QcikebKHsN~U)JaK-}WuvdZ*fb>f58wArN)YfXi`Ez*m=k?&%M>F6cLi z{$8IOZpi&ybI{Mn{akaANec;122mROUV|=bT=pX6hey%y_m&n@BH3$9JWPGkU z(04DbF8*3kKJL}GRQkW|)OWu59q;=7cYpso-rjxtH^1e+H@)e>`#W{M{#~1A-tqQ# zZ+`dpd~f$A`R;zEi?09N0#G5feIbO~2TE`*)xDJKy{6?lYhHwg(ry>B_3;qZ9qp~*db;{Izg9NP9C z-P?O~Z|}*`_MZG{@5#rwFY@t2d(U`n@AnVx@l6ZA(f8k!^~G;399!eQ*mG04|J&p4 zx+e~0|KO8{4|R)cy7%=NUE>@2xyCQP#s|K}eqUp|ud(}K#b#Nw*!(@p9j>vL`|nk3 zFORc)UnBebl%lt()v@xpbM4zm=VOxASfVJ(N1%@8S3(i97 zy1)0#*R9>JvIw1Fw5lyPG&;emd;Va?`P#w@*-OR0@FG`5yM#{`xmF)q9N!v`;0YYr z(7mR+ZgHvLeT8W7muZ4;p&{0$`MIw9Q2)Me>wS;i+93meD-9jFI(lc;QMey5F1*2A zn!yttTe@YbtvKyjD>S!%Fzb$P*5j4Jd4u?0?7FS{9(rYWS-9xADPLgc=07>qF)pYb zMJ{*U55&3K+uAA?>(VRo3mzQu{hrG6#=={55IFe`{ETFBO`PdJ|G^ALo_xNvp))!I z2d__E_rIQg>xsK>zI*+Le*eesRad9H+IJ;B=a+IW!pAuXFLDr>$TEN7hCFrcc~G)} zow_d5b3IzlahGqecRcXD>^~-bZ)o*3U)uYHZ`hGylXDZe<)R1oQ@kWId{Eje@uGHA zUIibUEqi4v+f013-d!sCU$|Sf!g!1aYD|Hx4|S$4RXNfbxv!RuYto#$L=Kf>?{=}* zyqqV%-=PojGmgd>-Q92NL!K_G6~4|Hmz=4%1Nhs7b4P*WLu}=EQlBilTW7q&7r5je zAaAhq>?32Hb6zShB9FQMLwyYUEFC3hp;4>?FX(T|d7=6g_J;iK(AFcu1FjlTuXP*s z4IJx|_4~75KQ^8R>&W%6o!nJCD!)wo=1L13zO=>edtEnMnZ|i-!?)m5>qOmk*esuh zzQlN1->vn90&8W01Fn4yY@V-A{m5V5*YICy{4vYdt$xMVPubVIVV%}-+1J=H!`GG8 zKA|nXTeq)UzV^w`m*8Z&t(u$glD`f*H#Kj^T+=53x{k9yUC&h)`l2(RT31;EQBNXQ zx5t3GKhWo-#wolFr)3OQc{6C7>)<}nbsyeX$aBUM4Ikt@`mQ{-m@|6a7oX^A;!pV^ z#!YKG<9b=Vn8WNxk6&~~ztsX)f6&7enDKMF75)boeUuj-f5H2x^0kE_&p6a$YD-H8 z&(D1N((EdEPAgpmWTT@FV`nqIJ$N7Inm$i1n!X^+`86KJ)1# z5l^mL`NRo)VjJyz`H@2{Zl6ThZRzY!o>SGi(|qc>3EETFPjZEO=05zyHNGP!@Ev}k zkM$KcZfefwUdPh2g5ihJzTEanH|4;;T(&kE|LkJMfBGNH_3=UDjwBBmebOoHbGw!L z#C6!{b_bo$NH5knqhg2U*+yWhCsQ`k*V@QEO^xTP!ZOxrk&%yCn%H!?NF1nuYhIQmu)R!_AhjVApF3UdP z#GAH^;}fpuEnnkM&rLV2Pp;?2o63({r|P-Kc+~GcNpPv-rCnDJ#5$S!;k@wkTU*b8 zQxj+JX>fTck19A`IGwddDg+3qzAR0_*)+1pIQ$LJAf&-_FmRC zHHR7xjJidP=hgh(wq9G!f2nLmA8P(ATb&cFt<+C!1J>F)tM(K7KI!x#YCp2z+v;OK zQ=5@(9Q&DmYB4p47|~zGQ>~4IHTWb)rfX2lzapnS(I=f>WDU}Iih6^NebQ;LCcTz= zczx1oAiGa=u}|wy*HP1}Jk8hWZMoD9 z_!CFhL63)aY(60javvOUsg--w&Z?D;k7`2b%RG9eT1o97_uIM0!Ybkw)7SM`nO_hEfg&s6OKw@*5i<63LiEZ&OeBri+s`vhaws2q8%+9$5N zojB*VuHlFuwTpN-R<2#Z@DDJLDc3Gw?RcKGUfpf$wbibd(pGBMJX@L1T3cPahPKYC zUF1Tabb1lKM;1P8^|7B_yNuJ;E^t<*Ygv=k`~`=2(I0Egao$sD`%9fmWei;qYF$$( z-|HA7_o34fV`bL<2Vs8RdNio-G*&6Fv|m`xn=2$VXFVo z_erP0!T10V-5BSKYMJxE7c6*CTRd0xN#8-f>h5)a1S0nP;bA=V?^DM@I9^XLP|bH-PkQ_>jLw>VzmSfHax2FKwi{5DYY0{@eV%V^+~6C#JcPP_2F`n zUHz`HVc)=`wTrQYezd@@W*7MvytJoO^oeI1`pgUapD6s^BRpU_qV__gu^MwrtJ6Ha z3x4qMS`D8Q4`9bj3;!ku>)d6#3@`Ivz*~CcL(e)8p2*1Y+)1>r`j!89On$1*2;jhr zHlD9$z>Wxpj1}cOybFHhJJ&ku+S7UtWwrU$$XX)C_>UOFt4}(0o#ybZb@Hj~2iEU8 z#6RRhgN)OspL^1KJ+^}u*g`jcYUmHcgt7yUw$Bq|ys^vnMLQ3MugrTW_vq1IdJ^78 zj~-pWYusJGT>NL>%;ITSn;VXwVmc2@%{{JF^-rQcFQqNevd}_#Jm7r9rIIq z`I#-Rhg_SDPaLSt+_!apMgFHo;$zwtcBJ&-Cvw!WS=2RsZh^V3PsY?%T@zAIsL6fO zX>d^MfK#9Pq*HzN%ytMq0v`U^9)rLDm?5t|hcDs%Ikl&hJLE9F0|w3ql{;&?W*qiO2CC)bqfhys=OrH=oNDc0%>=AZUH8b=*6Z4jy7yOKG(M6)&Yl!dcE=oL zKPU&oclf0BseK~4UA_})!~+`hSvi!)Cw)4izO-;```u^$#tGN1A?$5`a#tGG7jR0v zch#lJH+#sKUfzzkm@06&! z&Tr@eK6+8-9Y2p7!({7@eZ{zF>2$j*el5LmiQlT^Iq!`FKj(kgbvW-e^+|wSTVnp? zTD73=&$3UjC=5SioV_{IiC3&?7^{Zy?hVIp=>w04MXPnHVwriI*PbEzoYMC-w5nlI zBf#N(5&Cq*KH#!05?6E}X0+^iwKzk4q5G_GuBNYfx4ekE?~$crA2~ry(0GdR3%pM{ z=}>IfwKj{rWZ4n(f9QDKBv+|_89UE|YvcUR5q_k$z}w@V`yzMGhOWU`DQh6`s894U z9u0RNWA&kj9;)?}dA5b=c4|Bh>5WS~hA{MlpX-2Yo@*!fI_i8aUg4|Owjr(S*|+}B z-{5&FY8*1`3+&M`rSrD*u&cpVd!c) z@&kJM$emjYK6E-lf5E0~|GFFgbff*)N5-S=(|jMbctQ;sU#1IuWZKq0T;n73L$6J> z!9y){I;xLYn}LImz`;kR8~On{U_5sXVWJHm;b&m*q;FN%?t{+t6}Www>&i1HXg~4T zt@Zr{%K^8H*%P8aK;Dp7r)9s#OdeMrUyq-ZZ?+g{;ECqoIblXllw9bO0QpF6dta4t z%y<^(j>DtD^L%;&{~=4q(tP}Q%mn9xa}k=AqFc7{@%208XZ(gN`#Hn%+R(5e zUB*e_KX6*!<|BLRxc8drwB!`pBxz9EWhvg!VJ2cFZo@g4e_TAI!`Q5ylRX*KBza?skPAD z9PvC#d-Te9>tdy2YaRVvqmLAQTKx^Pj;;RZgpW_1)6OIO-O^FV3SHDH$vuHj*NQyT zv*w2%`DA*YKcJ^QtX9XwH=-vW&zCvxN;wK$8^bmqXN_6M#re#trXg{$)|Z~LCw>I%qs{5PTg=AJ;YOBIZr{`jnr8bQy=&__o)yPZv5N#k>Tq z^)-%ktMd{y2^?ZtWY@W22y-28*M#(Ki`I3V`2}{iskPnDKpAD)N7k)RUw9v(A9`8F z)4IpEI;xNS9Aq4PWV)drpaaI7HH6tm`0{v>OW&%l-S-8W>kga~Pih!>Jb4aMN3+Ku zSgcFITPx2&=+WjC6gpCz)%L!+!u$x22CqH`c}xlX^87fS?}OoU5V6Fk_TR*}-Hy6B zcKW1q9DWvh@y|iFd+g_acLbctNLQ*E1e< z7o1~)ITpk52VI+I?b!7EGHVVNtmdUIr}hc)OP{*VbFf?KF@?u7Ab9qTTl>iSj^$Y~ zX!W<};Um*tZ7(u-$VbrWs6O%>jE}&y$zE$D7?+Y~tx4G*% z*n9VGl|L~D69eV@)H5pj^hu|DB)7eJ<~;1qNg}$s-tmr?|5B( zFVcJ@FZRZq7sxGnu~TB7hU2%LH)p}j`!Bl}seHNW9E?A|SkI{FgHOI#b1?EeCOikT zrX%i*A@4!b&YP#smpP9(na<=PUtPu8feD}Gk_QhpAi4t^=kkLdHooF9=lD(eH+e%1LKE~}3*e!kg@WG*F^ zhH1}6Yh>*O%-M_d-lJvs9=>|FrLI9(qXVO5-%>ITcs>&E$T8lHWsTCS?UPP=pXC?7 z<&pAk3-`O9!SLhnKJ(14weP(+*0jvsytlJl>^Cg0_w#!@L)eON*-tS~zZXsm-P+OH zl6ekc=!|dS*}^RMjz$;f05EWMRDZE%!(X)cOFSpjj3+yB2#`oV|+*S4$o#R3Yy*38;M~V&t$KPsz zuXlOlZ#B5?Q{KN~56k;l*mp*B_=ER;3yt@<1J?F|1Fr0gzXNDt@K>zF(x3b;u>D~E z1y4EX{h^NM^&1{6`j3hp-m`r}^S2u4icFs4*&pI}n|OcwYJaN%9r%pZtI^pf;4#L@ zTXg51aco|;hq2z`+$|hzVeGj^oYFhk;9wj5;&X6KIH5~v`y@dAt~6iirjIM${m$=y ztE>Kf4mp`~G5E!PdF;XHdpO$m?|wE*?zg^NmR#^QOM91ogX&s*$#@7kvYVFQu9`>Z z@dF-X5+6_txW|{)!DHDu+~QPU>Roxq1bX|@HHALtsZY?;x~5n@ZT4AyM<4mKYKqX} zcSj1(sHMm@t#pq)QR*tP{5J^P%a*{0*7H04$Aw1=j~71onv>X%FI(CY&z;;({+_v| zHy?b<*lJfpV)+++O(3z@)e!>l-22lH}1@V9cu3ymUhj~GVu0vR+>n;rGk!{}6IdriOMX%6-YiQ-G6X27t_!BwEbf0m^y;Z>$ z1v6h-aGA@9!(=RFyU(bHIH{(FOl+dA!sB**=L$Zy8IQa{4{C6s3;wR%)EVfI2~MGp zIg9H@RS$vDa&NiN>DYsuw%;-epU?yO=x99(e(0m?@DIL2zHw+76Zo$9xcVKLEgth< zp%0&+uYCZX*L5v_a9*rz`^-FBoegszEpmyEWS=S4M+Ohe1UI^TWqQ0&Gm!7zcwDcjHfl# z0(Bf&$fut*Irc*9ztsjNeXH$f_50|^?vqY+J(t%i)NK2R@wzAs+r@8RLnmH)o)rv# z=(hl)ZPzXEcvx`8mU+zkdu4FEX4d6C_y(PRWAG7maNVcLceq{$+y9Jxeq#cddbk{A}|ZnlV|SJQXM8#;Vo-pJAsb2b1+FuB}T$A2k@>g2g-m9`H{*_E`B_l7CzO_LwoZBEI-D^KiZE z*56oa4LHcA)e&}aeMEiuzk$WyLKnO0yluE^`_S(8_b@CAoTATEEL@M^+43P4vtaOJ z9SDr;;s3k15}nXv?G!wc?o`jT7Z7$)n>nDrB;M3S>XmCYH1cW0f@}Wf7MwoKpAW&a zudu!S4T>R5y6iAER*USGPHcAhtfe=u=&OD!C0EeV@a+G|Udy6j&Nt(`=nDok{Ui;pLB|2@?7k_nDD)xS+I*|7g~?M z)+e@A;K<vAOo)Tk#Ih5Ax<38!89{Kkdl#BI$);Jg4TK`4SFs5mXy~kLaVp|JqbKWwo zt6;GfAXetzC*8z;McC`T#=yfL=uchilTP)>dYd0Low<^>Pdas5I{TA<+x((B`2R*{ zr0*+)(avkoF&}bd+ji63EEu^5F8fHcXs{jr;MRFi`g5?MXsp%$Qn=Rxklc|iYD zqtz1`r^~*{JelxCX6RMcilZV2A0y9x;u?SUYWt*9{0-~_8@ZkQPY~nHqNT4-yhF73 zI)BuKees)Otsda%&^h9z)^hWjPyO1f%FiIqqq^pkp2)&J!>03ZG8YN0=C5(w@?G+f zeilA)KYH|C@ovfxAJ_|@`>B(6&XD7LLCtNId>oe4Gx$qt8Xx*R#2OaSV`r-@vhC13dTGLxc=&nUa zXhjn_!FaQ8OHL&2>Bpa|y2f7m>@(^YbCF>y1t-(Tc-pg3`UDG~Es6*5)2C0z8g597 zy~u$VxH@+601gkH{m>sC;G!G3(((Wo{Vx^1#1mZV8PD(bS@CD+NWby=gs#t>@JFEV znfc*+`~g3BcpgD7@&#U=V~p#0Wu9KF!Di`2|FmAG^*cuSBha<#74vSp&g&D@)WG_w zbD#9s&v>zav30nHm?aC5|4;c`Cnd!^(k`cUgcAK#4hv(F1k8*+4rsujwgBz zV+{_m2evJ__`*5u*5e!)xl4=gI_@znYPEi|3|)Zn|0AhWYr<#l;s4hGLl1rZ-h%~iB!AP_C!GezS2VWi`?4zMY@z+Sq8s$K zjkwt#?xV#n<;20Yarxhqg-4$RnEXG7xam_g%n30sa3|X$AE>LuMc+%`OYFI4Z)m&l zbssqVR%^lK?-n8-L)Y!GZoBS3=)?c5Sd6>SFUB}H{O?GPC-osG3tg?nz`TD33^}Un z@joKTTlDfCk6Z8e0<)eT1NeuW0`_!~r_0G&x#)aRo&KK~=*>rdt-r~q|F@@}F8;qF zdN1qRHiE08&RYwKTfL88o^4xxwm~qE>i=sD-PLDY>(83k`dcpkAy4@~30YRxeM8rM zKsLmBojkc&uuZLl!C@T?UmX!^#--|7;AHxEUaHToOVZ;y;jHR|Kfy0}=(#mWEGr{ zRkTQ@ZECFWorj5jgmwZLN=Nudt%ePHrdPDYSIvL*Aq75C*>? ztoSZ)TNt^GkIhq;!4q5QqqUFF*JH`}#<4%~U&Sf;L5*Xaa1aOMGT#~3eOXrg9?m=% z<7yu4NoQao~?J;6=j?DFW z-b3ClaWFr8ggw^T@o!=^rSp*9e4Gc+xsMipJR3mA^@>{RMv2Y3VdRn@k4` z8TLbrZTW#($h^Su>zu~fPr#v}b>94juE{NQYT>LCIe@!{axFc==gYc=7rGjk8mlAb zt5@klF^O?b?dy|HwT|Rkf}hWb2e{NOcoN4#8_zA+-Qw6raG-DXUQ{2xyz}TU#hy5I z*gkD-1E=eD$lIvlhjoX1==-Eo_qf+4(TYdKLqG8Qq*M1_1>Y$j?z3;;Bj1GW;cM9l zjr5Iq3Ap`_&+ucRi5S@CTLrUT_KRTgy)`iU0_US+-E|%FlII)v0e^+sKJA`w&;`E& z2M^yPi#34S&>bH5*m%H+xA|H(>+87Dp3=UoZN4Nq)I#P_j!>|^(HjPGjDxgv+j>T zHNI=(oXgGw#`TIcq&~P7V1MgN=D~JNBL9Z{$g=%hJ5H@X3(iu@k7uUl8FDT!a^S`A zvR|kJ(rdqEvM)e<`=pZ&`-K*r3w~>J=rpw3e6ac1;xp)}m4=NZ3twJq%vBreeCP4G zkn-PPs&>b-IqR2RebaSK-zP~5Fvi8Ut{qca!{9%J!Jp&kT-XkCQ;b{U=e%-!wGIvc zVCT>m@h5$>(7Sd)qoe9+`-|OaNMCAs zl@Gt6ovkcCU(B+_y4aRkyzFOS&VBL+J=^^p@?cqg;Mt$F1-IrQ_KPCMSv;8z_X!@Oz1Y5#YS`vl_mLZ`;H^>sVJ-TKw}xj(5>rlZZe z#cxyBJa5MUIJRj~*XTl<=_cO|Ie&n;W*XPyix{}}Fw8_+YvUlR#X*+wjf1Qf2U#tSZX;LPxHx8Qy*~BBW1;d+ zRNkL6-;z6kcEwkGV!R`tv3{o5?YKXqe&>Q^I!~Z6?Dh|gb(iM~@u}<3M~hA)!FbQK z*idCEKkC>tFSo9@?YNcf>I-rknDK|a@FTEN1NN;IKZ`E*N}%nNPI~U*H&D6afDdt_ z-azlR@QL@NODzgJn18a5>%R=N1?_IfQX4AO0c! z{wL{&tH!67W+i3V9@5VQM^5pM4@zdg)^9p=&4Ls)< z@{xsY%#F?^$Ky!B9s2$6zxQXVO(Ko=BJsQRMR)Z5@Bim#*XhGn`kXt%_@M7=-gi4*P2^JXJl5LWf%AIPpoT}b&ajG;FR@2&Cr+nP2hEJzOL#(@k z&nV+dpO}lVlNtn!XDRL%xGsIOawO+gcT#Jx_6qSp3t%$R&K%_JPlS zclN{M=>feysAbcdIYu$ODsRdPM^j5#LkZRJwSz`?iA z>YA~{oB@v4g6L})dtKl#hf@RHLT^3k3%?ay!Kz;5>S5854;<|CLTi5j_r5SXw0y0X z`J)$Ol6crR#Fl$n#^IM2-ix}%PtGUqzoN-gVC0N)UgxfRyFP84Rs_fH;>#y3FvAN0<4Xm7-7N5OXU0cxMxRmn920v7rT~V_mVH1KWyc9ejw*89(G<-W#IF_w=KaeX`hHx9GUYXB7{)YX|&(uIoP3-_~ut@3C7u z^D>=fjowLSgzxL~1biHqAs>7}e&UNsE-N<+AAB;DRdE{_G8Vw z@``vnuk1H`Xdd`YJQty-|NX_c)C%_@XIpTuYou?$!1$*>o|}fqXFZ?CdsNgEjmr^qz*dTkvC!}_aBQbt zNSP0RE9yRV$9`DMfBKtGazpPQoIR=5Jh276r9*s|%KX_U{lDtZO+M=C&OWkR4`?ol zo;6gTbkfn%oqGR-2Az&aIlDK@M~LES`N5K!<5)-&bj7H& ztS>bSy^V)H)C*ero)9g;N{*8X(OQN~2%QxXz2vb4Ic{KO;bY~gKw2O54;IXaK$ zjpK=p_^H*em52W1Jn*c~pXa6{c)FJez zhG=Xrz=IlO9>Ayr@K{tU{;_|DUc<3J(SK*%O&s*CC>uqH8RA1r{9W^Ybi|h{4Ueiv5@334M*dJs zhzE2U(`TPjyQmLyk7;$ek8x3OV_b1POOCo@9)q9w#&;j!TF(|P{uOQ=SjXEA_Z9yh zSB{6jimo*$#V7PHczl-|`|HTXUqu(Up+9{Z2UV8m0k`*;n76dYgnvm?)LQn)fU%}S zj*bJ?yY&mX2i~l{dA9P-J$bWTXt7~3zG5FYV%O?+T(LVTIgTB^BVX23v(d}BGoYzH zG`>h;{eVsS&4}<-SwmD@{0%?(ug041+n~`}EoktO#|Sb@Z20@`%E!K$Wvk;hgiUx& z-Z!8RUagI?dmpi49)G@h7psX|&12!lGYtB(MuQ(~PH3GESIZU03O_>cTnYJwr*p-1 zoVqBy*cV}reotASXkWGZ2w%fbI>s7`HHCBv-J$7|P8!$Er|K-4crF4DJFbS0jkW{) zA}iWAYCIU`*nqz({cdjfTMqb!5gTxh3IB|)`CbP9k|XxBbPYcMvmc(**eWpydx4n; z-(8spGJ&-`ZWk?m@Ia1mf(LZAGjhDpng`<^JAq**Eiy0Z+OedMSi*nE%Ra-`(kJ#9 z%*%O-FU)(01FpwPZYTTF!1|=qjPE>vSr=s6uh@l7n*VBSkqr(lIzdN$AJTCTo#RL@ z(zl`(8+1(ZZ0$QX-VL)|$7aykAImcTt|r&)1I2Jb^`z>;I1{dY6~C8by~ID(mEq^6 z-k?7;s+CjYi#~L+o$zjLSu67i{3Ijts9c91tmB;x59?BF7Ug8FF@Mv^$FcrHW}kE# z#JA#$hjWuYujev;UTYH{!9qv);a6JOP~TUfk9=8DTkr#?^?~(w3v8qCvOb2%e+z=w zI!4aHU*Bu(@-w++KZA#Sw?`Y8dD}-q+haPxY77kj#yRx{ory0x)0(fwM6Bsr*w98` z$BWJ6pLCD;j(*oBjkC~&8lxlT<(8-ByQz5@pA!#_kBE7TJIu>AZY`c|DYn=5Fu}pT z7T5m4HvBilL56B#wX4+u+rgi;{{6~9K7f~HsVy+_6J6aRtDXCJ7C;8;ah{Kem2u6F zwFkL%NickT>XmsUEhgj5S zZfu0F@;6%aH-FPSq%+Z~MT4rz~k?DspKXDwScRUW28 z??;3~EHo}6e~{6@tFH9xh#F!2X>Bj-jpi9O=zx9Z(??EdAGh+R?{hj<2Kr&+MzNdU zF^ZfoxrZEV1WxR+iN50l9@yC8fIDTQYW}Kd8Jpq}F)KJ#UxD~O)VD{B=?1ZxXGJs43W;b%?)YT+If$t@}uI&_We2L!Hx7dXL zB33hCI~gZ`r$3}OA8a1Nh&lYkJD#T_aG7a1R!_N9Gj ze38bpEIFs=j>sE)srQPe_z)ZExA&4{gUhonay{Si%mN*8_1w!nezt7<%=Z!Y^IhY~ z|5~&@itVVinSNxOC-XULif#3C-P&th`AsEfYOf*c(7f*|?vPzPJ02F%qoZ6m7)Scf zK57WpVir?Rhq|@NQZeS0UcoDz zpTe(GeZ%!I{5)rIjSO_aN4`gv>{_C>S^nqLH%m8o84vs6)%pQ?>Aj!0m=`)@6YZ=x zA$wK$o=cHE3lG`mi~h(yUgV$y^sRp2I6mlNT>FCR)dvs8I6OyXExD$-!!Y$ltq9#!bC{3E3aE9nJ>nNN z3O?BfkEfLx_~IS!AOt_v5^`oJA6}QG8}SDQ?&e3b?321)Dz=E%e&ZRQ8aVI12CeLZ z*DU;v2H*R3d`|{Gpvu4WSO(2uI@%9C;OzEkP~~>>-d4(y)50>I|I-7 zv^qjw^cCL7?2}I6%Sn4w^47$M{XEvB6FhJxhsM^@#e&E0^31~{Z{f##^6*24KB@B$ zZacw8w{fgB{Pg@5;|m>h9lG#88;dPfu3>!&7Uh(4!*col?m77bUVYjv7d&DSepBpe zGv24})ur^zt@Ml7W9KRDu^Lae@_!uBI(Fb$2d$H*d^yW@bby9=m+_3gyf+uE^s?<0 zujFZ;ggA(yTKs_TXYswK)UI2^huY!xu&ztXs9TfA5KggPH*8Ri<(^zQqdvwi&qc^~-{I-LJr5SzJ_%6QiCpKr9ZPNNkA92lXI#)aj^q~m zj`#yvibw3x#2nk;+FyN&zdwn;RTO$0eVY1P#oVdw5zAKWV%-Z*_|WQzy)Nt|wi*w# z6_5NeeV+sz4m zjkbZsni3!I&c>_MYX45>924mr?-BvO{R3mVBUY|Asz237(jjdW|nwHn_@BG0v zFX*Xpw$;4c-mjcAtg$23*YM#tu*ea$EJ5UI(4yTI<$)gg0XVKD_7M zC!O*$*m`Lh3t=;3p-(yu4&X0#Txf2*>bMX})U&JYN#Ch_+>jkDUe39#_>Fh`h+mGY zC1;KlT*We;7qAQa8K1L!bFKDm7yig*4Lon$TMwaB`=H@}&dscs@~`b9UW+1>4G~*x zJ~r3>@l%R>9gns<`(}DPn!j<}%166=i~fvn9q}G6*O_Phe$&jFEj?nL0Pd1)m{IG@ z8@Y^U;$~e8Q(w&QhFdoCyYi~ef#64tm?4LlG9HM1pL7}=g;$I>bfy;YHzgi-z~S+% zc*LAC<2w#;zFPXUc|q*1mKTnhbJacwTFGNSPK?w;bq~uuYK1O z{ebCH#{ld7(Qa4c_$Y2)p=h(tWhtW4B~Qog#PWE3pq4d52x}6B}B_ zljwq%dB8_?CiVu~zt@nTqM!Jp6LEz`&+Ua z^QOf%9Z@@24=f~ZxA1rHhZoPacZn@ILhT}Ev^pYA@K9gi({CQYSB2ZcTN%LN8S9Wj z&o!}yM)@1D<+@Kg%~-^N47@n)m?LPq@3q?n?8pdUuFFxMiFb|GFJJ20vy(z zmiQT;aaC<8y!o4?;*a>7DANw@Hebf5?Aphe!=9D$9-!6>pmhIIA7B3~T?=>rYQZ&c z!#|O6YaTzQ`#a^cwSvD{+CHgMe@iTIJS_z>r-?-QgV%J zXvi!1Kh|;u9=4e;_FC4J?ER!TwR%ZT@Ii+3TA!sC`1YmoEmyEQzTCIc=nni$kwM)@ zcRw@!i>yo3s^~9cy)U|;4DHREuJzdYC`FY7&*V8A$HCKa@jFOZhO6u)FJ<> zE<`N=m$3q0Y7z%DI>J`qwvlV>rX_dDBd#+~#j)hv&#KRR6#*CSws0AP;IbCAPCuaQ z+w`1ysqh-gW?94u9LA;Rgosm_AL!Q+I&@I zd|iiu^+~5e9X6iek;~w@552i}F1Ikpg!mx?p8@ZaP6HYE1iKh7tGdQ-=51NZ$KZj# z>>pZq%3htj4qL&4NA#ER<I`-AbD`iIZl5&Qn|0FU?;S+y;C#MlmBO?(zSQIfdegAKzVGPi+H#E zT-$y+q)y~ne{2I^$CNJ4D_~cWd0X)b`0#Yjnx6ZI)QFx^*71}<2pCsKkPeF_(P*PC*p>D(-{7<>U%)% z5Nwp+EV^9uLB?84lO#`K4OTD_!ii5F5R`x z&RZus=Fr-o9y4B3Fy>nL($-kmd2Uq9q9y^S*3kAzr#N1?sQ+xMPaLuK!Zwd{)^6fe zbHMVj2|V(Jw$;Zu(!#UfU%2QzD6rtmH8u`;S_iLTuo2u6!=uFY5$^SYFXIBZ<4wPg z7%y#q!z0!(4V~$OCwTx2J}pn=57#ipBR)k|ZHpeU{sm^c@U8q-eS1##_+hp1Ft0%@ zW6lmf1+VpOLp$Z$ra$zu4#;F3gZ_iW>W-Ja+aeC=EJE2pcx5})vG1J82B2U>i) zTCQbhn|}?m!WNKT{XVrBD#n-dWvq!_nn>r znU@%g*v8x&?eUS&0^U}8ZIqSR1njR(ayTrXMk`JL|fPXE^$#SEb4F@;l@7S9Y?*7WBiP^k8EA$56d4#R#^d|>jf0Ezi0EV9A7_b%} z8=$i-&I$L?!i(R%(mHfkd`-VL?qUxQeA~yqYPGM73CW(|mA+p5yY9XBO+MUbf1$Vc zi@5HSPE&g>*`DfKk3F^E6SpDE>mI&`!5`G}W%*%M*9%D}ecwT?=excA`uKYs;MRYv zYv{?9KIx>j?&QOLwsWit@|d?+cb|6u-_x*r tJQ+tqtNf7z{j$uRg=bmd!Jn}KF5jJ<8Sn%~|AzV(gq!`hwSGdE{|}%xOKJcB literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x1E8A471E.cso b/src/games/endfield/deferred-lighting/0x1E8A471E.cso deleted file mode 100644 index d1b04e43379942fcd3a8f4ca1d81fc694b8fd6c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47552 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 aInV{K$<&wNww-=vV=XRw_a}27zy4pprhTgb diff --git a/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm deleted file mode 100644 index ba8893eae7..0000000000 --- a/src/games/endfield/deferred-lighting/0x1E8A471E.ps_5_0.asm +++ /dev/null @@ -1,1551 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Thu Jan 29 14:32:26 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[160], dynamicIndexed -dcl_constantbuffer CB6[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture3d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_resource_texture2d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 37 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t22.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t23.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r3.xyz, r1.wwww, r3.xyzx -utof r2.xy, r0.xyxx -mul r4.xy, v0.xyxx, cb0[82].zwzz -mad r4.zw, r4.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -add r5.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mul r5.xy, r5.xyxx, cb0[82].zwzz -sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xyxx, t1.yzwx, s0, l(0.000000) -mul r5.xyzw, -r4.wwww, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r4.zzzz, r5.xyzw -mad r5.xyzw, cb0[26].xyzw, r1.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r1.w, r5.y, cb0[1].z -mad r1.w, cb0[0].z, r5.x, r1.w -mad r1.w, cb0[2].z, r5.z, r1.w -add r1.w, r1.w, cb0[3].z -eq r2.w, l(0.000000), cb0[86].w -add r6.xyz, -r5.xyzx, cb0[44].xyzx -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r6.xyz, r2.wwww, r6.xyzx, r7.xyzx -dp3 r2.w, r6.xyzx, r6.xyzx -max r4.z, r2.w, l(9.999999939E-09) -rsq r4.z, r4.z -mul r8.xyz, r4.zzzz, r6.xyzx -mul r2.w, r2.w, r4.z -lt r4.w, l(0.000488281250), cb0[234].x -if_nz r4.w - sample_b_indexable(texture2d)(float,float,float,float) r9.xy, v1.xyxx, t21.xyzw, s1, cb0[108].x -else - mov r9.xy, l(1.000000,1.000000,0,0) -endif -min r6.w, r9.y, r9.x -add r1.z, r1.z, l(-0.050000) -mul_sat r1.z, r1.z, l(1.052600) -add r7.w, r9.y, l(-1.000000) -mad r10.x, r1.z, r7.w, l(1.000000) -add r10.y, -r1.z, l(1.000000) -movc r9.yz, r4.wwww, r10.xxyx, l(0,1.000000,1.000000,0) -min r1.z, r2.z, r9.y -add r4.w, -r1.z, r2.z -mad r1.z, r6.w, r4.w, r1.z -add r2.z, -r1.z, r2.z -mad r10.w, r9.x, r2.z, r1.z -ld_indexable(texture2d)(float,float,float,float) r11.xyz, r0.xyzz, t24.xyzw -add r1.z, -r9.z, l(1.000000) -mad r1.z, r6.w, r1.z, r9.z -add r2.z, -r1.z, l(1.000000) -mad r1.z, r9.x, r2.z, r1.z -mul r9.xyz, r1.zzzz, r11.xyzx -mul r12.xyz, r1.xxxx, r9.xyzx -mad r11.xyz, r11.xyzx, r1.zzzz, -r12.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r9.xyz, r9.xyzx, r1.xxxx, r1.zzzz -dp3 r1.x, r3.xyzx, r8.xyzx -max r12.x, r1.x, l(0.000000) -mul r13.y, r10.w, r10.w -mul r14.x, r12.x, r12.x -mul r14.z, r12.x, r14.x -mul r1.x, r13.y, r13.y -mul r13.z, r13.y, r1.x -mov r12.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r15.x, l(3.327070, 1.000000, 0.000000, 0.000000), r12.xyxx -dp2 r15.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r12.xzxx -mov r13.x, l(1.000000) -dp2 r1.z, r15.xyxx, r13.xyxx -mov r14.yw, l(0,9.044010,0,1.000000) -dp3 r15.x, l(3.596850, -1.367720, 1.000000, 0.000000), r14.xzwx -dp3 r15.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r14.xyzx -mov r16.x, l(5.565890) -mov r16.yz, r14.xxzx -dp3 r15.z, l(1.000000, 19.788601, -20.212299, 0.000000), r16.xyzx -dp3 r2.z, r15.xyzx, r13.xyzx -div r1.z, r1.z, r2.z -dp2 r15.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r12.xwxx -mov r14.x, l(1.296780) -mov r14.y, r12.x -dp2 r15.y, l(1.000000, -0.755907, 0.000000, 0.000000), r14.xyxx -dp2 r2.z, r15.xyxx, r13.xyxx -dp3 r15.x, l(2.923380, 59.418800, 1.000000, 0.000000), r14.yzwy -mov r14.xw, l(20.322500,0,0,121.563004) -dp3 r15.y, l(1.000000, -27.030199, 222.591995, 0.000000), r14.xyzx -dp3 r15.z, l(626.130005, 316.627014, 1.000000, 0.000000), r14.yzwy -dp3 r4.w, r15.xyzx, r13.xyzx -div r2.z, r2.z, r4.w -mad r12.yzw, r9.xxyz, r1.zzzz, r2.zzzz -add r1.z, r1.z, r2.z -ld_indexable(texture2d)(float,float,float,float) r13.x, r0.xyzz, t7.xzyw -lt r0.z, l(0.001000), r13.x -if_nz r0.z - dp3 r0.z, -r8.xyzx, r3.xyzx - add r0.z, r0.z, r0.z - mad r14.xyz, r3.xyzx, -r0.zzzz, -r8.xyzx - dp3 r0.z, -cb3[0].xyzx, r14.xyzx - mad r15.xyz, cb3[0].xyzx, r0.zzzz, r14.xyzx - lt r0.z, r0.z, cb3[4].z - dp3 r2.z, r15.xyzx, r15.xyzx - max r2.z, r2.z, l(0.0000610351562) - rsq r2.z, r2.z - mul r15.xyz, r2.zzzz, r15.xyzx - mul r15.xyz, r15.xyzx, cb3[4].yyyy - mad r15.xyz, -cb3[0].xyzx, cb3[4].zzzz, r15.xyzx - dp3 r2.z, r15.xyzx, r15.xyzx - rsq r2.z, r2.z - mul r15.xyz, r2.zzzz, r15.xyzx - movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx - mad r15.xyz, r6.xyzx, r4.zzzz, r14.xyzx - dp3 r0.z, r15.xyzx, r15.xyzx - max r0.z, r0.z, l(0.0000610351562) - rsq r0.z, r0.z - mul r15.xyz, r0.zzzz, r15.xyzx - dp3_sat r10.y, r14.xyzx, r3.xyzx - dp3_sat r0.z, r3.xyzx, r15.xyzx - min r10.z, r12.x, l(1.000000) - mad r2.z, r0.z, r1.x, -r0.z - mad r0.z, r2.z, r0.z, l(1.000000) - dp3_sat r2.z, r8.xyzx, r15.xyzx - add r2.z, -r2.z, l(1.000000) - mul r4.w, r2.z, r2.z - mul r4.w, r4.w, r4.w - mul r6.w, r2.z, r4.w - add r7.w, -r10.w, l(1.000000) - mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) - mad r8.w, r7.w, r8.w, l(1.049970) - mad r7.w, r7.w, r8.w, l(0.409255) - min r7.w, r7.w, l(0.999000) - add r8.w, -r7.w, l(1.000000) - add r14.xyz, -r9.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r14.xyz, r14.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r9.xyzx - mad r2.z, -r4.w, r2.z, l(1.000000) - mad r15.xyz, r9.xyzx, r2.zzzz, r6.wwww - mul r0.z, r0.z, r0.z - div r0.z, r1.x, r0.z - mad r16.xy, -r10.zyzz, r1.xxxx, r10.zyzz - mad r16.xy, r16.xyxx, r10.zyzz, r1.xxxx - sqrt r16.xy, r16.xyxx - mul r16.xy, r10.yzyy, r16.xyxx - add r1.x, r16.y, r16.x - add r1.x, r1.x, l(0.000100) - div r1.x, l(0.500000), r1.x - mul r0.z, r0.z, r1.x - mul r15.xyz, r0.zzzz, r15.xyzx - min r15.xyz, r15.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r16.xyzw, r10.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r16.xyxx, t9.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r1.x, r16.zwzz, t9.xyzw, s1, l(0.000000) - mul r0.z, r0.z, r1.x - mul r0.z, r7.w, r0.z - div r0.z, r0.z, r8.w - mul r16.xyz, r14.xyzx, r14.xyzx - mul r16.xyz, r0.zzzz, r16.xyzx - mad r14.xyz, -r14.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r14.xyz, r16.xyzx, r14.xyzx - add r14.xyz, r14.xyzx, r15.xyzx - mul r14.xyz, r14.xyzx, cb3[4].xxxx - max r14.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r14.xyz, r14.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r15.xyz, r10.yyyy, r11.xyzx - mad r14.xyz, r14.xyzx, r10.yyyy, r15.xyzx - mul r14.xyz, r14.xyzx, cb3[1].xyzx - mov r13.z, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, r13.xzxx, t8.xyzw, s1, cb0[108].x - add r0.z, -r13.x, l(1.000000) - mad r13.xzw, r14.xxyz, r15.xxyz, -r14.xxyz - mad r13.xzw, r0.zzzz, r13.xxzw, r14.xxyz - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t10.yzxw, s1, l(0.000000) - ge r36.x, cb13[12].z, l(1.000000) - mad_sat r36.y, r0.z, l(2.000000), l(-1.000000) - mad_sat r36.z, r0.z, l(4.000000), l(-3.000000) - mad_sat r36.w, r2.w, l(0.050000), l(-1.500000) - add r36.z, r36.z, -r36.y - mad r36.y, r36.w, r36.z, r36.y - movc r0.z, r36.x, r36.y, r0.z - min r0.z, r0.z, l(1.000000) - mul r13.xzw, r0.zzzz, r13.xxzw -else - mov r13.xzw, l(0,0,0,0) -endif -mul r10.yz, r2.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) -round_ni r10.yz, r10.yyzy -mad r0.z, r10.z, cb2[1].y, r10.y -mul r0.z, r0.z, l(8.000000) -ftoi r0.z, r0.z -mad r1.x, -cb0[85].y, cb2[2].w, |r1.w| -round_ni r1.x, r1.x -add r2.z, l(-1.000000), cb2[1].w -max r4.w, r1.x, l(0.000000) -min r2.z, r2.z, r4.w -mul r4.w, r2.z, l(8.000000) -ftoi r4.w, r4.w -ge r1.x, r2.z, r1.x -iadd r2.z, r4.w, cb0[110].y -dp3 r4.w, -r8.xyzx, r3.xyzx -add r4.w, r4.w, r4.w -mad r14.xyz, r3.xyzx, -r4.wwww, -r8.xyzx -min r10.x, r12.x, l(1.000000) -add r4.w, -r10.w, l(1.000000) -mad r6.w, -r4.w, l(0.383026), l(-0.0761947036) -mad r6.w, r4.w, r6.w, l(1.049970) -mad r4.w, r4.w, r6.w, l(0.409255) -min r4.w, r4.w, l(0.999000) -add r6.w, -r4.w, l(1.000000) -add r15.xyz, -r9.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r9.xyzx -mad r10.yz, r10.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r7.w, r10.yzyy, t9.yzwx, s1, l(0.000000) -mad r16.xyz, -r15.xyzx, r6.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r15.xyz, r15.xyzx, r15.xyzx -mov r17.w, l(1.000000) -mov r18.y, l(1.000000) -mov r19.z, r10.w -mov r20.xyz, l(0,0,0,0) -mov r8.w, l(1.000000) -mov r9.w, l(0) -loop - ilt r10.y, l(7), r9.w - breakc_nz r10.y - iadd r10.y, r0.z, r9.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.y, r10.y, l(0), t0.xxxx - iadd r10.z, r2.z, r9.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.z, r10.z, l(0), t0.xxxx - and r10.y, r10.z, r10.y - and r10.y, r1.x, r10.y - ishl r10.z, r9.w, l(5) - mov r21.xyz, l(0,0,0,0) - mov r11.w, r8.w - mov r14.w, r10.y - loop - breakc_z r14.w - firstbit_lo r15.w, r14.w - ishl r16.w, l(1), r15.w - xor r16.w, r14.w, r16.w - iadd r15.w, r10.z, r15.w - bfi r22.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r15.wwww, l(1, 3, 5, 6) - bfi r18.z, l(29), l(3), r15.w, l(7) - ftou r18.w, cb3[r22.z + 6].w - ieq r18.w, r18.w, l(1) - if_nz r18.w - add r17.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx - and r23.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.z + 6].xzyx - and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.w + 6].yxzy - ushr r25.xyz, cb3[r22.z + 6].xzyx, l(16, 16, 16, 0) - ushr r26.xyz, cb3[r22.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r23.xyz, r23.xyzx - f16tof32 r24.xyz, r24.xyzx - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyw, r26.yxyz - mov r27.xz, r23.xxzx - mov r27.yw, r25.xxxz - dp4 r18.w, r17.xyzw, r27.xyzw - mov r25.x, r23.y - mov r25.z, r24.y - mov r25.w, r26.x - dp4 r19.w, r17.xyzw, r25.xyzw - mov r26.xz, r24.xxzx - dp4 r17.x, r17.xyzw, r26.xyzw - max r17.y, |r18.w|, |r19.w| - max r17.x, |r17.x|, r17.y - mad r17.y, cb3[r18.z + 6].x, l(0.500000), l(0.500000) - add r17.x, -r17.y, r17.x - mad r17.y, -cb3[r18.z + 6].x, l(0.500000), l(0.500000) - div_sat r17.x, r17.x, r17.y - add r17.x, -r17.x, l(1.000000) - mul r17.x, r17.x, r17.x - else - mov r17.x, l(1.000000) - endif - lt r17.y, l(0.500000), cb3[r22.y + 6].z - lt r17.z, r17.x, l(0.001000) - or r17.z, r17.y, r17.z - if_nz r17.z - mov r14.w, r16.w - continue - endif - ishl r17.z, r15.w, l(3) - bfi r15.w, l(29), l(3), r15.w, l(2) - lt r18.w, cb3[r17.z + 6].w, l(1.500000) - if_nz r18.w - mad r18.w, cb3[r15.w + 6].y, l(0.500000), l(0.500000) - add r23.x, r18.w, -|cb3[r15.w + 6].x| - add r23.y, -r23.x, cb3[r15.w + 6].y - add r18.w, -|r23.x|, l(1.000000) - add r18.w, -|r23.y|, r18.w - max r18.w, r18.w, l(0.000488281250) - ge r19.w, cb3[r15.w + 6].x, l(0.000000) - movc r23.z, r19.w, r18.w, -r18.w - dp3 r18.w, r23.xyzx, r23.xyzx - rsq r18.w, r18.w - mul r23.xyz, r18.wwww, r23.xyzx - add r24.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx - dp3 r18.w, r24.xyzx, r24.xyzx - rsq r19.w, r18.w - mul r25.xyz, r19.wwww, r24.xyzx - ftoi r20.w, cb3[r18.z + 6].w - mul r26.xyz, r23.xyzx, cb3[r15.w + 6].zzzz - mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - mad r28.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - ftou r21.w, cb3[r17.z + 6].w - and r21.w, r21.w, l(1) - ieq r22.z, r21.w, l(0) - not r22.z, r22.z - lt r23.w, l(0.000000), cb3[r15.w + 6].z - and r22.z, r22.z, r23.w - dp3 r23.w, r27.xyzx, r27.xyzx - sqrt r23.w, r23.w - dp3 r24.w, r28.xyzx, r28.xyzx - sqrt r24.w, r24.w - dp3 r25.w, r3.xyzx, r27.xyzx - div r25.w, r25.w, r23.w - dp3 r26.w, r3.xyzx, r28.xyzx - div r26.w, r26.w, r24.w - add r25.w, r25.w, r26.w - mul_sat r29.x, r25.w, l(0.500000) - dp3 r25.w, r27.xyzx, r28.xyzx - mad r23.w, r23.w, r24.w, r25.w - mad r23.w, r23.w, l(0.500000), l(1.000000) - div r29.y, l(1.000000, 1.000000, 1.000000, 1.000000), r23.w - dp3_sat r18.x, r3.xyzx, r25.xyzx - movc r19.xy, r22.zzzz, r29.xyxx, r18.xyxx - lt r18.x, cb3[r22.w + 6].w, l(0.000000) - if_nz r18.x - mul r18.x, cb3[r22.x + 6].w, cb3[r22.x + 6].w - mul r18.x, r18.x, r18.w - mad r18.x, -r18.x, r18.x, l(1.000000) - max r18.x, r18.x, l(0.000000) - add r18.w, r18.w, l(1.000000) - div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), r18.w - and r23.w, r22.z, l(0x3f800000) - add r24.w, -r18.w, r19.y - mad r18.w, r23.w, r24.w, r18.w - mul r18.x, r18.x, r18.x - mul r18.x, r18.x, r18.w - else - mul r28.xyz, r24.xyzx, cb3[r22.x + 6].wwww - dp3 r18.w, r28.xyzx, r28.xyzx - min r18.w, r18.w, l(1.000000) - add r18.w, -r18.w, l(1.000000) - log r18.w, r18.w - mul r18.w, r18.w, cb3[r22.w + 6].w - exp r18.w, r18.w - mul r18.x, r18.w, r19.y - endif - dp3 r18.w, r25.xyzx, -r23.xyzx - add r18.w, r18.w, -cb3[r15.w + 6].z - mul_sat r18.w, r18.w, cb3[r15.w + 6].w - mul r18.w, r18.w, r18.w - movc r18.w, r21.w, l(1.000000), r18.w - mul r18.x, r18.w, r18.x - not r18.w, r22.z - ige r19.y, r20.w, l(0) - and r18.w, r18.w, r19.y - if_nz r18.w - if_z r21.w - ishl r18.w, r20.w, l(2) - mul r23.xyz, r5.yyyy, cb5[r18.w + 33].xywx - mad r23.xyz, cb5[r18.w + 32].xywx, r5.xxxx, r23.xyzx - mad r23.xyz, cb5[r18.w + 34].xywx, r5.zzzz, r23.xyzx - add r23.xyz, r23.xyzx, cb5[r18.w + 35].xywx - div_sat r23.xy, r23.xyxx, r23.zzzz - mad r23.xy, r23.xyxx, cb5[r20.w + 0].zwzz, cb5[r20.w + 0].xyxx - else - ishl r18.w, r20.w, l(2) - dp3 r28.x, -r24.xyzx, cb5[r18.w + 32].xyzx - dp3 r28.y, -r24.xyzx, cb5[r18.w + 33].xyzx - dp3 r28.z, -r24.xyzx, cb5[r18.w + 34].xyzx - lt r18.w, |r28.x|, |r28.y| - and r18.w, r18.w, l(1) - dp2 r19.y, |r28.xyxx|, icb[r18.w + 0].xyxx - lt r19.y, r19.y, |r28.z| - movc r18.w, r19.y, l(2), r18.w - dp3 r19.y, r28.xyzx, icb[r18.w + 0].xyzx - lt r19.y, r19.y, l(0.000000) - bfi r18.w, l(31), l(1), r18.w, r19.y - ushr r19.y, r18.w, l(1) - dp3 r19.y, r28.xyzx, icb[r19.y + 0].xyzx - div r23.z, l(0.000244140625), cb5[r20.w + 0].w - add r23.z, -r23.z, l(0.500000) - utof r23.w, r18.w - ult r24.x, r18.w, l(2) - and r24.x, r24.x, l(2) - dp2 r24.x, r28.xzxx, icb[r24.x + 0].xzxx - mul r24.x, r24.x, icb[r18.w + 4].z - div r24.x, r24.x, |r19.y| - mad r23.w, r24.x, r23.z, r23.w - add r23.w, r23.w, l(0.500000) - mul_sat r24.x, r23.w, l(0.166666672) - iadd r23.w, l(-1), icb[r18.w + 4].y - dp2 r23.w, r28.yzyy, icb[r23.w + 0].xyxx - mul r18.w, r23.w, icb[r18.w + 4].w - div r18.w, r18.w, |r19.y| - mad_sat r24.y, -r18.w, r23.z, l(0.500000) - mad r23.xy, r24.xyxx, cb5[r20.w + 0].zwzz, cb5[r20.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r18.w, r23.xyxx, t11.yzwx, s1, l(0.000000) - mul r18.x, r18.w, r18.x - endif - lt r18.w, l(0.000000), r18.x - if_nz r18.w - if_z r21.w - ftoi r19.y, cb3[r22.y + 6].x - else - add r23.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx - lt r24.xyz, |r23.yzzy|, |r23.xxyx| - and r20.w, r24.y, r24.x - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx - ushr r21.w, cb3[r15.w + 6].w, l(24) - ubfe r24.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r15.w + 6].wwww - movc r21.w, r23.x, r21.w, r24.x - and r23.x, l(255), cb3[r15.w + 6].w - movc r23.x, r23.y, r24.y, r23.x - ubfe r23.y, l(8), l(8), cb3[r22.y + 6].x - and r23.w, l(255), cb3[r22.y + 6].x - movc r23.y, r23.z, r23.y, r23.w - movc r23.x, r24.z, r23.x, r23.y - movc r20.w, r20.w, r21.w, r23.x - ilt r21.w, r20.w, l(80) - movc r19.y, r21.w, r20.w, l(-1) - endif - ishl r20.w, r19.y, l(2) - mad r23.xyz, r25.xyzx, cb4[r19.y + 288].xxxx, r5.xyzx - mul r21.w, l(5.000000), cb4[r19.y + 288].y - mad r23.xyz, r3.xyzx, r21.wwww, r23.xyzx - mul r24.xyzw, r23.yyyy, cb4[r20.w + 65].xyzw - mad r24.xyzw, cb4[r20.w + 64].xyzw, r23.xxxx, r24.xyzw - mad r23.xyzw, cb4[r20.w + 66].xyzw, r23.zzzz, r24.xyzw - add r23.xyzw, r23.xyzw, cb4[r20.w + 67].xyzw - div r23.xyz, r23.xyzx, r23.wwww - ge r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx - ge r28.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r29.xy, -cb4[r19.y + 344].xyxx, cb4[r19.y + 344].zwzz - mad r23.xy, r23.xyxx, r29.xyxx, cb4[r19.y + 344].xyxx - mad r29.xy, r23.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r29.xy, r29.xyxx - mad r23.xy, r23.xyxx, cb4[400].zwzz, -r29.xyxx - add r30.xyzw, r23.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r31.xyzw, r30.xxzz, r30.xxzz - add r29.zw, -r23.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r30.xz, r23.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r32.xy, r23.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r33.xy, r29.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r32.xy, -r32.xyxx, r32.xyxx, r30.ywyy - add r32.xy, r32.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r32.xy, r32.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r31.xz, r31.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r23.xy, r31.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r23.xyxx - mul r34.xy, r23.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r23.xy, -r30.xzxx, r30.xzxx, r29.zwzz - add r23.xy, r23.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r35.xy, r23.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r23.xy, r30.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r34.z, r35.x - mov r34.w, r23.x - mov r33.z, r32.x - mov r33.w, r31.x - add r30.xyzw, r33.zwxz, r34.zwxz - mov r35.z, r34.y - mov r35.w, r23.y - mov r32.z, r33.y - mov r32.w, r31.z - add r23.xyw, r32.zyzw, r35.zyzw - div r31.xyz, r33.xzwx, r30.zwyz - add r31.xyz, r31.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r31.xyz, r31.yxzy, cb4[400].xxxx - div r32.xyz, r32.zywz, r23.xywx - add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r32.xyz, r32.xyzx, cb4[400].yyyy - mov r31.w, r32.x - mad r33.xyzw, r29.xyxy, cb4[400].xyxy, r31.ywxw - mad r29.zw, r29.xxxy, cb4[400].xxxy, r31.zzzw - mov r32.w, r31.y - mov r31.yw, r32.yyyz - mad r34.xyzw, r29.xyxy, cb4[400].xyxy, r31.xyzy - mad r32.xyzw, r29.xyxy, cb4[400].xyxy, r32.wywz - mad r31.xyzw, r29.xyxy, cb4[400].xyxy, r31.xwzw - mul r35.xyzw, r23.xxxy, r30.zwyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r33.xyxx, t6.xxxx, s4, r23.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r33.zwzz, t6.xxxx, s4, r23.z - mul r21.w, r21.w, r35.y - mad r20.w, r35.x, r20.w, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r29.zwzz, t6.xxxx, s4, r23.z - mad r20.w, r35.z, r21.w, r20.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r32.xyxx, t6.xxxx, s4, r23.z - mad r20.w, r35.w, r21.w, r20.w - mul r29.xyzw, r23.yyww, r30.xyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r34.xyxx, t6.xxxx, s4, r23.z - mad r20.w, r29.x, r21.w, r20.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r34.zwzz, t6.xxxx, s4, r23.z - mad r20.w, r29.y, r21.w, r20.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r32.zwzz, t6.xxxx, s4, r23.z - mad r20.w, r29.z, r21.w, r20.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r31.xyxx, t6.xxxx, s4, r23.z - mad r20.w, r29.w, r21.w, r20.w - ige r21.w, r19.y, l(0) - or r24.xyz, r24.xyzx, r28.xyzx - or r23.x, r24.y, r24.x - or r23.x, r24.z, r23.x - and r23.y, r23.z, l(0x7fffffff) - ult r23.y, l(0x7f800000), r23.y - or r23.x, r23.y, r23.x - mul r23.y, r23.w, r30.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.z, r31.zwzz, t6.xxxx, s4, r23.z - mad r20.w, r23.y, r23.z, r20.w - add r20.w, r20.w, l(-1.000000) - mad r19.y, cb4[r19.y + 288].w, r20.w, l(1.000000) - movc r19.y, r23.x, l(1.000000), r19.y - movc r19.y, r21.w, r19.y, l(1.000000) - else - mov r19.y, l(1.000000) - endif - if_nz r22.z - dp3 r20.w, r14.xyzx, r26.xyzx - mul_sat r21.w, r19.w, cb3[r15.w + 6].z - mad r21.w, r21.w, l(0.500000), r13.y - min r21.w, r21.w, l(1.000000) - div r21.w, r13.y, r21.w - mad r23.xyz, r14.xyzx, r20.wwww, -r26.xyzx - dp3 r22.z, r27.xyzx, r23.xyzx - mul r20.w, r20.w, r20.w - mad r20.w, cb3[r15.w + 6].z, cb3[r15.w + 6].z, -r20.w - div_sat r20.w, r22.z, r20.w - mad r23.xyz, r26.xyzx, r20.wwww, r27.xyzx - dp3 r20.w, r23.xyzx, r23.xyzx - rsq r20.w, r20.w - mul r25.xyz, r20.wwww, r23.xyzx - else - mov r21.w, l(1.000000) - endif - if_nz r18.w - mul_sat r18.w, r19.w, cb3[r18.z + 6].y - mad r23.xyz, r6.xyzx, r4.zzzz, r25.xyzx - dp3 r19.w, r23.xyzx, r23.xyzx - max r19.w, r19.w, l(0.0000610351562) - rsq r19.w, r19.w - mul r23.xyz, r19.wwww, r23.xyzx - dp3_sat r19.w, r3.xyzx, r23.xyzx - dp3_sat r20.w, r8.xyzx, r23.xyzx - lt r22.z, l(0.000000), r18.w - mul r18.w, r18.w, r18.w - mad r23.x, r20.w, l(3.600000), l(0.400000) - div r18.w, r18.w, r23.x - mad r18.w, r10.w, r10.w, r18.w - min r18.w, r18.w, l(1.000000) - movc r18.w, r22.z, r18.w, r13.y - mul r18.w, r18.w, r18.w - mad r22.z, r19.w, r18.w, -r19.w - mad r19.w, r22.z, r19.w, l(1.000000) - add r20.w, -r20.w, l(1.000000) - mul r22.z, r20.w, r20.w - mul r22.z, r22.z, r22.z - mul r23.x, r20.w, r22.z - mad r20.w, -r22.z, r20.w, l(1.000000) - mad r23.xyz, r9.xyzx, r20.wwww, r23.xxxx - mul r19.w, r19.w, r19.w - div r19.w, r18.w, r19.w - mul r19.w, r21.w, r19.w - mad r20.w, -r10.x, r18.w, r10.x - mad r20.w, r20.w, r10.x, r18.w - sqrt r20.w, r20.w - mad r21.w, -r19.x, r18.w, r19.x - mad r18.w, r21.w, r19.x, r18.w - sqrt r18.w, r18.w - mul r18.w, r10.x, r18.w - mad r18.w, r19.x, r20.w, r18.w - add r18.w, r18.w, l(0.000100) - div r18.w, l(0.500000), r18.w - mul r18.w, r18.w, r19.w - mul r23.xyz, r18.wwww, r23.xyzx - min r23.xyz, r23.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r24.xy, r19.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r18.w, r24.xyxx, t9.yzwx, s1, l(0.000000) - mul r18.w, r7.w, r18.w - mul r18.w, r4.w, r18.w - div r18.w, r18.w, r6.w - mul r24.xyz, r15.xyzx, r18.wwww - div r24.xyz, r24.xyzx, r16.xyzx - add r23.xyz, r23.xyzx, r24.xyzx - mul r23.xyz, r23.xyzx, cb3[r18.z + 6].zzzz - max r23.xyz, r23.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r23.xyz, r23.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r24.xyz, r11.xyzx, r19.xxxx - mad r23.xyz, r23.xyzx, r19.xxxx, r24.xyzx - mul r24.xyz, r18.xxxx, cb3[r17.z + 6].xyzx - mul r19.xyw, r19.yyyy, r24.xyxz - mul r19.xyw, r17.xxxx, r19.xyxw - mul r19.xyw, r19.xyxw, r23.xyxz - else - mov r19.xyw, l(0,0,0,0) - endif - else - if_z r17.y - mad r17.x, cb3[r15.w + 6].y, l(0.500000), l(0.500000) - add r23.x, r17.x, -|cb3[r15.w + 6].x| - add r23.y, -r23.x, cb3[r15.w + 6].y - add r17.x, -|r23.x|, l(1.000000) - add r17.x, -|r23.y|, r17.x - max r17.x, r17.x, l(0.000488281250) - ge r17.y, cb3[r15.w + 6].x, l(0.000000) - movc r23.z, r17.y, r17.x, -r17.x - dp3 r17.x, r23.xyzx, r23.xyzx - rsq r17.x, r17.x - mul r23.xyz, r17.xxxx, r23.xyzx - add r24.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx - dp3 r17.x, r24.xyzx, r24.xyzx - rsq r17.y, r17.x - mul r25.xyz, r17.yyyy, r24.xyzx - ftoi r17.y, cb3[r18.z + 6].w - mul r18.xzw, r23.xxyz, cb3[r15.w + 6].zzzz - mad r26.xyz, -r18.xzwx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - mad r18.xzw, r18.xxzw, l(0.500000, 0.000000, 0.500000, 0.500000), r24.xxyz - ftou r17.z, cb3[r17.z + 6].w - and r17.z, r17.z, l(1) - ieq r20.w, r17.z, l(0) - not r20.w, r20.w - lt r21.w, l(0.000000), cb3[r15.w + 6].z - and r20.w, r20.w, r21.w - dp3 r21.w, r26.xyzx, r26.xyzx - sqrt r21.w, r21.w - dp3 r22.z, r18.xzwx, r18.xzwx - sqrt r22.z, r22.z - dp3 r18.x, r26.xyzx, r18.xzwx - mad r18.x, r21.w, r22.z, r18.x - mad r18.x, r18.x, l(0.500000), l(1.000000) - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x - movc r18.x, r20.w, r18.x, l(1.000000) - lt r18.z, cb3[r22.w + 6].w, l(0.000000) - if_nz r18.z - mul r18.z, cb3[r22.x + 6].w, cb3[r22.x + 6].w - mul r18.z, r17.x, r18.z - mad r18.z, -r18.z, r18.z, l(1.000000) - max r18.z, r18.z, l(0.000000) - add r17.x, r17.x, l(1.000000) - div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x - and r18.w, r20.w, l(0x3f800000) - add r21.w, -r17.x, r18.x - mad r17.x, r18.w, r21.w, r17.x - mul r18.z, r18.z, r18.z - mul r17.x, r17.x, r18.z - else - mul r26.xyz, r24.xyzx, cb3[r22.x + 6].wwww - dp3 r18.z, r26.xyzx, r26.xyzx - min r18.z, r18.z, l(1.000000) - add r18.z, -r18.z, l(1.000000) - log r18.z, r18.z - mul r18.z, r18.z, cb3[r22.w + 6].w - exp r18.z, r18.z - mul r17.x, r18.z, r18.x - endif - dp3 r18.x, r25.xyzx, -r23.xyzx - add r18.x, r18.x, -cb3[r15.w + 6].z - mul_sat r18.x, r18.x, cb3[r15.w + 6].w - mul r18.x, r18.x, r18.x - movc r18.x, r17.z, l(1.000000), r18.x - mul r17.x, r17.x, r18.x - not r18.x, r20.w - ige r18.z, r17.y, l(0) - and r18.x, r18.z, r18.x - if_nz r18.x - if_z r17.z - ishl r18.x, r17.y, l(2) - mul r23.xyz, r5.yyyy, cb5[r18.x + 33].xywx - mad r23.xyz, cb5[r18.x + 32].xywx, r5.xxxx, r23.xyzx - mad r23.xyz, cb5[r18.x + 34].xywx, r5.zzzz, r23.xyzx - add r18.xzw, r23.xxyz, cb5[r18.x + 35].xxyw - div_sat r18.xz, r18.xxzx, r18.wwww - mad r18.xz, r18.xxzx, cb5[r17.y + 0].zzwz, cb5[r17.y + 0].xxyx - else - ishl r18.w, r17.y, l(2) - dp3 r23.x, -r24.xyzx, cb5[r18.w + 32].xyzx - dp3 r23.y, -r24.xyzx, cb5[r18.w + 33].xyzx - dp3 r23.z, -r24.xyzx, cb5[r18.w + 34].xyzx - lt r18.w, |r23.x|, |r23.y| - and r18.w, r18.w, l(1) - dp2 r20.w, |r23.xyxx|, icb[r18.w + 0].xyxx - lt r20.w, r20.w, |r23.z| - movc r18.w, r20.w, l(2), r18.w - dp3 r20.w, r23.xyzx, icb[r18.w + 0].xyzx - lt r20.w, r20.w, l(0.000000) - bfi r18.w, l(31), l(1), r18.w, r20.w - ushr r20.w, r18.w, l(1) - dp3 r20.w, r23.xyzx, icb[r20.w + 0].xyzx - div r21.w, l(0.000244140625), cb5[r17.y + 0].w - add r21.w, -r21.w, l(0.500000) - utof r22.z, r18.w - ult r22.w, r18.w, l(2) - and r22.w, r22.w, l(2) - dp2 r22.w, r23.xzxx, icb[r22.w + 0].xzxx - mul r22.w, r22.w, icb[r18.w + 4].z - div r22.w, r22.w, |r20.w| - mad r22.z, r22.w, r21.w, r22.z - add r22.z, r22.z, l(0.500000) - mul_sat r24.x, r22.z, l(0.166666672) - iadd r22.z, l(-1), icb[r18.w + 4].y - dp2 r22.z, r23.yzyy, icb[r22.z + 0].xyxx - mul r18.w, r22.z, icb[r18.w + 4].w - div r18.w, r18.w, |r20.w| - mad_sat r24.y, -r18.w, r21.w, l(0.500000) - mad r18.xz, r24.xxyx, cb5[r17.y + 0].zzwz, cb5[r17.y + 0].xxyx - endif - sample_l_indexable(texture2d)(float,float,float,float) r17.y, r18.xzxx, t11.yxzw, s1, l(0.000000) - mul r17.x, r17.y, r17.x - endif - lt r17.x, l(0.000000), r17.x - if_nz r17.x - if_z r17.z - ftoi r17.x, cb3[r22.y + 6].x - else - add r18.xzw, r5.xxyz, -cb3[r22.x + 6].xxyz - lt r22.xzw, |r18.zzww|, |r18.xxxz| - and r17.y, r22.z, r22.x - lt r18.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xxzw - ushr r17.z, cb3[r15.w + 6].w, l(24) - ubfe r22.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r15.w + 6].wwww - movc r17.z, r18.x, r17.z, r22.x - and r15.w, l(255), cb3[r15.w + 6].w - movc r15.w, r18.z, r22.z, r15.w - ubfe r18.x, l(8), l(8), cb3[r22.y + 6].x - and r18.z, l(255), cb3[r22.y + 6].x - movc r18.x, r18.w, r18.x, r18.z - movc r15.w, r22.w, r15.w, r18.x - movc r15.w, r17.y, r17.z, r15.w - ilt r17.y, r15.w, l(80) - movc r17.x, r17.y, r15.w, l(-1) - endif - ishl r15.w, r17.x, l(2) - mad r18.xzw, r25.xxyz, cb4[r17.x + 288].xxxx, r5.xxyz - mul r17.y, l(5.000000), cb4[r17.x + 288].y - mad r18.xzw, r3.xxyz, r17.yyyy, r18.xxzw - mul r22.xyzw, r18.zzzz, cb4[r15.w + 65].xyzw - mad r22.xyzw, cb4[r15.w + 64].xyzw, r18.xxxx, r22.xyzw - mad r22.xyzw, cb4[r15.w + 66].xyzw, r18.wwww, r22.xyzw - add r22.xyzw, r22.xyzw, cb4[r15.w + 67].xyzw - div r18.xzw, r22.xxyz, r22.wwww - ge r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xzwx - ge r23.xyz, r18.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r17.yz, -cb4[r17.x + 344].xxyx, cb4[r17.x + 344].zzwz - mad r17.yz, r18.xxzx, r17.yyzy, cb4[r17.x + 344].xxyx - mad r18.xz, r17.yyzy, cb4[400].zzwz, l(0.500000, 0.000000, 0.500000, 0.000000) - round_ni r18.xz, r18.xxzx - mad r17.yz, r17.yyzy, cb4[400].zzwz, -r18.xxzx - add r24.xyzw, r17.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r25.xyzw, r24.xxzz, r24.xxzz - add r24.xz, -r17.yyzy, l(1.000000, 0.000000, 1.000000, 0.000000) - min r26.xy, r17.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r26.zw, r17.yyyz, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r27.xy, r24.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r26.zw, -r26.zzzw, r26.zzzw, r24.yyyw - add r26.zw, r26.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r28.xy, r26.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r25.xz, r25.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r17.yz, r25.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r17.yyzy - mul r29.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r17.yz, -r26.xxyx, r26.xxyx, r24.xxzx - add r17.yz, r17.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r26.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r17.yz, r24.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r29.z, r26.x - mov r29.w, r17.y - mov r27.z, r28.x - mov r27.w, r25.x - add r24.xyzw, r27.zwxz, r29.zwxz - mov r26.z, r29.y - mov r26.w, r17.z - mov r28.z, r27.y - mov r28.w, r25.z - add r25.xyz, r26.zywz, r28.zywz - div r26.xyz, r27.xzwx, r24.zwyz - add r26.xyz, r26.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r26.xyz, r26.yxzy, cb4[400].xxxx - div r27.xyz, r28.zywz, r25.xyzx - add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r27.xyz, r27.xyzx, cb4[400].yyyy - mov r26.w, r27.x - mad r28.xyzw, r18.xzxz, cb4[400].xyxy, r26.ywxw - mad r17.yz, r18.xxzx, cb4[400].xxyx, r26.zzwz - mov r27.w, r26.y - mov r26.yw, r27.yyyz - mad r29.xyzw, r18.xzxz, cb4[400].xyxy, r26.xyzy - mad r27.xyzw, r18.xzxz, cb4[400].xyxy, r27.wywz - mad r26.xyzw, r18.xzxz, cb4[400].xyxy, r26.xwzw - mul r30.xyzw, r24.zwyz, r25.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r28.xyxx, t6.xxxx, s4, r18.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.zwzz, t6.xxxx, s4, r18.w - mul r18.x, r18.x, r30.y - mad r15.w, r30.x, r15.w, r18.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r17.yzyy, t6.xxxx, s4, r18.w - mad r15.w, r30.z, r17.y, r15.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r27.xyxx, t6.xxxx, s4, r18.w - mad r15.w, r30.w, r17.y, r15.w - mul r28.xyzw, r24.xyzw, r25.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r29.xyxx, t6.xxxx, s4, r18.w - mad r15.w, r28.x, r17.y, r15.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r29.zwzz, t6.xxxx, s4, r18.w - mad r15.w, r28.y, r17.y, r15.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r27.zwzz, t6.xxxx, s4, r18.w - mad r15.w, r28.z, r17.y, r15.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r26.xyxx, t6.xxxx, s4, r18.w - mad r15.w, r28.w, r17.y, r15.w - ige r17.y, r17.x, l(0) - or r22.xyz, r22.xyzx, r23.xyzx - or r17.z, r22.y, r22.x - or r17.z, r22.z, r17.z - and r18.x, r18.w, l(0x7fffffff) - ult r18.x, l(0x7f800000), r18.x - or r17.z, r17.z, r18.x - mul r18.x, r24.y, r25.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r26.zwzz, t6.xxxx, s4, r18.w - mad r15.w, r18.x, r18.z, r15.w - add r15.w, r15.w, l(-1.000000) - mad r15.w, cb4[r17.x + 288].w, r15.w, l(1.000000) - movc r15.w, r17.z, l(1.000000), r15.w - movc r15.w, r17.y, r15.w, l(1.000000) - else - mov r15.w, l(1.000000) - endif - else - mov r15.w, l(1.000000) - endif - mul r11.w, r11.w, r15.w - mov r19.xyw, l(0,0,0,0) - endif - add r21.xyz, r19.xywx, r21.xyzx - mov r14.w, r16.w - endloop - mov r8.w, r11.w - add r20.xyz, r20.xyzx, r21.xyzx - iadd r9.w, r9.w, l(1) -endloop -mad r6.xyz, r20.xyzx, r8.wwww, r13.xzwx -ne r4.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy -movc r4.z, cb13[14].z, l(0xFFFFFFFF), r4.z -if_nz r4.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - add r1.x, r0.z, r12.x - mad r2.z, r10.w, l(-16.000000), l(-1.000000) - exp r2.z, r2.z - log r1.x, |r1.x| - mul r1.x, r1.x, r2.z - exp r1.x, r1.x - add r1.x, r0.z, r1.x - add r1.x, r1.x, l(-1.000000) - mov_sat r10.xyz, r1.xxxx - mad r13.xyz, r11.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r13.xyz, r0.zzzz, r13.xyzx - mad r13.xyz, r11.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r13.xyzx - add r13.xyz, r13.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r13.xyz, r0.zzzz, r13.xyzx - mad r13.xyz, r11.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r13.xyzx - add r13.xyz, r13.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r13.xyz, r0.zzzz, r13.xyzx - max r13.xyz, r0.zzzz, r13.xyzx -else - mov r10.xyz, r1.yyyy - mov r13.xyz, r1.yyyy -endif -movc r10.xyz, cb13[14].zzzz, r10.xyzx, l(1.0, 1.0, 1.0, 0) -mul r6.xyz, r6.xyzx, r10.xyzx -mad r15.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[212].x -mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx -dp2 r0.z, r1.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx -mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r16.xyz, r15.xzyx, -r16.xyzx -max r0.z, |r16.y|, |r16.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.x, |r16.z|, l(-208.000000) -mul_sat r1.x, r1.x, l(0.031250) -max r0.z, r0.z, r1.x -ne r1.x, l(0.000000), cb0[210].w -lt r1.y, r0.z, l(1.000000) -and r1.x, r1.y, r1.x -if_nz r1.x - mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r16.xyz, r15.xzyx, -r16.xyzx - max r1.x, |r16.y|, |r16.x| - add r1.x, r1.x, l(-29.000000) - add r1.y, |r16.z|, l(-13.000000) - mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) - max r1.x, r1.y, r1.x - lt r1.y, r1.x, l(1.000000) - if_nz r1.y - mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r16.xyzx, cb0[211].xyzx - round_ni r17.xyz, r17.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t15.yzwx, s2, l(0.000000) - add r1.y, -r1.x, l(1.000000) - mul r2.z, l(0.500000), cb0[211].y - mad r4.z, -cb0[211].y, l(0.500000), l(1.000000) - max r2.z, r2.z, r16.y - min r2.z, r4.z, r2.z - mul r16.w, r2.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t16.xyzw, s1, l(0.000000) - mad r2.z, r18.w, r1.y, r0.z - add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t16.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r17.yyyy, r19.xyzx - mov r19.w, r17.y - mul r19.xyzw, r1.yyyy, r19.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t16.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r17.xxxx, r16.xyzx - mov r16.w, r17.x - mul r16.xyzw, r1.yyyy, r16.xyzw - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r17.wwww, r18.xyzx - mul r17.xyzw, r1.yyyy, r17.xyzw - else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r2.z, r0.z - endif - mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r18.xyz, r15.xzyx, -r18.xyzx - max r1.y, |r18.y|, |r18.x| - add r1.y, r1.y, l(-116.000000) - mul_sat r1.y, r1.y, l(0.125000) - add r4.z, |r18.z|, l(-52.000000) - mul_sat r4.z, r4.z, l(0.125000) - max r1.y, r1.y, r4.z - lt r4.z, r1.y, l(1.000000) - if_nz r4.z - mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r20.xyz, r18.xyzx, cb0[211].xyzx - round_ni r20.xyz, r20.xyzx - mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t17.yzwx, s2, l(0.000000) - add r4.z, -r1.y, l(1.000000) - mul r1.x, r1.x, r4.z - mul r4.z, l(0.500000), cb0[211].y - mad r6.w, -cb0[211].y, l(0.500000), l(1.000000) - max r4.z, r4.z, r18.y - min r4.z, r6.w, r4.z - mul r18.w, r4.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t18.xyzw, s1, l(0.000000) - mad r2.z, r21.w, r1.x, r2.z - add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t18.xyzw, s1, l(0.000000) - mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r20.yyyy, r22.xyzx - mov r22.w, r20.y - mad r19.xyzw, r22.xyzw, r1.xxxx, r19.xyzw - add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r20.xxxx, r18.xyzx - mov r18.w, r20.x - mad r16.xyzw, r18.xyzw, r1.xxxx, r16.xyzw - mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r18.xyzx - mad r17.xyzw, r20.xyzw, r1.xxxx, r17.xyzw - endif - lt r1.x, l(0.000000), r1.y - if_nz r1.x - mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r15.xyzx, cb0[211].xyzx - mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r18.xyzx - mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r15.xyz, r20.xyzx, r15.xyzx - min r15.xyz, r18.xyzx, r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t19.yzwx, s2, l(0.000000) - add r1.x, -r0.z, l(1.000000) - mul r1.x, r1.x, r1.y - max r1.y, r20.y, r15.y - min r1.y, r18.y, r1.y - mul r15.w, r1.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t20.xyzw, s1, l(0.000000) - add r20.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t20.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r21.yyyy, r20.xyzx - mov r20.w, r21.y - mad r19.xyzw, r20.xyzw, r1.xxxx, r19.xyzw - add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t20.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r21.xxxx, r15.xyzx - mov r15.w, r21.x - mad r16.xyzw, r15.xyzw, r1.xxxx, r16.xyzw - mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r15.xyzx - mad r17.xyzw, r21.xyzw, r1.xxxx, r17.xyzw - mad r2.z, r18.w, r1.x, r2.z - endif - mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) - add r15.x, -r0.z, r1.x - add r0.z, r0.z, r1.x - mul r15.y, r0.z, l(0.500000) -else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r15.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r15.yxyy, cb0[213].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r1.xy, r15.yxyy, cb0[213].wyww -mad r18.x, r1.y, l(0.375000), r1.x -add r17.xyzw, r17.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[214].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r1.xy, r15.yxyy, cb0[214].wyww -mad r18.x, r1.y, l(0.375000), r1.x -add r16.xyzw, r16.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[215].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r1.xy, r15.yxyy, cb0[215].wyww -mad r18.x, r1.y, l(0.375000), r1.x -add r15.xyzw, r18.wyzx, r19.xyzw -ge r1.xy, r4.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r1.y, r1.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.xyxx, t14.xyzw, s1, l(0.000000) - lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| - or r1.xy, r19.zwzz, r19.xyxx - or r0.z, r1.y, r1.x - if_nz r0.z - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mov r1.x, l(1.000000) - mov r1.y, r0.z - mov r2.z, l(0) - loop - ge r4.x, l(4.600000), r1.y - breakc_nz r4.x - iadd r4.x, r2.z, l(1) - mul r4.yz, r1.xxyx, l(0.000000, 0.500000, 0.500000, 0.000000) - mov r1.xy, r4.yzyy - mov r2.z, r4.x - continue - endloop - mul r18.xyzw, r1.xxxx, r18.xyzw - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb6[3].x, cb6[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r1.x, r0.z, l(0.00390625000) - mov r1.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t13.xyzw, s1, l(0.000000) - mad r1.xy, r1.xyxx, cb6[2].xyxx, cb6[2].zwzz - mul r19.x, r1.x, l(3.54490781) - mul r19.yzw, r1.yyyy, r18.yyzw - mul r0.z, r18.x, l(0.406976730) - exp r0.z, r0.z - mul r18.xyzw, r0.zzzz, r19.xyzw - mov r19.xyzw, r18.xyzw - mov r0.z, l(0) - loop - uge r1.x, r0.z, r2.z - breakc_nz r1.x - mul r20.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r1.x, r20.xyzw, r19.xyzw - dp2 r1.y, r20.yxyy, r19.xyxx - dp2 r4.x, r20.zxzz, r19.xzxx - dp2 r4.y, r20.wxww, r19.xwxx - iadd r4.z, r0.z, l(1) - mov r19.xy, r1.xyxx - mov r19.zw, r4.xxxy - mov r0.z, r4.z - continue - endloop - mul r18.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r19.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r18.xyzw, r19.xyzw - dp2 r1.x, r18.yxyy, r19.xyxx - dp2 r1.y, r18.zxzz, r19.xzxx - dp2 r2.z, r18.wxww, r19.xwxx - mul r19.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r4.x, r18.xyzw, r19.xyzw - dp2 r4.y, r18.yxyy, r19.xyxx - dp2 r4.z, r18.zxzz, r19.xzxx - dp2 r6.w, r18.wxww, r19.xwxx - mul r19.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r7.w, r18.xyzw, r19.xyzw - dp2 r8.w, r18.yxyy, r19.xyxx - dp2 r9.w, r18.zxzz, r19.xzxx - dp2 r11.w, r18.wxww, r19.xwxx - mul r17.w, r0.z, l(0.886226952) - mul r17.x, r2.z, l(-1.02332675) - mul r17.yz, r1.xxyx, l(0.000000, -1.02332675, 1.02332675, 0.000000) - mul r16.x, r6.w, l(-1.02332675) - mul r16.yzw, r4.yyzx, l(0.000000, -1.02332675, 1.02332675, 0.886226952) - mul r15.w, r7.w, l(0.886226952) - mul r15.x, r11.w, l(-1.02332675) - mul r15.y, r8.w, l(-1.02332675) - mul r15.z, r9.w, l(1.02332675) - endif -endif -dp3 r0.z, r17.xyzx, r3.xyzx -add r0.z, r17.w, r0.z -max r4.x, r0.z, l(0.000000) -dp3 r0.z, r16.xyzx, r3.xyzx -add r0.z, r16.w, r0.z -max r4.y, r0.z, l(0.000000) -dp3 r0.z, r15.xyzx, r3.xyzx -add r0.z, r15.w, r0.z -max r4.z, r0.z, l(0.000000) -add r0.z, l(-1.000000), cb0[113].x -max r1.x, r10.w, l(0.001000) -log r1.x, r1.x -mad r1.x, -r1.x, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.x -mul r1.xy, r2.xyxx, cb1[0].wwww -round_ni r1.xy, r1.xyxx -add r2.z, |r1.w|, -cb1[2].y -round_ni r2.z, r2.z -add r6.w, l(-1.000000), cb1[1].x -max r7.w, r2.z, l(0.000000) -min r6.w, r6.w, r7.w -ge r2.z, r6.w, r2.z -mad r1.x, r1.y, cb1[0].x, r1.x -ftoi r1.x, r1.x -iadd r1.x, r1.x, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx -ftoi r1.y, r6.w -iadd r1.y, r1.y, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx -and r1.x, r1.y, r1.x -and r1.x, r1.x, r2.z -mul r15.xyz, r4.xyzx, cb0[111].xxxx -dp3 r1.y, r15.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r35.w, r1.y // Store ambient luminance for cubemap modulation -mov r5.w, l(1.000000) -mov r3.w, l(1.000000) -mov r15.xyz, l(0,0,0,0) -mov r2.z, l(1.000000) -mov r6.w, r1.x -mov r7.w, l(0) -loop - lt r8.w, l(0.010000), r2.z - ine r9.w, r6.w, l(0) - and r9.w, r8.w, r9.w - if_nz r9.w - firstbit_lo r9.w, r6.w - ishl r10.w, l(1), r9.w - xor r6.w, r6.w, r10.w - ishl r9.w, r9.w, l(3) - dp4 r16.x, cb1[r9.w + 6].xyzw, r5.xyzw - dp4 r16.y, cb1[r9.w + 7].xyzw, r5.xyzw - dp4 r16.z, cb1[r9.w + 8].xyzw, r5.xyzw - ge r17.xyz, cb1[r9.w + 5].xyzx, |r16.xyzx| - and r10.w, r17.y, r17.x - and r10.w, r17.z, r10.w - if_nz r10.w - mul r10.w, l(0.100000), cb1[r9.w + 5].x - mul r17.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r17.xy, r17.xyxx, r17.xyxx - add r18.xyz, -|r16.xyzx|, cb1[r9.w + 5].xyzx - mul r18.xyz, r18.xyzx, cb1[r9.w + 9].xyzx - eq r11.w, l(1.000000), cb1[r9.w + 10].x - if_nz r11.w - dp3 r19.x, cb1[r9.w + 6].xyzx, r14.xyzx - dp3 r19.y, cb1[r9.w + 7].xyzx, r14.xyzx - dp3 r19.z, cb1[r9.w + 8].xyzx, r14.xyzx - add r20.xyz, -r16.xyzx, cb1[r9.w + 5].xyzx - div r20.xyz, r20.xyzx, r19.xyzx - add r21.xyz, -r16.xyzx, -cb1[r9.w + 5].xyzx - div r21.xyz, r21.xyzx, r19.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx - min r11.w, r20.y, r20.x - min r11.w, r20.z, r11.w - mad r16.xyz, r19.xyzx, r11.wwww, r16.xyzx - else - mov r16.xyz, r14.xyzx - endif - dp3 r11.w, r16.xyzx, r16.xyzx - rsq r11.w, r11.w - mul r16.xyz, r11.wwww, r16.xyzx - lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - lt r20.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r19.xyz, -r19.xyzx, r20.xyzx - itof r19.xyz, r19.xyzx - dp3 r11.w, r16.xyzx, r19.xyzx - div r16.xyz, r16.xyzx, r11.wwww - lt r11.w, r16.z, l(0.000000) - add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r16.zw, r16.zzzw, r19.xxxy - movc r16.xy, r11.wwww, r16.zwzz, r16.xyxx - dp4 r11.w, cb1[r9.w + 4].xyzw, r3.xyzw - max r11.w, r11.w, l(0.000000) - max r11.w, r11.w, l(0.000100) - min r12.x, r18.z, r18.y - min r12.x, r12.x, r18.x - add r13.w, r17.y, r17.x - mad r13.w, r17.z, r17.z, r13.w - mad r10.w, r10.w, r10.w, -r13.w - mul r10.w, r10.w, cb1[r9.w + 9].x - mul r10.w, r10.w, cb1[r9.w + 9].x - add r13.w, l(1.000000), -cb1[r9.w + 10].y - mul r10.w, r10.w, r13.w - mul r10.w, r10.w, l(100.000000) - mad_sat r10.w, r12.x, cb1[r9.w + 10].y, r10.w - mul r12.x, r10.w, cb1[r9.w + 10].w - mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww - mov r16.z, cb1[r9.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z - mul r16.xyz, r16.xyzx, cb1[r9.w + 9].wwww - div r13.w, r1.y, r11.w - min r13.w, |r13.w|, l(1.000000) - mad r13.w, r13.w, l(2.000000), r1.y - add r11.w, r11.w, l(2.000000) - div r11.w, r13.w, r11.w - add r11.w, r11.w, l(-1.000000) - mad r11.w, r11.w, cb0[112].w, l(1.000000) - mul r16.xyz, r11.wwww, r16.xyzx - mul r16.xyz, r12.xxxx, r16.xyzx - mad r15.xyz, r16.xyzx, r2.zzzz, r15.xyzx - mad r9.w, -r10.w, cb1[r9.w + 10].w, l(1.000000) - mul r2.z, r2.z, r9.w - endif - mov r7.w, l(-1) - continue - else - mov r7.w, r8.w - break - endif - mov r7.w, r8.w -endloop -if_nz r7.w - dp3 r1.x, r14.xyzx, r14.xyzx - rsq r1.x, r1.x - mul r5.xzw, r1.xxxx, r14.xxyz - lt r14.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r5.xzwx - lt r16.xyz, r5.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r14.xyz, -r14.xyzx, r16.xyzx - itof r14.xyz, r14.xyzx - dp3 r1.x, r5.xzwx, r14.xyzx - div r5.xzw, r5.xxzw, r1.xxxx - lt r1.x, r5.w, l(0.000000) - add r14.zw, -|r5.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r14.xy, r14.zwzz, r14.xyxx - movc r5.xz, r1.xxxx, r14.xxyx, r5.xxzx - mov r3.w, l(1.000000) - dp4 r1.x, cb1[3].xyzw, r3.xyzw - max r1.x, r1.x, l(0.000000) - max r1.x, r1.x, l(0.000100) - mad r3.xy, r5.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r3.xy, r3.xyxx, cb1[1].wwww, cb1[2].wwww - mov r3.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s3, r0.z - div r0.z, r1.y, r1.x - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r1.y - add r1.x, r1.x, l(2.000000) - div r0.z, r0.z, r1.x - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r3.xyz, r0.zzzz, r3.xyzx - mad r15.xyz, r3.xyzx, r2.zzzz, r15.xyzx -endif -mul r3.xyz, r15.xyzx, cb0[112].zzzz -mul r3.xyz, r3.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].y) -if_nz cb13[13].y - max r35.w, r35.w, l(0.000000) - min r35.w, r35.w, l(1.000000) - mad r35.w, r35.w, l(0.750000), l(0.250000) - mul r3.xyz, r3.xyzx, r35.wwww -endif -if_nz r4.w - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x - add r1.x, -r0.z, l(1.000000) - mul r14.xyz, r1.xxxx, r3.xyzx - mad r3.xyz, r5.xzwx, r0.zzzz, r14.xyzx -endif -mul r4.xyz, r11.xyzx, r4.xyzx -mul r4.xyz, r4.xyzx, cb0[111].xxxx -add r0.z, -r1.z, l(1.000000) -div r0.z, r0.z, r1.z -mul r1.xyz, r0.zzzz, r9.xyzx -mad r1.xyz, r1.xyzx, r12.yzwy, r12.yzwy -mul r1.xyz, r1.xyzx, r3.xyzx -mul r1.xyz, r10.xyzx, r1.xyzx -mad r1.xyz, r4.xyzx, r13.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r6.xyzx -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r2.z, r2.w, cb0[154].w, -cb0[153].w -max r2.z, r2.z, l(0.000000) -mul r3.x, r0.z, l(-1.442695) -exp r3.x, r3.x -add r3.x, -r3.x, l(1.000000) -div r0.z, r3.x, r0.z -mad r3.x, r5.y, cb0[156].w, cb0[158].w -mul r3.x, r3.x, l(1.442695) -exp r3.x, r3.x -mul r0.z, r0.z, r3.x -mul r0.z, r0.z, -r2.z -mul r3.xyz, r0.zzzz, cb0[155].xyzx -mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r3.xyz, r3.xyzx -dp3 r0.z, -r8.xyzx, cb0[154].xyzx -mad r2.z, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r3.w, r0.zzzz, cb0[155].wwww -add r2.z, r2.z, -r3.w -lt r3.w, l(0.000000), cb0[163].z -if_nz r3.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r4.x, r0.y, r0.w, r0.x - dp3 r0.x, -r8.xyzx, -r7.xyzx - add r3.w, r5.y, -cb0[44].y - lt r4.z, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r4.z - mul r0.x, r0.x, cb0[163].w - div r4.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w - mul r4.w, r0.x, r4.z - mad r5.x, r4.w, r3.w, cb0[44].y - mad r3.w, -r4.w, r3.w, r3.w - mul r4.w, r3.w, cb0[159].z - max r4.w, r4.w, l(-127.000000) - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - add r5.z, r5.x, -cb0[159].x - mul r5.z, r5.z, cb0[159].z - max r5.z, r5.z, l(-127.000000) - exp r5.z, -r5.z - mul r5.z, r5.z, cb0[159].y - lt r5.w, l(5.960464478E-08), |r4.w| - exp r6.x, -r4.w - add r6.x, -r6.x, l(1.000000) - div r6.x, r6.x, r4.w - mad r4.w, -r4.w, l(0.240226507), l(0.693147182) - movc r4.w, r5.w, r6.x, r4.w - add r5.x, r5.x, -cb0[162].z - mul r5.x, r5.x, cb0[162].x - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[162].y - lt r5.w, l(5.960464478E-08), |r3.w| - exp r6.x, -r3.w - add r6.x, -r6.x, l(1.000000) - div r6.x, r6.x, r3.w - mad r3.w, -r3.w, l(0.240226507), l(0.693147182) - movc r3.w, r5.w, r6.x, r3.w - mul r3.w, r3.w, r5.x - mad r3.w, r5.z, r4.w, r3.w - mad r0.x, -r0.x, r4.z, l(1.000000) - mul r0.x, r2.w, r0.x - mul r0.x, r0.x, r3.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r4.zw, r2.wwww, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r4.z - add r0.x, r4.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r4.y, r0.w, r4.x, r0.y - ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r2.xxxy - mul r4.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r1.w|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r4.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t12.xyzw, s1, l(0.000000) - add r0.y, |r1.w|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r4.xyzw, r0.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r5.xzw, r0.yyyy, cb0[161].xxyz - mad r4.xyz, r5.xzwx, r4.wwww, r4.xyzx - mul r0.x, r0.x, r4.w -else - add r0.y, r5.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r1.w, cb0[44].y, -cb0[159].x - mul r1.w, r1.w, cb0[159].z - max r1.w, r1.w, l(-127.000000) - exp r1.w, -r1.w - mul r1.w, r1.w, cb0[159].y - lt r2.x, l(5.960464478E-08), |r0.w| - exp r2.y, -r0.w - add r2.y, -r2.y, l(1.000000) - div r2.y, r2.y, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r2.x, r2.y, r0.w - add r2.x, cb0[44].y, -cb0[162].z - mul r2.x, r2.x, cb0[162].x - max r2.x, r2.x, l(-127.000000) - exp r2.x, -r2.x - mul r2.x, r2.x, cb0[162].y - lt r2.y, l(5.960464478E-08), |r0.y| - exp r3.w, -r0.y - add r3.w, -r3.w, l(1.000000) - div r3.w, r3.w, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r2.y, r3.w, r0.y - mul r0.y, r0.y, r2.x - mad r0.y, r1.w, r0.w, r0.y - mul r0.y, r2.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r2.xy, r2.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r2.x - add r0.y, r2.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r2.xyw, r0.xxxx, r3.xyxz -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r1.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r2.z, l(12.566371) -sqrt r2.z, r2.z -mul r2.z, r2.z, r3.w -max r2.z, r2.z, l(0.001000) -div r1.w, r1.w, r2.z -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r3.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r4.xyzx - -// Check fog modification toggle (cb13[12].y) -if_z cb13[12].y - mad o0.xyz, r1.xyzx, r2.xywx, r0.xyzx - dp3 o0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) - ret -else - // === Fog Modification (Anti-Banding) === - mul r5.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) - mul r6.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) - add r7.xyz, -r2.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r7.xyz, r7.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r2.xywx - mul r6.xyz, r6.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - mad r8.xyz, r5.xyzx, r7.xyzx, r6.xyzx - mul o0.xyz, r8.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) - dp3 o0.w, r2.xywx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) - ret -endif -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x32F53924.cso b/src/games/endfield/deferred-lighting/0x32F53924.cso new file mode 100644 index 0000000000000000000000000000000000000000..b5f49c8be0e4a116ed0cdec6f2a551f7ce8f8124 GIT binary patch literal 52244 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x355D50B7.cso b/src/games/endfield/deferred-lighting/0x355D50B7.cso new file mode 100644 index 0000000000000000000000000000000000000000..e96524fcbabeee4f22db156b08d89b249bfafbeb GIT binary patch literal 27572 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 ZhAE%Q{K)wQ4)KZa*%=4^GzER?e*v$H3IG5A literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x355D50B7.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x355D50B7.ps_5_0.asm new file mode 100644 index 0000000000..e57ad9f010 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x355D50B7.ps_5_0.asm @@ -0,0 +1,896 @@ +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[239], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[4], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture2d (float,float,float,float) t19 +dcl_resource_texture2d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_resource_texture3d (float,float,float,float) t23 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 29 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t20.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t21.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r3.xyz, r1.wwww, r3.xyzx +utof r2.xy, r0.xyxx +mul r4.xy, v0.xyxx, cb0[82].zwzz +mad r4.zw, r4.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r5.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r5.xy, r5.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xyxx, t1.yzwx, s0, l(0.000000) +mul r5.xyzw, -r4.wwww, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r4.zzzz, r5.xyzw +mad r5.xyzw, cb0[26].xyzw, r1.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r1.w, r5.y, cb0[1].z +mad r1.w, cb0[0].z, r5.x, r1.w +mad r1.w, cb0[2].z, r5.z, r1.w +add r1.w, r1.w, cb0[3].z +eq r2.w, l(0.000000), cb0[86].w +add r6.xyz, -r5.xyzx, cb0[44].xyzx +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r8.xyz, r2.wwww, r6.xyzx, r7.xyzx +dp3 r2.w, r8.xyzx, r8.xyzx +max r4.z, r2.w, l(0.000000) +rsq r4.z, r4.z +mul r9.xyz, r4.zzzz, r8.xyzx +mul r4.w, r2.w, r4.z +lt r6.w, l(0.000488), cb0[238].x +if_nz r6.w + sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t19.xyzw, s1, cb0[108].x +else + mov r10.xy, l(1.000000,1.000000,0,0) +endif +min r7.w, r10.y, r10.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r8.w, r10.y, l(-1.000000) +mad r11.x, r1.z, r8.w, l(1.000000) +add r11.y, -r1.z, l(1.000000) +movc r10.yz, r6.wwww, r11.xxyx, l(0,1.000000,1.000000,0) +min r1.z, r2.z, r10.y +add r6.w, -r1.z, r2.z +mad r1.z, r7.w, r6.w, r1.z +add r2.z, -r1.z, r2.z +mad r11.z, r10.x, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xyzz, t22.xyzw +add r1.z, -r10.z, l(1.000000) +mad r1.z, r7.w, r1.z, r10.z +add r2.z, -r1.z, l(1.000000) +mad r1.z, r10.x, r2.z, r1.z +mul r10.xyz, r1.zzzz, r12.xyzx +mul r13.xyz, r1.xxxx, r10.xyzx +mad r12.xyz, r12.xyzx, r1.zzzz, -r13.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r10.xyz, r10.xyzx, r1.xxxx, r1.zzzz +dp3 r1.x, r3.xyzx, r9.xyzx +max r13.x, r1.x, l(0.000000) +mul r14.y, r11.z, r11.z +mul r15.x, r13.x, r13.x +mul r15.z, r13.x, r15.x +mul r1.x, r14.y, r14.y +mul r14.z, r14.y, r1.x +mov r13.yzw, l(0,0.036546,9.063200,0.990440) +dp2 r16.x, l(3.327070, 1.000000, 0.000000, 0.000000), r13.xyxx +dp2 r16.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r13.xzxx +mov r14.x, l(1.000000) +dp2 r1.z, r16.xyxx, r14.xyxx +mov r15.yw, l(0,9.044010,0,1.000000) +dp3 r16.x, l(3.596850, -1.367720, 1.000000, 0.000000), r15.xzwx +dp3 r16.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r15.xyzx +mov r17.x, l(5.565890) +mov r17.yz, r15.xxzx +dp3 r16.z, l(1.000000, 19.788601, -20.212299, 0.000000), r17.xyzx +dp3 r2.z, r16.xyzx, r14.xyzx +div r1.z, r1.z, r2.z +dp2 r16.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r13.xwxx +mov r15.x, l(1.296780) +mov r15.y, r13.x +dp2 r16.y, l(1.000000, -0.755907, 0.000000, 0.000000), r15.xyxx +dp2 r2.z, r16.xyxx, r14.xyxx +dp3 r16.x, l(2.923380, 59.418800, 1.000000, 0.000000), r15.yzwy +mov r15.xw, l(20.322500,0,0,121.563004) +dp3 r16.y, l(1.000000, -27.030199, 222.591995, 0.000000), r15.xyzx +dp3 r16.z, l(626.130005, 316.627014, 1.000000, 0.000000), r15.yzwy +dp3 r6.w, r16.xyzx, r14.xyzx +div r2.z, r2.z, r6.w +mad r13.yzw, r10.xxyz, r1.zzzz, r2.zzzz +add r1.z, r1.z, r2.z +ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t6.xyzw +lt r0.z, l(0.001000), r14.x +if_nz r0.z + dp3 r0.z, -r9.xyzx, r3.xyzx + add r0.z, r0.z, r0.z + mad r15.xyz, r3.xyzx, -r0.zzzz, -r9.xyzx + dp3 r0.z, -cb2[0].xyzx, r15.xyzx + mad r16.xyz, cb2[0].xyzx, r0.zzzz, r15.xyzx + lt r0.z, r0.z, cb2[4].z + dp3 r2.z, r16.xyzx, r16.xyzx + max r2.z, r2.z, l(0.000061) + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + mul r16.xyz, r16.xyzx, cb2[4].yyyy + mad r16.xyz, -cb2[0].xyzx, cb2[4].zzzz, r16.xyzx + dp3 r2.z, r16.xyzx, r16.xyzx + rsq r2.z, r2.z + mul r16.xyz, r2.zzzz, r16.xyzx + movc r15.xyz, r0.zzzz, r16.xyzx, r15.xyzx + mad r8.xyz, r8.xyzx, r4.zzzz, r15.xyzx + dp3 r0.z, r8.xyzx, r8.xyzx + max r0.z, r0.z, l(0.000061) + rsq r0.z, r0.z + mul r8.xyz, r0.zzzz, r8.xyzx + dp3_sat r11.x, r15.xyzx, r3.xyzx + dp3_sat r0.z, r3.xyzx, r8.xyzx + min r11.y, r13.x, l(1.000000) + mad r2.z, r0.z, r1.x, -r0.z + mad r0.z, r2.z, r0.z, l(1.000000) + dp3_sat r2.z, r9.xyzx, r8.xyzx + add r2.z, -r2.z, l(1.000000) + mul r6.w, r2.z, r2.z + mul r6.w, r6.w, r6.w + mul r7.w, r2.z, r6.w + add r8.x, -r11.z, l(1.000000) + mad r8.y, -r8.x, l(0.383026), l(-0.076195) + mad r8.y, r8.x, r8.y, l(1.049970) + mad r8.x, r8.x, r8.y, l(0.409255) + min r8.x, r8.x, l(0.999000) + add r8.y, -r8.x, l(1.000000) + add r15.xyz, -r10.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r10.xyzx + mad r2.z, -r6.w, r2.z, l(1.000000) + mad r16.xyz, r10.xyzx, r2.zzzz, r7.wwww + mul r0.z, r0.z, r0.z + div r0.z, r1.x, r0.z + mad r8.zw, -r11.yyyx, r1.xxxx, r11.yyyx + mad r8.zw, r8.zzzw, r11.yyyx, r1.xxxx + sqrt r8.zw, r8.zzzw + mul r8.zw, r8.zzzw, r11.xxxy + add r1.x, r8.w, r8.z + add r1.x, r1.x, l(0.000100) + div r1.x, l(0.500000), r1.x + mul r0.z, r0.z, r1.x + mul r16.xyz, r0.zzzz, r16.xyzx + min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r17.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r17.xyxx, t8.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r1.x, r17.zwzz, t8.xyzw, s1, l(0.000000) + mul r0.z, r0.z, r1.x + mul r0.z, r8.x, r0.z + div r0.z, r0.z, r8.y + mul r8.xzw, r15.xxyz, r15.xxyz + mul r8.xzw, r0.zzzz, r8.xxzw + mad r15.xyz, -r15.xyzx, r8.yyyy, l(1.000000, 1.000000, 1.000000, 0.000000) + div r8.xyz, r8.xzwx, r15.xyzx + add r8.xyz, r8.xyzx, r16.xyzx + mul r8.xyz, r8.xyzx, cb2[4].xxxx + max r8.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r8.xyz, r8.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r15.xyz, r11.xxxx, r12.xyzx + mad r8.xyz, r8.xyzx, r11.xxxx, r15.xyzx + mul r8.xyz, r8.xyzx, cb2[1].xyzx + mov r14.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r14.xyxx, t7.xywz, s1, cb0[108].x + add r0.z, -r14.x, l(1.000000) + mad r11.xyw, r8.xyxz, r11.xyxw, -r8.xyxz + mad r8.xyz, r0.zzzz, r11.xywx, r8.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t9.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r8.xyz, r0.zzzz, r8.xyzx +else + mov r8.xyz, l(0,0,0,0) +endif +ne r11.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx +if_nz r11.x + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + add r1.x, r0.z, r13.x + mad r2.z, r11.z, l(-16.000000), l(-1.000000) + exp r2.z, r2.z + log r1.x, |r1.x| + mul r1.x, r1.x, r2.z + exp r1.x, r1.x + add r1.x, r0.z, r1.x + add r1.x, r1.x, l(-1.000000) + mov_sat r14.xyz, r1.xxxx + mad r15.xyz, r12.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r15.xyz, r0.zzzz, r15.xyzx + mad r15.xyz, r12.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r15.xyzx + add r15.xyz, r15.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r15.xyz, r0.zzzz, r15.xyzx + mad r15.xyz, r12.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r15.xyzx + add r15.xyz, r15.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r15.xyz, r0.zzzz, r15.xyzx + max r15.xyz, r0.zzzz, r15.xyzx +else + mov r14.xyz, r1.yyyy + mov r15.xyz, r1.yyyy +endif +mad r16.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[216].x +mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx +dp2 r0.z, r1.xyxx, l(0.067111, 0.005837, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r16.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r16.xyzx +mad r17.xyz, cb0[6].xzyx, -cb0[216].wwww, cb0[214].xzyx +add r17.xyz, r16.xzyx, -r17.xyzx +max r0.z, |r17.y|, |r17.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.x, |r17.z|, l(-208.000000) +mul_sat r1.x, r1.x, l(0.031250) +max r0.z, r0.z, r1.x +ne r1.x, l(0.000000), cb0[214].w +lt r1.y, r0.z, l(1.000000) +and r1.x, r1.y, r1.x +if_nz r1.x + mad r17.xyz, cb0[6].xzyx, -cb0[216].yyyy, cb0[214].xzyx + add r17.xyz, r16.xzyx, -r17.xyzx + max r1.x, |r17.y|, |r17.x| + add r1.x, r1.x, l(-29.000000) + add r1.y, |r17.z|, l(-13.000000) + mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + max r1.x, r1.y, r1.x + lt r1.y, r1.x, l(1.000000) + if_nz r1.y + mad r17.xyz, r16.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r17.xyzx, cb0[215].xyzx + round_ni r18.xyz, r18.xyzx + mad r17.xyz, r17.xyzx, cb0[215].xyzx, -r18.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t13.yzwx, s2, l(0.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.z, l(0.500000), cb0[215].y + mad r6.w, -cb0[215].y, l(0.500000), l(1.000000) + max r2.z, r2.z, r17.y + min r2.z, r6.w, r2.z + mul r17.w, r2.z, l(0.333333) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t14.xyzw, s1, l(0.000000) + mad r2.z, r19.w, r1.y, r0.z + add r20.xyz, r17.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t14.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r18.yyyy, r20.xyzx + mov r20.w, r18.y + mul r20.xyzw, r1.yyyy, r20.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t14.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r18.xxxx, r17.xyzx + mov r17.w, r18.x + mul r17.xyzw, r1.yyyy, r17.xyzw + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r18.wwww, r19.xyzx + mul r18.xyzw, r1.yyyy, r18.xyzw + else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r2.z, r0.z + endif + mad r19.xyz, cb0[6].xzyx, -cb0[216].zzzz, cb0[214].xzyx + add r19.xyz, r16.xzyx, -r19.xyzx + max r1.y, |r19.y|, |r19.x| + add r1.y, r1.y, l(-116.000000) + mul_sat r1.y, r1.y, l(0.125000) + add r6.w, |r19.z|, l(-52.000000) + mul_sat r6.w, r6.w, l(0.125000) + max r1.y, r1.y, r6.w + lt r6.w, r1.y, l(1.000000) + if_nz r6.w + mad r19.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r21.xyz, r19.xyzx, cb0[215].xyzx + round_ni r21.xyz, r21.xyzx + mad r19.xyz, r19.xyzx, cb0[215].xyzx, -r21.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r19.xyzx, t15.yzwx, s2, l(0.000000) + add r6.w, -r1.y, l(1.000000) + mul r1.x, r1.x, r6.w + mul r6.w, l(0.500000), cb0[215].y + mad r7.w, -cb0[215].y, l(0.500000), l(1.000000) + max r6.w, r6.w, r19.y + min r6.w, r7.w, r6.w + mul r19.w, r6.w, l(0.333333) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyzw, r19.xwzx, t16.xyzw, s1, l(0.000000) + mad r2.z, r22.w, r1.x, r2.z + add r23.xyz, r19.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r23.xyz, r23.xyzx, t16.xyzw, s1, l(0.000000) + mad r23.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r23.xyz, r21.yyyy, r23.xyzx + mov r23.w, r21.y + mad r20.xyzw, r23.xyzw, r1.xxxx, r20.xyzw + add r19.xyz, r19.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t16.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r21.xxxx, r19.xyzx + mov r19.w, r21.x + mad r17.xyzw, r19.xyzw, r1.xxxx, r17.xyzw + mad r19.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r19.xyzx + mad r18.xyzw, r21.xyzw, r1.xxxx, r18.xyzw + endif + lt r1.x, l(0.000000), r1.y + if_nz r1.x + mad r16.xyz, r16.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r16.xyzx, cb0[215].xyzx + mul r21.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[215].xyzx + round_ni r19.xyz, r19.xyzx + mad r16.xyz, r16.xyzx, cb0[215].xyzx, -r19.xyzx + mad r19.xyz, -cb0[215].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r16.xyz, r21.xyzx, r16.xyzx + min r16.xyz, r19.xyzx, r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) + add r1.x, -r0.z, l(1.000000) + mul r1.x, r1.x, r1.y + max r1.y, r21.y, r16.y + min r1.y, r19.y, r1.y + mul r16.w, r1.y, l(0.333333) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) + add r21.xyz, r16.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t18.xyzw, s1, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r22.yyyy, r21.xyzx + mov r21.w, r22.y + mad r20.xyzw, r21.xyzw, r1.xxxx, r20.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r22.xxxx, r16.xyzx + mov r16.w, r22.x + mad r17.xyzw, r16.xyzw, r1.xxxx, r17.xyzw + mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r22.wwww, r16.xyzx + mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw + mad r2.z, r19.w, r1.x, r2.z + endif + mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) + add r16.x, -r0.z, r1.x + add r0.z, r0.z, r1.x + mul r16.y, r0.z, l(0.500000) +else + mov r20.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r18.xyzw, l(0,0,0,0) + mov r16.xy, l(0,1.000000,0,0) +endif +mul r19.xyzw, r16.yxyy, cb0[217].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r1.xy, r16.yxyy, cb0[217].wyww +mad r19.x, r1.y, l(0.375000), r1.x +add r18.xyzw, r18.xyzw, r19.wyzx +mul r19.xyzw, r16.yxyy, cb0[218].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r1.xy, r16.yxyy, cb0[218].wyww +mad r19.x, r1.y, l(0.375000), r1.x +add r17.xyzw, r17.xyzw, r19.wyzx +mul r19.xyzw, r16.yxyy, cb0[219].ywzx +mad r19.y, r19.y, l(0.500000), r19.x +mul r1.xy, r16.yxyy, cb0[219].wyww +mad r19.x, r1.y, l(0.375000), r1.x +add r16.xyzw, r19.wyzx, r20.xyzw +ge r1.xy, r4.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r1.y, r1.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r19.xyzw, r4.xyxx, t12.xyzw, s1, l(0.000000) + lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r19.xyzw| + or r1.xy, r20.zwzz, r20.xyxx + or r0.z, r1.y, r1.x + if_nz r0.z + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mov r1.x, l(1.000000) + mov r1.y, r0.z + mov r2.z, l(0) + loop + ge r4.x, l(4.600000), r1.y + breakc_nz r4.x + iadd r4.x, r2.z, l(1) + mul r11.xw, r1.xxxy, l(0.500000, 0.000000, 0.000000, 0.500000) + mov r1.xy, r11.xwxx + mov r2.z, r4.x + continue + endloop + mul r19.xyzw, r1.xxxx, r19.xyzw + dp3 r0.z, r19.yzwy, r19.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb3[3].x, cb3[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r1.x, r0.z, l(0.003906) + mov r1.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t11.xyzw, s1, l(0.000000) + mad r1.xy, r1.xyxx, cb3[2].xyxx, cb3[2].zwzz + mul r20.x, r1.x, l(3.544908) + mul r20.yzw, r1.yyyy, r19.yyzw + mul r0.z, r19.x, l(0.406977) + exp r0.z, r0.z + mul r19.xyzw, r0.zzzz, r20.xyzw + mov r20.xyzw, r19.xyzw + mov r0.z, l(0) + loop + uge r1.x, r0.z, r2.z + breakc_nz r1.x + mul r21.xyzw, r20.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) + dp4 r1.x, r21.xyzw, r20.xyzw + dp2 r1.y, r21.yxyy, r20.xyxx + dp2 r4.x, r21.zxzz, r20.xzxx + dp2 r4.y, r21.wxww, r20.xwxx + iadd r6.w, r0.z, l(1) + mov r20.xy, r1.xyxx + mov r20.zw, r4.xxxy + mov r0.z, r6.w + continue + endloop + mul r19.xyzw, r20.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) + mul r20.xyzw, r18.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r19.xyzw, r20.xyzw + dp2 r1.x, r19.yxyy, r20.xyxx + dp2 r1.y, r19.zxzz, r20.xzxx + dp2 r2.z, r19.wxww, r20.xwxx + mul r20.xyzw, r17.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) + dp4 r4.x, r19.xyzw, r20.xyzw + dp2 r4.y, r19.yxyy, r20.xyxx + dp2 r6.w, r19.zxzz, r20.xzxx + dp2 r7.w, r19.wxww, r20.xwxx + mul r20.xyzw, r16.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) + dp4 r8.w, r19.xyzw, r20.xyzw + dp2 r9.w, r19.yxyy, r20.xyxx + dp2 r10.w, r19.zxzz, r20.xzxx + dp2 r11.x, r19.wxww, r20.xwxx + mul r18.w, r0.z, l(0.886227) + mul r18.x, r2.z, l(-1.023327) + mul r18.yz, r1.xxyx, l(0.000000, -1.023327, 1.023327, 0.000000) + mul r17.x, r7.w, l(-1.023327) + mul r17.yw, r4.yyyx, l(0.000000, -1.023327, 0.000000, 0.886227) + mul r17.z, r6.w, l(1.023327) + mul r16.w, r8.w, l(0.886227) + mul r16.x, r11.x, l(-1.023327) + mul r16.y, r9.w, l(-1.023327) + mul r16.z, r10.w, l(1.023327) + endif +endif +dp3 r0.z, r18.xyzx, r3.xyzx +add r0.z, r18.w, r0.z +max r18.x, r0.z, l(0.000000) +dp3 r0.z, r17.xyzx, r3.xyzx +add r0.z, r17.w, r0.z +max r18.y, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r3.xyzx +add r0.z, r16.w, r0.z +max r18.z, r0.z, l(0.000000) +dp3 r0.z, -r9.xyzx, r3.xyzx +add r0.z, r0.z, r0.z +mad r16.xyz, r3.xyzx, -r0.zzzz, -r9.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r1.x, r11.z, l(0.001000) +log r1.x, r1.x +mad r1.x, -r1.x, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.x +mul r1.xy, r2.xyxx, cb1[0].wwww +round_ni r1.xy, r1.xyxx +add r2.z, |r1.w|, -cb1[2].y +round_ni r2.z, r2.z +add r4.x, l(-1.000000), cb1[1].x +max r4.y, r2.z, l(0.000000) +min r4.x, r4.x, r4.y +ge r2.z, r4.x, r2.z +mad r1.x, r1.y, cb1[0].x, r1.x +ftoi r1.x, r1.x +iadd r1.x, r1.x, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx +ftoi r1.y, r4.x +iadd r1.y, r1.y, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx +and r1.x, r1.y, r1.x +and r1.x, r1.x, r2.z +mul r11.xzw, r18.xxyz, cb0[111].xxxx +dp3 r1.y, r11.xzwx, l(0.212673, 0.715152, 0.072175, 0.000000) +mov r28.x, r1.y // Store ambient luminance for cubemap modulation +mov r5.w, l(1.000000) +mov r3.w, l(1.000000) +mov r11.xzw, l(0,0,0,0) +mov r2.z, l(1.000000) +mov r4.x, r1.x +mov r4.y, l(0) +loop + lt r6.w, l(0.010000), r2.z + ine r7.w, r4.x, l(0) + and r7.w, r6.w, r7.w + if_nz r7.w + firstbit_lo r7.w, r4.x + ishl r8.w, l(1), r7.w + xor r4.x, r4.x, r8.w + ishl r7.w, r7.w, l(3) + dp4 r17.x, cb1[r7.w + 6].xyzw, r5.xyzw + dp4 r17.y, cb1[r7.w + 7].xyzw, r5.xyzw + dp4 r17.z, cb1[r7.w + 8].xyzw, r5.xyzw + ge r19.xyz, cb1[r7.w + 5].xyzx, |r17.xyzx| + and r8.w, r19.y, r19.x + and r8.w, r19.z, r8.w + if_nz r8.w + mul r8.w, l(0.100000), cb1[r7.w + 5].x + mul r19.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r19.xy, r19.xyxx, r19.xyxx + add r20.xyz, -|r17.xyzx|, cb1[r7.w + 5].xyzx + mul r20.xyz, r20.xyzx, cb1[r7.w + 9].xyzx + eq r9.w, l(1.000000), cb1[r7.w + 10].x + if_nz r9.w + dp3 r21.x, cb1[r7.w + 6].xyzx, r16.xyzx + dp3 r21.y, cb1[r7.w + 7].xyzx, r16.xyzx + dp3 r21.z, cb1[r7.w + 8].xyzx, r16.xyzx + add r22.xyz, -r17.xyzx, cb1[r7.w + 5].xyzx + div r22.xyz, r22.xyzx, r21.xyzx + add r23.xyz, -r17.xyzx, -cb1[r7.w + 5].xyzx + div r23.xyz, r23.xyzx, r21.xyzx + lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx + movc r22.xyz, r24.xyzx, r22.xyzx, r23.xyzx + min r9.w, r22.y, r22.x + min r9.w, r22.z, r9.w + mad r17.xyz, r21.xyzx, r9.wwww, r17.xyzx + else + mov r17.xyz, r16.xyzx + endif + dp3 r9.w, r17.xyzx, r17.xyzx + rsq r9.w, r9.w + mul r17.xyz, r9.wwww, r17.xyzx + lt r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx + lt r22.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r21.xyz, -r21.xyzx, r22.xyzx + itof r21.xyz, r21.xyzx + dp3 r9.w, r17.xyzx, r21.xyzx + div r17.xyz, r17.xyzx, r9.wwww + lt r9.w, r17.z, l(0.000000) + add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r17.zw, r17.zzzw, r21.xxxy + movc r17.xy, r9.wwww, r17.zwzz, r17.xyxx + dp4 r9.w, cb1[r7.w + 4].xyzw, r3.xyzw + max r9.w, r9.w, l(0.000000) + max r9.w, r9.w, l(0.000100) + min r10.w, r20.z, r20.y + min r10.w, r10.w, r20.x + add r12.w, r19.y, r19.x + mad r12.w, r19.z, r19.z, r12.w + mad r8.w, r8.w, r8.w, -r12.w + mul r8.w, r8.w, cb1[r7.w + 9].x + mul r8.w, r8.w, cb1[r7.w + 9].x + add r12.w, l(1.000000), -cb1[r7.w + 10].y + mul r8.w, r8.w, r12.w + mul r8.w, r8.w, l(100.000000) + mad_sat r8.w, r10.w, cb1[r7.w + 10].y, r8.w + mul r10.w, r8.w, cb1[r7.w + 10].w + mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r17.xy, r17.xyxx, cb1[1].wwww, cb1[2].wwww + mov r17.z, cb1[r7.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t5.xyzw, s3, r0.z + mul r17.xyz, r17.xyzx, cb1[r7.w + 9].wwww + div r12.w, r1.y, r9.w + min r12.w, |r12.w|, l(1.000000) + mad r12.w, r12.w, l(2.000000), r1.y + add r9.w, r9.w, l(2.000000) + div r9.w, r12.w, r9.w + add r9.w, r9.w, l(-1.000000) + mad r9.w, r9.w, cb0[112].w, l(1.000000) + mul r17.xyz, r9.wwww, r17.xyzx + mul r17.xyz, r10.wwww, r17.xyzx + mad r11.xzw, r17.xxyz, r2.zzzz, r11.xxzw + mad r7.w, -r8.w, cb1[r7.w + 10].w, l(1.000000) + mul r2.z, r2.z, r7.w + endif + mov r4.y, l(-1) + continue + else + mov r4.y, r6.w + break + endif + mov r4.y, r6.w +endloop +if_nz r4.y + dp3 r1.x, r16.xyzx, r16.xyzx + rsq r1.x, r1.x + mul r16.xyz, r1.xxxx, r16.xyzx + lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + lt r19.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r17.xyz, -r17.xyzx, r19.xyzx + itof r17.xyz, r17.xyzx + dp3 r1.x, r16.xyzx, r17.xyzx + div r16.xyz, r16.xyzx, r1.xxxx + lt r1.x, r16.z, l(0.000000) + add r4.xy, -|r16.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r4.xy, r4.xyxx, r17.xyxx + movc r4.xy, r1.xxxx, r4.xyxx, r16.xyxx + mov r3.w, l(1.000000) + dp4 r1.x, cb1[3].xyzw, r3.xyzw + max r1.x, r1.x, l(0.000000) + max r1.x, r1.x, l(0.000100) + mad r3.xy, r4.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb1[1].wwww, cb1[2].wwww + mov r3.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s3, r0.z + div r0.z, r1.y, r1.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r1.y + add r1.x, r1.x, l(2.000000) + div r0.z, r0.z, r1.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r3.xyz, r0.zzzz, r3.xyzx + mad r11.xzw, r3.xxyz, r2.zzzz, r11.xxzw +endif +mul r3.xyz, r11.xzwx, cb0[112].zzzz +mul r3.xyz, r3.xyzx, cb0[111].yyyy +// Cubemap ambient link modulation (cb13[13].y) +if_nz cb13[13].y + max r28.x, r28.x, l(0.000000) + min r28.x, r28.x, l(1.000000) + mad r28.x, r28.x, l(0.750000), l(0.250000) + mul r3.xyz, r3.xyzx, r28.xxxx +endif +if_nz r11.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r11.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x + add r1.x, -r0.z, l(1.000000) + mul r16.xyz, r1.xxxx, r3.xyzx + mad r3.xyz, r11.xyzx, r0.zzzz, r16.xyzx +endif +mul r11.xyz, r12.xyzx, r18.xyzx +mul r11.xyz, r11.xyzx, cb0[111].xxxx +add r0.z, -r1.z, l(1.000000) +div r0.z, r0.z, r1.z +mul r1.xyz, r0.zzzz, r10.xyzx +mad r1.xyz, r1.xyzx, r13.yzwy, r13.yzwy +mul r1.xyz, r1.xyzx, r3.xyzx +mul r1.xyz, r14.xyzx, r1.xyzx +mad r1.xyz, r11.xyzx, r15.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r8.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r2.z, r4.w, cb0[154].w, -cb0[153].w +max r2.z, r2.z, l(0.000000) +mul r3.x, r0.z, l(-1.442695) +exp r3.x, r3.x +add r3.x, -r3.x, l(1.000000) +div r0.z, r3.x, r0.z +mad r3.x, r5.y, cb0[156].w, cb0[158].w +mul r3.x, r3.x, l(1.442695) +exp r3.x, r3.x +mul r0.z, r0.z, r3.x +mul r0.z, r0.z, -r2.z +mul r3.xyz, r0.zzzz, cb0[155].xyzx +mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r3.xyz, r3.xyzx +dp3 r0.z, -r9.xyzx, cb0[154].xyzx +mad r2.z, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r3.w, r0.zzzz, cb0[155].wwww +add r2.z, r2.z, -r3.w +lt r3.w, l(0.000000), cb0[165].z +if_nz r3.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r4.x, r0.y, r0.w, r0.x + dp3 r0.x, -r9.xyzx, -r7.xyzx + add r3.w, r5.y, -cb0[44].y + lt r5.w, l(0.000000), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r5.w + mul r0.x, r0.x, cb0[165].w + div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul r6.w, r0.x, r5.w + mad r7.x, r6.w, r3.w, cb0[44].y + mad r3.w, -r6.w, r3.w, r3.w + mad r0.x, -r0.x, r5.w, l(1.000000) + mul r5.w, r4.w, r0.x + mul r6.w, r3.w, cb0[159].z + max r6.w, r6.w, l(-127.000000) + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + add r7.y, r7.x, -cb0[159].x + mul r7.y, r7.y, cb0[159].z + max r7.y, r7.y, l(-127.000000) + exp r7.y, -r7.y + mul r7.y, r7.y, cb0[159].y + lt r7.z, l(0.000000), |r6.w| + exp r7.w, -r6.w + add r7.w, -r7.w, l(1.000000) + div r7.w, r7.w, r6.w + mad r6.w, -r6.w, l(0.240227), l(0.693147) + movc r6.w, r7.z, r7.w, r6.w + add r7.x, r7.x, -cb0[162].z + mul r7.x, r7.x, cb0[162].x + max r7.x, r7.x, l(-127.000000) + exp r7.x, -r7.x + mul r7.x, r7.x, cb0[162].y + lt r7.z, l(0.000000), |r3.w| + exp r7.w, -r3.w + add r7.w, -r7.w, l(1.000000) + div r7.w, r7.w, r3.w + mad r3.w, -r3.w, l(0.240227), l(0.693147) + movc r3.w, r7.z, r7.w, r3.w + mul r3.w, r3.w, r7.x + mad r3.w, r7.y, r6.w, r3.w + mad_sat r7.xy, r4.wwww, cb0[160].wyww, cb0[160].zxzz + mul r5.w, r5.w, r3.w + exp r5.w, -r5.w + min r5.w, r5.w, l(1.000000) + max r5.w, r5.w, cb0[161].w + add r5.w, r7.y, r5.w + add r5.w, r7.x, r5.w + min r5.w, r5.w, l(1.000000) + imad r4.y, r0.w, r4.x, r0.y + ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.000031, 0.000000, 0.000031), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[169].wwww, r2.xxxy + mul r8.xy, r0.ywyy, cb0[167].xyxx + mad r0.y, |r1.w|, cb0[166].x, cb0[166].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[166].z + div r8.z, r0.y, cb0[165].z + sample_l_indexable(texture3d)(float,float,float,float) r8.xyzw, r8.xyzx, t10.xyzw, s1, l(0.000000) + add r0.y, |r1.w|, -cb0[168].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r8.xyzw, r8.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r8.xyzw, r0.yyyy, r8.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r5.w, l(1.000000) + dp3_sat r0.w, r9.xyzx, cb0[163].xyzx + log r0.w, r0.w + mul r0.w, r0.w, cb0[164].w + exp r0.w, r0.w + mul r7.yzw, r0.wwww, cb0[164].xxyz + mad r0.x, r0.x, r4.w, -cb0[163].w + max r0.x, r0.x, l(0.000000) + mul r0.x, r0.x, r3.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + add r0.x, -r0.x, l(1.000000) + mul r7.yzw, r0.xxxx, r7.yyzw + add r0.x, -r7.x, l(1.000000) + mul r7.xyz, r0.xxxx, r7.yzwy + mad r0.xyw, cb0[161].xyxz, r0.yyyy, r7.xyxz + mad r0.xyw, r0.xyxw, r8.wwww, r8.xyxz + mul r1.w, r5.w, r8.w +else + add r2.x, r5.y, -cb0[44].y + mul r2.y, r2.x, cb0[159].z + mul r2.x, r2.x, cb0[162].x + max r2.xy, r2.xyxx, l(-127.000000, -127.000000, 0.000000, 0.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(0.000000), |r2.y| + exp r4.y, -r2.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r2.y + mad r2.y, -r2.y, l(0.240227), l(0.693147) + movc r2.y, r4.x, r4.y, r2.y + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(0.000000), |r2.x| + exp r5.w, -r2.x + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r2.x + mad r2.x, -r2.x, l(0.240227), l(0.693147) + movc r2.x, r4.y, r5.w, r2.x + mul r2.x, r2.x, r4.x + mad r2.x, r3.w, r2.y, r2.x + mad_sat r4.xy, r4.wwww, cb0[160].wyww, cb0[160].zxzz + mul r2.y, r4.w, r2.x + exp r2.y, -r2.y + min r2.y, r2.y, l(1.000000) + max r2.y, r2.y, cb0[161].w + add r2.y, r4.y, r2.y + add r2.y, r4.x, r2.y + min r1.w, r2.y, l(1.000000) + add r2.y, -r1.w, l(1.000000) + dp3_sat r3.w, r9.xyzx, cb0[163].xyzx + log r3.w, r3.w + mul r3.w, r3.w, cb0[164].w + exp r3.w, r3.w + mul r7.xyz, r3.wwww, cb0[164].xyzx + mad r2.w, r2.w, r4.z, -cb0[163].w + max r2.w, r2.w, l(0.000000) + mul r2.x, r2.w, r2.x + exp r2.x, -r2.x + min r2.x, r2.x, l(1.000000) + add r2.x, -r2.x, l(1.000000) + mul r4.yzw, r2.xxxx, r7.xxyz + add r2.x, -r4.x, l(1.000000) + mul r4.xyz, r2.xxxx, r4.yzwy + mad r0.xyw, cb0[161].xyxz, r2.yyyy, r4.xyxz +endif +mul r2.xyw, r1.wwww, r3.xyxz +mad r0.z, r0.z, r0.z, l(1.000000) +mul r0.z, r0.z, l(0.059683) +mad r4.xyz, cb0[156].xyzx, r0.zzzz, cb0[158].xyzx +mad r0.z, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r2.z, l(12.566371) +sqrt r2.z, r2.z +mul r2.z, r2.z, r3.w +max r2.z, r2.z, l(0.001000) +div r0.z, r0.z, r2.z +mad_sat r4.xyz, cb0[157].xyzx, r0.zzzz, r4.xyzx +mul r4.xyz, r4.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r3.xyz, r3.xyzx, r4.xyzx +mad r0.xyz, r3.xyzx, r1.wwww, r0.xywx +lt r27.x, l(0.500000), cb13[12].y +if_nz r27.x + mul r25.xyz, r2.xywx, l(-1.000000, -1.000000, -1.000000, 0.000000) + add r25.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r25.xyz, r25.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r2.xywx + mul r26.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + mad r0.xyz, r1.xyzx, r25.xyzx, r26.xyzx +else + mad r0.xyz, r1.xyzx, r2.xywx, r0.xyzx +endif +dp3 r0.w, r2.xywx, l(0.333333, 0.333333, 0.333333, 0.000000) +dp3 r1.w, r6.xyzx, r6.xyzx +sqrt r1.w, r1.w +mad_sat r1.w, -r1.w, cb0[171].z, l(1.000000) +mul r2.x, r1.w, cb0[171].x +mad r1.w, -cb0[171].x, r1.w, l(1.000000) +mul r2.yzw, cb0[170].xxyz, cb0[185].wwww +mad r2.yzw, r5.xxyz, cb0[171].yyyy, r2.yyzw +sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t23.xwyz, s2, l(0.000000) +dp2 r2.x, r2.yyyy, r2.xxxx +add r1.w, r1.w, r2.x +add r2.x, r0.w, l(1.000000) +min r1.w, r1.w, r2.x +add r0.xyz, -r1.xyzx, r0.xyzx +mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx +mov o0.w, r0.w +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x37837806.cso b/src/games/endfield/deferred-lighting/0x37837806.cso deleted file mode 100644 index 600de51ed64235121959e602d0b5d4a52d573562..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27168 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 E0D*Xxk^lez diff --git a/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm deleted file mode 100644 index 8abc7ffcb7..0000000000 --- a/src/games/endfield/deferred-lighting/0x518D3855.ps_5_0.asm +++ /dev/null @@ -1,1705 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 23:54:24 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[5], immediateIndexed -dcl_constantbuffer CB6[160], dynamicIndexed -dcl_constantbuffer CB7[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_sampler s5, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture3d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture3d (float,float,float,float) t21 -dcl_resource_texture3d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_resource_texture2d (float,float,float,float) t25 -dcl_resource_texture2d (float,float,float,float) t26 -dcl_resource_texture3d (float,float,float,float) t27 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 39 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t24.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t25.xyzw -ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t26.xyzw -mul r1.xyzw, r1.xwyz, l(1023.000000, 3.000000, 1023.000000, 1023.000000) -ftou r1.xyw, r1.xyxw -ubfe r4.x, l(7), l(3), r1.x -bfi r4.yz, l(0, 3, 3, 0), l(0, 2, 2, 0), r1.xxwx, l(0, 0, 0, 0) -bfi r1.x, l(2), l(0), r1.y, r4.y -utof r1.x, r1.x -mul r1.y, r1.x, l(0.0322580636) -round_ne r1.z, r1.z -ftou r1.z, r1.z -ubfe r4.y, l(7), l(3), r1.z -utof r4.xy, r4.xyxx -mul r4.y, r4.y, l(0.00787401572) -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r4.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r5.y, -r4.w, l(1.000000) -lt r4.w, r5.y, l(0.000000) -ge r6.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r6.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r6.xy, r6.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r6.xy, r6.xyxx, r6.zwzz -movc r5.xz, r4.wwww, r6.xxyx, r2.xxyx -dp3 r2.x, r5.xyzx, r5.xyzx -rsq r2.x, r2.x -mul r6.xyz, r2.xxxx, r5.xyzx -and r1.z, r1.z, l(7) -utof r1.z, r1.z -mad r1.z, r1.z, l(0.107142866), l(0.500000) -utof r5.xz, r0.xxyx -mul r7.xy, v0.xyxx, cb0[82].zwzz -mad r7.zw, r7.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -add r8.xy, r5.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mul r8.xy, r8.xyxx, cb0[82].zwzz -sample_l_indexable(texture2d)(float,float,float,float) r2.y, r8.xyxx, t1.yxzw, s0, l(0.000000) -mul r8.xyzw, -r7.wwww, cb0[25].xyzw -mad r8.xyzw, cb0[24].xyzw, r7.zzzz, r8.xyzw -mad r8.xyzw, cb0[26].xyzw, r2.yyyy, r8.xyzw -add r8.xyzw, r8.xyzw, cb0[27].xyzw -div r8.xyz, r8.xyzx, r8.wwww -mul r2.y, r8.y, cb0[1].z -mad r2.y, cb0[0].z, r8.x, r2.y -mad r2.y, cb0[2].z, r8.z, r2.y -add r2.y, r2.y, cb0[3].z -eq r4.w, l(0.000000), cb0[86].w -add r9.xyz, -r8.xyzx, cb0[44].xyzx -mov r10.x, cb0[0].z -mov r10.y, cb0[1].z -mov r10.z, cb0[2].z -movc r11.xyz, r4.wwww, r9.xyzx, r10.xyzx -dp3 r4.w, r11.xyzx, r11.xyzx -max r5.w, r4.w, l(9.999999939E-09) -rsq r5.w, r5.w -mul r12.xyz, r5.wwww, r11.xyzx -mul r4.w, r4.w, r5.w -lt r7.z, l(0.000488281250), cb0[234].x -if_nz r7.z - sample_b_indexable(texture2d)(float,float,float,float) r7.z, v1.xyxx, t23.yzxw, s1, cb0[108].x -else - mov r7.z, l(1.000000) -endif -lt r13.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[226].xyxx -if_nz r13.x - add r7.w, |r6.y|, |r6.x| - add r7.w, |r6.z|, r7.w - div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w - mul r13.xzw, |r6.xxyz|, r7.wwww - mul r14.xyzw, r13.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) - add r14.xyz, r14.zwzz, r14.xxyx - mad r13.xzw, r13.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r14.xxyz - mul r14.xyz, r8.xyzx, cb0[229].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r7.w, r14.xyzx, t10.yzwx, s2, l(0.000000) - mad r7.w, r7.w, l(2.000000), l(-1.000000) - mul r13.xzw, r7.wwww, r13.xxzw - mov r7.w, |r6.y| - add r7.w, r7.w, l(-0.700000) - mul_sat r7.w, r7.w, l(4.000000) - mad r9.w, r7.w, l(-2.000000), l(3.000000) - mul r7.w, r7.w, r7.w - mul r7.w, r7.w, r9.w - add r9.w, -cb0[229].z, cb0[229].y - mad r7.w, r7.w, r9.w, cb0[229].z - mul r13.xzw, r7.wwww, r13.xxzw -else - mov r13.xzw, l(0,0,0,0) -endif -if_nz r13.y - mul r14.xyz, r6.xyzx, cb0[233].zzzz - mul r15.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy - mad r14.xyz, r14.xyzx, cb0[225].xxxx, r15.xyzx - max r7.w, -r6.y, l(0.000000) - min r7.w, r7.w, l(0.900000) - add r7.w, -r7.w, l(1.000000) - mad r2.x, -r5.y, r2.x, l(-0.200000) - mul_sat r2.x, r2.x, l(-10.000000) - mad r5.y, r2.x, l(-2.000000), l(3.000000) - mul r2.x, r2.x, r2.x - mul r2.x, r2.x, r5.y - max r2.x, r2.x, l(0.100000) - min r2.x, r2.x, l(1.000000) - mul r2.x, r2.x, r7.w - mad r14.xyz, r14.xyzx, r2.xxxx, r8.xyzx - add r13.xyz, r13.xzwx, r14.xyzx - mul r14.xyz, r13.yyyy, cb5[1].xyzx - mad r13.xyw, cb5[0].xyxz, r13.xxxx, r14.xyxz - mad r13.xyz, cb5[2].xyzx, r13.zzzz, r13.xywx - add r13.xyz, r13.xyzx, cb5[3].xyzx - mad r14.x, r13.x, l(0.500000), cb5[4].x - mad r2.x, r13.y, l(0.500000), l(0.500000) - add r14.z, -r2.x, cb5[4].y - add r13.xy, r14.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r2.x, r13.z, l(0.000488281250) - sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r13.xyxx, t9.xxxx, s5, r2.x -else - mov r2.x, l(1.000000) -endif -mov_sat r5.y, r6.y -add r7.w, l(1.000000), -cb0[230].w -mad r5.y, r5.y, r7.w, cb0[230].w -add r13.xy, r8.xzxx, -cb0[44].xzxx -max r7.w, |r13.y|, |r13.x| -mul r9.w, r5.y, cb0[230].z -mul r10.w, r2.x, r5.y -mul r11.w, l(0.0500000119), cb0[222].w -mad r12.w, -cb0[222].w, l(0.700000), r7.w -div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w -mul_sat r11.w, r11.w, r12.w -mad r12.w, r11.w, l(-2.000000), l(3.000000) -mul r11.w, r11.w, r11.w -mul r11.w, r11.w, r12.w -mad r2.x, -r5.y, r2.x, l(1.000000) -mad r2.x, r11.w, r2.x, r10.w -mad r5.y, -cb0[230].z, r5.y, l(1.000000) -mad r2.x, r2.x, r5.y, r9.w -mad r5.y, cb0[230].x, cb0[222].w, -cb0[222].w -add r7.w, r7.w, -cb0[222].w -div r5.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y -mul_sat r5.y, r5.y, r7.w -mad r7.w, r5.y, l(-2.000000), l(3.000000) -mul r5.y, r5.y, r5.y -mul r5.y, r5.y, r7.w -add r7.w, -r2.x, cb0[230].y -mad r2.x, r5.y, r7.w, r2.x -add r2.x, -r2.x, l(1.000000) -mad r2.x, -r7.z, r2.x, l(1.000000) -mad_sat r5.y, r2.z, l(0.300000), l(0.250000) -mul r5.y, r5.y, cb0[222].x -mul r5.y, r2.x, r5.y -mad r5.y, r5.y, l(-0.750000), l(1.000000) -mul r3.xyz, r3.xyzx, r5.yyyy -min r5.y, r2.z, l(0.300000) -mul r2.x, r2.x, cb0[222].x -mul r2.xw, r2.xxxw, l(0.500000, 0.000000, 0.000000, 3.000000) -add r5.y, -r2.z, r5.y -mad r13.w, r2.x, r5.y, r2.z -mul r2.x, r1.z, l(0.080000) -dp3 r2.z, r6.xyzx, r12.xyzx -max r5.y, r2.z, l(0.000000) -mad r14.xyzw, r13.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r7.z, r14.x, r14.x -mul r7.w, r5.y, l(-9.280000) -exp r7.w, r7.w -min r7.z, r7.w, r7.z -mad r7.z, r7.z, r14.x, r14.y -mad r7.zw, r7.zzzz, l(0.000000, 0.000000, -1.040000, 1.040000), r14.zzzw -ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t7.xyzw -lt r0.z, l(0.001000), r14.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r7.xyxx, t12.yzxw, s1, l(0.000000) - ge r38.x, cb13[12].z, l(1.000000) - mul r38.y, r0.z, r0.z - mul r38.y, r38.y, r38.y - movc r0.z, r38.x, r38.y, r0.z - dp3 r9.w, -r12.xyzx, r6.xyzx - add r9.w, r9.w, r9.w - mad r15.xyz, r6.xyzx, -r9.wwww, -r12.xyzx - dp3 r9.w, -cb3[0].xyzx, r15.xyzx - mad r16.xyz, cb3[0].xyzx, r9.wwww, r15.xyzx - lt r9.w, r9.w, cb3[4].z - dp3 r10.w, r16.xyzx, r16.xyzx - max r10.w, r10.w, l(0.0000610351562) - rsq r10.w, r10.w - mul r16.xyz, r10.wwww, r16.xyzx - mul r16.xyz, r16.xyzx, cb3[4].yyyy - mad r16.xyz, -cb3[0].xyzx, cb3[4].zzzz, r16.xyzx - dp3 r10.w, r16.xyzx, r16.xyzx - rsq r10.w, r10.w - mul r16.xyz, r10.wwww, r16.xyzx - movc r15.xyz, r9.wwww, r16.xyzx, r15.xyzx - mad r16.xyz, r11.xyzx, r5.wwww, r15.xyzx - dp3 r9.w, r16.xyzx, r16.xyzx - max r9.w, r9.w, l(0.0000610351562) - rsq r9.w, r9.w - mul r16.xyz, r9.wwww, r16.xyzx - dp3 r9.w, r6.xyzx, r15.xyzx - mov_sat r13.y, r9.w - dp3_sat r10.w, r6.xyzx, r16.xyzx - dp3 r11.w, r12.xyzx, r15.xyzx - min r13.z, r5.y, l(1.000000) - mul r12.w, r13.w, r13.w - mul r12.w, r12.w, r12.w - mad r14.z, r10.w, r12.w, -r10.w - mad r10.w, r14.z, r10.w, l(1.000000) - dp3_sat r14.z, r12.xyzx, r16.xyzx - add r14.z, -r14.z, l(1.000000) - mul r14.w, r14.z, r14.z - mul r14.w, r14.w, r14.w - mul r15.x, r14.z, r14.w - add r15.y, -r13.w, l(1.000000) - mad r15.z, -r15.y, l(0.383026), l(-0.0761947036) - mad r15.z, r15.y, r15.z, l(1.049970) - mad r15.y, r15.y, r15.z, l(0.409255) - min r15.y, r15.y, l(0.999000) - add r15.z, -r15.y, l(1.000000) - mad r15.w, -r1.z, l(0.080000), l(1.000000) - mad r15.w, r15.w, l(0.0476190485), r2.x - mov_sat r16.x, -r11.w - mul r16.x, r16.x, r16.x - mad r16.x, r16.x, l(-0.640000), l(1.000000) - mul r16.x, r16.x, r16.x - mad r14.z, -r14.w, r14.z, l(1.000000) - mad r14.z, r2.x, r14.z, r15.x - mul r10.w, r10.w, r10.w - div r10.w, r12.w, r10.w - mad r16.yz, -r13.zzyz, r12.wwww, r13.zzyz - mad r16.yz, r16.yyzy, r13.zzyz, r12.wwww - sqrt r16.yz, r16.yyzy - mul r16.yz, r13.yyzy, r16.yyzy - add r12.w, r16.z, r16.y - add r12.w, r12.w, l(0.000100) - div r12.w, l(0.500000), r12.w - mul r10.w, r10.w, r12.w - mul r10.w, r10.w, r14.z - min r10.w, r10.w, l(2048.000000) - mad r17.xyzw, r13.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r12.w, r17.xyxx, t11.yzwx, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r13.z, r17.zwzz, t11.yzxw, s1, l(0.000000) - mul r12.w, r12.w, r13.z - mul r12.w, r15.y, r12.w - div r12.w, r12.w, r15.z - mul r13.z, r15.w, r15.w - mul r12.w, r12.w, r13.z - mad r13.z, -r15.w, r15.z, l(1.000000) - div r12.w, r12.w, r13.z - add r10.w, r10.w, r12.w - add_sat r12.w, r2.z, l(0.200000) - mov_sat r13.z, r11.w - add r13.z, r13.z, l(0.500000) - min r13.z, r13.z, l(1.000000) - mul r14.z, r12.w, r13.z - add_sat r11.w, r11.w, l(1.000000) - mad r12.w, -r12.w, r13.z, l(1.000000) - mad r11.w, r11.w, r12.w, r14.z - mul r10.w, r10.w, r11.w - mul r10.w, r4.y, r10.w - mul r15.xyz, r4.yyyy, r3.xyzx - ubfe r1.w, l(7), l(3), r1.w - utof r1.w, r1.w - mul r1.w, r1.w, l(0.00787401572) - mul r10.w, r10.w, cb3[4].x - max r10.w, r10.w, l(0.000000) - min r10.w, r10.w, l(1000.000000) - mul r10.w, r13.y, r10.w - mad r15.xyz, r15.xyzx, r1.wwww, r10.wwww - max r1.w, r3.y, r3.x - max r1.w, r3.z, r1.w - max r1.w, r1.w, l(0.010000) - div r16.yzw, r3.xxyz, r1.wwww - mul r1.w, r4.x, l(0.00393700786) - mul r16.yzw, r1.wwww, r16.yyzw - add_sat r1.w, -r9.w, l(0.500000) - ne r10.w, r16.x, l(0.360000) - div r11.w, l(0.360000), r16.x - movc r10.w, r10.w, r11.w, l(1.000000) - mul r1.w, r1.w, r10.w - mad_sat r9.w, r1.x, l(0.0322580636), r9.w - add r9.w, -r13.y, r9.w - mul r17.xyz, r3.xyzx, r9.wwww - mad r16.xyz, r16.yzwy, r1.wwww, r17.xyzx - mad r15.xyz, r16.xyzx, r4.yyyy, r15.xyzx - mul r15.xyz, r15.xyzx, cb3[1].xyzx - mov r14.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r14.yzw, r14.xyxx, t8.wxyz, s1, cb0[108].x - add r1.w, -r14.x, l(1.000000) - mad r14.xyz, r15.xyzx, r14.yzwy, -r15.xyzx - mad r14.xyz, r1.wwww, r14.xyzx, r15.xyzx - max r1.w, r4.y, r0.z - add r1.w, -r0.z, r1.w - mad r0.z, r1.y, r1.w, r0.z - mul r14.xyz, r0.zzzz, r14.xyzx -else - mov r14.xyz, l(0,0,0,0) -endif -mul r1.yw, r5.xxxz, l(0.000000, 0.031250, 0.000000, 0.031250) -round_ni r1.yw, r1.yyyw -mad r0.z, r1.w, cb2[1].y, r1.y -mul r0.z, r0.z, l(8.000000) -ftoi r0.z, r0.z -mad r1.y, -cb0[85].y, cb2[2].w, |r2.y| -round_ni r1.y, r1.y -add r1.w, l(-1.000000), cb2[1].w -max r9.w, r1.y, l(0.000000) -min r1.w, r1.w, r9.w -mul r9.w, r1.w, l(8.000000) -ftoi r9.w, r9.w -ge r1.y, r1.w, r1.y -iadd r1.w, r9.w, cb0[110].y -mul r9.w, r13.w, r13.w -dp3 r10.w, -r12.xyzx, r6.xyzx -add r10.w, r10.w, r10.w -mad r15.xyz, r6.xyzx, -r10.wwww, -r12.xyzx -min r13.x, r5.y, l(1.000000) -add r10.w, -r13.w, l(1.000000) -mad r11.w, -r10.w, l(0.383026), l(-0.0761947036) -mad r11.w, r10.w, r11.w, l(1.049970) -mad r10.w, r10.w, r11.w, l(0.409255) -min r10.w, r10.w, l(0.999000) -add r11.w, -r10.w, l(1.000000) -mad r1.z, -r1.z, l(0.080000), l(1.000000) -mad r1.z, r1.z, l(0.0476190485), r2.x -mad r13.yz, r13.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r12.w, r13.yzyy, t11.yzwx, s1, l(0.000000) -mad r13.y, -r1.z, r11.w, l(1.000000) -add_sat r2.z, r2.z, l(0.200000) -max r13.z, r3.y, r3.x -max r13.z, r3.z, r13.z -max r13.z, r13.z, l(0.010000) -div r16.xyz, r3.xyzx, r13.zzzz -mul r13.z, r4.x, l(0.00393700786) -mul r17.xyz, r13.zzzz, r16.xyzx -mul r18.xyz, r4.yyyy, r3.xyzx -mul r1.z, r1.z, r1.z -mov r19.w, l(1.000000) -mov r20.y, l(1.000000) -mov r21.z, r13.w -mov r22.xyz, l(0,0,0,0) -mov r13.z, l(1.000000) -mov r14.w, l(0) -loop - ilt r15.w, l(7), r14.w - breakc_nz r15.w - iadd r15.w, r0.z, r14.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r15.w, r15.w, l(0), t0.xxxx - iadd r16.w, r1.w, r14.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r16.w, r16.w, l(0), t0.xxxx - and r15.w, r15.w, r16.w - and r15.w, r1.y, r15.w - ishl r16.w, r14.w, l(5) - mov r23.xyz, l(0,0,0,0) - mov r17.w, r13.z - mov r18.w, r15.w - loop - breakc_z r18.w - firstbit_lo r20.z, r18.w - ishl r20.w, l(1), r20.z - xor r20.w, r18.w, r20.w - iadd r20.z, r16.w, r20.z - bfi r24.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r20.zzzz, l(1, 3, 5, 6) - bfi r21.w, l(29), l(3), r20.z, l(7) - ftou r22.w, cb3[r24.z + 6].w - ieq r22.w, r22.w, l(1) - if_nz r22.w - add r19.xyz, r8.xyzx, -cb3[r24.x + 6].xyzx - and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.z + 6].xzyx - and r26.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.w + 6].yxzy - ushr r27.xyz, cb3[r24.z + 6].xzyx, l(16, 16, 16, 0) - ushr r28.xyz, cb3[r24.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyz, r26.xyzx - f16tof32 r27.xyz, r27.xyzx - f16tof32 r28.xyw, r28.yxyz - mov r29.xz, r25.xxzx - mov r29.yw, r27.xxxz - dp4 r22.w, r19.xyzw, r29.xyzw - mov r27.x, r25.y - mov r27.z, r26.y - mov r27.w, r28.x - dp4 r23.w, r19.xyzw, r27.xyzw - mov r28.xz, r26.xxzx - dp4 r19.x, r19.xyzw, r28.xyzw - max r19.y, |r22.w|, |r23.w| - max r19.x, |r19.x|, r19.y - mad r19.y, cb3[r21.w + 6].x, l(0.500000), l(0.500000) - add r19.x, -r19.y, r19.x - mad r19.y, -cb3[r21.w + 6].x, l(0.500000), l(0.500000) - div_sat r19.x, r19.x, r19.y - add r19.x, -r19.x, l(1.000000) - mul r19.x, r19.x, r19.x - else - mov r19.x, l(1.000000) - endif - lt r19.y, l(0.500000), cb3[r24.y + 6].z - lt r19.z, r19.x, l(0.001000) - or r19.z, r19.y, r19.z - if_nz r19.z - mov r18.w, r20.w - continue - endif - ishl r19.z, r20.z, l(3) - bfi r20.z, l(29), l(3), r20.z, l(2) - lt r22.w, cb3[r19.z + 6].w, l(1.500000) - if_nz r22.w - mad r22.w, cb3[r20.z + 6].y, l(0.500000), l(0.500000) - add r25.x, r22.w, -|cb3[r20.z + 6].x| - add r25.y, -r25.x, cb3[r20.z + 6].y - add r22.w, -|r25.x|, l(1.000000) - add r22.w, -|r25.y|, r22.w - max r22.w, r22.w, l(0.000488281250) - ge r23.w, cb3[r20.z + 6].x, l(0.000000) - movc r25.z, r23.w, r22.w, -r22.w - dp3 r22.w, r25.xyzx, r25.xyzx - rsq r22.w, r22.w - mul r25.xyz, r22.wwww, r25.xyzx - add r26.xyz, -r8.xyzx, cb3[r24.x + 6].xyzx - dp3 r22.w, r26.xyzx, r26.xyzx - rsq r23.w, r22.w - mul r27.xyz, r23.wwww, r26.xyzx - ftoi r24.z, cb3[r21.w + 6].w - mul r28.xyz, r25.xyzx, cb3[r20.z + 6].zzzz - mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - mad r30.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - ftou r25.w, cb3[r19.z + 6].w - and r25.w, r25.w, l(1) - ieq r26.w, r25.w, l(0) - not r26.w, r26.w - lt r27.w, l(0.000000), cb3[r20.z + 6].z - and r26.w, r26.w, r27.w - dp3 r27.w, r29.xyzx, r29.xyzx - sqrt r27.w, r27.w - dp3 r28.w, r30.xyzx, r30.xyzx - sqrt r28.w, r28.w - dp3 r29.w, r6.xyzx, r29.xyzx - div r29.w, r29.w, r27.w - dp3 r30.w, r6.xyzx, r30.xyzx - div r30.w, r30.w, r28.w - add r29.w, r29.w, r30.w - mul_sat r31.x, r29.w, l(0.500000) - dp3 r29.w, r29.xyzx, r30.xyzx - mad r27.w, r27.w, r28.w, r29.w - mad r27.w, r27.w, l(0.500000), l(1.000000) - div r31.y, l(1.000000, 1.000000, 1.000000, 1.000000), r27.w - dp3_sat r20.x, r6.xyzx, r27.xyzx - movc r21.xy, r26.wwww, r31.xyxx, r20.xyxx - lt r20.x, cb3[r24.w + 6].w, l(0.000000) - if_nz r20.x - mul r20.x, cb3[r24.x + 6].w, cb3[r24.x + 6].w - mul r20.x, r20.x, r22.w - mad r20.x, -r20.x, r20.x, l(1.000000) - max r20.x, r20.x, l(0.000000) - add r22.w, r22.w, l(1.000000) - div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w - and r27.w, r26.w, l(0x3f800000) - add r28.w, r21.y, -r22.w - mad r22.w, r27.w, r28.w, r22.w - mul r20.x, r20.x, r20.x - mul r20.x, r20.x, r22.w - else - mul r30.xyz, r26.xyzx, cb3[r24.x + 6].wwww - dp3 r22.w, r30.xyzx, r30.xyzx - min r22.w, r22.w, l(1.000000) - add r22.w, -r22.w, l(1.000000) - log r22.w, r22.w - mul r22.w, r22.w, cb3[r24.w + 6].w - exp r22.w, r22.w - mul r20.x, r21.y, r22.w - endif - dp3 r21.y, r27.xyzx, -r25.xyzx - add r21.y, r21.y, -cb3[r20.z + 6].z - mul_sat r21.y, r21.y, cb3[r20.z + 6].w - mul r21.y, r21.y, r21.y - movc r21.y, r25.w, l(1.000000), r21.y - mul r20.x, r20.x, r21.y - not r21.y, r26.w - ige r22.w, r24.z, l(0) - and r21.y, r21.y, r22.w - if_nz r21.y - if_z r25.w - ishl r21.y, r24.z, l(2) - mul r25.xyz, r8.yyyy, cb6[r21.y + 33].xywx - mad r25.xyz, cb6[r21.y + 32].xywx, r8.xxxx, r25.xyzx - mad r25.xyz, cb6[r21.y + 34].xywx, r8.zzzz, r25.xyzx - add r25.xyz, r25.xyzx, cb6[r21.y + 35].xywx - div_sat r25.xy, r25.xyxx, r25.zzzz - mad r25.xy, r25.xyxx, cb6[r24.z + 0].zwzz, cb6[r24.z + 0].xyxx - else - ishl r21.y, r24.z, l(2) - dp3 r30.x, -r26.xyzx, cb6[r21.y + 32].xyzx - dp3 r30.y, -r26.xyzx, cb6[r21.y + 33].xyzx - dp3 r30.z, -r26.xyzx, cb6[r21.y + 34].xyzx - lt r21.y, |r30.x|, |r30.y| - and r21.y, r21.y, l(1) - dp2 r22.w, |r30.xyxx|, icb[r21.y + 0].xyxx - lt r22.w, r22.w, |r30.z| - movc r21.y, r22.w, l(2), r21.y - dp3 r22.w, r30.xyzx, icb[r21.y + 0].xyzx - lt r22.w, r22.w, l(0.000000) - bfi r21.y, l(31), l(1), r21.y, r22.w - ushr r22.w, r21.y, l(1) - dp3 r22.w, r30.xyzx, icb[r22.w + 0].xyzx - div r25.z, l(0.000244140625), cb6[r24.z + 0].w - add r25.z, -r25.z, l(0.500000) - utof r26.x, r21.y - ult r26.y, r21.y, l(2) - and r26.y, r26.y, l(2) - dp2 r26.y, r30.xzxx, icb[r26.y + 0].xzxx - mul r26.y, r26.y, icb[r21.y + 4].z - div r26.y, r26.y, |r22.w| - mad r26.x, r26.y, r25.z, r26.x - add r26.x, r26.x, l(0.500000) - mul_sat r26.x, r26.x, l(0.166666672) - iadd r26.z, l(-1), icb[r21.y + 4].y - dp2 r26.z, r30.yzyy, icb[r26.z + 0].xyxx - mul r21.y, r26.z, icb[r21.y + 4].w - div r21.y, r21.y, |r22.w| - mad_sat r26.y, -r21.y, r25.z, l(0.500000) - mad r25.xy, r26.xyxx, cb6[r24.z + 0].zwzz, cb6[r24.z + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r21.y, r25.xyxx, t13.yxzw, s1, l(0.000000) - mul r20.x, r20.x, r21.y - endif - lt r21.y, l(0.000000), r20.x - if_nz r21.y - if_z r25.w - ftoi r22.w, cb3[r24.y + 6].x - else - add r25.xyz, r8.xyzx, -cb3[r24.x + 6].xyzx - lt r26.xyz, |r25.yzzy|, |r25.xxyx| - and r24.z, r26.y, r26.x - lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx - ushr r25.w, cb3[r20.z + 6].w, l(24) - ubfe r26.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r20.z + 6].wwww - movc r25.x, r25.x, r25.w, r26.x - and r25.w, l(255), cb3[r20.z + 6].w - movc r25.y, r25.y, r26.y, r25.w - ubfe r25.w, l(8), l(8), cb3[r24.y + 6].x - and r26.x, l(255), cb3[r24.y + 6].x - movc r25.z, r25.z, r25.w, r26.x - movc r25.y, r26.z, r25.y, r25.z - movc r24.z, r24.z, r25.x, r25.y - ilt r25.x, r24.z, l(80) - movc r22.w, r25.x, r24.z, l(-1) - endif - ishl r24.z, r22.w, l(2) - mad r25.xyz, r27.xyzx, cb4[r22.w + 288].xxxx, r8.xyzx - mul r25.w, l(5.000000), cb4[r22.w + 288].y - mad r25.xyz, r6.xyzx, r25.wwww, r25.xyzx - mul r30.xyzw, r25.yyyy, cb4[r24.z + 65].xyzw - mad r30.xyzw, cb4[r24.z + 64].xyzw, r25.xxxx, r30.xyzw - mad r25.xyzw, cb4[r24.z + 66].xyzw, r25.zzzz, r30.xyzw - add r25.xyzw, r25.xyzw, cb4[r24.z + 67].xyzw - div r25.xyz, r25.xyzx, r25.wwww - ge r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx - ge r30.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r31.xy, -cb4[r22.w + 344].xyxx, cb4[r22.w + 344].zwzz - mad r25.xy, r25.xyxx, r31.xyxx, cb4[r22.w + 344].xyxx - mad r31.xy, r25.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r31.xy, r31.xyxx - mad r25.xy, r25.xyxx, cb4[400].zwzz, -r31.xyxx - add r32.xyzw, r25.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r33.xyzw, r32.xxzz, r32.xxzz - add r31.zw, -r25.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r32.xz, r25.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r34.xy, r25.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r35.xy, r31.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r34.xy, -r34.xyxx, r34.xyxx, r32.ywyy - add r34.xy, r34.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r34.xy, r34.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r33.xz, r33.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r25.xy, r33.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r25.xyxx - mul r36.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r25.xy, -r32.xzxx, r32.xzxx, r31.zwzz - add r25.xy, r25.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r37.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r25.xy, r32.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r36.z, r37.x - mov r36.w, r25.x - mov r35.z, r34.x - mov r35.w, r33.x - add r32.xyzw, r35.zwxz, r36.zwxz - mov r37.z, r36.y - mov r37.w, r25.y - mov r34.z, r35.y - mov r34.w, r33.z - add r25.xyw, r34.zyzw, r37.zyzw - div r33.xyz, r35.xzwx, r32.zwyz - add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r33.xyz, r33.yxzy, cb4[400].xxxx - div r34.xyz, r34.zywz, r25.xywx - add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r34.xyz, r34.xyzx, cb4[400].yyyy - mov r33.w, r34.x - mad r35.xyzw, r31.xyxy, cb4[400].xyxy, r33.ywxw - mad r31.zw, r31.xxxy, cb4[400].xxxy, r33.zzzw - mov r34.w, r33.y - mov r33.yw, r34.yyyz - mad r36.xyzw, r31.xyxy, cb4[400].xyxy, r33.xyzy - mad r34.xyzw, r31.xyxy, cb4[400].xyxy, r34.wywz - mad r33.xyzw, r31.xyxy, cb4[400].xyxy, r33.xwzw - mul r37.xyzw, r25.xxxy, r32.zwyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r35.xyxx, t6.xxxx, s4, r25.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r35.zwzz, t6.xxxx, s4, r25.z - mul r25.x, r25.x, r37.y - mad r24.z, r37.x, r24.z, r25.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r31.zwzz, t6.xxxx, s4, r25.z - mad r24.z, r37.z, r25.x, r24.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r34.xyxx, t6.xxxx, s4, r25.z - mad r24.z, r37.w, r25.x, r24.z - mul r31.xyzw, r25.yyww, r32.xyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r36.xyxx, t6.xxxx, s4, r25.z - mad r24.z, r31.x, r25.x, r24.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r36.zwzz, t6.xxxx, s4, r25.z - mad r24.z, r31.y, r25.x, r24.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r34.zwzz, t6.xxxx, s4, r25.z - mad r24.z, r31.z, r25.x, r24.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.x, r33.xyxx, t6.xxxx, s4, r25.z - mad r24.z, r31.w, r25.x, r24.z - ige r25.x, r22.w, l(0) - or r26.xyz, r26.xyzx, r30.xyzx - or r25.y, r26.y, r26.x - or r25.y, r26.z, r25.y - and r26.x, r25.z, l(0x7fffffff) - ult r26.x, l(0x7f800000), r26.x - or r25.y, r25.y, r26.x - mul r25.w, r25.w, r32.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r33.zwzz, t6.xxxx, s4, r25.z - mad r24.z, r25.w, r25.z, r24.z - add r24.z, r24.z, l(-1.000000) - mad r22.w, cb4[r22.w + 288].w, r24.z, l(1.000000) - movc r22.w, r25.y, l(1.000000), r22.w - movc r22.w, r25.x, r22.w, l(1.000000) - else - mov r22.w, l(1.000000) - endif - if_nz r26.w - dp3 r24.z, r15.xyzx, r28.xyzx - mul_sat r25.x, r23.w, cb3[r20.z + 6].z - mad r25.x, r25.x, l(0.500000), r9.w - min r25.x, r25.x, l(1.000000) - div r25.x, r9.w, r25.x - mad r25.yzw, r15.xxyz, r24.zzzz, -r28.xxyz - dp3 r25.y, r29.xyzx, r25.yzwy - mul r24.z, r24.z, r24.z - mad r24.z, cb3[r20.z + 6].z, cb3[r20.z + 6].z, -r24.z - div_sat r24.z, r25.y, r24.z - mad r25.yzw, r28.xxyz, r24.zzzz, r29.xxyz - dp3 r24.z, r25.yzwy, r25.yzwy - rsq r24.z, r24.z - mul r27.xyz, r24.zzzz, r25.yzwy - else - mov r25.x, l(1.000000) - endif - if_nz r21.y - mul_sat r21.y, r23.w, cb3[r21.w + 6].y - mad r25.yzw, r11.xxyz, r5.wwww, r27.xxyz - dp3 r23.w, r25.yzwy, r25.yzwy - max r23.w, r23.w, l(0.0000610351562) - rsq r23.w, r23.w - mul r25.yzw, r23.wwww, r25.yyzw - dp3 r23.w, r6.xyzx, r27.xyzx - dp3_sat r24.z, r6.xyzx, r25.yzwy - dp3_sat r25.y, r12.xyzx, r25.yzwy - dp3 r25.z, r12.xyzx, r27.xyzx - lt r25.w, l(0.000000), r21.y - mul r21.y, r21.y, r21.y - mad r26.x, r25.y, l(3.600000), l(0.400000) - div r21.y, r21.y, r26.x - mad r21.y, r13.w, r13.w, r21.y - min r21.y, r21.y, l(1.000000) - movc r21.y, r25.w, r21.y, r9.w - mul r21.y, r21.y, r21.y - mad r25.w, r24.z, r21.y, -r24.z - mad r24.z, r25.w, r24.z, l(1.000000) - add r25.y, -r25.y, l(1.000000) - mul r25.w, r25.y, r25.y - mul r25.w, r25.w, r25.w - mul r26.x, r25.y, r25.w - mov_sat r26.y, -r25.z - mul r26.y, r26.y, r26.y - mad r26.y, r26.y, l(-0.640000), l(1.000000) - mul r26.y, r26.y, r26.y - mad r25.y, -r25.w, r25.y, l(1.000000) - mad r25.y, r2.x, r25.y, r26.x - mul r24.z, r24.z, r24.z - div r24.z, r21.y, r24.z - mul r24.z, r25.x, r24.z - mad r25.x, -r13.x, r21.y, r13.x - mad r25.x, r25.x, r13.x, r21.y - sqrt r25.x, r25.x - mad r25.w, -r21.x, r21.y, r21.x - mad r21.y, r25.w, r21.x, r21.y - sqrt r21.y, r21.y - mul r21.y, r13.x, r21.y - mad r21.y, r21.x, r25.x, r21.y - add r21.y, r21.y, l(0.000100) - div r21.y, l(0.500000), r21.y - mul r21.y, r21.y, r24.z - mul r21.y, r21.y, r25.y - min r21.y, r21.y, l(2048.000000) - mad r25.xy, r21.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r24.z, r25.xyxx, t11.yzxw, s1, l(0.000000) - mul r24.z, r12.w, r24.z - mul r24.z, r10.w, r24.z - div r24.z, r24.z, r11.w - mul r24.z, r1.z, r24.z - div r24.z, r24.z, r13.y - add r21.y, r21.y, r24.z - mov_sat r24.z, r25.z - add r24.z, r24.z, l(0.500000) - min r24.z, r24.z, l(1.000000) - mul r25.x, r2.z, r24.z - add_sat r25.y, r25.z, l(1.000000) - mad r24.z, -r2.z, r24.z, l(1.000000) - mad r24.z, r25.y, r24.z, r25.x - mul r21.y, r21.y, r24.z - mul r21.y, r4.y, r21.y - mul r21.y, r21.y, cb3[r21.w + 6].z - max r21.y, r21.y, l(0.000000) - min r21.y, r21.y, l(1000.000000) - add_sat r24.z, -r23.w, l(0.500000) - ne r25.x, r26.y, l(0.360000) - div r25.y, l(0.360000), r26.y - movc r25.x, r25.x, r25.y, l(1.000000) - mul r24.z, r24.z, r25.x - mad_sat r23.w, r1.x, l(0.0322580636), r23.w - add r23.w, -r21.x, r23.w - mul r25.xyz, r3.xyzx, r23.wwww - mad r25.xyz, r17.xyzx, r24.zzzz, r25.xyzx - mul r25.xyz, r4.yyyy, r25.xyzx - mad r25.xyz, r21.yyyy, r21.xxxx, r25.xyzx - mad r25.xyz, r18.xyzx, r21.xxxx, r25.xyzx - mul r26.xyz, r20.xxxx, cb3[r19.z + 6].xyzx - mul r26.xyz, r22.wwww, r26.xyzx - mul r26.xyz, r19.xxxx, r26.xyzx - mul r25.xyz, r25.xyzx, r26.xyzx - else - mov r25.xyz, l(0,0,0,0) - endif - else - if_z r19.y - mad r19.x, cb3[r20.z + 6].y, l(0.500000), l(0.500000) - add r26.x, r19.x, -|cb3[r20.z + 6].x| - add r26.y, -r26.x, cb3[r20.z + 6].y - add r19.x, -|r26.x|, l(1.000000) - add r19.x, -|r26.y|, r19.x - max r19.x, r19.x, l(0.000488281250) - ge r19.y, cb3[r20.z + 6].x, l(0.000000) - movc r26.z, r19.y, r19.x, -r19.x - dp3 r19.x, r26.xyzx, r26.xyzx - rsq r19.x, r19.x - mul r26.xyz, r19.xxxx, r26.xyzx - add r27.xyz, -r8.xyzx, cb3[r24.x + 6].xyzx - dp3 r19.x, r27.xyzx, r27.xyzx - rsq r19.y, r19.x - mul r28.xyz, r19.yyyy, r27.xyzx - ftoi r19.y, cb3[r21.w + 6].w - mul r21.xyw, r26.xyxz, cb3[r20.z + 6].zzzz - mad r29.xyz, -r21.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r27.xyzx - mad r21.xyw, r21.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r27.xyxz - ftou r19.z, cb3[r19.z + 6].w - and r19.z, r19.z, l(1) - ieq r20.x, r19.z, l(0) - not r20.x, r20.x - lt r22.w, l(0.000000), cb3[r20.z + 6].z - and r20.x, r20.x, r22.w - dp3 r22.w, r29.xyzx, r29.xyzx - sqrt r22.w, r22.w - dp3 r23.w, r21.xywx, r21.xywx - sqrt r23.w, r23.w - dp3 r21.x, r29.xyzx, r21.xywx - mad r21.x, r22.w, r23.w, r21.x - mad r21.x, r21.x, l(0.500000), l(1.000000) - div r21.x, l(1.000000, 1.000000, 1.000000, 1.000000), r21.x - movc r21.x, r20.x, r21.x, l(1.000000) - lt r21.y, cb3[r24.w + 6].w, l(0.000000) - if_nz r21.y - mul r21.y, cb3[r24.x + 6].w, cb3[r24.x + 6].w - mul r21.y, r19.x, r21.y - mad r21.y, -r21.y, r21.y, l(1.000000) - max r21.y, r21.y, l(0.000000) - add r19.x, r19.x, l(1.000000) - div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x - and r21.w, r20.x, l(0x3f800000) - add r22.w, -r19.x, r21.x - mad r19.x, r21.w, r22.w, r19.x - mul r21.y, r21.y, r21.y - mul r19.x, r19.x, r21.y - else - mul r29.xyz, r27.xyzx, cb3[r24.x + 6].wwww - dp3 r21.y, r29.xyzx, r29.xyzx - min r21.y, r21.y, l(1.000000) - add r21.y, -r21.y, l(1.000000) - log r21.y, r21.y - mul r21.y, r21.y, cb3[r24.w + 6].w - exp r21.y, r21.y - mul r19.x, r21.y, r21.x - endif - dp3 r21.x, r28.xyzx, -r26.xyzx - add r21.x, r21.x, -cb3[r20.z + 6].z - mul_sat r21.x, r21.x, cb3[r20.z + 6].w - mul r21.x, r21.x, r21.x - movc r21.x, r19.z, l(1.000000), r21.x - mul r19.x, r19.x, r21.x - not r20.x, r20.x - ige r21.x, r19.y, l(0) - and r20.x, r20.x, r21.x - if_nz r20.x - if_z r19.z - ishl r20.x, r19.y, l(2) - mul r21.xyw, r8.yyyy, cb6[r20.x + 33].xyxw - mad r21.xyw, cb6[r20.x + 32].xyxw, r8.xxxx, r21.xyxw - mad r21.xyw, cb6[r20.x + 34].xyxw, r8.zzzz, r21.xyxw - add r21.xyw, r21.xyxw, cb6[r20.x + 35].xyxw - div_sat r21.xy, r21.xyxx, r21.wwww - mad r21.xy, r21.xyxx, cb6[r19.y + 0].zwzz, cb6[r19.y + 0].xyxx - else - ishl r20.x, r19.y, l(2) - dp3 r26.x, -r27.xyzx, cb6[r20.x + 32].xyzx - dp3 r26.y, -r27.xyzx, cb6[r20.x + 33].xyzx - dp3 r26.z, -r27.xyzx, cb6[r20.x + 34].xyzx - lt r20.x, |r26.x|, |r26.y| - and r20.x, r20.x, l(1) - dp2 r21.w, |r26.xyxx|, icb[r20.x + 0].xyxx - lt r21.w, r21.w, |r26.z| - movc r20.x, r21.w, l(2), r20.x - dp3 r21.w, r26.xyzx, icb[r20.x + 0].xyzx - lt r21.w, r21.w, l(0.000000) - bfi r20.x, l(31), l(1), r20.x, r21.w - ushr r21.w, r20.x, l(1) - dp3 r21.w, r26.xyzx, icb[r21.w + 0].xyzx - div r22.w, l(0.000244140625), cb6[r19.y + 0].w - add r22.w, -r22.w, l(0.500000) - utof r23.w, r20.x - ult r24.z, r20.x, l(2) - and r24.z, r24.z, l(2) - dp2 r24.z, r26.xzxx, icb[r24.z + 0].xzxx - mul r24.z, r24.z, icb[r20.x + 4].z - div r24.z, r24.z, |r21.w| - mad r23.w, r24.z, r22.w, r23.w - add r23.w, r23.w, l(0.500000) - mul_sat r27.x, r23.w, l(0.166666672) - iadd r23.w, l(-1), icb[r20.x + 4].y - dp2 r23.w, r26.yzyy, icb[r23.w + 0].xyxx - mul r20.x, r23.w, icb[r20.x + 4].w - div r20.x, r20.x, |r21.w| - mad_sat r27.y, -r20.x, r22.w, l(0.500000) - mad r21.xy, r27.xyxx, cb6[r19.y + 0].zwzz, cb6[r19.y + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r19.y, r21.xyxx, t13.yxzw, s1, l(0.000000) - mul r19.x, r19.y, r19.x - endif - lt r19.x, l(0.000000), r19.x - if_nz r19.x - if_z r19.z - ftoi r19.x, cb3[r24.y + 6].x - else - add r21.xyw, r8.xyxz, -cb3[r24.x + 6].xyxz - lt r24.xzw, |r21.yyww|, |r21.xxxy| - and r19.y, r24.z, r24.x - lt r21.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyxw - ushr r19.z, cb3[r20.z + 6].w, l(24) - ubfe r24.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r20.z + 6].wwww - movc r19.z, r21.x, r19.z, r24.x - and r20.x, l(255), cb3[r20.z + 6].w - movc r20.x, r21.y, r24.z, r20.x - ubfe r20.z, l(8), l(8), cb3[r24.y + 6].x - and r21.x, l(255), cb3[r24.y + 6].x - movc r20.z, r21.w, r20.z, r21.x - movc r20.x, r24.w, r20.x, r20.z - movc r19.y, r19.y, r19.z, r20.x - ilt r19.z, r19.y, l(80) - movc r19.x, r19.z, r19.y, l(-1) - endif - ishl r19.y, r19.x, l(2) - mad r21.xyw, r28.xyxz, cb4[r19.x + 288].xxxx, r8.xyxz - mul r19.z, l(5.000000), cb4[r19.x + 288].y - mad r21.xyw, r6.xyxz, r19.zzzz, r21.xyxw - mul r24.xyzw, r21.yyyy, cb4[r19.y + 65].xyzw - mad r24.xyzw, cb4[r19.y + 64].xyzw, r21.xxxx, r24.xyzw - mad r24.xyzw, cb4[r19.y + 66].xyzw, r21.wwww, r24.xyzw - add r24.xyzw, r24.xyzw, cb4[r19.y + 67].xyzw - div r21.xyw, r24.xyxz, r24.wwww - ge r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xywx - ge r26.xyz, r21.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r19.yz, -cb4[r19.x + 344].xxyx, cb4[r19.x + 344].zzwz - mad r19.yz, r21.xxyx, r19.yyzy, cb4[r19.x + 344].xxyx - mad r20.xz, r19.yyzy, cb4[400].zzwz, l(0.500000, 0.000000, 0.500000, 0.000000) - round_ni r20.xz, r20.xxzx - mad r19.yz, r19.yyzy, cb4[400].zzwz, -r20.xxzx - add r27.xyzw, r19.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r28.xyzw, r27.xxzz, r27.xxzz - add r21.xy, -r19.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) - min r27.xz, r19.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r29.xy, r19.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r30.xy, r21.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r29.xy, -r29.xyxx, r29.xyxx, r27.ywyy - add r29.xy, r29.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r29.xy, r29.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r28.xz, r28.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r19.yz, r28.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r19.yyzy - mul r31.xy, r19.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r19.yz, -r27.xxzx, r27.xxzx, r21.xxyx - add r19.yz, r19.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r32.xy, r19.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r19.yz, r27.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r31.z, r32.x - mov r31.w, r19.y - mov r30.z, r29.x - mov r30.w, r28.x - add r27.xyzw, r30.zwxz, r31.zwxz - mov r32.z, r31.y - mov r32.w, r19.z - mov r29.z, r30.y - mov r29.w, r28.z - add r28.xyz, r29.zywz, r32.zywz - div r30.xyz, r30.xzwx, r27.zwyz - add r30.xyz, r30.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r30.xyz, r30.yxzy, cb4[400].xxxx - div r29.xyz, r29.zywz, r28.xyzx - add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r29.xyz, r29.xyzx, cb4[400].yyyy - mov r30.w, r29.x - mad r31.xyzw, r20.xzxz, cb4[400].xyxy, r30.ywxw - mad r19.yz, r20.xxzx, cb4[400].xxyx, r30.zzwz - mov r29.w, r30.y - mov r30.yw, r29.yyyz - mad r32.xyzw, r20.xzxz, cb4[400].xyxy, r30.xyzy - mad r29.xyzw, r20.xzxz, cb4[400].xyxy, r29.wywz - mad r30.xyzw, r20.xzxz, cb4[400].xyxy, r30.xwzw - mul r33.xyzw, r27.zwyz, r28.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r31.xyxx, t6.xxxx, s4, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r31.zwzz, t6.xxxx, s4, r21.w - mul r20.z, r20.z, r33.y - mad r20.x, r33.x, r20.x, r20.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.y, r19.yzyy, t6.xxxx, s4, r21.w - mad r19.y, r33.z, r19.y, r20.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r29.xyxx, t6.xxxx, s4, r21.w - mad r19.y, r33.w, r19.z, r19.y - mul r31.xyzw, r27.xyzw, r28.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r32.xyxx, t6.xxxx, s4, r21.w - mad r19.y, r31.x, r19.z, r19.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r32.zwzz, t6.xxxx, s4, r21.w - mad r19.y, r31.y, r19.z, r19.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r29.zwzz, t6.xxxx, s4, r21.w - mad r19.y, r31.z, r19.z, r19.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r30.xyxx, t6.xxxx, s4, r21.w - mad r19.y, r31.w, r19.z, r19.y - ige r19.z, r19.x, l(0) - or r24.xyz, r24.xyzx, r26.xyzx - or r20.x, r24.y, r24.x - or r20.x, r24.z, r20.x - and r20.z, r21.w, l(0x7fffffff) - ult r20.z, l(0x7f800000), r20.z - or r20.x, r20.z, r20.x - mul r20.z, r27.y, r28.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.x, r30.zwzz, t6.xxxx, s4, r21.w - mad r19.y, r20.z, r21.x, r19.y - add r19.y, r19.y, l(-1.000000) - mad r19.x, cb4[r19.x + 288].w, r19.y, l(1.000000) - movc r19.x, r20.x, l(1.000000), r19.x - movc r19.x, r19.z, r19.x, l(1.000000) - else - mov r19.x, l(1.000000) - endif - else - mov r19.x, l(1.000000) - endif - mul r17.w, r17.w, r19.x - mov r25.xyz, l(0,0,0,0) - endif - add r23.xyz, r23.xyzx, r25.xyzx - mov r18.w, r20.w - endloop - mov r13.z, r17.w - add r22.xyz, r22.xyzx, r23.xyzx - iadd r14.w, r14.w, l(1) -endloop -mad r1.xyz, r22.xyzx, r13.zzzz, r14.xyzx -ne r11.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx -movc r11.x, cb13[14].z, l(0xFFFFFFFF), r11.x -if_nz r11.x - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - mad r0.z, r0.z, l(0.750000), l(0.250000) - min r0.z, r3.w, r0.z - add r1.w, r0.z, r5.y - mad r2.z, r13.w, l(-16.000000), l(-1.000000) - exp r2.z, r2.z - log r1.w, |r1.w| - mul r1.w, r1.w, r2.z - exp r1.w, r1.w - add r1.w, r0.z, r1.w - add r1.w, r1.w, l(-1.000000) - mov_sat r11.xzw, r1.wwww - mad r14.xyz, r3.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r3.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r3.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - max r14.xyz, r0.zzzz, r14.xyzx -else - mov r11.xzw, r3.wwww - mov r14.xyz, r3.wwww -endif -movc r11.xzw, cb13[14].zzzz, r11.xyzw, l(1.0, 0, 1.0, 1.0) -mul r1.xyz, r1.xyzx, r11.xzwx -mad r17.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r17.xyz, r8.xzyx, -r17.xyzx -max r0.z, |r17.y|, |r17.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.w, |r17.z|, l(-208.000000) -mul_sat r1.w, r1.w, l(0.031250) -max r0.z, r0.z, r1.w -ne r1.w, l(0.000000), cb0[210].w -lt r2.z, r0.z, l(1.000000) -and r1.w, r1.w, r2.z -if_nz r1.w - mad r17.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r17.xyz, r8.xzyx, -r17.xyzx - max r1.w, |r17.y|, |r17.x| - add r1.w, r1.w, l(-29.000000) - mul_sat r1.w, r1.w, l(0.500000) - add r2.z, |r17.z|, l(-13.000000) - mul_sat r2.z, r2.z, l(0.500000) - max r1.w, r1.w, r2.z - lt r2.z, r1.w, l(1.000000) - if_nz r2.z - mad r17.xyz, r8.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r17.xyzx, cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t17.yzwx, s2, l(0.000000) - add r2.z, -r1.w, l(1.000000) - mul r3.w, l(0.500000), cb0[211].y - mad r4.y, -cb0[211].y, l(0.500000), l(1.000000) - max r3.w, r3.w, r17.y - min r3.w, r4.y, r3.w - mul r17.w, r3.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t18.xyzw, s1, l(0.000000) - mad r3.w, r19.w, r2.z, r0.z - add r20.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t18.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r18.yyyy, r20.xyzx - mov r20.w, r18.y - mul r20.xyzw, r2.zzzz, r20.xyzw - add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t18.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r18.xxxx, r17.xyzx - mov r17.w, r18.x - mul r17.xyzw, r2.zzzz, r17.xyzw - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r19.xyzx - mul r18.xyzw, r2.zzzz, r18.xyzw - else - mov r20.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r3.w, r0.z - endif - mad r19.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r19.xyz, r8.xzyx, -r19.xyzx - max r2.z, |r19.y|, |r19.x| - add r2.z, r2.z, l(-116.000000) - mul_sat r2.z, r2.z, l(0.125000) - add r4.y, |r19.z|, l(-52.000000) - mul_sat r4.y, r4.y, l(0.125000) - max r2.z, r2.z, r4.y - lt r4.y, r2.z, l(1.000000) - if_nz r4.y - mad r19.xyz, r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r21.xyz, r19.xyzx, cb0[211].xyzx - round_ni r21.xyz, r21.xyzx - mad r19.xyz, r19.xyzx, cb0[211].xyzx, -r21.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r19.xyzx, t19.yzwx, s2, l(0.000000) - add r4.y, -r2.z, l(1.000000) - mul r1.w, r1.w, r4.y - mul r4.y, l(0.500000), cb0[211].y - mad r5.y, -cb0[211].y, l(0.500000), l(1.000000) - max r4.y, r4.y, r19.y - min r4.y, r5.y, r4.y - mul r19.w, r4.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyzw, r19.xwzx, t20.xyzw, s1, l(0.000000) - mad r3.w, r22.w, r1.w, r3.w - add r23.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r23.xyz, r23.xyzx, t20.xyzw, s1, l(0.000000) - mad r23.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r23.xyz, r21.yyyy, r23.xyzx - mov r23.w, r21.y - mad r20.xyzw, r23.xyzw, r1.wwww, r20.xyzw - add r19.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r21.xxxx, r19.xyzx - mov r19.w, r21.x - mad r17.xyzw, r19.xyzw, r1.wwww, r17.xyzw - mad r19.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r19.xyzx - mad r18.xyzw, r21.xyzw, r1.wwww, r18.xyzw - endif - lt r1.w, l(0.000000), r2.z - if_nz r1.w - mad r19.xyz, r8.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r21.xyz, r19.xyzx, cb0[211].xyzx - mul r22.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r21.xyz, r21.xyzx - mad r19.xyz, r19.xyzx, cb0[211].xyzx, -r21.xyzx - mad r21.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r19.xyz, r22.xyzx, r19.xyzx - min r19.xyz, r21.xyzx, r19.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r23.xyw, r19.xyzx, t21.yzwx, s2, l(0.000000) - add r1.w, -r0.z, l(1.000000) - mul r1.w, r1.w, r2.z - max r2.z, r22.y, r19.y - min r2.z, r21.y, r2.z - mul r19.w, r2.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r19.xwzx, t22.xyzw, s1, l(0.000000) - add r22.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t22.xyzw, s1, l(0.000000) - mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r23.yyyy, r22.xyzx - mov r22.w, r23.y - mad r20.xyzw, r22.xyzw, r1.wwww, r20.xyzw - add r19.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r23.xxxx, r19.xyzx - mov r19.w, r23.x - mad r17.xyzw, r19.xyzw, r1.wwww, r17.xyzw - mad r19.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r23.xyz, r23.wwww, r19.xyzx - mad r18.xyzw, r23.xyzw, r1.wwww, r18.xyzw - mad r3.w, r21.w, r1.w, r3.w - endif - mad_sat r1.w, r3.w, l(2.000000), l(-1.000000) - add r19.x, -r0.z, r1.w - add r0.z, r0.z, r1.w - mul r19.y, r0.z, l(0.500000) -else - mov r20.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r19.xy, l(0,1.000000,0,0) -endif -mul r21.xyzw, r19.yyyx, cb0[213].xyzw -mad r21.y, r21.w, l(0.500000), r21.y -mul r5.yw, r19.yyyx, cb0[213].wwwy -mad r21.w, r5.w, l(0.375000), r5.y -add r18.xyzw, r18.xyzw, r21.xyzw -mul r21.xyzw, r19.yyyx, cb0[214].xyzw -mad r21.y, r21.w, l(0.500000), r21.y -mul r5.yw, r19.yyyx, cb0[214].wwwy -mad r21.w, r5.w, l(0.375000), r5.y -add r17.xyzw, r17.xyzw, r21.xyzw -mul r21.xyzw, r19.yyyx, cb0[215].xyzw -mad r21.y, r21.w, l(0.500000), r21.y -mul r5.yw, r19.yyyx, cb0[215].wwwy -mad r21.w, r5.w, l(0.375000), r5.y -add r19.xyzw, r20.xyzw, r21.xyzw -ge r5.yw, r7.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r5.w, r5.y -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r20.xyzw, r7.xyxx, t16.xyzw, s1, l(0.000000) - lt r21.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r20.xyzw| - or r5.yw, r21.zzzw, r21.xxxy - or r0.z, r5.w, r5.y - if_nz r0.z - dp3 r0.z, r20.yzwy, r20.yzwy - sqrt r0.z, r0.z - mov r5.y, l(1.000000) - mov r5.w, r0.z - mov r1.w, l(0) - loop - ge r2.z, l(4.600000), r5.w - breakc_nz r2.z - iadd r2.z, r1.w, l(1) - mul r7.xy, r5.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000) - mov r5.yw, r7.xxxy - mov r1.w, r2.z - continue - endloop - mul r20.xyzw, r5.yyyy, r20.xyzw - dp3 r0.z, r20.yzwy, r20.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb7[3].x, cb7[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r7.x, r0.z, l(0.00390625000) - mov r7.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r5.yw, r7.xyxx, t15.zxwy, s1, l(0.000000) - mad r5.yw, r5.yyyw, cb7[2].xxxy, cb7[2].zzzw - mul r21.x, r5.y, l(3.54490781) - mul r21.yzw, r5.wwww, r20.yyzw - mul r0.z, r20.x, l(0.406976730) - exp r0.z, r0.z - mul r20.xyzw, r0.zzzz, r21.xyzw - mov r21.xyzw, r20.xyzw - mov r0.z, l(0) - loop - uge r2.z, r0.z, r1.w - breakc_nz r2.z - mul r22.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r2.z, r22.xyzw, r21.xyzw - dp2 r3.w, r22.yxyy, r21.xyxx - dp2 r4.y, r22.zxzz, r21.xzxx - dp2 r5.y, r22.wxww, r21.xwxx - iadd r5.w, r0.z, l(1) - mov r21.x, r2.z - mov r21.y, r3.w - mov r21.z, r4.y - mov r21.w, r5.y - mov r0.z, r5.w - continue - endloop - mul r20.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r21.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r20.xyzw, r21.xyzw - dp2 r1.w, r20.yxyy, r21.xyxx - dp2 r2.z, r20.zxzz, r21.xzxx - dp2 r3.w, r20.wxww, r21.xwxx - mul r21.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r4.y, r20.xyzw, r21.xyzw - dp2 r5.y, r20.yxyy, r21.xyxx - dp2 r5.w, r20.zxzz, r21.xzxx - dp2 r7.x, r20.wxww, r21.xwxx - mul r21.xyzw, r19.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r7.y, r20.xyzw, r21.xyzw - dp2 r9.w, r20.yxyy, r21.xyxx - dp2 r10.w, r20.zxzz, r21.xzxx - dp2 r12.w, r20.wxww, r21.xwxx - mul r18.w, r0.z, l(0.886226952) - mul r18.x, r3.w, l(-1.02332675) - mul r18.y, r1.w, l(-1.02332675) - mul r18.z, r2.z, l(1.02332675) - mul r17.w, r4.y, l(0.886226952) - mul r17.x, r7.x, l(-1.02332675) - mul r17.yz, r5.yywy, l(0.000000, -1.02332675, 1.02332675, 0.000000) - mul r19.w, r7.y, l(0.886226952) - mul r19.x, r12.w, l(-1.02332675) - mul r19.y, r9.w, l(-1.02332675) - mul r19.z, r10.w, l(1.02332675) - endif -endif -mov r6.w, l(1.000000) -dp4 r20.x, r18.xyzw, r6.xyzw -dp4 r20.y, r17.xyzw, r6.xyzw -dp4 r20.z, r19.xyzw, r6.xyzw -max r20.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r0.z, l(-1.000000), cb0[113].x -max r1.w, r13.w, l(0.001000) -log r1.w, r1.w -mad r1.w, -r1.w, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.w -mul r5.yw, r5.xxxz, cb1[0].wwww -round_ni r5.yw, r5.yyyw -add r1.w, |r2.y|, -cb1[2].y -round_ni r1.w, r1.w -add r2.z, l(-1.000000), cb1[1].x -max r3.w, r1.w, l(0.000000) -min r2.z, r2.z, r3.w -ge r1.w, r2.z, r1.w -mad r3.w, r5.w, cb1[0].x, r5.y -ftoi r3.w, r3.w -iadd r3.w, r3.w, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx -ftoi r2.z, r2.z -iadd r2.z, r2.z, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.z, r2.z, l(0), t0.xxxx -and r2.z, r2.z, r3.w -and r1.w, r1.w, r2.z -mul r13.yzw, r20.xxyz, cb0[111].xxxx -dp3 r2.z, r13.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r8.w, l(1.000000) -mov r13.yzw, l(0,0,0,0) -mov r3.w, l(1.000000) -mov r4.y, r1.w -mov r5.y, l(0) -loop - lt r5.w, l(0.010000), r3.w - ine r7.x, r4.y, l(0) - and r7.x, r5.w, r7.x - if_nz r7.x - firstbit_lo r7.x, r4.y - ishl r7.y, l(1), r7.x - xor r4.y, r4.y, r7.y - ishl r7.x, r7.x, l(3) - dp4 r21.x, cb1[r7.x + 6].xyzw, r8.xyzw - dp4 r21.y, cb1[r7.x + 7].xyzw, r8.xyzw - dp4 r21.z, cb1[r7.x + 8].xyzw, r8.xyzw - ge r22.xyz, cb1[r7.x + 5].xyzx, |r21.xyzx| - and r7.y, r22.y, r22.x - and r7.y, r22.z, r7.y - if_nz r7.y - mul r7.y, l(0.100000), cb1[r7.x + 5].x - mul r22.xyz, |r21.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r22.xy, r22.xyxx, r22.xyxx - add r23.xyz, -|r21.xyzx|, cb1[r7.x + 5].xyzx - mul r23.xyz, r23.xyzx, cb1[r7.x + 9].xyzx - eq r9.w, l(1.000000), cb1[r7.x + 10].x - if_nz r9.w - dp3 r24.x, cb1[r7.x + 6].xyzx, r15.xyzx - dp3 r24.y, cb1[r7.x + 7].xyzx, r15.xyzx - dp3 r24.z, cb1[r7.x + 8].xyzx, r15.xyzx - add r25.xyz, -r21.xyzx, cb1[r7.x + 5].xyzx - div r25.xyz, r25.xyzx, r24.xyzx - add r26.xyz, -r21.xyzx, -cb1[r7.x + 5].xyzx - div r26.xyz, r26.xyzx, r24.xyzx - lt r27.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx - movc r25.xyz, r27.xyzx, r25.xyzx, r26.xyzx - min r9.w, r25.y, r25.x - min r9.w, r25.z, r9.w - mad r21.xyz, r24.xyzx, r9.wwww, r21.xyzx - else - mov r21.xyz, r15.xyzx - endif - dp3 r9.w, r21.xyzx, r21.xyzx - rsq r9.w, r9.w - mul r21.xyz, r9.wwww, r21.xyzx - lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx - lt r25.xyz, r21.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r24.xyz, -r24.xyzx, r25.xyzx - itof r24.xyz, r24.xyzx - dp3 r9.w, r21.xyzx, r24.xyzx - div r21.xyz, r21.xyzx, r9.wwww - lt r9.w, r21.z, l(0.000000) - add r21.zw, -|r21.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r21.zw, r21.zzzw, r24.xxxy - movc r21.xy, r9.wwww, r21.zwzz, r21.xyxx - dp4 r9.w, cb1[r7.x + 4].xyzw, r6.xyzw - max r9.w, r9.w, l(0.000000) - max r9.w, r9.w, l(0.000100) - min r10.w, r23.z, r23.y - min r10.w, r10.w, r23.x - add r12.w, r22.y, r22.x - mad r12.w, r22.z, r22.z, r12.w - mad r7.y, r7.y, r7.y, -r12.w - mul r7.y, r7.y, cb1[r7.x + 9].x - mul r7.y, r7.y, cb1[r7.x + 9].x - add r12.w, l(1.000000), -cb1[r7.x + 10].y - mul r7.y, r7.y, r12.w - mul r7.y, r7.y, l(100.000000) - mad_sat r7.y, r10.w, cb1[r7.x + 10].y, r7.y - mul r10.w, r7.y, cb1[r7.x + 10].w - mad r21.xy, r21.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r21.xy, r21.xyxx, cb1[1].wwww, cb1[2].wwww - mov r21.z, cb1[r7.x + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r21.xyz, r21.xyzx, t5.xyzw, s3, r0.z - mul r21.xyz, r21.xyzx, cb1[r7.x + 9].wwww - div r12.w, r2.z, r9.w - min r12.w, |r12.w|, l(1.000000) - mad r12.w, r12.w, l(2.000000), r2.z - add r9.w, r9.w, l(2.000000) - div r9.w, r12.w, r9.w - add r9.w, r9.w, l(-1.000000) - mad r9.w, r9.w, cb0[112].w, l(1.000000) - mul r21.xyz, r9.wwww, r21.xyzx - mul r21.xyz, r10.wwww, r21.xyzx - mad r13.yzw, r21.xxyz, r3.wwww, r13.yyzw - mad r7.x, -r7.y, cb1[r7.x + 10].w, l(1.000000) - mul r3.w, r3.w, r7.x - endif - mov r5.y, l(-1) - continue - else - mov r5.y, r5.w - break - endif - mov r5.y, r5.w -endloop -if_nz r5.y - dp3 r1.w, r15.xyzx, r15.xyzx - rsq r1.w, r1.w - mul r15.xyz, r1.wwww, r15.xyzx - lt r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx - lt r22.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r21.xyz, -r21.xyzx, r22.xyzx - itof r21.xyz, r21.xyzx - dp3 r1.w, r15.xyzx, r21.xyzx - div r15.xyz, r15.xyzx, r1.wwww - lt r1.w, r15.z, l(0.000000) - add r5.yw, -|r15.yyyx|, l(0.000000, 1.000000, 0.000000, 1.000000) - mul r5.yw, r5.yyyw, r21.xxxy - movc r5.yw, r1.wwww, r5.yyyw, r15.xxxy - dp4 r1.w, cb1[3].xyzw, r6.xyzw - max r1.w, r1.w, l(0.000000) - max r1.w, r1.w, l(0.000100) - mad r5.yw, r5.yyyw, l(0.000000, 0.500000, 0.000000, 0.500000), l(0.000000, 0.500000, 0.000000, 0.500000) - mad r15.xy, r5.ywyy, cb1[1].wwww, cb1[2].wwww - mov r15.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z - div r0.z, r2.z, r1.w - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r2.z - add r1.w, r1.w, l(2.000000) - div r0.z, r0.z, r1.w - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r15.xyz, r0.zzzz, r15.xyzx - mad r13.yzw, r15.xxyz, r3.wwww, r13.yyzw -endif -mul r13.yzw, r13.yyzw, cb0[112].zzzz -mul r13.yzw, r13.yyzw, cb0[111].yyyy -if_nz r11.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x - add r1.w, -r0.z, l(1.000000) - mul r21.xyz, r1.wwww, r13.yzwy - mad r13.yzw, r15.xxyz, r0.zzzz, r21.xxyz -endif -mul r3.xyz, r3.xyzx, r20.xyzx -mul r3.xyz, r3.xyzx, cb0[111].xxxx -mad r0.z, r2.x, r7.z, r7.w -mul r7.xyz, r0.zzzz, r13.yzwy -mul r7.xyz, r11.xzwx, r7.xyzx -mad r3.xyz, r3.xyzx, r14.xyzx, r7.xyzx -mul r6.xyzw, r6.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) -dp4 r7.x, r18.xyzw, r6.xyzw -dp4 r7.y, r17.xyzw, r6.xyzw -dp4 r7.z, r19.xyzw, r6.xyzw -max r6.xyz, r7.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -mul r6.xyz, r6.xyzx, cb0[111].xxxx -mul r6.xyz, r14.xyzx, r6.xyzx -mul r6.xyz, r16.xyzx, r6.xyzx -mul r0.z, r4.x, r13.x -ftou r1.w, r2.w -bfi r1.w, l(2), l(0), r1.w, r4.z -utof r1.w, r1.w -mul r1.w, r1.w, l(0.0322580636) -mad r0.z, r0.z, l(0.00787401572), r1.w -mul r2.xzw, r0.zzzz, r6.xxyz -mad r2.xzw, r2.xxzw, l(0.318309873, 0.000000, 0.318309873, 0.318309873), r3.xxyz -add r1.xyz, r1.xyzx, r2.xzwx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r8.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r4.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r8.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xzw, r0.zzzz, cb0[155].xxyz -mul r2.xzw, r2.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) -exp r2.xzw, r2.xxzw -dp3 r0.z, -r12.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r3.x, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r3.x -lt r3.x, l(0.000000), cb0[163].z -if_nz r3.x - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r12.xyzx, -r10.xyzx - add r3.z, r8.y, -cb0[44].y - lt r3.w, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.w - mul r0.x, r0.x, cb0[163].w - div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w - mul r4.x, r0.x, r3.w - mad r4.y, r4.x, r3.z, cb0[44].y - mad r3.z, -r4.x, r3.z, r3.z - mul r4.x, r3.z, cb0[159].z - mul r3.z, r3.z, cb0[162].x - max r3.z, r3.z, l(-127.000000) - add r4.z, r4.y, -cb0[159].x - mul r4.z, r4.z, cb0[159].z - max r4.xz, r4.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - exp r4.z, -r4.z - mul r4.z, r4.z, cb0[159].y - lt r5.y, l(5.960464478E-08), |r4.x| - exp r5.w, -r4.x - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r4.x - mad r4.x, -r4.x, l(0.240226507), l(0.693147182) - movc r4.x, r5.y, r5.w, r4.x - add r4.y, r4.y, -cb0[162].z - mul r4.y, r4.y, cb0[162].x - max r4.y, r4.y, l(-127.000000) - exp r4.y, -r4.y - mul r4.y, r4.y, cb0[162].y - lt r5.y, l(5.960464478E-08), |r3.z| - exp r5.w, -r3.z - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r3.z - mad r3.z, -r3.z, l(0.240226507), l(0.693147182) - movc r3.z, r5.y, r5.w, r3.z - mul r3.z, r3.z, r4.y - mad r3.z, r4.z, r4.x, r3.z - mad r0.x, -r0.x, r3.w, l(1.000000) - mul r0.x, r4.w, r0.x - mul r0.x, r0.x, r3.z - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r3.zw, r4.wwww, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r3.z - add r0.x, r3.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r5.xxxz - mul r3.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r2.y|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r3.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t14.xyzw, s1, l(0.000000) - add r0.y, |r2.y|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r0.x, r0.x, r3.w -else - add r0.y, r8.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.y, cb0[44].y, -cb0[159].x - mul r2.y, r2.y, cb0[159].z - max r2.y, r2.y, l(-127.000000) - exp r2.y, -r2.y - mul r2.y, r2.y, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.y, r0.w, r0.y - mul r0.y, r4.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r4.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r3.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r2.xzwx -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.y, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.y, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r2.xyz, -r2.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r2.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx - -// === Simplified Fog Modification (Anti-Banding) === -// Check if fog modification is enabled via cb13[12].y -lt r15.x, l(0.500000), cb13[12].y -if_nz r15.x - // r1.xyz = scene color, r4.xyz = transmittance, r0.xyz = fog inscatter - // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density - add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx - - // Reduce fog inscatter intensity - mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - - // Modified fog blend: scene * boostedTrans + reducedInscatter - mad r0.xyz, r1.xyzx, r15.xyzx, r16.xyzx -else - // Original fog blend - mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx -endif -// === End Fog Modification === -dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -dp3 r1.w, r9.xyzx, r9.xyzx -sqrt r1.w, r1.w -mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) -mul r2.x, r1.w, cb0[169].x -mad r1.w, -cb0[169].x, r1.w, l(1.000000) -mul r2.yzw, cb0[168].xxyz, cb0[183].wwww -mad r2.yzw, r8.xxyz, cb0[169].yyyy, r2.yyzw -sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t27.xwyz, s2, l(0.000000) -dp2 r2.x, r2.yyyy, r2.xxxx -add r1.w, r1.w, r2.x -add r2.x, r0.w, l(1.000000) -min r1.w, r1.w, r2.x -add r0.xyz, -r1.xyzx, r0.xyzx -mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx -mov o0.w, r0.w -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x5468822B.cso b/src/games/endfield/deferred-lighting/0x5468822B.cso deleted file mode 100644 index 48fb832e9f35f5112b660cb77a8ed1c4034fcfbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57096 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 Hl!pHY!>qb; diff --git a/src/games/endfield/deferred-lighting/0x5468822B.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x5468822B.ps_5_0.asm deleted file mode 100644 index b7bda33731..0000000000 --- a/src/games/endfield/deferred-lighting/0x5468822B.ps_5_0.asm +++ /dev/null @@ -1,1860 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 13:55:07 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy w -// TEXCOORD 0 xy 1 NONE float xy -// TEXCOORD 1 xyz 2 NONE float xyz -// TEXCOORD 2 xyz 3 NONE float xyz -// TEXCOORD 3 xyzw 4 NONE float xyzw -// TEXCOORD 4 xyz 5 NONE float xyz -// TEXCOORD 5 xyz 6 NONE float xyz -// TEXCOORD 6 xyz 7 NONE float xyz -// TEXCOORD 7 xyz 8 NONE float xyz -// TEXCOORD 8 x 9 NONE uint x -// SV_IsFrontFace 0 x 10 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[216], immediateIndexed -dcl_constantbuffer CB1[4093], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[9], immediateIndexed -dcl_constantbuffer CB6[160], dynamicIndexed -dcl_constantbuffer CB13[13], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_comparison -dcl_sampler s3, mode_default -dcl_sampler s4, mode_default -dcl_sampler s5, mode_default -dcl_resource_structured t0, 4 -dcl_resource_structured t1, 16 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture3d (float,float,float,float) t4 -dcl_resource_texture3d (float,float,float,float) t5 -dcl_resource_texture3d (float,float,float,float) t6 -dcl_resource_texture3d (float,float,float,float) t7 -dcl_resource_texture3d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texturecube (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_input_ps_siv linear noperspective v0.xyw, position -dcl_input_ps linear v1.xy -dcl_input_ps linear v2.xyz -dcl_input_ps linear v3.xyz -dcl_input_ps linear v4.xyzw -dcl_input_ps linear v5.xyz -dcl_input_ps linear v6.xyz -dcl_input_ps linear v7.xyz -dcl_input_ps linear v8.xyz -dcl_input_ps constant v9.x -dcl_input_ps_sgv constant v10.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 32 -add r0.xyz, -v2.xyzx, cb0[44].xyzx -mov r1.x, cb0[0].z -mov r1.y, cb0[1].z -mov r1.z, cb0[2].z -add r2.xyz, -r0.xyzx, r1.xyzx -mad r0.xyz, cb0[86].wwww, r2.xyzx, r0.xyzx -dp3 r0.w, r0.xyzx, r0.xyzx -max r1.w, r0.w, l(9.999999939E-09) -rsq r1.w, r1.w -mul r2.xyz, r0.xyzx, r1.wwww -ishl r2.w, v9.x, l(4) -and r3.x, l(16), cb1[r2.w + 4].w -if_nz r3.x - iadd r3.x, l(2), cb1[r2.w + 5].x - ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r3.x, l(12), t1.xxxx - ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.y, cb1[r2.w + 5].x, l(12), t1.xxxx -else - mov r3.xy, cb1[r2.w + 3].zxzz -endif -sample_b_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t12.xyzw, s3, cb0[108].x -sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t13.xyzw, s4, cb0[108].x -add r3.z, -r5.w, l(1.000000) -mul r4.xyzw, r4.xyzw, cb5[5].xyzw -mul r6.xyz, r4.xyzx, cb5[4].zzzz -dp3 r3.w, r6.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r6.xyz, r4.xyzx, cb5[4].zzzz, -r3.wwww -mad r6.xyz, cb5[4].wwww, r6.xyzx, r3.wwww -sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, v1.xyxx, t14.xywz, s5, cb0[108].x -mul r7.x, r7.x, r7.z -mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r3.w, r7.xyxx, r7.xyxx -min r3.w, r3.w, l(1.000000) -add r3.w, -r3.w, l(1.000000) -sqrt r3.w, r3.w -max r3.w, r3.w, l(1.000000017E-16) -mul r7.xy, r7.xyxx, cb5[0].wwww -add r8.xz, -r3.yyxy, v2.xxzx -mov r8.y, l(0.0000610351562) -dp3 r3.x, r8.xyzx, r8.xyzx -rsq r3.x, r3.x -mul r8.xyz, r3.xxxx, r8.xyzx -mul r9.xyz, v3.zxyz, v4.yzxy -mad r9.xyz, v3.yzxy, v4.zxyz, -r9.xyzx -mul r9.xyz, r9.xyzx, v4.wwww -mul r7.yzw, r7.yyyy, r9.xxyz -mad r7.xyz, r7.xxxx, v4.xyzx, r7.yzwy -mad r3.xyw, r3.wwww, v3.xyxz, r7.xyxz -mad r6.w, cb5[1].y, l(2.000000), l(-1.000000) -movc r6.w, v10.x, l(1.000000), r6.w -dp3 r7.x, r3.xywx, r3.xywx -max r7.x, r7.x, l(1.175494351E-38) -rsq r7.x, r7.x -mul r3.xyw, r3.xyxw, r7.xxxx -mul r7.xyz, r6.wwww, r3.xywx -dp3 r8.w, v3.xyzx, v3.xyzx -rsq r8.w, r8.w -mul r9.xyz, r8.wwww, v3.xyzx -mul r9.xyz, r6.wwww, r9.xyzx -ftou r10.xy, v0.xyxx -add r8.w, l(1.000000), -cb0[111].x -mad r8.w, cb0[198].w, r8.w, cb0[111].x -mul r8.w, r8.w, cb0[109].x -lt r9.w, cb0[187].y, l(0.500000) -if_nz r9.w - mad r11.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx - add r11.xyz, -r11.xyzx, v2.xzyx - max r9.w, |r11.y|, |r11.x| - add r9.w, r9.w, l(-464.000000) - mul_sat r9.w, r9.w, l(0.031250) - add r11.x, |r11.z|, l(-208.000000) - mul_sat r11.x, r11.x, l(0.031250) - max r9.w, r9.w, r11.x - ne r11.x, l(0.000000), cb0[210].w - lt r11.y, r9.w, l(1.000000) - and r11.x, r11.y, r11.x - if_nz r11.x - mad r11.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r11.xyz, -r11.xyzx, v2.xzyx - max r11.x, |r11.y|, |r11.x| - add r11.x, r11.x, l(-29.000000) - add r11.y, |r11.z|, l(-13.000000) - mul_sat r11.xy, r11.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) - max r11.x, r11.y, r11.x - lt r11.y, r11.x, l(1.000000) - if_nz r11.y - mad r11.yzw, v2.xxyz, l(0.000000, 2.000000, 2.000000, 2.000000), l(0.000000, 0.500000, 0.500000, 0.500000) - mul r12.xyz, r11.yzwy, cb0[211].xyzx - round_ni r12.xyz, r12.xyzx - mad r12.xyz, r11.yzwy, cb0[211].xyzx, -r12.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r13.xyw, r12.xyzx, t4.yzwx, s1, l(0.000000) - add r11.y, -r11.x, l(1.000000) - mul r11.z, l(0.500000), cb0[211].y - mad r11.w, -cb0[211].y, l(0.500000), l(1.000000) - max r11.z, r11.z, r12.y - min r11.z, r11.w, r11.z - mul r12.w, r11.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyzw, r12.xwzx, t5.xyzw, s0, l(0.000000) - mad r11.z, r14.w, r11.y, r9.w - add r15.xyz, r12.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s0, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r13.yyyy, r15.xyzx - mov r15.w, r13.y - mul r15.xyzw, r11.yyyy, r15.xyzw - add r12.xyz, r12.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r12.xyzx, t5.xyzw, s0, l(0.000000) - mad r12.xyz, r12.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r12.xyz, r13.xxxx, r12.xyzx - mov r12.w, r13.x - mul r12.xyzw, r11.yyyy, r12.xyzw - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r13.xyz, r13.wwww, r14.xyzx - mul r13.xyzw, r11.yyyy, r13.xyzw - else - mov r15.xyzw, l(0,0,0,0) - mov r12.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r11.z, r9.w - endif - mad r14.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r14.xyz, -r14.xyzx, v2.xzyx - max r11.y, |r14.y|, |r14.x| - add r11.y, r11.y, l(-116.000000) - add r11.w, |r14.z|, l(-52.000000) - mul_sat r11.yw, r11.yyyw, l(0.000000, 0.125000, 0.000000, 0.125000) - max r11.y, r11.w, r11.y - lt r11.w, r11.y, l(1.000000) - if_nz r11.w - mad r14.xyz, v2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r16.xyz, r14.xyzx, cb0[211].xyzx - round_ni r16.xyz, r16.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r16.xyw, r14.xyzx, t6.yzwx, s1, l(0.000000) - add r11.w, -r11.y, l(1.000000) - mul r11.x, r11.w, r11.x - mul r11.w, l(0.500000), cb0[211].y - mad r17.x, -cb0[211].y, l(0.500000), l(1.000000) - max r11.w, r11.w, r14.y - min r11.w, r17.x, r11.w - mul r14.w, r11.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r14.xwzx, t7.xyzw, s0, l(0.000000) - mad r11.z, r17.w, r11.x, r11.z - add r18.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t7.xyzw, s0, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r16.yyyy, r18.xyzx - mov r18.w, r16.y - mad r15.xyzw, r18.xyzw, r11.xxxx, r15.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t7.xyzw, s0, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r16.xxxx, r14.xyzx - mov r14.w, r16.x - mad r12.xyzw, r14.xyzw, r11.xxxx, r12.xyzw - mad r14.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r16.wwww, r14.xyzx - mad r13.xyzw, r16.xyzw, r11.xxxx, r13.xyzw - endif - lt r11.x, l(0.000000), r11.y - if_nz r11.x - mad r14.xyz, v2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r16.xyz, r14.xyzx, cb0[211].xyzx - mul r17.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r16.xyz, r16.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r16.xyzx - mad r16.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r14.xyz, r17.xyzx, r14.xyzx - min r14.xyz, r16.xyzx, r14.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r14.xyzx, t8.yzwx, s1, l(0.000000) - add r11.x, -r9.w, l(1.000000) - mul r11.x, r11.x, r11.y - max r11.y, r17.y, r14.y - min r11.y, r16.y, r11.y - mul r14.w, r11.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t9.xyzw, s0, l(0.000000) - add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t9.xyzw, s0, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r18.yyyy, r17.xyzx - mov r17.w, r18.y - mad r15.xyzw, r17.xyzw, r11.xxxx, r15.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t9.xyzw, s0, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r18.xxxx, r14.xyzx - mov r14.w, r18.x - mad r12.xyzw, r14.xyzw, r11.xxxx, r12.xyzw - mad r14.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r14.xyzx - mad r13.xyzw, r18.xyzw, r11.xxxx, r13.xyzw - mad r11.z, r16.w, r11.x, r11.z - endif - mad_sat r11.x, r11.z, l(2.000000), l(-1.000000) - add r14.x, -r9.w, r11.x - add r9.w, r9.w, r11.x - mul r14.y, r9.w, l(0.500000) - else - mov r15.xyzw, l(0,0,0,0) - mov r12.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r14.xy, l(0,1.000000,0,0) - endif - mul r11.xyzw, r14.yyyx, cb0[213].xyzw - mad r11.y, r11.w, l(0.500000), r11.y - mul r14.zw, r14.yyyx, cb0[213].wwwy - mad r11.w, r14.w, l(0.375000), r14.z - add r11.xyzw, r11.xyzw, r13.xyzw - mul r13.xyzw, r14.yyyx, cb0[214].xyzw - mad r13.y, r13.w, l(0.500000), r13.y - mul r14.zw, r14.yyyx, cb0[214].wwwy - mad r13.w, r14.w, l(0.375000), r14.z - add r12.xyzw, r12.xyzw, r13.xyzw - mul r13.xyzw, r14.yyyx, cb0[215].xyzw - mad r13.y, r13.w, l(0.500000), r13.y - mul r14.xy, r14.yxyy, cb0[215].wyww - mad r13.w, r14.y, l(0.375000), r14.x - add r13.xyzw, r13.xyzw, r15.xyzw - mov r7.w, l(1.000000) - dp4 r14.x, r11.xyzw, r7.xyzw - dp4 r14.y, r12.xyzw, r7.xyzw - dp4 r14.z, r13.xyzw, r7.xyzw - max r14.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r15.xyz, r8.wwww, r14.xyzx - mul r16.xyz, r12.xyzx, l(0.715200, 0.715200, 0.715200, 0.000000) - mad r16.xyz, r11.xyzx, l(0.212600, 0.212600, 0.212600, 0.000000), r16.xyzx - mad r16.xyz, r13.xyzx, l(0.072200, 0.072200, 0.072200, 0.000000), r16.xyzx - dp3 r7.w, r16.xyzx, r16.xyzx - max r7.w, r7.w, l(1.175494351E-38) - rsq r7.w, r7.w - mul r16.xyz, r7.wwww, r16.xyzx - mov r16.y, |r16.y| - mov r16.w, l(1.000000) - dp4 r11.x, r11.xyzw, r16.xyzw - dp4 r11.y, r12.xyzw, r16.xyzw - dp4 r11.z, r13.xyzw, r16.xyzw - max r11.xyz, r11.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - ge r7.w, r15.y, r15.z - and r7.w, r7.w, l(0x3f800000) - mov r12.xy, r15.zyzz - mov r12.zw, l(0,0,-1.000000,0.666666687) - mad r13.xy, r14.yzyy, r8.wwww, -r12.xyxx - mov r13.zw, l(0,0,1.000000,-1.000000) - mad r12.xyzw, r7.wwww, r13.xyzw, r12.xyzw - ge r7.w, r15.x, r12.x - and r7.w, r7.w, l(0x3f800000) - mov r13.xyz, r12.xywx - mov r13.w, r15.x - mov r12.xyw, r13.wywx - add r12.xyzw, -r13.xyzw, r12.xyzw - mad r12.xyzw, r7.wwww, r12.xyzw, r13.xyzw - min r7.w, r12.y, r12.w - add r7.w, -r7.w, r12.x - add r9.w, -r12.y, r12.w - mad r11.w, r7.w, l(6.000000), l(0.000100) - div r9.w, r9.w, r11.w - add r9.w, r9.w, r12.z - frc r9.w, |r9.w| - add r11.w, r12.x, l(0.000100) - div r7.w, r7.w, r11.w - add r13.xyzw, r9.wwww, l(-0.500000, 1.000000, 0.666666687, 0.333333343) - add r9.w, |r13.x|, l(-0.450000) - mul_sat r9.w, r9.w, l(-10.000001) - mad r11.w, r9.w, l(-2.000000), l(3.000000) - mul r9.w, r9.w, r9.w - mul r9.w, r9.w, r11.w - mad r9.w, r9.w, l(-0.350000), l(0.700000) - mov_sat r12.x, r12.x - mul r9.w, r9.w, r12.x - min r7.w, r7.w, r9.w - add r9.w, -r7.w, l(2.000000) - div r9.w, l(2.000000), r9.w - frc r12.xyz, r13.yzwy - mad r12.xyz, r12.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) - add_sat r12.xyz, |r12.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r12.xyz, r12.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) - mad r12.xyz, r7.wwww, r12.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mul r12.xyz, r9.wwww, r12.xyzx - max r7.w, r11.y, r11.x - max r7.w, r11.z, r7.w - mul r8.w, r8.w, r7.w - mov r7.w, l(1.000000) -else - mov r16.xyz, l(0,0,0,0) - mov r15.xyz, l(1.000000,1.000000,1.000000,0) - mov r12.xyz, cb0[188].xyzx - mov r7.w, l(0) -endif -add r9.w, -v2.y, cb1[r2.w + 12].z -add r9.w, r9.w, l(0.200000) -mul_sat r9.w, r9.w, l(2.85714269) -mad r11.x, r9.w, l(-2.000000), l(3.000000) -mul r9.w, r9.w, r9.w -mul r9.w, r9.w, r11.x -mul r9.w, r9.w, cb1[r2.w + 12].y -max r9.w, r9.w, cb1[r2.w + 12].w -add r11.x, r9.w, cb1[r2.w + 12].x -lt r11.x, l(0.010000), r11.x -if_nz r11.x - add r11.x, -r5.x, l(1.000000) - mul r11.yzw, r4.xxyz, r11.xxxx - dp3 r11.y, r11.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r11.y, r11.y, l(-0.350000) - mul_sat r11.y, r11.y, l(-4.000000) - mad r11.z, r11.y, l(-2.000000), l(3.000000) - mul r11.y, r11.y, r11.y - mul r11.w, r11.y, r11.z - mul r13.xyzw, v8.xyxz, l(1.000000, -1.000000, 1.000000, 1.000000) - movc r13.xyzw, cb1[r2.w + 4].wwww, r13.xyzw, v8.xzxy - mul r14.xyzw, r13.xyzw, cb0[196].zzzz - movc r17.yz, cb1[r2.w + 4].wwww, v7.zzyz, v7.yyzy - mov r17.x, v7.x - add r18.xyz, |r17.xyzx|, l(-0.200000, -0.200000, -0.200000, 0.000000) - mul r19.xyz, r18.xyzx, r18.xyzx - mul r18.xyz, r18.xyzx, r19.xyzx - max r18.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - dp3 r12.w, r18.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - div r18.xyz, r18.xyzx, r12.wwww - sample_b_indexable(texture2d)(float,float,float,float) r20.xyzw, r14.zyzz, t10.xyzw, s3, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r14.zwzz, t10.xyzw, s3, cb0[108].x - mul r21.xyzw, r18.zzzz, r21.xyzw - mad r20.xyzw, r20.xyzw, r18.yyyy, r21.xyzw - sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r14.ywyy, t10.xyzw, s3, cb0[108].x - mad r18.xyzw, r21.xyzw, r18.xxxx, r20.xyzw - add r17.yw, -r18.wwww, l(0.000000, 0.800000, 0.000000, 0.450000) - mul r20.xyz, r7.yyxy, l(0.200000, 0.000000, 1.000000, 0.000000) - mad_sat r12.w, cb1[r2.w + 12].x, r11.x, r20.x - add r12.w, -r17.y, r12.w - mul_sat r12.w, r12.w, l(3.33333325) - mad r13.x, r12.w, l(-2.000000), l(3.000000) - mul r12.w, r12.w, r12.w - mul r12.w, r12.w, r13.x - mul_sat r11.x, r9.w, r11.x - add r11.x, -r17.w, r11.x - mul_sat r11.x, r11.x, l(1.53846145) - mad r13.x, r11.x, l(-2.000000), l(3.000000) - mul r11.x, r11.x, r11.x - mul r11.x, r11.x, r13.x - max r11.x, r11.x, r12.w - add r12.w, r5.x, l(-0.500000) - mul_sat r12.w, r12.w, l(4.000000) - mad r13.x, r12.w, l(-2.000000), l(3.000000) - mul r12.w, r12.w, r12.w - mul r12.w, r12.w, r13.x - add r5.w, -r5.w, l(0.199999988) - mul_sat r5.w, r5.w, l(-5.00000048) - mad r13.x, r5.w, l(-2.000000), l(3.000000) - mul r5.w, r5.w, r5.w - mul r5.w, r5.w, r13.x - mad r13.x, r5.w, r11.w, r12.w - min r13.x, r13.x, l(1.000000) - max r9.w, r9.w, cb1[r2.w + 12].x - mad r17.yw, r18.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mul r18.xyw, r14.yzyw, l(20.000000, 20.000000, 0.000000, 20.000000) - mul r21.xyz, r14.yzwy, l(34.345600, 34.345600, 34.345600, 0.000000) - mul r22.xyz, r19.xyzx, r19.xyzx - mul r22.xyz, r22.xyzx, r22.xyzx - mul r19.xyz, r19.xyzx, r22.xyzx - dp3 r15.w, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - div r19.xyz, r19.xyzx, r15.wwww - round_ni r22.xyzw, r18.yxyw - mul r23.xyzw, r22.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r23.xyzw, r23.xyzw - add r24.xyzw, r23.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r15.w, r23.xyxx, r24.xyxx - add r20.xw, r15.wwww, r23.xxxy - mul r15.w, r20.w, r20.x - add r16.w, r20.w, r20.x - frc r15.w, r15.w - frc r25.w, r16.w - add r26.xyzw, r22.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) - mul r26.xyzw, r26.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r26.xyzw, r26.xyzw - add r27.xyzw, r26.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r16.w, r26.xyxx, r27.xyxx - add r20.xw, r16.wwww, r26.xxxy - mul r16.w, r20.w, r20.x - add r18.y, r20.w, r20.x - frc r23.x, r16.w - frc r23.y, r18.y - mad r16.w, r15.w, l(0.399999976), l(0.600000) - mul r18.y, r16.w, l(0.250000) - mad r22.xyzw, r14.zyzw, l(20.000000, 20.000000, 20.000000, 20.000000), -r22.xyzw - mad r20.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r20.xw, r20.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r22.xxxy - add r20.xw, r20.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) - mul r22.x, r20.x, l(1.250000) - lt r19.w, r20.w, l(0.000000) - movc r19.w, r19.w, l(1.250000), l(0.750000) - mul r22.y, r19.w, r20.w - mad r15.w, cb0[102].x, l(3.000000), r15.w - frc r15.w, r15.w - add r20.xw, r15.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) - mul_sat r20.xw, r20.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) - mad r24.xy, r20.xwxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) - mul r20.xw, r20.xxxw, r20.xxxw - mul r20.xw, r20.xxxw, r24.xxxy - mul r15.w, r20.w, r20.x - dp2 r19.w, r22.xyxx, r22.xyxx - sqrt r19.w, r19.w - mad r16.w, -r16.w, l(0.250000), r19.w - div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.y - mul_sat r16.w, r16.w, r19.w - mad r19.w, r16.w, l(-2.000000), l(3.000000) - mul r16.w, r16.w, r16.w - mul r16.w, r16.w, r19.w - ge r16.w, r16.w, l(0.001000) - and r16.w, r16.w, l(0x3f800000) - mul r25.z, r15.w, r16.w - div r20.xw, r22.xxxy, r18.yyyy - max r20.xw, r20.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) - min r20.xw, r20.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - ge r15.w, r25.z, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r20.xw, r15.wwww, r20.xxxw - mad r15.w, r23.x, l(0.250000), l(0.250000) - mul r25.xy, r15.wwww, r20.xwxx - dp2 r15.w, r23.zwzz, r24.zwzz - add r20.xw, r15.wwww, r23.zzzw - mul r15.w, r20.w, r20.x - add r16.w, r20.w, r20.x - frc r15.w, r15.w - frc r23.w, r16.w - dp2 r16.w, r26.zwzz, r27.zwzz - add r20.xw, r16.wwww, r26.zzzw - mul r16.w, r20.w, r20.x - add r18.y, r20.w, r20.x - frc r22.x, r16.w - frc r22.y, r18.y - mad r16.w, r15.w, l(0.399999976), l(0.600000) - mul r18.y, r16.w, l(0.250000) - mad r20.xw, r22.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r20.xw, r20.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r22.zzzw - add r20.xw, r20.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) - mul r24.x, r20.x, l(1.250000) - lt r19.w, r20.w, l(0.000000) - movc r19.w, r19.w, l(1.250000), l(0.750000) - mul r24.y, r19.w, r20.w - mad r15.w, cb0[102].x, l(3.000000), r15.w - frc r15.w, r15.w - add r20.xw, r15.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) - mul_sat r20.xw, r20.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) - mad r22.yz, r20.xxwx, l(0.000000, -2.000000, -2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000) - mul r20.xw, r20.xxxw, r20.xxxw - mul r20.xw, r20.xxxw, r22.yyyz - mul r15.w, r20.w, r20.x - dp2 r19.w, r24.xyxx, r24.xyxx - sqrt r19.w, r19.w - mad r16.w, -r16.w, l(0.250000), r19.w - div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.y - mul_sat r16.w, r16.w, r19.w - mad r19.w, r16.w, l(-2.000000), l(3.000000) - mul r16.w, r16.w, r16.w - mul r16.w, r16.w, r19.w - ge r16.w, r16.w, l(0.001000) - and r16.w, r16.w, l(0x3f800000) - mul r23.z, r15.w, r16.w - div r20.xw, r24.xxxy, r18.yyyy - max r20.xw, r20.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) - min r20.xw, r20.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - ge r15.w, r23.z, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r20.xw, r15.wwww, r20.xxxw - mad r15.w, r22.x, l(0.250000), l(0.250000) - mul r23.xy, r15.wwww, r20.xwxx - round_ni r18.xy, r18.xwxx - mul r20.xw, r18.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r20.xw, r20.xxxw - add r22.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r15.w, r20.xwxx, r22.xyxx - add r20.xw, r15.wwww, r20.xxxw - mul r15.w, r20.w, r20.x - add r16.w, r20.w, r20.x - frc r15.w, r15.w - frc r22.w, r16.w - add r20.xw, r18.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) - mul r20.xw, r20.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r20.xw, r20.xxxw - add r24.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r16.w, r20.xwxx, r24.xyxx - add r20.xw, r16.wwww, r20.xxxw - mul r16.w, r20.w, r20.x - add r18.w, r20.w, r20.x - frc r24.x, r16.w - frc r24.y, r18.w - mad r16.w, r15.w, l(0.399999976), l(0.600000) - mul r18.w, r16.w, l(0.250000) - mad r18.xy, r14.ywyy, l(20.000000, 20.000000, 0.000000, 0.000000), -r18.xyxx - mad r20.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r18.xy, r20.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r18.xyxx - add r18.xy, r18.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - mul r26.x, r18.x, l(1.250000) - lt r18.x, r18.y, l(0.000000) - movc r18.x, r18.x, l(1.250000), l(0.750000) - mul r26.y, r18.x, r18.y - mad r15.w, cb0[102].x, l(3.000000), r15.w - frc r15.w, r15.w - add r18.xy, r15.wwww, l(-0.200000, -0.850000, 0.000000, 0.000000) - mul_sat r18.xy, r18.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) - mad r20.xw, r18.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r18.xy, r18.xyxx, r18.xyxx - mul r18.xy, r18.xyxx, r20.xwxx - mul r15.w, r18.y, r18.x - dp2 r18.x, r26.xyxx, r26.xyxx - sqrt r18.x, r18.x - mad r16.w, -r16.w, l(0.250000), r18.x - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w - mul_sat r16.w, r16.w, r18.x - mad r18.x, r16.w, l(-2.000000), l(3.000000) - mul r16.w, r16.w, r16.w - mul r16.w, r16.w, r18.x - ge r16.w, r16.w, l(0.001000) - and r16.w, r16.w, l(0x3f800000) - mul r22.z, r15.w, r16.w - div r18.xy, r26.xyxx, r18.wwww - max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r15.w, r22.z, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r18.xy, r15.wwww, r18.xyxx - mad r15.w, r24.x, l(0.250000), l(0.250000) - mul r22.xy, r15.wwww, r18.xyxx - mul r23.xyzw, r19.zzzz, r23.xyzw - mad r23.xyzw, r25.xyzw, r19.yyyy, r23.xyzw - mad r22.xyzw, r22.xyzw, r19.xxxx, r23.xyzw - round_ni r23.xyzw, r21.yxyz - mul r24.xyzw, r23.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r24.xyzw, r24.xyzw - add r25.xyzw, r24.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r15.w, r24.xyxx, r25.xyxx - add r18.xy, r15.wwww, r24.xyxx - mul r15.w, r18.y, r18.x - add r16.w, r18.y, r18.x - frc r15.w, r15.w - frc r26.w, r16.w - add r27.xyzw, r23.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) - mul r27.xyzw, r27.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r27.xyzw, r27.xyzw - add r28.xyzw, r27.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r16.w, r27.xyxx, r28.xyxx - add r18.xy, r16.wwww, r27.xyxx - mul r16.w, r18.y, r18.x - add r18.x, r18.y, r18.x - frc r24.x, r16.w - frc r24.y, r18.x - mad r16.w, r15.w, l(0.399999976), l(0.600000) - mul r18.x, r16.w, l(0.250000) - mad r23.xyzw, r14.xyzw, l(34.345600, 34.345600, 34.345600, 34.345600), -r23.xyzw - mad r18.yw, r24.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r18.yw, r18.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r23.xxxy - add r18.yw, r18.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) - mul r23.x, r18.y, l(1.250000) - lt r14.x, r18.w, l(0.000000) - movc r14.x, r14.x, l(1.250000), l(0.750000) - mul r23.y, r14.x, r18.w - mad r14.x, cb0[102].x, l(4.345600), r15.w - frc r14.x, r14.x - add r18.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) - mul_sat r18.yw, r18.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) - mad r20.xw, r18.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r18.yw, r18.yyyw, r18.yyyw - mul r18.yw, r18.yyyw, r20.xxxw - mul r14.x, r18.w, r18.y - dp2 r15.w, r23.xyxx, r23.xyxx - sqrt r15.w, r15.w - mad r15.w, -r16.w, l(0.250000), r15.w - div r16.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.x - mul_sat r15.w, r15.w, r16.w - mad r16.w, r15.w, l(-2.000000), l(3.000000) - mul r15.w, r15.w, r15.w - mul r15.w, r15.w, r16.w - ge r15.w, r15.w, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r26.z, r14.x, r15.w - div r18.xy, r23.xyxx, r18.xxxx - max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r14.x, r26.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r18.xy, r14.xxxx, r18.xyxx - mad r14.x, r24.x, l(0.250000), l(0.250000) - mul r26.xy, r14.xxxx, r18.xyxx - dp2 r14.x, r24.zwzz, r25.zwzz - add r18.xy, r14.xxxx, r24.zwzz - mul r14.x, r18.y, r18.x - add r15.w, r18.y, r18.x - frc r14.x, r14.x - frc r24.w, r15.w - dp2 r15.w, r27.zwzz, r28.zwzz - add r18.xy, r15.wwww, r27.zwzz - mul r15.w, r18.y, r18.x - add r16.w, r18.y, r18.x - frc r18.x, r15.w - frc r18.y, r16.w - mad r15.w, r14.x, l(0.399999976), l(0.600000) - mul r16.w, r15.w, l(0.250000) - mad r18.yw, r18.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r18.yw, r18.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r23.zzzw - add r18.yw, r18.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) - mul r23.x, r18.y, l(1.250000) - lt r18.y, r18.w, l(0.000000) - movc r18.y, r18.y, l(1.250000), l(0.750000) - mul r23.y, r18.y, r18.w - mad r14.x, cb0[102].x, l(4.345600), r14.x - frc r14.x, r14.x - add r18.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) - mul_sat r18.yw, r18.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) - mad r20.xw, r18.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r18.yw, r18.yyyw, r18.yyyw - mul r18.yw, r18.yyyw, r20.xxxw - mul r14.x, r18.w, r18.y - dp2 r18.y, r23.xyxx, r23.xyxx - sqrt r18.y, r18.y - mad r15.w, -r15.w, l(0.250000), r18.y - div r18.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w - mul_sat r15.w, r15.w, r18.y - mad r18.y, r15.w, l(-2.000000), l(3.000000) - mul r15.w, r15.w, r15.w - mul r15.w, r15.w, r18.y - ge r15.w, r15.w, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r24.z, r14.x, r15.w - div r18.yw, r23.xxxy, r16.wwww - max r18.yw, r18.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) - min r18.yw, r18.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) - ge r14.x, r24.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r18.yw, r14.xxxx, r18.yyyw - mad r14.x, r18.x, l(0.250000), l(0.250000) - mul r24.xy, r14.xxxx, r18.ywyy - round_ni r18.xy, r21.xzxx - mul r20.xw, r18.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r20.xw, r20.xxxw - add r21.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r14.x, r20.xwxx, r21.xyxx - add r20.xw, r14.xxxx, r20.xxxw - mul r14.x, r20.w, r20.x - add r15.w, r20.w, r20.x - frc r14.x, r14.x - frc r21.w, r15.w - add r20.xw, r18.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) - mul r20.xw, r20.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r20.xw, r20.xxxw - add r23.xy, r20.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r15.w, r20.xwxx, r23.xyxx - add r20.xw, r15.wwww, r20.xxxw - mul r15.w, r20.w, r20.x - add r16.w, r20.w, r20.x - frc r23.x, r15.w - frc r23.y, r16.w - mad r15.w, r14.x, l(0.399999976), l(0.600000) - mul r16.w, r15.w, l(0.250000) - mad r18.xy, r14.ywyy, l(34.345600, 34.345600, 0.000000, 0.000000), -r18.xyxx - mad r20.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r18.xy, r20.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r18.xyxx - add r18.xy, r18.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - mul r25.x, r18.x, l(1.250000) - lt r18.x, r18.y, l(0.000000) - movc r18.x, r18.x, l(1.250000), l(0.750000) - mul r25.y, r18.x, r18.y - mad r14.x, cb0[102].x, l(4.345600), r14.x - frc r14.x, r14.x - add r18.xy, r14.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) - mul_sat r18.xy, r18.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) - mad r20.xw, r18.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r18.xy, r18.xyxx, r18.xyxx - mul r18.xy, r18.xyxx, r20.xwxx - mul r14.x, r18.y, r18.x - dp2 r18.x, r25.xyxx, r25.xyxx - sqrt r18.x, r18.x - mad r15.w, -r15.w, l(0.250000), r18.x - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w - mul_sat r15.w, r15.w, r18.x - mad r18.x, r15.w, l(-2.000000), l(3.000000) - mul r15.w, r15.w, r15.w - mul r15.w, r15.w, r18.x - ge r15.w, r15.w, l(0.001000) - and r15.w, r15.w, l(0x3f800000) - mul r21.z, r14.x, r15.w - div r18.xy, r25.xyxx, r16.wwww - max r18.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r18.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r14.x, r21.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r18.xy, r14.xxxx, r18.xyxx - mad r14.x, r23.x, l(0.250000), l(0.250000) - mul r21.xy, r14.xxxx, r18.xyxx - mul r23.xyzw, r19.zzzz, r24.xyzw - mad r23.xyzw, r26.xyzw, r19.yyyy, r23.xyzw - mad r19.xyzw, r21.xyzw, r19.xxxx, r23.xyzw - max r18.xy, r19.zwzz, r22.zwzz - mad r19.zw, -r13.xxxx, r9.wwww, l(0.000000, 0.000000, 1.000000, 1.010000) - add r14.x, r18.y, l(-0.100000) - ge r14.x, r14.x, r19.z - and r14.x, r14.x, l(0x3f800000) - mul r14.x, r14.x, r18.x - ge r2.w, cb1[r2.w + 12].x, l(0.010000) - and r2.w, r2.w, l(0x3f800000) - mul r2.w, r2.w, r14.x - lt r14.x, l(0.001000), r2.w - add r18.xy, r19.xyxx, r22.xyxx - mul r15.w, cb0[102].x, cb0[196].z - mul r19.y, r15.w, l(0.750000) - dp2 r15.w, r17.xzxx, r17.xzxx - max r15.w, r15.w, l(1.175494351E-38) - rsq r15.w, r15.w - mul r17.xz, r15.wwww, r17.xxzx - add r17.xz, |r17.xxzx|, l(-0.200000, 0.000000, -0.200000, 0.000000) - mul r20.xw, r17.xxxz, r17.xxxz - mul r17.xz, r17.xxzx, r20.xxwx - max r17.xz, r17.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) - dp2 r15.w, r17.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) - div r17.xz, r17.xxzx, r15.wwww - sample_b_indexable(texture2d)(float,float,float,float) r21.xyz, r14.zwzz, t11.xyzw, s3, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r14.yzw, r14.ywyy, t11.wxyz, s3, cb0[108].x - mul r14.yzw, r17.xxxx, r14.yyzw - mad r14.yzw, r21.xxyz, r17.zzzz, r14.yyzw - movc r17.yw, r14.xxxx, r18.xxxy, r17.yyyw - mad r14.xy, r14.yzyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mov r19.x, l(0) - mad r21.xyzw, r13.zwyw, cb0[196].zzzz, r19.xyxy - sample_b_indexable(texture2d)(float,float,float,float) r13.y, r21.xyxx, t11.xwyz, s3, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r13.z, r21.zwzz, t11.xywz, s3, cb0[108].x - mul r13.z, r17.x, r13.z - mad r13.y, r13.y, r17.z, r13.z - mad r13.yz, r14.xxyx, r13.yyyy, r17.yywy - ge r13.w, r18.z, r19.w - and r13.w, r13.w, l(0x3f800000) - max r2.w, r2.w, r13.w - add r13.w, -r14.w, l(1.000000) - mad r9.w, r13.x, r9.w, -r13.w - mul_sat r9.w, r9.w, l(9.999998) - mad r13.x, r9.w, l(-2.000000), l(3.000000) - mul r9.w, r9.w, r9.w - mul r9.w, r9.w, r13.x - max r2.w, r2.w, r9.w - mad r13.xw, -r7.zzzy, l(1.000000, 0.000000, 0.000000, 0.000000), r20.yyyz - dp2 r9.w, r13.xwxx, r13.xwxx - lt r14.x, l(0.0000610351562), r9.w - rsq r9.w, r9.w - mul r13.xw, r9.wwww, r13.xxxw - mov r13.xw, -r13.xxxw - movc r17.z, r14.x, r13.x, l(-1.000000) - and r17.y, r13.w, r14.x - min r9.w, r3.z, l(0.050000) - add r13.x, -r3.z, r9.w - mad r13.x, r2.w, r13.x, r3.z - mad r11.y, -r11.z, r11.y, l(1.000000) - mul r11.y, r11.y, r11.x - mad r5.w, -r5.w, r11.w, l(1.000000) - mul r5.w, r5.w, r11.y - mad r5.w, r5.w, l(-0.500000), l(1.000000) - mov r17.x, l(0) - mad r3.xyw, -r3.xyxw, r6.wwww, r17.zxzy - mad r3.xyw, r13.yyyy, r3.xyxw, r7.xyxz - mul r14.xyz, r7.zxyz, r17.xyzx - mad r14.xyz, r7.yzxy, r17.yzxy, -r14.xyzx - add r14.xyz, -r3.xywx, r14.xyzx - mad r3.xyw, r13.zzzz, r14.xyxz, r3.xyxw - dp3 r6.w, r3.xywx, r3.xywx - rsq r6.w, r6.w - mad r3.xyw, r3.xyxw, r6.wwww, -r7.xyxz - mad r3.xyw, r2.wwww, r3.xyxw, r7.xyxz - dp3 r6.w, r3.xywx, r3.xywx - rsq r6.w, r6.w - mul r3.xyw, r3.xyxw, r6.wwww - mul r6.w, r11.w, r11.x - mad r6.w, -r6.w, l(0.200000), r13.x - min r11.x, r13.x, l(0.200000) - max r3.z, r6.w, r11.x - mul r6.xyz, r5.wwww, r6.xyzx - dp3 r6.w, r4.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r6.w, r6.w, l(-0.700000) - mul_sat r6.w, r6.w, l(-2.50000024) - mad r11.x, r6.w, l(-2.000000), l(3.000000) - mul r6.w, r6.w, r6.w - mul r6.w, r6.w, r11.x - mad r6.w, r6.w, l(0.500000), l(1.000000) - mul r11.x, r12.w, r2.w - mad r11.yzw, r4.xxyz, r6.wwww, -r4.xxyz - mad r11.xyz, r11.xxxx, r11.yzwy, r4.xyzx - mul r4.xyz, r5.wwww, r11.xyzx -else - mov r3.xyw, r7.xyxz - mov r9.w, l(0.010000) - mov r2.w, l(0) -endif -mul r5.w, r5.y, l(0.040000) -mad r6.w, -r5.x, l(0.960000), l(0.960000) -mul r11.xyz, r4.xyzx, r6.wwww -mad r13.xyz, -r5.yyyy, l(0.040000, 0.040000, 0.040000, 0.000000), r4.xyzx -mad r13.xyz, r5.xxxx, r13.xyzx, r5.wwww -mul r6.xyz, r6.wwww, r6.xyzx -mul r5.y, r3.z, r3.z -max r5.y, r5.y, l(0.00781250000) -max r5.w, v5.z, l(9.999999939E-09) -div r14.xy, v5.xyxx, r5.wwww -max r5.w, v6.z, l(9.999999939E-09) -div r14.zw, v6.xxxy, r5.wwww -add r14.xy, -r14.zwzz, r14.xyxx -mul r17.xy, r14.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) -sqrt r17.xy, |r17.xyxx| -sqrt r17.xy, r17.xyxx -mov r14.z, -r14.y -lt r14.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r14.xxxz -lt r14.xz, r14.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r14.xy, -r14.ywyy, r14.xzxx -itof r14.xy, r14.xyxx -mul r14.xy, r14.xyxx, r17.xyxx -mad o1.xy, r14.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -lt r5.w, l(0.500000), r2.w -movc o1.w, r5.w, l(0.700000), l(0.400000) -add r14.xyz, cb0[197].xyzx, cb3[0].xyzx -mad r14.xyz, cb0[187].wwww, r14.xyzx, -cb3[0].xyzx -mov r14.w, l(0.0000610351562) -dp3 r5.w, r14.xzwx, r14.xzwx -rsq r5.w, r5.w -mul r17.xyz, r5.wwww, r14.xwzx -add r18.xyz, cb0[191].xyzx, -cb3[3].xyzx -mad r18.xyz, cb0[198].yyyy, r18.xyzx, cb3[3].xyzx -add r5.w, l(1.000000), -cb3[3].w -mad r5.w, cb0[198].w, r5.w, cb3[3].w -mul r19.xyz, r5.wwww, r18.xyzx -mov r10.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r20.xy, r10.xyzz, t3.xyzw -add r10.z, r20.x, l(-1.000000) -mad r10.z, cb4[34].x, r10.z, l(1.000000) -add r11.w, -r10.z, l(1.000000) -mad r10.z, cb0[187].z, r11.w, r10.z -dp3 r11.w, r7.xyzx, r14.xyzx -mul r20.xzw, r6.xxyz, cb0[186].zzzz -mul r21.xyz, r20.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000) -dp3 r12.w, r11.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -dp2 r13.w, cb0[6].xzxx, cb0[6].xzxx -rsq r13.w, r13.w -mul r22.xy, r13.wwww, cb0[6].xzxx -dp2 r13.w, r17.xzxx, r22.xyxx -mov_sat r13.w, -r13.w -add r22.xy, l(1.000000, 1.000000, 0.000000, 0.000000), -cb0[198].xyxx -mad r14.w, r11.w, l(0.500000), l(-1.000000) -mad r14.w, -r11.w, r14.w, -r11.w -add r15.w, l(0.750000), -|cb0[6].y| -add_sat r15.w, r15.w, r15.w -mad r16.w, r15.w, l(-2.000000), l(3.000000) -mul r15.w, r15.w, r15.w -mul r15.w, r15.w, r16.w -mul r15.w, r13.w, r15.w -mul r15.w, r22.x, r15.w -add r14.w, r14.w, l(0.500000) -mad r11.w, r15.w, r14.w, r11.w -mad r11.w, cb0[197].w, cb0[198].x, r11.w -max r11.w, r11.w, l(-1.000000) -min r11.w, r11.w, l(1.000000) -add r11.w, r11.w, l(-0.250000) -mul r11.w, r11.w, l(1.33333337) -max r11.w, r11.w, l(0.000000) -mad r14.w, r11.w, l(-2.000000), l(3.000000) -mul r11.w, r11.w, r11.w -mul r11.w, r11.w, r14.w -dp3 r14.w, r7.xyzx, cb0[6].xyzx -add r14.w, r14.w, l(-0.250000) -mul_sat r14.w, r14.w, l(1.33333337) -mad r15.w, r14.w, l(-2.000000), l(3.000000) -mul r14.w, r14.w, r14.w -mul r14.w, r14.w, r15.w -mul r15.w, r5.z, r20.y -min r16.w, r5.z, r20.y -min r17.w, r11.w, r16.w -mul r18.w, r14.w, r15.w -dp3 r19.w, r7.xyzx, cb0[192].xyzx -add_sat r19.w, r19.w, cb0[193].x -mad r19.w, r19.w, cb0[193].y, cb0[193].z -mul r21.w, r17.w, cb0[187].y -add r23.xyz, -r12.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r23.xyz, r21.wwww, r23.xyzx, r12.xyzx -mul r23.xyz, r19.wwww, r23.xyzx -mad r19.w, r8.w, l(0.350000024), l(0.650000) -min r19.w, r19.w, l(1.500000) -max r24.xyz, r8.wwww, l(1.250000, 0.000000, 0.500000, 0.000000) -min r24.xyz, r24.xyzx, l(1.750000, 1.500000, 1.500000, 0.000000) -add r8.w, -r19.w, r24.x -mad r8.w, cb0[187].x, r8.w, r19.w -mul r25.xyz, r8.wwww, r23.xyzx -mul r25.xyz, r25.xyzx, cb0[186].wwww -dp3 r8.w, r19.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r19.xyz, r18.xyzx, r5.wwww, -r8.wwww -mad r19.xyz, r17.wwww, r19.xyzx, r8.wwww -mul r23.xyz, r23.xyzx, r24.yyyy -mad r22.yzw, r18.xxyz, cb0[198].yyyy, r22.yyyy -mad r19.xyz, r23.xyzx, r22.yzwy, r19.xyzx -mad r19.xyz, r19.xyzx, cb0[186].yyyy, -r25.xyzx -mad r19.xyz, r10.zzzz, r19.xyzx, r25.xyzx -dp3 r8.w, r21.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r21.xyz, r20.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000), -r8.wwww -mad r21.xyz, r21.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r8.wwww -mad_sat r8.w, r14.w, r15.w, r11.w -mad r22.yzw, r6.xxyz, cb0[186].zzzz, -r21.xxyz -mad r21.xyz, r8.wwww, r22.yzwy, r21.xyzx -mad r22.yzw, r4.xxyz, r6.wwww, -r21.xxyz -mad r21.xyz, r17.wwww, r22.yzwy, r21.xyzx -mad r22.yzw, r4.xxyz, r6.wwww, -r12.wwww -mad r22.yzw, r22.yyzw, l(0.000000, 1.200000, 1.200000, 1.200000), r12.wwww -mad r22.yzw, -r6.xxyz, cb0[186].zzzz, r22.yyzw -mad r20.xzw, r18.wwww, r22.yyzw, r20.xxzw -dp3 r8.w, r21.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -max r11.w, r8.w, l(0.001000) -div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w -mul r8.w, r8.w, r11.w -max r8.w, r8.w, l(0.000000) -min r8.w, r8.w, l(1.500000) -mad r21.xyz, r21.xyzx, r8.wwww, -r20.xzwx -mad r20.xzw, r10.zzzz, r21.xxyz, r20.xxzw -mad r8.w, -r14.w, r15.w, r17.w -mad r8.w, r10.z, r8.w, r18.w -add r11.w, l(1.000000), -cb0[186].z -mad r11.w, r8.w, r11.w, cb0[186].z -add r14.w, r14.y, l(-0.500000) -mad r21.y, r10.z, r14.w, l(0.500000) -dp3_sat r23.x, r3.xywx, r2.xyzx -mov r21.xz, cb0[6].xxzx -dp3 r14.w, r21.xyzx, r21.xyzx -max r14.w, r14.w, l(1.175494351E-38) -rsq r14.w, r14.w -mul r21.xyz, r14.wwww, r21.xyzx -add r21.xyz, r21.xyzx, r21.xyzx -mad r14.xyz, r14.xyzx, r10.zzzz, r21.xyzx -add r14.w, r10.z, l(2.000000) -mad r14.xyz, r2.xyzx, r14.wwww, r14.xyzx -dp3 r14.w, r14.xyzx, r14.xyzx -rsq r14.w, r14.w -mul r14.xyz, r14.wwww, r14.xyzx -dp3 r14.x, r3.xywx, r14.xyzx -mul r14.y, r5.y, r5.y -mad r14.z, r14.x, r14.y, -r14.x -mad r14.x, r14.z, r14.x, l(1.000000) -mul r14.x, r14.x, r14.x -add r14.z, l(1.000000), -cb5[1].z -mad r14.z, r4.w, cb5[1].z, r14.z -mul r21.xyz, r19.xyzx, r20.xzwx -ne r14.w, r14.x, r14.y -div r14.x, r14.y, r14.x -movc r14.x, r14.w, r14.x, l(1.000000) -mad r14.y, r23.x, l(2.000000), r5.y -add r14.y, r14.y, l(0.000100) -div r14.y, l(0.500000), r14.y -mad r14.x, r14.x, r14.y, l(-0.0000610351562) -max r14.x, r14.x, l(0.000000) -min r14.x, r14.x, l(20.000000) -mul r14.xyw, r13.xyxz, r14.xxxx -mad r8.w, r8.w, l(0.500000), l(0.500000) -mul r8.w, r11.w, r8.w -mul r19.xyz, r8.wwww, r19.xyzx -mul r14.xyw, r14.xyxw, r19.xyxz -mul r14.xyw, r14.xyxw, cb0[199].wwww -mad r14.xyw, r21.xyxz, r14.zzzz, r14.xyxw -dp3 r8.w, r14.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r15.w, r8.w, l(-0.500000) -max r15.w, r15.w, l(0.000000) -min r15.w, r15.w, l(0.500000) -mov r19.y, l(0) -mov r19.xz, cb0[195].yyxy -mul r21.xyz, r19.xyzx, cb0[6].zxyz -mad r19.xyz, cb0[6].yzxy, r19.yzxy, -r21.xyzx -dp3 r17.w, r19.xyzx, r19.xyzx -rsq r17.w, r17.w -mul r19.xyz, r17.wwww, r19.xyzx -dp3 r17.w, r2.xyzx, r7.xyzx -add r21.xy, -|r17.wwww|, l(1.000000, 0.399999976, 0.000000, 0.000000) -dp3 r17.x, r17.xyzx, r7.xyzx -add r17.y, -r10.z, l(1.000000) -add r9.w, -r3.z, r9.w -mad r2.w, r2.w, r9.w, r3.z -mul r25.y, r2.w, r2.w -mul r26.x, r23.x, r23.x -mul r26.z, r23.x, r26.x -mul r9.w, r25.y, r25.y -mul r25.z, r25.y, r9.w -mov r23.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r24.x, l(3.327070, 1.000000, 0.000000, 0.000000), r23.xyxx -dp2 r24.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r23.xzxx -mov r25.x, l(1.000000) -dp2 r9.w, r24.xyxx, r25.xyxx -mov r26.yw, l(0,9.044010,0,1.000000) -dp3 r27.x, l(3.596850, -1.367720, 1.000000, 0.000000), r26.xzwx -dp3 r27.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r26.xyzx -mov r28.x, l(5.565890) -mov r28.yz, r26.xxzx -dp3 r27.z, l(1.000000, 19.788601, -20.212299, 0.000000), r28.xyzx -dp3 r17.z, r27.xyzx, r25.xyzx -div r9.w, r9.w, r17.z -dp2 r24.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r23.xwxx -mov r26.x, l(1.296780) -mov r26.y, r23.x -dp2 r24.y, l(1.000000, -0.755907, 0.000000, 0.000000), r26.xyxx -dp2 r17.z, r24.xyxx, r25.xyxx -dp3 r27.x, l(2.923380, 59.418800, 1.000000, 0.000000), r26.yzwy -mov r26.xw, l(20.322500,0,0,121.563004) -dp3 r27.y, l(1.000000, -27.030199, 222.591995, 0.000000), r26.xyzx -dp3 r27.z, l(626.130005, 316.627014, 1.000000, 0.000000), r26.yzwy -dp3 r18.w, r27.xyzx, r25.xyzx -div r17.z, r17.z, r18.w -mad r22.yzw, r13.xxyz, r9.wwww, r17.zzzz -add r9.w, r9.w, r17.z -mad r15.w, r15.w, r15.w, l(1.000000) -add r14.xyw, -r8.wwww, r14.xyxw -mad r14.xyw, r15.wwww, r14.xyxw, r8.wwww -mad r21.zw, cb0[195].wwww, l(0.000000, 0.000000, -0.600000, -0.399999976), l(0.000000, 0.000000, 0.800000, 0.900000) -add r8.w, -r21.z, r21.w -add r15.w, -r21.z, r21.x -div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w -mul_sat r8.w, r8.w, r15.w -mad r15.w, r8.w, l(-2.000000), l(3.000000) -mul r8.w, r8.w, r8.w -mul r8.w, r8.w, r15.w -mul r23.yzw, r8.wwww, cb0[194].xxyz -mul r23.yzw, r23.yyzw, cb0[194].wwww -dp3 r8.w, r8.xyzx, r19.xyzx -add_sat r8.w, r8.w, l(1.000000) -min r5.z, r5.z, r8.w -min r5.z, r20.y, r5.z -mul r23.yzw, r5.zzzz, r23.yyzw -mad r24.xyw, r4.xyxz, r6.wwww, l(-0.250000, -0.250000, 0.000000, -0.250000) -mad r24.xyw, cb0[195].zzzz, r24.xyxw, l(0.250000, 0.250000, 0.000000, 0.250000) -dp3_sat r5.z, r19.xyzx, r7.xyzx -mul r19.xyz, r5.zzzz, r24.xywx -max r5.z, r15.y, r15.x -max r5.z, r15.z, r5.z -mul r5.z, r5.z, l(0.500000) -max r5.z, r5.z, l(1.000000) -div r5.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z -mul r15.xyz, r5.zzzz, r15.xyzx -mad r18.xyz, r18.xyzx, r5.wwww, -r15.xyzx -mad r15.xyz, r10.zzzz, r18.xyzx, r15.xyzx -dp3 r5.z, r16.xyzx, r7.xyzx -mul r5.w, r7.w, r5.z -mad r8.w, r17.x, l(0.500000), l(-1.000000) -mad r8.w, -r17.x, r8.w, l(0.500000) -mad r5.z, -r5.z, r7.w, r8.w -mad_sat r5.z, r10.z, r5.z, r5.w -mul r15.xyz, r5.zzzz, r15.xyzx -mad r5.z, r13.w, r10.z, r17.y -mul r5.z, r22.x, r5.z -mul r15.xyz, r5.zzzz, r15.xyzx -mul_sat r5.z, r21.y, l(5.00000048) -mad r5.w, r5.z, l(-2.000000), l(3.000000) -mul r5.z, r5.z, r5.z -mul r5.z, r5.z, r5.w -mul r15.xyz, r5.zzzz, r15.xyzx -mul r15.xyz, r16.wwww, r15.xyzx -add r5.z, r12.w, l(-0.100000) -mul_sat r5.z, r5.z, l(-16.666666) -mad r5.w, r5.z, l(-2.000000), l(3.000000) -mul r5.z, r5.z, r5.z -mul r5.z, r5.z, r5.w -mad r5.z, r5.z, r10.z, r17.y -mul r15.xyz, r5.zzzz, r15.xyzx -max r16.xyz, r11.xyzx, l(0.150000, 0.150000, 0.150000, 0.000000) -mul r15.xyz, r15.xyzx, r16.xyzx -mad r15.xyz, r23.yzwy, r19.xyzx, r15.xyzx -add r14.xyw, r14.xyxw, r15.xyxz -utof r5.zw, r10.xxxy -mul r15.xy, r5.zwzz, l(0.031250, 0.031250, 0.000000, 0.000000) -round_ni r15.xy, r15.xyxx -mad r7.w, r15.y, cb2[1].y, r15.x -mul r7.w, r7.w, l(8.000000) -ftoi r7.w, r7.w -mad r8.w, -cb0[85].y, cb2[2].w, v0.w -round_ni r8.w, r8.w -add r10.z, l(-1.000000), cb2[1].w -max r12.w, r8.w, l(0.000000) -min r10.z, r10.z, r12.w -mul r12.w, r10.z, l(8.000000) -ftoi r12.w, r12.w -dp3 r13.w, -r2.xyzx, r3.xywx -add r13.w, r13.w, r13.w -mad r15.xyz, r3.xywx, -r13.wwww, -r2.xyzx -max r2.w, r2.w, l(0.001000) -log r2.w, r2.w -mad r2.w, r2.w, l(1.200000), l(5.000000) -sample_l_indexable(texturecube)(float,float,float,float) r15.xyz, r15.xyzx, t15.xyzw, s0, r2.w -add r2.w, -r9.w, l(1.000000) -div r2.w, r2.w, r9.w -mul r16.xyz, r2.wwww, r13.xyzx -mad r16.xyz, r16.xyzx, r22.yzwy, r22.yzwy -mul r15.xyz, r15.xyzx, r16.xyzx -mul r2.w, r24.z, cb0[186].w -mul r2.w, r11.w, r2.w -mul r15.xyz, r2.wwww, r15.xyzx -mad r12.xyz, r15.xyzx, r12.xyzx, r14.xywx -ge r2.w, r10.z, r8.w -iadd r8.w, r12.w, cb0[110].y -mad r9.w, r17.y, l(-0.250000), l(0.750000) -mad r4.xyz, r4.xyzx, r6.wwww, l(-0.500000, -0.500000, -0.500000, 0.000000) -add r6.w, -r5.y, l(0.010000) -ge r5.x, r5.x, l(0.500000) -and r5.x, r5.x, l(0x3f800000) -mov r15.w, l(1.000000) -mov r14.xyw, r12.xyxz -mov r10.z, l(0) -loop - ilt r11.w, l(7), r10.z - breakc_nz r11.w - iadd r11.w, r7.w, r10.z - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx - iadd r12.w, r8.w, r10.z - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx - and r11.w, r11.w, r12.w - and r11.w, r2.w, r11.w - ishl r12.w, r10.z, l(5) - mov r16.xyz, r14.xywx - mov r13.w, r11.w - loop - breakc_z r13.w - firstbit_lo r16.w, r13.w - ishl r17.x, l(1), r16.w - xor r17.x, r13.w, r17.x - iadd r16.w, r12.w, r16.w - bfi r18.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 5, 6, 7) - ftou r17.y, cb3[r18.y + 6].w - ieq r17.y, r17.y, l(1) - if_nz r17.y - add r15.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx - and r19.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r18.y + 6].xzyx - and r21.yzw, l(0, 0x0000ffff, 0x0000ffff, 0x0000ffff), cb3[r18.z + 6].yyxz - ushr r22.xyz, cb3[r18.y + 6].xzyx, l(16, 16, 16, 0) - ushr r23.yzw, cb3[r18.z + 6].yyxz, l(0, 16, 16, 16) - f16tof32 r19.xyz, r19.xyzx - f16tof32 r21.yzw, r21.yyzw - f16tof32 r22.xyz, r22.xyzx - f16tof32 r24.xyw, r23.zyzw - mov r25.xz, r19.xxzx - mov r25.yw, r22.xxxz - dp4 r17.y, r15.xyzw, r25.xyzw - mov r22.x, r19.y - mov r22.z, r21.z - mov r22.w, r24.x - dp4 r17.z, r15.xyzw, r22.xyzw - mov r24.xz, r21.yywy - dp4 r15.x, r15.xyzw, r24.xyzw - max r15.y, |r17.z|, |r17.y| - max r15.x, |r15.x|, r15.y - mad r15.y, cb3[r18.w + 6].x, l(0.500000), l(0.500000) - add r15.x, -r15.y, r15.x - mad r15.y, -cb3[r18.w + 6].x, l(0.500000), l(0.500000) - div_sat r15.x, r15.x, r15.y - add r15.x, -r15.x, l(1.000000) - mul r15.x, r15.x, r15.x - else - mov r15.x, l(1.000000) - endif - lt r15.y, r15.x, l(0.001000) - if_nz r15.y - mov r13.w, r17.x - continue - endif - ishl r15.y, r16.w, l(3) - lt r15.z, cb3[r15.y + 6].w, l(1.500000) - if_nz r15.z - bfi r15.z, l(29), l(3), r16.w, l(3) - ieq r17.y, l(16), cb3[r15.z + 6].w - add r17.z, cb0[198].z, cb3[r15.z + 6].z - lt r17.z, r17.z, l(0.500000) - or r17.y, r17.z, r17.y - if_z r17.y - bfi r17.yz, l(0, 29, 29, 0), l(0, 3, 3, 0), r16.wwww, l(0, 2, 4, 0) - ftou r16.w, cb3[r15.y + 6].w - and r16.w, r16.w, l(1) - ieq r18.y, r16.w, l(0) - not r18.y, r18.y - lt r19.x, l(0.000000), cb3[r17.y + 6].z - and r18.y, r18.y, r19.x - ieq r19.x, l(4), cb3[r15.z + 6].w - movc r19.y, r16.w, l(0), l(1.000000) - mad r19.z, cb3[r17.y + 6].y, l(0.500000), l(0.500000) - add r22.z, r19.z, -|cb3[r17.y + 6].x| - add r22.x, -r22.z, cb3[r17.y + 6].y - add r19.z, -|r22.z|, l(1.000000) - add r19.z, -|r22.x|, r19.z - max r19.z, r19.z, l(0.000488281250) - ge r19.w, cb3[r17.y + 6].x, l(0.000000) - movc r22.y, r19.w, r19.z, -r19.z - dp3 r19.z, r22.xyzx, r22.xyzx - rsq r19.z, r19.z - mul r21.yzw, r19.zzzz, r22.xxyz - add r19.z, cb3[r17.z + 6].y, cb3[r17.z + 6].y - max r19.z, r19.z, l(0.100000) - and r19.w, r19.x, l(0x3f800000) - add r19.z, r19.z, -cb3[r18.z + 6].w - mad r18.z, r19.w, r19.z, cb3[r18.z + 6].w - add r22.xyz, -v2.xyzx, cb3[r18.x + 6].xyzx - dp3 r19.z, r22.yzxy, -r21.yzwy - lt r19.w, l(0.500000), cb3[r17.z + 6].z - and r19.w, r19.w, r19.x - and r19.w, r19.w, l(0x3f800000) - mul r19.w, r19.y, r19.w - mad r23.yzw, -r21.wwyz, r19.zzzz, -r22.xxyz - mad r22.xyz, r19.wwww, r23.yzwy, r22.xyzx - dp3 r19.z, r22.xyzx, r22.xyzx - rsq r19.w, r19.z - mul r23.yzw, r19.wwww, r22.xxyz - if_nz r18.y - mul r24.xyz, r21.wyzw, cb3[r17.y + 6].zzzz - mad r25.xyz, -r24.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r22.xyzx - mad r24.xyz, r24.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r22.xyzx - dp3 r19.w, r25.xyzx, r25.xyzx - sqrt r19.w, r19.w - dp3 r20.y, r24.xyzx, r24.xyzx - sqrt r20.y, r20.y - mul r26.xyz, r21.yzwy, r23.yzwy - mad r26.xyz, r21.wyzw, r23.zwyz, -r26.xyzx - mul r27.xyz, r21.yzwy, r26.xyzx - mad r26.xyz, r26.zxyz, r21.zwyz, -r27.xyzx - dp3 r22.w, r26.xyzx, r26.xyzx - rsq r22.w, r22.w - mul r23.yzw, r22.wwww, r26.xxyz - dp3 r22.w, r25.xyzx, r24.xyzx - mad r22.w, r19.w, r20.y, r22.w - mad r22.w, r22.w, l(0.500000), l(1.000000) - div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w - dp3 r24.w, r23.yzwy, r25.xyzx - div r19.w, r24.w, r19.w - dp3 r24.x, r23.yzwy, r24.xyzx - div r20.y, r24.x, r20.y - add r19.w, r19.w, r20.y - mul_sat r19.w, r19.w, l(0.500000) - mul r19.w, r19.w, r22.w - else - mov r19.w, l(1.000000) - endif - lt r20.y, r18.z, l(0.000000) - if_nz r20.y - mul r20.y, cb3[r18.x + 6].w, cb3[r18.x + 6].w - mul r20.y, r19.z, r20.y - mad r20.y, -r20.y, r20.y, l(1.000000) - max r20.y, r20.y, l(0.000000) - add r19.z, r19.z, l(1.000000) - div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z - and r22.w, r18.y, l(0x3f800000) - add r24.x, -r19.z, r19.w - mad r19.z, r22.w, r24.x, r19.z - mul r20.y, r20.y, r20.y - mul r19.z, r19.z, r20.y - else - mul r24.xyz, r22.xyzx, cb3[r18.x + 6].wwww - dp3 r20.y, r24.xyzx, r24.xyzx - min r20.y, r20.y, l(1.000000) - add r20.y, -r20.y, l(1.000000) - log r20.y, r20.y - mul r18.z, r18.z, r20.y - exp r18.z, r18.z - mul r19.z, r18.z, r19.w - endif - dp3 r18.z, r23.zwyz, -r21.yzwy - add r18.z, r18.z, -cb3[r17.y + 6].z - mul_sat r18.z, r18.z, cb3[r17.y + 6].w - mad r18.z, r18.z, r18.z, l(-1.000000) - mad r18.z, r19.y, r18.z, l(1.000000) - mul r18.z, r18.z, r19.z - ftoi r19.y, cb3[r18.w + 6].w - not r18.y, r18.y - ige r19.z, r19.y, l(0) - and r18.y, r18.y, r19.z - if_nz r18.y - if_z r16.w - ishl r18.y, r19.y, l(2) - mul r21.yzw, v2.yyyy, cb6[r18.y + 33].xxyw - mad r21.yzw, cb6[r18.y + 32].xxyw, v2.xxxx, r21.yyzw - mad r21.yzw, cb6[r18.y + 34].xxyw, v2.zzzz, r21.yyzw - add r21.yzw, r21.yyzw, cb6[r18.y + 35].xxyw - div_sat r19.zw, r21.yyyz, r21.wwww - mad r19.zw, r19.zzzw, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy - else - ishl r18.y, r19.y, l(2) - dp3 r24.x, -r22.xyzx, cb6[r18.y + 32].xyzx - dp3 r24.y, -r22.xyzx, cb6[r18.y + 33].xyzx - dp3 r24.z, -r22.xyzx, cb6[r18.y + 34].xyzx - lt r18.y, |r24.x|, |r24.y| - and r18.y, r18.y, l(1) - dp2 r20.y, |r24.xyxx|, icb[r18.y + 0].xyxx - lt r20.y, r20.y, |r24.z| - movc r18.y, r20.y, l(2), r18.y - dp3 r20.y, r24.xyzx, icb[r18.y + 0].xyzx - lt r20.y, r20.y, l(0.000000) - bfi r18.y, l(31), l(1), r18.y, r20.y - ushr r20.y, r18.y, l(1) - dp3 r20.y, r24.xyzx, icb[r20.y + 0].xyzx - div r21.y, l(0.000244140625), cb6[r19.y + 0].w - add r21.y, -r21.y, l(0.500000) - utof r21.z, r18.y - ult r21.w, r18.y, l(2) - and r21.w, r21.w, l(2) - dp2 r21.w, r24.xzxx, icb[r21.w + 0].xzxx - mul r21.w, r21.w, icb[r18.y + 4].z - div r21.w, r21.w, |r20.y| - mad r21.z, r21.w, r21.y, r21.z - add r21.z, r21.z, l(0.500000) - mul_sat r22.x, r21.z, l(0.166666672) - iadd r21.z, l(-1), icb[r18.y + 4].y - dp2 r21.z, r24.yzyy, icb[r21.z + 0].xyxx - mul r18.y, r21.z, icb[r18.y + 4].w - div r18.y, r18.y, |r20.y| - mad_sat r22.y, -r18.y, r21.y, l(0.500000) - mad r19.zw, r22.xxxy, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy - endif - sample_l_indexable(texture2d)(float,float,float,float) r18.y, r19.zwzz, t16.yxzw, s0, l(0.000000) - mul r18.z, r18.y, r18.z - endif - mul r15.x, r15.x, r18.z - lt r18.y, l(0.000100), r15.x - if_nz r18.y - if_nz r19.x - add r18.y, l(1.000000), -cb3[r17.z + 6].w - dp3 r18.z, r9.xyzx, r23.yzwy - add_sat r18.z, r18.z, l(0.500000) - mad r19.y, r18.z, l(-2.000000), l(3.000000) - mul r18.z, r18.z, r18.z - mul r18.z, r18.z, r19.y - mad r18.y, r18.z, cb3[r17.z + 6].w, r18.y - mul r18.y, r18.y, cb3[r17.z + 6].x - mul r18.y, r15.x, r18.y - add r19.yzw, -r16.xxyz, cb3[r15.y + 6].xxyz - mad r19.yzw, r18.yyyy, r19.yyzw, r16.xxyz - endif - if_z r19.x - dp3 r18.y, r7.xyzx, r23.yzwy - mov_sat r18.z, r18.y - if_nz cb3[r15.z + 6].w - if_z r16.w - ftoi r16.w, cb3[r15.z + 6].x - else - add r21.yzw, v2.xxyz, -cb3[r18.x + 6].xxyz - lt r22.xyz, |r21.zwwz|, |r21.yyzy| - and r20.y, r22.y, r22.x - lt r21.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r21.yyzw - ushr r22.x, cb3[r17.y + 6].w, l(24) - ubfe r22.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb3[r17.y + 6].wwww - movc r21.y, r21.y, r22.x, r22.y - and r17.y, l(255), cb3[r17.y + 6].w - movc r17.y, r21.z, r22.w, r17.y - ubfe r21.z, l(8), l(8), cb3[r15.z + 6].x - and r22.x, l(255), cb3[r15.z + 6].x - movc r21.z, r21.w, r21.z, r22.x - movc r17.y, r22.z, r17.y, r21.z - movc r17.y, r20.y, r21.y, r17.y - ilt r20.y, r17.y, l(80) - movc r16.w, r20.y, r17.y, l(-1) - endif - ige r17.y, r16.w, l(0) - if_nz r17.y - add r21.yzw, v2.xxyz, -cb3[r18.x + 6].xxyz - ishl r17.y, r16.w, l(2) - dp3 r18.x, r21.yzwy, r21.yzwy - max r18.x, r18.x, l(1.175494351E-38) - rsq r18.x, r18.x - mul r21.yzw, r18.xxxx, r21.yyzw - mad r21.yzw, -r21.yyzw, cb4[r16.w + 288].xxxx, v2.xxyz - mul r18.x, l(5.000000), cb4[r16.w + 288].y - mad r21.yzw, r9.xxyz, r18.xxxx, r21.yyzw - mul r22.xyzw, r21.zzzz, cb4[r17.y + 65].xyzw - mad r22.xyzw, cb4[r17.y + 64].xyzw, r21.yyyy, r22.xyzw - mad r22.xyzw, cb4[r17.y + 66].xyzw, r21.wwww, r22.xyzw - add r22.xyzw, r22.xyzw, cb4[r17.y + 67].xyzw - div r21.yzw, r22.xxyz, r22.wwww - ge r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.yzwy - ge r24.xyz, r21.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) - add r25.xy, -cb4[r16.w + 344].xyxx, cb4[r16.w + 344].zwzz - mad r21.yz, r21.yyzy, r25.xxyx, cb4[r16.w + 344].xxyx - mad r25.xy, r21.yzyy, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r25.xy, r25.xyxx - mad r21.yz, r21.yyzy, cb4[400].zzwz, -r25.xxyx - add r26.xyzw, r21.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r27.xyzw, r26.xxzz, r26.xxzz - add r25.zw, -r21.yyyz, l(0.000000, 0.000000, 1.000000, 1.000000) - min r26.xz, r21.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r28.xy, r21.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy - add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r21.yz, r27.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r21.yyzy - mul r30.xy, r21.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r21.yz, -r26.xxzx, r26.xxzx, r25.zzwz - add r21.yz, r21.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r31.xy, r21.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r21.yz, r26.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r30.z, r31.x - mov r30.w, r21.y - mov r29.z, r28.x - mov r29.w, r27.x - add r26.xyzw, r29.zwxz, r30.zwxz - mov r31.z, r30.y - mov r31.w, r21.z - mov r28.z, r29.y - mov r28.w, r27.z - add r27.xyz, r28.zywz, r31.zywz - div r29.xyz, r29.xzwx, r26.zwyz - add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r29.xyz, r29.yxzy, cb4[400].xxxx - div r28.xyz, r28.zywz, r27.xyzx - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyz, r28.xyzx, cb4[400].yyyy - mov r29.w, r28.x - mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r29.ywxw - mad r21.yz, r25.xxyx, cb4[400].xxyx, r29.zzwz - mov r28.w, r29.y - mov r29.yw, r28.yyyz - mad r31.xyzw, r25.xyxy, cb4[400].xyxy, r29.xyzy - mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz - mad r25.xyzw, r25.xyxy, cb4[400].xyxy, r29.xwzw - mul r29.xyzw, r26.zwyz, r27.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r30.xyxx, t2.xxxx, s2, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.zwzz, t2.xxxx, s2, r21.w - mul r18.x, r18.x, r29.y - mad r17.y, r29.x, r17.y, r18.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r21.yzyy, t2.xxxx, s2, r21.w - mad r17.y, r29.z, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.xyxx, t2.xxxx, s2, r21.w - mad r17.y, r29.w, r18.x, r17.y - mul r29.xyzw, r26.xyzw, r27.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r31.xyxx, t2.xxxx, s2, r21.w - mad r17.y, r29.x, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r31.zwzz, t2.xxxx, s2, r21.w - mad r17.y, r29.y, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.zwzz, t2.xxxx, s2, r21.w - mad r17.y, r29.z, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r25.xyxx, t2.xxxx, s2, r21.w - mad r17.y, r29.w, r18.x, r17.y - or r22.xyz, r22.xyzx, r24.xyzx - or r18.x, r22.y, r22.x - or r18.x, r22.z, r18.x - and r20.y, r21.w, l(0x7fffffff) - ult r20.y, l(0x7f800000), r20.y - or r18.x, r18.x, r20.y - mul r20.y, r26.y, r27.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.y, r25.zwzz, t2.xxxx, s2, r21.w - mad r17.y, r20.y, r21.y, r17.y - add r17.y, r17.y, l(-1.000000) - mad r16.w, cb4[r16.w + 288].w, r17.y, l(1.000000) - movc r16.w, r18.x, l(1.000000), r16.w - else - dp3 r17.y, r8.xyzx, r23.yzwy - add_sat r16.w, r17.y, l(1.000000) - endif - else - mov r16.w, l(1.000000) - endif - if_z cb3[r15.z + 6].w - mul r21.yzw, r15.xxxx, cb3[r15.y + 6].xxyz - add r17.y, l(1.000000), -cb3[r17.z + 6].y - max r18.x, r21.z, r21.y - max r18.x, r21.w, r18.x - mul r18.x, r9.w, r18.x - max r18.x, r18.x, l(1.000000) - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x - mad r17.y, r18.x, cb3[r17.z + 6].y, r17.y - mul r21.yzw, r17.yyyy, cb3[r15.y + 6].xxyz - mul r17.y, l(0.250000), cb3[r17.z + 6].x - add_sat r18.x, r18.y, l(0.500000) - mad r20.y, -cb3[r17.z + 6].x, l(0.250000), l(1.000000) - mad r17.y, r18.x, r20.y, r17.y - mul r21.yzw, r17.yyyy, r21.yyzw - mov r22.xyz, r20.xzwx - mov r24.xyz, r20.xzwx - mov r17.y, l(1.000000) - mov r18.x, l(0) - else - ieq r20.y, l(3), cb3[r15.z + 6].w - if_nz r20.y - mad r25.xy, cb3[r17.z + 6].xxxx, l(-0.600000, -0.399999976, 0.000000, 0.000000), l(0.800000, 0.900000, 0.000000, 0.000000) - add r20.y, -r25.x, r25.y - add r22.w, r21.x, -r25.x - div r20.y, l(1.000000, 1.000000, 1.000000, 1.000000), r20.y - mul_sat r20.y, r20.y, r22.w - mad r22.w, r20.y, l(-2.000000), l(3.000000) - mul r20.y, r20.y, r20.y - mul r20.y, r20.y, r22.w - mul r20.y, r16.w, r20.y - mul r15.x, r15.x, r20.y - mul r25.xyz, r23.wyzw, cb0[6].xyzx - mad r25.xyz, cb0[6].zxyz, r23.yzwy, -r25.xyzx - mul r26.xyz, r25.xyzx, cb0[6].zxyz - mad r25.xyz, cb0[6].yzxy, r25.yzxy, -r26.xyzx - dp3 r20.y, r25.xyzx, r25.xyzx - rsq r20.y, r20.y - mul r25.xyz, r20.yyyy, r25.xyzx - dp3_sat r18.z, r7.xyzx, -r25.xyzx - mad r22.xyz, cb3[r17.z + 6].yyyy, r4.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mov r24.xyz, l(0,0,0,0) - mov r17.y, l(1.000000) - mov r18.x, l(0) - else - ieq r20.y, l(1), cb3[r15.z + 6].w - if_nz r20.y - add r18.y, r18.y, cb3[r17.z + 6].x - max_sat r18.y, r18.y, l(-1.000000) - mul r18.z, r16.w, r18.y - mul r24.xyz, r6.xyzx, cb3[r17.z + 6].yyyy - mov r17.y, l(1.000000) - mov r18.x, l(0) - else - ieq r16.w, l(2), cb3[r15.z + 6].w - if_nz r16.w - add r18.y, l(0.050000), cb3[r17.z + 6].x - add r18.y, r3.z, -r18.y - mul_sat r18.y, r18.y, l(-10.000000) - mad r22.w, r18.y, l(-2.000000), l(3.000000) - mul r18.y, r18.y, r18.y - mul r18.y, r18.y, r22.w - add r22.w, l(1.000000), -cb3[r17.z + 6].z - mad r22.w, r5.x, cb3[r17.z + 6].z, r22.w - mul r17.y, r18.y, r22.w - else - mov r17.y, l(1.000000) - endif - and r18.x, r16.w, cb3[r17.z + 6].y - mov r24.xyz, l(0,0,0,0) - endif - and r22.xyz, r11.xyzx, r20.yyyy - endif - mov r21.yzw, cb3[r15.y + 6].xxyz - endif - ine r15.y, l(3), cb3[r15.z + 6].w - if_nz r15.y - mad r15.y, r18.x, r6.w, r5.y - mad r23.yzw, r0.xxyz, r1.wwww, r23.yyzw - dp3 r15.z, r23.yzwy, r23.yzwy - rsq r15.z, r15.z - mul r23.yzw, r15.zzzz, r23.yyzw - dp3 r15.z, r3.xywx, r23.yzwy - mul r16.w, r15.y, r15.y - mad r17.z, r15.z, r16.w, -r15.z - mad r15.z, r17.z, r15.z, l(1.000000) - mul r15.z, r15.z, r15.z - ne r17.z, r15.z, r16.w - div r15.z, r16.w, r15.z - movc r15.z, r17.z, r15.z, l(1.000000) - mad r15.y, r23.x, l(2.000000), r15.y - add r15.y, r15.y, l(0.000100) - div r15.y, l(0.500000), r15.y - mad r15.y, r15.z, r15.y, l(-0.0000610351562) - max r15.y, r15.y, l(0.000000) - min r15.y, r15.y, l(20.000000) - mul r23.yzw, r13.xxyz, r15.yyyy - mul r23.yzw, r17.yyyy, r23.yyzw - mul r18.xyw, r23.yzyw, cb3[r18.w + 6].zzzz - else - mov r18.xyw, l(0,0,0,0) - endif - mul r15.xyz, r15.xxxx, r21.yzwy - add r21.yzw, r22.xxyz, -r24.xxyz - mad r21.yzw, r18.zzzz, r21.yyzw, r24.xxyz - mul r21.yzw, r15.xxyz, r21.yyzw - mul r15.xyz, r18.xywx, r15.xyzx - mul r15.xyz, r18.zzzz, r15.xyzx - mad r15.xyz, r21.yzwy, r14.zzzz, r15.xyzx - add r16.xyz, r15.xyzx, r16.xyzx - endif - else - mov r19.x, l(0) - endif - movc r16.xyz, r19.xxxx, r19.yzwy, r16.xyzx - endif - endif - mov r13.w, r17.x - endloop - mov r14.xyw, r16.xyxz - iadd r10.z, r10.z, l(1) -endloop -lt r0.x, l(0.500000), cb5[3].x -if_nz r0.x - dp3 r0.x, r14.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r3.xyz, -r0.xxxx, r14.xywx - mad r0.xyz, cb5[3].zzzz, r3.xyzx, r0.xxxx - add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) - mad r0.xyz, cb5[3].wwww, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r3.xyz, r0.xyzx, cb5[3].yyyy - mad r0.xyz, -r0.xyzx, cb5[3].yyyy, cb5[7].xyzx - mad r0.xyz, cb5[7].wwww, r0.xyzx, r3.xyzx - add r2.w, l(1.000000), -cb5[4].x - mov_sat r17.w, r17.w - add r3.x, -r17.w, l(1.000000) - add r3.y, -r2.w, l(1.000000) - add r2.w, -r2.w, r3.x - div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y - mul_sat r2.w, r2.w, r3.x - mad r3.x, r2.w, l(-2.000000), l(3.000000) - mul r2.w, r2.w, r2.w - mul r2.w, r2.w, r3.x - mul r3.xyz, r2.wwww, cb5[8].xyzx - mad r14.xyw, r3.xyxz, cb5[4].yyyy, r0.xyxz -endif -div r0.xyz, r14.xywx, cb0[109].xxxx -eq r2.w, l(1.000000), cb5[2].x -movc o0.w, r2.w, r4.w, l(1.000000) -lt r2.w, cb0[198].w, l(0.500000) -if_nz r2.w - mul r0.w, r0.w, r1.w - mad r1.w, v2.y, cb0[156].w, cb0[157].w - max r1.w, r1.w, l(0.010000) - mad r2.w, r0.w, cb0[154].w, -cb0[153].w - max r2.w, r2.w, l(0.000000) - mul r3.x, r1.w, l(-1.442695) - exp r3.x, r3.x - add r3.x, -r3.x, l(1.000000) - div r1.w, r3.x, r1.w - mad r3.x, v2.y, cb0[156].w, cb0[158].w - mul r3.x, r3.x, l(1.442695) - exp r3.x, r3.x - mul r1.w, r1.w, r3.x - mul r1.w, r1.w, -r2.w - mul r3.xyz, r1.wwww, cb0[155].xyzx - mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) - exp r3.xyz, r3.xyzx - dp3 r1.w, -r2.xyzx, cb0[154].xyzx - mad r2.w, cb0[155].w, cb0[155].w, l(1.000000) - dp2 r3.w, r1.wwww, cb0[155].wwww - add r2.w, r2.w, -r3.w - lt r3.w, l(0.000000), cb0[163].z - if_nz r3.w - and r10.w, l(7), cb0[108].w - imad r4.xyz, r10.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r3.w, r4.y, r4.z, r4.x - imad r4.x, r4.z, r3.w, r4.y - imad r4.y, r3.w, r4.x, r4.z - imad r5.x, r4.x, r4.y, r3.w - dp3 r1.x, -r2.xyzx, -r1.xyzx - add r1.y, v2.y, -cb0[44].y - lt r1.z, l(5.960464478E-08), r1.x - div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x - and r1.x, r1.x, r1.z - mul r1.x, r1.x, cb0[163].w - div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w - mul r2.x, r1.z, r1.x - mad r2.y, r2.x, r1.y, cb0[44].y - mad r1.y, -r2.x, r1.y, r1.y - mul r2.x, r1.y, cb0[159].z - mul r1.y, r1.y, cb0[162].x - max r1.y, r1.y, l(-127.000000) - add r2.z, r2.y, -cb0[159].x - mul r2.z, r2.z, cb0[159].z - max r2.xz, r2.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - exp r2.z, -r2.z - mul r2.z, r2.z, cb0[159].y - lt r3.w, l(5.960464478E-08), |r2.x| - exp r4.z, -r2.x - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r2.x - mad r2.x, -r2.x, l(0.240226507), l(0.693147182) - movc r2.x, r3.w, r4.z, r2.x - add r2.y, r2.y, -cb0[162].z - mul r2.y, r2.y, cb0[162].x - max r2.y, r2.y, l(-127.000000) - exp r2.y, -r2.y - mul r2.y, r2.y, cb0[162].y - lt r3.w, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r3.w, r4.z, r1.y - mul r1.y, r1.y, r2.y - mad r1.y, r2.z, r2.x, r1.y - mad r1.x, -r1.x, r1.z, l(1.000000) - mul r1.x, r0.w, r1.x - mul r1.x, r1.x, r1.y - exp r1.x, -r1.x - min r1.x, r1.x, l(1.000000) - max r1.x, r1.x, cb0[161].w - mad_sat r1.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx - add r1.x, r1.y, r1.x - add r1.x, r1.z, r1.x - min r1.x, r1.x, l(1.000000) - imad r5.y, r4.y, r5.x, r4.x - ushr r1.yz, r5.xxyx, l(0, 16, 16, 0) - utof r1.yz, r1.yyzy - mad r1.yz, r1.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) - mad r1.yz, r1.yyzy, cb0[167].wwww, r5.zzwz - mul r2.xy, r1.yzyy, cb0[165].xyxx - mad r1.y, v0.w, cb0[164].x, cb0[164].y - log r1.y, r1.y - mul r1.y, r1.y, cb0[164].z - div r2.z, r1.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t17.xyzw, s0, l(0.000000) - add r1.y, v0.w, -cb0[166].z - mul_sat r1.y, r1.y, l(1000000.000000) - add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r4.xyzw, r1.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r1.y, -r1.x, l(1.000000) - mul r2.xyz, r1.yyyy, cb0[161].xyzx - mad r2.xyz, r2.xyzx, r4.wwww, r4.xyzx - mul r1.x, r1.x, r4.w - else - add r1.y, v2.y, -cb0[44].y - mul r1.z, r1.y, cb0[159].z - mul r1.y, r1.y, cb0[162].x - max r1.yz, r1.yyzy, l(0.000000, -127.000000, -127.000000, 0.000000) - add r3.w, cb0[44].y, -cb0[159].x - mul r3.w, r3.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[159].y - lt r4.x, l(5.960464478E-08), |r1.z| - exp r4.y, -r1.z - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r1.z - mad r1.z, -r1.z, l(0.240226507), l(0.693147182) - movc r1.z, r4.x, r4.y, r1.z - add r4.x, cb0[44].y, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.y, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r4.y, r4.z, r1.y - mul r1.y, r1.y, r4.x - mad r1.y, r3.w, r1.z, r1.y - mul r1.y, r0.w, r1.y - exp r1.y, -r1.y - min r1.y, r1.y, l(1.000000) - max r1.y, r1.y, cb0[161].w - mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.w, r1.y, r4.x - add r0.w, r4.y, r0.w - min r1.x, r0.w, l(1.000000) - add r0.w, -r1.x, l(1.000000) - mul r2.xyz, r0.wwww, cb0[161].xyzx - endif - mul r4.xyz, r1.xxxx, r3.xyzx - mad r0.w, r1.w, r1.w, l(1.000000) - mul r0.w, r0.w, l(0.0596831031) - mad r1.yzw, cb0[156].xxyz, r0.wwww, cb0[158].xxyz - mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) - mul r3.w, r2.w, l(12.566371) - sqrt r2.w, r2.w - mul r2.w, r2.w, r3.w - max r2.w, r2.w, l(0.001000) - div r0.w, r0.w, r2.w - mad_sat r1.yzw, cb0[157].xxyz, r0.wwww, r1.yyzw - mul r1.yzw, r1.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) - add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mul r1.yzw, r1.yyzw, r3.xxyz - mad r1.xyz, r1.yzwy, r1.xxxx, r2.xyzx - -// === Simplified Fog Modification (Anti-Banding) === -// Check if fog modification is enabled via cb13[12].y -lt r15.x, l(0.500000), cb13[12].y -if_nz r15.x - // r0.xyz = scene color (normalized), r4.xyz = transmittance, r1.xyz = fog inscatter (0-255 range mixed) - // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density - add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx - - // Reduce fog inscatter intensity (r1 already in 0-255 mixed range, scale down) - mul r16.xyz, r1.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - - // Modified fog blend: scene * boostedTrans + reducedInscatter - mad o0.xyz, r0.xyzx, r15.xyzx, r16.xyzx -else - // Original fog blend - mad o0.xyz, r0.xyzx, r4.xyzx, r1.xyzx -endif -// === End Fog Modification === -else - mov o0.xyz, r0.xyzx -endif -mov o1.z, l(1.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x5F55ACC9.cso b/src/games/endfield/deferred-lighting/0x5F55ACC9.cso new file mode 100644 index 0000000000000000000000000000000000000000..0f1dd43aa906498e25ea87afcc29edcdccf84caa GIT binary patch literal 27616 zcmchfZH#7TS;xCQH7S-Sh2oo7EB4ocsRhr88Ak{qsAj zYF7O#b^MNw$8@~zO|Si#8`Rf2=5<`Hg9bjhw0*ib-d@I;@qp{%O($--;f{B|{jRs) zaeMXV>u$dGjc>g1c=gC5kGxTQkpmul2Rht3z8Vnyn}1>bm)?4ph~9MlbvF;BBl>)4 zsj7ZuzM6SURqa~)=pab{N$0oBxA!4mC&SVIdB6)kGIpi=^L4#X$IoNdt^0K~zJ`~_ z;p1y~oP^DtEk68izPP=I=BAs*_t52gX!AX^ao@D`=$hekz5DZe_xLd5@AmzVxBM1- zU-aA4yWi{kf{#CfU%7vN?;c-eI3CFN7xeBIeP86ipm%>^@BW3pFY+%c_rEx(cCGAh z{f&=r+h5Ic&-GgsyK{pU_RC7ymuT$83j0dcj;$5CD>b%S#%3BJsr_VCedugejjp}v zh1EI1;J3C==ze>Dg}!|pVw!QVp^rnHGY)oX4lS%(M%~J)8v!1__jq^c7Ts?wcyk5s zfvVcQs4?;d-N^%bK1Gt3Kp!NVrnkI1YQ zjgkN28FY1{o6T*{*@Aa!ZvW^B!I4onI(4np@hYiro@<4sZa|u}p^SAlgQ3`+*Qb3( zd4hi8yZgqX|9AJby5d)0C+6CFWz>220^QaWQ*3pAyu=6?exOI*df|DZ*l&F0XvfQO zc21lSFZ2vKrB}RnTekUw|Jbj7^GNac5IXz_-Q2D=|E0rxXLFfD&pa>?MpfOYgFLeD zp~2p|(P`WoT{bo6u64N-@gasu#Su5w0X$+B_(_NBtLh`3zl#NKyfw{V z`KoeVcW#O2?sLMWb}C+xm+0>G(66jVTB78OR#)R` zXdZrnC)$jEser1p5$_mRe$bOk^!Q*^wCG6u7&|Z;=-jTO=wP_Vfl(I%x6n?*qm~`$ z;c2Lo2MoF9JF9E?VSb~G+oy+%KFTB7?sdWOuW~m0iymtm1D)G_hHCNLqHtKR%o`Zv z%e`@8$T&7;d~|2-A&Yeme?=VSzal&EnS0ikIRvizD+&z!!{P%yHofPmSF9Y@oPf?S zdc`8*#5#&R%Yi2_@X^t{=uHOm%M+t@b$~SfUe7hFL?qF z_rO*Y4B5#1_B|Iqp}7%jC}ZRX{h`FmW7r5xI!5i`+GCc(J#vM!_qKvhtpm4ibW)SP zXV97JQ+rzcyw>6yc&y2O8grf)vbJCY4c+fpeBWWq{n2XIEPB#DTvdBA-mJ#J$Cu!f zd)(9T3-TBv7Gqe`u+AE0x;}4snwN2`hvrSUH}P1O=P~H#U%Kna1I4e_f%ye&Ry}@Y z9G=VN+GCD8aF0Q^tDd>$`cz9d3Z2)+vo)tV7{8i%=Bcm}TWBWhUIhdKm4 zb5rsneL@HQ{U$~g@$*E@JE2ov3l&O`KD)EIc=1~~3B3_5V! zE6xkci4M7ji9Yh3G2!iYeldS72bguhE_ASutULE=^M;9k@MYYz=!hPSAwTyShHPN& zfuUE%Hw>A{wr=iPCbmP1EuslH*TBDb>E9it|L;AY{DN&Sc%ALWeaBnxAA)09$Ok6> zMGv2Eedw!49ly*6*n7TsFY8R~eF|(s7tL?@N1Uh;)|G4MSWQ*2=!@jAcIy{et6f{d3IB13AXCzRm~y2~Exi z#?alpbe+f}`x-iYxFUS&$VGZyJf@y`!k!sCjm14W7>{+R;7{PbLG`wegI;+I-lo@O zm#4Bncw!g4Gt4&Pj~9LZt5;*ss_@Xi^-(o6PTvpUz}r4rEY}`G9x(FIFpm}9*U9$S z+o9J(^LcOg>&nsbQ8z-UM%Uycuj9*-mF>Ss`y=+F{dK%ggMQCwtqPxSL1Vk&k8SR4 zw`Bu!{K3JO8O9jC1jjt#0bQOyhFOk#aLFln_UEPfIZgx-Z9xxU%mcNpVmsVA?xR>gup`@_byzJh%duTs*>Bo}*VQF_ljYzC?zi$Y zw)bJ|v7jRsz}5>7_VK`2S7+5fQ0g)~&?WCz(F0uXS4#{dmX?>tpl81-Sgb3~1Nw#0 zcu&OMqMv82A12pu>)*oeIc}N3uh?cBYLadA{sUXlj~<%7+*$MzANmZ#ZpO?z!#svg zdS1JRyhSc^#6GpWzP|SHuKK>$05hHOp@&a382j&VS%1cRnQHjz;y?Ha9yI9luRr_P zQS{l+nCAgw#$n%x-*e1>8Mo3pnsr_h%rS&!Wzg<%bQyJl9=SaCzy}@GVx8tfzU|f! zd`h$3)GzkjH2cjlv@hwiZ=f*_^TGZC$2nc*N$lN?6a7Y;f8gnzMLd6v_h!}b^;PxJ zvvL6Mo1d1hz*w8;uY7O&zQ(ngT&BG<&YSHW^KJJf#5wqtJ@!NAb@$;P^viZ-zhpY{ zaJBf6*kB8Or&sIzuCd_Dxcv@)(<&}OW0-jmn@0<*(?M$-`YkHd^4q-Ob)&&v)4TK; z<>sCh@gQ&NMyFm|E55r^<2>)93%J?;)|2l8*znMAwmIwfh1vhqY~y3ctnh7@E~D1N z-($!lPw~gHuE}d);E>BofhS6ThIcB)St_`%(spRE;EPwhQ->DcrSXY*1D`%jBprU% z4PF_BzDc(;tZC~SBPQ(2fXSA9j5$~ELETiuYq3vR> zJmp?|;~BTl_wIK+{J0NzFb}~|i|;7Lr>~o;x@+xaLmwLYp=7Syba~?g9?vFo^!dw& zKAue`^UD6~`=I1~=X0KE@h>&RG#(@W<+Jk{r*_?c-#};Lq-XDsweLo_|Ar33zQ%y& zRY#-m6Y);Ayt9Fi^y}uX@-T9aapxb`YTZ0=KDBxLoxi<$uobL2BD#3)B#%Vb@os5v z2-?MxXOp>D9m(~`GL54;(D7|~saBP_kIlRX+z?-UY1$TVG}N5$=7#xsZs(e@m9O=l zChDJ9|4_cRz1#WPIM%P#{X0+K>*=ugb`tNlip_mr2d#Z#dt1KM5MTHC8Yla5QlHTf ze;H5yiaJ5QFn`Fiy3whsIQyt-uEyVc;vKK*+r;~@;IT0X#INgotjq`2Xn2>kde3^9 z3yk$?G!}6Jm*nxu*flr*G-&%g; zP{yqr5mqCeeRO&CxBx!7x(_XTHpiHI>M4HW8b1NUcld=d*I2&WajzC@4L;gz=C+8=+-=wvF7|My{Es*+#~)jof>_5@U3xuN$3qpa(MG zYdzp$zZypF;8*S!mHN^%zKP=Jy3wiE3`fVh(W%!AhhN?3)NA;`^Tj!v*G_c2|Gq&` zv3BZxdN((}p?kx=78q?^3Yy;9$rx)Vd4-M2tEjn*Q!nmQ&$U{&7I`kU^X)rlspqDj zgjM8N)F0-%?CAKlv^R9Lz@epYVbxLUNuRHA4i=c{(7mM_*K=U~{7ChjIqsvX8{LiX zC+fN4-Q||Q1Lt~fIKAXWJ;!Ix$4sNKh!ePZ-cirZ2U_Ymxj}8K)fJyG()m-q2wvHC z@^(?Ypke;d+h>Axw1wYrTCHdA|6FQ4v9bT@mvoQr)cOpAU(z99;CT#Prq%iv2YK=2thmQQNN8gHH^j-&%gu`ixsQBHTg!ftFhD_;b(v z$A?^F2e1{*Q`dTG5imdB^lLu8+HC9AH6MIzjs96|&A4?V!X4NOEjrs)?rkgA#4g)P z{lqrYkXMI+RpP7Hi0+#*EIJKA>8O>l-??>jt#o`?dt`sKHdgI>Ji}cx z9KS0{4I`G!KlG$WZ}jxK#29*-j`|A>JdYu7T784=$u#G<@7FhtMD0SpaqC7mYTMN= z@bORdn$OdCuaswb#?`8=ZDwD>UeATe-KbT$4lD)}7QYbgmnncAyWks9jkf``NV%SoSmH;4Dj5)<$v^ z+0K9B#dz#B2i0!R50AHVr)tU^IwRD1aIinmG4s>#rgtueF;~!|&G{yRc*ru?3vC92Opi#-Wgr}o63LCwS5WPzAQc(;xoqKakj`YkMDk9AV^i2 z2Q|YykkRsZ{HT1Yf6>lE569KL`ERA;KZ>=F5JTeR03uAJls6Sk_JZ{hn|5KBQ|rL%~ZQ&dndUyQ5%lN9z-MdceRKSX!!0;PBdAa5+u=^8ixxlW}x(@8g0`q(z zZq^_Bm=D{WeC-$FfzLu_(G{3uhtGiZeHQk~XTa>UzFw?Hbu(Qr$7Gsbj>%Sf z;j?Lap))m}SZ=46YD-l&)AfQ!d@C&TC;JP%;5$vP)dHKQ7q&t-MX&HP@yj`;Io;JC zV9qD<@0RavoMDcl3oy^A3_}-S&dmbrcoG+2_$tvYoYWXF_Dsx|y3t7une^5R{^mg} zGXD+1@Gt!FBd|gj&sD&9PQo8`)AEMDj#x+719C7=;5Gg`uhCF6F_)nwF4#y94zOk6 z8-{)vhR%kC4u$Rtxp3XEq?gDinrOP;GD!b;w#9aALB3iy*BndtE9IF#>Sn<|wJ?4@ z&iurulY{THojK#*7Q9P$(zkmD0)OT&c>K-6t4dvB%y}W%@f*%E7J8fJ6AwQ;EHdzY zC)aw5M~APRo4>Kh<8LdN|N4IH-+5HWB-`*g*@z6a1!6d>3-OG76nW)$ozznBpf#Rz zR>QsTWUU{d;jkazXPVZQ@$a?JaY^#&@dvnhKV+Ecv#;<$_-r(`5gv@`Z?HD~c0%h# zJeLJc!8;&Y+U+_%S5*(zmsO+pJ$#AQ&%(R()_d+wGPC7RzQW5o!rx=o?eG@-`*?l+ z^53Q$vTYgWG5d!cV6MdaTIR}J(cup1D(x36n|T3V-Bi`TJ^7ZSS6z73@VCD5alY+$ z&+xpLYjqp3r|o#xjR3vodN8Z;L=*d9#}|KrhkuE+?Y>->2TOhMIKPv#T|Xw+hG>}2 z_P1&AM}|4y!1Z@*u0L3EIP>_4LhCv!UXiQd{9Mr|=P3GsYdY{4qeq`v^{QbppLx%q z=i)hdW}T>c_!Ycm(Plix%`f8-vy3-C1yA!P-dn0R^Y=0#m%7*SQ%$^2_wcdLuw_ZS zp&^&(GmJcD3?AUxpIoz-!0%jR`WJ##Cb_~J>y>n<3k`G}ViSAel_GPk*9#nc zF46_{_zCsllPR{M8}p#xwtd0#-}4c(i;E3j2UW|5wt?SD*>|=ZJmwJj`yyT2&lB<0 zykZ>zkN9T1iTEZw;+yd%;#=^5E*Lm`z$?M^!eNm zPsKmhOWST<1;26+FU{HTGk+snH#+qiH3qz^^gKsAtOxkOd=JkuAFw48T_!d5WIraxO z*NslSX1>P54v*DM4_UXYDd-G8;l)~CuEPhfkbVgscw5;6onvVqWE-SY)KP53$G}`; zbs2w`&zSa}-Q24i4Ro#jrh$LX7Wz}FbPp0; z)K6-#^U-_8E0VsBjrH9M#ycbDlH`P))QBa?qt7sSfvPlL7m zzO=eBsP<+${3aQ(7G(am*Sdq}G3}K$;mc?HoG;Fgx)IU%yIS1TO?2#$;~9lJ(eCNf zdOu8!^L5#i#NLhkvmSZvC@FK+Gj(So*d?Bhyi*qGzUoXoj{ zKKO+ES3bt?6NsJ0V*So>l#N~9K{JL`4fzKzwQgRUZ0!!GDvkj9{&E%%HI=Y0HD_Fyr8B5$YUQPu|<_@K9Y zc(4{+sd~DoaqmI@S50g7jQlbITPis6Z}%*0I>S^mX4p4SKj24Q28Wnnr+9Wf>x^OG zgJb`IH`k*(DF3f(j6AFxoqEmujYmE5Sl#rHb?bGexHSs(hk(P;-Y3;nFG>(rE*74LPywO;)?6?~j)Thu9H zwMsPAhzGf6o2Wkt7WD_bR$ly_$`fBJOW)gSzz z_c^fW=D|v@#(>kWG1LU*S?s~=OKJ~)t53UAM;{IzfAde{nVT9wO~9|OPk%3D{qx_e z%tCZ)`}Zqa^SO(^7s_<&g_r4Af8afhPNT7Yz*n)2c@3)L=Nf}e*>-GLDgLqD$jCl~ zruZjnJaB3ZvgkFxI^P&ZKUeI+H^{IbsK@LT@D+8OT%)|omgbp4<9)H`Ia~l{9ozUO7*=f%WpKy>!NAQS9ydDRR{1&?73*cTKx_sIg1l}LC@Q5#VIydSjd^D7w;t+^;Jn>#3<4L2gR*N=d zvTye9DTx<;>Ecu3h+O9b*Y>Y!Xsk`hu&(TNXyB;@9J|Pk(syyvKC+{4dCFf!=AVeh z@9ZL`1sA5^=6rpp#xB#I?a|`%wY{zHYvG;$woBp=O7x7~@}IX~!@(H6Xm^tfG;)E4 zzBJ-S17~>)m}$VlcQn%(W`346E1W*eG~&?dGZCi}Gv=6D$ig@9!5>TMZ<$`Hd-*r& zHL_+JovP6x%h23du+4P~({p$G{)gUpidoD_s6BQ-^599XnulS|6XJ&q<^i~Mqf_F~ zH9o-><~@D`&wMOH`51co{Si3Oh214ruoXObFfMrHSjIJt`3VhKfycGw%{1J#zoWJ8 z*3-ISxAiq&=j|VhntGYx=+W~1!CBK5Jwspb6Hg}E3^%R7k%RaGU7}AhM>hPI3v8+M zeck$S^H$U#R zgnLTQRM^QpA!f|8ujw~Ww6)^5&*@q^>|HLJ$|q4Hc)#MgbV}Er16;pKb{OA2Kt_Me zH4YlBI}tn2bq!7ID|pAUIy3$aD|qasqSv!H&w73qpJ}*>7T*H7%6jKI@uz}aJ!qdL z!Lz=><7IcfPD5KftKxni;p@HUiVsiNhw?A_)s0RQjWv7h4|H>VZFL_F_Yd0j3Nq}> zd%n+T3?FZlm^kn7aevHf`)5U?IW?8$QSq4-ocT&y``{pYXcYU{b2C6*(~!r!7VprT zF?3=LT`V}pZS862dLITKY6f#X!8)GIyEKlNs^!=EFTpw*!>KKgivO%=co#`ykIB7S z-U9{gE)6~xTKQuEzBK!Z+S0|m$PnJ{4zKKO@o(g-{+||lbR=H*KsgY);S*qsQb%2^ zap=6H@oD=-&ns~7IlbqV_ZIjm!#!_L3RkV$?|BZhHxo|hQ}bChfA^(E09Wi6*2_5g zioCkfNo(o&Xk(rDgbZ-8BaH{W^?^U@D!u}DrqN0JV)OrdX@) zM2dY? zpB0|ho<7aG^d^@0J>+c+bXQf-D0cB)!!+zUkT*}C>eFX*zxBMB%n$3EW9IzOSeJ)h zdysA1nMOD9Jlxil0_$iDCr4}-YY%w%5j)kQ9x=9*^#WSz5inX_dw7o% zGRoSMzYj2uZ;3BD&@(5aPF2iSFY-^DxDJ+{y9p?Lr3_emb(J)Cg&noo|| zR_~|!^J_*tko(PjuRHdJvVUQWIMN$Gk2%K9i421mzX_)9TQB>-JXH^3EyL%wg?Fl* zeI=HXJ;p0zwfK+U+4Al-TKKEPpqp=X18n^MhCAm@j+b+XxZ!u2W7)-4@1AL{<@#M> z_)T5>-wJ%6*sH_e#(`V^OLYyuS@m_J)5Lce?pr&JM_)HO^>ioJ=-0s+xL(0unT+|b3<3L7ISZ1>ZbkMX#PH$ z1DNolZkrEv2YmWzxv0DuzlSYz8(Qzj9?>=Vhu>s-)B)n`yz{;cJlWFm%6l44E}lh-f&H-#?Vw}Y>E#C&p$7>hg@ WwEUPK8AklLzmi%~a4cIvpZP!g#_wSO literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x620A40FD.cso b/src/games/endfield/deferred-lighting/0x620A40FD.cso deleted file mode 100644 index 389529310e462fc4b62391041ae560afc37a2b29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28184 zcmeI4Z;WPFUB~a-*-mF?x9l>M(k=>*Q-ZpnbZ48kY}=W;yY2GNNG)_NzG-a$MWHQA z1qHRw4t9kKXo55r5uxaUZQ_e+LSuw&S8a?b2^57FBqF?M2xwwTLNr12`}y7TJEy_o?5XYntZ5 zTbpKH{fl+|mad0%z2Y@5`|0b{x4IT}U7?ExKDe}98eG#4fu55v*_9N+~X8QaqRc^dE1^>dhY^KOkM zV|aNUJ|4s4KG@ve z-qTGpK77Non-;t$4_nW&L^c~_5C{ukG~FjMw{%vHZ~N9v@c^Z?#2m$$RNDKB(R{L9BYTfTC2@%K7(w@420L1&tDShR1wuAaDi6tL^{Ngm-7 zd|+R+oo*(r)39s#tgYtL61>Undy3E6E|8Q@4OcYl0G@Iy@UsptZ<_a?R^V9ED}rOA z@h;GsmaiJue&?2WZhx}y`p&LCFR{UU&P5u_wk6|u{zA>4RJ{mXBi>=B@`GNwMUM|`8}SCVcRbQ(zt^IJ;hqOZE`bXTy3E33e(wNJ zQ&aK+r^uTZP<~k45Y1#QH_d?pS02%}9}}GYOF16vKJ3~U0gJQ9WlEW4;jpJ=otej$ zJWmXnKQx#}FV-Hi*bDI&IAh*Yx(IM)AVx2>)NwGt@0%&VlvTXyuLbWwnK;C&>7!C|KWS@T`PRn z$V20xE4Y^b&l=l)=534dlzWxG=X$=~DeGz9&WoP-&=XVm?JvHarJwb}9?PAjSBCd8 zqs~;DWOw)l+pQydACj${rOewf`$_VbP8Xjo?CgElb|NTk>C2zEx@o%3c^L7Oecl7e zCGs%)b`qPu&Qd!#zmaq3(sugL-u&k;``Tas!L7@uZhYxqURCDS-*x^^Uj5MX?pj~^ z^2MKVOju7#g@=2?SP!-dzkKbT=Rcwv7aeaY?rt{b$cC)wb9go7l zEf;|a;Wf=a&MtGn{<|){sVU~0Bu8AJ3$qFCXd{SpU>ucIG>3z1k zdGE%r*?;y$@ps+d(E;1?z6%aI9nz=ks_m!G`#WoEQdh^}OVb%GPKa}J8jSiQM z`ntfHFt6RCNnWD6@y*L|1m=8(7j+4J%`gARP;SROsP8wMRX?#WwV=IOjF zICVV;udV@TGro1eu4TcnBkRt+TGR=~OJzT0Y+7{0wgR8(Gi*=6aS!a!fX*;v+BW$l zY(a0!#CG(>x3Xyp{@v&PZJclZW5-86gY5|~Y?lo|2d`g#!-;kK$9|#DIA4A57uLK_ zW*q3>@!31s>yI4Gh5k9#L;ZnSU;OBMdh{f&&ehyYzbTk=9UOGHrSLks zZ4z&440xK0*kWtNTj*sQX53e)-VSllYdFU__Ke_FLh7t!&@*q~uX+?^*11Z>3Aq{Hk(va`kiLtCXAd%IAk# z2MVtvdgi8H4bKmm#&&YfLq5;xvuLo}{B5so%di8I?RAKs@ulgEPft!mXZg&PbryZ* zX*$bwUJuu$`8uyH+kDZ-ax@IR45LSP;?s=!d}e=Q&imBo9{Z^^_Lhx;2h6#Y=iuSI z**fn1InBPYoUDU=V>z}9`;k}li*;>XC$gh{#r^?oPtnzK>{I)B=m%&r40_JD_8+ig zg(vStLMb4$lJ#? z#~NAK-qTs$P+x3^Zd-f&N??_)@LbUQE%+#>tN)}+%^7Ib)?b=@j~&ne``4d&XbpXc zi*t)P<8W>q#_T}CWgi{tjIH3{$JJ5)Os`>m2172-TlfqdwZ%gk)8wnroj3uf!T&*x znd3Z4JEA%|ubvnhc0%t1!l%MTha)NNU zOz)1Y19di@o!`~J4|HwzJCZkxUai{eSWWo$=MwY7&d{mYqWikfXS=FjihZ_$JhX3# zDYg(BdbO&D=7KNt_B;GdtGEP>Vdml3Kv#7rIxovr^4lV|0B<{e3>xptl$$$F3x`~2 zJADk=!f%aY=5~E5AD7SxTt6E-m;YN0{eby>1mheh+f(21{d)f%k~q=_Y=gV4ky1?2pHUM^3tC$(CKj7#qAU+pcN8`JuMsYSif4PTz4} za{p(!G!%9+i!GqrGT(?UVzwl_grn%$D3)Z;=kMZ{-bM=Nx zIxcw7Kb6e!r!QIO0-yd&GFhY6d+3AZehpQhvp65r?pZwkaoelT@sLQa&nJBe1XmnPO z?<2~)B<5sqtt)#<4m0n3W~^507I{qTbMPB~bH!*YSfh8p)B7On1Aaa2bwRrFJc{jQtzVjNJw#OT<%b#_vnV)L~b;@&F`C9LgqBe{5 z_vLHbdnR8S$GY^of8!B+JsUQ8pI>Z_T9kYpwDyVZ?fEwA_D3 zuU*IFb7Yd=WhL=ls;Wy5O-f0#Lddb_7wCr{-Ss-7 zAO7YXr}>~a%=mpj4*w7L7Uf6yl4lyjhzb1msz)w$3>nzrIe0#B|NU#(<|l>2s(n;( z2|ww%liuf{qR-Smh%9KF2k-G=_eMOq%kqg6_~b?OTg#6e%D8PO z!e*>bUp22D7Qk2d!g4rII#=N3^CDyX3Jl-j7v@~Eskhv#g^l=VvyJz!1%^I`HimDX z+Q(Dt1e&(fN3{<-Jy-2}m^pODMrhdYZ6o)#k+Jf1%0}k0jof>^5>?_t-*);q3q6nz zU+V!6`_-^{&EZ$>m$g(lgWB(Hr^!Jx939(EAA@E%{Mt?*gN7fxUYxV+#j-c{PINqR zd=ylyA??d`ZEm%92F+maWRAU)^@okhtEjom%l~z(+qxHdE%oc|8>gw~rk{p2-Zi&) zexv1jZaBTN&ZwRXs0u2d`{9dAlrLtw>ov^!Axx zH5R?E^p0{yt>+y6bZR}ZvH$7!=pNmv^%(}gq(i{K^BlU&s`bwj4s|Phsai|_RJ9%& z+pTy&&G{ObU)$+M?M$^Ed}0{=*7BncX56+D;aSulXsPv%KliMEe8?ET0$bHO zbu z?I-qar;oGH2U*nqtj}ukGwTmoz_Op2rxsI#yw=KkikxOW4$k0HeoHlo`sk}^JKddS z4bqy9dNZ*-&Z4eu@f|lzzo^USPuof_Tc38l67DluM?qh{Yc}t;V>B(h?U))%7hnB5 zOn4Aa))soxbH88y%&?GCV8dET?wgKU8RwmwH=lhSAJu}oKlZWO`W++jyR_6W#;iZ| zq_>{lm%KI)2m&tk7Z`Y+L*A_VhJ9Y6eDA{ju)b*~Y8Ud2+jhE9J5%klU!&iG_iB08 z$+&F?=dnJ0c}>ke!$C{!ay+>AdS;A&fJxR=?E;q9R6eibyUn&f{n|ClkG2)w&YQN= zO|=ty&ulBS=xkfLx2=q+UD?*Nsa@#YcKSFAeUL@%%KF&Pu3f;gpP2{ekaXqTNRA>K z-KniwCovyq%~Ah-dY&hj)w;gtx4_LJYYhAI8Z$plZ+hoq7;9x^LMv3C;hJ^n^#5_j zUR*8m+Yae8YE|Fx0cWNsg@ccd>gS!KMS4Zc)`=`?J%l`*Dn#a@C zG2*Dbox0;a-hZ=zzqj~3ydX-7l+(lX0bRL_#Ko|80-{V_qX2hxF$l3ZyYp(uY)jr{S zAmnlJ+~u)w>$_{?&UHd+?mXQ0P5nL;ou+ZdS7!ekKj)r(KyHLh$~}HZGt517-h^B9 z#9#c~20AmwSIgo@t`Q&jBKz;YdP@iF>jlQy0NByuM_|q==_crA{#k$S-glnT6+QmJ7Mf#YzV;8k z$3G#n=n8B@W8#E=fMx$+r~L!W{u%1U-qUuo^;#)BX6c2_@ZU-=d^Srjbmlz=aXXV< zc%je+i;FMHG)6LwVS@Xaf@>{6+E%rLF9>=U8YCYt(t3q9AwGj8ONXppZ~*P-L=o_dcA{J}F3_$QYp&&ipe zKvhn$`;>pz@Kyn(Z+#a6fB*J?zvp;KsZZnz{->AhEq^DgzghBcA@F^bYrVxI?1Yc< zadNg+o#VGn`W`vzqK5I#EA#HrsI!dLr7edlXg zdqqpTRo5q*=6BkQoAJBvy{O4DytcqwxSh^udCZ!iVnAFEbYU8$OaBx+cnL~M!U%^`uzl_KHEIedoyu}%KS~pR{c+a8lSwb##tnyP$Jg$5A;4|C3N4%j~ zDt(4Q3(R)oPmeigm_;oS9lY>k`8U5fsRXJ;w-&dWF8sx0tX-MJ>+iu zeSG+2hOOwvIw-h(U+~CJ`{cr6gJMzh+%^z*DcL^cbK;=p6#v-&Y`b|CeEw!S zY6rab6+i2FrD;2T3>q~Cyvy}mM?9Q@lEHy0|RDxR}|mEXDDZ1@dq}yojwN5e2r)O z;njBf7&P`2bcUa3W3Mmc@WG3UO`fCQ${t{jrG1cXkWSSP_!t=Ly0rKWDRX*nSJz(K z6=-z*cN_TUbfM>*0S)hvkbk*iwOU~I-4o^6kM$0&d>wT~J?|Hzo^Y0NKBjYF)z`7H zzCL@vBg1%iw7=NN-Um-=#GcY;7{khiG>UX?-51#(B&+^D?b7 z$Ip7?y_0uHZQH-UWIf_buVvm}#`DF^)9+NUafmCKVPlRXYZBkV6JN}ip4{Cpy%KD) ze|G}vc}q6N?^R4oU)DfpUYgo!ophG%bz(l;Z%sEoCAoEtA}8p_qaeCnpUyLK#y;?R zx8H`aWziXiUC`w@=a!`odDosj zCwWsa);8x%<<8WzFm#5g-p%>kz&v$%S)b$^HsCY&>@$Wf6&(8qyoCYXzLZ;SCxk&W zU*l1aJlA#uWZin7A^yUvwFnw$z0VYQaT3X2tUixYlb}r+_)`Th%FI#X6$7X4t0v zr7i+ftfKxf?&bCM$Fzb2vMy8gXA3_@{Tb3*wpdlYrg``EXGo{IjritvUDhwJA-&HD zxcwntPt_QFHLNkz1o4P7n0={Qz;6tL7qW(M@c6$3G@iL#19(PwW%`>Y>!1HtW*(xO z`@a#;p3hzLW?h-?nEZ?mrX#M@lv#9|tvOEo4uYpP^bc#s>tyJkDZ7&op(*}}8jpR@ zVgo(*_Kjim3&k#cLk#Q(VvHTcpS<5wddD!ls_!*}zs|I~gkgN?5$`n((|VeMVV_}Spy^aY;(QRYi|%bFgh8_p zjYpq-XdeVT*~dL~%KpWl#0LM;XBfU`j-EDzF*nzVw)}l1IS9Vv?X_iHG7KDa0cKs$ zfipckx9RUwRcGp+Kn>#g7Z_)p_m%VOT$zJ6FmeTbJ+IsNAB4yN1|Rw%J##(po<8$A zs(l!Gc$&BM&U4W7Hj1c(1l#4KcOBv=TpGsbNaT^$DqmAk$0Q%?mW!*to;@1r+#ls?(puyHTENE{6`v} zDPOR0qxh7V5O?$Wa6hhf>E6OCieJ{te2QM{e3xrJhB>ED(DD*&(|dmTEp*2hqFsEv*jMxE zy(3sPf2d3FCBt)0$w!Hh5_m@^ikjhhD66 z*@MER@%M$aw$nqz8!w7Wx6w0q)3o!I|sy(Tw+7hStWCZEky* z@~1z0(;H8Ik2MLk=dcByBY20(yznB&GOlT?^AxP``D5{-)@5D5>wWjV)6iOm`S~1oU!fhsO)GHZ zkL`#)#S7W+Uy%*K$PIe02kSP3o4?lkLV|_;(9hy&zrm9=h|b{lydp>9SpeJNyHViT zuL8w-gidj+@(Pcry{041;E6us=a|Aj^Mv-_|La%c{~TR-Y~MQ1d5#7CF0!V0iACU; zKfQbw`e@h?7sou~4C98J49|W|uxjTlp7tv;XZck&gkR?c&wge8pyrrYJ8Qq<8))+y z$UL!S=vQJ64Yb(p7@3#si}Rdu=$8tv=F#*C2zuepx9$#2uS16Fc^ z+gcYGBb#RZ@E>uZ30C9nvu2qOxMgW=Z&|NCF3iLT znCu$PwH=g-M7X=}+fEbF;&;y)_0Qx(TJQCr6vol=n*`RyYSH;i`ppyVNU5)Xsj9(%<624|8HI1?T;yMY9_MKX%hwx7b&U=(YbCchz;zK{{ z@Vw3QoS(PnI&PvZB|WO%xz?N%+7+Yzc@YZB4jwPK;}x2U=h2X-=K=b*(?__S5O9UB zcRpEsc+@_e#uus^dv?EXFq79puY3Qu&&R}Xo8Xn-#t8H#@?LodJoM7D1$gAY@9C)r z%O!5kS91LhAh*|(@&%sa-63y;`uiBEw?FZ!UQ79*3Ec|tqf7ZP6RNUV!4L9dT`rpvyS z->RPV}H3#Il}E4exE~eQO_CU+8D?v<}Gh^F;E?{yhWVt`vKi&%PbbCm!M3 z1P_0RUK0B~7Z@$`#Fn9Njc1?213Bg;`y$^8FS_bG#c*nUk!uGgasxNh1IxUfuOLcZ zwVnOQdRdP?4)K2uB9{wI$T(1P`Qy4{zg#VHykCClu2JB9OrIwTE@QP#a_om8EbE>3 z%b|XvtNM9OAjtZYFRp8|>Rx`oiA>&+()`XP`+RSKxlb}S*#+#{x8K40qa9x_bPMGf zo_8zO#dEx45N_;?5!bYqc#gKu^RqXx-VpD3;OghpBlj!2UUBeM+B1PMXPEKx95Cpq zb3=T1@ta2Nr4@$%opJlA$WXnrR}-|Qe>$WRO-M;W)B zKBk@>gXg)HZJxYG1E09ThsNJ{&>UOu^Uv3-Nooi0l6UILG~l2=J$XS-(`T)thP7S) zH;???BUizzJ_C>Uo$hDFhIN$uA9f?(d(oe1Og!)bIlVlHgX=1I~r0xdwvnSz>$C1*ZutmJn=oSe5P6{Jn=oSM}MvVO%G=(?tA$23^zx@D-2hXJSK(92oUu=dfY)#3a5$E;yF0 zpvU*bV1!@61r`nGGDH@@+O>%KHq*9B_?TH9th(3uzb;DFn9`j}qZviJw< N=LhRYd(({d^FP&aMYjL| diff --git a/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0.asm deleted file mode 100644 index 8ee9e85208..0000000000 --- a/src/games/endfield/deferred-lighting/0x620A40FD.ps_5_0.asm +++ /dev/null @@ -1,952 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Fri Jan 30 20:20:39 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[5], immediateIndexed -dcl_constantbuffer CB3[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture3d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture3d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture2d (float,float,float,float) t19 -dcl_resource_texture2d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_resource_texture2d (float,float,float,float) t22 -dcl_resource_texture3d (float,float,float,float) t23 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 27 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t20.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t21.xyzw -ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t22.xyzw -mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) -ftou r1.xz, r1.xxzx -ubfe r4.x, l(7), l(3), r1.x -utof r4.x, r4.x -round_ne r1.y, r1.y -ftou r1.y, r1.y -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r5.y, -r4.y, l(1.000000) -lt r4.y, r5.y, l(0.000000) -ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) -add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) -movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) -mul r4.zw, r4.zzzw, r6.xxxy -movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx -dp3 r2.x, r5.xyzx, r5.xyzx -rsq r2.x, r2.x -mul r5.xyz, r2.xxxx, r5.xyzx -and r2.x, r1.y, l(7) -utof r2.x, r2.x -mad r2.x, r2.x, l(0.107142866), l(0.500000) -utof r4.yz, r0.xxyx -mul r6.xy, v0.xyxx, cb0[82].zwzz -mad r6.zw, r6.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -add r7.xy, r4.yzyy, l(0.500000, 0.500000, 0.000000, 0.000000) -mul r7.xy, r7.xyxx, cb0[82].zwzz -sample_l_indexable(texture2d)(float,float,float,float) r2.y, r7.xyxx, t1.yxzw, s0, l(0.000000) -mul r7.xyzw, -r6.wwww, cb0[25].xyzw -mad r7.xyzw, cb0[24].xyzw, r6.zzzz, r7.xyzw -mad r7.xyzw, cb0[26].xyzw, r2.yyyy, r7.xyzw -add r7.xyzw, r7.xyzw, cb0[27].xyzw -div r7.xyz, r7.xyzx, r7.wwww -mul r2.y, r7.y, cb0[1].z -mad r2.y, cb0[0].z, r7.x, r2.y -mad r2.y, cb0[2].z, r7.z, r2.y -add r2.y, r2.y, cb0[3].z -eq r4.w, l(0.000000), cb0[86].w -add r8.xyz, -r7.xyzx, cb0[44].xyzx -mov r9.x, cb0[0].z -mov r9.y, cb0[1].z -mov r9.z, cb0[2].z -movc r10.xyz, r4.wwww, r8.xyzx, r9.xyzx -dp3 r4.w, r10.xyzx, r10.xyzx -max r6.z, r4.w, l(9.999999939E-09) -rsq r6.z, r6.z -mul r11.xyz, r6.zzzz, r10.xyzx -mul r4.w, r4.w, r6.z -lt r6.w, l(0.000488281250), cb0[234].x -if_nz r6.w - sample_b_indexable(texture2d)(float,float,float,float) r6.w, v1.xyxx, t19.yzwx, s1, cb0[108].x -else - mov r6.w, l(1.000000) -endif -add r6.w, -r6.w, l(1.000000) -mad_sat r8.w, r2.z, l(0.300000), l(0.250000) -mul r8.w, r8.w, cb0[222].x -mul r8.w, r6.w, r8.w -mad r8.w, r8.w, l(-0.750000), l(1.000000) -mul r3.xyz, r3.xyzx, r8.wwww -min r8.w, r2.z, l(0.300000) -mul r6.w, r6.w, cb0[222].x -mul r6.w, r6.w, l(0.500000) -add r8.w, -r2.z, r8.w -mad r12.z, r6.w, r8.w, r2.z -mul r2.zw, r2.xxxw, l(0.000000, 0.000000, 0.080000, 3.000000) -dp3 r6.w, r5.xyzx, r11.xyzx -max r8.w, r6.w, l(0.000000) -mad r13.xyzw, r12.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r9.w, r13.x, r13.x -mul r10.w, r8.w, l(-9.280000) -exp r10.w, r10.w -min r9.w, r9.w, r10.w -mad r9.w, r9.w, r13.x, r13.y -mad r13.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz -ld_indexable(texture2d)(float,float,float,float) r13.z, r0.xyzz, t6.zwxy -lt r0.z, l(0.001000), r13.z -if_nz r0.z - bfi r0.z, l(3), l(2), r1.x, l(0) - mul r1.x, r1.w, l(3.000000) - ftou r1.x, r1.x - bfi r0.z, l(2), l(0), r1.x, r0.z - utof r0.z, r0.z - mul r1.x, r0.z, l(0.0322580636) - ubfe r1.y, l(7), l(3), r1.y - utof r1.y, r1.y - mul r1.y, r1.y, l(0.00787401572) - sample_l_indexable(texture2d)(float,float,float,float) r1.w, r6.xyxx, t9.yzwx, s1, l(0.000000) - ge r26.x, cb13[12].z, l(1.000000) - mul r26.y, r1.w, r1.w - mul r26.y, r26.y, r26.y - movc r1.w, r26.x, r26.y, r1.w - dp3 r9.w, -r11.xyzx, r5.xyzx - add r9.w, r9.w, r9.w - mad r14.xyz, r5.xyzx, -r9.wwww, -r11.xyzx - dp3 r9.w, -cb2[0].xyzx, r14.xyzx - mad r15.xyz, cb2[0].xyzx, r9.wwww, r14.xyzx - lt r9.w, r9.w, cb2[4].z - dp3 r10.w, r15.xyzx, r15.xyzx - max r10.w, r10.w, l(0.0000610351562) - rsq r10.w, r10.w - mul r15.xyz, r10.wwww, r15.xyzx - mul r15.xyz, r15.xyzx, cb2[4].yyyy - mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx - dp3 r10.w, r15.xyzx, r15.xyzx - rsq r10.w, r10.w - mul r15.xyz, r10.wwww, r15.xyzx - movc r14.xyz, r9.wwww, r15.xyzx, r14.xyzx - mad r10.xyz, r10.xyzx, r6.zzzz, r14.xyzx - dp3 r6.z, r10.xyzx, r10.xyzx - max r6.z, r6.z, l(0.0000610351562) - rsq r6.z, r6.z - mul r10.xyz, r6.zzzz, r10.xyzx - dp3 r6.z, r5.xyzx, r14.xyzx - mov_sat r12.x, r6.z - dp3_sat r9.w, r5.xyzx, r10.xyzx - dp3 r10.w, r11.xyzx, r14.xyzx - min r12.y, r8.w, l(1.000000) - mul r11.w, r12.z, r12.z - mul r11.w, r11.w, r11.w - mad r12.w, r9.w, r11.w, -r9.w - mad r9.w, r12.w, r9.w, l(1.000000) - dp3_sat r10.x, r11.xyzx, r10.xyzx - add r10.x, -r10.x, l(1.000000) - mul r10.y, r10.x, r10.x - mul r10.y, r10.y, r10.y - mul r10.z, r10.x, r10.y - add r12.w, -r12.z, l(1.000000) - mad r14.x, -r12.w, l(0.383026), l(-0.0761947036) - mad r14.x, r12.w, r14.x, l(1.049970) - mad r12.w, r12.w, r14.x, l(0.409255) - min r12.w, r12.w, l(0.999000) - add r14.x, -r12.w, l(1.000000) - mad r2.x, -r2.x, l(0.080000), l(1.000000) - mad r2.x, r2.x, l(0.0476190485), r2.z - mov_sat r14.y, -r10.w - mul r14.y, r14.y, r14.y - mad r14.y, r14.y, l(-0.640000), l(1.000000) - mul r14.y, r14.y, r14.y - mad r10.x, -r10.y, r10.x, l(1.000000) - mad r10.x, r2.z, r10.x, r10.z - mul r9.w, r9.w, r9.w - div r9.w, r11.w, r9.w - mad r10.yz, -r12.yyxy, r11.wwww, r12.yyxy - mad r10.yz, r10.yyzy, r12.yyxy, r11.wwww - sqrt r10.yz, r10.yyzy - mul r10.yz, r10.yyzy, r12.xxyx - add r10.y, r10.z, r10.y - add r10.y, r10.y, l(0.000100) - div r10.y, l(0.500000), r10.y - mul r9.w, r9.w, r10.y - mul r9.w, r9.w, r10.x - min r9.w, r9.w, l(2048.000000) - mad r15.xyzw, r12.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r10.x, r15.xyxx, t8.xyzw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r10.y, r15.zwzz, t8.yxzw, s1, l(0.000000) - mul r10.x, r10.y, r10.x - mul r10.x, r12.w, r10.x - div r10.x, r10.x, r14.x - mul r10.y, r2.x, r2.x - mul r10.x, r10.x, r10.y - mad r2.x, -r2.x, r14.x, l(1.000000) - div r2.x, r10.x, r2.x - add r2.x, r2.x, r9.w - add_sat r6.w, r6.w, l(0.200000) - mov_sat r9.w, r10.w - add r9.w, r9.w, l(0.500000) - min r9.w, r9.w, l(1.000000) - mul r10.x, r6.w, r9.w - add_sat r10.y, r10.w, l(1.000000) - mad r6.w, -r6.w, r9.w, l(1.000000) - mad r6.w, r10.y, r6.w, r10.x - mul r2.x, r2.x, r6.w - mul r2.x, r1.y, r2.x - mul r10.xyz, r1.yyyy, r3.xyzx - ubfe r6.w, l(7), l(3), r1.z - utof r6.w, r6.w - mul r6.w, r6.w, l(0.00787401572) - mul r2.x, r2.x, cb2[4].x - max r2.x, r2.x, l(0.000000) - min r2.x, r2.x, l(1000.000000) - mul r2.x, r12.x, r2.x - mad r10.xyz, r10.xyzx, r6.wwww, r2.xxxx - max r2.x, r3.y, r3.x - max r2.x, r3.z, r2.x - max r2.x, r2.x, l(0.010000) - div r14.xzw, r3.xxyz, r2.xxxx - mul r2.x, r4.x, l(0.00393700786) - mul r14.xzw, r2.xxxx, r14.xxzw - add_sat r2.x, -r6.z, l(0.500000) - ne r6.w, r14.y, l(0.360000) - div r9.w, l(0.360000), r14.y - movc r6.w, r6.w, r9.w, l(1.000000) - mul r2.x, r2.x, r6.w - mad_sat r0.z, r0.z, l(0.0322580636), r6.z - add r0.z, -r12.x, r0.z - mul r12.xyw, r0.zzzz, r3.xyxz - mad r12.xyw, r14.xzxw, r2.xxxx, r12.xyxw - mad r10.xyz, r12.xywx, r1.yyyy, r10.xyzx - mul r10.xyz, r10.xyzx, cb2[1].xyzx - mov r13.w, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r12.xyw, r13.zwzz, t7.xywz, s1, cb0[108].x - add r0.z, -r13.z, l(1.000000) - mad r12.xyw, r10.xyxz, r12.xyxw, -r10.xyxz - mad r10.xyz, r0.zzzz, r12.xywx, r10.xyzx - max r0.z, r1.y, r1.w - add r0.z, -r1.w, r0.z - mad r0.z, r1.x, r0.z, r1.w - mul r1.xyw, r0.zzzz, r10.xyxz -else - mov r1.xyw, l(0,0,0,0) -endif -ne r6.zw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy -movc r6.z, cb13[14].z, l(0xFFFFFFFF), r6.z -if_nz r6.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - mad r0.z, r0.z, l(0.750000), l(0.250000) - min r0.z, r3.w, r0.z - add r2.x, r0.z, r8.w - mad r6.z, r12.z, l(-16.000000), l(-1.000000) - exp r6.z, r6.z - log r2.x, |r2.x| - mul r2.x, r2.x, r6.z - exp r2.x, r2.x - add r2.x, r0.z, r2.x - add r2.x, r2.x, l(-1.000000) - mov_sat r10.xyz, r2.xxxx - mad r12.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) - mul r12.xyw, r0.zzzz, r12.xyxw - mad r12.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r12.xyxw - add r12.xyw, r12.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) - mul r12.xyw, r0.zzzz, r12.xyxw - mad r12.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r12.xyxw - add r12.xyw, r12.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) - mul r12.xyw, r0.zzzz, r12.xyxw - max r12.xyw, r0.zzzz, r12.xyxw -else - mov r10.xyz, r3.wwww - mov r12.xyw, r3.wwww -endif -movc r10.xyz, cb13[14].zzzz, r10.xyzx, l(1.0, 1.0, 1.0, 0) -mul r1.xyw, r1.xyzw, r10.xyxz -mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r14.xyz, r7.xzyx, -r14.xyzx -max r0.z, |r14.y|, |r14.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r2.x, |r14.z|, l(-208.000000) -mul_sat r2.x, r2.x, l(0.031250) -max r0.z, r0.z, r2.x -ne r2.x, l(0.000000), cb0[210].w -lt r3.w, r0.z, l(1.000000) -and r2.x, r2.x, r3.w -if_nz r2.x - mad r14.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r14.xyz, r7.xzyx, -r14.xyzx - max r2.x, |r14.y|, |r14.x| - add r2.x, r2.x, l(-29.000000) - mul_sat r2.x, r2.x, l(0.500000) - add r3.w, |r14.z|, l(-13.000000) - mul_sat r3.w, r3.w, l(0.500000) - max r2.x, r2.x, r3.w - lt r3.w, r2.x, l(1.000000) - if_nz r3.w - mad r14.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r15.xyz, r14.xyzx, cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r15.xyw, r14.xyzx, t13.yzwx, s2, l(0.000000) - add r3.w, -r2.x, l(1.000000) - mul r6.z, l(0.500000), cb0[211].y - mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) - max r6.z, r6.z, r14.y - min r6.z, r9.w, r6.z - mul r14.w, r6.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t14.xyzw, s1, l(0.000000) - mad r6.z, r16.w, r3.w, r0.z - add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t14.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r15.yyyy, r17.xyzx - mov r17.w, r15.y - mul r17.xyzw, r3.wwww, r17.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t14.xyzw, s1, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r15.xxxx, r14.xyzx - mov r14.w, r15.x - mul r14.xyzw, r3.wwww, r14.xyzw - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r15.wwww, r16.xyzx - mul r15.xyzw, r3.wwww, r15.xyzw - else - mov r17.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r6.z, r0.z - endif - mad r16.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r16.xyz, r7.xzyx, -r16.xyzx - max r3.w, |r16.y|, |r16.x| - add r3.w, r3.w, l(-116.000000) - mul_sat r3.w, r3.w, l(0.125000) - add r9.w, |r16.z|, l(-52.000000) - mul_sat r9.w, r9.w, l(0.125000) - max r3.w, r3.w, r9.w - lt r9.w, r3.w, l(1.000000) - if_nz r9.w - mad r16.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r16.xyzx, cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r16.xyzx, t15.yzwx, s2, l(0.000000) - add r9.w, -r3.w, l(1.000000) - mul r2.x, r2.x, r9.w - mul r9.w, l(0.500000), cb0[211].y - mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) - max r9.w, r9.w, r16.y - min r9.w, r10.w, r9.w - mul r16.w, r9.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t16.xyzw, s1, l(0.000000) - mad r6.z, r19.w, r2.x, r6.z - add r20.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t16.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r18.yyyy, r20.xyzx - mov r20.w, r18.y - mad r17.xyzw, r20.xyzw, r2.xxxx, r17.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t16.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r18.xxxx, r16.xyzx - mov r16.w, r18.x - mad r14.xyzw, r16.xyzw, r2.xxxx, r14.xyzw - mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r16.xyzx - mad r15.xyzw, r18.xyzw, r2.xxxx, r15.xyzw - endif - lt r2.x, l(0.000000), r3.w - if_nz r2.x - mad r16.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r16.xyzx, cb0[211].xyzx - mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx - mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r16.xyz, r19.xyzx, r16.xyzx - min r16.xyz, r18.xyzx, r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) - add r2.x, -r0.z, l(1.000000) - mul r2.x, r2.x, r3.w - max r3.w, r19.y, r16.y - min r3.w, r18.y, r3.w - mul r16.w, r3.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) - add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r20.yyyy, r19.xyzx - mov r19.w, r20.y - mad r17.xyzw, r19.xyzw, r2.xxxx, r17.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r20.xxxx, r16.xyzx - mov r16.w, r20.x - mad r14.xyzw, r16.xyzw, r2.xxxx, r14.xyzw - mad r16.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r16.xyzx - mad r15.xyzw, r20.xyzw, r2.xxxx, r15.xyzw - mad r6.z, r18.w, r2.x, r6.z - endif - mad_sat r2.x, r6.z, l(2.000000), l(-1.000000) - add r16.x, -r0.z, r2.x - add r0.z, r0.z, r2.x - mul r16.y, r0.z, l(0.500000) -else - mov r17.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r16.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r16.yyyx, cb0[213].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r13.zw, r16.yyyx, cb0[213].wwwy -mad r18.w, r13.w, l(0.375000), r13.z -add r15.xyzw, r15.xyzw, r18.xyzw -mul r18.xyzw, r16.yyyx, cb0[214].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r13.zw, r16.yyyx, cb0[214].wwwy -mad r18.w, r13.w, l(0.375000), r13.z -add r14.xyzw, r14.xyzw, r18.xyzw -mul r18.xyzw, r16.yyyx, cb0[215].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r13.zw, r16.yyyx, cb0[215].wwwy -mad r18.w, r13.w, l(0.375000), r13.z -add r16.xyzw, r17.xyzw, r18.xyzw -ge r13.zw, r6.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r13.w, r13.z -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r6.xyxx, t12.xyzw, s1, l(0.000000) - lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| - or r6.xy, r18.zwzz, r18.xyxx - or r0.z, r6.y, r6.x - if_nz r0.z - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mov r6.x, l(1.000000) - mov r6.y, r0.z - mov r2.x, l(0) - loop - ge r3.w, l(4.600000), r6.y - breakc_nz r3.w - iadd r3.w, r2.x, l(1) - mul r13.zw, r6.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) - mov r6.xy, r13.zwzz - mov r2.x, r3.w - continue - endloop - mul r17.xyzw, r6.xxxx, r17.xyzw - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb3[3].x, cb3[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r6.x, r0.z, l(0.00390625000) - mov r6.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r6.xy, r6.xyxx, t11.xyzw, s1, l(0.000000) - mad r6.xy, r6.xyxx, cb3[2].xyxx, cb3[2].zwzz - mul r18.x, r6.x, l(3.54490781) - mul r18.yzw, r6.yyyy, r17.yyzw - mul r0.z, r17.x, l(0.406976730) - exp r0.z, r0.z - mul r17.xyzw, r0.zzzz, r18.xyzw - mov r18.xyzw, r17.xyzw - mov r0.z, l(0) - loop - uge r3.w, r0.z, r2.x - breakc_nz r3.w - mul r19.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r3.w, r19.xyzw, r18.xyzw - dp2 r6.x, r19.yxyy, r18.xyxx - dp2 r6.y, r19.zxzz, r18.xzxx - dp2 r6.z, r19.wxww, r18.xwxx - iadd r9.w, r0.z, l(1) - mov r18.x, r3.w - mov r18.yzw, r6.xxyz - mov r0.z, r9.w - continue - endloop - mul r17.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r18.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r17.xyzw, r18.xyzw - dp2 r2.x, r17.yxyy, r18.xyxx - dp2 r3.w, r17.zxzz, r18.xzxx - dp2 r6.x, r17.wxww, r18.xwxx - mul r18.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r6.y, r17.xyzw, r18.xyzw - dp2 r6.z, r17.yxyy, r18.xyxx - dp2 r9.w, r17.zxzz, r18.xzxx - dp2 r10.w, r17.wxww, r18.xwxx - mul r18.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r11.w, r17.xyzw, r18.xyzw - dp2 r13.z, r17.yxyy, r18.xyxx - dp2 r13.w, r17.zxzz, r18.xzxx - dp2 r17.x, r17.wxww, r18.xwxx - mul r15.w, r0.z, l(0.886226952) - mul r15.x, r6.x, l(-1.02332675) - mul r15.y, r2.x, l(-1.02332675) - mul r15.z, r3.w, l(1.02332675) - mul r14.x, r10.w, l(-1.02332675) - mul r14.yw, r6.zzzy, l(0.000000, -1.02332675, 0.000000, 0.886226952) - mul r14.z, r9.w, l(1.02332675) - mul r16.w, r11.w, l(0.886226952) - mul r16.x, r17.x, l(-1.02332675) - mul r16.yz, r13.zzwz, l(0.000000, -1.02332675, 1.02332675, 0.000000) - endif -endif -mov r5.w, l(1.000000) -dp4 r6.x, r15.xyzw, r5.xyzw -dp4 r6.y, r14.xyzw, r5.xyzw -dp4 r6.z, r16.xyzw, r5.xyzw -max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -dp3 r0.z, -r11.xyzx, r5.xyzx -add r0.z, r0.z, r0.z -mad r17.xyz, r5.xyzx, -r0.zzzz, -r11.xyzx -add r0.z, l(-1.000000), cb0[113].x -max r2.x, r12.z, l(0.001000) -log r2.x, r2.x -mad r2.x, -r2.x, l(1.200000), l(1.000000) -add r0.z, r0.z, -r2.x -mul r13.zw, r4.yyyz, cb1[0].wwww -round_ni r13.zw, r13.zzzw -add r2.x, |r2.y|, -cb1[2].y -round_ni r2.x, r2.x -add r3.w, l(-1.000000), cb1[1].x -max r9.w, r2.x, l(0.000000) -min r3.w, r3.w, r9.w -ge r2.x, r3.w, r2.x -mad r9.w, r13.w, cb1[0].x, r13.z -ftoi r9.w, r9.w -iadd r9.w, r9.w, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.w, r9.w, l(0), t0.xxxx -ftoi r3.w, r3.w -iadd r3.w, r3.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx -and r3.w, r3.w, r9.w -and r2.x, r2.x, r3.w -mul r18.xyz, r6.xyzx, cb0[111].xxxx -dp3 r3.w, r18.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r7.w, l(1.000000) -mov r18.xyz, l(0,0,0,0) -mov r9.w, l(1.000000) -mov r10.w, r2.x -mov r11.w, l(0) -loop - lt r12.z, l(0.010000), r9.w - ine r13.z, r10.w, l(0) - and r13.z, r12.z, r13.z - if_nz r13.z - firstbit_lo r13.z, r10.w - ishl r13.w, l(1), r13.z - xor r10.w, r10.w, r13.w - ishl r13.z, r13.z, l(3) - dp4 r19.x, cb1[r13.z + 6].xyzw, r7.xyzw - dp4 r19.y, cb1[r13.z + 7].xyzw, r7.xyzw - dp4 r19.z, cb1[r13.z + 8].xyzw, r7.xyzw - ge r20.xyz, cb1[r13.z + 5].xyzx, |r19.xyzx| - and r13.w, r20.y, r20.x - and r13.w, r20.z, r13.w - if_nz r13.w - mul r13.w, l(0.100000), cb1[r13.z + 5].x - mul r20.xyz, |r19.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r20.xy, r20.xyxx, r20.xyxx - add r21.xyz, -|r19.xyzx|, cb1[r13.z + 5].xyzx - mul r21.xyz, r21.xyzx, cb1[r13.z + 9].xyzx - eq r17.w, l(1.000000), cb1[r13.z + 10].x - if_nz r17.w - dp3 r22.x, cb1[r13.z + 6].xyzx, r17.xyzx - dp3 r22.y, cb1[r13.z + 7].xyzx, r17.xyzx - dp3 r22.z, cb1[r13.z + 8].xyzx, r17.xyzx - add r23.xyz, -r19.xyzx, cb1[r13.z + 5].xyzx - div r23.xyz, r23.xyzx, r22.xyzx - add r24.xyz, -r19.xyzx, -cb1[r13.z + 5].xyzx - div r24.xyz, r24.xyzx, r22.xyzx - lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx - movc r23.xyz, r25.xyzx, r23.xyzx, r24.xyzx - min r17.w, r23.y, r23.x - min r17.w, r23.z, r17.w - mad r19.xyz, r22.xyzx, r17.wwww, r19.xyzx - else - mov r19.xyz, r17.xyzx - endif - dp3 r17.w, r19.xyzx, r19.xyzx - rsq r17.w, r17.w - mul r19.xyz, r17.wwww, r19.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - lt r23.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r22.xyz, -r22.xyzx, r23.xyzx - itof r22.xyz, r22.xyzx - dp3 r17.w, r19.xyzx, r22.xyzx - div r19.xyz, r19.xyzx, r17.wwww - lt r17.w, r19.z, l(0.000000) - add r19.zw, -|r19.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r19.zw, r19.zzzw, r22.xxxy - movc r19.xy, r17.wwww, r19.zwzz, r19.xyxx - dp4 r17.w, cb1[r13.z + 4].xyzw, r5.xyzw - max r17.w, r17.w, l(0.000000) - max r17.w, r17.w, l(0.000100) - min r18.w, r21.z, r21.y - min r18.w, r18.w, r21.x - add r19.z, r20.y, r20.x - mad r19.z, r20.z, r20.z, r19.z - mad r13.w, r13.w, r13.w, -r19.z - mul r13.w, r13.w, cb1[r13.z + 9].x - mul r13.w, r13.w, cb1[r13.z + 9].x - add r19.z, l(1.000000), -cb1[r13.z + 10].y - mul r13.w, r13.w, r19.z - mul r13.w, r13.w, l(100.000000) - mad_sat r13.w, r18.w, cb1[r13.z + 10].y, r13.w - mul r18.w, r13.w, cb1[r13.z + 10].w - mad r19.xy, r19.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r19.xy, r19.xyxx, cb1[1].wwww, cb1[2].wwww - mov r19.z, cb1[r13.z + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r19.xyz, r19.xyzx, t5.xyzw, s3, r0.z - mul r19.xyz, r19.xyzx, cb1[r13.z + 9].wwww - div r19.w, r3.w, r17.w - min r19.w, |r19.w|, l(1.000000) - mad r19.w, r19.w, l(2.000000), r3.w - add r17.w, r17.w, l(2.000000) - div r17.w, r19.w, r17.w - add r17.w, r17.w, l(-1.000000) - mad r17.w, r17.w, cb0[112].w, l(1.000000) - mul r19.xyz, r17.wwww, r19.xyzx - mul r19.xyz, r18.wwww, r19.xyzx - mad r18.xyz, r19.xyzx, r9.wwww, r18.xyzx - mad r13.z, -r13.w, cb1[r13.z + 10].w, l(1.000000) - mul r9.w, r9.w, r13.z - endif - mov r11.w, l(-1) - continue - else - mov r11.w, r12.z - break - endif - mov r11.w, r12.z -endloop -if_nz r11.w - dp3 r2.x, r17.xyzx, r17.xyzx - rsq r2.x, r2.x - mul r17.xyz, r2.xxxx, r17.xyzx - lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx - lt r20.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r19.xyz, -r19.xyzx, r20.xyzx - itof r19.xyz, r19.xyzx - dp3 r2.x, r17.xyzx, r19.xyzx - div r17.xyz, r17.xyzx, r2.xxxx - lt r2.x, r17.z, l(0.000000) - add r13.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r13.zw, r13.zzzw, r19.xxxy - movc r13.zw, r2.xxxx, r13.zzzw, r17.xxxy - dp4 r2.x, cb1[3].xyzw, r5.xyzw - max r2.x, r2.x, l(0.000000) - max r2.x, r2.x, l(0.000100) - mad r13.zw, r13.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r17.xy, r13.zwzz, cb1[1].wwww, cb1[2].wwww - mov r17.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t5.xyzw, s3, r0.z - div r0.z, r3.w, r2.x - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r3.w - add r2.x, r2.x, l(2.000000) - div r0.z, r0.z, r2.x - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r17.xyz, r0.zzzz, r17.xyzx - mad r18.xyz, r17.xyzx, r9.wwww, r18.xyzx -endif -mul r17.xyz, r18.xyzx, cb0[112].zzzz -mul r17.xyz, r17.xyzx, cb0[111].yyyy -if_nz r6.w - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r18.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x - add r2.x, -r0.z, l(1.000000) - mul r19.xyz, r2.xxxx, r17.xyzx - mad r17.xyz, r18.xyzx, r0.zzzz, r19.xyzx -endif -mul r6.xyz, r3.xyzx, r6.xyzx -mul r6.xyz, r6.xyzx, cb0[111].xxxx -mad r0.z, r2.z, r13.x, r13.y -mul r13.xyz, r0.zzzz, r17.xyzx -mul r10.xyz, r10.xyzx, r13.xyzx -mad r6.xyz, r6.xyzx, r12.xywx, r10.xyzx -mul r5.xyzw, r5.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) -dp4 r10.x, r15.xyzw, r5.xyzw -dp4 r10.y, r14.xyzw, r5.xyzw -dp4 r10.z, r16.xyzw, r5.xyzw -max r5.xyz, r10.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -mul r5.xyz, r5.xyzx, cb0[111].xxxx -mul r5.xyz, r12.xywx, r5.xyzx -max r0.z, r3.y, r3.x -max r0.z, r3.z, r0.z -max r0.z, r0.z, l(0.010000) -div r3.xyz, r3.xyzx, r0.zzzz -mul r3.xyz, r3.xyzx, r5.xyzx -mul r0.z, r4.x, l(0.00787401572) -min r2.x, r8.w, l(1.000000) -bfi r1.z, l(3), l(2), r1.z, l(0) -ftou r2.z, r2.w -bfi r1.z, l(2), l(0), r2.z, r1.z -utof r1.z, r1.z -mul r1.z, r1.z, l(0.0322580636) -mad r0.z, r0.z, r2.x, r1.z -mul r2.xzw, r0.zzzz, r3.xxyz -mad r2.xzw, r2.xxzw, l(0.318309873, 0.000000, 0.318309873, 0.318309873), r6.xxyz -add r1.xyz, r1.xywx, r2.xzwx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r7.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r4.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r7.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xzw, r0.zzzz, cb0[155].xxyz -mul r2.xzw, r2.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) -exp r2.xzw, r2.xxzw -dp3 r0.z, -r11.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r3.x, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r3.x -lt r3.x, l(0.000000), cb0[163].z -if_nz r3.x - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r11.xyzx, -r9.xyzx - add r3.z, r7.y, -cb0[44].y - lt r3.w, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.w - mul r0.x, r0.x, cb0[163].w - div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w - mul r4.x, r0.x, r3.w - mad r5.x, r4.x, r3.z, cb0[44].y - mad r3.z, -r4.x, r3.z, r3.z - mul r4.x, r3.z, cb0[159].z - max r4.x, r4.x, l(-127.000000) - mul r3.z, r3.z, cb0[162].x - max r3.z, r3.z, l(-127.000000) - add r5.y, r5.x, -cb0[159].x - mul r5.y, r5.y, cb0[159].z - max r5.y, r5.y, l(-127.000000) - exp r5.y, -r5.y - mul r5.y, r5.y, cb0[159].y - lt r5.z, l(5.960464478E-08), |r4.x| - exp r5.w, -r4.x - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r4.x - mad r4.x, -r4.x, l(0.240226507), l(0.693147182) - movc r4.x, r5.z, r5.w, r4.x - add r5.x, r5.x, -cb0[162].z - mul r5.x, r5.x, cb0[162].x - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[162].y - lt r5.z, l(5.960464478E-08), |r3.z| - exp r5.w, -r3.z - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r3.z - mad r3.z, -r3.z, l(0.240226507), l(0.693147182) - movc r3.z, r5.z, r5.w, r3.z - mul r3.z, r3.z, r5.x - mad r3.z, r5.y, r4.x, r3.z - mad r0.x, -r0.x, r3.w, l(1.000000) - mul r0.x, r4.w, r0.x - mul r0.x, r0.x, r3.z - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r3.zw, r4.wwww, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r3.z - add r0.x, r3.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz - mul r3.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r2.y|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r3.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t10.xyzw, s1, l(0.000000) - add r0.y, |r2.y|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r0.x, r0.x, r3.w -else - add r0.y, r7.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.y, cb0[44].y, -cb0[159].x - mul r2.y, r2.y, cb0[159].z - max r2.y, r2.y, l(-127.000000) - exp r2.y, -r2.y - mul r2.y, r2.y, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.y, r0.w, r0.y - mul r0.y, r4.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r4.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r3.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r2.xzwx -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.y, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.y, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r2.xyz, -r2.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r2.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx -// Check fog modification toggle (cb13[12].y) -// If 0 (Original), skip fog modification and output original -if_z cb13[12].y - mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx - dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) - dp3 r1.w, r8.xyzx, r8.xyzx - sqrt r1.w, r1.w - mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) - mul r2.x, r1.w, cb0[169].x - mad r1.w, -cb0[169].x, r1.w, l(1.000000) - mul r2.yzw, cb0[168].xxyz, cb0[183].wwww - mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw - sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t23.xwyz, s2, l(0.000000) - dp2 r2.x, r2.yyyy, r2.xxxx - add r1.w, r1.w, r2.x - add r2.x, r0.w, l(1.000000) - min r1.w, r1.w, r2.x - add r0.xyz, -r1.xyzx, r0.xyzx - mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx - mov o0.w, r0.w - ret -endif - -// === Simplified Fog Modification (Anti-Banding) === -// r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter (0-255) - -// Normalize colors to 0-1 range -mul r9.xyz, r1.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // sceneColor = r1/255 -mul r10.xyz, r0.xyzx, l(0.003921569, 0.003921569, 0.003921569, 0.000000) // fogColor = r0/255 - -// Boost transmittance: transmittance = lerp(transmittance, 1, 0.35) to reduce fog density -add r11.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r11.xyz, r11.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx - -// Reduce fog inscatter intensity -mul r10.xyz, r10.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - -// Standard fog blend with reduced intensity -mad r12.xyz, r9.xyzx, r11.xyzx, r10.xyzx - -// Scale back to 0-255 -mul r0.xyz, r12.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) - -// Continue with original post-fog processing -dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -dp3 r1.w, r8.xyzx, r8.xyzx -sqrt r1.w, r1.w -mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) -mul r2.x, r1.w, cb0[169].x -mad r1.w, -cb0[169].x, r1.w, l(1.000000) -mul r2.yzw, cb0[168].xxyz, cb0[183].wwww -mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw -sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t23.xwyz, s2, l(0.000000) -dp2 r2.x, r2.yyyy, r2.xxxx -add r1.w, r1.w, r2.x -add r2.x, r0.w, l(1.000000) -min r1.w, r1.w, r2.x -add r0.xyz, -r1.xyzx, r0.xyzx -mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx -mov o0.w, r0.w -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x69D13BAF.cso b/src/games/endfield/deferred-lighting/0x69D13BAF.cso new file mode 100644 index 0000000000000000000000000000000000000000..87fa148ae6a98e0867a4fa9b46f87fc45538955e GIT binary patch literal 41356 zcmchge~e~VdEf8cG2_|UHC_*3>?Lhp4G~Qj5O|gvGiG=0j?M71wPWxW@<&Nmg*Gh( zvp7IWTxN%414)1=v~EoZH3l}+u2gkfiKrFc^(L{R$cYG59Y`dQOzTjT(#la${-Ctq z&vTyddC%N=XKmA_N4odid!FAv&U4Pa@B7Z&{N|0DZd|_Y#tU!z+SmX5k+t`4{mJV; zJJ)sHFMX!#=GDJQ$It5c4IQt2$~3blXw2)yWZKo=~ZvO>6Tk=ySaPdfd_68U*v!X--!;l%2xxTf79PS^>^QPr-ts0kKLdE;Bcr{)O!pjy zU!m(Ob^JJH{=`9DO|RkYarpWgofk(cZ(Sy@xjL zheD6uEqq~gfBEPh{|5e#7W#d@Pkoj~_xnfp2S)e!rselc-zPu(*6N1`TKua<_sgUE zXN~TkJ-UC+=>BTor~K!R?yni$Upu-#l=pvU(p|QCu*8cPojlmhbI=B=gYx$(_PN<>qxL@oei~>bfO#Bxl7l`1ONscDMZ(6Ys>_!L5e`M|MBxR9n&U z!Klmp$mbpY?|GYfvJ!)vn^Ab4i_%*^=@R)RgUOw1`$DGB#=(3qQ>vFO3%Q4GizN$`L ze#*QROXR|X9v|2?a+Z3fO?RzZY3;U-2UHHf(fUK>mMGNp?Juq*8jIWHwncs|WjKpE`LIJtXsqueBuO5wI}?-8kT-p zTS~utM`J(ST{cflfWNNmKIXhVnPb#xY<#wAa3s+3};7@3Q6I<4N;zr&tq~8Bk*UbHmx#`@820ZYY``qJ0 z^2B*6o-tp+Sx}v5{G*Yr^~W#!Yxs#4^ASAiN#LvQ(rX?au-@o8<$-Qr>9@|4SLV5(yn-kBj6Ba3t`9Z-*6royOI`to-;pCn&fhSZ4U>(7^xwCV_${5t zFBE--0e!~2jXMh_y+XctESb0Fb*#@C>xkE(CU(@KF@N)LJ%Hv?e(_we-}*rWqbA?Q zI!G?0&pYNvD<7X87kpmFn(UZM+~0fT4G%Im(2ICTm&M1@PUUOl)!AQ|2-0=`O^4w7 zPYKSRv>$YeHqD6>KR1by|DrSU&Fh5XP3)Z8z{wr>s6NGh2l>{s&F3SE6aG$k^w|0K zx4)fS+(ips@x#`-a|Ah#ZGlZ5l75jRhS3+;?i^`x;KRLhq=n%}?y0%NzJPF*o5kw$<{`ckEBC?coo6N$pUJIgJm_%oiAI1-@@%Tj{i3%?n085U+FT=gkk7 zaSg{Dh2P!E2l#+T4luU4UGRw4*{n62DOW>L+X7EDtHnnqd|E#M$46@GtOww*SHo`b zfICl(=U$+F8&iKrt_Oa@M>w%JX8cUz_JeL>-I(Suv4a^V+cD$DQ-qa*X4iIXH$j zyd!7rtK*W#^-}8Zc%g&iZNA2lUqjEkloOBT^;tb1Fn@nqW2ZDm-MBl)(1$Ue`#qQ0 z1As#wn8$Z>Ek2Pj?@OU$f4Gve%)>qTZkTmTJ9w`Y`H5c*qo$7WZKL!#croR8-T0+4j)~%>rmuG zi}zIW8olgWateQYo;k14!La~V{IWBziA_syK0=SYMvh|%{fp1t6??PBzVJV=uixOQooa~=3$#_Qm@UIii7UN?y2Mp{Qn~J zh1l2+*316jIS~J$L-A?1c4%v&yRQ3YoQr+H<=;AA;M3~Owa4J|AG;6y7XIIE{NBje zkyGf_(wmRpxYRR-tcSnHa;+9 z@XpWn7G31;gpucldCYP0-X0#}Kivz=PoG5>nrop|{mjEW{mcume$Z*OHm{{V*l{wi zd3FT<#6sx>i}eb7PiUXWey1OFs;%t9o9tD9u9cB~&5?pVuw za3Ak)!Q+{Mp1m_Yv0SxI+4qA0-PT$;xb8aD=*5c(=RGL2>cdZ5>s{hP!zb2!#`WH- z^5^{oW9+rFuk@GDLvG&EQJV52-r10k=F<;d_lievIsS(CeQKj%b=_Z=K8{=W<+AqV z{Hgin9AYm1(svHOS~l#;FTaaN-|ICG$f17FY1CwAe6G;i*AF0(=e$!ctsm&)9W(KX z#$2=Shzom2+Xf6f$XWDd{j}b?jQ3l})L8fu8%u53TBpuIoABs?u~(;O|7O4Qc@z1H zoPN-$8+5)9SKNtL?Eiu5xh`Ze{!Ja|gN!Bh@WGGEy5>zhFwZyJ!E+%E+SKF0Lk;c9 zh}J&9Huz0#ymw$;z_*17EuPKMWhegh*}Ujkd~Ln`4hH|D7ti^Q4fv00?l?BKlelqB zyy(@IF6K4!1RwN+PPNs~7h*m^qt6S%pIk#T<|BBF^@9+yY2S37LwkoRZx-HMckjSK z?LjZ}nT4m}3mpBRb8X~6+56ch)4In$vtYx@0{ zaGtgDsh8ZVMU1f@zti`FPPIjiS+_r1JnP6Fdz`Dt23LEJu$|c0zx|+_x;NlD+9Eul zk#03-(UURi&0aFVfj>Cg!e+jD-nq{?_aOUW2KwckA<2`puu6=-hSxS;uD9uh%u70X>oY z$&XYV}g`11?b_IGG#Ob0%B@MLt@fgJG83LhVDD(|_+kA^XZKiSiaaIQQl2xEK( z4P8IzRNA19qw5EqqScyQ;{*-9b9{AMb6|B+VhIkhqc6GphIM?Kc^;oHB%hco#uIw1 zzsxV^Mav5w#%(_%X>pKu`|Y<6&=d19OfoK%oSl9~(&AWe=WGkJeCMNc%ssgHU|VwW z4}Jnx>@U<4UY+LOly1T4Qq8ZU(K!R zXPyheanJjl+4;cwxI34SRdRM~{q?zzZ1r$%wqu#&YphXiexXN!O^*Ks&&hZ{x?{d> zO(ebSr}5ot=BE9!koQ7~_f=C}FPz_zBeH2lxWEr(k4+EUe>m#Y#tfKHFBH2=of*@c z4|;&El>7?St}V{hU_3cGLji&I^1F56}132FuY}QFY)M9$fdtdaPfuYisuV zbK###d3F6sp8lMObpYAq4`c9WjJd-50I$g&>otasH+ZbA z@FniXhZkeuTMzui7{0Si#w-h%{eu6obH0p)|GDN_kvd@=@jrOb`n?CRpv!keigVNi z=#U*T8s#qb8BR|Os8P$h#D2@*^GS5KPmHUf_}u)u^ds`&p%(Ajs8RkN2{7ptdseQ` zWPZgnUh2hX3OvuAOnuo;fGhs{8N;Xjpi^mU>NvU+KR==C{zQl0-+_BvyjDdA5B5;0 zL+roXv3?N3jCU~irA+qq;H$4Ok)8_;@A|om-@$h@puPA-lx5h<6L`ePV{~UV;aMR7Imw|_gaE~iO)*%CeKqw)B~;$H?eH5sXL}S zJfbH~hMA}4)c%dc>jyEe&qw9?tL4p_YCEt^ZQb_FHLyAsIAxu>Pcn$niTq9)^W<#4 zdu5)T6r8bz)a69J)AajU=^1MTwp;g+ZgsC<`RZ#PkVn>?@zdf1FY?Iap1-r`ndinc zyp@mNfm5R@JZ;fXr7eEjIzOg$Tn;CVZJZUemY?vdjh5>in57H8UQHQZOL-o_7t9}M z$UWnDPPNZHW7wvimx$f0@66%1F}}ZxL!L{YXO7|hAb_4t^5D7?P1wmbbXhwq?|#tW zsPR1p>J&aD_f%IGeYxVO7=k?kB1y`^o&jG{wL8GPdu9aiQ^Cx~oj^p_Fozpn5jx23Wbnd!$ z=)ktygwJ|-_7^8Q7eBJrkb8`m+>DqUur3RG+Z*wKPAzH~*Rnarr*?1Q*LZi@$YAev zB{GOhKj;)KY6X4@e}dl+I+a#^pxZ_3XJ4rgx$tXq_2S4!ZLW@eM6N!O_d(95XM|7n`mnCnCqv-tccLTku#L$ME*EZOxS>%jpMEjMh5K#(v{@%sS&++hJJo z&Hs~UhOm+S9K7j0hac0m=0o+N>$3a3{9A0CekLwEs_%;4cO&g8|ZfVUhk^9)8=ec9LjJRT(^a#FfeU!cx z4sGCN?PhJUj~F)`-fGm*$mxUyZ>|k5eR*HAlDy&JxdSforB{pZPH+v~C-1rTd^>+! z7g`$d=DPCz1LA>Q<_ApeLg}a9w`u8(+uGB;Kk1_0Yt{4XI z)^=*bvc|yg2c4#QpqjH)_qTpG0^U;MI~L@J`5QJDyms1dImU61?qisFk6}?0QvMi5 zo|`B0cg!<&^4=-dWbE-c>k4(mwj7om;)yQwl2`Ks7`k|$^le?s5Ak_w`U;q?Schg>ZJKjeb+!J8OXHu>l6jy1 zazY2;)pgpuE!Q~s$1sl-ord$)t@WXG1NP7Fx#vN8ei!ljd=^OkLcUaqn$!B)I(72- zO6uA2WNq^MP3XXH>0QU#F?5LU#7@fma{NR-$cN!8T}K_k&*ZrEj6U-cKaca#I)LX` z&g)t_2j8fP;>Q?zI2Ic@hQEQ?@4AdV0d%sh=Bs^xugA2&65oEk^!%T6OBY2$ew@|k zj`aPYQ?`5l!x`1Zd+WP@c&{aXv0-O!Zzs$+?wxb+_t>G-l^Blch$X&o&b4&NRUXxx zgSXc?^R_R=B67#Rr!RVMoriZ*!@_p!lsK}z#DLg}=dQV=cSi?S(~gDg*^h(Y4?5K~ zg=>9BN%{~o?6HmX=ta)h57xi2r^5shbPy(8LT4}9QzDDo);k_aBOTw}J=st#V4;?UcA*Sf--mrGeI_X`{;$z9bA4H_~ ziGTB)qhIf@I{tx=-nFi0*w}At57zZV*M0FjZ_+v5`*bws54wSeO~(8Eiw7TS@y;Zk z-z}j_@y8Z2>fQ=|@Sq0={qEB>Hui%~YB&G8gU8F&*1BS_L%-i$ef#j9tN!(Q%RZye zXrKkJ)o@xAOs9(eAM8{U7{XwMpRaVe!Q8))(FJ=QqFi`FMYa zt&BN$;Kx|2?+<_IxOkR^zrh#YRNusREXKb6!ZkMzfAp{Z;f8(f?==&%UrB!bpx+|> zllwAWUAHm$vyE{qp#R#@uRiqAfA+U-LL0|o?Bm-${6jZy-1=$Zl>D@axNLiJ-#%|acF%xhS`_MX?5cM;H2cdYgU_Az|0HTUh|-9_wY;7mU)#r z#CxypjHmUZ$M5QEt}-Xh-}B7)=4Jhmi4LA8+^fZN0M|>&muu5v_lo2ud`I8H4keCz zVCdD-8HUWpwy*`?S*C1?y&_|>Dd5ia?>+Cg;x}l2zW-BS!gly1Ud?^;`Uh`26VJVt zC0@I5zVVSiI7S@CIOy`e2R|5lM^+FD!t>O%UTDWC(^y!-Zz;)tazZjKy}^_RfV5XsPp2)&=_#9b#RWey=L@WUTcGb&k2@JhTnW z=a?JGM?T$U3x5+La$Y>x=OTMv*Pa8fYrYeHF8T49D>$1!UDi(Lm*2U)Lol_vXVE;2 z7)|-cyTv8*<8OY2e-EU-iv^#t)~;%^{9(JmnKcK<=gR~mpJQ+L6Qw?;UG+I#C^at& zth^7jFRM)X5LwG|4SR3H`$2=F#%Bhv(0=h``m!HJ2)bQ3J&D0PboTeg@K5XSng{uJ zn6L$#@HegXH|vq{se7yio^QggHE}a@i5y`~_nw9vaJ{pSG*s!#%Q(bkCGBI3c%=Ux z%KrSd$|vKX6ZXACrlV)di|-t9?fTN{VH)@}G(meQ-NrC@TBqwL-7}nb#1@!riQj8_ z55|1zhpzkfKkWw}8tVE%@3mig|ARg>RBPCHPI524v38I7zW3etT<`%8&vRWyEipcQ zKXl!ln?JJdLqk81%+=dpI{1LclgZrr;!D?kJef>#i1~oN?R?=r=S%hZ3DpjAlUidM zk1=oTv#8UVtNkE?ZcCpT`zZSJeWRN)pTO{Z_^Phqvnrja^VX>!y6zjdJY#s@gTJb) z(pW2*Q^JdP4UBsI><96G_eYNY@~h6@$T*GffsuIX#8=`OYa;fZIX%%?j?tm->O}439={m&C<9r?f+l}IBYuI; znBrRXq=ui?7~@OLwQg(O*=ftSe)EROUa;<{=;B>|)~U+7_~F)|rFH;!Jxd?OZ%M{6 zFwQF)zKLHy8^vZlOYf>_1#fFzvf{a=m5EK%2-j#}d-=NkKHd-F>&D*dkFl>CobXN2 z{af+3R%XMxcpkxD*dco=??QWP&^GYEOW(zBZ^nG>lh&8^zkTWVF36O>qP~(l&ewj> zP1kYu(e+%F?*yVV2emHNT4o%y!DD*@sQW`5$Fq(YPA_@!d}VoK8s|8;>>W1d%3hdt z!F-_MZ}wfKp7j-i9&eg>-0Q5&MVw-4*-MpYNhG`fW=R>x{;OUYB8y@k?KR z`-K1J!EJig?!W(7Yx5Jr!N!N}TYZkPtb6b2QXh1#>pild zaURfTi}ee7^XrEK;kPB_YNyXx1HdP?(eEuka;U}a2RLr&?4zug8obaPb-jd^wZ<{# zo^=R6agCpV;XC}onD+>LKaqR2uo1uRw()+x*A%VwF*bsajnO}ejV*3Jz|Qv3U)n}! z+4tKF#7S=PDvRoxr*Xke7O6f~o? zlQFNIy{?s4QF9rW|Le7GcdSL=mihLri(We!L)R&+i|@{nv(yj4D!)Q|YtS0bTm>)Z z@v&L^edAo0H6!^pGPl;L=f)f72m6nH&}me=`+=dT$&0dk{9(H z|IMP&Si}k3cHW(n?dAh5^_=@z_1yl#pVafIzsvI=dBfVTSVnJOD5vXt$@KC1xYjR= zhWE5jrPf;y^G6=KA8BHv914EMVO~K8p2yH-R;_=wa30P%&1cr!KUu8@2R&^6JTzGc zHGe9j&Ma;p1|(GxttqJg^nIOZYl$4V)ja)i5#wgL0A7x%Mj zKe6uzot}p8kwxuq^|7C0J&-J5t!&2S`?>3s%bsgFpKARZ?ZLxuexKLWAmZVp>j&NK zQG>9b_ymvb33yS1G@qj0pkqJiG@_qXugr_y^{UmarIF02F^PLs&6VbFeNqeiL8p=I zeqe}qnm)=q9C%os{m%Un`Ll&tPhjI(Nv!P;Y9(`FR;_e=Tq{8zes%x>>ag-|e<_@7e{vbAj45 z%a69T#q9?XRy(ox(zZfN?Xs=h+g7fZMz*?k0c-0=Tf2avJGsygIz0`2(1Y65>SI5< zb^&W;GY$^(VqVv4>XA*H+BK8gc?ue=0iu@zc=J@p3HQ`|*jWyUskUBRSUkk-6FWk!$Pby_0?)y##;a@OXYE(+|2C zHO+^b)5rlI{`7vA1PN=_MI{uUT|P15OPwNy<9dIc)^l)`|6MXrxcfw~?Q=#EE`1HUwiiF51aL6V4R!8Yj@%a7}Hn`{WZ1aGYM!jPUJ|#!X??bn9 zti@Z=7_}qkL-$f$@*8yM`y4-VH29^al}rVeZo8cVyEhDb1mHZ?%KG; zXCJ&NeHY*RUlu=X-ifnyqiq6a{5JRO13oJNhu;}9H^;drJ@y-yd_vcSpDjA$C;oR3 zV_Yi+@jW=}!#J{k`x_?*V2`CN)+b>6p9cI0%zjxC4r9O?~k!RfhYF$L)ZQLcmDFR_K@B+kHKs4<=gtM zlR6c!^an8X!zV9LjsZK)h2gfEEErF>zZ;VWt?S>F%gv-Rg4{=j)1(c5PN*Lh{W_8Iozvyhp(+Gp5> z&w#Z)TM=H^C!Ybc&&GO*PuCB7>qSh^CuC>rk?okw(#tWKr57>bT?(Fq2!dBwvIl>&$oUZi;nDYtPTfes*f8!lp3?qgu3|-8V z7$&UpBrenfeAUn`-KQ~N-__q(AU6G=lNvJVtrz^kbN;scw*|w$!0;omq>JY&VD0`J z-g(46kUb!W^sjXbeC+Y}6LeW&$g!;&kMAsy2kjU-(8fHmVK1J*9Fvzx-pW(t8TRF8 z(_*nhPhc%i{J4jn_4_fhJ@)vE=qf)v)$bw`cjKSksw$A%=@^=epyU8!~ z_V+mW4)se^1Mvwk@{?Zc*-|qWdOJ7ucNXg3I}~b_Yk!DG#aA7P{X03xK7yXVD*-Rs zaml_YnT)%x>axmKPQ;#VUW0zG3N1c?w$af%<2|kCN~gcgj31!kupfe7+UlG-q8M*$ z3|exL9)Ez#-pjID7(DGO@PJ{9W$H5g&Dir&U(2S~+EhP7w5-F@m-bE_zutAf*gwD9 z`p`YscF1pO=LWFkSN)G08vMul!+$)swg>+)-k85^-P1q7&`*8MA^V9OI3-xjr=0%_ zsl&U3FYV(yz4)6v2d^LWzpWmA%dwX~`{nC*efbl7kD#vA`mRNd4{I=b^Bs|*?{rVi z{A$Lk4*ej&sCmtw*LXuy_v^$4+boZG7Q8O@NY|xr{22^?Ki2X5D}rr^o;k-HX=(AB zVff2?6mb2l!S#n_r}50=uZq^|B)XuV=l0)BzQ{8ElK8VuK-cneEx>lIZSlS0sHY#B zEWne`$jp~D9$$mEB7QBN_C7Q5kk#T*|Hk|@zowu4Y!|u6sd%cLr*#h>d}h1xv2>}= zkSz>a!>}8FE@_Nw_BZB%@A$p6=4{y8$`#&JuSSPHX`tf}%h;ccOa~_df;4#;*JNDJdb4PqN|Cop1 z5#JVXM|>MR;@jfwh;QPFW!TRI_k&KOX1tf{8IyQeAMkQDg1FZ}1as#5}LV2QN&UJVvj)tA4aRdSH%aYol$DPL&QHgX8+F%Xl_t z%>P$;x6b8r7W{KD>DiBf$G!#mzR|ZZc!EO?0#l2ckB;C=&ssBA^BoE>cmivC#)VVsB|NF2 z?uA?DGqsEQ(!yPn+S>J0@gyeR1))Rn&laD%*SX%-Ibt`KjUCX=f)#$hv#~nq4w%k< zlZ;(;)b^q~F}8oPReP#k`10A6&KKuLKL~mHSzp}rLv%adzlnDLnAZDdYMigB1F8+N z2ggq9(XL^y(Yw^XFYi)Mr9bN2(z{e}d7m|}4u8?Gaf~aOVPhLd<|Mud+3L{;A5wFa zkFobm*mV6K1k_qZ-nF#gm$Y14E%%8pTsMTjhH1Ii;J@JAE zYXNHn{`CIxf2(QDo?9Nlu$dUjzwvzD(iwKOVCC z*xu5qRxf=;c;sC_=rn5ljR5GtvyUySA4bT!Wt}mw3yt%Vnq-*b7c~jI;)m(q=3+z|U8*KwlimgCJe`N)v7_#QGp;+-3C+#em)V!pBmZB}J9IsU2cMst z2%_KI>rh>|?9kRE_A%beEX!9smoH`Sykbu>8&-Th8#eg;693O?*IZmk8Q9`ycn(pC$RPtvQozUuhQ_P}KS#Lp2!oY3ey~qnwNGFC$*aEic9E+53Jv;TqSxG`&TX(Lphn~+pS-;%3^v1F6J7D6;`emG!xBUW)HQhM6jGSoY1LHYX^s!&m zWz2be;(7F`=K9xkP0e$jD1I6#zTw@C_#D{Q7&53KJky%bC(Ct>_dUAzp56HL#m~i; z%i=+-TRAu0{~Ph!Im7ThIBJW{Sjb^~R@_WuzSwVC>ds#Fe_H&AgK^CV8PaQ=&lATm z@W=i#onSTBtc&~>y5kGrr_w&>lfNtXs|6lwJ$4dH`hF<7pbv+JI`lFh<0*3cte3_@ zCh;(rd-><+B4L5rq-2piUyuqz}r~cR`k{$q0&1C4yVk|3+{bY z#58eX3NG(htkXMm{d}#x=j1oqrhYd|>j!Nf-+pZzx{aQ(xBl5XU&+B3y=eClLmIh2 zlb+ENHySuAd%#Qs4!)zA&M@<{ta;&#VWts>s?Ux%Wz4W$Eo9*v_>jMcn%~a6NcZf) zh&Qt42A#UCBbK3>wq%?80#n|UJr}+46uZcMs6BQ#d6KK~G=b zubQ#Yz=AJ$vv?}k1nD|tGLP{UxP{l&5n^y!_xJ$5*c7@nu@NYI!MJ=;}!3!Q^ULuRR1U<0e+4z;XIBqS@thlxC z*00!+u&V1Up7tv;XZaOB;aBpf^(*7Yb6nli_A7S7vz{2qHFQ2S5x+7#M?+>Y`-L9eg z@|yRp=+_TAsTGXUpV0bmyc7EW&NTV_%JEn~0FlMv!qWGH2BPu*0cqu3(3sY1{l653 zKeHyMSEUJi%t!S;gSMG|`*mGQhXX6Asr(kXj18VkXLap4!1YUHhw<$LWQ@mL#`Ov5!m|QpVPJG)J&Rl!krhK`AXaT@FaR@6#Lk7 zGeBO`;Eg`oH&j2O6Km*l;uyEsQ|9^@1|QeN23C3c`5Ku!`4#`oqABvq`^|IWk6k=d z)7WEjuU7X!_WflVd@8i^#}a&L_7kSFJJ&WAM4TB>AB0*1v{N$N(2Rn(?5wKJaHi1lJwaN@}L zarNM;MXVW@e`36iHTxCQ;lHF0T4KGDGFzU=AMaO;x0d*0UWm8;whKSEwTO7&2jf*< zO}v<6V|ek$_b=ju23CDAi>Gx!Ccd=~>|1DGyy*T=py{bFA)JK01+vvQIgi z_3&QZBdhUo)Isa9m;b3_Ee*1$7+qQuNOV13(|8K$v1XT0_x+qiRsZsK{k%$I~!8pFvE+r`=g9)845 zwU}#+9ctvYwC9qh(rUecmN^5A)~-Fg#|as^_W0c@IxvoJi7z_PyH?NT7=1tJG-~oe z)b!nWAH1pSe1u;09TmAobKlxU9*<$KdheY_iL?FXJr3_P{eH@0yw?-%0rOFQ)g0LC zeb;!tVhcL`@s+PV{`$;G#>fkLW6?^b)8-M4be7O%8&ACx?MenX@UK=!j z!*A;1Zv*fS|9}qO_c1?!TmR?k8h-QY`#~q|kEaLs#ZKeV_k&I&-HA2&jq#2g`M1Y> zKxJ8$e@%`7>j(a?zzf!WXowuzcWN@Vn|Q**a-d(9xqIPZ7x*;hny!|%8-BK%-}d?d I_n2`14;aD&j{pDw literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x69D13BAF.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x69D13BAF.ps_5_0.asm new file mode 100644 index 0000000000..74bbd28b5f --- /dev/null +++ b/src/games/endfield/deferred-lighting/0x69D13BAF.ps_5_0.asm @@ -0,0 +1,1342 @@ +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[239], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[5], immediateIndexed +dcl_constantbuffer CB4[4], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture3d (float,float,float,float) t9 +dcl_resource_texture2d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture2d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture2d (float,float,float,float) t23 +dcl_resource_texture2d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 27 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t24.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t25.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r2.xyw, r1.wwww, r3.xyxz +utof r4.xy, r0.xyxx +mul r4.zw, v0.xxxy, cb0[82].zzzw +mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r5.zw, r5.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) +mul r6.xyzw, -r5.yyyy, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw +mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r3.w, r5.y, cb0[1].z +mad r3.w, cb0[0].z, r5.x, r3.w +mad r3.w, cb0[2].z, r5.z, r3.w +add r3.w, r3.w, cb0[3].z +eq r6.x, l(0.000000), cb0[86].w +add r6.yzw, -r5.xxyz, cb0[44].xxyz +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r6.xyz, r6.xxxx, r6.yzwy, r7.xyzx +dp3 r6.w, r6.xyzx, r6.xyzx +max r7.w, r6.w, l(0.000000) +rsq r7.w, r7.w +mul r8.xyzw, r6.xyzw, r7.wwww +lt r9.x, l(0.000488), cb0[238].x +if_nz r9.x + sample_b_indexable(texture2d)(float,float,float,float) r9.yz, v1.xyxx, t23.zxyw, s1, cb0[108].x +else + mov r9.yz, l(0,1.000000,1.000000,0) +endif +lt r10.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[230].xyxx +if_nz r10.x + add r9.w, |r2.y|, |r2.x| + add r9.w, |r2.w|, r9.w + div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w + mul r10.xzw, |r2.xxyw|, r9.wwww + mul r11.xyz, r5.xyzx, cb0[233].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r9.w, r11.xyzx, t9.yzwx, s2, l(0.000000) + mul r11.xyzw, r10.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) + add r11.xyz, r11.zwzz, r11.xxyx + mad r10.xzw, r10.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r11.xxyz + mad r11.x, r9.w, l(2.000000), l(-1.000000) + mul r10.xzw, r10.xxzw, r11.xxxx + mov r11.x, |r2.y| + add r11.x, r11.x, l(-0.700000) + mul_sat r11.x, r11.x, l(4.000000) + mad r11.y, r11.x, l(-2.000000), l(3.000000) + mul r11.x, r11.x, r11.x + mul r11.x, r11.x, r11.y + add r11.y, -cb0[233].z, cb0[233].y + mad r11.x, r11.x, r11.y, cb0[233].z + mul r10.xzw, r10.xxzw, r11.xxxx +else + mov r10.xzw, l(0,0,0,0) + mov r9.w, l(0) +endif +mad r11.x, -r3.y, r1.w, l(-0.200000) +if_nz r10.y + mul r11.yzw, r2.xxyw, cb0[237].zzzz + mul r12.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[229].yyyy + mad r11.yzw, r11.yyzw, cb0[229].xxxx, r12.xxyz + max r10.y, -r2.y, l(0.000000) + min r10.y, r10.y, l(0.900000) + add r10.y, -r10.y, l(1.000000) + mul_sat r12.x, r11.x, l(-10.000000) + mad r12.y, r12.x, l(-2.000000), l(3.000000) + mul r12.x, r12.x, r12.x + mul r12.x, r12.x, r12.y + max r12.x, r12.x, l(0.100000) + min r12.x, r12.x, l(1.000000) + mul r10.y, r10.y, r12.x + mad r11.yzw, r11.yyzw, r10.yyyy, r5.xxyz + add r10.xyz, r10.xzwx, r11.yzwy + mul r11.yzw, r10.yyyy, cb3[1].xxyz + mad r10.xyw, cb3[0].xyxz, r10.xxxx, r11.yzyw + mad r10.xyz, cb3[2].xyzx, r10.zzzz, r10.xywx + add r10.xyz, r10.xyzx, cb3[3].xyzx + mad r12.x, r10.x, l(0.500000), cb3[4].x + mad r10.x, r10.y, l(0.500000), l(0.500000) + add r12.z, -r10.x, cb3[4].y + add r10.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r10.z, r10.z, l(0.000488) + sample_c_lz_indexable(texture2d)(float,float,float,float) r10.x, r10.xyxx, t8.xxxx, s4, r10.z +else + mov r10.x, l(1.000000) +endif +mov_sat r10.y, r2.y +add r10.z, l(1.000000), -cb0[234].w +mad r10.z, r10.y, r10.z, cb0[234].w +add r11.yz, r5.xxzx, -cb0[44].xxzx +max r10.w, |r11.z|, |r11.y| +mul r11.y, r10.x, r10.z +mul r11.z, l(0.050000), cb0[226].w +mad r11.w, -cb0[226].w, l(0.700000), r10.w +div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z +mul_sat r11.z, r11.z, r11.w +mad r11.w, r11.z, l(-2.000000), l(3.000000) +mul r11.z, r11.z, r11.z +mul r11.z, r11.z, r11.w +mad r10.x, -r10.z, r10.x, l(1.000000) +mad r10.x, r11.z, r10.x, r11.y +deriv_rty_fine r11.yzw, r5.zzxy +deriv_rtx_fine r12.xyz, r5.yzxy +mul r13.xyz, r11.yzwy, r12.xyzx +mad r11.yzw, r11.wwyz, r12.yyzx, -r13.xxyz +dp3 r11.y, r11.yzwy, r11.yzwy +max r11.y, r11.y, l(0.000000) +rsq r11.y, r11.y +mul_sat r11.y, r11.y, r11.z +mad r11.zw, cb0[227].zzzz, l(0.000000, 0.000000, 0.300000, 0.300000), l(0.000000, 0.000000, 0.686000, 0.687000) +add r12.x, |r3.w|, l(-15.000000) +mul_sat r12.x, r12.x, l(0.015000) +add r12.x, -r12.x, l(1.000000) +min r12.y, l(0.990000), cb0[232].w +max r11.z, r11.z, l(0.970000) +add r12.z, -r11.z, l(0.990000) +add r10.y, r10.y, -r11.z +div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r12.z +mul_sat r10.y, r10.y, r11.z +mad r11.z, r10.y, l(-2.000000), l(3.000000) +mul r10.y, r10.y, r10.y +add r12.z, r11.y, l(-0.991000) +mul r12.z, r12.z, l(111.111069) +max r12.z, r12.z, l(0.000000) +mad r12.w, r12.z, l(-2.000000), l(3.000000) +mul r12.z, r12.z, r12.z +mul r12.z, r12.z, r12.w +mad r12.w, r9.w, l(0.200000), l(0.800000) +ge r12.w, r12.w, r1.y +and r12.w, r12.w, l(0x3f800000) +mul r12.z, r12.w, r12.z +mad r10.y, r11.z, r10.y, r12.z +min r10.y, r10.y, l(1.000000) +add r11.z, -r12.y, cb0[232].w +add r10.y, -r12.y, r10.y +div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z +mul_sat r10.y, r10.y, r11.z +mad r11.z, r10.y, l(-2.000000), l(3.000000) +mul r10.y, r10.y, r10.y +mul r10.y, r10.y, r11.z +lt r11.z, l(0.000488), cb0[227].y +add r11.y, -r11.w, r11.y +mul_sat r11.y, r11.y, l(-1000.012878) +mad r11.w, r11.y, l(-2.000000), l(3.000000) +mul r11.y, r11.y, r11.y +mul r11.y, r11.y, r11.w +mad r11.w, r3.y, r1.w, l(0.500000) +mul_sat r11.w, r11.w, l(2.500000) +mad r12.y, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r12.y +mul r11.y, r11.w, r11.y +lt r11.y, l(0.000488), r11.y +and r11.y, r11.y, r11.z +if_nz r11.y + mul r11.yz, |r2.xxwx|, |r2.xxwx| + add r11.w, r11.z, r11.y + div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w + mul r11.yz, r11.wwww, r11.yyzy + mul r12.yzw, r2.yywx, l(0.000000, 0.000000, 1.000000, 0.000000) + mad r12.yzw, r2.xxyw, l(0.000000, 1.000000, 0.000000, 0.000000), -r12.yyzw + dp2 r11.w, r12.yzyy, r12.yzyy + rsq r11.w, r11.w + mul r12.yzw, r11.wwww, r12.yyzw + mul r13.xyz, r2.ywxy, r12.yzwy + mad r13.xyz, r12.wyzw, r2.wxyw, -r13.xyzx + dp3 r11.w, r13.xyzx, r13.xyzx + rsq r11.w, r11.w + mul r13.xyz, r11.wwww, r13.xzyx + mad r14.xyz, r5.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.314159, 0.314159, 0.314159, 0.000000) + round_ni r14.xyz, r14.xyzx + add r14.xyz, r14.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + add r14.xy, r14.yyyy, r14.xzxx + mul r14.xy, r14.xyxx, l(0.000977, 0.000977, 0.000000, 0.000000) + ge r14.zw, r14.xxxy, -r14.xxxy + frc r14.xy, |r14.xyxx| + movc r14.xy, r14.zwzz, r14.xyxx, -r14.xyxx + mul r14.xy, r14.xyxx, l(1024.000000, 1024.000000, 0.000000, 0.000000) + dp2 r11.w, r14.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + ge r14.xy, r2.wxww, l(0.000000, 0.000000, 0.000000, 0.000000) + movc r14.xy, r14.xyxx, l(1.000000,-1.000000,0,0), l(-1.000000,1.000000,0,0) + mul r14.xy, r5.xzxx, r14.xyxx + mul r12.w, r9.w, r11.w + add r14.w, -r11.w, l(1.000000) + mad r14.w, r14.w, l(0.700000), l(0.300000) + mul r15.xy, r12.wwww, l(3.000000, 6.000000, 0.000000, 0.000000) + mad r12.w, -cb0[227].x, r14.w, r15.x + frc r16.x, r12.w + mad r12.w, cb0[227].x, l(-0.300000), r15.y + frc r16.y, r12.w + mul r11.w, r11.w, l(5.000000) + round_ni r11.w, r11.w + add r15.x, r11.w, l(1.000000) + mul r15.y, r5.y, r15.x + mov r5.w, l(0.100000) + mul r15.xy, r5.ywyy, r15.xyxx + frc r15.xy, r15.xyxx + add r15.zw, r16.xxxy, l(0.000000, 0.000000, -1.000000, -1.000000) + add r15.zw, -r15.zzzw, r15.xxxy + add r15.zw, r15.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) + mul_sat r15.zw, r15.zzzw, l(0.000000, 0.000000, 5.000000, 5.000000) + mad r16.zw, r15.zzzw, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) + mul r15.zw, r15.zzzw, r15.zzzw + mul r15.zw, r15.zzzw, r16.zzzw + add r16.zw, -r15.xxxy, r16.xxxy + max r15.zw, r15.zzzw, r16.zzzw + add r17.xy, -r16.xyxx, r15.xyxx + add r17.xy, r17.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) + mul r17.xy, r17.xyxx, l(5.000000, 5.000000, 0.000000, 0.000000) + max r17.xy, r17.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r17.zw, r17.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) + mul r17.xy, r17.xyxx, r17.xyxx + mul r17.xy, r17.xyxx, r17.zwzz + add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + max r16.zw, r16.zzzw, r17.xxxy + ge r15.xy, r15.xyxx, r16.xyxx + and r15.xy, r15.xyxx, l(0x3f800000, 0x3f800000, 0, 0) + add r16.xy, -r15.zwzz, r16.zwzz + mad r15.xy, r15.xyxx, r16.xyxx, r15.zwzz + mad r11.w, r15.x, r15.x, l(-0.400000) + mul_sat r11.w, r11.w, l(1.666667) + mad r12.w, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.w + mad r12.w, r15.y, l(2.000000), l(-1.000000) + mul r14.w, r11.w, l(0.010000) + mul r15.x, r12.w, r14.w + mad r16.x, r9.w, l(0.100000), r15.x + mul r14.w, r11.w, r14.w + mad r14.w, r14.w, r12.w, r9.w + mul r16.y, r9.w, r14.w + mov r14.z, r5.y + mad r14.xyzw, r14.yzxz, cb0[228].xyxy, r16.xyxy + sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r14.xyxx, t10.xyzw, s2, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r14.xyzw, r14.zwzz, t10.xyzw, s2, cb0[108].x + mul r14.xyzw, r11.zzzz, r14.xyzw + mad r14.xyzw, r16.xyzw, r11.yyyy, r14.xyzw + mad r11.yz, r14.xxyx, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + mad r14.x, r11.w, l(2.000000), l(-1.000000) + mad_sat r14.x, r14.x, l(0.800000), r15.y + mad r14.y, -r14.w, l(0.500000), l(1.000000) + mad r14.x, r14.x, r14.y, l(-0.700000) + mul_sat r14.x, r14.x, l(3.333333) + mad r14.y, r14.x, l(-2.000000), l(3.000000) + mul r14.x, r14.x, r14.x + mul r14.x, r14.x, r14.y + mul r12.w, r12.w, r14.w + mad_sat r11.w, r12.w, l(0.500000), r11.w + mad r11.w, r11.w, l(0.500000), l(0.100000) + max r11.w, r11.w, r14.x + add r12.w, -r11.w, l(1.000000) + max r12.w, r12.w, l(0.000000) + mul r14.x, r12.w, r12.w + mul r14.x, r14.x, r14.x + mul r12.w, r12.w, r14.x + ge r12.w, r14.z, r12.w + and r12.w, r12.w, l(0x3f800000) + mad r11.w, r11.w, l(0.700000), l(0.200000) + mad r11.w, r12.w, r11.w, l(0.100000) + mul r11.w, r14.z, r11.w + mul r11.w, r11.w, cb0[227].y + mul r11.w, r11.w, l(0.330000) + ge r12.w, r1.z, l(0.045000) + and r12.w, r12.w, l(0x3f800000) + mul r12.w, r10.x, r12.w + mul r12.w, r12.w, cb0[226].x + mul r12.w, r12.x, r12.w + mul r11.w, r11.w, r12.w + dp2 r12.w, r11.yzyy, r11.yzyy + min r12.w, r12.w, l(1.000000) + add r12.w, -r12.w, l(1.000000) + sqrt r12.w, r12.w + max r12.w, r12.w, l(0.000488) + mul_sat r14.x, r11.w, l(10.000000) + mad r14.y, r14.x, l(-2.000000), l(3.000000) + mul r14.x, r14.x, r14.x + mul r14.x, r14.x, r14.y + mul r14.x, r14.x, cb0[227].y + mul r14.xy, r11.yzyy, r14.xxxx + add r11.y, l(-1.500000), cb0[227].y + mul_sat r11.y, r11.y, l(0.666667) + mad r11.z, r11.y, l(-2.000000), l(3.000000) + mul r11.y, r11.y, r11.y + mul r11.y, r11.y, r11.z + mul r11.z, r11.y, l(-0.200000) + mad r11.y, -r11.y, l(-0.200000), r12.w + mad r14.z, r11.w, r11.y, r11.z + dp3 r11.y, r14.xyzx, r14.xyzx + max r11.y, r11.y, l(0.000000) + rsq r11.y, r11.y + mul r14.xyz, r11.yyyy, r14.xyzx + mov r15.x, r12.z + mov r15.y, r13.x + mov r15.z, r2.x + dp3 r15.x, r15.xyzx, r14.xyzx + mov r13.w, r2.y + dp2 r15.y, r13.zwzz, r14.yzyy + mov r13.x, r12.y + mov r13.z, r2.w + dp3 r15.z, r13.xyzx, r14.xyzx + mad r3.xyz, -r3.xyzx, r1.wwww, r15.xyzx + mad r13.xyz, r11.wwww, r3.xyzx, r2.xywx + mul r1.w, r11.w, cb0[227].y + mul r1.w, r1.w, l(0.330000) +else + mov r13.xyz, r2.xywx + mov r1.w, l(0) +endif +lt r3.x, l(0.000488), r10.y +if_nz r3.x + mul r3.xy, -r5.xzxx, cb0[232].xyxx + frc r11.yz, r3.xxyx + lt r12.yz, l(0.000000, 0.000488, 0.000488, 0.000000), cb0[231].yywy + if_nz r12.y + round_ni r3.xy, r3.xyxx + mul r3.xy, r3.xyxx, l(0.000977, 0.000977, 0.000000, 0.000000) + ge r12.yw, r3.xxxy, -r3.xxxy + frc r3.xy, |r3.xyxx| + movc r3.xy, r12.ywyy, r3.xyxx, -r3.xyxx + mul r3.xy, r3.xyxx, l(1024.000000, 1024.000000, 0.000000, 0.000000) + dp2 r3.x, r3.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r3.x, null, r3.x + mul r3.x, r3.x, l(43758.546875) + frc r3.x, r3.x + add r3.y, r3.x, cb0[231].x + frc r3.y, r3.y + mul r3.z, cb0[232].z, cb0[232].z + mul r3.y, r3.z, r3.y + round_ni r3.y, r3.y + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[232].z + ge r3.x, l(0.500000), r3.x + and r3.x, r3.x, l(0x3f800000) + add r12.yw, -r11.yyyz, r11.zzzy + mad r11.yz, r3.xxxx, r12.yywy, r11.yyzy + div r3.x, r3.y, cb0[232].z + ge r11.w, r3.x, -r3.x + frc r3.x, |r3.x| + movc r3.x, r11.w, r3.x, -r3.x + mul r3.x, r3.x, cb0[232].z + mul r14.x, r3.x, r3.z + add r3.x, l(-1.000000), cb0[232].z + mul r3.y, r3.z, r3.y + round_ni r3.y, r3.y + add r3.x, -r3.y, r3.x + mul r14.y, r3.x, r3.z + mad r3.xy, r11.yzyy, r3.zzzz, r14.xyxx + frc r3.xy, r3.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r3.xy, r3.xyxx, t11.xyzw, s1, cb0[108].x + mul r3.xy, r3.xyxx, cb0[231].yyyy + mad r3.xy, r3.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[231].yyyy + else + mov r3.xy, l(0,0,0,0) + endif + if_nz r12.z + mov r14.xw, l(0,0,0,0.500000) + mov r14.y, cb0[231].z + mad r11.yz, -r5.xxzx, cb0[232].xxyx, r14.xxyx + mul r14.z, r9.w, l(0.500000) + add r11.yz, r11.yyzy, r14.zzwz + add r11.yz, r11.yyzy, l(0.000000, -0.500000, -0.500000, 0.000000) + sample_b_indexable(texture2d)(float,float,float,float) r14.xy, r11.yzyy, t11.zwxy, s2, cb0[108].x + mov r15.xz, cb0[231].zzwz + mov r15.y, l(0) + mad r11.yz, -r5.xxzx, cb0[232].xxyx, -r15.xxyx + add r15.y, -r9.w, l(1.000000) + mov r15.x, l(0.500000) + mad r12.yz, l(0.000000, 1.000000, 0.500000, 0.000000), r15.xxyx, l(0.000000, -0.500000, -0.500000, 0.000000) + add r11.yz, r11.yyzy, -r12.yyzy + sample_b_indexable(texture2d)(float,float,float,float) r14.zw, r11.yzyy, t11.xyzw, s2, cb0[108].x + mul r14.xyzw, r14.xyzw, cb0[231].wwww + mad r14.xyzw, r14.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -r15.zzzz + mul r14.xyzw, r9.wwww, r14.xyzw + add r11.yz, r14.zzwz, r14.xxyx + add r3.xy, r3.xyxx, r11.yzyy + endif + mul r11.y, r2.z, l(0.300000) + mad r11.y, r9.w, l(0.700000), r11.y + add r11.z, r2.z, l(-0.100000) + mul_sat r11.z, r11.z, l(100.000000) + mul r11.y, r11.z, r11.y + mul r11.z, r1.y, r11.y + min r11.z, r11.z, l(0.990000) + mad_sat r11.y, r11.y, r1.y, l(0.600000) + add r11.y, -r11.z, r11.y + add r11.z, -r11.z, cb0[232].w + div r11.y, l(1.000000, 1.000000, 1.000000, 1.000000), r11.y + mul_sat r11.y, r11.y, r11.z + mad r11.z, r11.y, l(-2.000000), l(3.000000) + mul r11.y, r11.y, r11.y + mul r11.y, r11.y, r11.z + mul r10.y, r10.y, cb0[226].x + dp2 r11.z, r3.xyxx, r3.xyxx + min r11.z, r11.z, l(1.000000) + add r11.z, -r11.z, l(1.000000) + sqrt r11.z, r11.z + max r3.z, r11.z, l(0.000488) + dp3 r11.z, r3.xyzx, r3.xyzx + rsq r11.z, r11.z + mul r3.xyz, r3.yzxy, r11.zzzz + mul r11.z, r3.y, l(1.000000) + mul r11.w, r11.y, r10.y + mul r11.w, r10.x, r11.w + mul r11.w, r12.x, r11.w + mad r3.xyz, r3.xyzx, l(1.000000, 1.000000, -1.000000, 0.000000), -r2.xywx + mad r13.xyz, r11.wwww, r3.xyzx, r2.xywx + mul r3.x, r1.y, l(0.200000) + add r3.y, -r9.w, l(1.000000) + mul r3.y, r3.y, cb0[232].w + mul r3.z, r3.y, l(0.500000) + mad r3.y, -r3.y, l(0.500000), l(1.000000) + mad r3.y, r11.y, r3.y, r3.z + add r3.z, l(-0.600000), cb0[232].w + mul_sat r3.z, r3.z, l(2.500000) + mad r9.w, r3.z, l(-2.000000), l(3.000000) + mul r3.z, r3.z, r3.z + mul r3.z, r3.z, r9.w + mad_sat r3.y, r3.z, l(0.600000), r3.y + mul r3.y, r3.y, r10.y + mul r3.y, r11.z, r3.y + div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.x + mul_sat r3.x, r3.x, r3.y + mad r3.y, r3.x, l(-2.000000), l(3.000000) + mul r3.x, r3.x, r3.x + mul r3.x, r3.x, r3.y + mul r3.x, r10.x, r3.x + mul r3.x, r12.x, r3.x + max r3.x, r3.x, l(0.000000) +else + mov r3.x, l(0) +endif +min r3.y, r9.z, r9.y +mul r3.z, r10.z, cb0[234].z +mad r9.w, -cb0[234].z, r10.z, l(1.000000) +mad r3.z, r10.x, r9.w, r3.z +mad r9.w, cb0[234].x, cb0[226].w, -cb0[226].w +add r10.x, r10.w, -cb0[226].w +div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w +mul_sat r9.w, r9.w, r10.x +mad r10.x, r9.w, l(-2.000000), l(3.000000) +mul r9.w, r9.w, r9.w +mul r9.w, r9.w, r10.x +add r10.x, -r3.z, cb0[234].y +mad r3.z, r9.w, r10.x, r3.z +add r3.z, -r3.z, l(1.000000) +mul r9.w, r3.z, r9.y +add r1.z, r1.z, l(-0.050000) +add r10.x, -r2.z, l(1.000000) +mad_sat r10.y, r10.x, cb0[226].z, cb0[226].y +mad r10.y, r1.w, cb0[228].z, r10.y +mul r10.z, r2.z, r3.x +mad_sat r10.y, r10.z, l(0.100000), r10.y +add r10.z, -r10.y, l(1.000000) +mad r10.y, r1.x, r10.z, r10.y +mul_sat r10.z, r11.x, l(3.333333) +mad r10.w, r10.z, l(-2.000000), l(3.000000) +mul r10.z, r10.z, r10.z +mad r10.z, -r10.w, r10.z, l(1.000000) +mul r10.w, r10.y, cb0[226].x +add r11.x, -r1.x, l(1.000000) +mul r10.w, r10.w, r11.x +mul r10.w, r10.z, r10.w +mad r10.w, r10.w, l(-0.750000), l(1.000000) +mad r10.y, r10.y, l(-0.300000), l(0.900000) +sqrt r11.x, r10.x +add r10.y, r10.y, r11.x +add_sat r10.y, r10.y, l(-0.600000) +max r10.y, r10.x, r10.y +min r10.y, r10.y, l(0.990000) +add_sat r11.x, l(2.000000), -cb0[226].x +mul r11.x, r11.x, cb0[226].x +mul r10.z, r10.z, r11.x +mad r3.z, -r9.y, r3.z, l(1.000000) +mul r3.z, r3.z, r10.z +add r9.y, -r10.x, r10.y +mad r3.z, r3.z, r9.y, r10.x +add r3.z, -r3.z, l(1.000000) +mul_sat r1.zw, r1.zzzw, l(0.000000, 0.000000, 1.052600, 20.000000) +mad r9.y, r1.w, l(-2.000000), l(3.000000) +mul r1.w, r1.w, r1.w +mul r1.w, r1.w, r9.y +max r1.w, r1.w, r3.x +mad r1.w, r1.w, l(-0.900000), l(1.000000) +mul r3.x, r1.w, r3.z +add r9.y, r9.z, l(-1.000000) +mad r10.x, r1.z, r9.y, l(1.000000) +add r10.y, -r1.z, l(1.000000) +movc r9.xy, r9.xxxx, r10.xyxx, l(1.000000,1.000000,0,0) +min r1.z, r3.x, r9.x +mad r1.w, r3.z, r1.w, -r1.z +mad r1.z, r3.y, r1.w, r1.z +add r1.w, -r1.z, r2.z +mad r10.z, r9.w, r1.w, r1.z +ld_indexable(texture2d)(float,float,float,float) r11.xyz, r0.xyzz, t26.xyzw +min r1.z, r10.w, r9.y +add r1.w, -r1.z, r10.w +mad r1.z, r3.y, r1.w, r1.z +add r1.w, -r1.z, l(1.000000) +mad r1.z, r9.w, r1.w, r1.z +mul r3.xyz, r1.zzzz, r11.xyzx +mul r9.xyz, r1.xxxx, r3.xyzx +mad r9.xyz, r11.xyzx, r1.zzzz, -r9.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz +dp3 r2.z, r13.xyzx, r8.xyzx +max r11.x, r2.z, l(0.000000) +mul r3.y, r10.z, r10.z +mul r12.x, r11.x, r11.x +mul r12.z, r11.x, r12.x +mul r2.z, r3.y, r3.y +mul r3.z, r3.y, r2.z +mov r11.yzw, l(0,0.036546,9.063200,0.990440) +dp2 r14.x, l(3.327070, 1.000000, 0.000000, 0.000000), r11.xyxx +dp2 r14.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r11.xzxx +mov r3.x, l(1.000000) +dp2 r9.w, r14.xyxx, r3.xyxx +mov r12.yw, l(0,9.044010,0,1.000000) +dp3 r14.x, l(3.596850, -1.367720, 1.000000, 0.000000), r12.xzwx +dp3 r14.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r12.xyzx +mov r15.x, l(5.565890) +mov r15.yz, r12.xxzx +dp3 r14.z, l(1.000000, 19.788601, -20.212299, 0.000000), r15.xyzx +dp3 r10.w, r14.xyzx, r3.xyzx +div r9.w, r9.w, r10.w +dp2 r14.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r11.xwxx +mov r12.x, l(1.296780) +mov r12.y, r11.x +dp2 r14.y, l(1.000000, -0.755907, 0.000000, 0.000000), r12.xyxx +dp2 r10.w, r14.xyxx, r3.xyxx +dp3 r14.x, l(2.923380, 59.418800, 1.000000, 0.000000), r12.yzwy +mov r12.xw, l(20.322500,0,0,121.563004) +dp3 r14.y, l(1.000000, -27.030199, 222.591995, 0.000000), r12.xyzx +dp3 r14.z, l(626.130005, 316.627014, 1.000000, 0.000000), r12.yzwy +dp3 r3.x, r14.xyzx, r3.xyzx +div r3.x, r10.w, r3.x +mad r11.yzw, r1.xxzw, r9.wwww, r3.xxxx +add r3.x, r3.x, r9.w +ld_indexable(texture2d)(float,float,float,float) r3.y, r0.xyzz, t6.zxyw +lt r0.z, l(0.001000), r3.y +if_nz r0.z + dp3 r0.z, -r8.xyzx, r13.xyzx + add r0.z, r0.z, r0.z + mad r12.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx + dp3 r0.z, -cb2[0].xyzx, r12.xyzx + mad r14.xyz, cb2[0].xyzx, r0.zzzz, r12.xyzx + lt r0.z, r0.z, cb2[4].z + dp3 r9.w, r14.xyzx, r14.xyzx + max r9.w, r9.w, l(0.000061) + rsq r9.w, r9.w + mul r14.xyz, r9.wwww, r14.xyzx + mul r14.xyz, r14.xyzx, cb2[4].yyyy + mad r14.xyz, -cb2[0].xyzx, cb2[4].zzzz, r14.xyzx + dp3 r9.w, r14.xyzx, r14.xyzx + rsq r9.w, r9.w + mul r14.xyz, r9.wwww, r14.xyzx + movc r12.xyz, r0.zzzz, r14.xyzx, r12.xyzx + mad r6.xyz, r6.xyzx, r7.wwww, r12.xyzx + dp3 r0.z, r6.xyzx, r6.xyzx + max r0.z, r0.z, l(0.000061) + rsq r0.z, r0.z + mul r6.xyz, r0.zzzz, r6.xyzx + dp3_sat r10.x, r12.xyzx, r13.xyzx + dp3_sat r0.z, r13.xyzx, r6.xyzx + min r10.y, r11.x, l(1.000000) + mad r9.w, r0.z, r2.z, -r0.z + mad r0.z, r9.w, r0.z, l(1.000000) + dp3_sat r6.x, r8.xyzx, r6.xyzx + add r6.x, -r6.x, l(1.000000) + mul r6.y, r6.x, r6.x + mul r6.y, r6.y, r6.y + mul r6.z, r6.x, r6.y + add r9.w, -r10.z, l(1.000000) + mad r10.w, -r9.w, l(0.383026), l(-0.076195) + mad r10.w, r9.w, r10.w, l(1.049970) + mad r9.w, r9.w, r10.w, l(0.409255) + min r9.w, r9.w, l(0.999000) + add r10.w, -r9.w, l(1.000000) + add r14.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r14.xyz, r14.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r1.xzwx + mad r6.x, -r6.y, r6.x, l(1.000000) + mad r6.xyz, r1.xzwx, r6.xxxx, r6.zzzz + mul r0.z, r0.z, r0.z + div r0.z, r2.z, r0.z + mad r15.xy, -r10.yxyy, r2.zzzz, r10.yxyy + mad r15.xy, r15.xyxx, r10.yxyy, r2.zzzz + sqrt r15.xy, r15.xyxx + mul r15.xy, r10.xyxx, r15.xyxx + add r2.z, r15.y, r15.x + add r2.z, r2.z, l(0.000100) + div r2.z, l(0.500000), r2.z + mul r0.z, r0.z, r2.z + mul r6.xyz, r0.zzzz, r6.xyzx + min r6.xyz, r6.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r15.xyzw, r10.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r15.xyxx, t12.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r15.zwzz, t12.yzxw, s1, l(0.000000) + mul r0.z, r0.z, r2.z + mul r0.z, r9.w, r0.z + div r0.z, r0.z, r10.w + mul r15.xyz, r14.xyzx, r14.xyzx + mul r15.xyz, r0.zzzz, r15.xyzx + mad r14.xyz, -r14.xyzx, r10.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r14.xyz, r15.xyzx, r14.xyzx + add r6.xyz, r6.xyzx, r14.xyzx + mul r6.xyz, r6.xyzx, cb2[4].xxxx + max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r6.xyz, r6.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + dp3_sat r0.z, r12.xyzx, r2.xywx + mul r12.xyz, r0.zzzz, r9.xyzx + mad r6.xyz, r6.xyzx, r10.xxxx, r12.xyzx + mul r6.xyz, r6.xyzx, cb2[1].xyzx + mov r3.z, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r10.xyw, r3.yzyy, t7.xywz, s1, cb0[108].x + add r0.z, -r3.y, l(1.000000) + mad r10.xyw, r6.xyxz, r10.xyxw, -r6.xyxz + mad r6.xyz, r0.zzzz, r10.xywx, r6.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t13.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r6.xyz, r0.zzzz, r6.xyzx +else + mov r6.xyz, l(0,0,0,0) +endif +ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r3.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + dp3 r2.z, r2.xywx, r8.xyzx + max r2.z, r2.z, l(0.000000) + add r2.z, r0.z, r2.z + mad r3.y, r10.z, l(-16.000000), l(-1.000000) + exp r3.y, r3.y + log r2.z, |r2.z| + mul r2.z, r2.z, r3.y + exp r2.z, r2.z + add r2.z, r0.z, r2.z + add r2.z, r2.z, l(-1.000000) + mov_sat r10.xyw, r2.zzzz + mad r12.xyz, r9.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r9.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r9.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + max r12.xyz, r0.zzzz, r12.xyzx +else + mov r10.xyw, r1.yyyy + mov r12.xyz, r1.yyyy +endif +mad r14.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[216].x +mad r15.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx +dp2 r0.z, r15.xyxx, l(0.067111, 0.005837, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r14.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r14.xyzx +mad r15.xyz, cb0[6].xzyx, -cb0[216].wwww, cb0[214].xzyx +add r15.xyz, r14.xzyx, -r15.xyzx +max r0.z, |r15.y|, |r15.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.y, |r15.z|, l(-208.000000) +mul_sat r1.y, r1.y, l(0.031250) +max r0.z, r0.z, r1.y +ne r1.y, l(0.000000), cb0[214].w +lt r2.z, r0.z, l(1.000000) +and r1.y, r1.y, r2.z +if_nz r1.y + mad r15.xyz, cb0[6].xzyx, -cb0[216].yyyy, cb0[214].xzyx + add r15.xyz, r14.xzyx, -r15.xyzx + max r1.y, |r15.y|, |r15.x| + add r1.y, r1.y, l(-29.000000) + mul_sat r1.y, r1.y, l(0.500000) + add r2.z, |r15.z|, l(-13.000000) + mul_sat r2.z, r2.z, l(0.500000) + max r1.y, r1.y, r2.z + lt r2.z, r1.y, l(1.000000) + if_nz r2.z + mad r15.xyz, r14.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r16.xyz, r15.xyzx, cb0[215].xyzx + round_ni r16.xyz, r16.xyzx + mad r15.xyz, r15.xyzx, cb0[215].xyzx, -r16.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r16.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) + add r2.z, -r1.y, l(1.000000) + mul r3.y, l(0.500000), cb0[215].y + mad r9.w, -cb0[215].y, l(0.500000), l(1.000000) + max r3.y, r3.y, r15.y + min r3.y, r9.w, r3.y + mul r15.w, r3.y, l(0.333333) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) + mad r3.y, r17.w, r2.z, r0.z + add r18.xyz, r15.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r16.yyyy, r18.xyzx + mov r18.w, r16.y + mul r18.xyzw, r2.zzzz, r18.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r16.xxxx, r15.xyzx + mov r15.w, r16.x + mul r15.xyzw, r2.zzzz, r15.xyzw + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r16.wwww, r17.xyzx + mul r16.xyzw, r2.zzzz, r16.xyzw + else + mov r18.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r3.y, r0.z + endif + mad r17.xyz, cb0[6].xzyx, -cb0[216].zzzz, cb0[214].xzyx + add r17.xyz, r14.xzyx, -r17.xyzx + max r2.z, |r17.y|, |r17.x| + add r2.z, r2.z, l(-116.000000) + mul_sat r2.z, r2.z, l(0.125000) + add r9.w, |r17.z|, l(-52.000000) + mul_sat r9.w, r9.w, l(0.125000) + max r2.z, r2.z, r9.w + lt r9.w, r2.z, l(1.000000) + if_nz r9.w + mad r17.xyz, r14.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r19.xyz, r17.xyzx, cb0[215].xyzx + round_ni r19.xyz, r19.xyzx + mad r17.xyz, r17.xyzx, cb0[215].xyzx, -r19.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r17.xyzx, t19.yzwx, s2, l(0.000000) + add r9.w, -r2.z, l(1.000000) + mul r1.y, r1.y, r9.w + mul r9.w, l(0.500000), cb0[215].y + mad r11.x, -cb0[215].y, l(0.500000), l(1.000000) + max r9.w, r9.w, r17.y + min r9.w, r11.x, r9.w + mul r17.w, r9.w, l(0.333333) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t20.xyzw, s1, l(0.000000) + mad r3.y, r20.w, r1.y, r3.y + add r21.xyz, r17.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t20.xyzw, s1, l(0.000000) + mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r19.yyyy, r21.xyzx + mov r21.w, r19.y + mad r18.xyzw, r21.xyzw, r1.yyyy, r18.xyzw + add r17.xyz, r17.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t20.xyzw, s1, l(0.000000) + mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r19.xxxx, r17.xyzx + mov r17.w, r19.x + mad r15.xyzw, r17.xyzw, r1.yyyy, r15.xyzw + mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r19.wwww, r17.xyzx + mad r16.xyzw, r19.xyzw, r1.yyyy, r16.xyzw + endif + lt r1.y, l(0.000000), r2.z + if_nz r1.y + mad r14.xyz, r14.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r14.xyzx, cb0[215].xyzx + mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[215].xyzx + round_ni r17.xyz, r17.xyzx + mad r14.xyz, r14.xyzx, cb0[215].xyzx, -r17.xyzx + mad r17.xyz, -cb0[215].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r14.xyz, r19.xyzx, r14.xyzx + min r14.xyz, r17.xyzx, r14.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r14.xyzx, t21.yzwx, s2, l(0.000000) + add r1.y, -r0.z, l(1.000000) + mul r1.y, r1.y, r2.z + max r2.z, r19.y, r14.y + min r2.z, r17.y, r2.z + mul r14.w, r2.z, l(0.333333) + sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r14.xwzx, t22.xyzw, s1, l(0.000000) + add r19.xyz, r14.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r20.yyyy, r19.xyzx + mov r19.w, r20.y + mad r18.xyzw, r19.xyzw, r1.yyyy, r18.xyzw + add r14.xyz, r14.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t22.xyzw, s1, l(0.000000) + mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r14.xyz, r20.xxxx, r14.xyzx + mov r14.w, r20.x + mad r15.xyzw, r14.xyzw, r1.yyyy, r15.xyzw + mad r14.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r14.xyzx + mad r16.xyzw, r20.xyzw, r1.yyyy, r16.xyzw + mad r3.y, r17.w, r1.y, r3.y + endif + mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) + add r14.x, -r0.z, r1.y + add r0.z, r0.z, r1.y + mul r14.y, r0.z, l(0.500000) +else + mov r18.xyzw, l(0,0,0,0) + mov r15.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r14.xy, l(0,1.000000,0,0) +endif +mul r17.xyzw, r14.yxyy, cb0[217].ywzx +mad r17.y, r17.y, l(0.500000), r17.x +mul r14.zw, r14.yyyx, cb0[217].wwwy +mad r17.x, r14.w, l(0.375000), r14.z +add r16.xyzw, r16.xyzw, r17.wyzx +mul r17.xyzw, r14.yxyy, cb0[218].ywzx +mad r17.y, r17.y, l(0.500000), r17.x +mul r14.zw, r14.yyyx, cb0[218].wwwy +mad r17.x, r14.w, l(0.375000), r14.z +add r15.xyzw, r15.xyzw, r17.wyzx +mul r17.xyzw, r14.yxyy, cb0[219].ywzx +mad r17.y, r17.y, l(0.500000), r17.x +mul r14.xy, r14.yxyy, cb0[219].wyww +mad r17.x, r14.y, l(0.375000), r14.x +add r14.xyzw, r17.wyzx, r18.xyzw +ge r17.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r17.y, r17.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r4.zwzz, t16.xyzw, s1, l(0.000000) + lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| + or r4.zw, r18.zzzw, r18.xxxy + or r0.z, r4.w, r4.z + if_nz r0.z + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mov r4.z, l(1.000000) + mov r4.w, r0.z + mov r1.y, l(0) + loop + ge r2.z, l(4.600000), r4.w + breakc_nz r2.z + iadd r2.z, r1.y, l(1) + mul r18.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r4.zw, r18.xxxy + mov r1.y, r2.z + continue + endloop + mul r17.xyzw, r4.zzzz, r17.xyzw + dp3 r0.z, r17.yzwy, r17.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb4[3].x, cb4[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r18.x, r0.z, l(0.003906) + mov r18.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r18.xyxx, t15.zwxy, s1, l(0.000000) + mad r4.zw, r4.zzzw, cb4[2].xxxy, cb4[2].zzzw + mul r18.x, r4.z, l(3.544908) + mul r18.yzw, r4.wwww, r17.yyzw + mul r0.z, r17.x, l(0.406977) + exp r0.z, r0.z + mul r17.xyzw, r0.zzzz, r18.xyzw + mov r18.xyzw, r17.xyzw + mov r0.z, l(0) + loop + uge r2.z, r0.z, r1.y + breakc_nz r2.z + mul r19.xyzw, r18.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) + dp4 r2.z, r19.xyzw, r18.xyzw + dp2 r3.y, r19.yxyy, r18.xyxx + dp2 r4.z, r19.zxzz, r18.xzxx + dp2 r4.w, r19.wxww, r18.xwxx + iadd r9.w, r0.z, l(1) + mov r18.x, r2.z + mov r18.y, r3.y + mov r18.zw, r4.zzzw + mov r0.z, r9.w + continue + endloop + mul r17.xyzw, r18.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) + mul r18.xyzw, r16.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r17.xyzw, r18.xyzw + dp2 r1.y, r17.yxyy, r18.xyxx + dp2 r2.z, r17.zxzz, r18.xzxx + dp2 r3.y, r17.wxww, r18.xwxx + mul r18.xyzw, r15.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) + dp4 r4.z, r17.xyzw, r18.xyzw + dp2 r4.w, r17.yxyy, r18.xyxx + dp2 r9.w, r17.zxzz, r18.xzxx + dp2 r11.x, r17.wxww, r18.xwxx + mul r18.xyzw, r14.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) + dp4 r12.w, r17.xyzw, r18.xyzw + dp2 r17.y, r17.yxyy, r18.xyxx + dp2 r17.z, r17.zxzz, r18.xzxx + dp2 r17.x, r17.wxww, r18.xwxx + mul r16.w, r0.z, l(0.886227) + mul r16.x, r3.y, l(-1.023327) + mul r16.y, r1.y, l(-1.023327) + mul r16.z, r2.z, l(1.023327) + mul r15.x, r11.x, l(-1.023327) + mul r15.yw, r4.wwwz, l(0.000000, -1.023327, 0.000000, 0.886227) + mul r15.z, r9.w, l(1.023327) + mul r14.w, r12.w, l(0.886227) + mul r14.xyz, r17.xyzx, l(-1.023327, -1.023327, 1.023327, 0.000000) + endif +endif +dp3 r0.z, r16.xyzx, r2.xywx +add r0.z, r16.w, r0.z +max r16.x, r0.z, l(0.000000) +dp3 r0.z, r15.xyzx, r2.xywx +add r0.z, r15.w, r0.z +max r16.y, r0.z, l(0.000000) +dp3 r0.z, r14.xyzx, r2.xywx +add r0.z, r14.w, r0.z +max r16.z, r0.z, l(0.000000) +dp3 r0.z, -r8.xyzx, r13.xyzx +add r0.z, r0.z, r0.z +mad r2.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r1.y, r10.z, l(0.001000) +log r1.y, r1.y +mad r1.y, -r1.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.y +mul r4.zw, r4.xxxy, cb1[0].wwww +round_ni r4.zw, r4.zzzw +add r1.y, |r3.w|, -cb1[2].y +round_ni r1.y, r1.y +add r2.w, l(-1.000000), cb1[1].x +max r3.y, r1.y, l(0.000000) +min r2.w, r2.w, r3.y +ge r1.y, r2.w, r1.y +mad r3.y, r4.w, cb1[0].x, r4.z +ftoi r3.y, r3.y +iadd r3.y, r3.y, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.y, r3.y, l(0), t0.xxxx +ftoi r2.w, r2.w +iadd r2.w, r2.w, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.w, r2.w, l(0), t0.xxxx +and r2.w, r2.w, r3.y +and r1.y, r1.y, r2.w +mul r14.xyz, r16.xyzx, cb0[111].xxxx +dp3 r2.w, r14.xyzx, l(0.212673, 0.715152, 0.072175, 0.000000) +mov r26.x, r2.w // Store ambient luminance for cubemap modulation +mov r5.w, l(1.000000) +mov r13.w, l(1.000000) +mov r14.xyz, l(0,0,0,0) +mov r3.y, l(1.000000) +mov r4.z, r1.y +mov r4.w, l(0) +loop + lt r9.w, l(0.010000), r3.y + ine r10.z, r4.z, l(0) + and r10.z, r9.w, r10.z + if_nz r10.z + firstbit_lo r10.z, r4.z + ishl r11.x, l(1), r10.z + xor r4.z, r4.z, r11.x + ishl r10.z, r10.z, l(3) + dp4 r15.x, cb1[r10.z + 6].xyzw, r5.xyzw + dp4 r15.y, cb1[r10.z + 7].xyzw, r5.xyzw + dp4 r15.z, cb1[r10.z + 8].xyzw, r5.xyzw + ge r17.xyz, cb1[r10.z + 5].xyzx, |r15.xyzx| + and r11.x, r17.y, r17.x + and r11.x, r17.z, r11.x + if_nz r11.x + mul r11.x, l(0.100000), cb1[r10.z + 5].x + mul r17.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r17.xy, r17.xyxx, r17.xyxx + add r18.xyz, -|r15.xyzx|, cb1[r10.z + 5].xyzx + mul r18.xyz, r18.xyzx, cb1[r10.z + 9].xyzx + eq r12.w, l(1.000000), cb1[r10.z + 10].x + if_nz r12.w + dp3 r19.x, cb1[r10.z + 6].xyzx, r2.xyzx + dp3 r19.y, cb1[r10.z + 7].xyzx, r2.xyzx + dp3 r19.z, cb1[r10.z + 8].xyzx, r2.xyzx + add r20.xyz, -r15.xyzx, cb1[r10.z + 5].xyzx + div r20.xyz, r20.xyzx, r19.xyzx + add r21.xyz, -r15.xyzx, -cb1[r10.z + 5].xyzx + div r21.xyz, r21.xyzx, r19.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx + min r12.w, r20.y, r20.x + min r12.w, r20.z, r12.w + mad r15.xyz, r19.xyzx, r12.wwww, r15.xyzx + else + mov r15.xyz, r2.xyzx + endif + dp3 r12.w, r15.xyzx, r15.xyzx + rsq r12.w, r12.w + mul r15.xyz, r12.wwww, r15.xyzx + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r20.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r19.xyz, -r19.xyzx, r20.xyzx + itof r19.xyz, r19.xyzx + dp3 r12.w, r15.xyzx, r19.xyzx + div r15.xyz, r15.xyzx, r12.wwww + lt r12.w, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r19.xxxy + movc r15.xy, r12.wwww, r15.zwzz, r15.xyxx + dp4 r12.w, cb1[r10.z + 4].xyzw, r13.xyzw + max r12.w, r12.w, l(0.000000) + max r12.w, r12.w, l(0.000100) + min r14.w, r18.z, r18.y + min r14.w, r14.w, r18.x + add r15.z, r17.y, r17.x + mad r15.z, r17.z, r17.z, r15.z + mad r11.x, r11.x, r11.x, -r15.z + mul r11.x, r11.x, cb1[r10.z + 9].x + mul r11.x, r11.x, cb1[r10.z + 9].x + add r15.z, l(1.000000), -cb1[r10.z + 10].y + mul r11.x, r11.x, r15.z + mul r11.x, r11.x, l(100.000000) + mad_sat r11.x, r14.w, cb1[r10.z + 10].y, r11.x + mul r14.w, r11.x, cb1[r10.z + 10].w + mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r15.xy, r15.xyxx, cb1[1].wwww, cb1[2].wwww + mov r15.z, cb1[r10.z + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z + mul r15.xyz, r15.xyzx, cb1[r10.z + 9].wwww + div r15.w, r2.w, r12.w + min r15.w, |r15.w|, l(1.000000) + mad r15.w, r15.w, l(2.000000), r2.w + add r12.w, r12.w, l(2.000000) + div r12.w, r15.w, r12.w + add r12.w, r12.w, l(-1.000000) + mad r12.w, r12.w, cb0[112].w, l(1.000000) + mul r15.xyz, r12.wwww, r15.xyzx + mul r15.xyz, r14.wwww, r15.xyzx + mad r14.xyz, r15.xyzx, r3.yyyy, r14.xyzx + mad r10.z, -r11.x, cb1[r10.z + 10].w, l(1.000000) + mul r3.y, r3.y, r10.z + endif + mov r4.w, l(-1) + continue + else + mov r4.w, r9.w + break + endif + mov r4.w, r9.w +endloop +if_nz r4.w + dp3 r1.y, r2.xyzx, r2.xyzx + rsq r1.y, r1.y + mul r2.xyz, r1.yyyy, r2.xyzx + lt r5.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r2.xxyz + lt r15.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r5.xzw, -r5.xxzw, r15.xxyz + itof r5.xzw, r5.xxzw + dp3 r1.y, r2.xyzx, r5.xzwx + div r2.xyz, r2.xyzx, r1.yyyy + lt r1.y, r2.z, l(0.000000) + add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r4.zw, r4.zzzw, r5.xxxz + movc r2.xy, r1.yyyy, r4.zwzz, r2.xyxx + mov r13.w, l(1.000000) + dp4 r1.y, cb1[3].xyzw, r13.xyzw + max r1.y, r1.y, l(0.000000) + max r1.y, r1.y, l(0.000100) + mad r2.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r2.xy, r2.xyxx, cb1[1].wwww, cb1[2].wwww + mov r2.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r2.xyz, r2.xyzx, t5.xyzw, s3, r0.z + div r0.z, r2.w, r1.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r2.w + add r1.y, r1.y, l(2.000000) + div r0.z, r0.z, r1.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r2.xyz, r0.zzzz, r2.xyzx + mad r14.xyz, r2.xyzx, r3.yyyy, r14.xyzx +endif +mul r2.xyz, r14.xyzx, cb0[112].zzzz +mul r2.xyz, r2.xyzx, cb0[111].yyyy +// Cubemap ambient link modulation (cb13[13].y) +if_nz cb13[13].y + max r26.x, r26.x, l(0.000000) + min r26.x, r26.x, l(1.000000) + mad r26.x, r26.x, l(0.750000), l(0.250000) + mul r2.xyz, r2.xyzx, r26.xxxx +endif +if_nz r3.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x + add r1.y, -r0.z, l(1.000000) + mul r13.xyz, r1.yyyy, r2.xyzx + mad r2.xyz, r5.xzwx, r0.zzzz, r13.xyzx +endif +mul r5.xzw, r9.xxyz, r16.xxyz +mul r5.xzw, r5.xxzw, cb0[111].xxxx +add r0.z, -r3.x, l(1.000000) +div r0.z, r0.z, r3.x +mul r1.xyz, r0.zzzz, r1.xzwx +mad r1.xyz, r1.xyzx, r11.yzwy, r11.yzwy +mul r1.xyz, r1.xyzx, r2.xyzx +mul r1.xyz, r10.xywx, r1.xyzx +mad r1.xyz, r5.xzwx, r12.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r6.xyzx +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r8.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r5.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r8.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[165].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r8.xyzx, -r7.xyzx + add r2.w, r5.y, -cb0[44].y + lt r3.z, l(0.000000), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[165].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w + mul r4.z, r0.x, r3.z + mad r4.w, r4.z, r2.w, cb0[44].y + mad r2.w, -r4.z, r2.w, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r3.z, r8.w, r0.x + mul r4.z, r2.w, cb0[159].z + max r4.z, r4.z, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.x, r4.w, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.z, l(0.000000), |r4.z| + exp r5.w, -r4.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.z + mad r4.z, -r4.z, l(0.240227), l(0.693147) + movc r4.z, r5.z, r5.w, r4.z + add r4.w, r4.w, -cb0[162].z + mul r4.w, r4.w, cb0[162].x + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[162].y + lt r5.z, l(0.000000), |r2.w| + exp r5.w, -r2.w + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r2.w + mad r2.w, -r2.w, l(0.240227), l(0.693147) + movc r2.w, r5.z, r5.w, r2.w + mul r2.w, r2.w, r4.w + mad r2.w, r5.x, r4.z, r2.w + mad_sat r4.zw, r8.wwww, cb0[160].wwwy, cb0[160].zzzx + mul r3.z, r3.z, r2.w + exp r3.z, -r3.z + min r3.z, r3.z, l(1.000000) + max r3.z, r3.z, cb0[161].w + add r3.z, r4.w, r3.z + add r3.z, r4.z, r3.z + min r3.z, r3.z, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.000031, 0.000000, 0.000031), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[169].wwww, r4.xxxy + mul r6.xy, r0.ywyy, cb0[167].xyxx + mad r0.y, |r3.w|, cb0[166].x, cb0[166].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[166].z + div r6.z, r0.y, cb0[165].z + sample_l_indexable(texture3d)(float,float,float,float) r9.xyzw, r6.xyzx, t14.xyzw, s1, l(0.000000) + add r0.y, |r3.w|, -cb0[168].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r9.xyzw, r9.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r9.xyzw, r0.yyyy, r9.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r3.z, l(1.000000) + dp3_sat r0.w, r8.xyzx, cb0[163].xyzx + log r0.w, r0.w + mul r0.w, r0.w, cb0[164].w + exp r0.w, r0.w + mul r3.xyw, r0.wwww, cb0[164].xyxz + mad r0.x, r0.x, r8.w, -cb0[163].w + max r0.x, r0.x, l(0.000000) + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + add r0.x, -r0.x, l(1.000000) + mul r3.xyw, r0.xxxx, r3.xyxw + add r0.x, -r4.z, l(1.000000) + mul r3.xyw, r0.xxxx, r3.xyxw + mad r0.xyw, cb0[161].xyxz, r0.yyyy, r3.xyxw + mad r0.xyw, r0.xyxw, r9.wwww, r9.xyxz + mul r2.w, r3.z, r9.w +else + add r3.x, r5.y, -cb0[44].y + mul r3.y, r3.x, cb0[159].z + mul r3.x, r3.x, cb0[162].x + add r3.z, cb0[44].y, -cb0[159].x + mul r3.z, r3.z, cb0[159].z + max r3.xyz, r3.xyzx, l(-127.000000, -127.000000, -127.000000, 0.000000) + exp r3.z, -r3.z + mul r3.z, r3.z, cb0[159].y + lt r3.w, l(0.000000), |r3.y| + exp r4.x, -r3.y + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r3.y + mad r3.y, -r3.y, l(0.240227), l(0.693147) + movc r3.y, r3.w, r4.x, r3.y + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(0.000000), |r3.x| + exp r4.y, -r3.x + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r3.x + mad r3.x, -r3.x, l(0.240227), l(0.693147) + movc r3.x, r4.x, r4.y, r3.x + mul r3.x, r3.x, r3.w + mad r3.x, r3.z, r3.y, r3.x + mad_sat r3.yz, r8.wwww, cb0[160].wwyw, cb0[160].zzxz + mul r3.w, r8.w, r3.x + exp r3.w, -r3.w + min r3.w, r3.w, l(1.000000) + max r3.w, r3.w, cb0[161].w + add r3.z, r3.z, r3.w + add r3.z, r3.y, r3.z + min r2.w, r3.z, l(1.000000) + add r3.z, -r2.w, l(1.000000) + dp3_sat r3.w, r8.xyzx, cb0[163].xyzx + log r3.w, r3.w + mul r3.w, r3.w, cb0[164].w + exp r3.w, r3.w + mul r4.xyz, r3.wwww, cb0[164].xyzx + mad r3.w, r6.w, r7.w, -cb0[163].w + max r3.w, r3.w, l(0.000000) + mul r3.x, r3.w, r3.x + exp r3.x, -r3.x + min r3.x, r3.x, l(1.000000) + add r3.x, -r3.x, l(1.000000) + mul r4.xyz, r3.xxxx, r4.xyzx + add r3.x, -r3.y, l(1.000000) + mul r3.xyw, r3.xxxx, r4.xyxz + mad r0.xyw, cb0[161].xyxz, r3.zzzz, r3.xyxw +endif +mul r3.xyz, r2.wwww, r2.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r0.z, r0.z, l(1.000000) +mul r0.z, r0.z, l(0.059683) +mad r4.xyz, cb0[156].xyzx, r0.zzzz, cb0[158].xyzx +mad r0.z, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r0.z, r0.z, r1.w +mad_sat r4.xyz, cb0[157].xyzx, r0.zzzz, r4.xyzx +mul r4.xyz, r4.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r2.xyz, r2.xyzx, r4.xyzx +mad r0.xyz, r2.xyzx, r2.wwww, r0.xywx +lt r25.x, l(0.500000), cb13[12].y +if_nz r25.x + mul r23.xyz, r3.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) + add r23.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r23.xyz, r23.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r3.xyzx + mul r24.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + mad o0.xyz, r1.xyzx, r23.xyzx, r24.xyzx +else + mad o0.xyz, r1.xyzx, r3.xyzx, r0.xyzx +endif +dp3 o0.w, r3.xyzx, l(0.333333, 0.333333, 0.333333, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x7010AF4B.cso b/src/games/endfield/deferred-lighting/0x7010AF4B.cso deleted file mode 100644 index d2b98938c87e812d6d6d62a9a4008100e89ee81d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27664 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 lGcmf_Hp_v|yub$s+@{rSbZrxT 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�Y{E{(k{%xP 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%0D`ZFKkLCp86 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x8A27350D.cso b/src/games/endfield/deferred-lighting/0x8A27350D.cso new file mode 100644 index 0000000000000000000000000000000000000000..aa5b9fabf7b7818e43ad8825dc601e36c7febb0c GIT binary patch literal 62296 zcmeI5YmjBvRo_pamRd7CBhRRjGJmBgu zZV=2dlTj7wx4r_aGSHW{Bj z2m0=%Rp+mz@^P)P)g1q()8G1rx4!**-tj$eeM|SvU;oCtU;q01?&&o6+P9xN^VYY# zX6EC{$I!3H-#!no=30CUpAswj;1rt*tiY4L z;95Ffz9#-ZCL-e#cj93<@qUc!ly|-Q z`0-m{`)vo+oA#0IapZo>o`Qo+k0Z~0WIav_zOC>9=4*H{`o=>A4!`^FpI*Z=uD_zd zp>40>-CkoydriK!*W^-rO>V|@%Eu?|HFLMU-aop=Pc8gqqicK^@UJWSV{40lgRj%R zwY>g2lkS=)4iy3#r@)>$af#v->vk$MXip#XCiW4cWUk6_DKz( e>K1&_ET`9OG9O#a0PZ*Aa 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μ=l3zl6^XcVK-y;2QhZO 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 PG`=L<;=k?96YBmyG7E0^ literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x8D6CC6FA.cso b/src/games/endfield/deferred-lighting/0x8ACC6F4B.cso similarity index 56% rename from src/games/endfield/deferred-lighting/0x8D6CC6FA.cso rename to src/games/endfield/deferred-lighting/0x8ACC6F4B.cso index e37fac5dda3046a0cf7e64c71166431798250581..d1048e1dba6d0e8d5190a760f77bca2712f33867 100644 GIT binary patch delta 12629 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 delta 12403 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

    8AN{<-zpq$F}cKZj|$$>V1i0WnVt_ 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 H35owd6p*<5 diff --git a/src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0.asm deleted file mode 100644 index a58a6ae7df..0000000000 --- a/src/games/endfield/deferred-lighting/0x9630ACD4.ps_5_0.asm +++ /dev/null @@ -1,1596 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 16:53:39 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[15], dynamicIndexed -dcl_constantbuffer CB6[160], dynamicIndexed -dcl_constantbuffer CB7[4], immediateIndexed -dcl_constantbuffer CB13[13], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture2darray (float,float,float,float) t10 -dcl_resource_texture2darray (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture3d (float,float,float,float) t21 -dcl_resource_texture3d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_resource_texture2d (float,float,float,float) t25 -dcl_resource_texture2d (float,float,float,float) t26 -dcl_resource_texture3d (float,float,float,float) t27 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 38 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t24.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t25.xyzw -ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t26.xyzw -mul r1.w, r1.w, l(3.000000) -round_ne r1.w, r1.w -mul r2.w, r2.w, l(3.000000) -round_ne r2.w, r2.w -mad r1.w, r1.w, l(4.000000), r2.w -ftoi r1.w, r1.w -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r2.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r4.y, -r2.w, l(1.000000) -lt r2.w, r4.y, l(0.000000) -ge r5.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r5.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r5.xy, r5.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r5.xy, r5.xyxx, r5.zwzz -movc r4.xz, r2.wwww, r5.xxyx, r2.xxyx -dp3 r2.x, r4.xyzx, r4.xyzx -rsq r2.x, r2.x -mul r4.xyz, r2.xxxx, r4.xyzx -utof r2.xy, r0.xyxx -mul r5.xy, v0.xyxx, cb0[82].zwzz -mad r5.zw, r5.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -add r6.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mul r6.xy, r6.xyxx, cb0[82].zwzz -sample_l_indexable(texture2d)(float,float,float,float) r2.w, r6.xyxx, t1.yzwx, s0, l(0.000000) -mul r6.xyzw, -r5.wwww, cb0[25].xyzw -mad r6.xyzw, cb0[24].xyzw, r5.zzzz, r6.xyzw -mad r6.xyzw, cb0[26].xyzw, r2.wwww, r6.xyzw -add r6.xyzw, r6.xyzw, cb0[27].xyzw -div r6.xyz, r6.xyzx, r6.wwww -mul r2.w, r6.y, cb0[1].z -mad r2.w, cb0[0].z, r6.x, r2.w -mad r2.w, cb0[2].z, r6.z, r2.w -add r2.w, r2.w, cb0[3].z -eq r5.z, l(0.000000), cb0[86].w -add r7.xyz, -r6.xyzx, cb0[44].xyzx -mov r8.x, cb0[0].z -mov r8.y, cb0[1].z -mov r8.z, cb0[2].z -movc r9.xyz, r5.zzzz, r7.xyzx, r8.xyzx -dp3 r5.z, r9.xyzx, r9.xyzx -max r5.w, r5.z, l(9.999999939E-09) -rsq r5.w, r5.w -mul r10.xyz, r5.wwww, r9.xyzx -mul r5.z, r5.w, r5.z -lt r7.w, l(0.000488281250), cb0[234].x -if_nz r7.w - sample_b_indexable(texture2d)(float,float,float,float) r11.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x -else - mov r11.xy, l(1.000000,1.000000,0,0) -endif -min r8.w, r11.y, r11.x -add r1.z, r1.z, l(-0.050000) -mul_sat r1.z, r1.z, l(1.052600) -add r9.w, r11.y, l(-1.000000) -mad r12.x, r1.z, r9.w, l(1.000000) -add r12.y, -r1.z, l(1.000000) -movc r11.yz, r7.wwww, r12.xxyx, l(0,1.000000,1.000000,0) -min r1.z, r2.z, r11.y -add r7.w, -r1.z, r2.z -mad r1.z, r8.w, r7.w, r1.z -add r2.z, -r1.z, r2.z -mad r12.w, r11.x, r2.z, r1.z -add r1.z, -r11.z, l(1.000000) -mad r1.z, r8.w, r1.z, r11.z -add r2.z, -r1.z, l(1.000000) -mad r1.z, r11.x, r2.z, r1.z -mul r11.xyz, r1.zzzz, r3.xyzx -mul r13.xyz, r1.xxxx, r11.xyzx -mad r3.xyz, r3.xyzx, r1.zzzz, -r13.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r11.xyz, r11.xyzx, r1.xxxx, r1.zzzz -dp3 r1.x, r4.xyzx, r10.xyzx -max r13.x, r1.x, l(0.000000) -mul r14.y, r12.w, r12.w -mul r15.x, r13.x, r13.x -mul r15.z, r13.x, r15.x -mul r1.x, r14.y, r14.y -mul r14.z, r14.y, r1.x -mov r13.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r16.x, l(3.327070, 1.000000, 0.000000, 0.000000), r13.xyxx -dp2 r16.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r13.xzxx -mov r14.x, l(1.000000) -dp2 r1.z, r16.xyxx, r14.xyxx -mov r15.yw, l(0,9.044010,0,1.000000) -dp3 r16.x, l(3.596850, -1.367720, 1.000000, 0.000000), r15.xzwx -dp3 r16.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r15.xyzx -mov r17.x, l(5.565890) -mov r17.yz, r15.xxzx -dp3 r16.z, l(1.000000, 19.788601, -20.212299, 0.000000), r17.xyzx -dp3 r2.z, r16.xyzx, r14.xyzx -div r1.z, r1.z, r2.z -dp2 r16.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r13.xwxx -mov r15.x, l(1.296780) -mov r15.y, r13.x -dp2 r16.y, l(1.000000, -0.755907, 0.000000, 0.000000), r15.xyxx -dp2 r2.z, r16.xyxx, r14.xyxx -dp3 r16.x, l(2.923380, 59.418800, 1.000000, 0.000000), r15.yzwy -mov r15.xw, l(20.322500,0,0,121.563004) -dp3 r16.y, l(1.000000, -27.030199, 222.591995, 0.000000), r15.xyzx -dp3 r16.z, l(626.130005, 316.627014, 1.000000, 0.000000), r15.yzwy -dp3 r7.w, r16.xyzx, r14.xyzx -div r2.z, r2.z, r7.w -mad r13.yzw, r11.xxyz, r1.zzzz, r2.zzzz -add r1.z, r1.z, r2.z -ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t7.xzyw -lt r0.z, l(0.001000), r14.x -if_nz r0.z - dp3 r0.z, -r10.xyzx, r4.xyzx - add r0.z, r0.z, r0.z - mad r15.xyz, r4.xyzx, -r0.zzzz, -r10.xyzx - dp3 r0.z, -cb3[0].xyzx, r15.xyzx - mad r16.xyz, cb3[0].xyzx, r0.zzzz, r15.xyzx - lt r0.z, r0.z, cb3[4].z - dp3 r2.z, r16.xyzx, r16.xyzx - max r2.z, r2.z, l(0.0000610351562) - rsq r2.z, r2.z - mul r16.xyz, r2.zzzz, r16.xyzx - mul r16.xyz, r16.xyzx, cb3[4].yyyy - mad r16.xyz, -cb3[0].xyzx, cb3[4].zzzz, r16.xyzx - dp3 r2.z, r16.xyzx, r16.xyzx - rsq r2.z, r2.z - mul r16.xyz, r2.zzzz, r16.xyzx - movc r15.xyz, r0.zzzz, r16.xyzx, r15.xyzx - mad r16.xyz, r9.xyzx, r5.wwww, r15.xyzx - dp3 r0.z, r16.xyzx, r16.xyzx - max r0.z, r0.z, l(0.0000610351562) - rsq r0.z, r0.z - mul r16.xyz, r0.zzzz, r16.xyzx - dp3 r0.z, r15.xyzx, r4.xyzx - mov_sat r12.y, r0.z - dp3_sat r2.z, r4.xyzx, r16.xyzx - min r12.z, r13.x, l(1.000000) - mad r7.w, r2.z, r1.x, -r2.z - mad r2.z, r7.w, r2.z, l(1.000000) - dp3_sat r7.w, r10.xyzx, r16.xyzx - add r7.w, -r7.w, l(1.000000) - mul r8.w, r7.w, r7.w - mul r8.w, r8.w, r8.w - mul r9.w, r7.w, r8.w - add r10.w, -r12.w, l(1.000000) - mad r11.w, -r10.w, l(0.383026), l(-0.0761947036) - mad r11.w, r10.w, r11.w, l(1.049970) - mad r10.w, r10.w, r11.w, l(0.409255) - min r10.w, r10.w, l(0.999000) - add r11.w, -r10.w, l(1.000000) - add r15.xyz, -r11.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r11.xyzx - ult r14.w, l(0), r1.w - uge r15.w, l(15), r1.w - and r14.w, r14.w, r15.w - if_nz r14.w - iadd r15.w, r1.w, l(-1) - umin r15.w, r15.w, l(14) - mad r16.x, r0.z, l(0.500000), l(0.500000) - mul r16.y, r3.w, cb5[r15.w + 0].w - utof r16.z, r15.w - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t10.xyzw, s1, l(0.000000) - endif - movc r16.xyz, r14.wwww, r16.xyzx, r12.yyyy - mad r0.z, -r8.w, r7.w, l(1.000000) - mad r17.xyz, r11.xyzx, r0.zzzz, r9.wwww - mul r0.z, r2.z, r2.z - div r0.z, r1.x, r0.z - mad r18.xy, -r12.zyzz, r1.xxxx, r12.zyzz - mad r18.xy, r18.xyxx, r12.zyzz, r1.xxxx - sqrt r18.xy, r18.xyxx - mul r18.xy, r12.yzyy, r18.xyxx - add r1.x, r18.y, r18.x - add r1.x, r1.x, l(0.000100) - div r1.x, l(0.500000), r1.x - mul r0.z, r0.z, r1.x - mul r17.xyz, r0.zzzz, r17.xyzx - min r17.xyz, r17.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r18.xyzw, r12.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r18.xyxx, t9.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r1.x, r18.zwzz, t9.xyzw, s1, l(0.000000) - mul r0.z, r0.z, r1.x - mul r0.z, r10.w, r0.z - div r0.z, r0.z, r11.w - mul r18.xyz, r15.xyzx, r15.xyzx - mul r18.xyz, r0.zzzz, r18.xyzx - mad r15.xyz, -r15.xyzx, r11.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r15.xyz, r18.xyzx, r15.xyzx - add r15.xyz, r15.xyzx, r17.xyzx - mul r15.xyz, r15.xyzx, cb3[4].xxxx - max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r15.xyz, r15.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r16.xyz, r3.xyzx, r16.xyzx - mad r15.xyz, r15.xyzx, r12.yyyy, r16.xyzx - mul r15.xyz, r15.xyzx, cb3[1].xyzx - mov r14.z, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r16.xyz, r14.xzxx, t8.xyzw, s1, cb0[108].x - add r0.z, -r14.x, l(1.000000) - mad r14.xzw, r15.xxyz, r16.xxyz, -r15.xxyz - mad r14.xzw, r0.zzzz, r14.xxzw, r15.xxyz - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r5.xyxx, t12.yzxw, s1, l(0.000000) - min r0.z, r0.z, l(1.000000) - mul r14.xzw, r0.zzzz, r14.xxzw -else - mov r14.xzw, l(0,0,0,0) -endif -mul r12.yz, r2.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) -round_ni r12.yz, r12.yyzy -mad r0.z, r12.z, cb2[1].y, r12.y -mul r0.z, r0.z, l(8.000000) -ftoi r0.z, r0.z -mad r1.x, -cb0[85].y, cb2[2].w, |r2.w| -round_ni r1.x, r1.x -add r2.z, l(-1.000000), cb2[1].w -max r7.w, r1.x, l(0.000000) -min r2.z, r2.z, r7.w -mul r7.w, r2.z, l(8.000000) -ftoi r7.w, r7.w -ge r1.x, r2.z, r1.x -iadd r2.z, r7.w, cb0[110].y -dp3 r7.w, -r10.xyzx, r4.xyzx -add r7.w, r7.w, r7.w -mad r15.xyz, r4.xyzx, -r7.wwww, -r10.xyzx -min r12.x, r13.x, l(1.000000) -add r7.w, -r12.w, l(1.000000) -mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) -mad r8.w, r7.w, r8.w, l(1.049970) -mad r7.w, r7.w, r8.w, l(0.409255) -min r7.w, r7.w, l(0.999000) -add r8.w, -r7.w, l(1.000000) -add r16.xyz, -r11.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r11.xyzx -ult r9.w, l(0), r1.w -uge r10.w, l(15), r1.w -and r9.w, r9.w, r10.w -iadd r1.w, r1.w, l(-1) -umin r1.w, r1.w, l(14) -mul r17.y, r3.w, cb5[r1.w + 0].w -utof r17.z, r1.w -mad r12.yz, r12.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r1.w, r12.yzyy, t9.yzwx, s1, l(0.000000) -mad r18.xyz, -r16.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r16.xyz, r16.xyzx, r16.xyzx -mov r19.w, l(1.000000) -mov r20.y, l(1.000000) -mov r21.z, r12.w -mov r22.xyz, l(0,0,0,0) -mov r3.w, l(1.000000) -mov r10.w, l(0) -loop - ilt r11.w, l(7), r10.w - breakc_nz r11.w - iadd r11.w, r0.z, r10.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx - iadd r12.y, r2.z, r10.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.y, r12.y, l(0), t0.xxxx - and r11.w, r11.w, r12.y - and r11.w, r1.x, r11.w - ishl r12.y, r10.w, l(5) - mov r23.xyz, l(0,0,0,0) - mov r12.z, r3.w - mov r15.w, r11.w - loop - breakc_z r15.w - firstbit_lo r16.w, r15.w - ishl r18.w, l(1), r16.w - xor r18.w, r15.w, r18.w - iadd r16.w, r12.y, r16.w - bfi r24.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 3, 5, 6) - bfi r20.z, l(29), l(3), r16.w, l(7) - ftou r20.w, cb3[r24.z + 6].w - ieq r20.w, r20.w, l(1) - if_nz r20.w - add r19.xyz, r6.xyzx, -cb3[r24.x + 6].xyzx - and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.z + 6].xzyx - and r26.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r24.w + 6].yxzy - ushr r27.xyz, cb3[r24.z + 6].xzyx, l(16, 16, 16, 0) - ushr r28.xyz, cb3[r24.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyz, r26.xyzx - f16tof32 r27.xyz, r27.xyzx - f16tof32 r28.xyw, r28.yxyz - mov r29.xz, r25.xxzx - mov r29.yw, r27.xxxz - dp4 r20.w, r19.xyzw, r29.xyzw - mov r27.x, r25.y - mov r27.z, r26.y - mov r27.w, r28.x - dp4 r21.w, r19.xyzw, r27.xyzw - mov r28.xz, r26.xxzx - dp4 r19.x, r19.xyzw, r28.xyzw - max r19.y, |r20.w|, |r21.w| - max r19.x, |r19.x|, r19.y - mad r19.y, cb3[r20.z + 6].x, l(0.500000), l(0.500000) - add r19.x, -r19.y, r19.x - mad r19.y, -cb3[r20.z + 6].x, l(0.500000), l(0.500000) - div_sat r19.x, r19.x, r19.y - add r19.x, -r19.x, l(1.000000) - mul r19.x, r19.x, r19.x - else - mov r19.x, l(1.000000) - endif - lt r19.y, l(0.500000), cb3[r24.y + 6].z - lt r19.z, r19.x, l(0.001000) - or r19.z, r19.y, r19.z - if_nz r19.z - mov r15.w, r18.w - continue - endif - ishl r19.z, r16.w, l(3) - bfi r16.w, l(29), l(3), r16.w, l(2) - lt r20.w, cb3[r19.z + 6].w, l(1.500000) - if_nz r20.w - mad r20.w, cb3[r16.w + 6].y, l(0.500000), l(0.500000) - add r25.x, r20.w, -|cb3[r16.w + 6].x| - add r25.y, -r25.x, cb3[r16.w + 6].y - add r20.w, -|r25.x|, l(1.000000) - add r20.w, -|r25.y|, r20.w - max r20.w, r20.w, l(0.000488281250) - ge r21.w, cb3[r16.w + 6].x, l(0.000000) - movc r25.z, r21.w, r20.w, -r20.w - dp3 r20.w, r25.xyzx, r25.xyzx - rsq r20.w, r20.w - mul r25.xyz, r20.wwww, r25.xyzx - add r26.xyz, -r6.xyzx, cb3[r24.x + 6].xyzx - dp3 r20.w, r26.xyzx, r26.xyzx - rsq r21.w, r20.w - mul r27.xyz, r21.wwww, r26.xyzx - ftoi r22.w, cb3[r20.z + 6].w - mul r28.xyz, r25.xyzx, cb3[r16.w + 6].zzzz - mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - mad r30.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - ftou r23.w, cb3[r19.z + 6].w - and r23.w, r23.w, l(1) - ieq r24.z, r23.w, l(0) - not r24.z, r24.z - lt r25.w, l(0.000000), cb3[r16.w + 6].z - and r24.z, r24.z, r25.w - dp3 r25.w, r29.xyzx, r29.xyzx - sqrt r25.w, r25.w - dp3 r26.w, r30.xyzx, r30.xyzx - sqrt r26.w, r26.w - dp3 r27.w, r4.xyzx, r29.xyzx - div r27.w, r27.w, r25.w - dp3 r28.w, r4.xyzx, r30.xyzx - div r28.w, r28.w, r26.w - add r27.w, r27.w, r28.w - mul_sat r31.x, r27.w, l(0.500000) - dp3 r27.w, r29.xyzx, r30.xyzx - mad r25.w, r25.w, r26.w, r27.w - mad r25.w, r25.w, l(0.500000), l(1.000000) - div r31.y, l(1.000000, 1.000000, 1.000000, 1.000000), r25.w - dp3_sat r20.x, r4.xyzx, r27.xyzx - movc r21.xy, r24.zzzz, r31.xyxx, r20.xyxx - lt r20.x, cb3[r24.w + 6].w, l(0.000000) - if_nz r20.x - mul r20.x, cb3[r24.x + 6].w, cb3[r24.x + 6].w - mul r20.x, r20.x, r20.w - mad r20.x, -r20.x, r20.x, l(1.000000) - max r20.x, r20.x, l(0.000000) - add r20.w, r20.w, l(1.000000) - div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w - and r25.w, r24.z, l(0x3f800000) - add r26.w, -r20.w, r21.y - mad r20.w, r25.w, r26.w, r20.w - mul r20.x, r20.x, r20.x - mul r20.x, r20.x, r20.w - else - mul r30.xyz, r26.xyzx, cb3[r24.x + 6].wwww - dp3 r20.w, r30.xyzx, r30.xyzx - min r20.w, r20.w, l(1.000000) - add r20.w, -r20.w, l(1.000000) - log r20.w, r20.w - mul r20.w, r20.w, cb3[r24.w + 6].w - exp r20.w, r20.w - mul r20.x, r20.w, r21.y - endif - dp3 r20.w, r27.xyzx, -r25.xyzx - add r20.w, r20.w, -cb3[r16.w + 6].z - mul_sat r20.w, r20.w, cb3[r16.w + 6].w - mul r20.w, r20.w, r20.w - movc r20.w, r23.w, l(1.000000), r20.w - mul r20.x, r20.w, r20.x - not r20.w, r24.z - ige r21.y, r22.w, l(0) - and r20.w, r20.w, r21.y - if_nz r20.w - if_z r23.w - ishl r20.w, r22.w, l(2) - mul r25.xyz, r6.yyyy, cb6[r20.w + 33].xywx - mad r25.xyz, cb6[r20.w + 32].xywx, r6.xxxx, r25.xyzx - mad r25.xyz, cb6[r20.w + 34].xywx, r6.zzzz, r25.xyzx - add r25.xyz, r25.xyzx, cb6[r20.w + 35].xywx - div_sat r25.xy, r25.xyxx, r25.zzzz - mad r25.xy, r25.xyxx, cb6[r22.w + 0].zwzz, cb6[r22.w + 0].xyxx - else - ishl r20.w, r22.w, l(2) - dp3 r30.x, -r26.xyzx, cb6[r20.w + 32].xyzx - dp3 r30.y, -r26.xyzx, cb6[r20.w + 33].xyzx - dp3 r30.z, -r26.xyzx, cb6[r20.w + 34].xyzx - lt r20.w, |r30.x|, |r30.y| - and r20.w, r20.w, l(1) - dp2 r21.y, |r30.xyxx|, icb[r20.w + 0].xyxx - lt r21.y, r21.y, |r30.z| - movc r20.w, r21.y, l(2), r20.w - dp3 r21.y, r30.xyzx, icb[r20.w + 0].xyzx - lt r21.y, r21.y, l(0.000000) - bfi r20.w, l(31), l(1), r20.w, r21.y - ushr r21.y, r20.w, l(1) - dp3 r21.y, r30.xyzx, icb[r21.y + 0].xyzx - div r25.z, l(0.000244140625), cb6[r22.w + 0].w - add r25.z, -r25.z, l(0.500000) - utof r25.w, r20.w - ult r26.x, r20.w, l(2) - and r26.x, r26.x, l(2) - dp2 r26.x, r30.xzxx, icb[r26.x + 0].xzxx - mul r26.x, r26.x, icb[r20.w + 4].z - div r26.x, r26.x, |r21.y| - mad r25.w, r26.x, r25.z, r25.w - add r25.w, r25.w, l(0.500000) - mul_sat r26.x, r25.w, l(0.166666672) - iadd r25.w, l(-1), icb[r20.w + 4].y - dp2 r25.w, r30.yzyy, icb[r25.w + 0].xyxx - mul r20.w, r25.w, icb[r20.w + 4].w - div r20.w, r20.w, |r21.y| - mad_sat r26.y, -r20.w, r25.z, l(0.500000) - mad r25.xy, r26.xyxx, cb6[r22.w + 0].zwzz, cb6[r22.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r20.w, r25.xyxx, t13.yzwx, s1, l(0.000000) - mul r20.x, r20.w, r20.x - endif - lt r20.w, l(0.000000), r20.x - if_nz r20.w - if_z r23.w - ftoi r21.y, cb3[r24.y + 6].x - else - add r25.xyz, r6.xyzx, -cb3[r24.x + 6].xyzx - lt r26.xyz, |r25.yzzy|, |r25.xxyx| - and r22.w, r26.y, r26.x - lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx - ushr r23.w, cb3[r16.w + 6].w, l(24) - ubfe r26.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r16.w + 6].wwww - movc r23.w, r25.x, r23.w, r26.x - and r25.x, l(255), cb3[r16.w + 6].w - movc r25.x, r25.y, r26.y, r25.x - ubfe r25.y, l(8), l(8), cb3[r24.y + 6].x - and r25.w, l(255), cb3[r24.y + 6].x - movc r25.y, r25.z, r25.y, r25.w - movc r25.x, r26.z, r25.x, r25.y - movc r22.w, r22.w, r23.w, r25.x - ilt r23.w, r22.w, l(80) - movc r21.y, r23.w, r22.w, l(-1) - endif - ishl r22.w, r21.y, l(2) - mad r25.xyz, r27.xyzx, cb4[r21.y + 288].xxxx, r6.xyzx - mul r23.w, l(5.000000), cb4[r21.y + 288].y - mad r25.xyz, r4.xyzx, r23.wwww, r25.xyzx - mul r26.xyzw, r25.yyyy, cb4[r22.w + 65].xyzw - mad r26.xyzw, cb4[r22.w + 64].xyzw, r25.xxxx, r26.xyzw - mad r25.xyzw, cb4[r22.w + 66].xyzw, r25.zzzz, r26.xyzw - add r25.xyzw, r25.xyzw, cb4[r22.w + 67].xyzw - div r25.xyz, r25.xyzx, r25.wwww - ge r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx - ge r30.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r31.xy, -cb4[r21.y + 344].xyxx, cb4[r21.y + 344].zwzz - mad r25.xy, r25.xyxx, r31.xyxx, cb4[r21.y + 344].xyxx - mad r31.xy, r25.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r31.xy, r31.xyxx - mad r25.xy, r25.xyxx, cb4[400].zwzz, -r31.xyxx - add r32.xyzw, r25.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r33.xyzw, r32.xxzz, r32.xxzz - add r31.zw, -r25.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r32.xz, r25.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r34.xy, r25.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r35.xy, r31.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r34.xy, -r34.xyxx, r34.xyxx, r32.ywyy - add r34.xy, r34.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r34.xy, r34.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r33.xz, r33.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r25.xy, r33.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r25.xyxx - mul r36.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r25.xy, -r32.xzxx, r32.xzxx, r31.zwzz - add r25.xy, r25.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r37.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r25.xy, r32.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r36.z, r37.x - mov r36.w, r25.x - mov r35.z, r34.x - mov r35.w, r33.x - add r32.xyzw, r35.zwxz, r36.zwxz - mov r37.z, r36.y - mov r37.w, r25.y - mov r34.z, r35.y - mov r34.w, r33.z - add r25.xyw, r34.zyzw, r37.zyzw - div r33.xyz, r35.xzwx, r32.zwyz - add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r33.xyz, r33.yxzy, cb4[400].xxxx - div r34.xyz, r34.zywz, r25.xywx - add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r34.xyz, r34.xyzx, cb4[400].yyyy - mov r33.w, r34.x - mad r35.xyzw, r31.xyxy, cb4[400].xyxy, r33.ywxw - mad r31.zw, r31.xxxy, cb4[400].xxxy, r33.zzzw - mov r34.w, r33.y - mov r33.yw, r34.yyyz - mad r36.xyzw, r31.xyxy, cb4[400].xyxy, r33.xyzy - mad r34.xyzw, r31.xyxy, cb4[400].xyxy, r34.wywz - mad r33.xyzw, r31.xyxy, cb4[400].xyxy, r33.xwzw - mul r37.xyzw, r25.xxxy, r32.zwyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.w, r35.xyxx, t6.xxxx, s4, r25.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r35.zwzz, t6.xxxx, s4, r25.z - mul r23.w, r23.w, r37.y - mad r22.w, r37.x, r22.w, r23.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r31.zwzz, t6.xxxx, s4, r25.z - mad r22.w, r37.z, r23.w, r22.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r34.xyxx, t6.xxxx, s4, r25.z - mad r22.w, r37.w, r23.w, r22.w - mul r31.xyzw, r25.yyww, r32.xyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r36.xyxx, t6.xxxx, s4, r25.z - mad r22.w, r31.x, r23.w, r22.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r36.zwzz, t6.xxxx, s4, r25.z - mad r22.w, r31.y, r23.w, r22.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r34.zwzz, t6.xxxx, s4, r25.z - mad r22.w, r31.z, r23.w, r22.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r33.xyxx, t6.xxxx, s4, r25.z - mad r22.w, r31.w, r23.w, r22.w - ige r23.w, r21.y, l(0) - or r26.xyz, r26.xyzx, r30.xyzx - or r25.x, r26.y, r26.x - or r25.x, r26.z, r25.x - and r25.y, r25.z, l(0x7fffffff) - ult r25.y, l(0x7f800000), r25.y - or r25.x, r25.y, r25.x - mul r25.y, r25.w, r32.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r33.zwzz, t6.xxxx, s4, r25.z - mad r22.w, r25.y, r25.z, r22.w - add r22.w, r22.w, l(-1.000000) - mad r21.y, cb4[r21.y + 288].w, r22.w, l(1.000000) - movc r21.y, r25.x, l(1.000000), r21.y - movc r21.y, r23.w, r21.y, l(1.000000) - else - mov r21.y, l(1.000000) - endif - if_nz r24.z - dp3 r22.w, r15.xyzx, r28.xyzx - mul_sat r23.w, r21.w, cb3[r16.w + 6].z - mad r23.w, r23.w, l(0.500000), r14.y - min r23.w, r23.w, l(1.000000) - div r23.w, r14.y, r23.w - mad r25.xyz, r15.xyzx, r22.wwww, -r28.xyzx - dp3 r24.z, r29.xyzx, r25.xyzx - mul r22.w, r22.w, r22.w - mad r22.w, cb3[r16.w + 6].z, cb3[r16.w + 6].z, -r22.w - div_sat r22.w, r24.z, r22.w - mad r25.xyz, r28.xyzx, r22.wwww, r29.xyzx - dp3 r22.w, r25.xyzx, r25.xyzx - rsq r22.w, r22.w - mul r27.xyz, r22.wwww, r25.xyzx - else - mov r23.w, l(1.000000) - endif - if_nz r20.w - mul_sat r20.w, r21.w, cb3[r20.z + 6].y - mad r25.xyz, r9.xyzx, r5.wwww, r27.xyzx - dp3 r21.w, r25.xyzx, r25.xyzx - max r21.w, r21.w, l(0.0000610351562) - rsq r21.w, r21.w - mul r25.xyz, r21.wwww, r25.xyzx - dp3_sat r21.w, r4.xyzx, r25.xyzx - dp3_sat r22.w, r10.xyzx, r25.xyzx - lt r24.z, l(0.000000), r20.w - mul r20.w, r20.w, r20.w - mad r25.x, r22.w, l(3.600000), l(0.400000) - div r20.w, r20.w, r25.x - mad r20.w, r12.w, r12.w, r20.w - min r20.w, r20.w, l(1.000000) - movc r20.w, r24.z, r20.w, r14.y - mul r20.w, r20.w, r20.w - mad r24.z, r21.w, r20.w, -r21.w - mad r21.w, r24.z, r21.w, l(1.000000) - add r22.w, -r22.w, l(1.000000) - mul r24.z, r22.w, r22.w - mul r24.z, r24.z, r24.z - mul r25.x, r22.w, r24.z - if_nz r9.w - dp3 r25.y, r4.xyzx, r27.xyzx - mad r17.x, r25.y, l(0.500000), l(0.500000) - sample_l_indexable(texture2darray)(float,float,float,float) r25.yzw, r17.xyzx, t10.wxyz, s1, l(0.000000) - endif - movc r25.yzw, r9.wwww, r25.yyzw, r21.xxxx - mad r17.x, -r24.z, r22.w, l(1.000000) - mad r26.xyz, r11.xyzx, r17.xxxx, r25.xxxx - mul r17.x, r21.w, r21.w - div r17.x, r20.w, r17.x - mul r17.x, r23.w, r17.x - mad r21.w, -r12.x, r20.w, r12.x - mad r21.w, r21.w, r12.x, r20.w - sqrt r21.w, r21.w - mad r22.w, -r21.x, r20.w, r21.x - mad r20.w, r22.w, r21.x, r20.w - sqrt r20.w, r20.w - mul r20.w, r12.x, r20.w - mad r20.w, r21.x, r21.w, r20.w - add r20.w, r20.w, l(0.000100) - div r20.w, l(0.500000), r20.w - mul r17.x, r17.x, r20.w - mul r26.xyz, r17.xxxx, r26.xyzx - min r26.xyz, r26.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r27.xy, r21.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r17.x, r27.xyxx, t9.xyzw, s1, l(0.000000) - mul r17.x, r1.w, r17.x - mul r17.x, r7.w, r17.x - div r17.x, r17.x, r8.w - mul r27.xyz, r16.xyzx, r17.xxxx - div r27.xyz, r27.xyzx, r18.xyzx - add r26.xyz, r26.xyzx, r27.xyzx - mul r26.xyz, r26.xyzx, cb3[r20.z + 6].zzzz - max r26.xyz, r26.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r26.xyz, r26.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r25.xyz, r3.xyzx, r25.yzwy - mad r25.xyz, r26.xyzx, r21.xxxx, r25.xyzx - mul r26.xyz, r20.xxxx, cb3[r19.z + 6].xyzx - mul r21.xyw, r21.yyyy, r26.xyxz - mul r21.xyw, r19.xxxx, r21.xyxw - mul r21.xyw, r21.xyxw, r25.xyxz - else - mov r21.xyw, l(0,0,0,0) - endif - else - if_z r19.y - mad r17.x, cb3[r16.w + 6].y, l(0.500000), l(0.500000) - add r25.x, r17.x, -|cb3[r16.w + 6].x| - add r25.y, -r25.x, cb3[r16.w + 6].y - add r17.x, -|r25.x|, l(1.000000) - add r17.x, -|r25.y|, r17.x - max r17.x, r17.x, l(0.000488281250) - ge r19.x, cb3[r16.w + 6].x, l(0.000000) - movc r25.z, r19.x, r17.x, -r17.x - dp3 r17.x, r25.xyzx, r25.xyzx - rsq r17.x, r17.x - mul r25.xyz, r17.xxxx, r25.xyzx - add r26.xyz, -r6.xyzx, cb3[r24.x + 6].xyzx - dp3 r17.x, r26.xyzx, r26.xyzx - rsq r19.x, r17.x - mul r27.xyz, r19.xxxx, r26.xyzx - ftoi r19.x, cb3[r20.z + 6].w - mul r20.xzw, r25.xxyz, cb3[r16.w + 6].zzzz - mad r28.xyz, -r20.xzwx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - mad r20.xzw, r20.xxzw, l(0.500000, 0.000000, 0.500000, 0.500000), r26.xxyz - ftou r19.y, cb3[r19.z + 6].w - and r19.y, r19.y, l(1) - ieq r19.z, r19.y, l(0) - not r19.z, r19.z - lt r22.w, l(0.000000), cb3[r16.w + 6].z - and r19.z, r19.z, r22.w - dp3 r22.w, r28.xyzx, r28.xyzx - sqrt r22.w, r22.w - dp3 r23.w, r20.xzwx, r20.xzwx - sqrt r23.w, r23.w - dp3 r20.x, r28.xyzx, r20.xzwx - mad r20.x, r22.w, r23.w, r20.x - mad r20.x, r20.x, l(0.500000), l(1.000000) - div r20.x, l(1.000000, 1.000000, 1.000000, 1.000000), r20.x - movc r20.x, r19.z, r20.x, l(1.000000) - lt r20.z, cb3[r24.w + 6].w, l(0.000000) - if_nz r20.z - mul r20.z, cb3[r24.x + 6].w, cb3[r24.x + 6].w - mul r20.z, r17.x, r20.z - mad r20.z, -r20.z, r20.z, l(1.000000) - max r20.z, r20.z, l(0.000000) - add r17.x, r17.x, l(1.000000) - div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x - and r20.w, r19.z, l(0x3f800000) - add r22.w, -r17.x, r20.x - mad r17.x, r20.w, r22.w, r17.x - mul r20.z, r20.z, r20.z - mul r17.x, r17.x, r20.z - else - mul r28.xyz, r26.xyzx, cb3[r24.x + 6].wwww - dp3 r20.z, r28.xyzx, r28.xyzx - min r20.z, r20.z, l(1.000000) - add r20.z, -r20.z, l(1.000000) - log r20.z, r20.z - mul r20.z, r20.z, cb3[r24.w + 6].w - exp r20.z, r20.z - mul r17.x, r20.z, r20.x - endif - dp3 r20.x, r27.xyzx, -r25.xyzx - add r20.x, r20.x, -cb3[r16.w + 6].z - mul_sat r20.x, r20.x, cb3[r16.w + 6].w - mul r20.x, r20.x, r20.x - movc r20.x, r19.y, l(1.000000), r20.x - mul r17.x, r17.x, r20.x - not r19.z, r19.z - ige r20.x, r19.x, l(0) - and r19.z, r19.z, r20.x - if_nz r19.z - if_z r19.y - ishl r19.z, r19.x, l(2) - mul r20.xzw, r6.yyyy, cb6[r19.z + 33].xxyw - mad r20.xzw, cb6[r19.z + 32].xxyw, r6.xxxx, r20.xxzw - mad r20.xzw, cb6[r19.z + 34].xxyw, r6.zzzz, r20.xxzw - add r20.xzw, r20.xxzw, cb6[r19.z + 35].xxyw - div_sat r20.xz, r20.xxzx, r20.wwww - mad r20.xz, r20.xxzx, cb6[r19.x + 0].zzwz, cb6[r19.x + 0].xxyx - else - ishl r19.z, r19.x, l(2) - dp3 r25.x, -r26.xyzx, cb6[r19.z + 32].xyzx - dp3 r25.y, -r26.xyzx, cb6[r19.z + 33].xyzx - dp3 r25.z, -r26.xyzx, cb6[r19.z + 34].xyzx - lt r19.z, |r25.x|, |r25.y| - and r19.z, r19.z, l(1) - dp2 r20.w, |r25.xyxx|, icb[r19.z + 0].xyxx - lt r20.w, r20.w, |r25.z| - movc r19.z, r20.w, l(2), r19.z - dp3 r20.w, r25.xyzx, icb[r19.z + 0].xyzx - lt r20.w, r20.w, l(0.000000) - bfi r19.z, l(31), l(1), r19.z, r20.w - ushr r20.w, r19.z, l(1) - dp3 r20.w, r25.xyzx, icb[r20.w + 0].xyzx - div r22.w, l(0.000244140625), cb6[r19.x + 0].w - add r22.w, -r22.w, l(0.500000) - utof r23.w, r19.z - ult r24.z, r19.z, l(2) - and r24.z, r24.z, l(2) - dp2 r24.z, r25.xzxx, icb[r24.z + 0].xzxx - mul r24.z, r24.z, icb[r19.z + 4].z - div r24.z, r24.z, |r20.w| - mad r23.w, r24.z, r22.w, r23.w - add r23.w, r23.w, l(0.500000) - mul_sat r26.x, r23.w, l(0.166666672) - iadd r23.w, l(-1), icb[r19.z + 4].y - dp2 r23.w, r25.yzyy, icb[r23.w + 0].xyxx - mul r19.z, r23.w, icb[r19.z + 4].w - div r19.z, r19.z, |r20.w| - mad_sat r26.y, -r19.z, r22.w, l(0.500000) - mad r20.xz, r26.xxyx, cb6[r19.x + 0].zzwz, cb6[r19.x + 0].xxyx - endif - sample_l_indexable(texture2d)(float,float,float,float) r19.x, r20.xzxx, t13.xyzw, s1, l(0.000000) - mul r17.x, r17.x, r19.x - endif - lt r17.x, l(0.000000), r17.x - if_nz r17.x - if_z r19.y - ftoi r17.x, cb3[r24.y + 6].x - else - add r19.xyz, r6.xyzx, -cb3[r24.x + 6].xyzx - lt r20.xzw, |r19.yyzz|, |r19.xxxy| - and r20.x, r20.z, r20.x - lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - ushr r20.z, cb3[r16.w + 6].w, l(24) - ubfe r24.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r16.w + 6].wwww - movc r19.x, r19.x, r20.z, r24.x - and r16.w, l(255), cb3[r16.w + 6].w - movc r16.w, r19.y, r24.z, r16.w - ubfe r19.y, l(8), l(8), cb3[r24.y + 6].x - and r20.z, l(255), cb3[r24.y + 6].x - movc r19.y, r19.z, r19.y, r20.z - movc r16.w, r20.w, r16.w, r19.y - movc r16.w, r20.x, r19.x, r16.w - ilt r19.x, r16.w, l(80) - movc r17.x, r19.x, r16.w, l(-1) - endif - ishl r16.w, r17.x, l(2) - mad r19.xyz, r27.xyzx, cb4[r17.x + 288].xxxx, r6.xyzx - mul r20.x, l(5.000000), cb4[r17.x + 288].y - mad r19.xyz, r4.xyzx, r20.xxxx, r19.xyzx - mul r24.xyzw, r19.yyyy, cb4[r16.w + 65].xyzw - mad r24.xyzw, cb4[r16.w + 64].xyzw, r19.xxxx, r24.xyzw - mad r24.xyzw, cb4[r16.w + 66].xyzw, r19.zzzz, r24.xyzw - add r24.xyzw, r24.xyzw, cb4[r16.w + 67].xyzw - div r19.xyz, r24.xyzx, r24.wwww - ge r20.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxyz - ge r24.xyz, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r25.xy, -cb4[r17.x + 344].xyxx, cb4[r17.x + 344].zwzz - mad r19.xy, r19.xyxx, r25.xyxx, cb4[r17.x + 344].xyxx - mad r25.xy, r19.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r25.xy, r25.xyxx - mad r19.xy, r19.xyxx, cb4[400].zwzz, -r25.xyxx - add r26.xyzw, r19.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r27.xyzw, r26.xxzz, r26.xxzz - add r25.zw, -r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r26.xz, r19.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r28.xy, r19.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy - add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r19.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r19.xyxx - mul r30.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r19.xy, -r26.xzxx, r26.xzxx, r25.zwzz - add r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r31.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r19.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r30.z, r31.x - mov r30.w, r19.x - mov r29.z, r28.x - mov r29.w, r27.x - add r26.xyzw, r29.zwxz, r30.zwxz - mov r31.z, r30.y - mov r31.w, r19.y - mov r28.z, r29.y - mov r28.w, r27.z - add r27.xyz, r28.zywz, r31.zywz - div r29.xyz, r29.xzwx, r26.zwyz - add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r29.xyz, r29.yxzy, cb4[400].xxxx - div r28.xyz, r28.zywz, r27.xyzx - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyz, r28.xyzx, cb4[400].yyyy - mov r29.w, r28.x - mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r29.ywxw - mad r19.xy, r25.xyxx, cb4[400].xyxx, r29.zwzz - mov r28.w, r29.y - mov r29.yw, r28.yyyz - mad r31.xyzw, r25.xyxy, cb4[400].xyxy, r29.xyzy - mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz - mad r25.xyzw, r25.xyxy, cb4[400].xyxy, r29.xwzw - mul r29.xyzw, r26.zwyz, r27.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r30.xyxx, t6.xxxx, s4, r19.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.w, r30.zwzz, t6.xxxx, s4, r19.z - mul r22.w, r22.w, r29.y - mad r16.w, r29.x, r16.w, r22.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r19.xyxx, t6.xxxx, s4, r19.z - mad r16.w, r29.z, r19.x, r16.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r28.xyxx, t6.xxxx, s4, r19.z - mad r16.w, r29.w, r19.x, r16.w - mul r29.xyzw, r26.xyzw, r27.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r31.xyxx, t6.xxxx, s4, r19.z - mad r16.w, r29.x, r19.x, r16.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r31.zwzz, t6.xxxx, s4, r19.z - mad r16.w, r29.y, r19.x, r16.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r28.zwzz, t6.xxxx, s4, r19.z - mad r16.w, r29.z, r19.x, r16.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r25.xyxx, t6.xxxx, s4, r19.z - mad r16.w, r29.w, r19.x, r16.w - ige r19.x, r17.x, l(0) - or r20.xzw, r20.xxzw, r24.xxyz - or r19.y, r20.z, r20.x - or r19.y, r20.w, r19.y - and r20.x, r19.z, l(0x7fffffff) - ult r20.x, l(0x7f800000), r20.x - or r19.y, r19.y, r20.x - mul r20.x, r26.y, r27.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r25.zwzz, t6.xxxx, s4, r19.z - mad r16.w, r20.x, r19.z, r16.w - add r16.w, r16.w, l(-1.000000) - mad r16.w, cb4[r17.x + 288].w, r16.w, l(1.000000) - movc r16.w, r19.y, l(1.000000), r16.w - movc r16.w, r19.x, r16.w, l(1.000000) - else - mov r16.w, l(1.000000) - endif - else - mov r16.w, l(1.000000) - endif - mul r12.z, r12.z, r16.w - mov r21.xyw, l(0,0,0,0) - endif - add r23.xyz, r21.xywx, r23.xyzx - mov r15.w, r18.w - endloop - mov r3.w, r12.z - add r22.xyz, r22.xyzx, r23.xyzx - iadd r10.w, r10.w, l(1) -endloop -mad r9.xyz, r22.xyzx, r3.wwww, r14.xzwx -ne r1.xw, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxxy -if_nz r1.x - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - add r1.x, r0.z, r13.x - mad r2.z, r12.w, l(-16.000000), l(-1.000000) - exp r2.z, r2.z - log r1.x, |r1.x| - mul r1.x, r1.x, r2.z - exp r1.x, r1.x - add r1.x, r0.z, r1.x - add r1.x, r1.x, l(-1.000000) - mov_sat r12.xyz, r1.xxxx - mad r14.xyz, r3.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r3.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r3.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - max r14.xyz, r0.zzzz, r14.xyzx -else - mov r12.xyz, r1.yyyy - mov r14.xyz, r1.yyyy -endif -if_nz r9.w - mov r17.w, l(0.500000) - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r17.ywzy, t11.xyzw, s1, l(0.000000) -endif -movc r16.xyz, r9.wwww, r16.xyzx, l(1.000000,1.000000,1.000000,0) -mad r17.xyz, r4.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r6.xyzx -round_z r0.z, cb0[212].x -mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx -dp2 r0.z, r1.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r17.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r17.xyzx -mad r18.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r18.xyz, r17.xzyx, -r18.xyzx -max r0.z, |r18.y|, |r18.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.x, |r18.z|, l(-208.000000) -mul_sat r1.x, r1.x, l(0.031250) -max r0.z, r0.z, r1.x -ne r1.x, l(0.000000), cb0[210].w -lt r1.y, r0.z, l(1.000000) -and r1.x, r1.y, r1.x -if_nz r1.x - mad r18.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r18.xyz, r17.xzyx, -r18.xyzx - max r1.x, |r18.y|, |r18.x| - add r1.x, r1.x, l(-29.000000) - add r1.y, |r18.z|, l(-13.000000) - mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) - max r1.x, r1.y, r1.x - lt r1.y, r1.x, l(1.000000) - if_nz r1.y - mad r18.xyz, r17.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r19.xyz, r18.xyzx, cb0[211].xyzx - round_ni r19.xyz, r19.xyzx - mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r19.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r18.xyzx, t17.yzwx, s2, l(0.000000) - add r1.y, -r1.x, l(1.000000) - mul r2.z, l(0.500000), cb0[211].y - mad r3.w, -cb0[211].y, l(0.500000), l(1.000000) - max r2.z, r2.z, r18.y - min r2.z, r3.w, r2.z - mul r18.w, r2.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t18.xyzw, s1, l(0.000000) - mad r2.z, r20.w, r1.y, r0.z - add r21.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t18.xyzw, s1, l(0.000000) - mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r19.yyyy, r21.xyzx - mov r21.w, r19.y - mul r21.xyzw, r1.yyyy, r21.xyzw - add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r19.xxxx, r18.xyzx - mov r18.w, r19.x - mul r18.xyzw, r1.yyyy, r18.xyzw - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r19.wwww, r20.xyzx - mul r19.xyzw, r1.yyyy, r19.xyzw - else - mov r21.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r19.xyzw, l(0,0,0,0) - mov r2.z, r0.z - endif - mad r20.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r20.xyz, r17.xzyx, -r20.xyzx - max r1.y, |r20.y|, |r20.x| - add r1.y, r1.y, l(-116.000000) - mul_sat r1.y, r1.y, l(0.125000) - add r3.w, |r20.z|, l(-52.000000) - mul_sat r3.w, r3.w, l(0.125000) - max r1.y, r1.y, r3.w - lt r3.w, r1.y, l(1.000000) - if_nz r3.w - mad r20.xyz, r17.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r22.xyz, r20.xyzx, cb0[211].xyzx - round_ni r22.xyz, r22.xyzx - mad r20.xyz, r20.xyzx, cb0[211].xyzx, -r22.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r20.xyzx, t19.yzwx, s2, l(0.000000) - add r3.w, -r1.y, l(1.000000) - mul r1.x, r1.x, r3.w - mul r3.w, l(0.500000), cb0[211].y - mad r5.w, -cb0[211].y, l(0.500000), l(1.000000) - max r3.w, r3.w, r20.y - min r3.w, r5.w, r3.w - mul r20.w, r3.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r23.xyzw, r20.xwzx, t20.xyzw, s1, l(0.000000) - mad r2.z, r23.w, r1.x, r2.z - add r24.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t20.xyzw, s1, l(0.000000) - mad r24.xyz, r24.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r24.xyz, r22.yyyy, r24.xyzx - mov r24.w, r22.y - mad r21.xyzw, r24.xyzw, r1.xxxx, r21.xyzw - add r20.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t20.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r22.xxxx, r20.xyzx - mov r20.w, r22.x - mad r18.xyzw, r20.xyzw, r1.xxxx, r18.xyzw - mad r20.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r22.wwww, r20.xyzx - mad r19.xyzw, r22.xyzw, r1.xxxx, r19.xyzw - endif - lt r1.x, l(0.000000), r1.y - if_nz r1.x - mad r17.xyz, r17.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r20.xyz, r17.xyzx, cb0[211].xyzx - mul r22.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r20.xyz, r20.xyzx - mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r20.xyzx - mad r20.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r17.xyz, r22.xyzx, r17.xyzx - min r17.xyz, r20.xyzx, r17.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r23.xyw, r17.xyzx, t21.yzwx, s2, l(0.000000) - add r1.x, -r0.z, l(1.000000) - mul r1.x, r1.x, r1.y - max r1.y, r22.y, r17.y - min r1.y, r20.y, r1.y - mul r17.w, r1.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t22.xyzw, s1, l(0.000000) - add r22.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t22.xyzw, s1, l(0.000000) - mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r23.yyyy, r22.xyzx - mov r22.w, r23.y - mad r21.xyzw, r22.xyzw, r1.xxxx, r21.xyzw - add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t22.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r23.xxxx, r17.xyzx - mov r17.w, r23.x - mad r18.xyzw, r17.xyzw, r1.xxxx, r18.xyzw - mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r23.xyz, r23.wwww, r17.xyzx - mad r19.xyzw, r23.xyzw, r1.xxxx, r19.xyzw - mad r2.z, r20.w, r1.x, r2.z - endif - mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) - add r17.x, -r0.z, r1.x - add r0.z, r0.z, r1.x - mul r17.y, r0.z, l(0.500000) -else - mov r21.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r19.xyzw, l(0,0,0,0) - mov r17.xy, l(0,1.000000,0,0) -endif -mul r20.xyzw, r17.yxyy, cb0[213].ywzx -mad r20.y, r20.y, l(0.500000), r20.x -mul r1.xy, r17.yxyy, cb0[213].wyww -mad r20.x, r1.y, l(0.375000), r1.x -add r19.xyzw, r19.xyzw, r20.wyzx -mul r20.xyzw, r17.yxyy, cb0[214].ywzx -mad r20.y, r20.y, l(0.500000), r20.x -mul r1.xy, r17.yxyy, cb0[214].wyww -mad r20.x, r1.y, l(0.375000), r1.x -add r18.xyzw, r18.xyzw, r20.wyzx -mul r20.xyzw, r17.yxyy, cb0[215].ywzx -mad r20.y, r20.y, l(0.500000), r20.x -mul r1.xy, r17.yxyy, cb0[215].wyww -mad r20.x, r1.y, l(0.375000), r1.x -add r17.xyzw, r20.wyzx, r21.xyzw -ge r1.xy, r5.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r1.y, r1.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r20.xyzw, r5.xyxx, t16.xyzw, s1, l(0.000000) - lt r21.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r20.xyzw| - or r1.xy, r21.zwzz, r21.xyxx - or r0.z, r1.y, r1.x - if_nz r0.z - dp3 r0.z, r20.yzwy, r20.yzwy - sqrt r0.z, r0.z - mov r1.x, l(1.000000) - mov r1.y, r0.z - mov r2.z, l(0) - loop - ge r3.w, l(4.600000), r1.y - breakc_nz r3.w - iadd r3.w, r2.z, l(1) - mul r5.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) - mov r1.xy, r5.xyxx - mov r2.z, r3.w - continue - endloop - mul r20.xyzw, r1.xxxx, r20.xyzw - dp3 r0.z, r20.yzwy, r20.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb7[3].x, cb7[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r1.x, r0.z, l(0.00390625000) - mov r1.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t15.xyzw, s1, l(0.000000) - mad r1.xy, r1.xyxx, cb7[2].xyxx, cb7[2].zwzz - mul r21.x, r1.x, l(3.54490781) - mul r21.yzw, r1.yyyy, r20.yyzw - mul r0.z, r20.x, l(0.406976730) - exp r0.z, r0.z - mul r20.xyzw, r0.zzzz, r21.xyzw - mov r21.xyzw, r20.xyzw - mov r0.z, l(0) - loop - uge r1.x, r0.z, r2.z - breakc_nz r1.x - mul r22.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r1.x, r22.xyzw, r21.xyzw - dp2 r1.y, r22.yxyy, r21.xyxx - dp2 r3.w, r22.zxzz, r21.xzxx - dp2 r5.x, r22.wxww, r21.xwxx - iadd r5.y, r0.z, l(1) - mov r21.xy, r1.xyxx - mov r21.z, r3.w - mov r21.w, r5.x - mov r0.z, r5.y - continue - endloop - mul r20.xyzw, r21.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r21.xyzw, r19.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r20.xyzw, r21.xyzw - dp2 r1.x, r20.yxyy, r21.xyxx - dp2 r1.y, r20.zxzz, r21.xzxx - dp2 r2.z, r20.wxww, r21.xwxx - mul r21.xyzw, r18.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r3.w, r20.xyzw, r21.xyzw - dp2 r5.x, r20.yxyy, r21.xyxx - dp2 r5.y, r20.zxzz, r21.xzxx - dp2 r5.w, r20.wxww, r21.xwxx - mul r21.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r7.w, r20.xyzw, r21.xyzw - dp2 r8.w, r20.yxyy, r21.xyxx - dp2 r9.w, r20.zxzz, r21.xzxx - dp2 r10.w, r20.wxww, r21.xwxx - mul r19.w, r0.z, l(0.886226952) - mul r19.x, r2.z, l(-1.02332675) - mul r19.yz, r1.xxyx, l(0.000000, -1.02332675, 1.02332675, 0.000000) - mul r18.w, r3.w, l(0.886226952) - mul r18.xyz, r5.wxyw, l(-1.02332675, -1.02332675, 1.02332675, 0.000000) - mul r17.w, r7.w, l(0.886226952) - mul r17.x, r10.w, l(-1.02332675) - mul r17.y, r8.w, l(-1.02332675) - mul r17.z, r9.w, l(1.02332675) - endif -endif -mul r5.xyw, r16.xxxx, r19.xyxz -dp3 r0.z, r5.xywx, r4.xyzx -add r0.z, r19.w, r0.z -max r19.x, r0.z, l(0.000000) -mul r5.xyw, r16.yyyy, r18.xyxz -dp3 r0.z, r5.xywx, r4.xyzx -add r0.z, r18.w, r0.z -max r19.y, r0.z, l(0.000000) -mul r5.xyw, r16.zzzz, r17.xyxz -dp3 r0.z, r5.xywx, r4.xyzx -add r0.z, r17.w, r0.z -max r19.z, r0.z, l(0.000000) -add r0.z, l(-1.000000), cb0[113].x -max r1.x, r12.w, l(0.001000) -log r1.x, r1.x -mad r1.x, -r1.x, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.x -mul r1.xy, r2.xyxx, cb1[0].wwww -round_ni r1.xy, r1.xyxx -add r2.z, |r2.w|, -cb1[2].y -round_ni r2.z, r2.z -add r3.w, l(-1.000000), cb1[1].x -max r5.x, r2.z, l(0.000000) -min r3.w, r3.w, r5.x -ge r2.z, r3.w, r2.z -mad r1.x, r1.y, cb1[0].x, r1.x -ftoi r1.x, r1.x -iadd r1.x, r1.x, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx -ftoi r1.y, r3.w -iadd r1.y, r1.y, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx -and r1.x, r1.y, r1.x -and r1.x, r1.x, r2.z -mul r5.xyw, r19.xyxz, cb0[111].xxxx -dp3 r1.y, r5.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r6.w, l(1.000000) -mov r4.w, l(1.000000) -mov r5.xyw, l(0,0,0,0) -mov r2.z, l(1.000000) -mov r3.w, r1.x -mov r7.w, l(0) -loop - lt r8.w, l(0.010000), r2.z - ine r9.w, r3.w, l(0) - and r9.w, r8.w, r9.w - if_nz r9.w - firstbit_lo r9.w, r3.w - ishl r10.w, l(1), r9.w - xor r3.w, r3.w, r10.w - ishl r9.w, r9.w, l(3) - dp4 r16.x, cb1[r9.w + 6].xyzw, r6.xyzw - dp4 r16.y, cb1[r9.w + 7].xyzw, r6.xyzw - dp4 r16.z, cb1[r9.w + 8].xyzw, r6.xyzw - ge r17.xyz, cb1[r9.w + 5].xyzx, |r16.xyzx| - and r10.w, r17.y, r17.x - and r10.w, r17.z, r10.w - if_nz r10.w - mul r10.w, l(0.100000), cb1[r9.w + 5].x - mul r17.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r17.xy, r17.xyxx, r17.xyxx - add r18.xyz, -|r16.xyzx|, cb1[r9.w + 5].xyzx - mul r18.xyz, r18.xyzx, cb1[r9.w + 9].xyzx - eq r11.w, l(1.000000), cb1[r9.w + 10].x - if_nz r11.w - dp3 r20.x, cb1[r9.w + 6].xyzx, r15.xyzx - dp3 r20.y, cb1[r9.w + 7].xyzx, r15.xyzx - dp3 r20.z, cb1[r9.w + 8].xyzx, r15.xyzx - add r21.xyz, -r16.xyzx, cb1[r9.w + 5].xyzx - div r21.xyz, r21.xyzx, r20.xyzx - add r22.xyz, -r16.xyzx, -cb1[r9.w + 5].xyzx - div r22.xyz, r22.xyzx, r20.xyzx - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx - movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx - min r11.w, r21.y, r21.x - min r11.w, r21.z, r11.w - mad r16.xyz, r20.xyzx, r11.wwww, r16.xyzx - else - mov r16.xyz, r15.xyzx - endif - dp3 r11.w, r16.xyzx, r16.xyzx - rsq r11.w, r11.w - mul r16.xyz, r11.wwww, r16.xyzx - lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r20.xyz, -r20.xyzx, r21.xyzx - itof r20.xyz, r20.xyzx - dp3 r11.w, r16.xyzx, r20.xyzx - div r16.xyz, r16.xyzx, r11.wwww - lt r11.w, r16.z, l(0.000000) - add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r16.zw, r16.zzzw, r20.xxxy - movc r16.xy, r11.wwww, r16.zwzz, r16.xyxx - dp4 r11.w, cb1[r9.w + 4].xyzw, r4.xyzw - max r11.w, r11.w, l(0.000000) - max r11.w, r11.w, l(0.000100) - min r12.w, r18.z, r18.y - min r12.w, r12.w, r18.x - add r13.x, r17.y, r17.x - mad r13.x, r17.z, r17.z, r13.x - mad r10.w, r10.w, r10.w, -r13.x - mul r10.w, r10.w, cb1[r9.w + 9].x - mul r10.w, r10.w, cb1[r9.w + 9].x - add r13.x, l(1.000000), -cb1[r9.w + 10].y - mul r10.w, r10.w, r13.x - mul r10.w, r10.w, l(100.000000) - mad_sat r10.w, r12.w, cb1[r9.w + 10].y, r10.w - mul r12.w, r10.w, cb1[r9.w + 10].w - mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww - mov r16.z, cb1[r9.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z - mul r16.xyz, r16.xyzx, cb1[r9.w + 9].wwww - div r13.x, r1.y, r11.w - min r13.x, |r13.x|, l(1.000000) - mad r13.x, r13.x, l(2.000000), r1.y - add r11.w, r11.w, l(2.000000) - div r11.w, r13.x, r11.w - add r11.w, r11.w, l(-1.000000) - mad r11.w, r11.w, cb0[112].w, l(1.000000) - mul r16.xyz, r11.wwww, r16.xyzx - mul r16.xyz, r12.wwww, r16.xyzx - mad r5.xyw, r16.xyxz, r2.zzzz, r5.xyxw - mad r9.w, -r10.w, cb1[r9.w + 10].w, l(1.000000) - mul r2.z, r2.z, r9.w - endif - mov r7.w, l(-1) - continue - else - mov r7.w, r8.w - break - endif - mov r7.w, r8.w -endloop -if_nz r7.w - dp3 r1.x, r15.xyzx, r15.xyzx - rsq r1.x, r1.x - mul r15.xyz, r1.xxxx, r15.xyzx - lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx - lt r17.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r16.xyz, -r16.xyzx, r17.xyzx - itof r16.xyz, r16.xyzx - dp3 r1.x, r15.xyzx, r16.xyzx - div r15.xyz, r15.xyzx, r1.xxxx - lt r1.x, r15.z, l(0.000000) - add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r15.zw, r15.zzzw, r16.xxxy - movc r15.xy, r1.xxxx, r15.zwzz, r15.xyxx - mov r4.w, l(1.000000) - dp4 r1.x, cb1[3].xyzw, r4.xyzw - max r1.x, r1.x, l(0.000000) - max r1.x, r1.x, l(0.000100) - mad r4.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r4.xy, r4.xyxx, cb1[1].wwww, cb1[2].wwww - mov r4.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r4.xyz, r4.xyzx, t5.xyzw, s3, r0.z - div r0.z, r1.y, r1.x - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r1.y - add r1.x, r1.x, l(2.000000) - div r0.z, r0.z, r1.x - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r4.xyz, r0.zzzz, r4.xyzx - mad r5.xyw, r4.xyxz, r2.zzzz, r5.xyxw -endif -mul r4.xyz, r5.xywx, cb0[112].zzzz -mul r4.xyz, r4.xyzx, cb0[111].yyyy -if_nz r1.w - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r1.xyw, v1.xyxx, t2.xywz, s1, cb0[108].x - add r2.z, -r0.z, l(1.000000) - mul r5.xyw, r2.zzzz, r4.xyxz - mad r4.xyz, r1.xywx, r0.zzzz, r5.xywx -endif -mul r1.xyw, r3.xyxz, r19.xyxz -mul r1.xyw, r1.xyxw, cb0[111].xxxx -add r0.z, -r1.z, l(1.000000) -div r0.z, r0.z, r1.z -mul r3.xyz, r0.zzzz, r11.xyzx -mad r3.xyz, r3.xyzx, r13.yzwy, r13.yzwy -mul r3.xyz, r3.xyzx, r4.xyzx -mul r3.xyz, r12.xyzx, r3.xyzx -mad r1.xyz, r1.xywx, r14.xyzx, r3.xyzx -add r1.xyz, r1.xyzx, r9.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r6.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r5.z, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.z, r0.z, l(-1.442695) -exp r2.z, r2.z -add r2.z, -r2.z, l(1.000000) -div r0.z, r2.z, r0.z -mad r2.z, r6.y, cb0[156].w, cb0[158].w -mul r2.z, r2.z, l(1.442695) -exp r2.z, r2.z -mul r0.z, r0.z, r2.z -mul r0.z, r0.z, -r1.w -mul r3.xyz, r0.zzzz, cb0[155].xyzx -mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r3.xyz, r3.xyzx -dp3 r0.z, -r10.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.z, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.z -lt r2.z, l(0.000000), cb0[163].z -if_nz r2.z - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r4.x, r0.y, r0.w, r0.x - dp3 r0.x, -r10.xyzx, -r8.xyzx - add r2.z, r6.y, -cb0[44].y - lt r3.w, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.w - mul r0.x, r0.x, cb0[163].w - div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z - mul r4.z, r0.x, r3.w - mad r4.w, r4.z, r2.z, cb0[44].y - mad r2.z, -r4.z, r2.z, r2.z - mul r4.z, r2.z, cb0[159].z - max r4.z, r4.z, l(-127.000000) - mul r2.z, r2.z, cb0[162].x - max r2.z, r2.z, l(-127.000000) - add r5.x, r4.w, -cb0[159].x - mul r5.x, r5.x, cb0[159].z - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[159].y - lt r5.y, l(5.960464478E-08), |r4.z| - exp r5.w, -r4.z - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r4.z - mad r4.z, -r4.z, l(0.240226507), l(0.693147182) - movc r4.z, r5.y, r5.w, r4.z - add r4.w, r4.w, -cb0[162].z - mul r4.w, r4.w, cb0[162].x - max r4.w, r4.w, l(-127.000000) - exp r4.w, -r4.w - mul r4.w, r4.w, cb0[162].y - lt r5.y, l(5.960464478E-08), |r2.z| - exp r5.w, -r2.z - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r2.z - mad r2.z, -r2.z, l(0.240226507), l(0.693147182) - movc r2.z, r5.y, r5.w, r2.z - mul r2.z, r2.z, r4.w - mad r2.z, r5.x, r4.z, r2.z - mad r0.x, -r0.x, r3.w, l(1.000000) - mul r0.x, r5.z, r0.x - mul r0.x, r0.x, r2.z - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r4.zw, r5.zzzz, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r4.z - add r0.x, r4.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r4.y, r0.w, r4.x, r0.y - ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r2.xxxy - mul r2.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r2.w|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r2.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t14.xyzw, s1, l(0.000000) - add r0.y, |r2.w|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r2.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r2.xyzw, r0.yyyy, r2.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r2.xyz, r4.xyzx, r2.wwww, r2.xyzx - mul r0.x, r0.x, r2.w -else - add r0.y, r6.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.w, cb0[44].y, -cb0[159].x - mul r2.w, r2.w, cb0[159].z - max r2.w, r2.w, l(-127.000000) - exp r2.w, -r2.w - mul r2.w, r2.w, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.w, r0.w, r0.y - mul r0.y, r5.z, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r5.zzzz, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r2.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r3.xyzx -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.w, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r3.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r2.xyzx - -// === Simplified Fog Modification (Anti-Banding) === -// Check if fog modification is enabled via cb13[12].y -lt r15.x, l(0.500000), cb13[12].y -if_nz r15.x - // r1.xyz = scene color, r4.xyz = transmittance, r0.xyz = fog inscatter - // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density - add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx - - // Reduce fog inscatter intensity - mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - - // Modified fog blend: scene * boostedTrans + reducedInscatter - mad r0.xyz, r1.xyzx, r15.xyzx, r16.xyzx -else - // Original fog blend - mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx -endif -// === End Fog Modification === -dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -dp3 r1.w, r7.xyzx, r7.xyzx -sqrt r1.w, r1.w -mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) -mul r2.x, r1.w, cb0[169].x -mad r1.w, -cb0[169].x, r1.w, l(1.000000) -mul r2.yzw, cb0[168].xxyz, cb0[183].wwww -mad r2.yzw, r6.xxyz, cb0[169].yyyy, r2.yyzw -sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t27.xwyz, s2, l(0.000000) -dp2 r2.x, r2.yyyy, r2.xxxx -add r1.w, r1.w, r2.x -add r2.x, r0.w, l(1.000000) -min r1.w, r1.w, r2.x -add r0.xyz, -r1.xyzx, r0.xyzx -mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx -mov o0.w, r0.w -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x99725481.cso b/src/games/endfield/deferred-lighting/0x99725481.cso deleted file mode 100644 index 388c7b2b55ee6224ff4397c9755ff8943d739020..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61036 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xA1716606.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xA1716606.ps_5_0.asm new file mode 100644 index 0000000000..dba3c828e5 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xA1716606.ps_5_0.asm @@ -0,0 +1,2022 @@ +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { 2, 1, -1.000000, 1.000000}, + { 2, 1, 1.000000, 1.000000}, + { 0, 2, 1.000000, -1.000000}, + { 0, 2, 1.000000, 1.000000}, + { 0, 1, 1.000000, 1.000000}, + { 0, 1, -1.000000, 1.000000} } +dcl_constantbuffer CB0[239], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[3], immediateIndexed +dcl_constantbuffer CB3[2054], dynamicIndexed +dcl_constantbuffer CB4[401], dynamicIndexed +dcl_constantbuffer CB5[5], immediateIndexed +dcl_constantbuffer CB6[160], dynamicIndexed +dcl_constantbuffer CB7[4], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_sampler s4, mode_comparison +dcl_sampler s5, mode_comparison +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture2d (float,float,float,float) t13 +dcl_resource_texture2d (float,float,float,float) t14 +dcl_resource_texture2d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture2d (float,float,float,float) t17 +dcl_resource_texture2d (float,float,float,float) t18 +dcl_resource_texture3d (float,float,float,float) t19 +dcl_resource_texture3d (float,float,float,float) t20 +dcl_resource_texture3d (float,float,float,float) t21 +dcl_resource_texture3d (float,float,float,float) t22 +dcl_resource_texture3d (float,float,float,float) t23 +dcl_resource_texture3d (float,float,float,float) t24 +dcl_resource_texture2d (float,float,float,float) t25 +dcl_resource_texture2d (float,float,float,float) t26 +dcl_resource_texture2d (float,float,float,float) t27 +dcl_resource_texture2d (float,float,float,float) t28 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 43 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t26.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t27.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r2.xyw, r1.wwww, r3.xyxz +utof r4.xy, r0.xyxx +mul r4.zw, v0.xxxy, cb0[82].zzzw +mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) +mul r5.zw, r5.zzzw, cb0[82].zzzw +sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) +mul r6.xyzw, -r5.yyyy, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw +mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r3.w, r5.y, cb0[1].z +mad r3.w, cb0[0].z, r5.x, r3.w +mad r3.w, cb0[2].z, r5.z, r3.w +add r3.w, r3.w, cb0[3].z +eq r6.x, l(0.000000), cb0[86].w +add r6.yzw, -r5.xxyz, cb0[44].xxyz +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r6.xyz, r6.xxxx, r6.yzwy, r7.xyzx +dp3 r6.w, r6.xyzx, r6.xyzx +max r7.w, r6.w, l(0.000000) +rsq r7.w, r7.w +mul r8.xyzw, r6.xyzw, r7.wwww +lt r9.x, l(0.000488), cb0[238].x +if_nz r9.x + sample_b_indexable(texture2d)(float,float,float,float) r9.yz, v1.xyxx, t25.zxyw, s1, cb0[108].x +else + mov r9.yz, l(0,1.000000,1.000000,0) +endif +lt r10.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[230].xyxx +if_nz r10.x + add r9.w, |r2.y|, |r2.x| + add r9.w, |r2.w|, r9.w + div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w + mul r10.xzw, |r2.xxyw|, r9.wwww + mul r11.xyz, r5.xyzx, cb0[233].xxxx + sample_l_indexable(texture3d)(float,float,float,float) r9.w, r11.xyzx, t10.yzwx, s2, l(0.000000) + mul r11.xyzw, r10.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) + add r11.xyz, r11.zwzz, r11.xxyx + mad r10.xzw, r10.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r11.xxyz + mad r11.x, r9.w, l(2.000000), l(-1.000000) + mul r10.xzw, r10.xxzw, r11.xxxx + mov r11.x, |r2.y| + add r11.x, r11.x, l(-0.700000) + mul_sat r11.x, r11.x, l(4.000000) + mad r11.y, r11.x, l(-2.000000), l(3.000000) + mul r11.x, r11.x, r11.x + mul r11.x, r11.x, r11.y + add r11.y, -cb0[233].z, cb0[233].y + mad r11.x, r11.x, r11.y, cb0[233].z + mul r10.xzw, r10.xxzw, r11.xxxx +else + mov r10.xzw, l(0,0,0,0) + mov r9.w, l(0) +endif +mad r11.x, -r3.y, r1.w, l(-0.200000) +if_nz r10.y + mul r11.yzw, r2.xxyw, cb0[237].zzzz + mul r12.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[229].yyyy + mad r11.yzw, r11.yyzw, cb0[229].xxxx, r12.xxyz + max r10.y, -r2.y, l(0.000000) + min r10.y, r10.y, l(0.900000) + add r10.y, -r10.y, l(1.000000) + mul_sat r12.x, r11.x, l(-10.000000) + mad r12.y, r12.x, l(-2.000000), l(3.000000) + mul r12.x, r12.x, r12.x + mul r12.x, r12.x, r12.y + max r12.x, r12.x, l(0.100000) + min r12.x, r12.x, l(1.000000) + mul r10.y, r10.y, r12.x + mad r11.yzw, r11.yyzw, r10.yyyy, r5.xxyz + add r10.xyz, r10.xzwx, r11.yzwy + mul r11.yzw, r10.yyyy, cb5[1].xxyz + mad r10.xyw, cb5[0].xyxz, r10.xxxx, r11.yzyw + mad r10.xyz, cb5[2].xyzx, r10.zzzz, r10.xywx + add r10.xyz, r10.xyzx, cb5[3].xyzx + mad r12.x, r10.x, l(0.500000), cb5[4].x + mad r10.x, r10.y, l(0.500000), l(0.500000) + add r12.z, -r10.x, cb5[4].y + add r10.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) + max r10.z, r10.z, l(0.000488) + sample_c_lz_indexable(texture2d)(float,float,float,float) r10.x, r10.xyxx, t9.xxxx, s5, r10.z +else + mov r10.x, l(1.000000) +endif +mov_sat r10.y, r2.y +add r10.z, l(1.000000), -cb0[234].w +mad r10.z, r10.y, r10.z, cb0[234].w +add r11.yz, r5.xxzx, -cb0[44].xxzx +max r10.w, |r11.z|, |r11.y| +mul r11.y, r10.x, r10.z +mul r11.z, l(0.050000), cb0[226].w +mad r11.w, -cb0[226].w, l(0.700000), r10.w +div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z +mul_sat r11.z, r11.z, r11.w +mad r11.w, r11.z, l(-2.000000), l(3.000000) +mul r11.z, r11.z, r11.z +mul r11.z, r11.z, r11.w +mad r10.x, -r10.z, r10.x, l(1.000000) +mad r10.x, r11.z, r10.x, r11.y +deriv_rty_fine r11.yzw, r5.zzxy +deriv_rtx_fine r12.xyz, r5.yzxy +mul r13.xyz, r11.yzwy, r12.xyzx +mad r11.yzw, r11.wwyz, r12.yyzx, -r13.xxyz +dp3 r11.y, r11.yzwy, r11.yzwy +max r11.y, r11.y, l(0.000000) +rsq r11.y, r11.y +mul_sat r11.y, r11.y, r11.z +mad r11.zw, cb0[227].zzzz, l(0.000000, 0.000000, 0.300000, 0.300000), l(0.000000, 0.000000, 0.686000, 0.687000) +add r12.x, |r3.w|, l(-15.000000) +mul_sat r12.x, r12.x, l(0.015000) +add r12.x, -r12.x, l(1.000000) +min r12.y, l(0.990000), cb0[232].w +max r11.z, r11.z, l(0.970000) +add r12.z, -r11.z, l(0.990000) +add r10.y, r10.y, -r11.z +div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r12.z +mul_sat r10.y, r10.y, r11.z +mad r11.z, r10.y, l(-2.000000), l(3.000000) +mul r10.y, r10.y, r10.y +add r12.z, r11.y, l(-0.991000) +mul r12.z, r12.z, l(111.111069) +max r12.z, r12.z, l(0.000000) +mad r12.w, r12.z, l(-2.000000), l(3.000000) +mul r12.z, r12.z, r12.z +mul r12.z, r12.z, r12.w +mad r12.w, r9.w, l(0.200000), l(0.800000) +ge r12.w, r12.w, r1.y +and r12.w, r12.w, l(0x3f800000) +mul r12.z, r12.w, r12.z +mad r10.y, r11.z, r10.y, r12.z +min r10.y, r10.y, l(1.000000) +add r11.z, -r12.y, cb0[232].w +add r10.y, -r12.y, r10.y +div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z +mul_sat r10.y, r10.y, r11.z +mad r11.z, r10.y, l(-2.000000), l(3.000000) +mul r10.y, r10.y, r10.y +mul r10.y, r10.y, r11.z +lt r11.z, l(0.000488), cb0[227].y +add r11.y, -r11.w, r11.y +mul_sat r11.y, r11.y, l(-1000.012878) +mad r11.w, r11.y, l(-2.000000), l(3.000000) +mul r11.y, r11.y, r11.y +mul r11.y, r11.y, r11.w +mad r11.w, r3.y, r1.w, l(0.500000) +mul_sat r11.w, r11.w, l(2.500000) +mad r12.y, r11.w, l(-2.000000), l(3.000000) +mul r11.w, r11.w, r11.w +mul r11.w, r11.w, r12.y +mul r11.y, r11.w, r11.y +lt r11.y, l(0.000488), r11.y +and r11.y, r11.y, r11.z +if_nz r11.y + mul r11.yz, |r2.xxwx|, |r2.xxwx| + add r11.w, r11.z, r11.y + div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w + mul r11.yz, r11.wwww, r11.yyzy + mul r12.yzw, r2.yywx, l(0.000000, 0.000000, 1.000000, 0.000000) + mad r12.yzw, r2.xxyw, l(0.000000, 1.000000, 0.000000, 0.000000), -r12.yyzw + dp2 r11.w, r12.yzyy, r12.yzyy + rsq r11.w, r11.w + mul r12.yzw, r11.wwww, r12.yyzw + mul r13.xyz, r2.ywxy, r12.yzwy + mad r13.xyz, r12.wyzw, r2.wxyw, -r13.xyzx + dp3 r11.w, r13.xyzx, r13.xyzx + rsq r11.w, r11.w + mul r13.xyz, r11.wwww, r13.xzyx + mad r14.xyz, r5.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.314159, 0.314159, 0.314159, 0.000000) + round_ni r14.xyz, r14.xyzx + add r14.xyz, r14.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) + add r14.xy, r14.yyyy, r14.xzxx + mul r14.xy, r14.xyxx, l(0.000977, 0.000977, 0.000000, 0.000000) + ge r14.zw, r14.xxxy, -r14.xxxy + frc r14.xy, |r14.xyxx| + movc r14.xy, r14.zwzz, r14.xyxx, -r14.xyxx + mul r14.xy, r14.xyxx, l(1024.000000, 1024.000000, 0.000000, 0.000000) + dp2 r11.w, r14.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r11.w, null, r11.w + mul r11.w, r11.w, l(43758.546875) + frc r11.w, r11.w + ge r14.xy, r2.wxww, l(0.000000, 0.000000, 0.000000, 0.000000) + movc r14.xy, r14.xyxx, l(1.000000,-1.000000,0,0), l(-1.000000,1.000000,0,0) + mul r14.xy, r5.xzxx, r14.xyxx + mul r12.w, r9.w, r11.w + add r14.w, -r11.w, l(1.000000) + mad r14.w, r14.w, l(0.700000), l(0.300000) + mul r15.xy, r12.wwww, l(3.000000, 6.000000, 0.000000, 0.000000) + mad r12.w, -cb0[227].x, r14.w, r15.x + frc r16.x, r12.w + mad r12.w, cb0[227].x, l(-0.300000), r15.y + frc r16.y, r12.w + mul r11.w, r11.w, l(5.000000) + round_ni r11.w, r11.w + add r15.x, r11.w, l(1.000000) + mul r15.y, r5.y, r15.x + mov r5.w, l(0.100000) + mul r15.xy, r5.ywyy, r15.xyxx + frc r15.xy, r15.xyxx + add r15.zw, r16.xxxy, l(0.000000, 0.000000, -1.000000, -1.000000) + add r15.zw, -r15.zzzw, r15.xxxy + add r15.zw, r15.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) + mul_sat r15.zw, r15.zzzw, l(0.000000, 0.000000, 5.000000, 5.000000) + mad r16.zw, r15.zzzw, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) + mul r15.zw, r15.zzzw, r15.zzzw + mul r15.zw, r15.zzzw, r16.zzzw + add r16.zw, -r15.xxxy, r16.xxxy + max r15.zw, r15.zzzw, r16.zzzw + add r17.xy, -r16.xyxx, r15.xyxx + add r17.xy, r17.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) + mul r17.xy, r17.xyxx, l(5.000000, 5.000000, 0.000000, 0.000000) + max r17.xy, r17.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) + mad r17.zw, r17.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) + mul r17.xy, r17.xyxx, r17.xyxx + mul r17.xy, r17.xyxx, r17.zwzz + add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + max r16.zw, r16.zzzw, r17.xxxy + ge r15.xy, r15.xyxx, r16.xyxx + and r15.xy, r15.xyxx, l(0x3f800000, 0x3f800000, 0, 0) + add r16.xy, -r15.zwzz, r16.zwzz + mad r15.xy, r15.xyxx, r16.xyxx, r15.zwzz + mad r11.w, r15.x, r15.x, l(-0.400000) + mul_sat r11.w, r11.w, l(1.666667) + mad r12.w, r11.w, l(-2.000000), l(3.000000) + mul r11.w, r11.w, r11.w + mul r11.w, r11.w, r12.w + mad r12.w, r15.y, l(2.000000), l(-1.000000) + mul r14.w, r11.w, l(0.010000) + mul r15.x, r12.w, r14.w + mad r16.x, r9.w, l(0.100000), r15.x + mul r14.w, r11.w, r14.w + mad r14.w, r14.w, r12.w, r9.w + mul r16.y, r9.w, r14.w + mov r14.z, r5.y + mad r14.xyzw, r14.yzxz, cb0[228].xyxy, r16.xyxy + sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r14.xyxx, t11.xyzw, s2, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r14.xyzw, r14.zwzz, t11.xyzw, s2, cb0[108].x + mul r14.xyzw, r11.zzzz, r14.xyzw + mad r14.xyzw, r16.xyzw, r11.yyyy, r14.xyzw + mad r11.yz, r14.xxyx, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) + mad r14.x, r11.w, l(2.000000), l(-1.000000) + mad_sat r14.x, r14.x, l(0.800000), r15.y + mad r14.y, -r14.w, l(0.500000), l(1.000000) + mad r14.x, r14.x, r14.y, l(-0.700000) + mul_sat r14.x, r14.x, l(3.333333) + mad r14.y, r14.x, l(-2.000000), l(3.000000) + mul r14.x, r14.x, r14.x + mul r14.x, r14.x, r14.y + mul r12.w, r12.w, r14.w + mad_sat r11.w, r12.w, l(0.500000), r11.w + mad r11.w, r11.w, l(0.500000), l(0.100000) + max r11.w, r11.w, r14.x + add r12.w, -r11.w, l(1.000000) + max r12.w, r12.w, l(0.000000) + mul r14.x, r12.w, r12.w + mul r14.x, r14.x, r14.x + mul r12.w, r12.w, r14.x + ge r12.w, r14.z, r12.w + and r12.w, r12.w, l(0x3f800000) + mad r11.w, r11.w, l(0.700000), l(0.200000) + mad r11.w, r12.w, r11.w, l(0.100000) + mul r11.w, r14.z, r11.w + mul r11.w, r11.w, cb0[227].y + mul r11.w, r11.w, l(0.330000) + ge r12.w, r1.z, l(0.045000) + and r12.w, r12.w, l(0x3f800000) + mul r12.w, r10.x, r12.w + mul r12.w, r12.w, cb0[226].x + mul r12.w, r12.x, r12.w + mul r11.w, r11.w, r12.w + dp2 r12.w, r11.yzyy, r11.yzyy + min r12.w, r12.w, l(1.000000) + add r12.w, -r12.w, l(1.000000) + sqrt r12.w, r12.w + max r12.w, r12.w, l(0.000488) + mul_sat r14.x, r11.w, l(10.000000) + mad r14.y, r14.x, l(-2.000000), l(3.000000) + mul r14.x, r14.x, r14.x + mul r14.x, r14.x, r14.y + mul r14.x, r14.x, cb0[227].y + mul r14.xy, r11.yzyy, r14.xxxx + add r11.y, l(-1.500000), cb0[227].y + mul_sat r11.y, r11.y, l(0.666667) + mad r11.z, r11.y, l(-2.000000), l(3.000000) + mul r11.y, r11.y, r11.y + mul r11.y, r11.y, r11.z + mul r11.z, r11.y, l(-0.200000) + mad r11.y, -r11.y, l(-0.200000), r12.w + mad r14.z, r11.w, r11.y, r11.z + dp3 r11.y, r14.xyzx, r14.xyzx + max r11.y, r11.y, l(0.000000) + rsq r11.y, r11.y + mul r14.xyz, r11.yyyy, r14.xyzx + mov r15.x, r12.z + mov r15.y, r13.x + mov r15.z, r2.x + dp3 r15.x, r15.xyzx, r14.xyzx + mov r13.w, r2.y + dp2 r15.y, r13.zwzz, r14.yzyy + mov r13.x, r12.y + mov r13.z, r2.w + dp3 r15.z, r13.xyzx, r14.xyzx + mad r3.xyz, -r3.xyzx, r1.wwww, r15.xyzx + mad r13.xyz, r11.wwww, r3.xyzx, r2.xywx + mul r1.w, r11.w, cb0[227].y + mul r1.w, r1.w, l(0.330000) +else + mov r13.xyz, r2.xywx + mov r1.w, l(0) +endif +lt r3.x, l(0.000488), r10.y +if_nz r3.x + mul r3.xy, -r5.xzxx, cb0[232].xyxx + frc r11.yz, r3.xxyx + lt r12.yz, l(0.000000, 0.000488, 0.000488, 0.000000), cb0[231].yywy + if_nz r12.y + round_ni r3.xy, r3.xyxx + mul r3.xy, r3.xyxx, l(0.000977, 0.000977, 0.000000, 0.000000) + ge r12.yw, r3.xxxy, -r3.xxxy + frc r3.xy, |r3.xyxx| + movc r3.xy, r12.ywyy, r3.xyxx, -r3.xyxx + mul r3.xy, r3.xyxx, l(1024.000000, 1024.000000, 0.000000, 0.000000) + dp2 r3.x, r3.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) + sincos r3.x, null, r3.x + mul r3.x, r3.x, l(43758.546875) + frc r3.x, r3.x + add r3.y, r3.x, cb0[231].x + frc r3.y, r3.y + mul r3.z, cb0[232].z, cb0[232].z + mul r3.y, r3.z, r3.y + round_ni r3.y, r3.y + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[232].z + ge r3.x, l(0.500000), r3.x + and r3.x, r3.x, l(0x3f800000) + add r12.yw, -r11.yyyz, r11.zzzy + mad r11.yz, r3.xxxx, r12.yywy, r11.yyzy + div r3.x, r3.y, cb0[232].z + ge r11.w, r3.x, -r3.x + frc r3.x, |r3.x| + movc r3.x, r11.w, r3.x, -r3.x + mul r3.x, r3.x, cb0[232].z + mul r14.x, r3.x, r3.z + add r3.x, l(-1.000000), cb0[232].z + mul r3.y, r3.z, r3.y + round_ni r3.y, r3.y + add r3.x, -r3.y, r3.x + mul r14.y, r3.x, r3.z + mad r3.xy, r11.yzyy, r3.zzzz, r14.xyxx + frc r3.xy, r3.xyxx + sample_b_indexable(texture2d)(float,float,float,float) r3.xy, r3.xyxx, t12.xyzw, s1, cb0[108].x + mul r3.xy, r3.xyxx, cb0[231].yyyy + mad r3.xy, r3.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[231].yyyy + else + mov r3.xy, l(0,0,0,0) + endif + if_nz r12.z + mov r14.xw, l(0,0,0,0.500000) + mov r14.y, cb0[231].z + mad r11.yz, -r5.xxzx, cb0[232].xxyx, r14.xxyx + mul r14.z, r9.w, l(0.500000) + add r11.yz, r11.yyzy, r14.zzwz + add r11.yz, r11.yyzy, l(0.000000, -0.500000, -0.500000, 0.000000) + sample_b_indexable(texture2d)(float,float,float,float) r14.xy, r11.yzyy, t12.zwxy, s2, cb0[108].x + mov r15.xz, cb0[231].zzwz + mov r15.y, l(0) + mad r11.yz, -r5.xxzx, cb0[232].xxyx, -r15.xxyx + add r15.y, -r9.w, l(1.000000) + mov r15.x, l(0.500000) + mad r12.yz, l(0.000000, 1.000000, 0.500000, 0.000000), r15.xxyx, l(0.000000, -0.500000, -0.500000, 0.000000) + add r11.yz, r11.yyzy, -r12.yyzy + sample_b_indexable(texture2d)(float,float,float,float) r14.zw, r11.yzyy, t12.xyzw, s2, cb0[108].x + mul r14.xyzw, r14.xyzw, cb0[231].wwww + mad r14.xyzw, r14.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -r15.zzzz + mul r14.xyzw, r9.wwww, r14.xyzw + add r11.yz, r14.zzwz, r14.xxyx + add r3.xy, r3.xyxx, r11.yzyy + endif + mul r11.y, r2.z, l(0.300000) + mad r11.y, r9.w, l(0.700000), r11.y + add r11.z, r2.z, l(-0.100000) + mul_sat r11.z, r11.z, l(100.000000) + mul r11.y, r11.z, r11.y + mul r11.z, r1.y, r11.y + min r11.z, r11.z, l(0.990000) + mad_sat r11.y, r11.y, r1.y, l(0.600000) + add r11.y, -r11.z, r11.y + add r11.z, -r11.z, cb0[232].w + div r11.y, l(1.000000, 1.000000, 1.000000, 1.000000), r11.y + mul_sat r11.y, r11.y, r11.z + mad r11.z, r11.y, l(-2.000000), l(3.000000) + mul r11.y, r11.y, r11.y + mul r11.y, r11.y, r11.z + mul r10.y, r10.y, cb0[226].x + dp2 r11.z, r3.xyxx, r3.xyxx + min r11.z, r11.z, l(1.000000) + add r11.z, -r11.z, l(1.000000) + sqrt r11.z, r11.z + max r3.z, r11.z, l(0.000488) + dp3 r11.z, r3.xyzx, r3.xyzx + rsq r11.z, r11.z + mul r3.xyz, r3.yzxy, r11.zzzz + mul r11.z, r3.y, l(1.000000) + mul r11.w, r11.y, r10.y + mul r11.w, r10.x, r11.w + mul r11.w, r12.x, r11.w + mad r3.xyz, r3.xyzx, l(1.000000, 1.000000, -1.000000, 0.000000), -r2.xywx + mad r13.xyz, r11.wwww, r3.xyzx, r2.xywx + mul r3.x, r1.y, l(0.200000) + add r3.y, -r9.w, l(1.000000) + mul r3.y, r3.y, cb0[232].w + mul r3.z, r3.y, l(0.500000) + mad r3.y, -r3.y, l(0.500000), l(1.000000) + mad r3.y, r11.y, r3.y, r3.z + add r3.z, l(-0.600000), cb0[232].w + mul_sat r3.z, r3.z, l(2.500000) + mad r9.w, r3.z, l(-2.000000), l(3.000000) + mul r3.z, r3.z, r3.z + mul r3.z, r3.z, r9.w + mad_sat r3.y, r3.z, l(0.600000), r3.y + mul r3.y, r3.y, r10.y + mul r3.y, r11.z, r3.y + div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.x + mul_sat r3.x, r3.x, r3.y + mad r3.y, r3.x, l(-2.000000), l(3.000000) + mul r3.x, r3.x, r3.x + mul r3.x, r3.x, r3.y + mul r3.x, r10.x, r3.x + mul r3.x, r12.x, r3.x + max r3.x, r3.x, l(0.000000) +else + mov r3.x, l(0) +endif +min r3.y, r9.z, r9.y +mul r3.z, r10.z, cb0[234].z +mad r9.w, -cb0[234].z, r10.z, l(1.000000) +mad r3.z, r10.x, r9.w, r3.z +mad r9.w, cb0[234].x, cb0[226].w, -cb0[226].w +add r10.x, r10.w, -cb0[226].w +div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w +mul_sat r9.w, r9.w, r10.x +mad r10.x, r9.w, l(-2.000000), l(3.000000) +mul r9.w, r9.w, r9.w +mul r9.w, r9.w, r10.x +add r10.x, -r3.z, cb0[234].y +mad r3.z, r9.w, r10.x, r3.z +add r3.z, -r3.z, l(1.000000) +mul r9.w, r3.z, r9.y +add r1.z, r1.z, l(-0.050000) +add r10.x, -r2.z, l(1.000000) +mad_sat r10.y, r10.x, cb0[226].z, cb0[226].y +mad r10.y, r1.w, cb0[228].z, r10.y +mul r10.z, r2.z, r3.x +mad_sat r10.y, r10.z, l(0.100000), r10.y +add r10.z, -r10.y, l(1.000000) +mad r10.y, r1.x, r10.z, r10.y +mul_sat r10.z, r11.x, l(3.333333) +mad r10.w, r10.z, l(-2.000000), l(3.000000) +mul r10.z, r10.z, r10.z +mad r10.z, -r10.w, r10.z, l(1.000000) +mul r10.w, r10.y, cb0[226].x +add r11.x, -r1.x, l(1.000000) +mul r10.w, r10.w, r11.x +mul r10.w, r10.z, r10.w +mad r10.w, r10.w, l(-0.750000), l(1.000000) +mad r10.y, r10.y, l(-0.300000), l(0.900000) +sqrt r11.x, r10.x +add r10.y, r10.y, r11.x +add_sat r10.y, r10.y, l(-0.600000) +max r10.y, r10.x, r10.y +min r10.y, r10.y, l(0.990000) +add_sat r11.x, l(2.000000), -cb0[226].x +mul r11.x, r11.x, cb0[226].x +mul r10.z, r10.z, r11.x +mad r3.z, -r9.y, r3.z, l(1.000000) +mul r3.z, r3.z, r10.z +add r9.y, -r10.x, r10.y +mad r3.z, r3.z, r9.y, r10.x +add r3.z, -r3.z, l(1.000000) +mul_sat r1.zw, r1.zzzw, l(0.000000, 0.000000, 1.052600, 20.000000) +mad r9.y, r1.w, l(-2.000000), l(3.000000) +mul r1.w, r1.w, r1.w +mul r1.w, r1.w, r9.y +max r1.w, r1.w, r3.x +mad r1.w, r1.w, l(-0.900000), l(1.000000) +mul r3.x, r1.w, r3.z +add r9.y, r9.z, l(-1.000000) +mad r10.x, r1.z, r9.y, l(1.000000) +add r10.y, -r1.z, l(1.000000) +movc r9.xy, r9.xxxx, r10.xyxx, l(1.000000,1.000000,0,0) +min r1.z, r3.x, r9.x +mad r1.w, r3.z, r1.w, -r1.z +mad r1.z, r3.y, r1.w, r1.z +add r1.w, -r1.z, r2.z +mad r11.w, r9.w, r1.w, r1.z +ld_indexable(texture2d)(float,float,float,float) r10.xyz, r0.xyzz, t28.xyzw +min r1.z, r10.w, r9.y +add r1.w, -r1.z, r10.w +mad r1.z, r3.y, r1.w, r1.z +add r1.w, -r1.z, l(1.000000) +mad r1.z, r9.w, r1.w, r1.z +mul r3.xyz, r1.zzzz, r10.xyzx +mul r9.xyz, r1.xxxx, r3.xyzx +mad r9.xyz, r10.xyzx, r1.zzzz, -r9.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz +dp3 r2.z, r13.xyzx, r8.xyzx +max r10.x, r2.z, l(0.000000) +mul r3.y, r11.w, r11.w +mul r12.x, r10.x, r10.x +mul r12.z, r10.x, r12.x +mul r2.z, r3.y, r3.y +mul r3.z, r3.y, r2.z +mov r10.yzw, l(0,0.036546,9.063200,0.990440) +dp2 r14.x, l(3.327070, 1.000000, 0.000000, 0.000000), r10.xyxx +dp2 r14.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r10.xzxx +mov r3.x, l(1.000000) +dp2 r9.w, r14.xyxx, r3.xyxx +mov r12.yw, l(0,9.044010,0,1.000000) +dp3 r14.x, l(3.596850, -1.367720, 1.000000, 0.000000), r12.xzwx +dp3 r14.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r12.xyzx +mov r15.x, l(5.565890) +mov r15.yz, r12.xxzx +dp3 r14.z, l(1.000000, 19.788601, -20.212299, 0.000000), r15.xyzx +dp3 r10.y, r14.xyzx, r3.xyzx +div r9.w, r9.w, r10.y +dp2 r14.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r10.xwxx +mov r12.x, l(1.296780) +mov r12.y, r10.x +dp2 r14.y, l(1.000000, -0.755907, 0.000000, 0.000000), r12.xyxx +dp2 r10.y, r14.xyxx, r3.xyxx +dp3 r14.x, l(2.923380, 59.418800, 1.000000, 0.000000), r12.yzwy +mov r12.xw, l(20.322500,0,0,121.563004) +dp3 r14.y, l(1.000000, -27.030199, 222.591995, 0.000000), r12.xyzx +dp3 r14.z, l(626.130005, 316.627014, 1.000000, 0.000000), r12.yzwy +dp3 r3.x, r14.xyzx, r3.xyzx +div r3.x, r10.y, r3.x +mad r10.yzw, r1.xxzw, r9.wwww, r3.xxxx +add r3.x, r3.x, r9.w +ld_indexable(texture2d)(float,float,float,float) r12.x, r0.xyzz, t7.xyzw +lt r0.z, l(0.001000), r12.x +if_nz r0.z + dp3 r0.z, -r8.xyzx, r13.xyzx + add r0.z, r0.z, r0.z + mad r14.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx + dp3 r0.z, -cb3[0].xyzx, r14.xyzx + mad r15.xyz, cb3[0].xyzx, r0.zzzz, r14.xyzx + lt r0.z, r0.z, cb3[4].z + dp3 r3.z, r15.xyzx, r15.xyzx + max r3.z, r3.z, l(0.000061) + rsq r3.z, r3.z + mul r15.xyz, r3.zzzz, r15.xyzx + mul r15.xyz, r15.xyzx, cb3[4].yyyy + mad r15.xyz, -cb3[0].xyzx, cb3[4].zzzz, r15.xyzx + dp3 r3.z, r15.xyzx, r15.xyzx + rsq r3.z, r3.z + mul r15.xyz, r3.zzzz, r15.xyzx + movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx + mad r15.xyz, r6.xyzx, r7.wwww, r14.xyzx + dp3 r0.z, r15.xyzx, r15.xyzx + max r0.z, r0.z, l(0.000061) + rsq r0.z, r0.z + mul r15.xyz, r0.zzzz, r15.xyzx + dp3_sat r11.y, r14.xyzx, r13.xyzx + dp3_sat r0.z, r13.xyzx, r15.xyzx + min r11.z, r10.x, l(1.000000) + mad r3.z, r0.z, r2.z, -r0.z + mad r0.z, r3.z, r0.z, l(1.000000) + dp3_sat r3.z, r8.xyzx, r15.xyzx + add r3.z, -r3.z, l(1.000000) + mul r9.w, r3.z, r3.z + mul r9.w, r9.w, r9.w + mul r12.z, r3.z, r9.w + add r12.w, -r11.w, l(1.000000) + mad r14.w, -r12.w, l(0.383026), l(-0.076195) + mad r14.w, r12.w, r14.w, l(1.049970) + mad r12.w, r12.w, r14.w, l(0.409255) + min r12.w, r12.w, l(0.999000) + add r14.w, -r12.w, l(1.000000) + add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r15.xyz, r15.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r1.xzwx + mad r3.z, -r9.w, r3.z, l(1.000000) + mad r16.xyz, r1.xzwx, r3.zzzz, r12.zzzz + mul r0.z, r0.z, r0.z + div r0.z, r2.z, r0.z + mad r17.xy, -r11.zyzz, r2.zzzz, r11.zyzz + mad r17.xy, r17.xyxx, r11.zyzz, r2.zzzz + sqrt r17.xy, r17.xyxx + mul r17.xy, r11.yzyy, r17.xyxx + add r2.z, r17.y, r17.x + add r2.z, r2.z, l(0.000100) + div r2.z, l(0.500000), r2.z + mul r0.z, r0.z, r2.z + mul r16.xyz, r0.zzzz, r16.xyzx + min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r17.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r17.xyxx, t13.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r2.z, r17.zwzz, t13.yzxw, s1, l(0.000000) + mul r0.z, r0.z, r2.z + mul r0.z, r12.w, r0.z + div r0.z, r0.z, r14.w + mul r17.xyz, r15.xyzx, r15.xyzx + mul r17.xyz, r0.zzzz, r17.xyzx + mad r15.xyz, -r15.xyzx, r14.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r15.xyz, r17.xyzx, r15.xyzx + add r15.xyz, r15.xyzx, r16.xyzx + mul r15.xyz, r15.xyzx, cb3[4].xxxx + max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r15.xyz, r15.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + dp3_sat r0.z, r14.xyzx, r2.xywx + mul r14.xyz, r0.zzzz, r9.xyzx + mad r14.xyz, r15.xyzx, r11.yyyy, r14.xyzx + mul r14.xyz, r14.xyzx, cb3[1].xyzx + mov r12.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r12.yzw, r12.xyxx, t8.wxyz, s1, cb0[108].x + add r0.z, -r12.x, l(1.000000) + mad r12.xyz, r14.xyzx, r12.yzwy, -r14.xyzx + mad r12.xyz, r0.zzzz, r12.xyzx, r14.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t14.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r12.xyz, r0.zzzz, r12.xyzx +else + mov r12.xyz, l(0,0,0,0) +endif +mul r11.yz, r4.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) +round_ni r11.yz, r11.yyzy +mad r0.z, r11.z, cb2[1].y, r11.y +mul r0.z, r0.z, l(8.000000) +ftoi r0.z, r0.z +mad r2.z, -cb0[85].y, cb2[2].w, |r3.w| +round_ni r2.z, r2.z +add r3.z, l(-1.000000), cb2[1].w +max r9.w, r2.z, l(0.000000) +min r3.z, r3.z, r9.w +mul r9.w, r3.z, l(8.000000) +ftoi r9.w, r9.w +ge r2.z, r3.z, r2.z +iadd r3.z, r9.w, cb0[110].y +dp3 r9.w, -r8.xyzx, r13.xyzx +add r9.w, r9.w, r9.w +mad r14.xyz, r13.xyzx, -r9.wwww, -r8.xyzx +min r11.x, r10.x, l(1.000000) +add r9.w, -r11.w, l(1.000000) +mad r10.x, -r9.w, l(0.383026), l(-0.076195) +mad r10.x, r9.w, r10.x, l(1.049970) +mad r9.w, r9.w, r10.x, l(0.409255) +min r9.w, r9.w, l(0.999000) +add r10.x, -r9.w, l(1.000000) +add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) +mad r15.xyz, r15.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r1.xzwx +mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) +sample_l_indexable(texture2d)(float,float,float,float) r11.y, r11.yzyy, t13.yxzw, s1, l(0.000000) +mad r16.xyz, -r15.xyzx, r10.xxxx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r15.xyz, r15.xyzx, r15.xyzx +mov r17.w, l(1.000000) +mov r18.y, l(1.000000) +mov r19.z, r11.w +mov r20.xyz, l(0,0,0,0) +mov r11.z, l(1.000000) +mov r12.w, l(0) +loop + ilt r14.w, l(7), r12.w + breakc_nz r14.w + iadd r14.w, r0.z, r12.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r14.w, r14.w, l(0), t0.xxxx + iadd r15.w, r3.z, r12.w + ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r15.w, r15.w, l(0), t0.xxxx + and r14.w, r14.w, r15.w + and r14.w, r2.z, r14.w + ishl r15.w, r12.w, l(5) + mov r21.xyz, l(0,0,0,0) + mov r16.w, r11.z + mov r18.z, r14.w + loop + breakc_z r18.z + firstbit_lo r18.w, r18.z + ishl r19.w, l(1), r18.w + xor r19.w, r18.z, r19.w + iadd r18.w, r15.w, r18.w + bfi r22.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r18.wwww, l(1, 3, 5, 6) + bfi r20.w, l(29), l(3), r18.w, l(7) + ftou r21.w, cb3[r22.z + 6].w + ieq r21.w, r21.w, l(1) + if_nz r21.w + add r17.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx + and r23.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.z + 6].xzyx + and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.w + 6].yxzy + ushr r25.xyz, cb3[r22.z + 6].xzyx, l(16, 16, 16, 0) + ushr r26.xyz, cb3[r22.w + 6].yxzy, l(16, 16, 16, 0) + f16tof32 r23.xyz, r23.xyzx + f16tof32 r24.xyz, r24.xyzx + f16tof32 r25.xyz, r25.xyzx + f16tof32 r26.xyw, r26.yxyz + mov r27.xz, r23.xxzx + mov r27.yw, r25.xxxz + dp4 r21.w, r17.xyzw, r27.xyzw + mov r25.x, r23.y + mov r25.z, r24.y + mov r25.w, r26.x + dp4 r22.z, r17.xyzw, r25.xyzw + mov r26.xz, r24.xxzx + dp4 r17.x, r17.xyzw, r26.xyzw + max r17.y, |r21.w|, |r22.z| + max r17.x, |r17.x|, r17.y + mad r17.y, cb3[r20.w + 6].x, l(0.500000), l(0.500000) + add r17.x, -r17.y, r17.x + mad r17.y, -cb3[r20.w + 6].x, l(0.500000), l(0.500000) + div_sat r17.x, r17.x, r17.y + add r17.x, -r17.x, l(1.000000) + mul r17.x, r17.x, r17.x + else + mov r17.x, l(1.000000) + endif + lt r17.y, l(0.500000), cb3[r22.y + 6].z + lt r17.z, r17.x, l(0.001000) + or r17.z, r17.y, r17.z + if_nz r17.z + mov r18.z, r19.w + continue + endif + ishl r17.z, r18.w, l(3) + bfi r18.w, l(29), l(3), r18.w, l(2) + lt r21.w, cb3[r17.z + 6].w, l(1.500000) + if_nz r21.w + mad r21.w, cb3[r18.w + 6].y, l(0.500000), l(0.500000) + add r23.x, r21.w, -|cb3[r18.w + 6].x| + add r23.y, -r23.x, cb3[r18.w + 6].y + add r21.w, -|r23.x|, l(1.000000) + add r21.w, -|r23.y|, r21.w + ge r22.z, cb3[r18.w + 6].x, l(0.000000) + max r24.x, r21.w, l(0.000488) + movc r23.z, r22.z, r24.x, -r24.x + dp3 r24.x, r23.xyzx, r23.xyzx + rsq r24.x, r24.x + mul r24.xyz, r23.xyzx, r24.xxxx + add r25.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx + dp3 r23.z, r25.xyzx, r25.xyzx + rsq r24.w, r23.z + mul r26.xyz, r24.wwww, r25.xyzx + dp3_sat r18.x, r13.xyzx, r26.xyzx + ftoi r25.w, cb3[r20.w + 6].w + mul r27.xyz, r24.xyzx, cb3[r18.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r26.w, cb3[r17.z + 6].w + and r26.w, r26.w, l(1) + ieq r27.w, r26.w, l(0) + not r27.w, r27.w + lt r28.w, l(0.000000), cb3[r18.w + 6].z + and r27.w, r27.w, r28.w + dp3 r28.w, r28.xyzx, r28.xyzx + sqrt r28.w, r28.w + dp3 r29.w, r29.xyzx, r29.xyzx + sqrt r29.w, r29.w + dp3 r30.x, r13.xyzx, r28.xyzx + div r30.x, r30.x, r28.w + dp3 r30.y, r13.xyzx, r29.xyzx + div r30.y, r30.y, r29.w + add r30.x, r30.y, r30.x + mul_sat r30.x, r30.x, l(0.500000) + dp3 r29.x, r28.xyzx, r29.xyzx + mad r28.w, r28.w, r29.w, r29.x + mad r28.w, r28.w, l(0.500000), l(1.000000) + div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r28.w + movc r19.xy, r27.wwww, r30.xyxx, r18.xyxx + lt r28.w, cb3[r22.w + 6].w, l(0.000000) + if_nz r28.w + mul r28.w, cb3[r22.x + 6].w, cb3[r22.x + 6].w + mul r28.w, r23.z, r28.w + mad r28.w, -r28.w, r28.w, l(1.000000) + max r28.w, r28.w, l(0.000000) + add r23.z, r23.z, l(1.000000) + div r23.z, l(1.000000, 1.000000, 1.000000, 1.000000), r23.z + and r29.x, r27.w, l(0x3f800000) + add r29.y, r19.y, -r23.z + mad r23.z, r29.x, r29.y, r23.z + mul r28.w, r28.w, r28.w + mul r23.z, r23.z, r28.w + else + mul r29.xyz, r25.xyzx, cb3[r22.x + 6].wwww + dp3 r28.w, r29.xyzx, r29.xyzx + min r28.w, r28.w, l(1.000000) + add r28.w, -r28.w, l(1.000000) + log r28.w, r28.w + mul r28.w, r28.w, cb3[r22.w + 6].w + exp r28.w, r28.w + mul r23.z, r19.y, r28.w + endif + dp3 r19.y, r26.xyzx, -r24.xyzx + add r19.y, r19.y, -cb3[r18.w + 6].z + mul_sat r19.y, r19.y, cb3[r18.w + 6].w + mul r19.y, r19.y, r19.y + movc r19.y, r26.w, l(1.000000), r19.y + mul r19.y, r19.y, r23.z + not r23.z, r27.w + ige r24.x, r25.w, l(0) + and r23.z, r23.z, r24.x + if_nz r23.z + if_z r26.w + ishl r23.z, r25.w, l(2) + mul r24.xyz, r5.yyyy, cb6[r23.z + 33].xywx + mad r24.xyz, cb6[r23.z + 32].xywx, r5.xxxx, r24.xyzx + mad r24.xyz, cb6[r23.z + 34].xywx, r5.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb6[r23.z + 35].xywx + div_sat r24.xy, r24.xyxx, r24.zzzz + mad r24.xy, r24.xyxx, cb6[r25.w + 0].zwzz, cb6[r25.w + 0].xyxx + else + ishl r23.z, r25.w, l(2) + dp3 r29.x, -r25.xyzx, cb6[r23.z + 32].xyzx + dp3 r29.y, -r25.xyzx, cb6[r23.z + 33].xyzx + dp3 r29.z, -r25.xyzx, cb6[r23.z + 34].xyzx + lt r23.z, |r29.x|, |r29.y| + and r23.z, r23.z, l(1) + dp2 r24.z, |r29.xyxx|, icb[r23.z + 0].xyxx + lt r24.z, r24.z, |r29.z| + movc r23.z, r24.z, l(2), r23.z + dp3 r24.z, r29.xyzx, icb[r23.z + 0].xyzx + lt r24.z, r24.z, l(0.000000) + bfi r23.z, l(31), l(1), r23.z, r24.z + ushr r24.z, r23.z, l(1) + dp3 r24.z, r29.xyzx, icb[r24.z + 0].xyzx + div r28.w, l(0.000244), cb6[r25.w + 0].w + add r28.w, -r28.w, l(0.500000) + utof r29.w, r23.z + ult r30.x, r23.z, l(2) + and r30.x, r30.x, l(2) + dp2 r29.x, r29.xzxx, icb[r30.x + 0].xzxx + mul r29.x, r29.x, icb[r23.z + 4].z + div r29.x, r29.x, |r24.z| + mad r29.x, r29.x, r28.w, r29.w + add r29.x, r29.x, l(0.500000) + mul_sat r30.x, r29.x, l(0.166667) + iadd r29.x, l(-1), icb[r23.z + 4].y + dp2 r29.x, r29.yzyy, icb[r29.x + 0].xyxx + mul r23.z, r29.x, icb[r23.z + 4].w + div r23.z, r23.z, |r24.z| + mad_sat r30.y, -r23.z, r28.w, l(0.500000) + mad r24.xy, r30.xyxx, cb6[r25.w + 0].zwzz, cb6[r25.w + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r23.z, r24.xyxx, t15.yzxw, s1, l(0.000000) + mul r19.y, r19.y, r23.z + endif + lt r23.z, l(0.000000), r19.y + if_nz r23.z + if_z r26.w + ftoi r24.x, cb3[r22.y + 6].x + else + add r29.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx + lt r30.xyz, |r29.yzzy|, |r29.xxyx| + and r24.y, r30.y, r30.x + lt r29.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r29.xyzx + ushr r24.z, cb3[r18.w + 6].w, l(24) + ubfe r30.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r18.w + 6].wwww + movc r24.z, r29.x, r24.z, r30.x + and r25.w, l(255), cb3[r18.w + 6].w + movc r25.w, r29.y, r30.y, r25.w + ubfe r26.w, l(8), l(8), cb3[r22.y + 6].x + and r28.w, l(255), cb3[r22.y + 6].x + movc r26.w, r29.z, r26.w, r28.w + movc r25.w, r30.z, r25.w, r26.w + movc r24.y, r24.y, r24.z, r25.w + ilt r24.z, r24.y, l(80) + movc r24.x, r24.z, r24.y, l(-1) + endif + ishl r24.y, r24.x, l(2) + mad r29.xyz, r26.xyzx, cb4[r24.x + 288].xxxx, r5.xyzx + mul r24.z, l(5.000000), cb4[r24.x + 288].y + mad r29.xyz, r13.xyzx, r24.zzzz, r29.xyzx + mul r30.xyzw, r29.yyyy, cb4[r24.y + 65].xyzw + mad r30.xyzw, cb4[r24.y + 64].xyzw, r29.xxxx, r30.xyzw + mad r29.xyzw, cb4[r24.y + 66].xyzw, r29.zzzz, r30.xyzw + add r29.xyzw, r29.xyzw, cb4[r24.y + 67].xyzw + div r29.xyz, r29.xyzx, r29.wwww + ge r30.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r29.xyzx + ge r31.xyz, r29.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r24.yz, -cb4[r24.x + 344].xxyx, cb4[r24.x + 344].zzwz + mad r24.yz, r29.xxyx, r24.yyzy, cb4[r24.x + 344].xxyx + mad r29.xy, r24.yzyy, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + round_ni r29.xy, r29.xyxx + mad r24.yz, r24.yyzy, cb4[400].zzwz, -r29.xxyx + add r32.xyzw, r24.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r33.xyzw, r32.xxzz, r32.xxzz + add r32.xz, -r24.yyzy, l(1.000000, 0.000000, 1.000000, 0.000000) + min r34.xy, r24.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r34.zw, r24.yyyz, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r35.xy, r32.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r34.zw, -r34.zzzw, r34.zzzw, r32.yyyw + add r34.zw, r34.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r36.xy, r34.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r33.xz, r33.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r24.yz, r33.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r24.yyzy + mul r37.xy, r24.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r24.yz, -r34.xxyx, r34.xxyx, r32.xxzx + add r24.yz, r24.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r34.xy, r24.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r24.yz, r32.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r37.z, r34.x + mov r37.w, r24.y + mov r35.z, r36.x + mov r35.w, r33.x + add r32.xyzw, r35.zwxz, r37.zwxz + mov r34.z, r37.y + mov r34.w, r24.z + mov r36.z, r35.y + mov r36.w, r33.z + add r33.xyz, r34.zywz, r36.zywz + div r34.xyz, r35.xzwx, r32.zwyz + add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r34.xyz, r34.yxzy, cb4[400].xxxx + div r35.xyz, r36.zywz, r33.xyzx + add r35.xyz, r35.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r35.xyz, r35.xyzx, cb4[400].yyyy + mov r34.w, r35.x + mad r36.xyzw, r29.xyxy, cb4[400].xyxy, r34.ywxw + mad r24.yz, r29.xxyx, cb4[400].xxyx, r34.zzwz + mov r35.w, r34.y + mov r34.yw, r35.yyyz + mad r37.xyzw, r29.xyxy, cb4[400].xyxy, r34.xyzy + mad r35.xyzw, r29.xyxy, cb4[400].xyxy, r35.wywz + mad r34.xyzw, r29.xyxy, cb4[400].xyxy, r34.xwzw + mul r38.xyzw, r32.zwyz, r33.xxxy + sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r36.xyxx, t6.xxxx, s4, r29.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r26.w, r36.zwzz, t6.xxxx, s4, r29.z + mul r26.w, r26.w, r38.y + mad r25.w, r38.x, r25.w, r26.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r24.yzyy, t6.xxxx, s4, r29.z + mad r24.y, r38.z, r24.y, r25.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r35.xyxx, t6.xxxx, s4, r29.z + mad r24.y, r38.w, r24.z, r24.y + mul r36.xyzw, r32.xyzw, r33.yyzz + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r37.xyxx, t6.xxxx, s4, r29.z + mad r24.y, r36.x, r24.z, r24.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r37.zwzz, t6.xxxx, s4, r29.z + mad r24.y, r36.y, r24.z, r24.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r35.zwzz, t6.xxxx, s4, r29.z + mad r24.y, r36.z, r24.z, r24.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r34.xyxx, t6.xxxx, s4, r29.z + mad r24.y, r36.w, r24.z, r24.y + ige r24.z, r24.x, l(0) + or r29.xyw, r30.xyxz, r31.xyxz + or r25.w, r29.y, r29.x + or r25.w, r29.w, r25.w + and r26.w, r29.z, l(0x7fffffff) + ult r26.w, l(0x7f800000), r26.w + or r25.w, r25.w, r26.w + mul r26.w, r32.y, r33.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r28.w, r34.zwzz, t6.xxxx, s4, r29.z + mad r24.y, r26.w, r28.w, r24.y + add r24.y, r24.y, l(-1.000000) + mad r24.x, cb4[r24.x + 288].w, r24.y, l(1.000000) + movc r24.x, r25.w, l(1.000000), r24.x + movc r24.x, r24.z, r24.x, l(1.000000) + else + mov r24.x, l(1.000000) + endif + if_nz r27.w + dp3 r24.y, r14.xyzx, r27.xyzx + mul_sat r24.z, r24.w, cb3[r18.w + 6].z + mad r24.z, r24.z, l(0.500000), r3.y + min r24.z, r24.z, l(1.000000) + div r24.z, r3.y, r24.z + mad r29.xyz, r14.xyzx, r24.yyyy, -r27.xyzx + dp3 r25.w, r28.xyzx, r29.xyzx + mul r24.y, r24.y, r24.y + mad r24.y, cb3[r18.w + 6].z, cb3[r18.w + 6].z, -r24.y + div_sat r24.y, r25.w, r24.y + mad r27.xyz, r27.xyzx, r24.yyyy, r28.xyzx + dp3 r24.y, r27.xyzx, r27.xyzx + rsq r24.y, r24.y + mul r26.xyz, r24.yyyy, r27.xyzx + else + mov r24.z, l(1.000000) + endif + if_nz r23.z + mul_sat r23.z, r24.w, cb3[r20.w + 6].y + mad r26.xyz, r6.xyzx, r7.wwww, r26.xyzx + dp3 r24.y, r26.xyzx, r26.xyzx + max r24.y, r24.y, l(0.000061) + rsq r24.y, r24.y + mul r26.xyz, r24.yyyy, r26.xyzx + max r21.w, r21.w, l(0.000000) + movc r23.w, r22.z, r21.w, -r21.w + dp3 r21.w, r23.xywx, r23.xywx + rsq r21.w, r21.w + mul r23.xyw, r21.wwww, r23.xyxw + mul r23.xyw, r23.xyxw, cb3[r18.w + 6].zzzz + mad r27.xyz, -r23.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r23.xyw, r23.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r25.xyxz + dp3 r21.w, r13.xyzx, r27.xyzx + dp3 r22.z, r27.xyzx, r27.xyzx + sqrt r22.z, r22.z + div r21.w, r21.w, r22.z + dp3 r22.z, r13.xyzx, r23.xywx + dp3 r23.x, r23.xywx, r23.xywx + sqrt r23.x, r23.x + div r22.z, r22.z, r23.x + add r21.w, r21.w, r22.z + mul_sat r21.w, r21.w, l(0.500000) + movc r18.x, r27.w, r21.w, r18.x + dp3_sat r21.w, r13.xyzx, r26.xyzx + dp3_sat r22.z, r8.xyzx, r26.xyzx + lt r23.x, l(0.000000), r23.z + mul r23.y, r23.z, r23.z + mad r23.z, r22.z, l(3.600000), l(0.400000) + div r23.y, r23.y, r23.z + mad r23.y, r11.w, r11.w, r23.y + min r23.y, r23.y, l(1.000000) + movc r23.x, r23.x, r23.y, r3.y + mul r23.x, r23.x, r23.x + mad r23.y, r21.w, r23.x, -r21.w + mad r21.w, r23.y, r21.w, l(1.000000) + add r22.z, -r22.z, l(1.000000) + mul r23.y, r22.z, r22.z + mul r23.y, r23.y, r23.y + mul r23.z, r22.z, r23.y + mad r22.z, -r23.y, r22.z, l(1.000000) + mad r23.yzw, r1.xxzw, r22.zzzz, r23.zzzz + mul r21.w, r21.w, r21.w + div r21.w, r23.x, r21.w + mul r21.w, r24.z, r21.w + mad r22.z, -r11.x, r23.x, r11.x + mad r22.z, r22.z, r11.x, r23.x + sqrt r22.z, r22.z + mad r24.y, -r19.x, r23.x, r19.x + mad r23.x, r24.y, r19.x, r23.x + sqrt r23.x, r23.x + mul r23.x, r11.x, r23.x + mad r22.z, r19.x, r22.z, r23.x + add r22.z, r22.z, l(0.000100) + div r22.z, l(0.500000), r22.z + mul r21.w, r21.w, r22.z + mul r23.xyz, r21.wwww, r23.yzwy + min r23.xyz, r23.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r24.yz, r19.xxzx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r21.w, r24.yzyy, t13.yzwx, s1, l(0.000000) + mul r21.w, r11.y, r21.w + mul r21.w, r9.w, r21.w + div r21.w, r21.w, r10.x + mul r24.yzw, r15.xxyz, r21.wwww + div r24.yzw, r24.yyzw, r16.xxyz + add r23.xyz, r23.xyzx, r24.yzwy + mul r23.xyz, r23.xyzx, cb3[r20.w + 6].zzzz + max r23.xyz, r23.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r23.xyz, r23.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r24.yzw, r9.xxyz, r18.xxxx + mad r23.xyz, r23.xyzx, r19.xxxx, r24.yzwy + mul r24.yzw, r19.yyyy, cb3[r17.z + 6].xxyz + mul r24.xyz, r24.xxxx, r24.yzwy + mul r24.xyz, r17.xxxx, r24.xyzx + mul r23.xyz, r23.xyzx, r24.xyzx + else + mov r23.xyz, l(0,0,0,0) + endif + else + if_z r17.y + mad r17.x, cb3[r18.w + 6].y, l(0.500000), l(0.500000) + add r24.x, r17.x, -|cb3[r18.w + 6].x| + add r24.y, -r24.x, cb3[r18.w + 6].y + add r17.x, -|r24.x|, l(1.000000) + add r17.x, -|r24.y|, r17.x + max r17.x, r17.x, l(0.000488) + ge r17.y, cb3[r18.w + 6].x, l(0.000000) + movc r24.z, r17.y, r17.x, -r17.x + dp3 r17.x, r24.xyzx, r24.xyzx + rsq r17.x, r17.x + mul r24.xyz, r17.xxxx, r24.xyzx + add r25.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx + dp3 r17.x, r25.xyzx, r25.xyzx + rsq r17.y, r17.x + mul r26.xyz, r17.yyyy, r25.xyzx + ftoi r17.y, cb3[r20.w + 6].w + mul r27.xyz, r24.xyzx, cb3[r18.w + 6].zzzz + mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + mad r27.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx + ftou r17.z, cb3[r17.z + 6].w + and r17.z, r17.z, l(1) + ieq r18.x, r17.z, l(0) + not r18.x, r18.x + lt r19.x, l(0.000000), cb3[r18.w + 6].z + and r18.x, r18.x, r19.x + dp3 r19.x, r28.xyzx, r28.xyzx + dp3 r19.y, r27.xyzx, r27.xyzx + sqrt r19.xy, r19.xyxx + dp3 r20.w, r28.xyzx, r27.xyzx + mad r19.x, r19.x, r19.y, r20.w + mad r19.x, r19.x, l(0.500000), l(1.000000) + div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x + movc r19.x, r18.x, r19.x, l(1.000000) + lt r19.y, cb3[r22.w + 6].w, l(0.000000) + if_nz r19.y + mul r19.y, cb3[r22.x + 6].w, cb3[r22.x + 6].w + mul r19.y, r17.x, r19.y + mad r19.y, -r19.y, r19.y, l(1.000000) + max r19.y, r19.y, l(0.000000) + add r17.x, r17.x, l(1.000000) + div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x + and r20.w, r18.x, l(0x3f800000) + add r21.w, -r17.x, r19.x + mad r17.x, r20.w, r21.w, r17.x + mul r19.y, r19.y, r19.y + mul r17.x, r17.x, r19.y + else + mul r27.xyz, r25.xyzx, cb3[r22.x + 6].wwww + dp3 r19.y, r27.xyzx, r27.xyzx + min r19.y, r19.y, l(1.000000) + add r19.y, -r19.y, l(1.000000) + log r19.y, r19.y + mul r19.y, r19.y, cb3[r22.w + 6].w + exp r19.y, r19.y + mul r17.x, r19.y, r19.x + endif + dp3 r19.x, r26.xyzx, -r24.xyzx + add r19.x, r19.x, -cb3[r18.w + 6].z + mul_sat r19.x, r19.x, cb3[r18.w + 6].w + mul r19.x, r19.x, r19.x + movc r19.x, r17.z, l(1.000000), r19.x + mul r17.x, r17.x, r19.x + not r18.x, r18.x + ige r19.x, r17.y, l(0) + and r18.x, r18.x, r19.x + if_nz r18.x + if_z r17.z + ishl r18.x, r17.y, l(2) + mul r24.xyz, r5.yyyy, cb6[r18.x + 33].xywx + mad r24.xyz, cb6[r18.x + 32].xywx, r5.xxxx, r24.xyzx + mad r24.xyz, cb6[r18.x + 34].xywx, r5.zzzz, r24.xyzx + add r24.xyz, r24.xyzx, cb6[r18.x + 35].xywx + div_sat r19.xy, r24.xyxx, r24.zzzz + mad r19.xy, r19.xyxx, cb6[r17.y + 0].zwzz, cb6[r17.y + 0].xyxx + else + ishl r18.x, r17.y, l(2) + dp3 r24.x, -r25.xyzx, cb6[r18.x + 32].xyzx + dp3 r24.y, -r25.xyzx, cb6[r18.x + 33].xyzx + dp3 r24.z, -r25.xyzx, cb6[r18.x + 34].xyzx + lt r18.x, |r24.x|, |r24.y| + and r18.x, r18.x, l(1) + dp2 r20.w, |r24.xyxx|, icb[r18.x + 0].xyxx + lt r20.w, r20.w, |r24.z| + movc r18.x, r20.w, l(2), r18.x + dp3 r20.w, r24.xyzx, icb[r18.x + 0].xyzx + lt r20.w, r20.w, l(0.000000) + bfi r18.x, l(31), l(1), r18.x, r20.w + ushr r20.w, r18.x, l(1) + dp3 r20.w, r24.xyzx, icb[r20.w + 0].xyzx + div r21.w, l(0.000244), cb6[r17.y + 0].w + add r21.w, -r21.w, l(0.500000) + utof r22.z, r18.x + ult r22.w, r18.x, l(2) + and r22.w, r22.w, l(2) + dp2 r22.w, r24.xzxx, icb[r22.w + 0].xzxx + mul r22.w, r22.w, icb[r18.x + 4].z + div r22.w, r22.w, |r20.w| + mad r22.z, r22.w, r21.w, r22.z + add r22.z, r22.z, l(0.500000) + mul_sat r25.x, r22.z, l(0.166667) + iadd r22.z, l(-1), icb[r18.x + 4].y + dp2 r22.z, r24.yzyy, icb[r22.z + 0].xyxx + mul r18.x, r22.z, icb[r18.x + 4].w + div r18.x, r18.x, |r20.w| + mad_sat r25.y, -r18.x, r21.w, l(0.500000) + mad r19.xy, r25.xyxx, cb6[r17.y + 0].zwzz, cb6[r17.y + 0].xyxx + endif + sample_l_indexable(texture2d)(float,float,float,float) r17.y, r19.xyxx, t15.yxzw, s1, l(0.000000) + mul r17.x, r17.y, r17.x + endif + lt r17.x, l(0.000000), r17.x + if_nz r17.x + if_z r17.z + ftoi r17.x, cb3[r22.y + 6].x + else + add r22.xzw, r5.xxyz, -cb3[r22.x + 6].xxyz + lt r24.xyz, |r22.zwwz|, |r22.xxzx| + and r17.y, r24.y, r24.x + lt r22.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xxzw + ushr r17.z, cb3[r18.w + 6].w, l(24) + ubfe r19.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r18.w + 6].wwww + movc r17.z, r22.x, r17.z, r19.x + and r18.x, l(255), cb3[r18.w + 6].w + movc r18.x, r22.z, r19.y, r18.x + ubfe r18.w, l(8), l(8), cb3[r22.y + 6].x + and r19.x, l(255), cb3[r22.y + 6].x + movc r18.w, r22.w, r18.w, r19.x + movc r18.x, r24.z, r18.x, r18.w + movc r17.y, r17.y, r17.z, r18.x + ilt r17.z, r17.y, l(80) + movc r17.x, r17.z, r17.y, l(-1) + endif + ishl r17.y, r17.x, l(2) + mad r22.xyz, r26.xyzx, cb4[r17.x + 288].xxxx, r5.xyzx + mul r17.z, l(5.000000), cb4[r17.x + 288].y + mad r22.xyz, r2.xywx, r17.zzzz, r22.xyzx + mul r24.xyzw, r22.yyyy, cb4[r17.y + 65].xyzw + mad r24.xyzw, cb4[r17.y + 64].xyzw, r22.xxxx, r24.xyzw + mad r22.xyzw, cb4[r17.y + 66].xyzw, r22.zzzz, r24.xyzw + add r22.xyzw, r22.xyzw, cb4[r17.y + 67].xyzw + div r22.xyz, r22.xyzx, r22.wwww + ge r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx + ge r25.xyz, r22.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + add r17.yz, -cb4[r17.x + 344].xxyx, cb4[r17.x + 344].zzwz + mad r17.yz, r22.xxyx, r17.yyzy, cb4[r17.x + 344].xxyx + mad r18.xw, r17.yyyz, cb4[400].zzzw, l(0.500000, 0.000000, 0.000000, 0.500000) + round_ni r18.xw, r18.xxxw + mad r17.yz, r17.yyzy, cb4[400].zzwz, -r18.xxwx + add r26.xyzw, r17.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) + mul r27.xyzw, r26.xxzz, r26.xxzz + add r19.xy, -r17.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) + min r22.xy, r17.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) + max r26.xz, r17.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) + mul r28.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r26.xz, -r26.xxzx, r26.xxzx, r26.yywy + add r26.xz, r26.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) + mul r29.xy, r26.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r26.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) + mad r17.yz, r27.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r17.yyzy + mul r27.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mad r17.yz, -r22.xxyx, r22.xxyx, r19.xxyx + add r17.yz, r17.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) + mul r30.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) + mul r17.yz, r26.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) + mov r27.z, r30.x + mov r27.w, r17.y + mov r28.z, r29.x + mov r28.w, r26.x + add r31.xyzw, r27.zwxz, r28.zwxz + mov r30.z, r27.y + mov r30.w, r17.z + mov r29.z, r28.y + mov r29.w, r26.z + add r22.xyw, r29.zyzw, r30.zyzw + div r26.xyz, r28.xzwx, r31.zwyz + add r26.xyz, r26.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r26.xyz, r26.yxzy, cb4[400].xxxx + div r27.xyz, r29.zywz, r22.xywx + add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) + mul r27.xyz, r27.xyzx, cb4[400].yyyy + mov r26.w, r27.x + mad r28.xyzw, r18.xwxw, cb4[400].xyxy, r26.ywxw + mad r17.yz, r18.xxwx, cb4[400].xxyx, r26.zzwz + mov r27.w, r26.y + mov r26.yw, r27.yyyz + mad r29.xyzw, r18.xwxw, cb4[400].xyxy, r26.xyzy + mad r27.xyzw, r18.xwxw, cb4[400].xyxy, r27.wywz + mad r26.xyzw, r18.xwxw, cb4[400].xyxy, r26.xwzw + mul r30.xyzw, r22.xxxy, r31.zwyz + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.xyxx, t6.xxxx, s4, r22.z + sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r28.zwzz, t6.xxxx, s4, r22.z + mul r18.w, r18.w, r30.y + mad r18.x, r30.x, r18.x, r18.w + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r17.yzyy, t6.xxxx, s4, r22.z + mad r17.y, r30.z, r17.y, r18.x + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r27.xyxx, t6.xxxx, s4, r22.z + mad r17.y, r30.w, r17.z, r17.y + mul r28.xyzw, r22.yyww, r31.xyzw + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r29.xyxx, t6.xxxx, s4, r22.z + mad r17.y, r28.x, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r29.zwzz, t6.xxxx, s4, r22.z + mad r17.y, r28.y, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r27.zwzz, t6.xxxx, s4, r22.z + mad r17.y, r28.z, r17.z, r17.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r26.xyxx, t6.xxxx, s4, r22.z + mad r17.y, r28.w, r17.z, r17.y + ige r17.z, r17.x, l(0) + or r24.xyz, r24.xyzx, r25.xyzx + or r18.x, r24.y, r24.x + or r18.x, r24.z, r18.x + and r18.w, r22.z, l(0x7fffffff) + ult r18.w, l(0x7f800000), r18.w + or r18.x, r18.w, r18.x + mul r18.w, r22.w, r31.y + sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r26.zwzz, t6.xxxx, s4, r22.z + mad r17.y, r18.w, r19.x, r17.y + add r17.y, r17.y, l(-1.000000) + mad r17.x, cb4[r17.x + 288].w, r17.y, l(1.000000) + movc r17.x, r18.x, l(1.000000), r17.x + movc r17.x, r17.z, r17.x, l(1.000000) + else + mov r17.x, l(1.000000) + endif + else + mov r17.x, l(1.000000) + endif + mul r16.w, r16.w, r17.x + mov r23.xyz, l(0,0,0,0) + endif + add r21.xyz, r21.xyzx, r23.xyzx + mov r18.z, r19.w + endloop + mov r11.z, r16.w + add r20.xyz, r20.xyzx, r21.xyzx + iadd r12.w, r12.w, l(1) +endloop +mad r6.xyz, r20.xyzx, r11.zzzz, r12.xyzx +ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx +if_nz r3.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + dp3 r2.z, r2.xywx, r8.xyzx + max r2.z, r2.z, l(0.000000) + add r2.z, r0.z, r2.z + mad r3.y, r11.w, l(-16.000000), l(-1.000000) + exp r3.y, r3.y + log r2.z, |r2.z| + mul r2.z, r2.z, r3.y + exp r2.z, r2.z + add r2.z, r0.z, r2.z + add r2.z, r2.z, l(-1.000000) + mov_sat r11.xyz, r2.zzzz + mad r12.xyz, r9.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r9.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + mad r12.xyz, r9.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx + add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r12.xyz, r0.zzzz, r12.xyzx + max r12.xyz, r0.zzzz, r12.xyzx +else + mov r11.xyz, r1.yyyy + mov r12.xyz, r1.yyyy +endif +mad r15.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[216].x +mad r16.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx +dp2 r0.z, r16.xyxx, l(0.067111, 0.005837, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx +mad r16.xyz, cb0[6].xzyx, -cb0[216].wwww, cb0[214].xzyx +add r16.xyz, r15.xzyx, -r16.xyzx +max r0.z, |r16.y|, |r16.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.y, |r16.z|, l(-208.000000) +mul_sat r1.y, r1.y, l(0.031250) +max r0.z, r0.z, r1.y +ne r1.y, l(0.000000), cb0[214].w +lt r2.z, r0.z, l(1.000000) +and r1.y, r1.y, r2.z +if_nz r1.y + mad r16.xyz, cb0[6].xzyx, -cb0[216].yyyy, cb0[214].xzyx + add r16.xyz, r15.xzyx, -r16.xyzx + max r1.y, |r16.y|, |r16.x| + add r1.y, r1.y, l(-29.000000) + mul_sat r1.y, r1.y, l(0.500000) + add r2.z, |r16.z|, l(-13.000000) + mul_sat r2.z, r2.z, l(0.500000) + max r1.y, r1.y, r2.z + lt r2.z, r1.y, l(1.000000) + if_nz r2.z + mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r16.xyzx, cb0[215].xyzx + round_ni r17.xyz, r17.xyzx + mad r16.xyz, r16.xyzx, cb0[215].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t19.yzwx, s2, l(0.000000) + add r2.z, -r1.y, l(1.000000) + mul r3.y, l(0.500000), cb0[215].y + mad r9.w, -cb0[215].y, l(0.500000), l(1.000000) + max r3.y, r3.y, r16.y + min r3.y, r9.w, r3.y + mul r16.w, r3.y, l(0.333333) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t20.xyzw, s1, l(0.000000) + mad r3.y, r18.w, r2.z, r0.z + add r19.xyz, r16.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mul r19.xyzw, r2.zzzz, r19.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t20.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r17.xxxx, r16.xyzx + mov r16.w, r17.x + mul r16.xyzw, r2.zzzz, r16.xyzw + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r18.xyzx + mul r17.xyzw, r2.zzzz, r17.xyzw + else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r3.y, r0.z + endif + mad r18.xyz, cb0[6].xzyx, -cb0[216].zzzz, cb0[214].xzyx + add r18.xyz, r15.xzyx, -r18.xyzx + max r2.z, |r18.y|, |r18.x| + add r2.z, r2.z, l(-116.000000) + mul_sat r2.z, r2.z, l(0.125000) + add r9.w, |r18.z|, l(-52.000000) + mul_sat r9.w, r9.w, l(0.125000) + max r2.z, r2.z, r9.w + lt r9.w, r2.z, l(1.000000) + if_nz r9.w + mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r18.xyzx, cb0[215].xyzx + round_ni r20.xyz, r20.xyzx + mad r18.xyz, r18.xyzx, cb0[215].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t21.yzwx, s2, l(0.000000) + add r9.w, -r2.z, l(1.000000) + mul r1.y, r1.y, r9.w + mul r9.w, l(0.500000), cb0[215].y + mad r10.x, -cb0[215].y, l(0.500000), l(1.000000) + max r9.w, r9.w, r18.y + min r9.w, r10.x, r9.w + mul r18.w, r9.w, l(0.333333) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t22.xyzw, s1, l(0.000000) + mad r3.y, r21.w, r1.y, r3.y + add r22.xyz, r18.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t22.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r20.yyyy, r22.xyzx + mov r22.w, r20.y + mad r19.xyzw, r22.xyzw, r1.yyyy, r19.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t22.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.xxxx, r18.xyzx + mov r18.w, r20.x + mad r16.xyzw, r18.xyzw, r1.yyyy, r16.xyzw + mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r18.xyzx + mad r17.xyzw, r20.xyzw, r1.yyyy, r17.xyzw + endif + lt r1.y, l(0.000000), r2.z + if_nz r1.y + mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r15.xyzx, cb0[215].xyzx + mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[215].xyzx + round_ni r18.xyz, r18.xyzx + mad r15.xyz, r15.xyzx, cb0[215].xyzx, -r18.xyzx + mad r18.xyz, -cb0[215].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r20.xyzx, r15.xyzx + min r15.xyz, r18.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t23.yzwx, s2, l(0.000000) + add r1.y, -r0.z, l(1.000000) + mul r1.y, r1.y, r2.z + max r2.z, r20.y, r15.y + min r2.z, r18.y, r2.z + mul r15.w, r2.z, l(0.333333) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t24.xyzw, s1, l(0.000000) + add r20.xyz, r15.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t24.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r21.yyyy, r20.xyzx + mov r20.w, r21.y + mad r19.xyzw, r20.xyzw, r1.yyyy, r19.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t24.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r21.xxxx, r15.xyzx + mov r15.w, r21.x + mad r16.xyzw, r15.xyzw, r1.yyyy, r16.xyzw + mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r15.xyzx + mad r17.xyzw, r21.xyzw, r1.yyyy, r17.xyzw + mad r3.y, r18.w, r1.y, r3.y + endif + mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r1.y + add r0.z, r0.z, r1.y + mul r15.y, r0.z, l(0.500000) +else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r15.yxyy, cb0[217].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.zw, r15.yyyx, cb0[217].wwwy +mad r18.x, r15.w, l(0.375000), r15.z +add r17.xyzw, r17.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[218].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.zw, r15.yyyx, cb0[218].wwwy +mad r18.x, r15.w, l(0.375000), r15.z +add r16.xyzw, r16.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[219].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r15.xy, r15.yxyy, cb0[219].wyww +mad r18.x, r15.y, l(0.375000), r15.x +add r15.xyzw, r18.wyzx, r19.xyzw +ge r18.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r18.y, r18.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.zwzz, t18.xyzw, s1, l(0.000000) + lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| + or r4.zw, r19.zzzw, r19.xxxy + or r0.z, r4.w, r4.z + if_nz r0.z + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mov r4.z, l(1.000000) + mov r4.w, r0.z + mov r1.y, l(0) + loop + ge r2.z, l(4.600000), r4.w + breakc_nz r2.z + iadd r2.z, r1.y, l(1) + mul r19.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) + mov r4.zw, r19.xxxy + mov r1.y, r2.z + continue + endloop + mul r18.xyzw, r4.zzzz, r18.xyzw + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb7[3].x, cb7[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r19.x, r0.z, l(0.003906) + mov r19.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r19.xyxx, t17.zwxy, s1, l(0.000000) + mad r4.zw, r4.zzzw, cb7[2].xxxy, cb7[2].zzzw + mul r19.x, r4.z, l(3.544908) + mul r19.yzw, r4.wwww, r18.yyzw + mul r0.z, r18.x, l(0.406977) + exp r0.z, r0.z + mul r18.xyzw, r0.zzzz, r19.xyzw + mov r19.xyzw, r18.xyzw + mov r0.z, l(0) + loop + uge r2.z, r0.z, r1.y + breakc_nz r2.z + mul r20.xyzw, r19.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) + dp4 r2.z, r20.xyzw, r19.xyzw + dp2 r3.y, r20.yxyy, r19.xyxx + dp2 r4.z, r20.zxzz, r19.xzxx + dp2 r4.w, r20.wxww, r19.xwxx + iadd r9.w, r0.z, l(1) + mov r19.x, r2.z + mov r19.y, r3.y + mov r19.zw, r4.zzzw + mov r0.z, r9.w + continue + endloop + mul r18.xyzw, r19.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) + mul r19.xyzw, r17.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r18.xyzw, r19.xyzw + dp2 r1.y, r18.yxyy, r19.xyxx + dp2 r2.z, r18.zxzz, r19.xzxx + dp2 r3.y, r18.wxww, r19.xwxx + mul r19.xyzw, r16.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) + dp4 r4.z, r18.xyzw, r19.xyzw + dp2 r4.w, r18.yxyy, r19.xyxx + dp2 r9.w, r18.zxzz, r19.xzxx + dp2 r10.x, r18.wxww, r19.xwxx + mul r19.xyzw, r15.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) + dp4 r12.w, r18.xyzw, r19.xyzw + dp2 r14.w, r18.yxyy, r19.xyxx + dp2 r18.y, r18.zxzz, r19.xzxx + dp2 r18.x, r18.wxww, r19.xwxx + mul r17.w, r0.z, l(0.886227) + mul r17.x, r3.y, l(-1.023327) + mul r17.y, r1.y, l(-1.023327) + mul r17.z, r2.z, l(1.023327) + mul r16.x, r10.x, l(-1.023327) + mul r16.yw, r4.wwwz, l(0.000000, -1.023327, 0.000000, 0.886227) + mul r16.z, r9.w, l(1.023327) + mul r15.w, r12.w, l(0.886227) + mul r15.y, r14.w, l(-1.023327) + mul r15.xz, r18.xxyx, l(-1.023327, 0.000000, 1.023327, 0.000000) + endif +endif +dp3 r0.z, r17.xyzx, r2.xywx +add r0.z, r17.w, r0.z +max r17.x, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r2.xywx +add r0.z, r16.w, r0.z +max r17.y, r0.z, l(0.000000) +dp3 r0.z, r15.xyzx, r2.xywx +add r0.z, r15.w, r0.z +max r17.z, r0.z, l(0.000000) +add r0.z, l(-1.000000), cb0[113].x +max r1.y, r11.w, l(0.001000) +log r1.y, r1.y +mad r1.y, -r1.y, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.y +mul r2.xy, r4.xyxx, cb1[0].wwww +round_ni r2.xy, r2.xyxx +add r1.y, |r3.w|, -cb1[2].y +round_ni r1.y, r1.y +add r2.z, l(-1.000000), cb1[1].x +max r2.w, r1.y, l(0.000000) +min r2.z, r2.z, r2.w +ge r1.y, r2.z, r1.y +mad r2.x, r2.y, cb1[0].x, r2.x +ftoi r2.xy, r2.xzxx +iadd r2.xy, r2.xyxx, cb0[110].zwzz +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.x, r2.x, l(0), t0.xxxx +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.y, r2.y, l(0), t0.xxxx +and r2.x, r2.y, r2.x +and r1.y, r1.y, r2.x +mul r2.xyz, r17.xyzx, cb0[111].xxxx +dp3 r2.x, r2.xyzx, l(0.212673, 0.715152, 0.072175, 0.000000) +mov r42.x, r2.x // Store ambient luminance for cubemap modulation +mov r5.w, l(1.000000) +mov r13.w, l(1.000000) +mov r2.yzw, l(0,0,0,0) +mov r3.y, l(1.000000) +mov r4.z, r1.y +mov r4.w, l(0) +loop + lt r9.w, l(0.010000), r3.y + ine r10.x, r4.z, l(0) + and r10.x, r9.w, r10.x + if_nz r10.x + firstbit_lo r10.x, r4.z + ishl r11.w, l(1), r10.x + xor r4.z, r4.z, r11.w + ishl r10.x, r10.x, l(3) + dp4 r15.x, cb1[r10.x + 6].xyzw, r5.xyzw + dp4 r15.y, cb1[r10.x + 7].xyzw, r5.xyzw + dp4 r15.z, cb1[r10.x + 8].xyzw, r5.xyzw + ge r16.xyz, cb1[r10.x + 5].xyzx, |r15.xyzx| + and r11.w, r16.y, r16.x + and r11.w, r16.z, r11.w + if_nz r11.w + mul r11.w, l(0.100000), cb1[r10.x + 5].x + mul r16.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r16.xy, r16.xyxx, r16.xyxx + add r18.xyz, -|r15.xyzx|, cb1[r10.x + 5].xyzx + mul r18.xyz, r18.xyzx, cb1[r10.x + 9].xyzx + eq r12.w, l(1.000000), cb1[r10.x + 10].x + if_nz r12.w + dp3 r19.x, cb1[r10.x + 6].xyzx, r14.xyzx + dp3 r19.y, cb1[r10.x + 7].xyzx, r14.xyzx + dp3 r19.z, cb1[r10.x + 8].xyzx, r14.xyzx + add r20.xyz, -r15.xyzx, cb1[r10.x + 5].xyzx + div r20.xyz, r20.xyzx, r19.xyzx + add r21.xyz, -r15.xyzx, -cb1[r10.x + 5].xyzx + div r21.xyz, r21.xyzx, r19.xyzx + lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx + movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx + min r12.w, r20.y, r20.x + min r12.w, r20.z, r12.w + mad r15.xyz, r19.xyzx, r12.wwww, r15.xyzx + else + mov r15.xyz, r14.xyzx + endif + dp3 r12.w, r15.xyzx, r15.xyzx + rsq r12.w, r12.w + mul r15.xyz, r12.wwww, r15.xyzx + lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx + lt r20.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r19.xyz, -r19.xyzx, r20.xyzx + itof r19.xyz, r19.xyzx + dp3 r12.w, r15.xyzx, r19.xyzx + div r15.xyz, r15.xyzx, r12.wwww + lt r12.w, r15.z, l(0.000000) + add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r15.zw, r15.zzzw, r19.xxxy + movc r15.xy, r12.wwww, r15.zwzz, r15.xyxx + dp4 r12.w, cb1[r10.x + 4].xyzw, r13.xyzw + max r12.w, r12.w, l(0.000000) + max r12.w, r12.w, l(0.000100) + min r14.w, r18.z, r18.y + min r14.w, r14.w, r18.x + add r15.z, r16.y, r16.x + mad r15.z, r16.z, r16.z, r15.z + mad r11.w, r11.w, r11.w, -r15.z + mul r11.w, r11.w, cb1[r10.x + 9].x + mul r11.w, r11.w, cb1[r10.x + 9].x + add r15.z, l(1.000000), -cb1[r10.x + 10].y + mul r11.w, r11.w, r15.z + mul r11.w, r11.w, l(100.000000) + mad_sat r11.w, r14.w, cb1[r10.x + 10].y, r11.w + mul r14.w, r11.w, cb1[r10.x + 10].w + mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r15.xy, r15.xyxx, cb1[1].wwww, cb1[2].wwww + mov r15.z, cb1[r10.x + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z + mul r15.xyz, r15.xyzx, cb1[r10.x + 9].wwww + div r15.w, r2.x, r12.w + min r15.w, |r15.w|, l(1.000000) + mad r15.w, r15.w, l(2.000000), r2.x + add r12.w, r12.w, l(2.000000) + div r12.w, r15.w, r12.w + add r12.w, r12.w, l(-1.000000) + mad r12.w, r12.w, cb0[112].w, l(1.000000) + mul r15.xyz, r12.wwww, r15.xyzx + mul r15.xyz, r14.wwww, r15.xyzx + mad r2.yzw, r15.xxyz, r3.yyyy, r2.yyzw + mad r10.x, -r11.w, cb1[r10.x + 10].w, l(1.000000) + mul r3.y, r3.y, r10.x + endif + mov r4.w, l(-1) + continue + else + mov r4.w, r9.w + break + endif + mov r4.w, r9.w +endloop +if_nz r4.w + dp3 r1.y, r14.xyzx, r14.xyzx + rsq r1.y, r1.y + mul r5.xzw, r1.yyyy, r14.xxyz + lt r14.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r5.xzwx + lt r15.xyz, r5.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r14.xyz, -r14.xyzx, r15.xyzx + itof r14.xyz, r14.xyzx + dp3 r1.y, r5.xzwx, r14.xyzx + div r5.xzw, r5.xxzw, r1.yyyy + lt r1.y, r5.w, l(0.000000) + add r4.zw, -|r5.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r4.zw, r4.zzzw, r14.xxxy + movc r4.zw, r1.yyyy, r4.zzzw, r5.xxxz + mov r13.w, l(1.000000) + dp4 r1.y, cb1[3].xyzw, r13.xyzw + max r1.y, r1.y, l(0.000000) + max r1.y, r1.y, l(0.000100) + mad r4.zw, r4.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) + mad r13.xy, r4.zwzz, cb1[1].wwww, cb1[2].wwww + mov r13.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r5.xzw, r13.xyzx, t5.xwyz, s3, r0.z + div r0.z, r2.x, r1.y + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r2.x + add r1.y, r1.y, l(2.000000) + div r0.z, r0.z, r1.y + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r5.xzw, r0.zzzz, r5.xxzw + mad r2.yzw, r5.xxzw, r3.yyyy, r2.yyzw +endif +mul r2.xyz, r2.yzwy, cb0[112].zzzz +mul r2.xyz, r2.xyzx, cb0[111].yyyy +// Cubemap ambient link modulation (cb13[13].y) +if_nz cb13[13].y + max r42.x, r42.x, l(0.000000) + min r42.x, r42.x, l(1.000000) + mad r42.x, r42.x, l(0.750000), l(0.250000) + mul r2.xyz, r2.xyzx, r42.xxxx +endif +if_nz r3.z + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x + add r1.y, -r0.z, l(1.000000) + mul r13.xyz, r1.yyyy, r2.xyzx + mad r2.xyz, r5.xzwx, r0.zzzz, r13.xyzx +endif +mul r5.xzw, r9.xxyz, r17.xxyz +mul r5.xzw, r5.xxzw, cb0[111].xxxx +add r0.z, -r3.x, l(1.000000) +div r0.z, r0.z, r3.x +mul r1.xyz, r0.zzzz, r1.xzwx +mad r1.xyz, r1.xyzx, r10.yzwy, r10.yzwy +mul r1.xyz, r1.xyzx, r2.xyzx +mul r1.xyz, r11.xyzx, r1.xyzx +mad r1.xyz, r5.xzwx, r12.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r6.xyzx +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r1.w, r8.w, cb0[154].w, -cb0[153].w +max r1.w, r1.w, l(0.000000) +mul r2.x, r0.z, l(-1.442695) +exp r2.x, r2.x +add r2.x, -r2.x, l(1.000000) +div r0.z, r2.x, r0.z +mad r2.x, r5.y, cb0[156].w, cb0[158].w +mul r2.x, r2.x, l(1.442695) +exp r2.x, r2.x +mul r0.z, r0.z, r2.x +mul r0.z, r0.z, -r1.w +mul r2.xyz, r0.zzzz, cb0[155].xyzx +mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r2.xyz, r2.xyzx +dp3 r0.z, -r8.xyzx, cb0[154].xyzx +mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r2.w, r0.zzzz, cb0[155].wwww +add r1.w, r1.w, -r2.w +lt r2.w, l(0.000000), cb0[165].z +if_nz r2.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r3.x, r0.y, r0.w, r0.x + dp3 r0.x, -r8.xyzx, -r7.xyzx + add r2.w, r5.y, -cb0[44].y + lt r3.z, l(0.000000), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r3.z + mul r0.x, r0.x, cb0[165].w + div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w + mul r4.z, r0.x, r3.z + mad r4.w, r4.z, r2.w, cb0[44].y + mad r2.w, -r4.z, r2.w, r2.w + mad r0.x, -r0.x, r3.z, l(1.000000) + mul r3.z, r8.w, r0.x + mul r4.z, r2.w, cb0[159].z + max r4.z, r4.z, l(-127.000000) + mul r2.w, r2.w, cb0[162].x + max r2.w, r2.w, l(-127.000000) + add r5.x, r4.w, -cb0[159].x + mul r5.x, r5.x, cb0[159].z + max r5.x, r5.x, l(-127.000000) + exp r5.x, -r5.x + mul r5.x, r5.x, cb0[159].y + lt r5.z, l(0.000000), |r4.z| + exp r5.w, -r4.z + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r4.z + mad r4.z, -r4.z, l(0.240227), l(0.693147) + movc r4.z, r5.z, r5.w, r4.z + add r4.w, r4.w, -cb0[162].z + mul r4.w, r4.w, cb0[162].x + max r4.w, r4.w, l(-127.000000) + exp r4.w, -r4.w + mul r4.w, r4.w, cb0[162].y + lt r5.z, l(0.000000), |r2.w| + exp r5.w, -r2.w + add r5.w, -r5.w, l(1.000000) + div r5.w, r5.w, r2.w + mad r2.w, -r2.w, l(0.240227), l(0.693147) + movc r2.w, r5.z, r5.w, r2.w + mul r2.w, r2.w, r4.w + mad r2.w, r5.x, r4.z, r2.w + mad_sat r4.zw, r8.wwww, cb0[160].wwwy, cb0[160].zzzx + mul r3.z, r3.z, r2.w + exp r3.z, -r3.z + min r3.z, r3.z, l(1.000000) + max r3.z, r3.z, cb0[161].w + add r3.z, r4.w, r3.z + add r3.z, r4.z, r3.z + min r3.z, r3.z, l(1.000000) + imad r3.y, r0.w, r3.x, r0.y + ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.000031, 0.000000, 0.000031), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[169].wwww, r4.xxxy + mul r6.xy, r0.ywyy, cb0[167].xyxx + mad r0.y, |r3.w|, cb0[166].x, cb0[166].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[166].z + div r6.z, r0.y, cb0[165].z + sample_l_indexable(texture3d)(float,float,float,float) r9.xyzw, r6.xyzx, t16.xyzw, s1, l(0.000000) + add r0.y, |r3.w|, -cb0[168].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r9.xyzw, r9.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r9.xyzw, r0.yyyy, r9.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r3.z, l(1.000000) + dp3_sat r0.w, r8.xyzx, cb0[163].xyzx + log r0.w, r0.w + mul r0.w, r0.w, cb0[164].w + exp r0.w, r0.w + mul r3.xyw, r0.wwww, cb0[164].xyxz + mad r0.x, r0.x, r8.w, -cb0[163].w + max r0.x, r0.x, l(0.000000) + mul r0.x, r0.x, r2.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + add r0.x, -r0.x, l(1.000000) + mul r3.xyw, r0.xxxx, r3.xyxw + add r0.x, -r4.z, l(1.000000) + mul r3.xyw, r0.xxxx, r3.xyxw + mad r0.xyw, cb0[161].xyxz, r0.yyyy, r3.xyxw + mad r0.xyw, r0.xyxw, r9.wwww, r9.xyxz + mul r2.w, r3.z, r9.w +else + add r3.x, r5.y, -cb0[44].y + mul r3.y, r3.x, cb0[159].z + mul r3.x, r3.x, cb0[162].x + add r3.z, cb0[44].y, -cb0[159].x + mul r3.z, r3.z, cb0[159].z + max r3.xyz, r3.xyzx, l(-127.000000, -127.000000, -127.000000, 0.000000) + exp r3.z, -r3.z + mul r3.z, r3.z, cb0[159].y + lt r3.w, l(0.000000), |r3.y| + exp r4.x, -r3.y + add r4.x, -r4.x, l(1.000000) + div r4.x, r4.x, r3.y + mad r3.y, -r3.y, l(0.240227), l(0.693147) + movc r3.y, r3.w, r4.x, r3.y + add r3.w, cb0[44].y, -cb0[162].z + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[162].y + lt r4.x, l(0.000000), |r3.x| + exp r4.y, -r3.x + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r3.x + mad r3.x, -r3.x, l(0.240227), l(0.693147) + movc r3.x, r4.x, r4.y, r3.x + mul r3.x, r3.x, r3.w + mad r3.x, r3.z, r3.y, r3.x + mad_sat r3.yz, r8.wwww, cb0[160].wwyw, cb0[160].zzxz + mul r3.w, r8.w, r3.x + exp r3.w, -r3.w + min r3.w, r3.w, l(1.000000) + max r3.w, r3.w, cb0[161].w + add r3.z, r3.z, r3.w + add r3.z, r3.y, r3.z + min r2.w, r3.z, l(1.000000) + add r3.z, -r2.w, l(1.000000) + dp3_sat r3.w, r8.xyzx, cb0[163].xyzx + log r3.w, r3.w + mul r3.w, r3.w, cb0[164].w + exp r3.w, r3.w + mul r4.xyz, r3.wwww, cb0[164].xyzx + mad r3.w, r6.w, r7.w, -cb0[163].w + max r3.w, r3.w, l(0.000000) + mul r3.x, r3.w, r3.x + exp r3.x, -r3.x + min r3.x, r3.x, l(1.000000) + add r3.x, -r3.x, l(1.000000) + mul r4.xyz, r3.xxxx, r4.xyzx + add r3.x, -r3.y, l(1.000000) + mul r3.xyw, r3.xxxx, r4.xyxz + mad r0.xyw, cb0[161].xyxz, r3.zzzz, r3.xyxw +endif +mul r3.xyz, r2.wwww, r2.xyzx +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r0.z, r0.z, l(1.000000) +mul r0.z, r0.z, l(0.059683) +mad r4.xyz, cb0[156].xyzx, r0.zzzz, cb0[158].xyzx +mad r0.z, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r1.w, l(12.566371) +sqrt r1.w, r1.w +mul r1.w, r1.w, r3.w +max r1.w, r1.w, l(0.001000) +div r0.z, r0.z, r1.w +mad_sat r4.xyz, cb0[157].xyzx, r0.zzzz, r4.xyzx +mul r4.xyz, r4.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r2.xyz, r2.xyzx, r4.xyzx +mad r0.xyz, r2.xyzx, r2.wwww, r0.xywx +lt r41.x, l(0.500000), cb13[12].y +if_nz r41.x + mul r39.xyz, r3.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) + add r39.xyz, r39.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r39.xyz, r39.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r3.xyzx + mul r40.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + mad o0.xyz, r1.xyzx, r39.xyzx, r40.xyzx +else + mad o0.xyz, r1.xyzx, r3.xyzx, r0.xyzx +endif +dp3 o0.w, r3.xyzx, l(0.333333, 0.333333, 0.333333, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xA4113DE8.cso b/src/games/endfield/deferred-lighting/0xA4113DE8.cso deleted file mode 100644 index a3496847d2ac3a7b0f618ce5b613c697b7c6db6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39372 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 diff --git a/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm deleted file mode 100644 index 3c551d8e5c..0000000000 --- a/src/games/endfield/deferred-lighting/0xA4113DE8.ps_5_0.asm +++ /dev/null @@ -1,1310 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sun Feb 1 03:43:52 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[5], immediateIndexed -dcl_constantbuffer CB3[5], immediateIndexed -dcl_constantbuffer CB4[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture3d (float,float,float,float) t21 -dcl_resource_texture3d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_resource_texture2d (float,float,float,float) t25 -dcl_resource_texture2d (float,float,float,float) t26 -dcl_resource_texture3d (float,float,float,float) t27 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 24 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t24.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t25.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r2.xyw, r1.wwww, r3.xyxz -utof r4.xy, r0.xyxx -mul r4.zw, v0.xxxy, cb0[82].zzzw -mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) -mul r5.zw, r5.zzzw, cb0[82].zzzw -sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) -mul r6.xyzw, -r5.yyyy, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw -mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r3.w, r5.y, cb0[1].z -mad r3.w, cb0[0].z, r5.x, r3.w -mad r3.w, cb0[2].z, r5.z, r3.w -add r3.w, r3.w, cb0[3].z -eq r6.x, l(0.000000), cb0[86].w -add r6.yzw, -r5.xxyz, cb0[44].xxyz -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r8.xyz, r6.xxxx, r6.yzwy, r7.xyzx -dp3 r6.x, r8.xyzx, r8.xyzx -max r7.w, r6.x, l(9.999999939E-09) -rsq r7.w, r7.w -mul r9.xyz, r7.wwww, r8.xyzx -mul r6.x, r6.x, r7.w -lt r8.w, l(0.000488281250), cb0[234].x -if_nz r8.w - sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x -else - mov r10.xy, l(1.000000,1.000000,0,0) -endif -lt r10.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[226].xxxy -if_nz r10.z - add r9.w, |r2.y|, |r2.x| - add r9.w, |r2.w|, r9.w - div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w - mul r11.xyz, |r2.xywx|, r9.wwww - mul r12.xyz, r5.xyzx, cb0[229].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r9.w, r12.xyzx, t9.yzwx, s2, l(0.000000) - mul r12.xyzw, r11.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) - add r11.xyw, r12.zwzz, r12.xxxy - mad r11.xyz, r11.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r11.xywx - mad r10.z, r9.w, l(2.000000), l(-1.000000) - mul r11.xyz, r10.zzzz, r11.xyzx - mov r10.z, |r2.y| - add r10.z, r10.z, l(-0.700000) - mul_sat r10.z, r10.z, l(4.000000) - mad r11.w, r10.z, l(-2.000000), l(3.000000) - mul r10.z, r10.z, r10.z - mul r10.z, r10.z, r11.w - add r11.w, -cb0[229].z, cb0[229].y - mad r10.z, r10.z, r11.w, cb0[229].z - mul r11.xyz, r10.zzzz, r11.xyzx -else - mov r11.xyz, l(0,0,0,0) - mov r9.w, l(0) -endif -mad r10.z, -r3.y, r1.w, l(-0.200000) -if_nz r10.w - mul r12.xyz, r2.xywx, cb0[233].zzzz - mul r13.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy - mad r12.xyz, r12.xyzx, cb0[225].xxxx, r13.xyzx - max r10.w, -r2.y, l(0.000000) - min r10.w, r10.w, l(0.900000) - add r10.w, -r10.w, l(1.000000) - mul_sat r11.w, r10.z, l(-10.000000) - mad r12.w, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r12.w - max r11.w, r11.w, l(0.100000) - min r11.w, r11.w, l(1.000000) - mul r10.w, r10.w, r11.w - mad r12.xyz, r12.xyzx, r10.wwww, r5.xyzx - add r11.xyz, r11.xyzx, r12.xyzx - mul r12.xyz, r11.yyyy, cb3[1].xyzx - mad r11.xyw, cb3[0].xyxz, r11.xxxx, r12.xyxz - mad r11.xyz, cb3[2].xyzx, r11.zzzz, r11.xywx - add r11.xyz, r11.xyzx, cb3[3].xyzx - mad r12.x, r11.x, l(0.500000), cb3[4].x - mad r10.w, r11.y, l(0.500000), l(0.500000) - add r12.z, -r10.w, cb3[4].y - add r11.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r10.w, r11.z, l(0.000488281250) - sample_c_lz_indexable(texture2d)(float,float,float,float) r10.w, r11.xyxx, t8.xxxx, s4, r10.w -else - mov r10.w, l(1.000000) -endif -mov_sat r11.x, r2.y -add r11.y, l(1.000000), -cb0[230].w -mad r11.x, r11.x, r11.y, cb0[230].w -add r11.yz, r5.xxzx, -cb0[44].xxzx -max r11.y, |r11.z|, |r11.y| -mul r11.z, r10.w, r11.x -mul r11.w, l(0.0500000119), cb0[222].w -mad r12.x, -cb0[222].w, l(0.700000), r11.y -div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w -mul_sat r11.w, r11.w, r12.x -mad r12.x, r11.w, l(-2.000000), l(3.000000) -mul r11.w, r11.w, r11.w -mul r11.w, r11.w, r12.x -mad r10.w, -r11.x, r10.w, l(1.000000) -mad r10.w, r11.w, r10.w, r11.z -ge r11.z, r1.z, l(0.045000) -and r11.z, r11.z, l(0x3f800000) -mul r11.z, r10.w, r11.z -deriv_rty_coarse r12.xyz, r5.xyzx -deriv_rtx_coarse r13.xyz, r5.zxyz -mul r14.xyz, r12.xyzx, r13.xyzx -mad r12.xyz, r12.zxyz, r13.yzxy, -r14.xyzx -dp3 r11.w, r12.xyzx, r12.xyzx -max r11.w, r11.w, l(1.175494351E-38) -rsq r11.w, r11.w -mul r12.yzw, r11.wwww, r12.xxzy -mov_sat r13.x, r12.y -add r13.y, r13.x, l(-0.988000) -mul_sat r13.y, r13.y, l(1000.012878) -mad r13.z, r13.y, l(-2.000000), l(3.000000) -mul r13.y, r13.y, r13.y -mul r13.y, r13.y, r13.z -add r13.z, |r3.w|, l(-15.000000) -mul_sat r13.z, r13.z, l(0.015000) -add r13.z, -r13.z, l(1.000000) -lt r13.w, l(0.000488281250), cb0[223].y -mad r14.x, cb0[223].z, l(0.300000), l(0.687000) -add r13.x, r13.x, -r14.x -mul_sat r13.x, r13.x, l(-1000.012878) -mad r14.x, r13.x, l(-2.000000), l(3.000000) -mul r13.x, r13.x, r13.x -mul r13.x, r13.x, r14.x -mad r11.w, r12.x, r11.w, l(0.500000) -mul_sat r11.w, r11.w, l(2.500000) -mad r12.x, r11.w, l(-2.000000), l(3.000000) -mul r11.w, r11.w, r11.w -mul r11.w, r11.w, r12.x -mul r11.w, r11.w, r13.x -lt r11.w, l(0.000488281250), r11.w -and r11.w, r11.w, r13.w -if_nz r11.w - mul r13.xw, |r12.zzzw|, |r12.zzzw| - add r11.w, r13.w, r13.x - div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w - mul r13.xw, r11.wwww, r13.xxxw - mul r14.xyz, r12.ywzy, l(0.000000, 1.000000, 0.000000, 0.000000) - mad r14.xyz, r12.zywz, l(1.000000, 0.000000, 0.000000, 0.000000), -r14.xyzx - dp2 r11.w, r14.xyxx, r14.xyxx - rsq r11.w, r11.w - mul r14.xyz, r11.wwww, r14.xyzx - mul r15.xyz, r12.ywzy, r14.xyzx - mad r15.xyz, r14.zxyz, r12.wzyw, -r15.xyzx - dp3 r11.w, r15.xyzx, r15.xyzx - rsq r11.w, r11.w - mul r15.xyz, r11.wwww, r15.xyzx - add r16.xyz, r5.xyzx, r5.xyzx - round_ni r16.xyz, r16.xyzx - add r16.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - add r14.zw, r16.yyyy, r16.xxxz - dp2 r11.w, r14.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r11.w, null, r11.w - mul r11.w, r11.w, l(43758.546875) - frc r11.w, r11.w - lt r14.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.wwwz - lt r16.xy, r12.wzww, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r14.zw, r14.zzzw, -r16.xxxy - itof r14.zw, r14.zzzw - mul r16.xy, r5.xzxx, r14.zwzz - mul r12.x, r9.w, r11.w - add r14.z, -r11.w, l(1.000000) - mad r14.z, r14.z, l(0.700000), l(0.300000) - mul r17.xy, r12.xxxx, l(3.000000, 6.000000, 0.000000, 0.000000) - mad r12.x, -cb0[223].x, r14.z, r17.x - frc r18.x, r12.x - mad r12.x, cb0[223].x, l(-0.300000), r17.y - frc r18.y, r12.x - mul r11.w, r11.w, l(5.000000) - round_ni r11.w, r11.w - add r17.x, r11.w, l(1.000000) - mul r17.y, r5.y, r17.x - mov r5.w, l(0.100000) - mul r14.zw, r5.yyyw, r17.xxxy - frc r14.zw, r14.zzzw - add r17.xy, r18.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - add r17.xy, r14.zwzz, -r17.xyxx - add r17.xy, r17.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) - mul_sat r17.xy, r17.xyxx, l(5.00000048, 5.00000048, 0.000000, 0.000000) - mad r17.zw, r17.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) - mul r17.xy, r17.xyxx, r17.xyxx - mul r17.xy, r17.xyxx, r17.zwzz - add r17.zw, -r14.zzzw, r18.xxxy - max r17.xy, r17.zwzz, r17.xyxx - add r18.zw, -r18.xxxy, r14.zzzw - add r18.zw, r18.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) - mul r18.zw, r18.zzzw, l(0.000000, 0.000000, 5.00000048, 5.00000048) - max r18.zw, r18.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r19.xy, r18.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) - mul r18.zw, r18.zzzw, r18.zzzw - mul r18.zw, r18.zzzw, r19.xxxy - add r17.zw, r17.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - max r17.zw, r17.zzzw, r18.zzzw - ge r14.zw, r14.zzzw, r18.xxxy - and r14.zw, r14.zzzw, l(0, 0, 0x3f800000, 0x3f800000) - add r17.zw, -r17.xxxy, r17.zzzw - mad r14.zw, r14.zzzw, r17.zzzw, r17.xxxy - mad r11.w, r14.z, r14.z, l(-0.400000) - mul_sat r11.w, r11.w, l(1.66666663) - mad r12.x, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r12.x - mad r12.x, r14.w, l(2.000000), l(-1.000000) - mul r14.z, r11.w, l(0.010000) - mul r17.x, r12.x, r14.z - mad r17.x, r9.w, l(0.100000), r17.x - mul r14.z, r11.w, r14.z - mad r14.z, r14.z, r12.x, r9.w - mul r17.y, r9.w, r14.z - mov r16.z, r5.y - mad r17.zw, r16.yyyz, cb0[224].xxxy, r17.xxxy - sample_b_indexable(texture2d)(float,float,float,float) r18.xyzw, r17.zwzz, t10.xyzw, s2, cb0[108].x - mov r16.w, -r16.x - mad r16.xy, r16.wzww, cb0[224].xyxx, r17.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r16.xyxx, t10.xyzw, s2, cb0[108].x - mul r16.xyzw, r13.wwww, r16.xyzw - mad r16.xyzw, r18.xyzw, r13.xxxx, r16.xyzw - mad r13.xw, r16.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r9.w, r11.w, l(2.000000), l(-1.000000) - mad_sat r9.w, r9.w, l(0.800000), r14.w - mad r14.z, -r16.w, l(0.500000), l(1.000000) - mad r9.w, r9.w, r14.z, l(-0.700000) - mul_sat r9.w, r9.w, l(3.33333325) - mad r14.z, r9.w, l(-2.000000), l(3.000000) - mul r9.w, r9.w, r9.w - mul r9.w, r9.w, r14.z - mul r12.x, r12.x, r16.w - mad_sat r11.w, r12.x, l(0.500000), r11.w - mad r11.w, r11.w, l(0.500000), l(0.100000) - max r9.w, r9.w, r11.w - add r11.w, -r9.w, l(1.000000) - max r11.w, r11.w, l(0.000000) - mul r12.x, r11.w, r11.w - mul r12.x, r12.x, r12.x - mul r11.w, r11.w, r12.x - ge r11.w, r16.z, r11.w - and r11.w, r11.w, l(0x3f800000) - mad r9.w, r9.w, l(0.700000), l(0.200000018) - mad r9.w, r11.w, r9.w, l(0.100000) - mul r9.w, r16.z, r9.w - mul r9.w, r9.w, cb0[223].y - mul r9.w, r9.w, l(0.330000) - mul r11.w, r11.z, cb0[222].x - mul r11.w, r13.z, r11.w - mul r9.w, r9.w, r11.w - dp2 r11.w, r13.xwxx, r13.xwxx - min r11.w, r11.w, l(1.000000) - add r11.w, -r11.w, l(1.000000) - sqrt r11.w, r11.w - max r11.w, r11.w, l(0.000488281250) - mul_sat r12.x, r9.w, l(10.000000) - mad r14.z, r12.x, l(-2.000000), l(3.000000) - mul r12.x, r12.x, r12.x - mul r12.x, r12.x, r14.z - mul r12.x, r12.x, cb0[223].y - mul r16.xy, r12.xxxx, r13.xwxx - add r12.x, l(-1.500000), cb0[223].y - mul_sat r12.x, r12.x, l(0.666666687) - mad r13.x, r12.x, l(-2.000000), l(3.000000) - mul r12.x, r12.x, r12.x - mul r12.x, r12.x, r13.x - mul r13.x, r12.x, l(-0.200000) - mad r11.w, -r12.x, l(-0.200000), r11.w - mad r16.z, r9.w, r11.w, r13.x - dp3 r11.w, r16.xyzx, r16.xyzx - max r11.w, r11.w, l(1.175494351E-38) - rsq r11.w, r11.w - mul r16.xyz, r11.wwww, r16.xyzx - mov r17.x, r14.y - mov r17.y, r15.x - mov r17.z, r12.z - dp3 r17.x, r17.xyzx, r16.xyzx - mov r15.w, r12.y - dp2 r17.y, r15.ywyy, r16.yzyy - mov r12.y, r14.x - mov r12.z, r15.z - dp3 r17.z, r12.yzwy, r16.xyzx - mad r12.xyz, -r3.xyzx, r1.wwww, r17.xyzx - mad r12.xyz, r9.wwww, r12.xyzx, r2.xywx - mul r9.w, r9.w, cb0[223].y - mul r9.w, r9.w, l(0.330000) -else - mov r12.xyz, r2.xywx - mov r9.w, l(0) -endif -lt r13.xw, l(0.000488281250, 0.000000, 0.000000, 0.000488281250), cb0[227].yyyw -or r11.w, r13.w, r13.x -lt r13.x, l(0.000488281250), r13.y -and r11.w, r11.w, r13.x -if_nz r11.w - mul r14.xyz, r2.ywxy, l(1.000000, 0.000000, 0.000000, 0.000000) - mad r14.xyz, r2.xywx, l(0.000000, 0.000000, 1.000000, 0.000000), -r14.xyzx - dp2 r11.w, r14.xzxx, r14.xzxx - rsq r11.w, r11.w - mul r14.xyz, r11.wwww, r14.xyzx - mul r15.xyz, r2.ywxy, r14.xyzx - mad r15.xyz, r14.zxyz, r2.wxyw, -r15.xyzx - dp3 r11.w, r15.xyzx, r15.xyzx - rsq r11.w, r11.w - mul r15.xyz, r11.wwww, r15.xzyx - mul r13.xw, -r5.xxxz, cb0[228].xxxy - frc r14.yw, r13.xxxw - round_ni r13.xw, r13.xxxw - dp2 r11.w, r13.xwxx, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r11.w, null, r11.w - mul r11.w, r11.w, l(43758.546875) - frc r11.w, r11.w - add r13.x, r11.w, cb0[227].x - frc r13.x, r13.x - mul r13.w, cb0[228].z, cb0[228].z - mul r13.x, r13.w, r13.x - round_ni r13.x, r13.x - div r13.w, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[228].z - mad r16.xy, -r5.xzxx, cb0[228].xyxx, cb0[227].zzzz - sample_b_indexable(texture2d)(float,float,float,float) r16.xy, r16.xyxx, t11.zwxy, s2, cb0[108].x - mad r17.xy, -r5.xzxx, cb0[228].xyxx, -cb0[227].zzzz - sample_b_indexable(texture2d)(float,float,float,float) r16.zw, r17.xyxx, t11.xyzw, s2, cb0[108].x - mul r16.xyzw, r16.xyzw, cb0[227].wwww - mad r16.xyzw, r16.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -cb0[227].wwww - ge r11.w, l(0.500000), r11.w - and r11.w, r11.w, l(0x3f800000) - add r17.xy, -r14.ywyy, r14.wyww - mad r14.yw, r11.wwww, r17.xxxy, r14.yyyw - div r11.w, r13.x, cb0[228].z - ge r17.x, r11.w, -r11.w - frc r11.w, |r11.w| - movc r11.w, r17.x, r11.w, -r11.w - mul r11.w, r11.w, cb0[228].z - mul r17.x, r11.w, r13.w - add r17.zw, l(0.000000, 0.000000, -0.050000, -1.000000), cb0[228].wwwz - mul r11.w, r13.w, r13.x - round_ni r11.w, r11.w - add r11.w, -r11.w, r17.w - mul r17.y, r11.w, r13.w - mad r13.xw, r14.yyyw, r13.wwww, r17.xxxy - frc r13.xw, r13.xxxw - sample_b_indexable(texture2d)(float,float,float,float) r13.xw, r13.xwxx, t11.xzwy, s1, cb0[108].x - mul r13.xw, r13.xxxw, cb0[227].yyyy - mad r13.xw, r13.xxxw, l(2.000000, 0.000000, 0.000000, 2.000000), -cb0[227].yyyy - add r14.yw, r16.zzzw, r16.xxxy - add r16.xy, r13.xwxx, r14.ywyy - dp2 r11.w, r16.xyxx, r16.xyxx - min r11.w, r11.w, l(1.000000) - add r11.w, -r11.w, l(1.000000) - sqrt r11.w, r11.w - max r16.z, r11.w, l(0.000488281250) - dp3 r11.w, r16.xyzx, r16.xyzx - rsq r11.w, r11.w - mul r16.xyz, r11.wwww, r16.xyzx - mov r15.w, r2.x - dp2 r18.x, r15.xwxx, r16.yzyy - mov r19.x, r14.z - mov r19.y, r15.z - mov r19.z, r2.y - dp3 r18.y, r19.xyzx, r16.xyzx - mov r15.x, r14.x - mov r15.z, r2.w - dp3 r18.z, r15.xyzx, r16.xyzx - mul r11.z, r11.z, cb0[222].x - mul r11.z, r13.y, r11.z - max r11.w, l(0.000488281250), cb0[228].w - mov_sat r17.z, r17.z - add r13.x, -r11.w, r17.z - add r11.w, r2.z, -r11.w - div r13.x, l(1.000000, 1.000000, 1.000000, 1.000000), r13.x - mul_sat r11.w, r11.w, r13.x - mad r13.x, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r13.x - mul r11.z, r11.w, r11.z - mul r11.z, r13.z, r11.z - mad r3.xyz, -r3.xyzx, r1.wwww, r18.xyzx - mad r12.xyz, r11.zzzz, r3.xyzx, r2.xywx -endif -min r1.w, r10.y, r10.x -mul r3.x, r11.x, cb0[230].z -mad r3.y, -cb0[230].z, r11.x, l(1.000000) -mad r3.x, r10.w, r3.y, r3.x -mad r3.y, cb0[230].x, cb0[222].w, -cb0[222].w -add r3.z, r11.y, -cb0[222].w -div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y -mul_sat r3.y, r3.y, r3.z -mad r3.z, r3.y, l(-2.000000), l(3.000000) -mul r3.y, r3.y, r3.y -mul r3.y, r3.y, r3.z -add r3.z, -r3.x, cb0[230].y -mad r3.x, r3.y, r3.z, r3.x -add r3.x, -r3.x, l(1.000000) -mul r3.y, r3.x, r10.x -add r1.z, r1.z, l(-0.050000) -mul_sat r1.z, r1.z, l(1.052600) -add r3.z, -r2.z, l(1.000000) -mad_sat r10.w, r3.z, cb0[222].z, cb0[222].y -mad_sat r10.w, r9.w, cb0[224].z, r10.w -add r11.x, -r10.w, l(1.000000) -mad r10.w, r1.x, r11.x, r10.w -mul_sat r10.z, r10.z, l(3.33333325) -mad r11.x, r10.z, l(-2.000000), l(3.000000) -mul r10.z, r10.z, r10.z -mad r10.z, -r11.x, r10.z, l(1.000000) -mul r11.x, r10.w, cb0[222].x -add r11.y, -r1.x, l(1.000000) -mul r11.x, r11.y, r11.x -mul r11.x, r10.z, r11.x -mad r11.x, r11.x, l(-0.750000), l(1.000000) -mad r10.w, r10.w, l(-0.299999952), l(0.900000) -sqrt r11.y, r3.z -add r10.w, r10.w, r11.y -add_sat r10.w, r10.w, l(-0.600000) -max r10.w, r3.z, r10.w -min r10.w, r10.w, l(0.990000) -add_sat r11.y, l(2.000000), -cb0[222].x -mul r11.y, r11.y, cb0[222].x -mul r10.z, r10.z, r11.y -mad r3.x, -r10.x, r3.x, l(1.000000) -mul r3.x, r3.x, r10.z -add r10.x, -r3.z, r10.w -mad r3.x, r3.x, r10.x, r3.z -add r3.x, -r3.x, l(1.000000) -mul_sat r3.z, r9.w, l(20.000000) -mad r9.w, r3.z, l(-2.000000), l(3.000000) -mul r3.z, r3.z, r3.z -mul r3.z, r3.z, r9.w -mad r3.z, r3.z, l(-0.900000), l(1.000000) -mul r9.w, r3.z, r3.x -add r10.x, r10.y, l(-1.000000) -mad r10.x, r1.z, r10.x, l(1.000000) -add r10.y, -r1.z, l(1.000000) -movc r10.xy, r8.wwww, r10.xyxx, l(1.000000,1.000000,0,0) -min r1.z, r9.w, r10.x -mad r3.x, r3.x, r3.z, -r1.z -mad r1.z, r1.w, r3.x, r1.z -add r2.z, -r1.z, r2.z -mad r13.z, r3.y, r2.z, r1.z -ld_indexable(texture2d)(float,float,float,float) r10.xzw, r0.xyzz, t26.xwyz -min r1.z, r11.x, r10.y -add r2.z, -r1.z, r11.x -mad r1.z, r1.w, r2.z, r1.z -add r1.w, -r1.z, l(1.000000) -mad r1.z, r3.y, r1.w, r1.z -mul r3.xyz, r1.zzzz, r10.xzwx -mul r11.xyz, r1.xxxx, r3.xyzx -mad r10.xyz, r10.xzwx, r1.zzzz, -r11.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz -dp3 r2.z, r12.xyzx, r9.xyzx -max r11.x, r2.z, l(0.000000) -mul r3.y, r13.z, r13.z -mul r14.x, r11.x, r11.x -mul r14.z, r11.x, r14.x -mul r2.z, r3.y, r3.y -mul r3.z, r3.y, r2.z -mov r11.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r15.x, l(3.327070, 1.000000, 0.000000, 0.000000), r11.xyxx -dp2 r15.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r11.xzxx -mov r3.x, l(1.000000) -dp2 r8.w, r15.xyxx, r3.xyxx -mov r14.yw, l(0,9.044010,0,1.000000) -dp3 r15.x, l(3.596850, -1.367720, 1.000000, 0.000000), r14.xzwx -dp3 r15.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r14.xyzx -mov r16.x, l(5.565890) -mov r16.yz, r14.xxzx -dp3 r15.z, l(1.000000, 19.788601, -20.212299, 0.000000), r16.xyzx -dp3 r9.w, r15.xyzx, r3.xyzx -div r8.w, r8.w, r9.w -dp2 r15.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r11.xwxx -mov r14.x, l(1.296780) -mov r14.y, r11.x -dp2 r15.y, l(1.000000, -0.755907, 0.000000, 0.000000), r14.xyxx -dp2 r9.w, r15.xyxx, r3.xyxx -dp3 r15.x, l(2.923380, 59.418800, 1.000000, 0.000000), r14.yzwy -mov r14.xw, l(20.322500,0,0,121.563004) -dp3 r15.y, l(1.000000, -27.030199, 222.591995, 0.000000), r14.xyzx -dp3 r15.z, l(626.130005, 316.627014, 1.000000, 0.000000), r14.yzwy -dp3 r3.x, r15.xyzx, r3.xyzx -div r3.x, r9.w, r3.x -mad r11.yzw, r1.xxzw, r8.wwww, r3.xxxx -add r3.x, r3.x, r8.w -ld_indexable(texture2d)(float,float,float,float) r3.y, r0.xyzz, t6.zxyw -lt r0.z, l(0.001000), r3.y -if_nz r0.z - dp3 r0.z, -r9.xyzx, r12.xyzx - add r0.z, r0.z, r0.z - mad r14.xyz, r12.xyzx, -r0.zzzz, -r9.xyzx - dp3 r0.z, -cb2[0].xyzx, r14.xyzx - mad r15.xyz, cb2[0].xyzx, r0.zzzz, r14.xyzx - lt r0.z, r0.z, cb2[4].z - dp3 r8.w, r15.xyzx, r15.xyzx - max r8.w, r8.w, l(0.0000610351562) - rsq r8.w, r8.w - mul r15.xyz, r8.wwww, r15.xyzx - mul r15.xyz, r15.xyzx, cb2[4].yyyy - mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx - dp3 r8.w, r15.xyzx, r15.xyzx - rsq r8.w, r8.w - mul r15.xyz, r8.wwww, r15.xyzx - movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx - mad r8.xyz, r8.xyzx, r7.wwww, r14.xyzx - dp3 r0.z, r8.xyzx, r8.xyzx - max r0.z, r0.z, l(0.0000610351562) - rsq r0.z, r0.z - mul r8.xyz, r0.zzzz, r8.xyzx - dp3_sat r13.x, r14.xyzx, r12.xyzx - dp3_sat r0.z, r12.xyzx, r8.xyzx - min r13.y, r11.x, l(1.000000) - mad r7.w, r0.z, r2.z, -r0.z - mad r0.z, r7.w, r0.z, l(1.000000) - dp3_sat r7.w, r9.xyzx, r8.xyzx - add r7.w, -r7.w, l(1.000000) - mul r8.x, r7.w, r7.w - mul r8.x, r8.x, r8.x - mul r8.y, r7.w, r8.x - add r8.z, -r13.z, l(1.000000) - mad r8.w, -r8.z, l(0.383026), l(-0.0761947036) - mad r8.w, r8.z, r8.w, l(1.049970) - mad r8.z, r8.z, r8.w, l(0.409255) - min r8.z, r8.z, l(0.999000) - add r8.w, -r8.z, l(1.000000) - add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx - mad r7.w, -r8.x, r7.w, l(1.000000) - mad r16.xyz, r1.xzwx, r7.wwww, r8.yyyy - mul r0.z, r0.z, r0.z - div r0.z, r2.z, r0.z - mad r8.xy, -r13.yxyy, r2.zzzz, r13.yxyy - mad r8.xy, r8.xyxx, r13.yxyy, r2.zzzz - sqrt r8.xy, r8.xyxx - mul r8.xy, r8.xyxx, r13.xyxx - add r2.z, r8.y, r8.x - add r2.z, r2.z, l(0.000100) - div r2.z, l(0.500000), r2.z - mul r0.z, r0.z, r2.z - mul r16.xyz, r0.zzzz, r16.xyzx - min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r17.xyzw, r13.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r17.xyxx, t12.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r2.z, r17.zwzz, t12.yzxw, s1, l(0.000000) - mul r0.z, r0.z, r2.z - mul r0.z, r8.z, r0.z - div r0.z, r0.z, r8.w - mul r8.xyz, r15.xyzx, r15.xyzx - mul r8.xyz, r0.zzzz, r8.xyzx - mad r15.xyz, -r15.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r8.xyz, r8.xyzx, r15.xyzx - add r8.xyz, r8.xyzx, r16.xyzx - mul r8.xyz, r8.xyzx, cb2[4].xxxx - max r8.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r8.xyz, r8.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - dp3_sat r0.z, r14.xyzx, r2.xywx - mul r14.xyz, r0.zzzz, r10.xyzx - mad r8.xyz, r8.xyzx, r13.xxxx, r14.xyzx - mul r8.xyz, r8.xyzx, cb2[1].xyzx - mov r3.z, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r13.xyw, r3.yzyy, t7.xywz, s1, cb0[108].x - add r0.z, -r3.y, l(1.000000) - mad r13.xyw, r8.xyxz, r13.xyxw, -r8.xyxz - mad r8.xyz, r0.zzzz, r13.xywx, r8.xyzx - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t13.yzxw, s1, l(0.000000) - min r0.z, r0.z, l(1.000000) - mul r8.xyz, r0.zzzz, r8.xyzx -else - mov r8.xyz, l(0,0,0,0) -endif -ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -movc r3.y, cb13[14].z, l(0xFFFFFFFF), r3.y -if_nz r3.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - dp3 r2.z, r2.xywx, r9.xyzx - max r2.z, r2.z, l(0.000000) - add r2.z, r0.z, r2.z - mad r3.y, r13.z, l(-16.000000), l(-1.000000) - exp r3.y, r3.y - log r2.z, |r2.z| - mul r2.z, r2.z, r3.y - exp r2.z, r2.z - add r2.z, r0.z, r2.z - add r2.z, r2.z, l(-1.000000) - mov_sat r13.xyw, r2.zzzz - mad r14.xyz, r10.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r10.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r10.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - max r14.xyz, r0.zzzz, r14.xyzx -else - mov r13.xyw, r1.yyyy - mov r14.xyz, r1.yyyy -endif -movc r13.xyw, cb13[14].zzzz, r13.xyzw, l(1.0, 1.0, 0, 1.0) -mul r8.xyz, r8.xyzx, r13.xywx -mad r15.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[212].x -mad r16.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx -dp2 r0.z, r16.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx -mad r16.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r16.xyz, r15.xzyx, -r16.xyzx -max r0.z, |r16.y|, |r16.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.y, |r16.z|, l(-208.000000) -mul_sat r1.y, r1.y, l(0.031250) -max r0.z, r0.z, r1.y -ne r1.y, l(0.000000), cb0[210].w -lt r2.z, r0.z, l(1.000000) -and r1.y, r1.y, r2.z -if_nz r1.y - mad r16.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r16.xyz, r15.xzyx, -r16.xyzx - max r1.y, |r16.y|, |r16.x| - add r1.y, r1.y, l(-29.000000) - mul_sat r1.y, r1.y, l(0.500000) - add r2.z, |r16.z|, l(-13.000000) - mul_sat r2.z, r2.z, l(0.500000) - max r1.y, r1.y, r2.z - lt r2.z, r1.y, l(1.000000) - if_nz r2.z - mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r16.xyzx, cb0[211].xyzx - round_ni r17.xyz, r17.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r17.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) - add r2.z, -r1.y, l(1.000000) - mul r3.y, l(0.500000), cb0[211].y - mad r7.w, -cb0[211].y, l(0.500000), l(1.000000) - max r3.y, r3.y, r16.y - min r3.y, r7.w, r3.y - mul r16.w, r3.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) - mad r3.y, r18.w, r2.z, r0.z - add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r17.yyyy, r19.xyzx - mov r19.w, r17.y - mul r19.xyzw, r2.zzzz, r19.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r17.xxxx, r16.xyzx - mov r16.w, r17.x - mul r16.xyzw, r2.zzzz, r16.xyzw - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r17.wwww, r18.xyzx - mul r17.xyzw, r2.zzzz, r17.xyzw - else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r3.y, r0.z - endif - mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r18.xyz, r15.xzyx, -r18.xyzx - max r2.z, |r18.y|, |r18.x| - add r2.z, r2.z, l(-116.000000) - mul_sat r2.z, r2.z, l(0.125000) - add r7.w, |r18.z|, l(-52.000000) - mul_sat r7.w, r7.w, l(0.125000) - max r2.z, r2.z, r7.w - lt r7.w, r2.z, l(1.000000) - if_nz r7.w - mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r20.xyz, r18.xyzx, cb0[211].xyzx - round_ni r20.xyz, r20.xyzx - mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r20.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t19.yzwx, s2, l(0.000000) - add r7.w, -r2.z, l(1.000000) - mul r1.y, r1.y, r7.w - mul r7.w, l(0.500000), cb0[211].y - mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) - max r7.w, r7.w, r18.y - min r7.w, r8.w, r7.w - mul r18.w, r7.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t20.xyzw, s1, l(0.000000) - mad r3.y, r21.w, r1.y, r3.y - add r22.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t20.xyzw, s1, l(0.000000) - mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r20.yyyy, r22.xyzx - mov r22.w, r20.y - mad r19.xyzw, r22.xyzw, r1.yyyy, r19.xyzw - add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t20.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r20.xxxx, r18.xyzx - mov r18.w, r20.x - mad r16.xyzw, r18.xyzw, r1.yyyy, r16.xyzw - mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r18.xyzx - mad r17.xyzw, r20.xyzw, r1.yyyy, r17.xyzw - endif - lt r1.y, l(0.000000), r2.z - if_nz r1.y - mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r15.xyzx, cb0[211].xyzx - mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r18.xyzx - mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r15.xyz, r20.xyzx, r15.xyzx - min r15.xyz, r18.xyzx, r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t21.yzwx, s2, l(0.000000) - add r1.y, -r0.z, l(1.000000) - mul r1.y, r1.y, r2.z - max r2.z, r20.y, r15.y - min r2.z, r18.y, r2.z - mul r15.w, r2.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t22.xyzw, s1, l(0.000000) - add r20.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t22.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r21.yyyy, r20.xyzx - mov r20.w, r21.y - mad r19.xyzw, r20.xyzw, r1.yyyy, r19.xyzw - add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t22.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r21.xxxx, r15.xyzx - mov r15.w, r21.x - mad r16.xyzw, r15.xyzw, r1.yyyy, r16.xyzw - mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r15.xyzx - mad r17.xyzw, r21.xyzw, r1.yyyy, r17.xyzw - mad r3.y, r18.w, r1.y, r3.y - endif - mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) - add r15.x, -r0.z, r1.y - add r0.z, r0.z, r1.y - mul r15.y, r0.z, l(0.500000) -else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r15.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r15.yxyy, cb0[213].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r15.zw, r15.yyyx, cb0[213].wwwy -mad r18.x, r15.w, l(0.375000), r15.z -add r17.xyzw, r17.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[214].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r15.zw, r15.yyyx, cb0[214].wwwy -mad r18.x, r15.w, l(0.375000), r15.z -add r16.xyzw, r16.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[215].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r15.xy, r15.yxyy, cb0[215].wyww -mad r18.x, r15.y, l(0.375000), r15.x -add r15.xyzw, r18.wyzx, r19.xyzw -ge r18.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r18.y, r18.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.zwzz, t16.xyzw, s1, l(0.000000) - lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| - or r4.zw, r19.zzzw, r19.xxxy - or r0.z, r4.w, r4.z - if_nz r0.z - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mov r4.z, l(1.000000) - mov r4.w, r0.z - mov r1.y, l(0) - loop - ge r2.z, l(4.600000), r4.w - breakc_nz r2.z - iadd r2.z, r1.y, l(1) - mul r19.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - mov r4.zw, r19.xxxy - mov r1.y, r2.z - continue - endloop - mul r18.xyzw, r4.zzzz, r18.xyzw - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb4[3].x, cb4[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r19.x, r0.z, l(0.00390625000) - mov r19.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r19.xyxx, t15.zwxy, s1, l(0.000000) - mad r4.zw, r4.zzzw, cb4[2].xxxy, cb4[2].zzzw - mul r19.x, r4.z, l(3.54490781) - mul r19.yzw, r4.wwww, r18.yyzw - mul r0.z, r18.x, l(0.406976730) - exp r0.z, r0.z - mul r18.xyzw, r0.zzzz, r19.xyzw - mov r19.xyzw, r18.xyzw - mov r0.z, l(0) - loop - uge r2.z, r0.z, r1.y - breakc_nz r2.z - mul r20.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r2.z, r20.xyzw, r19.xyzw - dp2 r3.y, r20.yxyy, r19.xyxx - dp2 r4.z, r20.zxzz, r19.xzxx - dp2 r4.w, r20.wxww, r19.xwxx - iadd r7.w, r0.z, l(1) - mov r19.x, r2.z - mov r19.y, r3.y - mov r19.zw, r4.zzzw - mov r0.z, r7.w - continue - endloop - mul r18.xyzw, r19.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r19.xyzw, r17.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r18.xyzw, r19.xyzw - dp2 r1.y, r18.yxyy, r19.xyxx - dp2 r2.z, r18.zxzz, r19.xzxx - dp2 r3.y, r18.wxww, r19.xwxx - mul r19.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r4.z, r18.xyzw, r19.xyzw - dp2 r4.w, r18.yxyy, r19.xyxx - dp2 r7.w, r18.zxzz, r19.xzxx - dp2 r8.w, r18.wxww, r19.xwxx - mul r19.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r9.w, r18.xyzw, r19.xyzw - dp2 r10.w, r18.yxyy, r19.xyxx - dp2 r11.x, r18.zxzz, r19.xzxx - dp2 r14.w, r18.wxww, r19.xwxx - mul r17.w, r0.z, l(0.886226952) - mul r17.x, r3.y, l(-1.02332675) - mul r17.y, r1.y, l(-1.02332675) - mul r17.z, r2.z, l(1.02332675) - mul r16.x, r8.w, l(-1.02332675) - mul r16.yw, r4.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) - mul r16.z, r7.w, l(1.02332675) - mul r15.w, r9.w, l(0.886226952) - mul r15.x, r14.w, l(-1.02332675) - mul r15.y, r10.w, l(-1.02332675) - mul r15.z, r11.x, l(1.02332675) - endif -endif -dp3 r0.z, r17.xyzx, r2.xywx -add r0.z, r17.w, r0.z -max r17.x, r0.z, l(0.000000) -dp3 r0.z, r16.xyzx, r2.xywx -add r0.z, r16.w, r0.z -max r17.y, r0.z, l(0.000000) -dp3 r0.z, r15.xyzx, r2.xywx -add r0.z, r15.w, r0.z -max r17.z, r0.z, l(0.000000) -dp3 r0.z, -r9.xyzx, r12.xyzx -add r0.z, r0.z, r0.z -mad r2.xyz, r12.xyzx, -r0.zzzz, -r9.xyzx -add r0.z, l(-1.000000), cb0[113].x -max r1.y, r13.z, l(0.001000) -log r1.y, r1.y -mad r1.y, -r1.y, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.y -mul r4.zw, r4.xxxy, cb1[0].wwww -round_ni r4.zw, r4.zzzw -add r1.y, |r3.w|, -cb1[2].y -round_ni r1.y, r1.y -add r2.w, l(-1.000000), cb1[1].x -max r3.y, r1.y, l(0.000000) -min r2.w, r2.w, r3.y -ge r1.y, r2.w, r1.y -mad r3.y, r4.w, cb1[0].x, r4.z -ftoi r3.y, r3.y -iadd r3.y, r3.y, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.y, r3.y, l(0), t0.xxxx -ftoi r2.w, r2.w -iadd r2.w, r2.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.w, r2.w, l(0), t0.xxxx -and r2.w, r2.w, r3.y -and r1.y, r1.y, r2.w -mul r15.xyz, r17.xyzx, cb0[111].xxxx -dp3 r2.w, r15.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r23.w, r2.w // Store ambient luminance for cubemap modulation -mov r5.w, l(1.000000) -mov r12.w, l(1.000000) -mov r15.xyz, l(0,0,0,0) -mov r3.y, l(1.000000) -mov r4.z, r1.y -mov r4.w, l(0) -loop - lt r7.w, l(0.010000), r3.y - ine r8.w, r4.z, l(0) - and r8.w, r7.w, r8.w - if_nz r8.w - firstbit_lo r8.w, r4.z - ishl r9.w, l(1), r8.w - xor r4.z, r4.z, r9.w - ishl r8.w, r8.w, l(3) - dp4 r16.x, cb1[r8.w + 6].xyzw, r5.xyzw - dp4 r16.y, cb1[r8.w + 7].xyzw, r5.xyzw - dp4 r16.z, cb1[r8.w + 8].xyzw, r5.xyzw - ge r18.xyz, cb1[r8.w + 5].xyzx, |r16.xyzx| - and r9.w, r18.y, r18.x - and r9.w, r18.z, r9.w - if_nz r9.w - mul r9.w, l(0.100000), cb1[r8.w + 5].x - mul r18.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r18.xy, r18.xyxx, r18.xyxx - add r19.xyz, -|r16.xyzx|, cb1[r8.w + 5].xyzx - mul r19.xyz, r19.xyzx, cb1[r8.w + 9].xyzx - eq r10.w, l(1.000000), cb1[r8.w + 10].x - if_nz r10.w - dp3 r20.x, cb1[r8.w + 6].xyzx, r2.xyzx - dp3 r20.y, cb1[r8.w + 7].xyzx, r2.xyzx - dp3 r20.z, cb1[r8.w + 8].xyzx, r2.xyzx - add r21.xyz, -r16.xyzx, cb1[r8.w + 5].xyzx - div r21.xyz, r21.xyzx, r20.xyzx - add r22.xyz, -r16.xyzx, -cb1[r8.w + 5].xyzx - div r22.xyz, r22.xyzx, r20.xyzx - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx - movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx - min r10.w, r21.y, r21.x - min r10.w, r21.z, r10.w - mad r16.xyz, r20.xyzx, r10.wwww, r16.xyzx - else - mov r16.xyz, r2.xyzx - endif - dp3 r10.w, r16.xyzx, r16.xyzx - rsq r10.w, r10.w - mul r16.xyz, r10.wwww, r16.xyzx - lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r20.xyz, -r20.xyzx, r21.xyzx - itof r20.xyz, r20.xyzx - dp3 r10.w, r16.xyzx, r20.xyzx - div r16.xyz, r16.xyzx, r10.wwww - lt r10.w, r16.z, l(0.000000) - add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r16.zw, r16.zzzw, r20.xxxy - movc r16.xy, r10.wwww, r16.zwzz, r16.xyxx - dp4 r10.w, cb1[r8.w + 4].xyzw, r12.xyzw - max r10.w, r10.w, l(0.000000) - max r10.w, r10.w, l(0.000100) - min r11.x, r19.z, r19.y - min r11.x, r11.x, r19.x - add r13.z, r18.y, r18.x - mad r13.z, r18.z, r18.z, r13.z - mad r9.w, r9.w, r9.w, -r13.z - mul r9.w, r9.w, cb1[r8.w + 9].x - mul r9.w, r9.w, cb1[r8.w + 9].x - add r13.z, l(1.000000), -cb1[r8.w + 10].y - mul r9.w, r9.w, r13.z - mul r9.w, r9.w, l(100.000000) - mad_sat r9.w, r11.x, cb1[r8.w + 10].y, r9.w - mul r11.x, r9.w, cb1[r8.w + 10].w - mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww - mov r16.z, cb1[r8.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z - mul r16.xyz, r16.xyzx, cb1[r8.w + 9].wwww - div r13.z, r2.w, r10.w - min r13.z, |r13.z|, l(1.000000) - mad r13.z, r13.z, l(2.000000), r2.w - add r10.w, r10.w, l(2.000000) - div r10.w, r13.z, r10.w - add r10.w, r10.w, l(-1.000000) - mad r10.w, r10.w, cb0[112].w, l(1.000000) - mul r16.xyz, r10.wwww, r16.xyzx - mul r16.xyz, r11.xxxx, r16.xyzx - mad r15.xyz, r16.xyzx, r3.yyyy, r15.xyzx - mad r8.w, -r9.w, cb1[r8.w + 10].w, l(1.000000) - mul r3.y, r3.y, r8.w - endif - mov r4.w, l(-1) - continue - else - mov r4.w, r7.w - break - endif - mov r4.w, r7.w -endloop -if_nz r4.w - dp3 r1.y, r2.xyzx, r2.xyzx - rsq r1.y, r1.y - mul r2.xyz, r1.yyyy, r2.xyzx - lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r2.xyzx - lt r18.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r16.xyz, -r16.xyzx, r18.xyzx - itof r16.xyz, r16.xyzx - dp3 r1.y, r2.xyzx, r16.xyzx - div r2.xyz, r2.xyzx, r1.yyyy - lt r1.y, r2.z, l(0.000000) - add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r4.zw, r4.zzzw, r16.xxxy - movc r2.xy, r1.yyyy, r4.zwzz, r2.xyxx - mov r12.w, l(1.000000) - dp4 r1.y, cb1[3].xyzw, r12.xyzw - max r1.y, r1.y, l(0.000000) - max r1.y, r1.y, l(0.000100) - mad r2.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r2.xy, r2.xyxx, cb1[1].wwww, cb1[2].wwww - mov r2.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r2.xyz, r2.xyzx, t5.xyzw, s3, r0.z - div r0.z, r2.w, r1.y - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r2.w - add r1.y, r1.y, l(2.000000) - div r0.z, r0.z, r1.y - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r2.xyz, r0.zzzz, r2.xyzx - mad r15.xyz, r2.xyzx, r3.yyyy, r15.xyzx -endif -mul r2.xyz, r15.xyzx, cb0[112].zzzz -mul r2.xyz, r2.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].y) -if_nz cb13[13].y - max r23.w, r23.w, l(0.000000) - min r23.w, r23.w, l(1.000000) - mad r23.w, r23.w, l(0.750000), l(0.250000) - mul r2.xyz, r2.xyzx, r23.wwww -endif -if_nz r3.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r12.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x - add r1.y, -r0.z, l(1.000000) - mul r15.xyz, r1.yyyy, r2.xyzx - mad r2.xyz, r12.xyzx, r0.zzzz, r15.xyzx -endif -mul r10.xyz, r10.xyzx, r17.xyzx -mul r10.xyz, r10.xyzx, cb0[111].xxxx -add r0.z, -r3.x, l(1.000000) -div r0.z, r0.z, r3.x -mul r1.xyz, r0.zzzz, r1.xzwx -mad r1.xyz, r1.xyzx, r11.yzwy, r11.yzwy -mul r1.xyz, r1.xyzx, r2.xyzx -mul r1.xyz, r13.xywx, r1.xyzx -mad r1.xyz, r10.xyzx, r14.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r8.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r6.x, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r5.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xyz, r0.zzzz, cb0[155].xyzx -mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r2.xyz, r2.xyzx -dp3 r0.z, -r9.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.w, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.w -lt r2.w, l(0.000000), cb0[163].z -if_nz r2.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r9.xyzx, -r7.xyzx - add r2.w, r5.y, -cb0[44].y - lt r3.z, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.z - mul r0.x, r0.x, cb0[163].w - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.x - mul r4.z, r0.x, r3.z - mad r4.w, r4.z, r2.w, cb0[44].y - mad r2.w, -r4.z, r2.w, r2.w - mul r4.z, r2.w, cb0[159].z - max r4.z, r4.z, l(-127.000000) - mul r2.w, r2.w, cb0[162].x - max r2.w, r2.w, l(-127.000000) - add r5.w, r4.w, -cb0[159].x - mul r5.w, r5.w, cb0[159].z - max r5.w, r5.w, l(-127.000000) - exp r5.w, -r5.w - mul r5.w, r5.w, cb0[159].y - lt r7.x, l(5.960464478E-08), |r4.z| - exp r7.y, -r4.z - add r7.y, -r7.y, l(1.000000) - div r7.y, r7.y, r4.z - mad r4.z, -r4.z, l(0.240226507), l(0.693147182) - movc r4.z, r7.x, r7.y, r4.z - add r4.w, r4.w, -cb0[162].z - mul r4.w, r4.w, cb0[162].x - max r4.w, r4.w, l(-127.000000) - exp r4.w, -r4.w - mul r4.w, r4.w, cb0[162].y - lt r7.x, l(5.960464478E-08), |r2.w| - exp r7.y, -r2.w - add r7.y, -r7.y, l(1.000000) - div r7.y, r7.y, r2.w - mad r2.w, -r2.w, l(0.240226507), l(0.693147182) - movc r2.w, r7.x, r7.y, r2.w - mul r2.w, r2.w, r4.w - mad r2.w, r5.w, r4.z, r2.w - mad r0.x, -r0.x, r3.z, l(1.000000) - mul r0.x, r6.x, r0.x - mul r0.x, r0.x, r2.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r4.zw, r6.xxxx, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r4.z - add r0.x, r4.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r4.xxxy - mul r3.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r3.w|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r3.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r3.xyzx, t14.xyzw, s1, l(0.000000) - add r0.y, |r3.w|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r3.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r0.x, r0.x, r3.w -else - add r0.y, r5.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.w, cb0[44].y, -cb0[159].x - mul r2.w, r2.w, cb0[159].z - max r2.w, r2.w, l(-127.000000) - exp r2.w, -r2.w - mul r2.w, r2.w, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.w, r0.w, r0.y - mul r0.y, r6.x, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r6.xxxx, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r3.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r2.xyzx -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.w, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r2.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx - -// === Simplified Fog Modification (Anti-Banding) === -// Check if fog modification is enabled via cb13[12].y -lt r15.x, l(0.500000), cb13[12].y -if_nz r15.x - // r1.xyz = scene color, r4.xyz = transmittance, r0.xyz = fog inscatter - // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density - add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx - - // Reduce fog inscatter intensity - mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - - // Modified fog blend: scene * boostedTrans + reducedInscatter - mad r0.xyz, r1.xyzx, r15.xyzx, r16.xyzx -else - // Original fog blend - mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx -endif -// === End Fog Modification === -dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -dp3 r1.w, r6.yzwy, r6.yzwy -sqrt r1.w, r1.w -mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) -mul r2.x, r1.w, cb0[169].x -mad r1.w, -cb0[169].x, r1.w, l(1.000000) -mul r2.yzw, cb0[168].xxyz, cb0[183].wwww -mad r2.yzw, r5.xxyz, cb0[169].yyyy, r2.yyzw -sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t27.xwyz, s2, l(0.000000) -dp2 r2.x, r2.yyyy, r2.xxxx -add r1.w, r1.w, r2.x -add r2.x, r0.w, l(1.000000) -min r1.w, r1.w, r2.x -add r0.xyz, -r1.xyzx, r0.xyzx -mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx -mov o0.w, r0.w -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xB094C87E.cso b/src/games/endfield/deferred-lighting/0xB094C87E.cso deleted file mode 100644 index d6c7722b87a7faa4395220e8017af24a20923c11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51432 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 diff --git a/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0.asm deleted file mode 100644 index a05f23a8e3..0000000000 --- a/src/games/endfield/deferred-lighting/0xBD99F0C4.ps_5_0.asm +++ /dev/null @@ -1,1013 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sun Feb 1 03:51:02 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[5], immediateIndexed -dcl_constantbuffer CB3[5], immediateIndexed -dcl_constantbuffer CB4[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture3d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_resource_texture2d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_resource_texture3d (float,float,float,float) t25 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 26 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t22.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t23.xyzw -ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t24.xyzw -mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) -ftou r1.xz, r1.xxzx -ubfe r4.x, l(7), l(3), r1.x -utof r4.x, r4.x -round_ne r1.y, r1.y -ftou r1.y, r1.y -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r5.y, -r4.y, l(1.000000) -lt r4.y, r5.y, l(0.000000) -ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) -add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) -movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) -mul r4.zw, r4.zzzw, r6.xxxy -movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx -dp3 r2.x, r5.xyzx, r5.xyzx -rsq r2.x, r2.x -mul r6.xyz, r2.xxxx, r5.xyzx -and r2.y, r1.y, l(7) -utof r2.y, r2.y -mad r2.y, r2.y, l(0.107142866), l(0.500000) -utof r4.yz, r0.xxyx -mul r5.xz, v0.xxyx, cb0[82].zzwz -mad r7.xy, r5.xzxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -add r7.zw, r4.yyyz, l(0.000000, 0.000000, 0.500000, 0.500000) -mul r7.zw, r7.zzzw, cb0[82].zzzw -sample_l_indexable(texture2d)(float,float,float,float) r4.w, r7.zwzz, t1.yzwx, s0, l(0.000000) -mul r8.xyzw, -r7.yyyy, cb0[25].xyzw -mad r7.xyzw, cb0[24].xyzw, r7.xxxx, r8.xyzw -mad r7.xyzw, cb0[26].xyzw, r4.wwww, r7.xyzw -add r7.xyzw, r7.xyzw, cb0[27].xyzw -div r7.xyz, r7.xyzx, r7.wwww -mul r4.w, r7.y, cb0[1].z -mad r4.w, cb0[0].z, r7.x, r4.w -mad r4.w, cb0[2].z, r7.z, r4.w -add r4.w, r4.w, cb0[3].z -eq r5.w, l(0.000000), cb0[86].w -add r8.xyz, -r7.xyzx, cb0[44].xyzx -mov r9.x, cb0[0].z -mov r9.y, cb0[1].z -mov r9.z, cb0[2].z -movc r10.xyz, r5.wwww, r8.xyzx, r9.xyzx -dp3 r5.w, r10.xyzx, r10.xyzx -max r8.w, r5.w, l(9.999999939E-09) -rsq r8.w, r8.w -mul r11.xyz, r8.wwww, r10.xyzx -mul r5.w, r5.w, r8.w -lt r9.w, l(0.000488281250), cb0[234].x -if_nz r9.w - sample_b_indexable(texture2d)(float,float,float,float) r9.w, v1.xyxx, t21.yzwx, s1, cb0[108].x -else - mov r9.w, l(1.000000) -endif -lt r12.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[226].xyxx -if_nz r12.x - add r10.w, |r6.y|, |r6.x| - add r10.w, |r6.z|, r10.w - div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r10.w - mul r12.xzw, |r6.xxyz|, r10.wwww - mul r13.xyzw, r12.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) - add r13.xyz, r13.zwzz, r13.xxyx - mad r12.xzw, r12.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r13.xxyz - mul r13.xyz, r7.xyzx, cb0[229].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r10.w, r13.xyzx, t9.yzwx, s2, l(0.000000) - mad r10.w, r10.w, l(2.000000), l(-1.000000) - mul r12.xzw, r10.wwww, r12.xxzw - mov r10.w, |r6.y| - add r10.w, r10.w, l(-0.700000) - mul_sat r10.w, r10.w, l(4.000000) - mad r11.w, r10.w, l(-2.000000), l(3.000000) - mul r10.w, r10.w, r10.w - mul r10.w, r10.w, r11.w - add r11.w, -cb0[229].z, cb0[229].y - mad r10.w, r10.w, r11.w, cb0[229].z - mul r12.xzw, r10.wwww, r12.xxzw -else - mov r12.xzw, l(0,0,0,0) -endif -if_nz r12.y - mul r13.xyz, r6.xyzx, cb0[233].zzzz - mul r14.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy - mad r13.xyz, r13.xyzx, cb0[225].xxxx, r14.xyzx - max r10.w, -r6.y, l(0.000000) - min r10.w, r10.w, l(0.900000) - add r10.w, -r10.w, l(1.000000) - mad r2.x, -r5.y, r2.x, l(-0.200000) - mul_sat r2.x, r2.x, l(-10.000000) - mad r5.y, r2.x, l(-2.000000), l(3.000000) - mul r2.x, r2.x, r2.x - mul r2.x, r2.x, r5.y - max r2.x, r2.x, l(0.100000) - min r2.x, r2.x, l(1.000000) - mul r2.x, r2.x, r10.w - mad r13.xyz, r13.xyzx, r2.xxxx, r7.xyzx - add r12.xyz, r12.xzwx, r13.xyzx - mul r13.xyz, r12.yyyy, cb3[1].xyzx - mad r12.xyw, cb3[0].xyxz, r12.xxxx, r13.xyxz - mad r12.xyz, cb3[2].xyzx, r12.zzzz, r12.xywx - add r12.xyz, r12.xyzx, cb3[3].xyzx - mad r13.x, r12.x, l(0.500000), cb3[4].x - mad r2.x, r12.y, l(0.500000), l(0.500000) - add r13.z, -r2.x, cb3[4].y - add r12.xy, r13.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r2.x, r12.z, l(0.000488281250) - sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r12.xyxx, t8.xxxx, s4, r2.x -else - mov r2.x, l(1.000000) -endif -mov_sat r5.y, r6.y -add r10.w, l(1.000000), -cb0[230].w -mad r5.y, r5.y, r10.w, cb0[230].w -add r12.xy, r7.xzxx, -cb0[44].xzxx -max r10.w, |r12.y|, |r12.x| -mul r11.w, r5.y, cb0[230].z -mul r12.x, r2.x, r5.y -mul r12.y, l(0.0500000119), cb0[222].w -mad r12.z, -cb0[222].w, l(0.700000), r10.w -div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), r12.y -mul_sat r12.y, r12.y, r12.z -mad r12.z, r12.y, l(-2.000000), l(3.000000) -mul r12.y, r12.y, r12.y -mul r12.y, r12.y, r12.z -mad r2.x, -r5.y, r2.x, l(1.000000) -mad r2.x, r12.y, r2.x, r12.x -mad r5.y, -cb0[230].z, r5.y, l(1.000000) -mad r2.x, r2.x, r5.y, r11.w -mad r5.y, cb0[230].x, cb0[222].w, -cb0[222].w -add r10.w, r10.w, -cb0[222].w -div r5.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y -mul_sat r5.y, r5.y, r10.w -mad r10.w, r5.y, l(-2.000000), l(3.000000) -mul r5.y, r5.y, r5.y -mul r5.y, r5.y, r10.w -add r10.w, -r2.x, cb0[230].y -mad r2.x, r5.y, r10.w, r2.x -add r2.x, -r2.x, l(1.000000) -mad r2.x, -r9.w, r2.x, l(1.000000) -mad_sat r5.y, r2.z, l(0.300000), l(0.250000) -mul r5.y, r5.y, cb0[222].x -mul r5.y, r2.x, r5.y -mad r5.y, r5.y, l(-0.750000), l(1.000000) -mul r3.xyz, r3.xyzx, r5.yyyy -min r5.y, r2.z, l(0.300000) -mul r2.x, r2.x, cb0[222].x -mul r2.xw, r2.xxxw, l(0.500000, 0.000000, 0.000000, 3.000000) -add r5.y, -r2.z, r5.y -mad r12.z, r2.x, r5.y, r2.z -mul r2.x, r2.y, l(0.080000) -dp3 r2.z, r6.xyzx, r11.xyzx -max r5.y, r2.z, l(0.000000) -mad r13.xyzw, r12.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r9.w, r13.x, r13.x -mul r10.w, r5.y, l(-9.280000) -exp r10.w, r10.w -min r9.w, r9.w, r10.w -mad r9.w, r9.w, r13.x, r13.y -mad r13.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz -ld_indexable(texture2d)(float,float,float,float) r13.z, r0.xyzz, t6.zwxy -lt r0.z, l(0.001000), r13.z -if_nz r0.z - bfi r0.z, l(3), l(2), r1.x, l(0) - mul r1.x, r1.w, l(3.000000) - ftou r1.x, r1.x - bfi r0.z, l(2), l(0), r1.x, r0.z - utof r0.z, r0.z - mul r1.x, r0.z, l(0.0322580636) - ubfe r1.y, l(7), l(3), r1.y - utof r1.y, r1.y - mul r1.y, r1.y, l(0.00787401572) - sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xzxx, t11.yzwx, s1, l(0.000000) - dp3 r9.w, -r11.xyzx, r6.xyzx - add r9.w, r9.w, r9.w - mad r14.xyz, r6.xyzx, -r9.wwww, -r11.xyzx - dp3 r9.w, -cb2[0].xyzx, r14.xyzx - mad r15.xyz, cb2[0].xyzx, r9.wwww, r14.xyzx - lt r9.w, r9.w, cb2[4].z - dp3 r10.w, r15.xyzx, r15.xyzx - max r10.w, r10.w, l(0.0000610351562) - rsq r10.w, r10.w - mul r15.xyz, r10.wwww, r15.xyzx - mul r15.xyz, r15.xyzx, cb2[4].yyyy - mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx - dp3 r10.w, r15.xyzx, r15.xyzx - rsq r10.w, r10.w - mul r15.xyz, r10.wwww, r15.xyzx - movc r14.xyz, r9.wwww, r15.xyzx, r14.xyzx - mad r10.xyz, r10.xyzx, r8.wwww, r14.xyzx - dp3 r8.w, r10.xyzx, r10.xyzx - max r8.w, r8.w, l(0.0000610351562) - rsq r8.w, r8.w - mul r10.xyz, r8.wwww, r10.xyzx - dp3 r8.w, r6.xyzx, r14.xyzx - mov_sat r12.x, r8.w - dp3_sat r9.w, r6.xyzx, r10.xyzx - dp3 r10.w, r11.xyzx, r14.xyzx - min r12.y, r5.y, l(1.000000) - mul r11.w, r12.z, r12.z - mul r11.w, r11.w, r11.w - mad r12.w, r9.w, r11.w, -r9.w - mad r9.w, r12.w, r9.w, l(1.000000) - dp3_sat r10.x, r11.xyzx, r10.xyzx - add r10.x, -r10.x, l(1.000000) - mul r10.y, r10.x, r10.x - mul r10.y, r10.y, r10.y - mul r10.z, r10.x, r10.y - add r12.w, -r12.z, l(1.000000) - mad r14.x, -r12.w, l(0.383026), l(-0.0761947036) - mad r14.x, r12.w, r14.x, l(1.049970) - mad r12.w, r12.w, r14.x, l(0.409255) - min r12.w, r12.w, l(0.999000) - add r14.x, -r12.w, l(1.000000) - mad r2.y, -r2.y, l(0.080000), l(1.000000) - mad r2.y, r2.y, l(0.0476190485), r2.x - mov_sat r14.y, -r10.w - mul r14.y, r14.y, r14.y - mad r14.y, r14.y, l(-0.640000), l(1.000000) - mul r14.y, r14.y, r14.y - mad r10.x, -r10.y, r10.x, l(1.000000) - mad r10.x, r2.x, r10.x, r10.z - mul r9.w, r9.w, r9.w - div r9.w, r11.w, r9.w - mad r10.yz, -r12.yyxy, r11.wwww, r12.yyxy - mad r10.yz, r10.yyzy, r12.yyxy, r11.wwww - sqrt r10.yz, r10.yyzy - mul r10.yz, r10.yyzy, r12.xxyx - add r10.y, r10.z, r10.y - add r10.y, r10.y, l(0.000100) - div r10.y, l(0.500000), r10.y - mul r9.w, r9.w, r10.y - mul r9.w, r9.w, r10.x - min r9.w, r9.w, l(2048.000000) - mad r15.xyzw, r12.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r10.x, r15.xyxx, t10.xyzw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r10.y, r15.zwzz, t10.yxzw, s1, l(0.000000) - mul r10.x, r10.y, r10.x - mul r10.x, r12.w, r10.x - div r10.x, r10.x, r14.x - mul r10.y, r2.y, r2.y - mul r10.x, r10.x, r10.y - mad r2.y, -r2.y, r14.x, l(1.000000) - div r2.y, r10.x, r2.y - add r2.y, r2.y, r9.w - add_sat r2.z, r2.z, l(0.200000) - mov_sat r9.w, r10.w - add r9.w, r9.w, l(0.500000) - min r9.w, r9.w, l(1.000000) - mul r10.x, r2.z, r9.w - add_sat r10.y, r10.w, l(1.000000) - mad r2.z, -r2.z, r9.w, l(1.000000) - mad r2.z, r10.y, r2.z, r10.x - mul r2.y, r2.z, r2.y - mul r2.y, r1.y, r2.y - mul r10.xyz, r1.yyyy, r3.xyzx - ubfe r2.z, l(7), l(3), r1.z - utof r2.z, r2.z - mul r2.z, r2.z, l(0.00787401572) - mul r2.y, r2.y, cb2[4].x - max r2.y, r2.y, l(0.000000) - min r2.y, r2.y, l(1000.000000) - mul r2.y, r12.x, r2.y - mad r10.xyz, r10.xyzx, r2.zzzz, r2.yyyy - max r2.y, r3.y, r3.x - max r2.y, r3.z, r2.y - max r2.y, r2.y, l(0.010000) - div r14.xzw, r3.xxyz, r2.yyyy - mul r2.y, r4.x, l(0.00393700786) - mul r14.xzw, r2.yyyy, r14.xxzw - add_sat r2.y, -r8.w, l(0.500000) - ne r2.z, r14.y, l(0.360000) - div r9.w, l(0.360000), r14.y - movc r2.z, r2.z, r9.w, l(1.000000) - mul r2.y, r2.z, r2.y - mad_sat r0.z, r0.z, l(0.0322580636), r8.w - add r0.z, -r12.x, r0.z - mul r12.xyw, r0.zzzz, r3.xyxz - mad r12.xyw, r14.xzxw, r2.yyyy, r12.xyxw - mad r10.xyz, r12.xywx, r1.yyyy, r10.xyzx - mul r10.xyz, r10.xyzx, cb2[1].xyzx - mov r13.w, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r12.xyw, r13.zwzz, t7.xywz, s1, cb0[108].x - add r0.z, -r13.z, l(1.000000) - mad r12.xyw, r10.xyxz, r12.xyxw, -r10.xyxz - mad r10.xyz, r0.zzzz, r12.xywx, r10.xyzx - max r0.z, r1.y, r1.w - add r0.z, -r1.w, r0.z - mad r0.z, r1.x, r0.z, r1.w - mul r1.xyw, r0.zzzz, r10.xyxz -else - mov r1.xyw, l(0,0,0,0) -endif -ne r2.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -movc r2.y, cb13[14].z, l(0xFFFFFFFF), r2.y -if_nz r2.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - mad r0.z, r0.z, l(0.750000), l(0.250000) - min r0.z, r3.w, r0.z - add r2.y, r0.z, r5.y - mad r8.w, r12.z, l(-16.000000), l(-1.000000) - exp r8.w, r8.w - log r2.y, |r2.y| - mul r2.y, r2.y, r8.w - exp r2.y, r2.y - add r2.y, r0.z, r2.y - add r2.y, r2.y, l(-1.000000) - mov_sat r10.xyz, r2.yyyy - mad r12.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) - mul r12.xyw, r0.zzzz, r12.xyxw - mad r12.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r12.xyxw - add r12.xyw, r12.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) - mul r12.xyw, r0.zzzz, r12.xyxw - mad r12.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r12.xyxw - add r12.xyw, r12.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) - mul r12.xyw, r0.zzzz, r12.xyxw - max r12.xyw, r0.zzzz, r12.xyxw -else - mov r10.xyz, r3.wwww - mov r12.xyw, r3.wwww -endif -movc r10.xyz, cb13[14].zzzz, r10.xyzx, l(1.0, 1.0, 1.0, 0) -mul r1.xyw, r1.xyzw, r10.xyxz -mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r14.xyz, r7.xzyx, -r14.xyzx -max r0.z, |r14.y|, |r14.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r2.y, |r14.z|, l(-208.000000) -mul_sat r2.y, r2.y, l(0.031250) -max r0.z, r0.z, r2.y -ne r2.y, l(0.000000), cb0[210].w -lt r3.w, r0.z, l(1.000000) -and r2.y, r2.y, r3.w -if_nz r2.y - mad r14.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r14.xyz, r7.xzyx, -r14.xyzx - max r2.y, |r14.y|, |r14.x| - add r2.y, r2.y, l(-29.000000) - mul_sat r2.y, r2.y, l(0.500000) - add r3.w, |r14.z|, l(-13.000000) - mul_sat r3.w, r3.w, l(0.500000) - max r2.y, r2.y, r3.w - lt r3.w, r2.y, l(1.000000) - if_nz r3.w - mad r14.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r15.xyz, r14.xyzx, cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r15.xyw, r14.xyzx, t15.yzwx, s2, l(0.000000) - add r3.w, -r2.y, l(1.000000) - mul r8.w, l(0.500000), cb0[211].y - mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) - max r8.w, r8.w, r14.y - min r8.w, r9.w, r8.w - mul r14.w, r8.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t16.xyzw, s1, l(0.000000) - mad r8.w, r16.w, r3.w, r0.z - add r17.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r15.yyyy, r17.xyzx - mov r17.w, r15.y - mul r17.xyzw, r3.wwww, r17.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t16.xyzw, s1, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r15.xxxx, r14.xyzx - mov r14.w, r15.x - mul r14.xyzw, r3.wwww, r14.xyzw - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r15.wwww, r16.xyzx - mul r15.xyzw, r3.wwww, r15.xyzw - else - mov r17.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r8.w, r0.z - endif - mad r16.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r16.xyz, r7.xzyx, -r16.xyzx - max r3.w, |r16.y|, |r16.x| - add r3.w, r3.w, l(-116.000000) - mul_sat r3.w, r3.w, l(0.125000) - add r9.w, |r16.z|, l(-52.000000) - mul_sat r9.w, r9.w, l(0.125000) - max r3.w, r3.w, r9.w - lt r9.w, r3.w, l(1.000000) - if_nz r9.w - mad r16.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r16.xyzx, cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) - add r9.w, -r3.w, l(1.000000) - mul r2.y, r2.y, r9.w - mul r9.w, l(0.500000), cb0[211].y - mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) - max r9.w, r9.w, r16.y - min r9.w, r10.w, r9.w - mul r16.w, r9.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) - mad r8.w, r19.w, r2.y, r8.w - add r20.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t18.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r18.yyyy, r20.xyzx - mov r20.w, r18.y - mad r17.xyzw, r20.xyzw, r2.yyyy, r17.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r18.xxxx, r16.xyzx - mov r16.w, r18.x - mad r14.xyzw, r16.xyzw, r2.yyyy, r14.xyzw - mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r16.xyzx - mad r15.xyzw, r18.xyzw, r2.yyyy, r15.xyzw - endif - lt r2.y, l(0.000000), r3.w - if_nz r2.y - mad r16.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r16.xyzx, cb0[211].xyzx - mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r16.xyz, r16.xyzx, cb0[211].xyzx, -r18.xyzx - mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r16.xyz, r19.xyzx, r16.xyzx - min r16.xyz, r18.xyzx, r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r16.xyzx, t19.yzwx, s2, l(0.000000) - add r2.y, -r0.z, l(1.000000) - mul r2.y, r2.y, r3.w - max r3.w, r19.y, r16.y - min r3.w, r18.y, r3.w - mul r16.w, r3.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t20.xyzw, s1, l(0.000000) - add r19.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r20.yyyy, r19.xyzx - mov r19.w, r20.y - mad r17.xyzw, r19.xyzw, r2.yyyy, r17.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t20.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r20.xxxx, r16.xyzx - mov r16.w, r20.x - mad r14.xyzw, r16.xyzw, r2.yyyy, r14.xyzw - mad r16.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r16.xyzx - mad r15.xyzw, r20.xyzw, r2.yyyy, r15.xyzw - mad r8.w, r18.w, r2.y, r8.w - endif - mad_sat r2.y, r8.w, l(2.000000), l(-1.000000) - add r16.x, -r0.z, r2.y - add r0.z, r0.z, r2.y - mul r16.y, r0.z, l(0.500000) -else - mov r17.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r16.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r16.yyyx, cb0[213].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r13.zw, r16.yyyx, cb0[213].wwwy -mad r18.w, r13.w, l(0.375000), r13.z -add r15.xyzw, r15.xyzw, r18.xyzw -mul r18.xyzw, r16.yyyx, cb0[214].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r13.zw, r16.yyyx, cb0[214].wwwy -mad r18.w, r13.w, l(0.375000), r13.z -add r14.xyzw, r14.xyzw, r18.xyzw -mul r18.xyzw, r16.yyyx, cb0[215].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r13.zw, r16.yyyx, cb0[215].wwwy -mad r18.w, r13.w, l(0.375000), r13.z -add r16.xyzw, r17.xyzw, r18.xyzw -ge r13.zw, r5.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r13.w, r13.z -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r5.xzxx, t14.xyzw, s1, l(0.000000) - lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| - or r5.xz, r18.zzwz, r18.xxyx - or r0.z, r5.z, r5.x - if_nz r0.z - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mov r5.x, l(1.000000) - mov r5.z, r0.z - mov r2.y, l(0) - loop - ge r3.w, l(4.600000), r5.z - breakc_nz r3.w - iadd r3.w, r2.y, l(1) - mul r13.zw, r5.xxxz, l(0.000000, 0.000000, 0.500000, 0.500000) - mov r5.xz, r13.zzwz - mov r2.y, r3.w - continue - endloop - mul r17.xyzw, r5.xxxx, r17.xyzw - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb4[3].x, cb4[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r18.x, r0.z, l(0.00390625000) - mov r18.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r5.xz, r18.xyxx, t13.xzyw, s1, l(0.000000) - mad r5.xz, r5.xxzx, cb4[2].xxyx, cb4[2].zzwz - mul r18.x, r5.x, l(3.54490781) - mul r18.yzw, r5.zzzz, r17.yyzw - mul r0.z, r17.x, l(0.406976730) - exp r0.z, r0.z - mul r17.xyzw, r0.zzzz, r18.xyzw - mov r18.xyzw, r17.xyzw - mov r0.z, l(0) - loop - uge r3.w, r0.z, r2.y - breakc_nz r3.w - mul r19.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r3.w, r19.xyzw, r18.xyzw - dp2 r5.x, r19.yxyy, r18.xyxx - dp2 r5.z, r19.zxzz, r18.xzxx - dp2 r8.w, r19.wxww, r18.xwxx - iadd r9.w, r0.z, l(1) - mov r18.x, r3.w - mov r18.yz, r5.xxzx - mov r18.w, r8.w - mov r0.z, r9.w - continue - endloop - mul r17.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r18.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r17.xyzw, r18.xyzw - dp2 r2.y, r17.yxyy, r18.xyxx - dp2 r3.w, r17.zxzz, r18.xzxx - dp2 r5.x, r17.wxww, r18.xwxx - mul r18.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r5.z, r17.xyzw, r18.xyzw - dp2 r8.w, r17.yxyy, r18.xyxx - dp2 r9.w, r17.zxzz, r18.xzxx - dp2 r10.w, r17.wxww, r18.xwxx - mul r18.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r11.w, r17.xyzw, r18.xyzw - dp2 r13.z, r17.yxyy, r18.xyxx - dp2 r13.w, r17.zxzz, r18.xzxx - dp2 r17.x, r17.wxww, r18.xwxx - mul r15.w, r0.z, l(0.886226952) - mul r15.x, r5.x, l(-1.02332675) - mul r15.y, r2.y, l(-1.02332675) - mul r15.z, r3.w, l(1.02332675) - mul r14.w, r5.z, l(0.886226952) - mul r14.x, r10.w, l(-1.02332675) - mul r14.y, r8.w, l(-1.02332675) - mul r14.z, r9.w, l(1.02332675) - mul r16.w, r11.w, l(0.886226952) - mul r16.x, r17.x, l(-1.02332675) - mul r16.yz, r13.zzwz, l(0.000000, -1.02332675, 1.02332675, 0.000000) - endif -endif -mov r6.w, l(1.000000) -dp4 r17.x, r15.xyzw, r6.xyzw -dp4 r17.y, r14.xyzw, r6.xyzw -dp4 r17.z, r16.xyzw, r6.xyzw -max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -dp3 r0.z, -r11.xyzx, r6.xyzx -add r0.z, r0.z, r0.z -mad r18.xyz, r6.xyzx, -r0.zzzz, -r11.xyzx -add r0.z, l(-1.000000), cb0[113].x -max r2.y, r12.z, l(0.001000) -log r2.y, r2.y -mad r2.y, -r2.y, l(1.200000), l(1.000000) -add r0.z, r0.z, -r2.y -mul r5.xz, r4.yyzy, cb1[0].wwww -round_ni r5.xz, r5.xxzx -add r2.y, |r4.w|, -cb1[2].y -round_ni r2.y, r2.y -add r3.w, l(-1.000000), cb1[1].x -max r8.w, r2.y, l(0.000000) -min r3.w, r3.w, r8.w -ge r2.y, r3.w, r2.y -mad r5.x, r5.z, cb1[0].x, r5.x -ftoi r5.x, r5.x -iadd r5.x, r5.x, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.x, r5.x, l(0), t0.xxxx -ftoi r3.w, r3.w -iadd r3.w, r3.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx -and r3.w, r3.w, r5.x -and r2.y, r2.y, r3.w -mul r19.xyz, r17.xyzx, cb0[111].xxxx -dp3 r3.w, r19.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r7.w, l(1.000000) -mov r19.xyz, l(0,0,0,0) -mov r5.x, l(1.000000) -mov r5.z, r2.y -mov r8.w, l(0) -loop - lt r9.w, l(0.010000), r5.x - ine r10.w, r5.z, l(0) - and r10.w, r9.w, r10.w - if_nz r10.w - firstbit_lo r10.w, r5.z - ishl r11.w, l(1), r10.w - xor r5.z, r5.z, r11.w - ishl r10.w, r10.w, l(3) - dp4 r20.x, cb1[r10.w + 6].xyzw, r7.xyzw - dp4 r20.y, cb1[r10.w + 7].xyzw, r7.xyzw - dp4 r20.z, cb1[r10.w + 8].xyzw, r7.xyzw - ge r21.xyz, cb1[r10.w + 5].xyzx, |r20.xyzx| - and r11.w, r21.y, r21.x - and r11.w, r21.z, r11.w - if_nz r11.w - mul r11.w, l(0.100000), cb1[r10.w + 5].x - mul r21.xyz, |r20.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r13.zw, r21.xxxy, r21.xxxy - add r21.xyw, -|r20.xyxz|, cb1[r10.w + 5].xyxz - mul r21.xyw, r21.xyxw, cb1[r10.w + 9].xyxz - eq r12.z, l(1.000000), cb1[r10.w + 10].x - if_nz r12.z - dp3 r22.x, cb1[r10.w + 6].xyzx, r18.xyzx - dp3 r22.y, cb1[r10.w + 7].xyzx, r18.xyzx - dp3 r22.z, cb1[r10.w + 8].xyzx, r18.xyzx - add r23.xyz, -r20.xyzx, cb1[r10.w + 5].xyzx - div r23.xyz, r23.xyzx, r22.xyzx - add r24.xyz, -r20.xyzx, -cb1[r10.w + 5].xyzx - div r24.xyz, r24.xyzx, r22.xyzx - lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx - movc r23.xyz, r25.xyzx, r23.xyzx, r24.xyzx - min r12.z, r23.y, r23.x - min r12.z, r23.z, r12.z - mad r20.xyz, r22.xyzx, r12.zzzz, r20.xyzx - else - mov r20.xyz, r18.xyzx - endif - dp3 r12.z, r20.xyzx, r20.xyzx - rsq r12.z, r12.z - mul r20.xyz, r12.zzzz, r20.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx - lt r23.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r22.xyz, -r22.xyzx, r23.xyzx - itof r22.xyz, r22.xyzx - dp3 r12.z, r20.xyzx, r22.xyzx - div r20.xyz, r20.xyzx, r12.zzzz - lt r12.z, r20.z, l(0.000000) - add r20.zw, -|r20.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r20.zw, r20.zzzw, r22.xxxy - movc r20.xy, r12.zzzz, r20.zwzz, r20.xyxx - dp4 r12.z, cb1[r10.w + 4].xyzw, r6.xyzw - max r12.z, r12.z, l(0.000000) - max r12.z, r12.z, l(0.000100) - min r17.w, r21.w, r21.y - min r17.w, r17.w, r21.x - add r13.z, r13.w, r13.z - mad r13.z, r21.z, r21.z, r13.z - mad r11.w, r11.w, r11.w, -r13.z - mul r11.w, r11.w, cb1[r10.w + 9].x - mul r11.w, r11.w, cb1[r10.w + 9].x - add r13.z, l(1.000000), -cb1[r10.w + 10].y - mul r11.w, r11.w, r13.z - mul r11.w, r11.w, l(100.000000) - mad_sat r11.w, r17.w, cb1[r10.w + 10].y, r11.w - mul r13.z, r11.w, cb1[r10.w + 10].w - mad r20.xy, r20.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r20.xy, r20.xyxx, cb1[1].wwww, cb1[2].wwww - mov r20.z, cb1[r10.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r20.xyz, r20.xyzx, t5.xyzw, s3, r0.z - mul r20.xyz, r20.xyzx, cb1[r10.w + 9].wwww - div r13.w, r3.w, r12.z - min r13.w, |r13.w|, l(1.000000) - mad r13.w, r13.w, l(2.000000), r3.w - add r12.z, r12.z, l(2.000000) - div r12.z, r13.w, r12.z - add r12.z, r12.z, l(-1.000000) - mad r12.z, r12.z, cb0[112].w, l(1.000000) - mul r20.xyz, r12.zzzz, r20.xyzx - mul r20.xyz, r13.zzzz, r20.xyzx - mad r19.xyz, r20.xyzx, r5.xxxx, r19.xyzx - mad r10.w, -r11.w, cb1[r10.w + 10].w, l(1.000000) - mul r5.x, r5.x, r10.w - endif - mov r8.w, l(-1) - continue - else - mov r8.w, r9.w - break - endif - mov r8.w, r9.w -endloop -if_nz r8.w - dp3 r2.y, r18.xyzx, r18.xyzx - rsq r2.y, r2.y - mul r18.xyz, r2.yyyy, r18.xyzx - lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyzx - lt r21.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r20.xyz, -r20.xyzx, r21.xyzx - itof r20.xyz, r20.xyzx - dp3 r2.y, r18.xyzx, r20.xyzx - div r18.xyz, r18.xyzx, r2.yyyy - lt r2.y, r18.z, l(0.000000) - add r13.zw, -|r18.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r13.zw, r13.zzzw, r20.xxxy - movc r13.zw, r2.yyyy, r13.zzzw, r18.xxxy - dp4 r2.y, cb1[3].xyzw, r6.xyzw - max r2.y, r2.y, l(0.000000) - max r2.y, r2.y, l(0.000100) - mad r13.zw, r13.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r18.xy, r13.zwzz, cb1[1].wwww, cb1[2].wwww - mov r18.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r18.xyz, r18.xyzx, t5.xyzw, s3, r0.z - div r0.z, r3.w, r2.y - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r3.w - add r2.y, r2.y, l(2.000000) - div r0.z, r0.z, r2.y - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r18.xyz, r0.zzzz, r18.xyzx - mad r19.xyz, r18.xyzx, r5.xxxx, r19.xyzx -endif -mul r18.xyz, r19.xyzx, cb0[112].zzzz -mul r18.xyz, r18.xyzx, cb0[111].yyyy -if_nz r2.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r19.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x - add r2.y, -r0.z, l(1.000000) - mul r20.xyz, r2.yyyy, r18.xyzx - mad r18.xyz, r19.xyzx, r0.zzzz, r20.xyzx -endif -mul r17.xyz, r3.xyzx, r17.xyzx -mul r17.xyz, r17.xyzx, cb0[111].xxxx -mad r0.z, r2.x, r13.x, r13.y -mul r2.xyz, r0.zzzz, r18.xyzx -mul r2.xyz, r10.xyzx, r2.xyzx -mad r2.xyz, r17.xyzx, r12.xywx, r2.xyzx -mul r6.xyzw, r6.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) -dp4 r10.x, r15.xyzw, r6.xyzw -dp4 r10.y, r14.xyzw, r6.xyzw -dp4 r10.z, r16.xyzw, r6.xyzw -max r6.xyz, r10.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -mul r6.xyz, r6.xyzx, cb0[111].xxxx -mul r6.xyz, r12.xywx, r6.xyzx -max r0.z, r3.y, r3.x -max r0.z, r3.z, r0.z -max r0.z, r0.z, l(0.010000) -div r3.xyz, r3.xyzx, r0.zzzz -mul r3.xyz, r3.xyzx, r6.xyzx -mul r0.z, r4.x, l(0.00787401572) -min r3.w, r5.y, l(1.000000) -bfi r1.z, l(3), l(2), r1.z, l(0) -ftou r2.w, r2.w -bfi r1.z, l(2), l(0), r2.w, r1.z -utof r1.z, r1.z -mul r1.z, r1.z, l(0.0322580636) -mad r0.z, r0.z, r3.w, r1.z -mul r3.xyz, r0.zzzz, r3.xyzx -mad r2.xyz, r3.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000), r2.xyzx -add r1.xyz, r1.xywx, r2.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r7.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r5.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r7.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xyz, r0.zzzz, cb0[155].xyzx -mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r2.xyz, r2.xyzx -dp3 r0.z, -r11.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.w, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.w -lt r2.w, l(0.000000), cb0[163].z -if_nz r2.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r11.xyzx, -r9.xyzx - add r2.w, r7.y, -cb0[44].y - lt r3.z, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.z - mul r0.x, r0.x, cb0[163].w - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w - mul r3.w, r0.x, r3.z - mad r4.x, r3.w, r2.w, cb0[44].y - mad r2.w, -r3.w, r2.w, r2.w - mul r3.w, r2.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - mul r2.w, r2.w, cb0[162].x - max r2.w, r2.w, l(-127.000000) - add r5.x, r4.x, -cb0[159].x - mul r5.x, r5.x, cb0[159].z - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[159].y - lt r5.y, l(5.960464478E-08), |r3.w| - exp r5.z, -r3.w - add r5.z, -r5.z, l(1.000000) - div r5.z, r5.z, r3.w - mad r3.w, -r3.w, l(0.240226507), l(0.693147182) - movc r3.w, r5.y, r5.z, r3.w - add r4.x, r4.x, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r5.y, l(5.960464478E-08), |r2.w| - exp r5.z, -r2.w - add r5.z, -r5.z, l(1.000000) - div r5.z, r5.z, r2.w - mad r2.w, -r2.w, l(0.240226507), l(0.693147182) - movc r2.w, r5.y, r5.z, r2.w - mul r2.w, r2.w, r4.x - mad r2.w, r5.x, r3.w, r2.w - mad r0.x, -r0.x, r3.z, l(1.000000) - mul r0.x, r5.w, r0.x - mul r0.x, r0.x, r2.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r3.zw, r5.wwww, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r3.z - add r0.x, r3.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz - mul r3.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r4.w|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r3.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t12.xyzw, s1, l(0.000000) - add r0.y, |r4.w|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r0.x, r0.x, r3.w -else - add r0.y, r7.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.w, cb0[44].y, -cb0[159].x - mul r2.w, r2.w, cb0[159].z - max r2.w, r2.w, l(-127.000000) - exp r2.w, -r2.w - mul r2.w, r2.w, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.w, r0.w, r0.y - mul r0.y, r5.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r5.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r3.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r2.xyzx -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.w, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r2.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx - -// === Simplified Fog Modification (Anti-Banding) === -// Check if fog modification is enabled via cb13[12].y -lt r15.x, l(0.500000), cb13[12].y -if_nz r15.x - // r1.xyz = scene color, r4.xyz = transmittance, r0.xyz = fog inscatter - // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density - add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx - - // Reduce fog inscatter intensity - mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - - // Modified fog blend: scene * boostedTrans + reducedInscatter - mad r0.xyz, r1.xyzx, r15.xyzx, r16.xyzx -else - // Original fog blend - mad r0.xyz, r1.xyzx, r4.xyzx, r0.xyzx -endif -// === End Fog Modification === -dp3 r0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -dp3 r1.w, r8.xyzx, r8.xyzx -sqrt r1.w, r1.w -mad_sat r1.w, -r1.w, cb0[169].z, l(1.000000) -mul r2.x, r1.w, cb0[169].x -mad r1.w, -cb0[169].x, r1.w, l(1.000000) -mul r2.yzw, cb0[168].xxyz, cb0[183].wwww -mad r2.yzw, r7.xxyz, cb0[169].yyyy, r2.yyzw -sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t25.xwyz, s2, l(0.000000) -dp2 r2.x, r2.yyyy, r2.xxxx -add r1.w, r1.w, r2.x -add r2.x, r0.w, l(1.000000) -min r1.w, r1.w, r2.x -add r0.xyz, -r1.xyzx, r0.xyzx -mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx -mov o0.w, r0.w -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xC34914B1.cso b/src/games/endfield/deferred-lighting/0xC34914B1.cso deleted file mode 100644 index 155248586e8eae5c2301dc5960e92aae5a438f5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58856 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 diff --git a/src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0.asm deleted file mode 100644 index 60aae31beb..0000000000 --- a/src/games/endfield/deferred-lighting/0xC34914B1.ps_5_0.asm +++ /dev/null @@ -1,1931 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 22:27:23 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy w -// TEXCOORD 0 xy 1 NONE float xy -// TEXCOORD 1 xyz 2 NONE float xyz -// TEXCOORD 2 xyz 3 NONE float xyz -// TEXCOORD 3 xyzw 4 NONE float xyzw -// TEXCOORD 4 xyz 5 NONE float xyz -// TEXCOORD 5 xyz 6 NONE float xyz -// TEXCOORD 6 xyz 7 NONE float xyz -// TEXCOORD 7 xyz 8 NONE float xyz -// TEXCOORD 8 x 9 NONE uint x -// SV_IsFrontFace 0 x 10 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[216], immediateIndexed -dcl_constantbuffer CB1[4093], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[14], immediateIndexed -dcl_constantbuffer CB6[160], dynamicIndexed -dcl_constantbuffer CB13[13], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_comparison -dcl_sampler s3, mode_default -dcl_sampler s4, mode_default -dcl_sampler s5, mode_default -dcl_sampler s6, mode_default -dcl_sampler s7, mode_default -dcl_resource_structured t0, 4 -dcl_resource_structured t1, 16 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture3d (float,float,float,float) t4 -dcl_resource_texture3d (float,float,float,float) t5 -dcl_resource_texture3d (float,float,float,float) t6 -dcl_resource_texture3d (float,float,float,float) t7 -dcl_resource_texture3d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texturecube (float,float,float,float) t17 -dcl_resource_texture2d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_input_ps_siv linear noperspective v0.xyw, position -dcl_input_ps linear v1.xy -dcl_input_ps linear v2.xyz -dcl_input_ps linear v3.xyz -dcl_input_ps linear v4.xyzw -dcl_input_ps linear v5.xyz -dcl_input_ps linear v6.xyz -dcl_input_ps linear v7.xyz -dcl_input_ps linear v8.xyz -dcl_input_ps constant v9.x -dcl_input_ps_sgv constant v10.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 32 -add r0.xyz, -v2.xyzx, cb0[44].xyzx -mov r1.x, cb0[0].z -mov r1.y, cb0[1].z -mov r1.z, cb0[2].z -add r2.xyz, -r0.xyzx, r1.xyzx -mad r0.xyz, cb0[86].wwww, r2.xyzx, r0.xyzx -dp3 r0.w, r0.xyzx, r0.xyzx -max r1.w, r0.w, l(9.999999939E-09) -rsq r1.w, r1.w -mul r2.xyz, r0.xyzx, r1.wwww -ishl r2.w, v9.x, l(4) -and r3.x, l(16), cb1[r2.w + 4].w -if_nz r3.x - iadd r3.x, l(2), cb1[r2.w + 5].x - ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r3.x, l(12), t1.xxxx - ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.y, cb1[r2.w + 5].x, l(12), t1.xxxx -else - mov r3.xy, cb1[r2.w + 3].zxzz -endif -sample_b_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t13.xyzw, s4, cb0[108].x -sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t14.xyzw, s5, cb0[108].x -add r3.z, -r5.w, l(1.000000) -mul r4.xyzw, r4.xyzw, cb5[5].xyzw -mul r6.xyz, r4.xyzx, cb5[4].zzzz -dp3 r3.w, r6.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r6.xyz, r4.xyzx, cb5[4].zzzz, -r3.wwww -mad r6.xyz, cb5[4].wwww, r6.xyzx, r3.wwww -sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, v1.xyxx, t15.xywz, s6, cb0[108].x -mul r7.x, r7.x, r7.z -mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r3.w, r7.xyxx, r7.xyxx -min r3.w, r3.w, l(1.000000) -add r3.w, -r3.w, l(1.000000) -sqrt r3.w, r3.w -max r3.w, r3.w, l(1.000000017E-16) -mul r7.xy, r7.xyxx, cb5[0].wwww -sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, v1.xyxx, t16.xyzw, s7, cb0[108].x -add r9.xz, -r3.yyxy, v2.xxzx -mov r9.y, l(0.0000610351562) -dp3 r3.x, r9.xyzx, r9.xyzx -rsq r3.x, r3.x -mul r9.xyz, r3.xxxx, r9.xyzx -mul r10.xyz, v3.zxyz, v4.yzxy -mad r10.xyz, v3.yzxy, v4.zxyz, -r10.xyzx -mul r10.xyz, r10.xyzx, v4.wwww -mul r7.yzw, r7.yyyy, r10.xxyz -mad r7.xyz, r7.xxxx, v4.xyzx, r7.yzwy -mad r3.xyw, r3.wwww, v3.xyxz, r7.xyxz -mad r6.w, cb5[1].y, l(2.000000), l(-1.000000) -movc r6.w, v10.x, l(1.000000), r6.w -dp3 r7.x, r3.xywx, r3.xywx -max r7.x, r7.x, l(1.175494351E-38) -rsq r7.x, r7.x -mul r3.xyw, r3.xyxw, r7.xxxx -mul r7.xyz, r6.wwww, r3.xywx -dp3 r8.w, v3.xyzx, v3.xyzx -rsq r8.w, r8.w -mul r11.xyz, r8.wwww, v3.xyzx -mul r11.xyz, r6.wwww, r11.xyzx -ftou r12.xy, v0.xyxx -add r8.w, l(1.000000), -cb0[111].x -mad r8.w, cb0[198].w, r8.w, cb0[111].x -mul r8.w, r8.w, cb0[109].x -lt r9.w, cb0[187].y, l(0.500000) -if_nz r9.w - mad r13.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx - add r13.xyz, -r13.xyzx, v2.xzyx - max r9.w, |r13.y|, |r13.x| - add r9.w, r9.w, l(-464.000000) - mul_sat r9.w, r9.w, l(0.031250) - add r10.w, |r13.z|, l(-208.000000) - mul_sat r10.w, r10.w, l(0.031250) - max r9.w, r9.w, r10.w - ne r10.w, l(0.000000), cb0[210].w - lt r11.w, r9.w, l(1.000000) - and r10.w, r10.w, r11.w - if_nz r10.w - mad r13.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r13.xyz, -r13.xyzx, v2.xzyx - max r10.w, |r13.y|, |r13.x| - add r10.w, r10.w, l(-29.000000) - mul_sat r10.w, r10.w, l(0.500000) - add r11.w, |r13.z|, l(-13.000000) - mul_sat r11.w, r11.w, l(0.500000) - max r10.w, r10.w, r11.w - lt r11.w, r10.w, l(1.000000) - if_nz r11.w - mad r13.xyz, v2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r14.xyz, r13.xyzx, cb0[211].xyzx - round_ni r14.xyz, r14.xyzx - mad r13.xyz, r13.xyzx, cb0[211].xyzx, -r14.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r14.xyw, r13.xyzx, t4.yzwx, s1, l(0.000000) - add r11.w, -r10.w, l(1.000000) - mul r15.x, l(0.500000), cb0[211].y - mad r15.y, -cb0[211].y, l(0.500000), l(1.000000) - max r13.y, r13.y, r15.x - min r13.y, r15.y, r13.y - mul r13.w, r13.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r13.xwzx, t5.xyzw, s0, l(0.000000) - mad r13.y, r15.w, r11.w, r9.w - add r16.xyz, r13.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s0, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r14.yyyy, r16.xyzx - mov r16.w, r14.y - mul r16.xyzw, r11.wwww, r16.xyzw - add r13.xzw, r13.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t5.xwyz, s0, l(0.000000) - mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r17.xyz, r14.xxxx, r13.xzwx - mov r17.w, r14.x - mul r17.xyzw, r11.wwww, r17.xyzw - mad r13.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r14.xyz, r14.wwww, r13.xzwx - mul r14.xyzw, r11.wwww, r14.xyzw - else - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r13.y, r9.w - endif - mad r13.xzw, cb0[6].xxzy, -cb0[212].zzzz, cb0[210].xxzy - add r13.xzw, -r13.xxzw, v2.xxzy - max r11.w, |r13.z|, |r13.x| - add r11.w, r11.w, l(-116.000000) - mul_sat r11.w, r11.w, l(0.125000) - add r13.x, |r13.w|, l(-52.000000) - mul_sat r13.x, r13.x, l(0.125000) - max r11.w, r11.w, r13.x - lt r13.x, r11.w, l(1.000000) - if_nz r13.x - mad r13.xzw, v2.xxyz, l(0.500000, 0.000000, 0.500000, 0.500000), l(0.500000, 0.000000, 0.500000, 0.500000) - mul r15.xyz, r13.xzwx, cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r15.xyz, r13.xzwx, cb0[211].xyzx, -r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r15.xyzx, t6.yzwx, s1, l(0.000000) - add r13.x, -r11.w, l(1.000000) - mul r10.w, r10.w, r13.x - mul r13.x, l(0.500000), cb0[211].y - mad r13.z, -cb0[211].y, l(0.500000), l(1.000000) - max r13.x, r13.x, r15.y - min r13.x, r13.z, r13.x - mul r15.w, r13.x, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r15.xwzx, t7.xyzw, s0, l(0.000000) - mad r13.y, r19.w, r10.w, r13.y - add r13.xzw, r15.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t7.xwyz, s0, l(0.000000) - mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r20.xyz, r18.yyyy, r13.xzwx - mov r20.w, r18.y - mad r16.xyzw, r20.xyzw, r10.wwww, r16.xyzw - add r13.xzw, r15.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t7.xwyz, s0, l(0.000000) - mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r15.xyz, r18.xxxx, r13.xzwx - mov r15.w, r18.x - mad r17.xyzw, r15.xyzw, r10.wwww, r17.xyzw - mad r13.xzw, r19.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r18.xyz, r18.wwww, r13.xzwx - mad r14.xyzw, r18.xyzw, r10.wwww, r14.xyzw - endif - lt r10.w, l(0.000000), r11.w - if_nz r10.w - mad r13.xzw, v2.xxyz, l(0.125000, 0.000000, 0.125000, 0.125000), l(0.500000, 0.000000, 0.500000, 0.500000) - mul r15.xyz, r13.xzwx, cb0[211].xyzx - mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r13.xzw, r13.xxzw, cb0[211].xxyz, -r15.xxyz - mad r15.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r13.xzw, r18.xxyz, r13.xxzw - min r19.xyz, r15.xyzx, r13.xzwx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r19.xyzx, t8.yzwx, s1, l(0.000000) - add r10.w, -r9.w, l(1.000000) - mul r10.w, r10.w, r11.w - max r11.w, r18.y, r19.y - min r11.w, r15.y, r11.w - mul r19.w, r11.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r19.xwzx, t9.xyzw, s0, l(0.000000) - add r13.xzw, r19.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t9.xwyz, s0, l(0.000000) - mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r18.xyz, r20.yyyy, r13.xzwx - mov r18.w, r20.y - mad r16.xyzw, r18.xyzw, r10.wwww, r16.xyzw - add r13.xzw, r19.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r13.xzw, r13.xzwx, t9.xwyz, s0, l(0.000000) - mad r13.xzw, r13.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r18.xyz, r20.xxxx, r13.xzwx - mov r18.w, r20.x - mad r17.xyzw, r18.xyzw, r10.wwww, r17.xyzw - mad r13.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r20.xyz, r20.wwww, r13.xzwx - mad r14.xyzw, r20.xyzw, r10.wwww, r14.xyzw - mad r13.y, r15.w, r10.w, r13.y - endif - mad_sat r10.w, r13.y, l(2.000000), l(-1.000000) - add r13.x, -r9.w, r10.w - add r9.w, r9.w, r10.w - mul r13.y, r9.w, l(0.500000) - else - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r13.xy, l(0,1.000000,0,0) - endif - mul r15.xyzw, r13.yyyx, cb0[213].xyzw - mad r15.y, r15.w, l(0.500000), r15.y - mul r13.zw, r13.yyyx, cb0[213].wwwy - mad r15.w, r13.w, l(0.375000), r13.z - add r14.xyzw, r14.xyzw, r15.xyzw - mul r15.xyzw, r13.yyyx, cb0[214].xyzw - mad r15.y, r15.w, l(0.500000), r15.y - mul r13.zw, r13.yyyx, cb0[214].wwwy - mad r15.w, r13.w, l(0.375000), r13.z - add r15.xyzw, r15.xyzw, r17.xyzw - mul r17.xyzw, r13.yyyx, cb0[215].xyzw - mad r17.y, r17.w, l(0.500000), r17.y - mul r13.xy, r13.yxyy, cb0[215].wyww - mad r17.w, r13.y, l(0.375000), r13.x - add r13.xyzw, r16.xyzw, r17.xyzw - mov r7.w, l(1.000000) - dp4 r16.x, r14.xyzw, r7.xyzw - dp4 r16.y, r15.xyzw, r7.xyzw - dp4 r16.z, r13.xyzw, r7.xyzw - max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r17.xyz, r8.wwww, r16.xyzx - mul r18.xyz, r15.xyzx, l(0.715200, 0.715200, 0.715200, 0.000000) - mad r18.xyz, r14.xyzx, l(0.212600, 0.212600, 0.212600, 0.000000), r18.xyzx - mad r18.xyz, r13.xyzx, l(0.072200, 0.072200, 0.072200, 0.000000), r18.xyzx - dp3 r7.w, r18.xyzx, r18.xyzx - max r7.w, r7.w, l(1.175494351E-38) - rsq r7.w, r7.w - mul r18.xyz, r7.wwww, r18.xyzx - mov r18.y, |r18.y| - mov r18.w, l(1.000000) - dp4 r14.x, r14.xyzw, r18.xyzw - dp4 r14.y, r15.xyzw, r18.xyzw - dp4 r14.z, r13.xyzw, r18.xyzw - max r13.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - ge r7.w, r17.y, r17.z - and r7.w, r7.w, l(0x3f800000) - mov r14.xy, r17.zyzz - mov r14.zw, l(0,0,-1.000000,0.666666687) - mad r15.xy, r16.yzyy, r8.wwww, -r14.xyxx - mov r15.zw, l(0,0,1.000000,-1.000000) - mad r14.xyzw, r7.wwww, r15.xyzw, r14.xyzw - ge r7.w, r17.x, r14.x - and r7.w, r7.w, l(0x3f800000) - mov r15.xyz, r14.xywx - mov r15.w, r17.x - mov r14.xyw, r15.wywx - add r14.xyzw, -r15.xyzw, r14.xyzw - mad r14.xyzw, r7.wwww, r14.xyzw, r15.xyzw - min r7.w, r14.y, r14.w - add r7.w, -r7.w, r14.x - add r9.w, -r14.y, r14.w - mad r10.w, r7.w, l(6.000000), l(0.000100) - div r9.w, r9.w, r10.w - add r9.w, r9.w, r14.z - frc r9.w, |r9.w| - add r10.w, r14.x, l(0.000100) - div r7.w, r7.w, r10.w - add r15.xyzw, r9.wwww, l(-0.500000, 1.000000, 0.666666687, 0.333333343) - add r9.w, |r15.x|, l(-0.450000) - mul_sat r9.w, r9.w, l(-10.000001) - mad r10.w, r9.w, l(-2.000000), l(3.000000) - mul r9.w, r9.w, r9.w - mul r9.w, r9.w, r10.w - mad r9.w, r9.w, l(-0.350000), l(0.700000) - mov_sat r14.x, r14.x - mul r9.w, r9.w, r14.x - min r7.w, r7.w, r9.w - add r9.w, -r7.w, l(2.000000) - div r9.w, l(2.000000), r9.w - frc r14.xyz, r15.yzwy - mad r14.xyz, r14.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) - add_sat r14.xyz, |r14.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r14.xyz, r14.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) - mad r14.xyz, r7.wwww, r14.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mul r14.xyz, r9.wwww, r14.xyzx - max r7.w, r13.y, r13.x - max r7.w, r13.z, r7.w - mul r8.w, r8.w, r7.w - mov r7.w, l(1.000000) -else - mov r18.xyz, l(0,0,0,0) - mov r17.xyz, l(1.000000,1.000000,1.000000,0) - mov r14.xyz, cb0[188].xyzx - mov r7.w, l(0) -endif -dp3 r13.x, v4.xyzx, r2.xyzx -dp3 r13.y, r10.xyzx, r2.xyzx -dp3 r13.z, v3.xyzx, r2.xyzx -dp3 r9.w, r13.xyzx, r13.xyzx -max r9.w, r9.w, l(1.175494351E-38) -rsq r9.w, r9.w -mul r10.xyz, r9.wwww, r13.xyzx -mad r13.xy, v1.xyxx, cb5[13].xyxx, cb5[13].zwzz -deriv_rtx_coarse r13.zw, v1.xxxy -deriv_rty_coarse r15.xy, v1.xyxx -min r9.w, l(20.000000), cb5[11].x -div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w -max r10.z, r10.z, l(0.001000) -div r10.xy, r10.xyxx, r10.zzzz -mul r10.xy, r10.xyxx, -cb5[11].yyyy -mul r15.zw, r10.wwww, r10.xxxy -add r10.z, -r10.w, l(1.000000) -add r9.w, r9.w, l(1.000000) -mul r13.zw, r13.zzzw, cb0[108].yyyy -mul r15.xy, r15.xyxx, cb0[108].yyyy -mov r16.xy, r15.zwzz -mov r16.zw, l(0,0,0,0) -mov r11.w, r10.z -mov r14.w, l(0) -mov r17.w, l(1.000000) -mov r18.w, l(0) -mov r19.x, l(0) -loop - lt r19.y, r19.x, r9.w - if_nz r19.y - add r19.yz, r13.xxyx, r16.xxyx - sample_d_indexable(texture2d)(float,float,float,float) r19.y, r19.yzyy, t10.yxzw, s3, r13.zwzz, r15.xyxx - lt r19.z, r11.w, r19.y - if_nz r19.z - mov r18.w, r19.y - break - endif - add r19.x, r19.x, l(1.000000) - mad r19.zw, r10.xxxy, r10.wwww, r16.xxxy - add r20.x, -r10.w, r11.w - mov r16.zw, r16.xxxy - mov r14.w, r19.y - mov r17.w, r11.w - mov r11.w, r20.x - mov r16.xy, r19.zwzz - continue - else - mov r18.w, r14.w - break - endif -endloop -add r9.w, r14.w, -r17.w -add r10.x, r14.w, -r18.w -add r10.x, r11.w, r10.x -add r10.x, -r17.w, r10.x -div r9.w, r9.w, r10.x -mad r10.xy, r15.zwzz, r9.wwww, r16.zwzz -add r10.xy, r13.xyxx, r10.xyxx -sample_b_indexable(texture2d)(float,float,float,float) r9.w, r10.xyxx, t10.yzwx, s3, cb0[108].x -add r10.x, -v2.y, cb1[r2.w + 12].z -add r10.x, r10.x, l(0.200000) -mul_sat r10.x, r10.x, l(2.85714269) -mad r10.y, r10.x, l(-2.000000), l(3.000000) -mul r10.x, r10.x, r10.x -mul r10.x, r10.x, r10.y -mul r10.x, r10.x, cb1[r2.w + 12].y -max r10.x, r10.x, cb1[r2.w + 12].w -add r10.y, r10.x, cb1[r2.w + 12].x -lt r10.y, l(0.010000), r10.y -if_nz r10.y - add r10.y, -r5.x, l(1.000000) - mul r13.xyz, r4.xyzx, r10.yyyy - dp3 r10.z, r13.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r10.z, r10.z, l(-0.350000) - mul_sat r10.z, r10.z, l(-4.000000) - mad r10.w, r10.z, l(-2.000000), l(3.000000) - mul r10.z, r10.z, r10.z - mul r11.w, r10.z, r10.w - mul r13.xyzw, v8.xyxz, l(1.000000, -1.000000, 1.000000, 1.000000) - movc r13.xyzw, cb1[r2.w + 4].wwww, r13.xyzw, v8.xzxy - mul r15.xyzw, r13.xyzw, cb0[196].zzzz - movc r16.yz, cb1[r2.w + 4].wwww, v7.zzyz, v7.yyzy - mov r16.x, v7.x - add r19.xyz, |r16.xyzx|, l(-0.200000, -0.200000, -0.200000, 0.000000) - mul r20.xyz, r19.xyzx, r19.xyzx - mul r19.xyz, r19.xyzx, r20.xyzx - max r19.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - dp3 r13.x, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - div r19.xyz, r19.xyzx, r13.xxxx - sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r15.zyzz, t11.xyzw, s4, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.zwzz, t11.xyzw, s4, cb0[108].x - mul r22.xyzw, r19.zzzz, r22.xyzw - mad r21.xyzw, r21.xyzw, r19.yyyy, r22.xyzw - sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.ywyy, t11.xyzw, s4, cb0[108].x - mad r19.xyzw, r22.xyzw, r19.xxxx, r21.xyzw - add r16.yw, -r19.wwww, l(0.000000, 0.800000, 0.000000, 0.450000) - mul r21.xyz, r7.yyxy, l(0.200000, 0.000000, 1.000000, 0.000000) - mad_sat r13.x, cb1[r2.w + 12].x, r10.y, r21.x - add r13.x, -r16.y, r13.x - mul_sat r13.x, r13.x, l(3.33333325) - mad r14.w, r13.x, l(-2.000000), l(3.000000) - mul r13.x, r13.x, r13.x - mul r13.x, r13.x, r14.w - mul_sat r10.y, r10.y, r10.x - add r10.y, -r16.w, r10.y - mul_sat r10.y, r10.y, l(1.53846145) - mad r14.w, r10.y, l(-2.000000), l(3.000000) - mul r10.y, r10.y, r10.y - mul r10.y, r10.y, r14.w - max r10.y, r10.y, r13.x - add r13.x, r5.x, l(-0.500000) - mul_sat r13.x, r13.x, l(4.000000) - mad r14.w, r13.x, l(-2.000000), l(3.000000) - mul r13.x, r13.x, r13.x - mul r13.x, r13.x, r14.w - add r5.w, -r5.w, l(0.199999988) - mul_sat r5.w, r5.w, l(-5.00000048) - mad r14.w, r5.w, l(-2.000000), l(3.000000) - mul r5.w, r5.w, r5.w - mul r5.w, r5.w, r14.w - mad r14.w, r5.w, r11.w, r13.x - min r14.w, r14.w, l(1.000000) - max r10.x, r10.x, cb1[r2.w + 12].x - mad r16.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mul r19.xyw, r15.yzyw, l(20.000000, 20.000000, 0.000000, 20.000000) - mul r22.xyz, r15.yzwy, l(34.345600, 34.345600, 34.345600, 0.000000) - mul r23.xyz, r20.xyzx, r20.xyzx - mul r23.xyz, r23.xyzx, r23.xyzx - mul r20.xyz, r20.xyzx, r23.xyzx - dp3 r17.w, r20.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - div r20.xyz, r20.xyzx, r17.wwww - round_ni r23.xyzw, r19.yxyw - mul r24.xyzw, r23.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r24.xyzw, r24.xyzw - add r25.xyzw, r24.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r17.w, r24.xyxx, r25.xyxx - add r21.xw, r17.wwww, r24.xxxy - mul r17.w, r21.w, r21.x - add r18.w, r21.w, r21.x - frc r17.w, r17.w - frc r26.w, r18.w - add r27.xyzw, r23.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) - mul r27.xyzw, r27.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r27.xyzw, r27.xyzw - add r28.xyzw, r27.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r18.w, r27.xyxx, r28.xyxx - add r21.xw, r18.wwww, r27.xxxy - mul r18.w, r21.w, r21.x - add r19.y, r21.w, r21.x - frc r24.x, r18.w - frc r24.y, r19.y - mad r18.w, r17.w, l(0.399999976), l(0.600000) - mul r19.y, r18.w, l(0.250000) - mad r23.xyzw, r15.zyzw, l(20.000000, 20.000000, 20.000000, 20.000000), -r23.xyzw - mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.xxxy - add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) - mul r23.x, r21.x, l(1.250000) - lt r20.w, r21.w, l(0.000000) - movc r20.w, r20.w, l(1.250000), l(0.750000) - mul r23.y, r20.w, r21.w - mad r17.w, cb0[102].x, l(3.000000), r17.w - frc r17.w, r17.w - add r21.xw, r17.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) - mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) - mad r25.xy, r21.xwxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) - mul r21.xw, r21.xxxw, r21.xxxw - mul r21.xw, r21.xxxw, r25.xxxy - mul r17.w, r21.w, r21.x - dp2 r20.w, r23.xyxx, r23.xyxx - sqrt r20.w, r20.w - mad r18.w, -r18.w, l(0.250000), r20.w - div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.y - mul_sat r18.w, r18.w, r20.w - mad r20.w, r18.w, l(-2.000000), l(3.000000) - mul r18.w, r18.w, r18.w - mul r18.w, r18.w, r20.w - ge r18.w, r18.w, l(0.001000) - and r18.w, r18.w, l(0x3f800000) - mul r26.z, r17.w, r18.w - div r21.xw, r23.xxxy, r19.yyyy - max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) - min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - ge r17.w, r26.z, l(0.001000) - and r17.w, r17.w, l(0x3f800000) - mul r21.xw, r17.wwww, r21.xxxw - mad r17.w, r24.x, l(0.250000), l(0.250000) - mul r26.xy, r17.wwww, r21.xwxx - dp2 r17.w, r24.zwzz, r25.zwzz - add r21.xw, r17.wwww, r24.zzzw - mul r17.w, r21.w, r21.x - add r18.w, r21.w, r21.x - frc r17.w, r17.w - frc r24.w, r18.w - dp2 r18.w, r27.zwzz, r28.zwzz - add r21.xw, r18.wwww, r27.zzzw - mul r18.w, r21.w, r21.x - add r19.y, r21.w, r21.x - frc r23.x, r18.w - frc r23.y, r19.y - mad r18.w, r17.w, l(0.399999976), l(0.600000) - mul r19.y, r18.w, l(0.250000) - mad r21.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.zzzw - add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) - mul r25.x, r21.x, l(1.250000) - lt r20.w, r21.w, l(0.000000) - movc r20.w, r20.w, l(1.250000), l(0.750000) - mul r25.y, r20.w, r21.w - mad r17.w, cb0[102].x, l(3.000000), r17.w - frc r17.w, r17.w - add r21.xw, r17.wwww, l(-0.200000, 0.000000, 0.000000, -0.850000) - mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) - mad r23.yz, r21.xxwx, l(0.000000, -2.000000, -2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000) - mul r21.xw, r21.xxxw, r21.xxxw - mul r21.xw, r21.xxxw, r23.yyyz - mul r17.w, r21.w, r21.x - dp2 r20.w, r25.xyxx, r25.xyxx - sqrt r20.w, r20.w - mad r18.w, -r18.w, l(0.250000), r20.w - div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.y - mul_sat r18.w, r18.w, r20.w - mad r20.w, r18.w, l(-2.000000), l(3.000000) - mul r18.w, r18.w, r18.w - mul r18.w, r18.w, r20.w - ge r18.w, r18.w, l(0.001000) - and r18.w, r18.w, l(0x3f800000) - mul r24.z, r17.w, r18.w - div r21.xw, r25.xxxy, r19.yyyy - max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) - min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - ge r17.w, r24.z, l(0.001000) - and r17.w, r17.w, l(0x3f800000) - mul r21.xw, r17.wwww, r21.xxxw - mad r17.w, r23.x, l(0.250000), l(0.250000) - mul r24.xy, r17.wwww, r21.xwxx - round_ni r19.xy, r19.xwxx - mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r21.xw, r21.xxxw - add r23.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r17.w, r21.xwxx, r23.xyxx - add r21.xw, r17.wwww, r21.xxxw - mul r17.w, r21.w, r21.x - add r18.w, r21.w, r21.x - frc r17.w, r17.w - frc r23.w, r18.w - add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) - mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r21.xw, r21.xxxw - add r25.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r18.w, r21.xwxx, r25.xyxx - add r21.xw, r18.wwww, r21.xxxw - mul r18.w, r21.w, r21.x - add r19.w, r21.w, r21.x - frc r25.x, r18.w - frc r25.y, r19.w - mad r18.w, r17.w, l(0.399999976), l(0.600000) - mul r19.w, r18.w, l(0.250000) - mad r19.xy, r15.ywyy, l(20.000000, 20.000000, 0.000000, 0.000000), -r19.xyxx - mad r21.xw, r25.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx - add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - mul r27.x, r19.x, l(1.250000) - lt r19.x, r19.y, l(0.000000) - movc r19.x, r19.x, l(1.250000), l(0.750000) - mul r27.y, r19.x, r19.y - mad r17.w, cb0[102].x, l(3.000000), r17.w - frc r17.w, r17.w - add r19.xy, r17.wwww, l(-0.200000, -0.850000, 0.000000, 0.000000) - mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) - mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r19.xy, r19.xyxx, r19.xyxx - mul r19.xy, r19.xyxx, r21.xwxx - mul r17.w, r19.y, r19.x - dp2 r19.x, r27.xyxx, r27.xyxx - sqrt r19.x, r19.x - mad r18.w, -r18.w, l(0.250000), r19.x - div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.w - mul_sat r18.w, r18.w, r19.x - mad r19.x, r18.w, l(-2.000000), l(3.000000) - mul r18.w, r18.w, r18.w - mul r18.w, r18.w, r19.x - ge r18.w, r18.w, l(0.001000) - and r18.w, r18.w, l(0x3f800000) - mul r23.z, r17.w, r18.w - div r19.xy, r27.xyxx, r19.wwww - max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r17.w, r23.z, l(0.001000) - and r17.w, r17.w, l(0x3f800000) - mul r19.xy, r17.wwww, r19.xyxx - mad r17.w, r25.x, l(0.250000), l(0.250000) - mul r23.xy, r17.wwww, r19.xyxx - mul r24.xyzw, r20.zzzz, r24.xyzw - mad r24.xyzw, r26.xyzw, r20.yyyy, r24.xyzw - mad r23.xyzw, r23.xyzw, r20.xxxx, r24.xyzw - round_ni r24.xyzw, r22.yxyz - mul r25.xyzw, r24.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r25.xyzw, r25.xyzw - add r26.xyzw, r25.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r17.w, r25.xyxx, r26.xyxx - add r19.xy, r17.wwww, r25.xyxx - mul r17.w, r19.y, r19.x - add r18.w, r19.y, r19.x - frc r17.w, r17.w - frc r27.w, r18.w - add r28.xyzw, r24.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) - mul r28.xyzw, r28.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r28.xyzw, r28.xyzw - add r29.xyzw, r28.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r18.w, r28.xyxx, r29.xyxx - add r19.xy, r18.wwww, r28.xyxx - mul r18.w, r19.y, r19.x - add r19.x, r19.y, r19.x - frc r25.x, r18.w - frc r25.y, r19.x - mad r18.w, r17.w, l(0.399999976), l(0.600000) - mul r19.x, r18.w, l(0.250000) - mad r24.xyzw, r15.xyzw, l(34.345600, 34.345600, 34.345600, 34.345600), -r24.xyzw - mad r19.yw, r25.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.xxxy - add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) - mul r24.x, r19.y, l(1.250000) - lt r15.x, r19.w, l(0.000000) - movc r15.x, r15.x, l(1.250000), l(0.750000) - mul r24.y, r15.x, r19.w - mad r15.x, cb0[102].x, l(4.345600), r17.w - frc r15.x, r15.x - add r19.yw, r15.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) - mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) - mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r19.yw, r19.yyyw, r19.yyyw - mul r19.yw, r19.yyyw, r21.xxxw - mul r15.x, r19.w, r19.y - dp2 r17.w, r24.xyxx, r24.xyxx - sqrt r17.w, r17.w - mad r17.w, -r18.w, l(0.250000), r17.w - div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r19.x - mul_sat r17.w, r17.w, r18.w - mad r18.w, r17.w, l(-2.000000), l(3.000000) - mul r17.w, r17.w, r17.w - mul r17.w, r17.w, r18.w - ge r17.w, r17.w, l(0.001000) - and r17.w, r17.w, l(0x3f800000) - mul r27.z, r15.x, r17.w - div r19.xy, r24.xyxx, r19.xxxx - max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r15.x, r27.z, l(0.001000) - and r15.x, r15.x, l(0x3f800000) - mul r19.xy, r15.xxxx, r19.xyxx - mad r15.x, r25.x, l(0.250000), l(0.250000) - mul r27.xy, r15.xxxx, r19.xyxx - dp2 r15.x, r25.zwzz, r26.zwzz - add r19.xy, r15.xxxx, r25.zwzz - mul r15.x, r19.y, r19.x - add r17.w, r19.y, r19.x - frc r15.x, r15.x - frc r25.w, r17.w - dp2 r17.w, r28.zwzz, r29.zwzz - add r19.xy, r17.wwww, r28.zwzz - mul r17.w, r19.y, r19.x - add r18.w, r19.y, r19.x - frc r19.x, r17.w - frc r19.y, r18.w - mad r17.w, r15.x, l(0.399999976), l(0.600000) - mul r18.w, r17.w, l(0.250000) - mad r19.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.zzzw - add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) - mul r24.x, r19.y, l(1.250000) - lt r19.y, r19.w, l(0.000000) - movc r19.y, r19.y, l(1.250000), l(0.750000) - mul r24.y, r19.y, r19.w - mad r15.x, cb0[102].x, l(4.345600), r15.x - frc r15.x, r15.x - add r19.yw, r15.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) - mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) - mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r19.yw, r19.yyyw, r19.yyyw - mul r19.yw, r19.yyyw, r21.xxxw - mul r15.x, r19.w, r19.y - dp2 r19.y, r24.xyxx, r24.xyxx - sqrt r19.y, r19.y - mad r17.w, -r17.w, l(0.250000), r19.y - div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w - mul_sat r17.w, r17.w, r19.y - mad r19.y, r17.w, l(-2.000000), l(3.000000) - mul r17.w, r17.w, r17.w - mul r17.w, r17.w, r19.y - ge r17.w, r17.w, l(0.001000) - and r17.w, r17.w, l(0x3f800000) - mul r25.z, r15.x, r17.w - div r19.yw, r24.xxxy, r18.wwww - max r19.yw, r19.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) - min r19.yw, r19.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) - ge r15.x, r25.z, l(0.001000) - and r15.x, r15.x, l(0x3f800000) - mul r19.yw, r15.xxxx, r19.yyyw - mad r15.x, r19.x, l(0.250000), l(0.250000) - mul r25.xy, r15.xxxx, r19.ywyy - round_ni r19.xy, r22.xzxx - mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r21.xw, r21.xxxw - add r22.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r15.x, r21.xwxx, r22.xyxx - add r21.xw, r15.xxxx, r21.xxxw - mul r15.x, r21.w, r21.x - add r17.w, r21.w, r21.x - frc r15.x, r15.x - frc r22.w, r17.w - add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) - mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r21.xw, r21.xxxw - add r24.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r17.w, r21.xwxx, r24.xyxx - add r21.xw, r17.wwww, r21.xxxw - mul r17.w, r21.w, r21.x - add r18.w, r21.w, r21.x - frc r24.x, r17.w - frc r24.y, r18.w - mad r17.w, r15.x, l(0.399999976), l(0.600000) - mul r18.w, r17.w, l(0.250000) - mad r19.xy, r15.ywyy, l(34.345600, 34.345600, 0.000000, 0.000000), -r19.xyxx - mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx - add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - mul r26.x, r19.x, l(1.250000) - lt r19.x, r19.y, l(0.000000) - movc r19.x, r19.x, l(1.250000), l(0.750000) - mul r26.y, r19.x, r19.y - mad r15.x, cb0[102].x, l(4.345600), r15.x - frc r15.x, r15.x - add r19.xy, r15.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) - mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) - mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r19.xy, r19.xyxx, r19.xyxx - mul r19.xy, r19.xyxx, r21.xwxx - mul r15.x, r19.y, r19.x - dp2 r19.x, r26.xyxx, r26.xyxx - sqrt r19.x, r19.x - mad r17.w, -r17.w, l(0.250000), r19.x - div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r18.w - mul_sat r17.w, r17.w, r19.x - mad r19.x, r17.w, l(-2.000000), l(3.000000) - mul r17.w, r17.w, r17.w - mul r17.w, r17.w, r19.x - ge r17.w, r17.w, l(0.001000) - and r17.w, r17.w, l(0x3f800000) - mul r22.z, r15.x, r17.w - div r19.xy, r26.xyxx, r18.wwww - max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r15.x, r22.z, l(0.001000) - and r15.x, r15.x, l(0x3f800000) - mul r19.xy, r15.xxxx, r19.xyxx - mad r15.x, r24.x, l(0.250000), l(0.250000) - mul r22.xy, r15.xxxx, r19.xyxx - mul r24.xyzw, r20.zzzz, r25.xyzw - mad r24.xyzw, r27.xyzw, r20.yyyy, r24.xyzw - mad r20.xyzw, r22.xyzw, r20.xxxx, r24.xyzw - max r19.xy, r20.zwzz, r23.zwzz - mad r20.zw, -r14.wwww, r10.xxxx, l(0.000000, 0.000000, 1.000000, 1.010000) - add r15.x, r19.y, l(-0.100000) - ge r15.x, r15.x, r20.z - and r15.x, r15.x, l(0x3f800000) - mul r15.x, r15.x, r19.x - ge r2.w, cb1[r2.w + 12].x, l(0.010000) - and r2.w, r2.w, l(0x3f800000) - mul r2.w, r2.w, r15.x - lt r15.x, l(0.001000), r2.w - add r19.xy, r20.xyxx, r23.xyxx - mul r17.w, cb0[102].x, cb0[196].z - mul r20.y, r17.w, l(0.750000) - dp2 r17.w, r16.xzxx, r16.xzxx - max r17.w, r17.w, l(1.175494351E-38) - rsq r17.w, r17.w - mul r16.xz, r16.xxzx, r17.wwww - add r16.xz, |r16.xxzx|, l(-0.200000, 0.000000, -0.200000, 0.000000) - mul r21.xw, r16.xxxz, r16.xxxz - mul r16.xz, r16.xxzx, r21.xxwx - max r16.xz, r16.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) - dp2 r17.w, r16.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) - div r16.xz, r16.xxzx, r17.wwww - sample_b_indexable(texture2d)(float,float,float,float) r22.xyz, r15.zwzz, t12.xyzw, s4, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r15.yzw, r15.ywyy, t12.wxyz, s4, cb0[108].x - mul r15.yzw, r16.xxxx, r15.yyzw - mad r15.yzw, r22.xxyz, r16.zzzz, r15.yyzw - movc r16.yw, r15.xxxx, r19.xxxy, r16.yyyw - mad r15.xy, r15.yzyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mov r20.x, l(0) - mad r22.xyzw, r13.zwyw, cb0[196].zzzz, r20.xyxy - sample_b_indexable(texture2d)(float,float,float,float) r13.y, r22.xyxx, t12.xwyz, s4, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r13.z, r22.zwzz, t12.xywz, s4, cb0[108].x - mul r13.z, r16.x, r13.z - mad r13.y, r13.y, r16.z, r13.z - mad r13.yz, r15.xxyx, r13.yyyy, r16.yywy - ge r13.w, r19.z, r20.w - and r13.w, r13.w, l(0x3f800000) - max r2.w, r2.w, r13.w - add r13.w, -r15.w, l(1.000000) - mad r10.x, r14.w, r10.x, -r13.w - mul_sat r10.x, r10.x, l(9.999998) - mad r13.w, r10.x, l(-2.000000), l(3.000000) - mul r10.x, r10.x, r10.x - mul r10.x, r10.x, r13.w - max r2.w, r2.w, r10.x - mad r15.xy, -r7.zyzz, l(1.000000, 0.000000, 0.000000, 0.000000), r21.yzyy - dp2 r10.x, r15.xyxx, r15.xyxx - lt r13.w, l(0.0000610351562), r10.x - rsq r10.x, r10.x - mul r15.xy, r10.xxxx, r15.xyxx - mov r15.xy, -r15.xyxx - movc r16.z, r13.w, r15.x, l(-1.000000) - and r16.y, r13.w, r15.y - min r10.x, r3.z, l(0.050000) - add r13.w, -r3.z, r10.x - mad r13.w, r2.w, r13.w, r3.z - mad r10.z, -r10.w, r10.z, l(1.000000) - mul r10.z, r10.z, r10.y - mad r5.w, -r5.w, r11.w, l(1.000000) - mul r5.w, r5.w, r10.z - mad r5.w, r5.w, l(-0.500000), l(1.000000) - mov r16.x, l(0) - mad r3.xyw, -r3.xyxw, r6.wwww, r16.zxzy - mad r3.xyw, r13.yyyy, r3.xyxw, r7.xyxz - mul r15.xyz, r7.zxyz, r16.xyzx - mad r15.xyz, r7.yzxy, r16.yzxy, -r15.xyzx - add r15.xyz, -r3.xywx, r15.xyzx - mad r3.xyw, r13.zzzz, r15.xyxz, r3.xyxw - dp3 r6.w, r3.xywx, r3.xywx - rsq r6.w, r6.w - mad r3.xyw, r3.xyxw, r6.wwww, -r7.xyxz - mad r3.xyw, r2.wwww, r3.xyxw, r7.xyxz - dp3 r6.w, r3.xywx, r3.xywx - rsq r6.w, r6.w - mul r3.xyw, r3.xyxw, r6.wwww - mul r6.w, r11.w, r10.y - mad r6.w, -r6.w, l(0.200000), r13.w - min r10.y, r13.w, l(0.200000) - max r3.z, r6.w, r10.y - mul r6.xyz, r5.wwww, r6.xyzx - dp3 r6.w, r4.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r6.w, r6.w, l(-0.700000) - mul_sat r6.w, r6.w, l(-2.50000024) - mad r10.y, r6.w, l(-2.000000), l(3.000000) - mul r6.w, r6.w, r6.w - mul r6.w, r6.w, r10.y - mad r6.w, r6.w, l(0.500000), l(1.000000) - mul r10.y, r13.x, r2.w - mad r13.xyz, r4.xyzx, r6.wwww, -r4.xyzx - mad r10.yzw, r10.yyyy, r13.xxyz, r4.xxyz - mul r4.xyz, r5.wwww, r10.yzwy -else - mov r3.xyw, r7.xyxz - mov r10.x, l(0.010000) - mov r2.w, l(0) -endif -mul r5.w, r5.y, l(0.040000) -mad r6.w, -r5.x, l(0.960000), l(0.960000) -mul r10.yzw, r4.xxyz, r6.wwww -mad r13.xyz, -r5.yyyy, l(0.040000, 0.040000, 0.040000, 0.000000), r4.xyzx -mad r13.xyz, r5.xxxx, r13.xyzx, r5.wwww -mul r6.xyz, r6.wwww, r6.xyzx -mul r5.y, r3.z, r3.z -max r5.y, r5.y, l(0.00781250000) -max r5.w, v5.z, l(9.999999939E-09) -div r15.xy, v5.xyxx, r5.wwww -max r5.w, v6.z, l(9.999999939E-09) -div r15.zw, v6.xxxy, r5.wwww -add r15.xy, -r15.zwzz, r15.xyxx -mul r16.xy, r15.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) -sqrt r16.xy, |r16.xyxx| -sqrt r16.xy, r16.xyxx -mov r15.z, -r15.y -lt r15.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xxxz -lt r15.xz, r15.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r15.xy, -r15.ywyy, r15.xzxx -itof r15.xy, r15.xyxx -mul r15.xy, r15.xyxx, r16.xyxx -mad o1.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -lt r5.w, l(0.500000), r2.w -movc o1.w, r5.w, l(0.700000), l(0.400000) -add r15.xyz, cb0[197].xyzx, cb3[0].xyzx -mad r15.xyz, cb0[187].wwww, r15.xyzx, -cb3[0].xyzx -mov r15.w, l(0.0000610351562) -dp3 r5.w, r15.xzwx, r15.xzwx -rsq r5.w, r5.w -mul r16.xyz, r5.wwww, r15.xwzx -add r19.xyz, cb0[191].xyzx, -cb3[3].xyzx -mad r19.xyz, cb0[198].yyyy, r19.xyzx, cb3[3].xyzx -add r5.w, l(1.000000), -cb3[3].w -mad r5.w, cb0[198].w, r5.w, cb3[3].w -mul r20.xyz, r5.wwww, r19.xyzx -mov r12.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r21.xy, r12.xyzz, t3.xyzw -add r11.w, r21.x, l(-1.000000) -mad r11.w, cb4[34].x, r11.w, l(1.000000) -add r12.z, -r11.w, l(1.000000) -mad r11.w, cb0[187].z, r12.z, r11.w -dp3 r12.z, r7.xyzx, r15.xyzx -mul r21.xzw, r6.xxyz, cb0[186].zzzz -mul r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000) -dp3 r13.w, r10.yzwy, l(0.212672904, 0.715152204, 0.072175, 0.000000) -dp2 r14.w, cb0[6].xzxx, cb0[6].xzxx -rsq r14.w, r14.w -mul r23.xy, r14.wwww, cb0[6].xzxx -dp2 r14.w, r16.xzxx, r23.xyxx -mov_sat r14.w, -r14.w -add r23.xy, l(1.000000, 1.000000, 0.000000, 0.000000), -cb0[198].xyxx -mad r15.w, r12.z, l(0.500000), l(-1.000000) -mad r15.w, -r12.z, r15.w, -r12.z -add r16.w, l(0.750000), -|cb0[6].y| -add_sat r16.w, r16.w, r16.w -mad r17.w, r16.w, l(-2.000000), l(3.000000) -mul r16.w, r16.w, r16.w -mul r16.w, r16.w, r17.w -mul r16.w, r14.w, r16.w -mul r16.w, r23.x, r16.w -add r15.w, r15.w, l(0.500000) -mad r12.z, r16.w, r15.w, r12.z -mad r12.z, cb0[197].w, cb0[198].x, r12.z -max r12.z, r12.z, l(-1.000000) -min r12.z, r12.z, l(1.000000) -add r12.z, r12.z, l(-0.250000) -mul r12.z, r12.z, l(1.33333337) -max r12.z, r12.z, l(0.000000) -mad r15.w, r12.z, l(-2.000000), l(3.000000) -mul r12.z, r12.z, r12.z -mul r12.z, r12.z, r15.w -dp3 r15.w, r7.xyzx, cb0[6].xyzx -add r15.w, r15.w, l(-0.250000) -mul_sat r15.w, r15.w, l(1.33333337) -mad r16.w, r15.w, l(-2.000000), l(3.000000) -mul r15.w, r15.w, r15.w -mul r15.w, r15.w, r16.w -mul r16.w, r5.z, r21.y -min r17.w, r5.z, r21.y -min r18.w, r12.z, r17.w -mul r19.w, r15.w, r16.w -dp3 r20.w, r7.xyzx, cb0[192].xyzx -add_sat r20.w, r20.w, cb0[193].x -mad r20.w, r20.w, cb0[193].y, cb0[193].z -mul r22.w, r18.w, cb0[187].y -add r24.xyz, -r14.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r24.xyz, r22.wwww, r24.xyzx, r14.xyzx -mul r24.xyz, r20.wwww, r24.xyzx -mad r20.w, r8.w, l(0.350000024), l(0.650000) -min r20.w, r20.w, l(1.500000) -max r25.xyz, r8.wwww, l(1.250000, 0.000000, 0.500000, 0.000000) -min r25.xyz, r25.xyzx, l(1.750000, 1.500000, 1.500000, 0.000000) -add r8.w, -r20.w, r25.x -mad r8.w, cb0[187].x, r8.w, r20.w -mul r26.xyz, r8.wwww, r24.xyzx -mul r26.xyz, r26.xyzx, cb0[186].wwww -dp3 r8.w, r20.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r20.xyz, r19.xyzx, r5.wwww, -r8.wwww -mad r20.xyz, r18.wwww, r20.xyzx, r8.wwww -mul r24.xyz, r24.xyzx, r25.yyyy -mad r23.yzw, r19.xxyz, cb0[198].yyyy, r23.yyyy -mad r20.xyz, r24.xyzx, r23.yzwy, r20.xyzx -mad r20.xyz, r20.xyzx, cb0[186].yyyy, -r26.xyzx -mad r20.xyz, r11.wwww, r20.xyzx, r26.xyzx -dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000), -r8.wwww -mad r22.xyz, r22.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r8.wwww -mad_sat r8.w, r15.w, r16.w, r12.z -mad r23.yzw, r6.xxyz, cb0[186].zzzz, -r22.xxyz -mad r22.xyz, r8.wwww, r23.yzwy, r22.xyzx -mad r23.yzw, r4.xxyz, r6.wwww, -r22.xxyz -mad r22.xyz, r18.wwww, r23.yzwy, r22.xyzx -mad r23.yzw, r4.xxyz, r6.wwww, -r13.wwww -mad r23.yzw, r23.yyzw, l(0.000000, 1.200000, 1.200000, 1.200000), r13.wwww -mad r23.yzw, -r6.xxyz, cb0[186].zzzz, r23.yyzw -mad r21.xzw, r19.wwww, r23.yyzw, r21.xxzw -dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -max r12.z, r8.w, l(0.001000) -div r12.z, l(1.000000, 1.000000, 1.000000, 1.000000), r12.z -mul r8.w, r8.w, r12.z -max r8.w, r8.w, l(0.000000) -min r8.w, r8.w, l(1.500000) -mad r22.xyz, r22.xyzx, r8.wwww, -r21.xzwx -mad r21.xzw, r11.wwww, r22.xxyz, r21.xxzw -mad r8.w, -r15.w, r16.w, r18.w -mad r8.w, r11.w, r8.w, r19.w -add r12.z, l(1.000000), -cb0[186].z -mad r12.z, r8.w, r12.z, cb0[186].z -add r15.w, r15.y, l(-0.500000) -mad r22.y, r11.w, r15.w, l(0.500000) -dp3_sat r24.x, r3.xywx, r2.xyzx -mov r22.xz, cb0[6].xxzx -dp3 r15.w, r22.xyzx, r22.xyzx -max r15.w, r15.w, l(1.175494351E-38) -rsq r15.w, r15.w -mul r22.xyz, r15.wwww, r22.xyzx -add r22.xyz, r22.xyzx, r22.xyzx -mad r15.xyz, r15.xyzx, r11.wwww, r22.xyzx -add r15.w, r11.w, l(2.000000) -mad r15.xyz, r2.xyzx, r15.wwww, r15.xyzx -dp3 r15.w, r15.xyzx, r15.xyzx -rsq r15.w, r15.w -mul r15.xyz, r15.wwww, r15.xyzx -dp3 r15.x, r3.xywx, r15.xyzx -mul r15.y, r5.y, r5.y -mad r15.z, r15.x, r15.y, -r15.x -mad r15.x, r15.z, r15.x, l(1.000000) -mul r15.x, r15.x, r15.x -add r15.z, l(1.000000), -cb5[1].z -mad r15.z, r4.w, cb5[1].z, r15.z -mul r22.xyz, r20.xyzx, r21.xzwx -ne r15.w, r15.x, r15.y -div r15.x, r15.y, r15.x -movc r15.x, r15.w, r15.x, l(1.000000) -mad r15.y, r24.x, l(2.000000), r5.y -add r15.y, r15.y, l(0.000100) -div r15.y, l(0.500000), r15.y -mad r15.x, r15.x, r15.y, l(-0.0000610351562) -max r15.x, r15.x, l(0.000000) -min r15.x, r15.x, l(20.000000) -mul r15.xyw, r13.xyxz, r15.xxxx -mad r8.w, r8.w, l(0.500000), l(0.500000) -mul r8.w, r12.z, r8.w -mul r20.xyz, r8.wwww, r20.xyzx -mul r15.xyw, r15.xyxw, r20.xyxz -mul r15.xyw, r15.xyxw, cb0[199].wwww -mad r15.xyw, r22.xyxz, r15.zzzz, r15.xyxw -dp3 r8.w, r15.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r16.w, r8.w, l(-0.500000) -max r16.w, r16.w, l(0.000000) -min r16.w, r16.w, l(0.500000) -mov r20.y, l(0) -mov r20.xz, cb0[195].yyxy -mul r22.xyz, r20.xyzx, cb0[6].zxyz -mad r20.xyz, cb0[6].yzxy, r20.yzxy, -r22.xyzx -dp3 r18.w, r20.xyzx, r20.xyzx -rsq r18.w, r18.w -mul r20.xyz, r18.wwww, r20.xyzx -dp3 r18.w, r2.xyzx, r7.xyzx -add r22.xy, -|r18.wwww|, l(1.000000, 0.399999976, 0.000000, 0.000000) -dp3 r16.x, r16.xyzx, r7.xyzx -add r16.y, -r11.w, l(1.000000) -add r10.x, -r3.z, r10.x -mad r2.w, r2.w, r10.x, r3.z -mul r26.y, r2.w, r2.w -mul r27.x, r24.x, r24.x -mul r27.z, r24.x, r27.x -mul r10.x, r26.y, r26.y -mul r26.z, r26.y, r10.x -mov r24.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r25.x, l(3.327070, 1.000000, 0.000000, 0.000000), r24.xyxx -dp2 r25.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r24.xzxx -mov r26.x, l(1.000000) -dp2 r10.x, r25.xyxx, r26.xyxx -mov r27.yw, l(0,9.044010,0,1.000000) -dp3 r28.x, l(3.596850, -1.367720, 1.000000, 0.000000), r27.xzwx -dp3 r28.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r27.xyzx -mov r29.x, l(5.565890) -mov r29.yz, r27.xxzx -dp3 r28.z, l(1.000000, 19.788601, -20.212299, 0.000000), r29.xyzx -dp3 r16.z, r28.xyzx, r26.xyzx -div r10.x, r10.x, r16.z -dp2 r25.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r24.xwxx -mov r27.x, l(1.296780) -mov r27.y, r24.x -dp2 r25.y, l(1.000000, -0.755907, 0.000000, 0.000000), r27.xyxx -dp2 r16.z, r25.xyxx, r26.xyxx -dp3 r28.x, l(2.923380, 59.418800, 1.000000, 0.000000), r27.yzwy -mov r27.xw, l(20.322500,0,0,121.563004) -dp3 r28.y, l(1.000000, -27.030199, 222.591995, 0.000000), r27.xyzx -dp3 r28.z, l(626.130005, 316.627014, 1.000000, 0.000000), r27.yzwy -dp3 r19.w, r28.xyzx, r26.xyzx -div r16.z, r16.z, r19.w -mad r23.yzw, r13.xxyz, r10.xxxx, r16.zzzz -add r10.x, r10.x, r16.z -mad r16.z, r16.w, r16.w, l(1.000000) -add r15.xyw, -r8.wwww, r15.xyxw -mad r15.xyw, r16.zzzz, r15.xyxw, r8.wwww -mad r16.zw, cb0[195].wwww, l(0.000000, 0.000000, -0.600000, -0.399999976), l(0.000000, 0.000000, 0.800000, 0.900000) -add r8.w, -r16.z, r16.w -add r16.z, -r16.z, r22.x -div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w -mul_sat r8.w, r8.w, r16.z -mad r16.z, r8.w, l(-2.000000), l(3.000000) -mul r8.w, r8.w, r8.w -mul r8.w, r8.w, r16.z -mul r24.yzw, r8.wwww, cb0[194].xxyz -mul r24.yzw, r24.yyzw, cb0[194].wwww -dp3 r8.w, r9.xyzx, r20.xyzx -add_sat r8.w, r8.w, l(1.000000) -min r5.z, r5.z, r8.w -min r5.z, r21.y, r5.z -mul r24.yzw, r5.zzzz, r24.yyzw -mad r25.xyw, r4.xyxz, r6.wwww, l(-0.250000, -0.250000, 0.000000, -0.250000) -mad r25.xyw, cb0[195].zzzz, r25.xyxw, l(0.250000, 0.250000, 0.000000, 0.250000) -dp3_sat r5.z, r20.xyzx, r7.xyzx -mul r20.xyz, r5.zzzz, r25.xywx -max r5.z, r17.y, r17.x -max r5.z, r17.z, r5.z -mul r5.z, r5.z, l(0.500000) -max r5.z, r5.z, l(1.000000) -div r5.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z -mul r17.xyz, r5.zzzz, r17.xyzx -mad r19.xyz, r19.xyzx, r5.wwww, -r17.xyzx -mad r17.xyz, r11.wwww, r19.xyzx, r17.xyzx -dp3 r5.z, r18.xyzx, r7.xyzx -mul r5.w, r7.w, r5.z -mad r8.w, r16.x, l(0.500000), l(-1.000000) -mad r8.w, -r16.x, r8.w, l(0.500000) -mad r5.z, -r5.z, r7.w, r8.w -mad_sat r5.z, r11.w, r5.z, r5.w -mul r16.xzw, r5.zzzz, r17.xxyz -mad r5.z, r14.w, r11.w, r16.y -mul r5.z, r23.x, r5.z -mul r16.xzw, r5.zzzz, r16.xxzw -mul_sat r5.z, r22.y, l(5.00000048) -mad r5.w, r5.z, l(-2.000000), l(3.000000) -mul r5.z, r5.z, r5.z -mul r5.z, r5.z, r5.w -mul r16.xzw, r5.zzzz, r16.xxzw -mul r16.xzw, r17.wwww, r16.xxzw -add r5.z, r13.w, l(-0.100000) -mul_sat r5.z, r5.z, l(-16.666666) -mad r5.w, r5.z, l(-2.000000), l(3.000000) -mul r5.z, r5.z, r5.z -mul r5.z, r5.z, r5.w -mad r5.z, r5.z, r11.w, r16.y -mul r16.xzw, r5.zzzz, r16.xxzw -max r17.xyz, r10.yzwy, l(0.150000, 0.150000, 0.150000, 0.000000) -mul r16.xzw, r16.xxzw, r17.xxyz -mad r16.xzw, r24.yyzw, r20.xxyz, r16.xxzw -add r15.xyw, r15.xyxw, r16.xzxw -utof r5.zw, r12.xxxy -mul r16.xz, r5.zzwz, l(0.031250, 0.000000, 0.031250, 0.000000) -round_ni r16.xz, r16.xxzx -mad r7.w, r16.z, cb2[1].y, r16.x -mul r7.w, r7.w, l(8.000000) -ftoi r7.w, r7.w -mad r8.w, -cb0[85].y, cb2[2].w, v0.w -round_ni r8.w, r8.w -add r11.w, l(-1.000000), cb2[1].w -max r13.w, r8.w, l(0.000000) -min r11.w, r11.w, r13.w -mul r13.w, r11.w, l(8.000000) -ftoi r13.w, r13.w -mul r8.xyz, r8.xyzx, cb5[6].xyzx -mul r16.xzw, r9.wwww, cb5[12].xxyz -mul r16.xzw, r4.wwww, r16.xxzw -mad r8.xyz, r8.xyzx, cb5[1].wwww, r16.xzwx -mad r8.xyz, r8.xyzx, r15.zzzz, r15.xywx -dp3 r9.w, -r2.xyzx, r3.xywx -add r9.w, r9.w, r9.w -mad r15.xyw, r3.xyxw, -r9.wwww, -r2.xyxz -max r2.w, r2.w, l(0.001000) -log r2.w, r2.w -mad r2.w, r2.w, l(1.200000), l(5.000000) -sample_l_indexable(texturecube)(float,float,float,float) r15.xyw, r15.xywx, t17.xywz, s0, r2.w -add r2.w, -r10.x, l(1.000000) -div r2.w, r2.w, r10.x -mul r16.xzw, r2.wwww, r13.xxyz -mad r16.xzw, r16.xxzw, r23.yyzw, r23.yyzw -mul r15.xyw, r15.xyxw, r16.xzxw -mul r2.w, r25.z, cb0[186].w -mul r2.w, r12.z, r2.w -mul r15.xyw, r2.wwww, r15.xyxw -mad r8.xyz, r15.xywx, r14.xyzx, r8.xyzx -ge r2.w, r11.w, r8.w -iadd r8.w, r13.w, cb0[110].y -mad r9.w, r16.y, l(-0.250000), l(0.750000) -mad r4.xyz, r4.xyzx, r6.wwww, l(-0.500000, -0.500000, -0.500000, 0.000000) -add r6.w, -r5.y, l(0.010000) -ge r5.x, r5.x, l(0.500000) -and r5.x, r5.x, l(0x3f800000) -mov r14.w, l(1.000000) -mov r15.xyw, r8.xyxz -mov r10.x, l(0) -loop - ilt r11.w, l(7), r10.x - breakc_nz r11.w - iadd r11.w, r7.w, r10.x - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx - iadd r12.z, r8.w, r10.x - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.z, r12.z, l(0), t0.xxxx - and r11.w, r11.w, r12.z - and r11.w, r2.w, r11.w - ishl r12.z, r10.x, l(5) - mov r16.xyz, r15.xywx - mov r13.w, r11.w - loop - breakc_z r13.w - firstbit_lo r16.w, r13.w - ishl r17.x, l(1), r16.w - xor r17.x, r13.w, r17.x - iadd r16.w, r12.z, r16.w - bfi r19.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 5, 6, 7) - ftou r17.y, cb3[r19.y + 6].w - ieq r17.y, r17.y, l(1) - if_nz r17.y - add r14.xyz, v2.xyzx, -cb3[r19.x + 6].xyzx - and r17.yzw, l(0, 0x0000ffff, 0x0000ffff, 0x0000ffff), cb3[r19.y + 6].xxzy - and r18.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r19.z + 6].yxzy - ushr r20.xyz, cb3[r19.y + 6].xzyx, l(16, 16, 16, 0) - ushr r22.yzw, cb3[r19.z + 6].yyxz, l(0, 16, 16, 16) - f16tof32 r17.yzw, r17.yyzw - f16tof32 r18.xyz, r18.xyzx - f16tof32 r20.xyz, r20.xyzx - f16tof32 r23.xyw, r22.zyzw - mov r25.xz, r17.yywy - mov r25.yw, r20.xxxz - dp4 r17.y, r14.xyzw, r25.xyzw - mov r20.x, r17.z - mov r20.z, r18.y - mov r20.w, r23.x - dp4 r17.z, r14.xyzw, r20.xyzw - mov r23.xz, r18.xxzx - dp4 r14.x, r14.xyzw, r23.xyzw - max r14.y, |r17.z|, |r17.y| - max r14.x, |r14.x|, r14.y - mad r14.y, cb3[r19.w + 6].x, l(0.500000), l(0.500000) - add r14.x, -r14.y, r14.x - mad r14.y, -cb3[r19.w + 6].x, l(0.500000), l(0.500000) - div_sat r14.x, r14.x, r14.y - add r14.x, -r14.x, l(1.000000) - mul r14.x, r14.x, r14.x - else - mov r14.x, l(1.000000) - endif - lt r14.y, r14.x, l(0.001000) - if_nz r14.y - mov r13.w, r17.x - continue - endif - ishl r14.y, r16.w, l(3) - lt r14.z, cb3[r14.y + 6].w, l(1.500000) - if_nz r14.z - bfi r14.z, l(29), l(3), r16.w, l(3) - ieq r17.y, l(16), cb3[r14.z + 6].w - add r17.z, cb0[198].z, cb3[r14.z + 6].z - lt r17.z, r17.z, l(0.500000) - or r17.y, r17.z, r17.y - if_z r17.y - bfi r17.yz, l(0, 29, 29, 0), l(0, 3, 3, 0), r16.wwww, l(0, 2, 4, 0) - ftou r16.w, cb3[r14.y + 6].w - and r16.w, r16.w, l(1) - ieq r17.w, r16.w, l(0) - not r17.w, r17.w - lt r18.x, l(0.000000), cb3[r17.y + 6].z - and r17.w, r17.w, r18.x - ieq r18.x, l(4), cb3[r14.z + 6].w - movc r18.y, r16.w, l(0), l(1.000000) - mad r18.z, cb3[r17.y + 6].y, l(0.500000), l(0.500000) - add r20.z, r18.z, -|cb3[r17.y + 6].x| - add r20.x, -r20.z, cb3[r17.y + 6].y - add r18.z, -|r20.z|, l(1.000000) - add r18.z, -|r20.x|, r18.z - max r18.z, r18.z, l(0.000488281250) - ge r19.y, cb3[r17.y + 6].x, l(0.000000) - movc r20.y, r19.y, r18.z, -r18.z - dp3 r18.z, r20.xyzx, r20.xyzx - rsq r18.z, r18.z - mul r20.xyz, r18.zzzz, r20.xyzx - add r18.z, cb3[r17.z + 6].y, cb3[r17.z + 6].y - max r18.z, r18.z, l(0.100000) - and r19.y, r18.x, l(0x3f800000) - add r18.z, r18.z, -cb3[r19.z + 6].w - mad r18.z, r19.y, r18.z, cb3[r19.z + 6].w - add r22.yzw, -v2.xxyz, cb3[r19.x + 6].xxyz - dp3 r19.y, r22.zwyz, -r20.xyzx - lt r19.z, l(0.500000), cb3[r17.z + 6].z - and r19.z, r18.x, r19.z - and r19.z, r19.z, l(0x3f800000) - mul r19.z, r18.y, r19.z - mad r23.xyz, -r20.zxyz, r19.yyyy, -r22.yzwy - mad r22.yzw, r19.zzzz, r23.xxyz, r22.yyzw - dp3 r19.y, r22.yzwy, r22.yzwy - rsq r19.z, r19.y - mul r23.xyz, r19.zzzz, r22.yzwy - if_nz r17.w - mul r24.yzw, r20.zzxy, cb3[r17.y + 6].zzzz - mad r25.xyz, -r24.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), r22.yzwy - mad r24.yzw, r24.yyzw, l(0.000000, 0.500000, 0.500000, 0.500000), r22.yyzw - dp3 r19.z, r25.xyzx, r25.xyzx - sqrt r19.z, r19.z - dp3 r20.w, r24.yzwy, r24.yzwy - sqrt r20.w, r20.w - mul r26.xyz, r20.xyzx, r23.xyzx - mad r26.xyz, r20.zxyz, r23.yzxy, -r26.xyzx - mul r27.xyz, r20.xyzx, r26.xyzx - mad r26.xyz, r26.zxyz, r20.yzxy, -r27.xyzx - dp3 r21.y, r26.xyzx, r26.xyzx - rsq r21.y, r21.y - mul r23.xyz, r21.yyyy, r26.xyzx - dp3 r21.y, r25.xyzx, r24.yzwy - mad r21.y, r19.z, r20.w, r21.y - mad r21.y, r21.y, l(0.500000), l(1.000000) - div r21.y, l(1.000000, 1.000000, 1.000000, 1.000000), r21.y - dp3 r23.w, r23.xyzx, r25.xyzx - div r19.z, r23.w, r19.z - dp3 r23.w, r23.xyzx, r24.yzwy - div r20.w, r23.w, r20.w - add r19.z, r19.z, r20.w - mul_sat r19.z, r19.z, l(0.500000) - mul r19.z, r19.z, r21.y - else - mov r19.z, l(1.000000) - endif - lt r20.w, r18.z, l(0.000000) - if_nz r20.w - mul r20.w, cb3[r19.x + 6].w, cb3[r19.x + 6].w - mul r20.w, r19.y, r20.w - mad r20.w, -r20.w, r20.w, l(1.000000) - max r20.w, r20.w, l(0.000000) - add r19.y, r19.y, l(1.000000) - div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), r19.y - and r21.y, r17.w, l(0x3f800000) - add r23.w, -r19.y, r19.z - mad r19.y, r21.y, r23.w, r19.y - mul r20.w, r20.w, r20.w - mul r19.y, r19.y, r20.w - else - mul r24.yzw, r22.yyzw, cb3[r19.x + 6].wwww - dp3 r20.w, r24.yzwy, r24.yzwy - min r20.w, r20.w, l(1.000000) - add r20.w, -r20.w, l(1.000000) - log r20.w, r20.w - mul r18.z, r18.z, r20.w - exp r18.z, r18.z - mul r19.y, r18.z, r19.z - endif - dp3 r18.z, r23.yzxy, -r20.xyzx - add r18.z, r18.z, -cb3[r17.y + 6].z - mul_sat r18.z, r18.z, cb3[r17.y + 6].w - mad r18.z, r18.z, r18.z, l(-1.000000) - mad r18.y, r18.y, r18.z, l(1.000000) - mul r18.y, r18.y, r19.y - ftoi r18.z, cb3[r19.w + 6].w - not r17.w, r17.w - ige r19.y, r18.z, l(0) - and r17.w, r17.w, r19.y - if_nz r17.w - if_z r16.w - ishl r17.w, r18.z, l(2) - mul r20.xyz, v2.yyyy, cb6[r17.w + 33].xywx - mad r20.xyz, cb6[r17.w + 32].xywx, v2.xxxx, r20.xyzx - mad r20.xyz, cb6[r17.w + 34].xywx, v2.zzzz, r20.xyzx - add r20.xyz, r20.xyzx, cb6[r17.w + 35].xywx - div_sat r19.yz, r20.xxyx, r20.zzzz - mad r19.yz, r19.yyzy, cb6[r18.z + 0].zzwz, cb6[r18.z + 0].xxyx - else - ishl r17.w, r18.z, l(2) - dp3 r20.x, -r22.yzwy, cb6[r17.w + 32].xyzx - dp3 r20.y, -r22.yzwy, cb6[r17.w + 33].xyzx - dp3 r20.z, -r22.yzwy, cb6[r17.w + 34].xyzx - lt r17.w, |r20.x|, |r20.y| - and r17.w, r17.w, l(1) - dp2 r20.w, |r20.xyxx|, icb[r17.w + 0].xyxx - lt r20.w, r20.w, |r20.z| - movc r17.w, r20.w, l(2), r17.w - dp3 r20.w, r20.xyzx, icb[r17.w + 0].xyzx - lt r20.w, r20.w, l(0.000000) - bfi r17.w, l(31), l(1), r17.w, r20.w - ushr r20.w, r17.w, l(1) - dp3 r20.w, r20.xyzx, icb[r20.w + 0].xyzx - div r21.y, l(0.000244140625), cb6[r18.z + 0].w - add r21.y, -r21.y, l(0.500000) - utof r22.y, r17.w - ult r22.z, r17.w, l(2) - and r22.z, r22.z, l(2) - dp2 r20.x, r20.xzxx, icb[r22.z + 0].xzxx - mul r20.x, r20.x, icb[r17.w + 4].z - div r20.x, r20.x, |r20.w| - mad r20.x, r20.x, r21.y, r22.y - add r20.x, r20.x, l(0.500000) - mul_sat r25.x, r20.x, l(0.166666672) - iadd r20.x, l(-1), icb[r17.w + 4].y - dp2 r20.x, r20.yzyy, icb[r20.x + 0].xyxx - mul r17.w, r20.x, icb[r17.w + 4].w - div r17.w, r17.w, |r20.w| - mad_sat r25.y, -r17.w, r21.y, l(0.500000) - mad r19.yz, r25.xxyx, cb6[r18.z + 0].zzwz, cb6[r18.z + 0].xxyx - endif - sample_l_indexable(texture2d)(float,float,float,float) r17.w, r19.yzyy, t18.yzwx, s0, l(0.000000) - mul r18.y, r17.w, r18.y - endif - mul r14.x, r14.x, r18.y - lt r17.w, l(0.000100), r14.x - if_nz r17.w - if_nz r18.x - add r17.w, l(1.000000), -cb3[r17.z + 6].w - dp3 r18.y, r11.xyzx, r23.xyzx - add_sat r18.y, r18.y, l(0.500000) - mad r18.z, r18.y, l(-2.000000), l(3.000000) - mul r18.y, r18.y, r18.y - mul r18.y, r18.y, r18.z - mad r17.w, r18.y, cb3[r17.z + 6].w, r17.w - mul r17.w, r17.w, cb3[r17.z + 6].x - mul r17.w, r14.x, r17.w - add r20.xyz, -r16.xyzx, cb3[r14.y + 6].xyzx - mad r20.xyz, r17.wwww, r20.xyzx, r16.xyzx - endif - if_z r18.x - dp3 r17.w, r7.xyzx, r23.xyzx - mov_sat r18.y, r17.w - if_nz cb3[r14.z + 6].w - if_z r16.w - ftoi r16.w, cb3[r14.z + 6].x - else - add r22.yzw, v2.xxyz, -cb3[r19.x + 6].xxyz - lt r24.yzw, |r22.zzww|, |r22.yyyz| - and r18.z, r24.z, r24.y - lt r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r22.yyzw - ushr r19.y, cb3[r17.y + 6].w, l(24) - ubfe r24.yz, l(0, 8, 8, 0), l(0, 16, 8, 0), cb3[r17.y + 6].wwww - movc r19.y, r22.y, r19.y, r24.y - and r17.y, l(255), cb3[r17.y + 6].w - movc r17.y, r22.z, r24.z, r17.y - ubfe r19.z, l(8), l(8), cb3[r14.z + 6].x - and r20.w, l(255), cb3[r14.z + 6].x - movc r19.z, r22.w, r19.z, r20.w - movc r17.y, r24.w, r17.y, r19.z - movc r17.y, r18.z, r19.y, r17.y - ilt r18.z, r17.y, l(80) - movc r16.w, r18.z, r17.y, l(-1) - endif - ige r17.y, r16.w, l(0) - if_nz r17.y - add r19.xyz, v2.xyzx, -cb3[r19.x + 6].xyzx - ishl r17.y, r16.w, l(2) - dp3 r18.z, r19.xyzx, r19.xyzx - max r18.z, r18.z, l(1.175494351E-38) - rsq r18.z, r18.z - mul r19.xyz, r18.zzzz, r19.xyzx - mad r19.xyz, -r19.xyzx, cb4[r16.w + 288].xxxx, v2.xyzx - mul r18.z, l(5.000000), cb4[r16.w + 288].y - mad r19.xyz, r11.xyzx, r18.zzzz, r19.xyzx - mul r25.xyzw, r19.yyyy, cb4[r17.y + 65].xyzw - mad r25.xyzw, cb4[r17.y + 64].xyzw, r19.xxxx, r25.xyzw - mad r25.xyzw, cb4[r17.y + 66].xyzw, r19.zzzz, r25.xyzw - add r25.xyzw, r25.xyzw, cb4[r17.y + 67].xyzw - div r19.xyz, r25.xyzx, r25.wwww - ge r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxyz - ge r24.yzw, r19.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000) - add r25.xy, -cb4[r16.w + 344].xyxx, cb4[r16.w + 344].zwzz - mad r19.xy, r19.xyxx, r25.xyxx, cb4[r16.w + 344].xyxx - mad r25.xy, r19.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r25.xy, r25.xyxx - mad r19.xy, r19.xyxx, cb4[400].zwzz, -r25.xyxx - add r26.xyzw, r19.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r27.xyzw, r26.xxzz, r26.xxzz - add r25.zw, -r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r26.xz, r19.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r28.xy, r19.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy - add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r19.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r19.xyxx - mul r30.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r19.xy, -r26.xzxx, r26.xzxx, r25.zwzz - add r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r31.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r19.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r30.z, r31.x - mov r30.w, r19.x - mov r29.z, r28.x - mov r29.w, r27.x - add r26.xyzw, r29.zwxz, r30.zwxz - mov r31.z, r30.y - mov r31.w, r19.y - mov r28.z, r29.y - mov r28.w, r27.z - add r27.xyz, r28.zywz, r31.zywz - div r29.xyz, r29.xzwx, r26.zwyz - add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r29.xyz, r29.yxzy, cb4[400].xxxx - div r28.xyz, r28.zywz, r27.xyzx - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyz, r28.xyzx, cb4[400].yyyy - mov r29.w, r28.x - mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r29.ywxw - mad r19.xy, r25.xyxx, cb4[400].xyxx, r29.zwzz - mov r28.w, r29.y - mov r29.yw, r28.yyyz - mad r31.xyzw, r25.xyxy, cb4[400].xyxy, r29.xyzy - mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz - mad r25.xyzw, r25.xyxy, cb4[400].xyxy, r29.xwzw - mul r29.xyzw, r26.zwyz, r27.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r30.xyxx, t2.xxxx, s2, r19.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r30.zwzz, t2.xxxx, s2, r19.z - mul r18.z, r18.z, r29.y - mad r17.y, r29.x, r17.y, r18.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r19.xyxx, t2.xxxx, s2, r19.z - mad r17.y, r29.z, r18.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.xyxx, t2.xxxx, s2, r19.z - mad r17.y, r29.w, r18.z, r17.y - mul r29.xyzw, r26.xyzw, r27.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r31.xyxx, t2.xxxx, s2, r19.z - mad r17.y, r29.x, r18.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r31.zwzz, t2.xxxx, s2, r19.z - mad r17.y, r29.y, r18.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.zwzz, t2.xxxx, s2, r19.z - mad r17.y, r29.z, r18.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r25.xyxx, t2.xxxx, s2, r19.z - mad r17.y, r29.w, r18.z, r17.y - or r22.yzw, r22.yyzw, r24.yyzw - or r18.z, r22.z, r22.y - or r18.z, r22.w, r18.z - and r19.x, r19.z, l(0x7fffffff) - ult r19.x, l(0x7f800000), r19.x - or r18.z, r18.z, r19.x - mul r19.x, r26.y, r27.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.y, r25.zwzz, t2.xxxx, s2, r19.z - mad r17.y, r19.x, r19.y, r17.y - add r17.y, r17.y, l(-1.000000) - mad r16.w, cb4[r16.w + 288].w, r17.y, l(1.000000) - movc r16.w, r18.z, l(1.000000), r16.w - else - dp3 r17.y, r9.xyzx, r23.xyzx - add_sat r16.w, r17.y, l(1.000000) - endif - else - mov r16.w, l(1.000000) - endif - if_z cb3[r14.z + 6].w - mul r19.xyz, r14.xxxx, cb3[r14.y + 6].xyzx - add r17.y, l(1.000000), -cb3[r17.z + 6].y - max r18.z, r19.y, r19.x - max r18.z, r19.z, r18.z - mul r18.z, r9.w, r18.z - max r18.z, r18.z, l(1.000000) - div r18.z, l(1.000000, 1.000000, 1.000000, 1.000000), r18.z - mad r17.y, r18.z, cb3[r17.z + 6].y, r17.y - mul r19.xyz, r17.yyyy, cb3[r14.y + 6].xyzx - mul r17.y, l(0.250000), cb3[r17.z + 6].x - add_sat r18.z, r17.w, l(0.500000) - mad r20.w, -cb3[r17.z + 6].x, l(0.250000), l(1.000000) - mad r17.y, r18.z, r20.w, r17.y - mul r19.xyz, r17.yyyy, r19.xyzx - mov r22.yzw, r21.xxzw - mov r24.yzw, r21.xxzw - mov r17.y, l(1.000000) - mov r18.z, l(0) - else - ieq r20.w, l(3), cb3[r14.z + 6].w - if_nz r20.w - mad r25.xy, cb3[r17.z + 6].xxxx, l(-0.600000, -0.399999976, 0.000000, 0.000000), l(0.800000, 0.900000, 0.000000, 0.000000) - add r20.w, -r25.x, r25.y - add r21.y, r22.x, -r25.x - div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w - mul_sat r20.w, r20.w, r21.y - mad r21.y, r20.w, l(-2.000000), l(3.000000) - mul r20.w, r20.w, r20.w - mul r20.w, r20.w, r21.y - mul r20.w, r16.w, r20.w - mul r14.x, r14.x, r20.w - mul r25.xyz, r23.zxyz, cb0[6].xyzx - mad r25.xyz, cb0[6].zxyz, r23.xyzx, -r25.xyzx - mul r26.xyz, r25.xyzx, cb0[6].zxyz - mad r25.xyz, cb0[6].yzxy, r25.yzxy, -r26.xyzx - dp3 r20.w, r25.xyzx, r25.xyzx - rsq r20.w, r20.w - mul r25.xyz, r20.wwww, r25.xyzx - dp3_sat r18.y, r7.xyzx, -r25.xyzx - mad r22.yzw, cb3[r17.z + 6].yyyy, r4.xxyz, l(0.000000, 0.500000, 0.500000, 0.500000) - mov r24.yzw, l(0,0,0,0) - mov r17.y, l(1.000000) - mov r18.z, l(0) - else - ieq r20.w, l(1), cb3[r14.z + 6].w - if_nz r20.w - add r17.w, r17.w, cb3[r17.z + 6].x - max_sat r17.w, r17.w, l(-1.000000) - mul r18.y, r16.w, r17.w - mul r24.yzw, r6.xxyz, cb3[r17.z + 6].yyyy - mov r17.y, l(1.000000) - mov r18.z, l(0) - else - ieq r16.w, l(2), cb3[r14.z + 6].w - if_nz r16.w - add r17.w, l(0.050000), cb3[r17.z + 6].x - add r17.w, r3.z, -r17.w - mul_sat r17.w, r17.w, l(-10.000000) - mad r21.y, r17.w, l(-2.000000), l(3.000000) - mul r17.w, r17.w, r17.w - mul r17.w, r17.w, r21.y - add r21.y, l(1.000000), -cb3[r17.z + 6].z - mad r21.y, r5.x, cb3[r17.z + 6].z, r21.y - mul r17.y, r17.w, r21.y - else - mov r17.y, l(1.000000) - endif - and r18.z, r16.w, cb3[r17.z + 6].y - mov r24.yzw, l(0,0,0,0) - endif - and r22.yzw, r10.yyzw, r20.wwww - endif - mov r19.xyz, cb3[r14.y + 6].xyzx - endif - ine r14.y, l(3), cb3[r14.z + 6].w - if_nz r14.y - mad r14.y, r18.z, r6.w, r5.y - mad r23.xyz, r0.xyzx, r1.wwww, r23.xyzx - dp3 r14.z, r23.xyzx, r23.xyzx - rsq r14.z, r14.z - mul r23.xyz, r14.zzzz, r23.xyzx - dp3 r14.z, r3.xywx, r23.xyzx - mul r16.w, r14.y, r14.y - mad r17.z, r14.z, r16.w, -r14.z - mad r14.z, r17.z, r14.z, l(1.000000) - mul r14.z, r14.z, r14.z - ne r17.z, r14.z, r16.w - div r14.z, r16.w, r14.z - movc r14.z, r17.z, r14.z, l(1.000000) - mad r14.y, r24.x, l(2.000000), r14.y - add r14.y, r14.y, l(0.000100) - div r14.y, l(0.500000), r14.y - mad r14.y, r14.z, r14.y, l(-0.0000610351562) - max r14.y, r14.y, l(0.000000) - min r14.y, r14.y, l(20.000000) - mul r23.xyz, r13.xyzx, r14.yyyy - mul r17.yzw, r17.yyyy, r23.xxyz - mul r17.yzw, r17.yyzw, cb3[r19.w + 6].zzzz - else - mov r17.yzw, l(0,0,0,0) - endif - mul r14.xyz, r14.xxxx, r19.xyzx - add r19.xyz, r22.yzwy, -r24.yzwy - mad r19.xyz, r18.yyyy, r19.xyzx, r24.yzwy - mul r19.xyz, r14.xyzx, r19.xyzx - mul r14.xyz, r17.yzwy, r14.xyzx - mul r14.xyz, r18.yyyy, r14.xyzx - mad r14.xyz, r19.xyzx, r15.zzzz, r14.xyzx - add r16.xyz, r14.xyzx, r16.xyzx - endif - else - mov r18.x, l(0) - endif - movc r16.xyz, r18.xxxx, r20.xyzx, r16.xyzx - endif - endif - mov r13.w, r17.x - endloop - mov r15.xyw, r16.xyxz - iadd r10.x, r10.x, l(1) -endloop -lt r0.x, l(0.500000), cb5[3].x -if_nz r0.x - dp3 r0.x, r15.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r3.xyz, -r0.xxxx, r15.xywx - mad r0.xyz, cb5[3].zzzz, r3.xyzx, r0.xxxx - add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) - mad r0.xyz, cb5[3].wwww, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r3.xyz, r0.xyzx, cb5[3].yyyy - mad r0.xyz, -r0.xyzx, cb5[3].yyyy, cb5[7].xyzx - mad r0.xyz, cb5[7].wwww, r0.xyzx, r3.xyzx - add r2.w, l(1.000000), -cb5[4].x - mov_sat r18.w, r18.w - add r3.x, -r18.w, l(1.000000) - add r3.y, -r2.w, l(1.000000) - add r2.w, -r2.w, r3.x - div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y - mul_sat r2.w, r2.w, r3.x - mad r3.x, r2.w, l(-2.000000), l(3.000000) - mul r2.w, r2.w, r2.w - mul r2.w, r2.w, r3.x - mul r3.xyz, r2.wwww, cb5[8].xyzx - mad r15.xyw, r3.xyxz, cb5[4].yyyy, r0.xyxz -endif -div r0.xyz, r15.xywx, cb0[109].xxxx -eq r2.w, l(1.000000), cb5[2].x -movc o0.w, r2.w, r4.w, l(1.000000) -lt r2.w, cb0[198].w, l(0.500000) -if_nz r2.w - mul r0.w, r0.w, r1.w - mad r1.w, v2.y, cb0[156].w, cb0[157].w - max r1.w, r1.w, l(0.010000) - mad r2.w, r0.w, cb0[154].w, -cb0[153].w - max r2.w, r2.w, l(0.000000) - mul r3.x, r1.w, l(-1.442695) - exp r3.x, r3.x - add r3.x, -r3.x, l(1.000000) - div r1.w, r3.x, r1.w - mad r3.x, v2.y, cb0[156].w, cb0[158].w - mul r3.x, r3.x, l(1.442695) - exp r3.x, r3.x - mul r1.w, r1.w, r3.x - mul r1.w, r1.w, -r2.w - mul r3.xyz, r1.wwww, cb0[155].xyzx - mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) - exp r3.xyz, r3.xyzx - dp3 r1.w, -r2.xyzx, cb0[154].xyzx - mad r2.w, cb0[155].w, cb0[155].w, l(1.000000) - dp2 r3.w, r1.wwww, cb0[155].wwww - add r2.w, r2.w, -r3.w - lt r3.w, l(0.000000), cb0[163].z - if_nz r3.w - and r12.w, l(7), cb0[108].w - imad r4.xyz, r12.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r3.w, r4.y, r4.z, r4.x - imad r4.x, r4.z, r3.w, r4.y - imad r4.y, r3.w, r4.x, r4.z - imad r5.x, r4.x, r4.y, r3.w - dp3 r1.x, -r2.xyzx, -r1.xyzx - add r1.y, v2.y, -cb0[44].y - lt r1.z, l(5.960464478E-08), r1.x - div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x - and r1.x, r1.x, r1.z - mul r1.x, r1.x, cb0[163].w - div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w - mul r2.x, r1.z, r1.x - mad r2.y, r2.x, r1.y, cb0[44].y - mad r1.y, -r2.x, r1.y, r1.y - mul r2.x, r1.y, cb0[159].z - mul r1.y, r1.y, cb0[162].x - max r1.y, r1.y, l(-127.000000) - add r2.z, r2.y, -cb0[159].x - mul r2.z, r2.z, cb0[159].z - max r2.xz, r2.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - exp r2.z, -r2.z - mul r2.z, r2.z, cb0[159].y - lt r3.w, l(5.960464478E-08), |r2.x| - exp r4.z, -r2.x - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r2.x - mad r2.x, -r2.x, l(0.240226507), l(0.693147182) - movc r2.x, r3.w, r4.z, r2.x - add r2.y, r2.y, -cb0[162].z - mul r2.y, r2.y, cb0[162].x - max r2.y, r2.y, l(-127.000000) - exp r2.y, -r2.y - mul r2.y, r2.y, cb0[162].y - lt r3.w, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r3.w, r4.z, r1.y - mul r1.y, r1.y, r2.y - mad r1.y, r2.z, r2.x, r1.y - mad r1.x, -r1.x, r1.z, l(1.000000) - mul r1.x, r0.w, r1.x - mul r1.x, r1.x, r1.y - exp r1.x, -r1.x - min r1.x, r1.x, l(1.000000) - max r1.x, r1.x, cb0[161].w - mad_sat r1.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx - add r1.x, r1.y, r1.x - add r1.x, r1.z, r1.x - min r1.x, r1.x, l(1.000000) - imad r5.y, r4.y, r5.x, r4.x - ushr r1.yz, r5.xxyx, l(0, 16, 16, 0) - utof r1.yz, r1.yyzy - mad r1.yz, r1.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) - mad r1.yz, r1.yyzy, cb0[167].wwww, r5.zzwz - mul r2.xy, r1.yzyy, cb0[165].xyxx - mad r1.y, v0.w, cb0[164].x, cb0[164].y - log r1.y, r1.y - mul r1.y, r1.y, cb0[164].z - div r2.z, r1.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t19.xyzw, s0, l(0.000000) - add r1.y, v0.w, -cb0[166].z - mul_sat r1.y, r1.y, l(1000000.000000) - add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r4.xyzw, r1.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r1.y, -r1.x, l(1.000000) - mul r2.xyz, r1.yyyy, cb0[161].xyzx - mad r2.xyz, r2.xyzx, r4.wwww, r4.xyzx - mul r1.x, r1.x, r4.w - else - add r1.y, v2.y, -cb0[44].y - mul r1.z, r1.y, cb0[159].z - mul r1.y, r1.y, cb0[162].x - max r1.yz, r1.yyzy, l(0.000000, -127.000000, -127.000000, 0.000000) - add r3.w, cb0[44].y, -cb0[159].x - mul r3.w, r3.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[159].y - lt r4.x, l(5.960464478E-08), |r1.z| - exp r4.y, -r1.z - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r1.z - mad r1.z, -r1.z, l(0.240226507), l(0.693147182) - movc r1.z, r4.x, r4.y, r1.z - add r4.x, cb0[44].y, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.y, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r4.y, r4.z, r1.y - mul r1.y, r1.y, r4.x - mad r1.y, r3.w, r1.z, r1.y - mul r1.y, r0.w, r1.y - exp r1.y, -r1.y - min r1.y, r1.y, l(1.000000) - max r1.y, r1.y, cb0[161].w - mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.w, r1.y, r4.x - add r0.w, r4.y, r0.w - min r1.x, r0.w, l(1.000000) - add r0.w, -r1.x, l(1.000000) - mul r2.xyz, r0.wwww, cb0[161].xyzx - endif - mul r4.xyz, r1.xxxx, r3.xyzx - mad r0.w, r1.w, r1.w, l(1.000000) - mul r0.w, r0.w, l(0.0596831031) - mad r1.yzw, cb0[156].xxyz, r0.wwww, cb0[158].xxyz - mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) - mul r3.w, r2.w, l(12.566371) - sqrt r2.w, r2.w - mul r2.w, r2.w, r3.w - max r2.w, r2.w, l(0.001000) - div r0.w, r0.w, r2.w - mad_sat r1.yzw, cb0[157].xxyz, r0.wwww, r1.yyzw - mul r1.yzw, r1.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) - add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mul r1.yzw, r1.yyzw, r3.xxyz - mad r1.xyz, r1.yzwy, r1.xxxx, r2.xyzx - -// === Simplified Fog Modification (Anti-Banding) === -// Check if fog modification is enabled via cb13[12].y -lt r15.x, l(0.500000), cb13[12].y -if_nz r15.x - // r0.xyz = scene color, r4.xyz = transmittance, r1.xyz = fog inscatter - // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density - add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx - - // Reduce fog inscatter intensity - mul r16.xyz, r1.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - - // Modified fog blend: scene * boostedTrans + reducedInscatter - mad o0.xyz, r0.xyzx, r15.xyzx, r16.xyzx -else - // Original fog blend - mad o0.xyz, r0.xyzx, r4.xyzx, r1.xyzx -endif -// === End Fog Modification === -else - mov o0.xyz, r0.xyzx -endif -mov o1.z, l(1.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xC70BDAA5.cso b/src/games/endfield/deferred-lighting/0xC70BDAA5.cso new file mode 100644 index 0000000000000000000000000000000000000000..f80e47b3de9b55d459bd78c465768473c840c513 GIT binary patch literal 62180 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 b2Do>q9-SWX1jhK5#+QU!{I|1tLf!ud6&z}t literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xD3FA93FC.cso b/src/games/endfield/deferred-lighting/0xD3FA93FC.cso deleted file mode 100644 index b9c2895dcea843710f8ad04ff41bda8ae84d8b83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48788 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 diff --git a/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm deleted file mode 100644 index bd9a10f395..0000000000 --- a/src/games/endfield/deferred-lighting/0xD5B102A4.ps_5_0.asm +++ /dev/null @@ -1,1301 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 22:30:13 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[5], immediateIndexed -dcl_constantbuffer CB3[5], immediateIndexed -dcl_constantbuffer CB4[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture3d (float,float,float,float) t21 -dcl_resource_texture3d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_resource_texture2d (float,float,float,float) t25 -dcl_resource_texture2d (float,float,float,float) t26 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 24 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t24.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t25.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r2.xyw, r1.wwww, r3.xyxz -utof r4.xy, r0.xyxx -mul r4.zw, v0.xxxy, cb0[82].zzzw -mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) -mul r5.zw, r5.zzzw, cb0[82].zzzw -sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) -mul r6.xyzw, -r5.yyyy, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw -mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r3.w, r5.y, cb0[1].z -mad r3.w, cb0[0].z, r5.x, r3.w -mad r3.w, cb0[2].z, r5.z, r3.w -add r3.w, r3.w, cb0[3].z -eq r6.x, l(0.000000), cb0[86].w -add r6.yzw, -r5.xxyz, cb0[44].xxyz -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r6.xyz, r6.xxxx, r6.yzwy, r7.xyzx -dp3 r6.w, r6.xyzx, r6.xyzx -max r7.w, r6.w, l(9.999999939E-09) -rsq r7.w, r7.w -mul r8.xyz, r6.xyzx, r7.wwww -mul r6.w, r6.w, r7.w -lt r8.w, l(0.000488281250), cb0[234].x -if_nz r8.w - sample_b_indexable(texture2d)(float,float,float,float) r9.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x -else - mov r9.xy, l(1.000000,1.000000,0,0) -endif -lt r9.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[226].xxxy -if_nz r9.z - add r9.z, |r2.y|, |r2.x| - add r9.z, |r2.w|, r9.z - div r9.z, l(1.000000, 1.000000, 1.000000, 1.000000), r9.z - mul r10.xyz, |r2.xywx|, r9.zzzz - mul r11.xyz, r5.xyzx, cb0[229].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r9.z, r11.xyzx, t9.yzxw, s2, l(0.000000) - mul r11.xyzw, r10.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) - add r10.xyw, r11.zwzz, r11.xxxy - mad r10.xyz, r10.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r10.xywx - mad r10.w, r9.z, l(2.000000), l(-1.000000) - mul r10.xyz, r10.wwww, r10.xyzx - mov r10.w, |r2.y| - add r10.w, r10.w, l(-0.700000) - mul_sat r10.w, r10.w, l(4.000000) - mad r11.x, r10.w, l(-2.000000), l(3.000000) - mul r10.w, r10.w, r10.w - mul r10.w, r10.w, r11.x - add r11.x, -cb0[229].z, cb0[229].y - mad r10.w, r10.w, r11.x, cb0[229].z - mul r10.xyz, r10.wwww, r10.xyzx -else - mov r10.xyz, l(0,0,0,0) - mov r9.z, l(0) -endif -mad r10.w, -r3.y, r1.w, l(-0.200000) -if_nz r9.w - mul r11.xyz, r2.xywx, cb0[233].zzzz - mul r12.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy - mad r11.xyz, r11.xyzx, cb0[225].xxxx, r12.xyzx - max r9.w, -r2.y, l(0.000000) - min r9.w, r9.w, l(0.900000) - add r9.w, -r9.w, l(1.000000) - mul_sat r11.w, r10.w, l(-10.000000) - mad r12.x, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r12.x - max r11.w, r11.w, l(0.100000) - min r11.w, r11.w, l(1.000000) - mul r9.w, r9.w, r11.w - mad r11.xyz, r11.xyzx, r9.wwww, r5.xyzx - add r10.xyz, r10.xyzx, r11.xyzx - mul r11.xyz, r10.yyyy, cb3[1].xyzx - mad r11.xyz, cb3[0].xyzx, r10.xxxx, r11.xyzx - mad r10.xyz, cb3[2].xyzx, r10.zzzz, r11.xyzx - add r10.xyz, r10.xyzx, cb3[3].xyzx - mad r11.x, r10.x, l(0.500000), cb3[4].x - mad r9.w, r10.y, l(0.500000), l(0.500000) - add r11.z, -r9.w, cb3[4].y - add r10.xy, r11.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r9.w, r10.z, l(0.000488281250) - sample_c_lz_indexable(texture2d)(float,float,float,float) r9.w, r10.xyxx, t8.xxxx, s4, r9.w -else - mov r9.w, l(1.000000) -endif -mov_sat r10.x, r2.y -add r10.y, l(1.000000), -cb0[230].w -mad r10.x, r10.x, r10.y, cb0[230].w -add r10.yz, r5.xxzx, -cb0[44].xxzx -max r10.y, |r10.z|, |r10.y| -mul r10.z, r9.w, r10.x -mul r11.x, l(0.0500000119), cb0[222].w -mad r11.y, -cb0[222].w, l(0.700000), r10.y -div r11.x, l(1.000000, 1.000000, 1.000000, 1.000000), r11.x -mul_sat r11.x, r11.x, r11.y -mad r11.y, r11.x, l(-2.000000), l(3.000000) -mul r11.x, r11.x, r11.x -mul r11.x, r11.x, r11.y -mad r9.w, -r10.x, r9.w, l(1.000000) -mad r9.w, r11.x, r9.w, r10.z -ge r10.z, r1.z, l(0.045000) -and r10.z, r10.z, l(0x3f800000) -mul r10.z, r9.w, r10.z -deriv_rty_coarse r11.xyz, r5.xyzx -deriv_rtx_coarse r12.xyz, r5.zxyz -mul r13.xyz, r11.xyzx, r12.xyzx -mad r11.xyz, r11.zxyz, r12.yzxy, -r13.xyzx -dp3 r11.w, r11.xyzx, r11.xyzx -max r11.w, r11.w, l(1.175494351E-38) -rsq r11.w, r11.w -mul r12.xyz, r11.wwww, r11.xzyx -mov_sat r11.y, r12.x -add r11.z, r11.y, l(-0.988000) -mul_sat r11.z, r11.z, l(1000.012878) -mad r12.w, r11.z, l(-2.000000), l(3.000000) -mul r11.z, r11.z, r11.z -mul r11.z, r11.z, r12.w -add r12.w, |r3.w|, l(-15.000000) -mul_sat r12.w, r12.w, l(0.015000) -add r12.w, -r12.w, l(1.000000) -lt r13.x, l(0.000488281250), cb0[223].y -mad r13.y, cb0[223].z, l(0.300000), l(0.687000) -add r11.y, r11.y, -r13.y -mul_sat r11.y, r11.y, l(-1000.012878) -mad r13.y, r11.y, l(-2.000000), l(3.000000) -mul r11.y, r11.y, r11.y -mul r11.y, r11.y, r13.y -mad r11.x, r11.x, r11.w, l(0.500000) -mul_sat r11.x, r11.x, l(2.500000) -mad r11.w, r11.x, l(-2.000000), l(3.000000) -mul r11.x, r11.x, r11.x -mul r11.x, r11.x, r11.w -mul r11.x, r11.x, r11.y -lt r11.x, l(0.000488281250), r11.x -and r11.x, r11.x, r13.x -if_nz r11.x - mul r11.xy, |r12.yzyy|, |r12.yzyy| - add r11.w, r11.y, r11.x - div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w - mul r11.xy, r11.wwww, r11.xyxx - mul r13.xyz, r12.xzyx, l(0.000000, 1.000000, 0.000000, 0.000000) - mad r13.xyz, r12.yxzy, l(1.000000, 0.000000, 0.000000, 0.000000), -r13.xyzx - dp2 r11.w, r13.xyxx, r13.xyxx - rsq r11.w, r11.w - mul r13.xyz, r11.wwww, r13.xyzx - mul r14.xyz, r12.xzyx, r13.xyzx - mad r14.xyz, r13.zxyz, r12.zyxz, -r14.xyzx - dp3 r11.w, r14.xyzx, r14.xyzx - rsq r11.w, r11.w - mul r14.xyz, r11.wwww, r14.xyzx - add r15.xyz, r5.xyzx, r5.xyzx - round_ni r15.xyz, r15.xyzx - add r15.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - add r13.zw, r15.yyyy, r15.xxxz - dp2 r11.w, r13.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r11.w, null, r11.w - mul r11.w, r11.w, l(43758.546875) - frc r11.w, r11.w - lt r13.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.zzzy - lt r15.xy, r12.zyzz, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r13.zw, r13.zzzw, -r15.xxxy - itof r13.zw, r13.zzzw - mul r15.xy, r5.xzxx, r13.zwzz - mul r13.z, r9.z, r11.w - add r13.w, -r11.w, l(1.000000) - mad r13.w, r13.w, l(0.700000), l(0.300000) - mul r16.xy, r13.zzzz, l(3.000000, 6.000000, 0.000000, 0.000000) - mad r13.z, -cb0[223].x, r13.w, r16.x - frc r17.x, r13.z - mad r13.z, cb0[223].x, l(-0.300000), r16.y - frc r17.y, r13.z - mul r11.w, r11.w, l(5.000000) - round_ni r11.w, r11.w - add r16.x, r11.w, l(1.000000) - mul r16.y, r5.y, r16.x - mov r5.w, l(0.100000) - mul r13.zw, r5.yyyw, r16.xxxy - frc r13.zw, r13.zzzw - add r16.xy, r17.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - add r16.xy, r13.zwzz, -r16.xyxx - add r16.xy, r16.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) - mul_sat r16.xy, r16.xyxx, l(5.00000048, 5.00000048, 0.000000, 0.000000) - mad r16.zw, r16.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) - mul r16.xy, r16.xyxx, r16.xyxx - mul r16.xy, r16.xyxx, r16.zwzz - add r16.zw, -r13.zzzw, r17.xxxy - max r16.xy, r16.zwzz, r16.xyxx - add r17.zw, -r17.xxxy, r13.zzzw - add r17.zw, r17.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) - mul r17.zw, r17.zzzw, l(0.000000, 0.000000, 5.00000048, 5.00000048) - max r17.zw, r17.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r18.xy, r17.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) - mul r17.zw, r17.zzzw, r17.zzzw - mul r17.zw, r17.zzzw, r18.xxxy - add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - max r16.zw, r16.zzzw, r17.zzzw - ge r13.zw, r13.zzzw, r17.xxxy - and r13.zw, r13.zzzw, l(0, 0, 0x3f800000, 0x3f800000) - add r16.zw, -r16.xxxy, r16.zzzw - mad r13.zw, r13.zzzw, r16.zzzw, r16.xxxy - mad r11.w, r13.z, r13.z, l(-0.400000) - mul_sat r11.w, r11.w, l(1.66666663) - mad r13.z, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r13.z - mad r13.z, r13.w, l(2.000000), l(-1.000000) - mul r16.x, r11.w, l(0.010000) - mul r16.y, r13.z, r16.x - mad r17.x, r9.z, l(0.100000), r16.y - mul r16.x, r11.w, r16.x - mad r16.x, r16.x, r13.z, r9.z - mul r17.y, r9.z, r16.x - mov r15.z, r5.y - mad r16.xy, r15.yzyy, cb0[224].xyxx, r17.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r16.xyxx, t10.xyzw, s2, cb0[108].x - mov r15.w, -r15.x - mad r15.xy, r15.wzww, cb0[224].xyxx, r17.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r15.xyzw, r15.xyxx, t10.xyzw, s2, cb0[108].x - mul r15.xyzw, r11.yyyy, r15.xyzw - mad r15.xyzw, r16.xyzw, r11.xxxx, r15.xyzw - mad r11.xy, r15.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mad r9.z, r11.w, l(2.000000), l(-1.000000) - mad_sat r9.z, r9.z, l(0.800000), r13.w - mad r13.w, -r15.w, l(0.500000), l(1.000000) - mad r9.z, r9.z, r13.w, l(-0.700000) - mul_sat r9.z, r9.z, l(3.33333325) - mad r13.w, r9.z, l(-2.000000), l(3.000000) - mul r9.z, r9.z, r9.z - mul r9.z, r9.z, r13.w - mul r13.z, r13.z, r15.w - mad_sat r11.w, r13.z, l(0.500000), r11.w - mad r11.w, r11.w, l(0.500000), l(0.100000) - max r9.z, r9.z, r11.w - add r11.w, -r9.z, l(1.000000) - max r11.w, r11.w, l(0.000000) - mul r13.z, r11.w, r11.w - mul r13.z, r13.z, r13.z - mul r11.w, r11.w, r13.z - ge r11.w, r15.z, r11.w - and r11.w, r11.w, l(0x3f800000) - mad r9.z, r9.z, l(0.700000), l(0.200000018) - mad r9.z, r11.w, r9.z, l(0.100000) - mul r9.z, r15.z, r9.z - mul r9.z, r9.z, cb0[223].y - mul r9.z, r9.z, l(0.330000) - mul r11.w, r10.z, cb0[222].x - mul r11.w, r12.w, r11.w - mul r9.z, r9.z, r11.w - dp2 r11.w, r11.xyxx, r11.xyxx - min r11.w, r11.w, l(1.000000) - add r11.w, -r11.w, l(1.000000) - sqrt r11.w, r11.w - max r11.w, r11.w, l(0.000488281250) - mul_sat r13.z, r9.z, l(10.000000) - mad r13.w, r13.z, l(-2.000000), l(3.000000) - mul r13.z, r13.z, r13.z - mul r13.z, r13.z, r13.w - mul r13.z, r13.z, cb0[223].y - mul r15.xy, r11.xyxx, r13.zzzz - add r11.x, l(-1.500000), cb0[223].y - mul_sat r11.x, r11.x, l(0.666666687) - mad r11.y, r11.x, l(-2.000000), l(3.000000) - mul r11.x, r11.x, r11.x - mul r11.x, r11.x, r11.y - mul r11.y, r11.x, l(-0.200000) - mad r11.x, -r11.x, l(-0.200000), r11.w - mad r15.z, r9.z, r11.x, r11.y - dp3 r11.x, r15.xyzx, r15.xyzx - max r11.x, r11.x, l(1.175494351E-38) - rsq r11.x, r11.x - mul r11.xyw, r11.xxxx, r15.xyxz - mov r15.x, r13.y - mov r15.y, r14.x - mov r15.z, r12.y - dp3 r15.x, r15.xyzx, r11.xywx - mov r14.w, r12.x - dp2 r15.y, r14.ywyy, r11.ywyy - mov r12.x, r13.x - mov r12.y, r14.z - dp3 r15.z, r12.xyzx, r11.xywx - mad r11.xyw, -r3.xyxz, r1.wwww, r15.xyxz - mad r13.xyz, r9.zzzz, r11.xywx, r2.xywx - mul r9.z, r9.z, cb0[223].y - mul r9.z, r9.z, l(0.330000) -else - mov r13.xyz, r2.xywx - mov r9.z, l(0) -endif -lt r11.xy, l(0.000488281250, 0.000488281250, 0.000000, 0.000000), cb0[227].ywyy -or r11.x, r11.y, r11.x -lt r11.y, l(0.000488281250), r11.z -and r11.x, r11.y, r11.x -if_nz r11.x - mul r11.xyw, r2.ywyx, l(1.000000, 0.000000, 0.000000, 0.000000) - mad r11.xyw, r2.xyxw, l(0.000000, 0.000000, 0.000000, 1.000000), -r11.xyxw - dp2 r12.x, r11.xwxx, r11.xwxx - rsq r12.x, r12.x - mul r11.xyw, r11.xyxw, r12.xxxx - mul r12.xyz, r2.ywxy, r11.xywx - mad r12.xyz, r11.wxyw, r2.wxyw, -r12.xyzx - dp3 r11.y, r12.xyzx, r12.xyzx - rsq r11.y, r11.y - mul r14.xyz, r11.yyyy, r12.xzyx - mul r12.xy, -r5.xzxx, cb0[228].xyxx - frc r15.xy, r12.xyxx - round_ni r12.xy, r12.xyxx - dp2 r11.y, r12.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r11.y, null, r11.y - mul r11.y, r11.y, l(43758.546875) - frc r11.y, r11.y - add r12.x, r11.y, cb0[227].x - frc r12.x, r12.x - mul r12.y, cb0[228].z, cb0[228].z - mul r12.x, r12.y, r12.x - round_ni r12.x, r12.x - div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[228].z - mad r15.zw, -r5.xxxz, cb0[228].xxxy, cb0[227].zzzz - sample_b_indexable(texture2d)(float,float,float,float) r16.xy, r15.zwzz, t11.zwxy, s2, cb0[108].x - mad r15.zw, -r5.xxxz, cb0[228].xxxy, -cb0[227].zzzz - sample_b_indexable(texture2d)(float,float,float,float) r16.zw, r15.zwzz, t11.xyzw, s2, cb0[108].x - mul r16.xyzw, r16.xyzw, cb0[227].wwww - mad r16.xyzw, r16.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -cb0[227].wwww - ge r11.y, l(0.500000), r11.y - and r11.y, r11.y, l(0x3f800000) - add r15.zw, -r15.xxxy, r15.yyyx - mad r15.xy, r11.yyyy, r15.zwzz, r15.xyxx - div r11.y, r12.x, cb0[228].z - ge r12.z, r11.y, -r11.y - frc r11.y, |r11.y| - movc r11.y, r12.z, r11.y, -r11.y - mul r11.y, r11.y, cb0[228].z - mul r17.x, r11.y, r12.y - add r15.zw, l(0.000000, 0.000000, -0.050000, -1.000000), cb0[228].wwwz - mul r11.y, r12.y, r12.x - round_ni r11.y, r11.y - add r11.y, -r11.y, r15.w - mul r17.y, r11.y, r12.y - mad r12.xy, r15.xyxx, r12.yyyy, r17.xyxx - frc r12.xy, r12.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r12.xy, r12.xyxx, t11.xyzw, s1, cb0[108].x - mul r12.xy, r12.xyxx, cb0[227].yyyy - mad r12.xy, r12.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[227].yyyy - add r15.xy, r16.zwzz, r16.xyxx - add r12.xy, r12.xyxx, r15.xyxx - dp2 r11.y, r12.xyxx, r12.xyxx - min r11.y, r11.y, l(1.000000) - add r11.y, -r11.y, l(1.000000) - sqrt r11.y, r11.y - max r12.z, r11.y, l(0.000488281250) - dp3 r11.y, r12.xyzx, r12.xyzx - rsq r11.y, r11.y - mul r12.xyz, r11.yyyy, r12.xyzx - mov r14.w, r2.x - dp2 r16.x, r14.xwxx, r12.yzyy - mov r17.x, r11.w - mov r17.y, r14.z - mov r17.z, r2.y - dp3 r16.y, r17.xyzx, r12.xyzx - mov r14.x, r11.x - mov r14.z, r2.w - dp3 r16.z, r14.xyzx, r12.xyzx - mul r10.z, r10.z, cb0[222].x - mul r10.z, r11.z, r10.z - max r11.x, l(0.000488281250), cb0[228].w - mov_sat r15.z, r15.z - add r11.y, -r11.x, r15.z - add r11.x, r2.z, -r11.x - div r11.y, l(1.000000, 1.000000, 1.000000, 1.000000), r11.y - mul_sat r11.x, r11.y, r11.x - mad r11.y, r11.x, l(-2.000000), l(3.000000) - mul r11.x, r11.x, r11.x - mul r11.x, r11.x, r11.y - mul r10.z, r10.z, r11.x - mul r10.z, r12.w, r10.z - mad r3.xyz, -r3.xyzx, r1.wwww, r16.xyzx - mad r13.xyz, r10.zzzz, r3.xyzx, r2.xywx -endif -min r1.w, r9.y, r9.x -mul r3.x, r10.x, cb0[230].z -mad r3.y, -cb0[230].z, r10.x, l(1.000000) -mad r3.x, r9.w, r3.y, r3.x -mad r3.y, cb0[230].x, cb0[222].w, -cb0[222].w -add r3.z, r10.y, -cb0[222].w -div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y -mul_sat r3.y, r3.y, r3.z -mad r3.z, r3.y, l(-2.000000), l(3.000000) -mul r3.y, r3.y, r3.y -mul r3.y, r3.y, r3.z -add r3.z, -r3.x, cb0[230].y -mad r3.x, r3.y, r3.z, r3.x -add r3.x, -r3.x, l(1.000000) -mul r3.y, r3.x, r9.x -add r1.z, r1.z, l(-0.050000) -mul_sat r1.z, r1.z, l(1.052600) -add r3.z, -r2.z, l(1.000000) -mad_sat r9.w, r3.z, cb0[222].z, cb0[222].y -mad_sat r9.w, r9.z, cb0[224].z, r9.w -add r10.x, -r9.w, l(1.000000) -mad r9.w, r1.x, r10.x, r9.w -mul_sat r10.x, r10.w, l(3.33333325) -mad r10.y, r10.x, l(-2.000000), l(3.000000) -mul r10.x, r10.x, r10.x -mad r10.x, -r10.y, r10.x, l(1.000000) -mul r10.y, r9.w, cb0[222].x -add r10.z, -r1.x, l(1.000000) -mul r10.y, r10.z, r10.y -mul r10.y, r10.x, r10.y -mad r10.y, r10.y, l(-0.750000), l(1.000000) -mad r9.w, r9.w, l(-0.299999952), l(0.900000) -sqrt r10.z, r3.z -add r9.w, r9.w, r10.z -add_sat r9.w, r9.w, l(-0.600000) -max r9.w, r3.z, r9.w -min r9.w, r9.w, l(0.990000) -add_sat r10.z, l(2.000000), -cb0[222].x -mul r10.z, r10.z, cb0[222].x -mul r10.x, r10.x, r10.z -mad r3.x, -r9.x, r3.x, l(1.000000) -mul r3.x, r3.x, r10.x -add r9.x, -r3.z, r9.w -mad r3.x, r3.x, r9.x, r3.z -add r3.x, -r3.x, l(1.000000) -mul_sat r3.z, r9.z, l(20.000000) -mad r9.x, r3.z, l(-2.000000), l(3.000000) -mul r3.z, r3.z, r3.z -mul r3.z, r3.z, r9.x -mad r3.z, r3.z, l(-0.900000), l(1.000000) -mul r9.x, r3.z, r3.x -add r9.y, r9.y, l(-1.000000) -mad r11.x, r1.z, r9.y, l(1.000000) -add r11.y, -r1.z, l(1.000000) -movc r9.yz, r8.wwww, r11.xxyx, l(0,1.000000,1.000000,0) -min r1.z, r9.x, r9.y -mad r3.x, r3.x, r3.z, -r1.z -mad r1.z, r1.w, r3.x, r1.z -add r2.z, -r1.z, r2.z -mad r11.z, r3.y, r2.z, r1.z -ld_indexable(texture2d)(float,float,float,float) r9.xyw, r0.xyzz, t26.xywz -min r1.z, r10.y, r9.z -add r2.z, -r1.z, r10.y -mad r1.z, r1.w, r2.z, r1.z -add r1.w, -r1.z, l(1.000000) -mad r1.z, r3.y, r1.w, r1.z -mul r3.xyz, r1.zzzz, r9.xywx -mul r10.xyz, r1.xxxx, r3.xyzx -mad r9.xyz, r9.xywx, r1.zzzz, -r10.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz -dp3 r2.z, r13.xyzx, r8.xyzx -max r10.x, r2.z, l(0.000000) -mul r3.y, r11.z, r11.z -mul r12.x, r10.x, r10.x -mul r12.z, r10.x, r12.x -mul r2.z, r3.y, r3.y -mul r3.z, r3.y, r2.z -mov r10.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r14.x, l(3.327070, 1.000000, 0.000000, 0.000000), r10.xyxx -dp2 r14.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r10.xzxx -mov r3.x, l(1.000000) -dp2 r8.w, r14.xyxx, r3.xyxx -mov r12.yw, l(0,9.044010,0,1.000000) -dp3 r14.x, l(3.596850, -1.367720, 1.000000, 0.000000), r12.xzwx -dp3 r14.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r12.xyzx -mov r15.x, l(5.565890) -mov r15.yz, r12.xxzx -dp3 r14.z, l(1.000000, 19.788601, -20.212299, 0.000000), r15.xyzx -dp3 r9.w, r14.xyzx, r3.xyzx -div r8.w, r8.w, r9.w -dp2 r14.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r10.xwxx -mov r12.x, l(1.296780) -mov r12.y, r10.x -dp2 r14.y, l(1.000000, -0.755907, 0.000000, 0.000000), r12.xyxx -dp2 r9.w, r14.xyxx, r3.xyxx -dp3 r14.x, l(2.923380, 59.418800, 1.000000, 0.000000), r12.yzwy -mov r12.xw, l(20.322500,0,0,121.563004) -dp3 r14.y, l(1.000000, -27.030199, 222.591995, 0.000000), r12.xyzx -dp3 r14.z, l(626.130005, 316.627014, 1.000000, 0.000000), r12.yzwy -dp3 r3.x, r14.xyzx, r3.xyzx -div r3.x, r9.w, r3.x -mad r10.yzw, r1.xxzw, r8.wwww, r3.xxxx -add r3.x, r3.x, r8.w -ld_indexable(texture2d)(float,float,float,float) r3.y, r0.xyzz, t6.zxyw -lt r0.z, l(0.001000), r3.y -if_nz r0.z - dp3 r0.z, -r8.xyzx, r13.xyzx - add r0.z, r0.z, r0.z - mad r12.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx - dp3 r0.z, -cb2[0].xyzx, r12.xyzx - mad r14.xyz, cb2[0].xyzx, r0.zzzz, r12.xyzx - lt r0.z, r0.z, cb2[4].z - dp3 r8.w, r14.xyzx, r14.xyzx - max r8.w, r8.w, l(0.0000610351562) - rsq r8.w, r8.w - mul r14.xyz, r8.wwww, r14.xyzx - mul r14.xyz, r14.xyzx, cb2[4].yyyy - mad r14.xyz, -cb2[0].xyzx, cb2[4].zzzz, r14.xyzx - dp3 r8.w, r14.xyzx, r14.xyzx - rsq r8.w, r8.w - mul r14.xyz, r8.wwww, r14.xyzx - movc r12.xyz, r0.zzzz, r14.xyzx, r12.xyzx - mad r6.xyz, r6.xyzx, r7.wwww, r12.xyzx - dp3 r0.z, r6.xyzx, r6.xyzx - max r0.z, r0.z, l(0.0000610351562) - rsq r0.z, r0.z - mul r6.xyz, r0.zzzz, r6.xyzx - dp3_sat r11.x, r12.xyzx, r13.xyzx - dp3_sat r0.z, r13.xyzx, r6.xyzx - min r11.y, r10.x, l(1.000000) - mad r7.w, r0.z, r2.z, -r0.z - mad r0.z, r7.w, r0.z, l(1.000000) - dp3_sat r6.x, r8.xyzx, r6.xyzx - add r6.x, -r6.x, l(1.000000) - mul r6.y, r6.x, r6.x - mul r6.y, r6.y, r6.y - mul r6.z, r6.x, r6.y - add r7.w, -r11.z, l(1.000000) - mad r8.w, -r7.w, l(0.383026), l(-0.0761947036) - mad r8.w, r7.w, r8.w, l(1.049970) - mad r7.w, r7.w, r8.w, l(0.409255) - min r7.w, r7.w, l(0.999000) - add r8.w, -r7.w, l(1.000000) - add r14.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r14.xyz, r14.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r1.xzwx - mad r6.x, -r6.y, r6.x, l(1.000000) - mad r6.xyz, r1.xzwx, r6.xxxx, r6.zzzz - mul r0.z, r0.z, r0.z - div r0.z, r2.z, r0.z - mad r15.xy, -r11.yxyy, r2.zzzz, r11.yxyy - mad r15.xy, r15.xyxx, r11.yxyy, r2.zzzz - sqrt r15.xy, r15.xyxx - mul r15.xy, r11.xyxx, r15.xyxx - add r2.z, r15.y, r15.x - add r2.z, r2.z, l(0.000100) - div r2.z, l(0.500000), r2.z - mul r0.z, r0.z, r2.z - mul r6.xyz, r0.zzzz, r6.xyzx - min r6.xyz, r6.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r15.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r15.xyxx, t12.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r2.z, r15.zwzz, t12.yzxw, s1, l(0.000000) - mul r0.z, r0.z, r2.z - mul r0.z, r7.w, r0.z - div r0.z, r0.z, r8.w - mul r15.xyz, r14.xyzx, r14.xyzx - mul r15.xyz, r0.zzzz, r15.xyzx - mad r14.xyz, -r14.xyzx, r8.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r14.xyz, r15.xyzx, r14.xyzx - add r6.xyz, r6.xyzx, r14.xyzx - mul r6.xyz, r6.xyzx, cb2[4].xxxx - max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r6.xyz, r6.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - dp3_sat r0.z, r12.xyzx, r2.xywx - mul r12.xyz, r0.zzzz, r9.xyzx - mad r6.xyz, r6.xyzx, r11.xxxx, r12.xyzx - mul r6.xyz, r6.xyzx, cb2[1].xyzx - mov r3.z, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r3.yzyy, t7.xywz, s1, cb0[108].x - add r0.z, -r3.y, l(1.000000) - mad r11.xyw, r6.xyxz, r11.xyxw, -r6.xyxz - mad r6.xyz, r0.zzzz, r11.xywx, r6.xyzx - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t13.yzxw, s1, l(0.000000) - ge r23.x, cb13[12].z, l(1.000000) - mad_sat r23.y, r0.z, l(2.000000), l(-1.000000) - mad_sat r23.z, r0.z, l(4.000000), l(-3.000000) - mad_sat r23.w, r6.w, l(0.050000), l(-1.500000) - add r23.z, r23.z, -r23.y - mad r23.y, r23.w, r23.z, r23.y - movc r0.z, r23.x, r23.y, r0.z - min r0.z, r0.z, l(1.000000) - mul r6.xyz, r0.zzzz, r6.xyzx -else - mov r6.xyz, l(0,0,0,0) -endif -ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -movc r3.y, cb13[14].z, l(0xFFFFFFFF), r3.y -if_nz r3.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - dp3 r2.z, r2.xywx, r8.xyzx - max r2.z, r2.z, l(0.000000) - add r2.z, r0.z, r2.z - mad r3.y, r11.z, l(-16.000000), l(-1.000000) - exp r3.y, r3.y - log r2.z, |r2.z| - mul r2.z, r2.z, r3.y - exp r2.z, r2.z - add r2.z, r0.z, r2.z - add r2.z, r2.z, l(-1.000000) - mov_sat r11.xyw, r2.zzzz - mad r12.xyz, r9.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - mad r12.xyz, r9.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx - add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - mad r12.xyz, r9.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx - add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - max r12.xyz, r0.zzzz, r12.xyzx -else - mov r11.xyw, r1.yyyy - mov r12.xyz, r1.yyyy -endif -movc r11.xyw, cb13[14].zzzz, r11.xyzw, l(1.0, 1.0, 0, 1.0) -mul r6.xyz, r6.xyzx, r11.xywx -mad r14.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[212].x -mad r15.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx -dp2 r0.z, r15.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r14.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r14.xyzx -mad r15.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r15.xyz, r14.xzyx, -r15.xyzx -max r0.z, |r15.y|, |r15.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.y, |r15.z|, l(-208.000000) -mul_sat r1.y, r1.y, l(0.031250) -max r0.z, r0.z, r1.y -ne r1.y, l(0.000000), cb0[210].w -lt r2.z, r0.z, l(1.000000) -and r1.y, r1.y, r2.z -if_nz r1.y - mad r15.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r15.xyz, r14.xzyx, -r15.xyzx - max r1.y, |r15.y|, |r15.x| - add r1.y, r1.y, l(-29.000000) - mul_sat r1.y, r1.y, l(0.500000) - add r2.z, |r15.z|, l(-13.000000) - mul_sat r2.z, r2.z, l(0.500000) - max r1.y, r1.y, r2.z - lt r2.z, r1.y, l(1.000000) - if_nz r2.z - mad r15.xyz, r14.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r16.xyz, r15.xyzx, cb0[211].xyzx - round_ni r16.xyz, r16.xyzx - mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r16.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) - add r2.z, -r1.y, l(1.000000) - mul r3.y, l(0.500000), cb0[211].y - mad r7.w, -cb0[211].y, l(0.500000), l(1.000000) - max r3.y, r3.y, r15.y - min r3.y, r7.w, r3.y - mul r15.w, r3.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) - mad r3.y, r17.w, r2.z, r0.z - add r18.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r16.yyyy, r18.xyzx - mov r18.w, r16.y - mul r18.xyzw, r2.zzzz, r18.xyzw - add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r16.xxxx, r15.xyzx - mov r15.w, r16.x - mul r15.xyzw, r2.zzzz, r15.xyzw - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r16.wwww, r17.xyzx - mul r16.xyzw, r2.zzzz, r16.xyzw - else - mov r18.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r3.y, r0.z - endif - mad r17.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r17.xyz, r14.xzyx, -r17.xyzx - max r2.z, |r17.y|, |r17.x| - add r2.z, r2.z, l(-116.000000) - mul_sat r2.z, r2.z, l(0.125000) - add r7.w, |r17.z|, l(-52.000000) - mul_sat r7.w, r7.w, l(0.125000) - max r2.z, r2.z, r7.w - lt r7.w, r2.z, l(1.000000) - if_nz r7.w - mad r17.xyz, r14.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r19.xyz, r17.xyzx, cb0[211].xyzx - round_ni r19.xyz, r19.xyzx - mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r19.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r17.xyzx, t19.yzwx, s2, l(0.000000) - add r7.w, -r2.z, l(1.000000) - mul r1.y, r1.y, r7.w - mul r7.w, l(0.500000), cb0[211].y - mad r8.w, -cb0[211].y, l(0.500000), l(1.000000) - max r7.w, r7.w, r17.y - min r7.w, r8.w, r7.w - mul r17.w, r7.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t20.xyzw, s1, l(0.000000) - mad r3.y, r20.w, r1.y, r3.y - add r21.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t20.xyzw, s1, l(0.000000) - mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r19.yyyy, r21.xyzx - mov r21.w, r19.y - mad r18.xyzw, r21.xyzw, r1.yyyy, r18.xyzw - add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t20.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r19.xxxx, r17.xyzx - mov r17.w, r19.x - mad r15.xyzw, r17.xyzw, r1.yyyy, r15.xyzw - mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r19.wwww, r17.xyzx - mad r16.xyzw, r19.xyzw, r1.yyyy, r16.xyzw - endif - lt r1.y, l(0.000000), r2.z - if_nz r1.y - mad r14.xyz, r14.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r14.xyzx, cb0[211].xyzx - mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r17.xyz, r17.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r17.xyzx - mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r14.xyz, r19.xyzx, r14.xyzx - min r14.xyz, r17.xyzx, r14.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r14.xyzx, t21.yzwx, s2, l(0.000000) - add r1.y, -r0.z, l(1.000000) - mul r1.y, r1.y, r2.z - max r2.z, r19.y, r14.y - min r2.z, r17.y, r2.z - mul r14.w, r2.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r14.xwzx, t22.xyzw, s1, l(0.000000) - add r19.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r20.yyyy, r19.xyzx - mov r19.w, r20.y - mad r18.xyzw, r19.xyzw, r1.yyyy, r18.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t22.xyzw, s1, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r20.xxxx, r14.xyzx - mov r14.w, r20.x - mad r15.xyzw, r14.xyzw, r1.yyyy, r15.xyzw - mad r14.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r14.xyzx - mad r16.xyzw, r20.xyzw, r1.yyyy, r16.xyzw - mad r3.y, r17.w, r1.y, r3.y - endif - mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) - add r14.x, -r0.z, r1.y - add r0.z, r0.z, r1.y - mul r14.y, r0.z, l(0.500000) -else - mov r18.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r14.xy, l(0,1.000000,0,0) -endif -mul r17.xyzw, r14.yxyy, cb0[213].ywzx -mad r17.y, r17.y, l(0.500000), r17.x -mul r14.zw, r14.yyyx, cb0[213].wwwy -mad r17.x, r14.w, l(0.375000), r14.z -add r16.xyzw, r16.xyzw, r17.wyzx -mul r17.xyzw, r14.yxyy, cb0[214].ywzx -mad r17.y, r17.y, l(0.500000), r17.x -mul r14.zw, r14.yyyx, cb0[214].wwwy -mad r17.x, r14.w, l(0.375000), r14.z -add r15.xyzw, r15.xyzw, r17.wyzx -mul r17.xyzw, r14.yxyy, cb0[215].ywzx -mad r17.y, r17.y, l(0.500000), r17.x -mul r14.xy, r14.yxyy, cb0[215].wyww -mad r17.x, r14.y, l(0.375000), r14.x -add r14.xyzw, r17.wyzx, r18.xyzw -ge r17.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r17.y, r17.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r4.zwzz, t16.xyzw, s1, l(0.000000) - lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| - or r4.zw, r18.zzzw, r18.xxxy - or r0.z, r4.w, r4.z - if_nz r0.z - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mov r4.z, l(1.000000) - mov r4.w, r0.z - mov r1.y, l(0) - loop - ge r2.z, l(4.600000), r4.w - breakc_nz r2.z - iadd r2.z, r1.y, l(1) - mul r18.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - mov r4.zw, r18.xxxy - mov r1.y, r2.z - continue - endloop - mul r17.xyzw, r4.zzzz, r17.xyzw - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb4[3].x, cb4[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r18.x, r0.z, l(0.00390625000) - mov r18.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r18.xyxx, t15.zwxy, s1, l(0.000000) - mad r4.zw, r4.zzzw, cb4[2].xxxy, cb4[2].zzzw - mul r18.x, r4.z, l(3.54490781) - mul r18.yzw, r4.wwww, r17.yyzw - mul r0.z, r17.x, l(0.406976730) - exp r0.z, r0.z - mul r17.xyzw, r0.zzzz, r18.xyzw - mov r18.xyzw, r17.xyzw - mov r0.z, l(0) - loop - uge r2.z, r0.z, r1.y - breakc_nz r2.z - mul r19.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r2.z, r19.xyzw, r18.xyzw - dp2 r3.y, r19.yxyy, r18.xyxx - dp2 r4.z, r19.zxzz, r18.xzxx - dp2 r4.w, r19.wxww, r18.xwxx - iadd r7.w, r0.z, l(1) - mov r18.x, r2.z - mov r18.y, r3.y - mov r18.zw, r4.zzzw - mov r0.z, r7.w - continue - endloop - mul r17.xyzw, r18.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r18.xyzw, r16.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r17.xyzw, r18.xyzw - dp2 r1.y, r17.yxyy, r18.xyxx - dp2 r2.z, r17.zxzz, r18.xzxx - dp2 r3.y, r17.wxww, r18.xwxx - mul r18.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r4.z, r17.xyzw, r18.xyzw - dp2 r4.w, r17.yxyy, r18.xyxx - dp2 r7.w, r17.zxzz, r18.xzxx - dp2 r8.w, r17.wxww, r18.xwxx - mul r18.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r9.w, r17.xyzw, r18.xyzw - dp2 r10.x, r17.yxyy, r18.xyxx - dp2 r12.w, r17.zxzz, r18.xzxx - dp2 r17.x, r17.wxww, r18.xwxx - mul r16.w, r0.z, l(0.886226952) - mul r16.x, r3.y, l(-1.02332675) - mul r16.y, r1.y, l(-1.02332675) - mul r16.z, r2.z, l(1.02332675) - mul r15.x, r8.w, l(-1.02332675) - mul r15.yw, r4.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) - mul r15.z, r7.w, l(1.02332675) - mul r14.w, r9.w, l(0.886226952) - mul r14.x, r17.x, l(-1.02332675) - mul r14.y, r10.x, l(-1.02332675) - mul r14.z, r12.w, l(1.02332675) - endif -endif -dp3 r0.z, r16.xyzx, r2.xywx -add r0.z, r16.w, r0.z -max r16.x, r0.z, l(0.000000) -dp3 r0.z, r15.xyzx, r2.xywx -add r0.z, r15.w, r0.z -max r16.y, r0.z, l(0.000000) -dp3 r0.z, r14.xyzx, r2.xywx -add r0.z, r14.w, r0.z -max r16.z, r0.z, l(0.000000) -dp3 r0.z, -r8.xyzx, r13.xyzx -add r0.z, r0.z, r0.z -mad r2.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx -add r0.z, l(-1.000000), cb0[113].x -max r1.y, r11.z, l(0.001000) -log r1.y, r1.y -mad r1.y, -r1.y, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.y -mul r4.zw, r4.xxxy, cb1[0].wwww -round_ni r4.zw, r4.zzzw -add r1.y, |r3.w|, -cb1[2].y -round_ni r1.y, r1.y -add r2.w, l(-1.000000), cb1[1].x -max r3.y, r1.y, l(0.000000) -min r2.w, r2.w, r3.y -ge r1.y, r2.w, r1.y -mad r3.y, r4.w, cb1[0].x, r4.z -ftoi r3.y, r3.y -iadd r3.y, r3.y, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.y, r3.y, l(0), t0.xxxx -ftoi r2.w, r2.w -iadd r2.w, r2.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.w, r2.w, l(0), t0.xxxx -and r2.w, r2.w, r3.y -and r1.y, r1.y, r2.w -mul r14.xyz, r16.xyzx, cb0[111].xxxx -dp3 r2.w, r14.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r22.w, r2.w // Store ambient luminance for cubemap modulation -mov r5.w, l(1.000000) -mov r13.w, l(1.000000) -mov r14.xyz, l(0,0,0,0) -mov r3.y, l(1.000000) -mov r4.z, r1.y -mov r4.w, l(0) -loop - lt r7.w, l(0.010000), r3.y - ine r8.w, r4.z, l(0) - and r8.w, r7.w, r8.w - if_nz r8.w - firstbit_lo r8.w, r4.z - ishl r9.w, l(1), r8.w - xor r4.z, r4.z, r9.w - ishl r8.w, r8.w, l(3) - dp4 r15.x, cb1[r8.w + 6].xyzw, r5.xyzw - dp4 r15.y, cb1[r8.w + 7].xyzw, r5.xyzw - dp4 r15.z, cb1[r8.w + 8].xyzw, r5.xyzw - ge r17.xyz, cb1[r8.w + 5].xyzx, |r15.xyzx| - and r9.w, r17.y, r17.x - and r9.w, r17.z, r9.w - if_nz r9.w - mul r9.w, l(0.100000), cb1[r8.w + 5].x - mul r17.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r17.xy, r17.xyxx, r17.xyxx - add r18.xyz, -|r15.xyzx|, cb1[r8.w + 5].xyzx - mul r18.xyz, r18.xyzx, cb1[r8.w + 9].xyzx - eq r10.x, l(1.000000), cb1[r8.w + 10].x - if_nz r10.x - dp3 r19.x, cb1[r8.w + 6].xyzx, r2.xyzx - dp3 r19.y, cb1[r8.w + 7].xyzx, r2.xyzx - dp3 r19.z, cb1[r8.w + 8].xyzx, r2.xyzx - add r20.xyz, -r15.xyzx, cb1[r8.w + 5].xyzx - div r20.xyz, r20.xyzx, r19.xyzx - add r21.xyz, -r15.xyzx, -cb1[r8.w + 5].xyzx - div r21.xyz, r21.xyzx, r19.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx - min r10.x, r20.y, r20.x - min r10.x, r20.z, r10.x - mad r15.xyz, r19.xyzx, r10.xxxx, r15.xyzx - else - mov r15.xyz, r2.xyzx - endif - dp3 r10.x, r15.xyzx, r15.xyzx - rsq r10.x, r10.x - mul r15.xyz, r10.xxxx, r15.xyzx - lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx - lt r20.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r19.xyz, -r19.xyzx, r20.xyzx - itof r19.xyz, r19.xyzx - dp3 r10.x, r15.xyzx, r19.xyzx - div r15.xyz, r15.xyzx, r10.xxxx - lt r10.x, r15.z, l(0.000000) - add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r15.zw, r15.zzzw, r19.xxxy - movc r15.xy, r10.xxxx, r15.zwzz, r15.xyxx - dp4 r10.x, cb1[r8.w + 4].xyzw, r13.xyzw - max r10.x, r10.x, l(0.000000) - max r10.x, r10.x, l(0.000100) - min r11.z, r18.z, r18.y - min r11.z, r11.z, r18.x - add r12.w, r17.y, r17.x - mad r12.w, r17.z, r17.z, r12.w - mad r9.w, r9.w, r9.w, -r12.w - mul r9.w, r9.w, cb1[r8.w + 9].x - mul r9.w, r9.w, cb1[r8.w + 9].x - add r12.w, l(1.000000), -cb1[r8.w + 10].y - mul r9.w, r9.w, r12.w - mul r9.w, r9.w, l(100.000000) - mad_sat r9.w, r11.z, cb1[r8.w + 10].y, r9.w - mul r11.z, r9.w, cb1[r8.w + 10].w - mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r15.xy, r15.xyxx, cb1[1].wwww, cb1[2].wwww - mov r15.z, cb1[r8.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z - mul r15.xyz, r15.xyzx, cb1[r8.w + 9].wwww - div r12.w, r2.w, r10.x - min r12.w, |r12.w|, l(1.000000) - mad r12.w, r12.w, l(2.000000), r2.w - add r10.x, r10.x, l(2.000000) - div r10.x, r12.w, r10.x - add r10.x, r10.x, l(-1.000000) - mad r10.x, r10.x, cb0[112].w, l(1.000000) - mul r15.xyz, r10.xxxx, r15.xyzx - mul r15.xyz, r11.zzzz, r15.xyzx - mad r14.xyz, r15.xyzx, r3.yyyy, r14.xyzx - mad r8.w, -r9.w, cb1[r8.w + 10].w, l(1.000000) - mul r3.y, r3.y, r8.w - endif - mov r4.w, l(-1) - continue - else - mov r4.w, r7.w - break - endif - mov r4.w, r7.w -endloop -if_nz r4.w - dp3 r1.y, r2.xyzx, r2.xyzx - rsq r1.y, r1.y - mul r2.xyz, r1.yyyy, r2.xyzx - lt r5.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r2.xxyz - lt r15.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r5.xzw, -r5.xxzw, r15.xxyz - itof r5.xzw, r5.xxzw - dp3 r1.y, r2.xyzx, r5.xzwx - div r2.xyz, r2.xyzx, r1.yyyy - lt r1.y, r2.z, l(0.000000) - add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r4.zw, r4.zzzw, r5.xxxz - movc r2.xy, r1.yyyy, r4.zwzz, r2.xyxx - mov r13.w, l(1.000000) - dp4 r1.y, cb1[3].xyzw, r13.xyzw - max r1.y, r1.y, l(0.000000) - max r1.y, r1.y, l(0.000100) - mad r2.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r2.xy, r2.xyxx, cb1[1].wwww, cb1[2].wwww - mov r2.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r2.xyz, r2.xyzx, t5.xyzw, s3, r0.z - div r0.z, r2.w, r1.y - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r2.w - add r1.y, r1.y, l(2.000000) - div r0.z, r0.z, r1.y - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r2.xyz, r0.zzzz, r2.xyzx - mad r14.xyz, r2.xyzx, r3.yyyy, r14.xyzx -endif -mul r2.xyz, r14.xyzx, cb0[112].zzzz -mul r2.xyz, r2.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].y) -if_nz cb13[13].y - max r22.w, r22.w, l(0.000000) - min r22.w, r22.w, l(1.000000) - mad r22.w, r22.w, l(0.750000), l(0.250000) - mul r2.xyz, r2.xyzx, r22.wwww -endif -if_nz r3.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x - add r1.y, -r0.z, l(1.000000) - mul r13.xyz, r1.yyyy, r2.xyzx - mad r2.xyz, r5.xzwx, r0.zzzz, r13.xyzx -endif -mul r5.xzw, r9.xxyz, r16.xxyz -mul r5.xzw, r5.xxzw, cb0[111].xxxx -add r0.z, -r3.x, l(1.000000) -div r0.z, r0.z, r3.x -mul r1.xyz, r0.zzzz, r1.xzwx -mad r1.xyz, r1.xyzx, r10.yzwy, r10.yzwy -mul r1.xyz, r1.xyzx, r2.xyzx -mul r1.xyz, r11.xywx, r1.xyzx -mad r1.xyz, r5.xzwx, r12.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r6.xyzx -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r6.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r5.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xyz, r0.zzzz, cb0[155].xyzx -mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r2.xyz, r2.xyzx -dp3 r0.z, -r8.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.w, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.w -lt r2.w, l(0.000000), cb0[163].z -if_nz r2.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r8.xyzx, -r7.xyzx - add r2.w, r5.y, -cb0[44].y - lt r3.z, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.z - mul r0.x, r0.x, cb0[163].w - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.w - mul r4.z, r0.x, r3.z - mad r4.w, r4.z, r2.w, cb0[44].y - mad r2.w, -r4.z, r2.w, r2.w - mul r4.z, r2.w, cb0[159].z - max r4.z, r4.z, l(-127.000000) - mul r2.w, r2.w, cb0[162].x - max r2.w, r2.w, l(-127.000000) - add r5.x, r4.w, -cb0[159].x - mul r5.x, r5.x, cb0[159].z - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[159].y - lt r5.z, l(5.960464478E-08), |r4.z| - exp r5.w, -r4.z - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r4.z - mad r4.z, -r4.z, l(0.240226507), l(0.693147182) - movc r4.z, r5.z, r5.w, r4.z - add r4.w, r4.w, -cb0[162].z - mul r4.w, r4.w, cb0[162].x - max r4.w, r4.w, l(-127.000000) - exp r4.w, -r4.w - mul r4.w, r4.w, cb0[162].y - lt r5.z, l(5.960464478E-08), |r2.w| - exp r5.w, -r2.w - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r2.w - mad r2.w, -r2.w, l(0.240226507), l(0.693147182) - movc r2.w, r5.z, r5.w, r2.w - mul r2.w, r2.w, r4.w - mad r2.w, r5.x, r4.z, r2.w - mad r0.x, -r0.x, r3.z, l(1.000000) - mul r0.x, r6.w, r0.x - mul r0.x, r0.x, r2.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r4.zw, r6.wwww, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r4.z - add r0.x, r4.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r4.xxxy - mul r3.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r3.w|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r3.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r3.xyzx, t14.xyzw, s1, l(0.000000) - add r0.y, |r3.w|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r3.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r0.x, r0.x, r3.w -else - add r0.y, r5.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.w, cb0[44].y, -cb0[159].x - mul r2.w, r2.w, cb0[159].z - max r2.w, r2.w, l(-127.000000) - exp r2.w, -r2.w - mul r2.w, r2.w, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.w, r0.w, r0.y - mul r0.y, r6.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r6.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r3.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r2.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.w, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r2.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx - -// === Simplified Fog Modification (Anti-Banding) === -// Check if fog modification is enabled via cb13[12].y -lt r15.x, l(0.500000), cb13[12].y -if_nz r15.x - // r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter - // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density - add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx - - // Reduce fog inscatter intensity - mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - - // Modified fog blend: scene * boostedTrans + reducedInscatter - mad o0.xyz, r1.xyzx, r15.xyzx, r16.xyzx -else - // Original fog blend - mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx -endif -// === End Fog Modification === -dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xD88CD7C9.cso b/src/games/endfield/deferred-lighting/0xD88CD7C9.cso deleted file mode 100644 index 28637249513bdaf92f0a27f701bc5d1426868140..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26664 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xDC895E4A.cso b/src/games/endfield/deferred-lighting/0xDC895E4A.cso new file mode 100644 index 0000000000000000000000000000000000000000..afbd58b03049e54073d4d6be11983bbfb19c15bb GIT binary patch literal 49444 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xE322C21D.cso b/src/games/endfield/deferred-lighting/0xE322C21D.cso deleted file mode 100644 index a93b11a79e9385bac2ecf3a221d271079d2bc273..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49808 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 G-2VkHTIB=) literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xE9FA7952.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xE9FA7952.ps_5_0.asm new file mode 100644 index 0000000000..e8f2ab16b1 --- /dev/null +++ b/src/games/endfield/deferred-lighting/0xE9FA7952.ps_5_0.asm @@ -0,0 +1,882 @@ +ps_5_0 +dcl_globalFlags refactoringAllowed +dcl_constantbuffer CB0[239], immediateIndexed +dcl_constantbuffer CB1[259], dynamicIndexed +dcl_constantbuffer CB2[5], immediateIndexed +dcl_constantbuffer CB3[4], immediateIndexed +dcl_constantbuffer CB13[15], immediateIndexed +dcl_sampler s0, mode_default +dcl_sampler s1, mode_default +dcl_sampler s2, mode_default +dcl_sampler s3, mode_default +dcl_resource_structured t0, 4 +dcl_resource_texture2d (float,float,float,float) t1 +dcl_resource_texture2d (float,float,float,float) t2 +dcl_resource_texture2d (float,float,float,float) t3 +dcl_resource_texture2d (float,float,float,float) t4 +dcl_resource_texture2darray (float,float,float,float) t5 +dcl_resource_texture2d (float,float,float,float) t6 +dcl_resource_texture2d (float,float,float,float) t7 +dcl_resource_texture2d (float,float,float,float) t8 +dcl_resource_texture2d (float,float,float,float) t9 +dcl_resource_texture3d (float,float,float,float) t10 +dcl_resource_texture2d (float,float,float,float) t11 +dcl_resource_texture2d (float,float,float,float) t12 +dcl_resource_texture3d (float,float,float,float) t13 +dcl_resource_texture3d (float,float,float,float) t14 +dcl_resource_texture3d (float,float,float,float) t15 +dcl_resource_texture3d (float,float,float,float) t16 +dcl_resource_texture3d (float,float,float,float) t17 +dcl_resource_texture3d (float,float,float,float) t18 +dcl_resource_texture2d (float,float,float,float) t19 +dcl_resource_texture2d (float,float,float,float) t20 +dcl_resource_texture2d (float,float,float,float) t21 +dcl_resource_texture2d (float,float,float,float) t22 +dcl_input_ps_siv linear noperspective v0.xy, position +dcl_input_ps linear v1.xy +dcl_output o0.xyzw +dcl_temps 30 +ftou r0.xy, v0.xyxx +mov r0.z, l(0) +ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t20.xyzw +ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t21.xyzw +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| +add r3.y, -r1.w, l(1.000000) +lt r1.w, r3.y, l(0.000000) +ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) +movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) +mul r4.xy, r4.xyxx, r4.zwzz +movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx +dp3 r1.w, r3.xyzx, r3.xyzx +rsq r1.w, r1.w +mul r3.xyz, r1.wwww, r3.xyzx +utof r2.xy, r0.xyxx +mul r4.xy, v0.xyxx, cb0[82].zwzz +mad r4.zw, r4.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) +add r5.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) +mul r5.xy, r5.xyxx, cb0[82].zwzz +sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xyxx, t1.yzwx, s0, l(0.000000) +mul r5.xyzw, -r4.wwww, cb0[25].xyzw +mad r5.xyzw, cb0[24].xyzw, r4.zzzz, r5.xyzw +mad r5.xyzw, cb0[26].xyzw, r1.wwww, r5.xyzw +add r5.xyzw, r5.xyzw, cb0[27].xyzw +div r5.xyz, r5.xyzx, r5.wwww +mul r1.w, r5.y, cb0[1].z +mad r1.w, cb0[0].z, r5.x, r1.w +mad r1.w, cb0[2].z, r5.z, r1.w +add r1.w, r1.w, cb0[3].z +eq r2.w, l(0.000000), cb0[86].w +add r6.xyz, -r5.xyzx, cb0[44].xyzx +mov r7.x, cb0[0].z +mov r7.y, cb0[1].z +mov r7.z, cb0[2].z +movc r6.xyz, r2.wwww, r6.xyzx, r7.xyzx +dp3 r2.w, r6.xyzx, r6.xyzx +max r4.z, r2.w, l(0.000000) +rsq r4.z, r4.z +mul r8.xyz, r4.zzzz, r6.xyzx +mul r4.w, r2.w, r4.z +lt r6.w, l(0.000488), cb0[238].x +if_nz r6.w + sample_b_indexable(texture2d)(float,float,float,float) r9.xy, v1.xyxx, t19.xyzw, s1, cb0[108].x +else + mov r9.xy, l(1.000000,1.000000,0,0) +endif +min r7.w, r9.y, r9.x +add r1.z, r1.z, l(-0.050000) +mul_sat r1.z, r1.z, l(1.052600) +add r8.w, r9.y, l(-1.000000) +mad r10.x, r1.z, r8.w, l(1.000000) +add r10.y, -r1.z, l(1.000000) +movc r9.yz, r6.wwww, r10.xxyx, l(0,1.000000,1.000000,0) +min r1.z, r2.z, r9.y +add r6.w, -r1.z, r2.z +mad r1.z, r7.w, r6.w, r1.z +add r2.z, -r1.z, r2.z +mad r10.z, r9.x, r2.z, r1.z +ld_indexable(texture2d)(float,float,float,float) r11.xyz, r0.xyzz, t22.xyzw +add r1.z, -r9.z, l(1.000000) +mad r1.z, r7.w, r1.z, r9.z +add r2.z, -r1.z, l(1.000000) +mad r1.z, r9.x, r2.z, r1.z +mul r9.xyz, r1.zzzz, r11.xyzx +mul r12.xyz, r1.xxxx, r9.xyzx +mad r11.xyz, r11.xyzx, r1.zzzz, -r12.xyzx +mad r1.z, -r1.x, l(0.040000), l(0.040000) +mad r9.xyz, r9.xyzx, r1.xxxx, r1.zzzz +dp3 r1.x, r3.xyzx, r8.xyzx +max r12.x, r1.x, l(0.000000) +mul r13.y, r10.z, r10.z +mul r14.x, r12.x, r12.x +mul r14.z, r12.x, r14.x +mul r1.x, r13.y, r13.y +mul r13.z, r13.y, r1.x +mov r12.yzw, l(0,0.036546,9.063200,0.990440) +dp2 r15.x, l(3.327070, 1.000000, 0.000000, 0.000000), r12.xyxx +dp2 r15.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r12.xzxx +mov r13.x, l(1.000000) +dp2 r1.z, r15.xyxx, r13.xyxx +mov r14.yw, l(0,9.044010,0,1.000000) +dp3 r15.x, l(3.596850, -1.367720, 1.000000, 0.000000), r14.xzwx +dp3 r15.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r14.xyzx +mov r16.x, l(5.565890) +mov r16.yz, r14.xxzx +dp3 r15.z, l(1.000000, 19.788601, -20.212299, 0.000000), r16.xyzx +dp3 r2.z, r15.xyzx, r13.xyzx +div r1.z, r1.z, r2.z +dp2 r15.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r12.xwxx +mov r14.x, l(1.296780) +mov r14.y, r12.x +dp2 r15.y, l(1.000000, -0.755907, 0.000000, 0.000000), r14.xyxx +dp2 r2.z, r15.xyxx, r13.xyxx +dp3 r15.x, l(2.923380, 59.418800, 1.000000, 0.000000), r14.yzwy +mov r14.xw, l(20.322500,0,0,121.563004) +dp3 r15.y, l(1.000000, -27.030199, 222.591995, 0.000000), r14.xyzx +dp3 r15.z, l(626.130005, 316.627014, 1.000000, 0.000000), r14.yzwy +dp3 r6.w, r15.xyzx, r13.xyzx +div r2.z, r2.z, r6.w +mad r12.yzw, r9.xxyz, r1.zzzz, r2.zzzz +add r1.z, r1.z, r2.z +ld_indexable(texture2d)(float,float,float,float) r13.x, r0.xyzz, t6.xyzw +lt r0.z, l(0.001000), r13.x +if_nz r0.z + dp3 r0.z, -r8.xyzx, r3.xyzx + add r0.z, r0.z, r0.z + mad r14.xyz, r3.xyzx, -r0.zzzz, -r8.xyzx + dp3 r0.z, -cb2[0].xyzx, r14.xyzx + mad r15.xyz, cb2[0].xyzx, r0.zzzz, r14.xyzx + lt r0.z, r0.z, cb2[4].z + dp3 r2.z, r15.xyzx, r15.xyzx + max r2.z, r2.z, l(0.000061) + rsq r2.z, r2.z + mul r15.xyz, r2.zzzz, r15.xyzx + mul r15.xyz, r15.xyzx, cb2[4].yyyy + mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx + dp3 r2.z, r15.xyzx, r15.xyzx + rsq r2.z, r2.z + mul r15.xyz, r2.zzzz, r15.xyzx + movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx + mad r6.xyz, r6.xyzx, r4.zzzz, r14.xyzx + dp3 r0.z, r6.xyzx, r6.xyzx + max r0.z, r0.z, l(0.000061) + rsq r0.z, r0.z + mul r6.xyz, r0.zzzz, r6.xyzx + dp3_sat r10.x, r14.xyzx, r3.xyzx + dp3_sat r0.z, r3.xyzx, r6.xyzx + min r10.y, r12.x, l(1.000000) + mad r2.z, r0.z, r1.x, -r0.z + mad r0.z, r2.z, r0.z, l(1.000000) + dp3_sat r2.z, r8.xyzx, r6.xyzx + add r2.z, -r2.z, l(1.000000) + mul r6.x, r2.z, r2.z + mul r6.x, r6.x, r6.x + mul r6.y, r2.z, r6.x + add r6.z, -r10.z, l(1.000000) + mad r6.w, -r6.z, l(0.383026), l(-0.076195) + mad r6.w, r6.z, r6.w, l(1.049970) + mad r6.z, r6.z, r6.w, l(0.409255) + min r6.z, r6.z, l(0.999000) + add r6.w, -r6.z, l(1.000000) + add r14.xyz, -r9.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r14.xyz, r14.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r9.xyzx + mad r2.z, -r6.x, r2.z, l(1.000000) + mad r15.xyz, r9.xyzx, r2.zzzz, r6.yyyy + mul r0.z, r0.z, r0.z + div r0.z, r1.x, r0.z + mad r6.xy, -r10.yxyy, r1.xxxx, r10.yxyy + mad r6.xy, r6.xyxx, r10.yxyy, r1.xxxx + sqrt r6.xy, r6.xyxx + mul r6.xy, r6.xyxx, r10.xyxx + add r1.x, r6.y, r6.x + add r1.x, r1.x, l(0.000100) + div r1.x, l(0.500000), r1.x + mul r0.z, r0.z, r1.x + mul r15.xyz, r0.zzzz, r15.xyzx + min r15.xyz, r15.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) + mad r16.xyzw, r10.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r16.xyxx, t8.yzxw, s1, l(0.000000) + sample_l_indexable(texture2d)(float,float,float,float) r1.x, r16.zwzz, t8.xyzw, s1, l(0.000000) + mul r0.z, r0.z, r1.x + mul r0.z, r6.z, r0.z + div r0.z, r0.z, r6.w + mul r6.xyz, r14.xyzx, r14.xyzx + mul r6.xyz, r0.zzzz, r6.xyzx + mad r14.xyz, -r14.xyzx, r6.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) + div r6.xyz, r6.xyzx, r14.xyzx + add r6.xyz, r6.xyzx, r15.xyzx + mul r6.xyz, r6.xyzx, cb2[4].xxxx + max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + min r6.xyz, r6.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) + mul r14.xyz, r10.xxxx, r11.xyzx + mad r6.xyz, r6.xyzx, r10.xxxx, r14.xyzx + mul r6.xyz, r6.xyzx, cb2[1].xyzx + mov r13.y, l(0.500000) + sample_b_indexable(texture2d)(float,float,float,float) r10.xyw, r13.xyxx, t7.xywz, s1, cb0[108].x + add r0.z, -r13.x, l(1.000000) + mad r10.xyw, r6.xyxz, r10.xyxw, -r6.xyxz + mad r6.xyz, r0.zzzz, r10.xywx, r6.xyzx + sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t9.yzxw, s1, l(0.000000) + min r0.z, r0.z, l(1.000000) + mul r6.xyz, r0.zzzz, r6.xyzx +else + mov r6.xyz, l(0,0,0,0) +endif +ne r10.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx +if_nz r10.x + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x + min r0.z, r1.y, r0.z + add r1.x, r0.z, r12.x + mad r2.z, r10.z, l(-16.000000), l(-1.000000) + exp r2.z, r2.z + log r1.x, |r1.x| + mul r1.x, r1.x, r2.z + exp r1.x, r1.x + add r1.x, r0.z, r1.x + add r1.x, r1.x, l(-1.000000) + mov_sat r13.xyz, r1.xxxx + mad r14.xyz, r11.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r11.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + mad r14.xyz, r11.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx + add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) + mul r14.xyz, r0.zzzz, r14.xyzx + max r14.xyz, r0.zzzz, r14.xyzx +else + mov r13.xyz, r1.yyyy + mov r14.xyz, r1.yyyy +endif +mad r15.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx +round_z r0.z, cb0[216].x +mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx +dp2 r0.z, r1.xyxx, l(0.067111, 0.005837, 0.000000, 0.000000) +frc r0.z, r0.z +mul r0.z, r0.z, l(52.982918) +frc r0.z, r0.z +mad r0.z, r0.z, l(2.000000), l(-1.000000) +mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx +mad r16.xyz, cb0[6].xzyx, -cb0[216].wwww, cb0[214].xzyx +add r16.xyz, r15.xzyx, -r16.xyzx +max r0.z, |r16.y|, |r16.x| +add r0.z, r0.z, l(-464.000000) +mul_sat r0.z, r0.z, l(0.031250) +add r1.x, |r16.z|, l(-208.000000) +mul_sat r1.x, r1.x, l(0.031250) +max r0.z, r0.z, r1.x +ne r1.x, l(0.000000), cb0[214].w +lt r1.y, r0.z, l(1.000000) +and r1.x, r1.y, r1.x +if_nz r1.x + mad r16.xyz, cb0[6].xzyx, -cb0[216].yyyy, cb0[214].xzyx + add r16.xyz, r15.xzyx, -r16.xyzx + max r1.x, |r16.y|, |r16.x| + add r1.x, r1.x, l(-29.000000) + add r1.y, |r16.z|, l(-13.000000) + mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) + max r1.x, r1.y, r1.x + lt r1.y, r1.x, l(1.000000) + if_nz r1.y + mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r17.xyz, r16.xyzx, cb0[215].xyzx + round_ni r17.xyz, r17.xyzx + mad r16.xyz, r16.xyzx, cb0[215].xyzx, -r17.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t13.yzwx, s2, l(0.000000) + add r1.y, -r1.x, l(1.000000) + mul r2.z, l(0.500000), cb0[215].y + mad r6.w, -cb0[215].y, l(0.500000), l(1.000000) + max r2.z, r2.z, r16.y + min r2.z, r6.w, r2.z + mul r16.w, r2.z, l(0.333333) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t14.xyzw, s1, l(0.000000) + mad r2.z, r18.w, r1.y, r0.z + add r19.xyz, r16.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t14.xyzw, s1, l(0.000000) + mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r19.xyz, r17.yyyy, r19.xyzx + mov r19.w, r17.y + mul r19.xyzw, r1.yyyy, r19.xyzw + add r16.xyz, r16.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t14.xyzw, s1, l(0.000000) + mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r16.xyz, r17.xxxx, r16.xyzx + mov r16.w, r17.x + mul r16.xyzw, r1.yyyy, r16.xyzw + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r17.xyz, r17.wwww, r18.xyzx + mul r17.xyzw, r1.yyyy, r17.xyzw + else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r2.z, r0.z + endif + mad r18.xyz, cb0[6].xzyx, -cb0[216].zzzz, cb0[214].xzyx + add r18.xyz, r15.xzyx, -r18.xyzx + max r1.y, |r18.y|, |r18.x| + add r1.y, r1.y, l(-116.000000) + mul_sat r1.y, r1.y, l(0.125000) + add r6.w, |r18.z|, l(-52.000000) + mul_sat r6.w, r6.w, l(0.125000) + max r1.y, r1.y, r6.w + lt r6.w, r1.y, l(1.000000) + if_nz r6.w + mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r20.xyz, r18.xyzx, cb0[215].xyzx + round_ni r20.xyz, r20.xyzx + mad r18.xyz, r18.xyzx, cb0[215].xyzx, -r20.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t15.yzwx, s2, l(0.000000) + add r6.w, -r1.y, l(1.000000) + mul r1.x, r1.x, r6.w + mul r6.w, l(0.500000), cb0[215].y + mad r7.w, -cb0[215].y, l(0.500000), l(1.000000) + max r6.w, r6.w, r18.y + min r6.w, r7.w, r6.w + mul r18.w, r6.w, l(0.333333) + sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t16.xyzw, s1, l(0.000000) + mad r2.z, r21.w, r1.x, r2.z + add r22.xyz, r18.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t16.xyzw, s1, l(0.000000) + mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r22.xyz, r20.yyyy, r22.xyzx + mov r22.w, r20.y + mad r19.xyzw, r22.xyzw, r1.xxxx, r19.xyzw + add r18.xyz, r18.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t16.xyzw, s1, l(0.000000) + mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r18.xyz, r20.xxxx, r18.xyzx + mov r18.w, r20.x + mad r16.xyzw, r18.xyzw, r1.xxxx, r16.xyzw + mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r20.wwww, r18.xyzx + mad r17.xyzw, r20.xyzw, r1.xxxx, r17.xyzw + endif + lt r1.x, l(0.000000), r1.y + if_nz r1.x + mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) + mul r18.xyz, r15.xyzx, cb0[215].xyzx + mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[215].xyzx + round_ni r18.xyz, r18.xyzx + mad r15.xyz, r15.xyzx, cb0[215].xyzx, -r18.xyzx + mad r18.xyz, -cb0[215].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) + max r15.xyz, r20.xyzx, r15.xyzx + min r15.xyz, r18.xyzx, r15.xyzx + sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) + add r1.x, -r0.z, l(1.000000) + mul r1.x, r1.x, r1.y + max r1.y, r20.y, r15.y + min r1.y, r18.y, r1.y + mul r15.w, r1.y, l(0.333333) + sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) + add r20.xyz, r15.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t18.xyzw, s1, l(0.000000) + mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r20.xyz, r21.yyyy, r20.xyzx + mov r20.w, r21.y + mad r19.xyzw, r20.xyzw, r1.xxxx, r19.xyzw + add r15.xyz, r15.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) + sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) + mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r15.xyz, r21.xxxx, r15.xyzx + mov r15.w, r21.x + mad r16.xyzw, r15.xyzw, r1.xxxx, r16.xyzw + mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) + mul r21.xyz, r21.wwww, r15.xyzx + mad r17.xyzw, r21.xyzw, r1.xxxx, r17.xyzw + mad r2.z, r18.w, r1.x, r2.z + endif + mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) + add r15.x, -r0.z, r1.x + add r0.z, r0.z, r1.x + mul r15.y, r0.z, l(0.500000) +else + mov r19.xyzw, l(0,0,0,0) + mov r16.xyzw, l(0,0,0,0) + mov r17.xyzw, l(0,0,0,0) + mov r15.xy, l(0,1.000000,0,0) +endif +mul r18.xyzw, r15.yxyy, cb0[217].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r1.xy, r15.yxyy, cb0[217].wyww +mad r18.x, r1.y, l(0.375000), r1.x +add r17.xyzw, r17.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[218].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r1.xy, r15.yxyy, cb0[218].wyww +mad r18.x, r1.y, l(0.375000), r1.x +add r16.xyzw, r16.xyzw, r18.wyzx +mul r18.xyzw, r15.yxyy, cb0[219].ywzx +mad r18.y, r18.y, l(0.500000), r18.x +mul r1.xy, r15.yxyy, cb0[219].wyww +mad r18.x, r1.y, l(0.375000), r1.x +add r15.xyzw, r18.wyzx, r19.xyzw +ge r1.xy, r4.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) +and r0.z, r1.y, r1.x +if_nz r0.z + sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.xyxx, t12.xyzw, s1, l(0.000000) + lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| + or r1.xy, r19.zwzz, r19.xyxx + or r0.z, r1.y, r1.x + if_nz r0.z + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mov r1.x, l(1.000000) + mov r1.y, r0.z + mov r2.z, l(0) + loop + ge r4.x, l(4.600000), r1.y + breakc_nz r4.x + iadd r4.x, r2.z, l(1) + mul r10.xw, r1.xxxy, l(0.500000, 0.000000, 0.000000, 0.500000) + mov r1.xy, r10.xwxx + mov r2.z, r4.x + continue + endloop + mul r18.xyzw, r1.xxxx, r18.xyzw + dp3 r0.z, r18.yzwy, r18.yzwy + sqrt r0.z, r0.z + mad r0.z, r0.z, cb3[3].x, cb3[3].y + mad r0.z, r0.z, l(255.000000), l(0.500000) + mul r1.x, r0.z, l(0.003906) + mov r1.y, l(0.500000) + sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t11.xyzw, s1, l(0.000000) + mad r1.xy, r1.xyxx, cb3[2].xyxx, cb3[2].zwzz + mul r19.x, r1.x, l(3.544908) + mul r19.yzw, r1.yyyy, r18.yyzw + mul r0.z, r18.x, l(0.406977) + exp r0.z, r0.z + mul r18.xyzw, r0.zzzz, r19.xyzw + mov r19.xyzw, r18.xyzw + mov r0.z, l(0) + loop + uge r1.x, r0.z, r2.z + breakc_nz r1.x + mul r20.xyzw, r19.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) + dp4 r1.x, r20.xyzw, r19.xyzw + dp2 r1.y, r20.yxyy, r19.xyxx + dp2 r4.x, r20.zxzz, r19.xzxx + dp2 r4.y, r20.wxww, r19.xwxx + iadd r6.w, r0.z, l(1) + mov r19.xy, r1.xyxx + mov r19.zw, r4.xxxy + mov r0.z, r6.w + continue + endloop + mul r18.xyzw, r19.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) + mul r19.xyzw, r17.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) + dp4 r0.z, r18.xyzw, r19.xyzw + dp2 r1.x, r18.yxyy, r19.xyxx + dp2 r1.y, r18.zxzz, r19.xzxx + dp2 r2.z, r18.wxww, r19.xwxx + mul r19.xyzw, r16.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) + dp4 r4.x, r18.xyzw, r19.xyzw + dp2 r4.y, r18.yxyy, r19.xyxx + dp2 r6.w, r18.zxzz, r19.xzxx + dp2 r7.w, r18.wxww, r19.xwxx + mul r19.xyzw, r15.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) + dp4 r8.w, r18.xyzw, r19.xyzw + dp2 r9.w, r18.yxyy, r19.xyxx + dp2 r10.x, r18.zxzz, r19.xzxx + dp2 r10.w, r18.wxww, r19.xwxx + mul r17.w, r0.z, l(0.886227) + mul r17.x, r2.z, l(-1.023327) + mul r17.yz, r1.xxyx, l(0.000000, -1.023327, 1.023327, 0.000000) + mul r16.x, r7.w, l(-1.023327) + mul r16.yw, r4.yyyx, l(0.000000, -1.023327, 0.000000, 0.886227) + mul r16.z, r6.w, l(1.023327) + mul r15.w, r8.w, l(0.886227) + mul r15.y, r9.w, l(-1.023327) + mul r15.xz, r10.wwxw, l(-1.023327, 0.000000, 1.023327, 0.000000) + endif +endif +dp3 r0.z, r17.xyzx, r3.xyzx +add r0.z, r17.w, r0.z +max r17.x, r0.z, l(0.000000) +dp3 r0.z, r16.xyzx, r3.xyzx +add r0.z, r16.w, r0.z +max r17.y, r0.z, l(0.000000) +dp3 r0.z, r15.xyzx, r3.xyzx +add r0.z, r15.w, r0.z +max r17.z, r0.z, l(0.000000) +dp3 r0.z, -r8.xyzx, r3.xyzx +add r0.z, r0.z, r0.z +mad r15.xyz, r3.xyzx, -r0.zzzz, -r8.xyzx +add r0.z, l(-1.000000), cb0[113].x +max r1.x, r10.z, l(0.001000) +log r1.x, r1.x +mad r1.x, -r1.x, l(1.200000), l(1.000000) +add r0.z, r0.z, -r1.x +mul r1.xy, r2.xyxx, cb1[0].wwww +round_ni r1.xy, r1.xyxx +add r2.z, |r1.w|, -cb1[2].y +round_ni r2.z, r2.z +add r4.x, l(-1.000000), cb1[1].x +max r4.y, r2.z, l(0.000000) +min r4.x, r4.x, r4.y +ge r2.z, r4.x, r2.z +mad r1.x, r1.y, cb1[0].x, r1.x +ftoi r1.x, r1.x +iadd r1.x, r1.x, cb0[110].z +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx +ftoi r1.y, r4.x +iadd r1.y, r1.y, cb0[110].w +ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx +and r1.x, r1.y, r1.x +and r1.x, r1.x, r2.z +mul r10.xzw, r17.xxyz, cb0[111].xxxx +dp3 r1.y, r10.xzwx, l(0.212673, 0.715152, 0.072175, 0.000000) +mov r29.x, r1.y // Store ambient luminance for cubemap modulation +mov r5.w, l(1.000000) +mov r3.w, l(1.000000) +mov r10.xzw, l(0,0,0,0) +mov r2.z, l(1.000000) +mov r4.x, r1.x +mov r4.y, l(0) +loop + lt r6.w, l(0.010000), r2.z + ine r7.w, r4.x, l(0) + and r7.w, r6.w, r7.w + if_nz r7.w + firstbit_lo r7.w, r4.x + ishl r8.w, l(1), r7.w + xor r4.x, r4.x, r8.w + ishl r7.w, r7.w, l(3) + dp4 r16.x, cb1[r7.w + 6].xyzw, r5.xyzw + dp4 r16.y, cb1[r7.w + 7].xyzw, r5.xyzw + dp4 r16.z, cb1[r7.w + 8].xyzw, r5.xyzw + ge r18.xyz, cb1[r7.w + 5].xyzx, |r16.xyzx| + and r8.w, r18.y, r18.x + and r8.w, r18.z, r8.w + if_nz r8.w + mul r8.w, l(0.100000), cb1[r7.w + 5].x + mul r18.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) + mul r18.xy, r18.xyxx, r18.xyxx + add r19.xyz, -|r16.xyzx|, cb1[r7.w + 5].xyzx + mul r19.xyz, r19.xyzx, cb1[r7.w + 9].xyzx + eq r9.w, l(1.000000), cb1[r7.w + 10].x + if_nz r9.w + dp3 r20.x, cb1[r7.w + 6].xyzx, r15.xyzx + dp3 r20.y, cb1[r7.w + 7].xyzx, r15.xyzx + dp3 r20.z, cb1[r7.w + 8].xyzx, r15.xyzx + add r21.xyz, -r16.xyzx, cb1[r7.w + 5].xyzx + div r21.xyz, r21.xyzx, r20.xyzx + add r22.xyz, -r16.xyzx, -cb1[r7.w + 5].xyzx + div r22.xyz, r22.xyzx, r20.xyzx + lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx + movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx + min r9.w, r21.y, r21.x + min r9.w, r21.z, r9.w + mad r16.xyz, r20.xyzx, r9.wwww, r16.xyzx + else + mov r16.xyz, r15.xyzx + endif + dp3 r9.w, r16.xyzx, r16.xyzx + rsq r9.w, r9.w + mul r16.xyz, r9.wwww, r16.xyzx + lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx + lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r20.xyz, -r20.xyzx, r21.xyzx + itof r20.xyz, r20.xyzx + dp3 r9.w, r16.xyzx, r20.xyzx + div r16.xyz, r16.xyzx, r9.wwww + lt r9.w, r16.z, l(0.000000) + add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) + mul r16.zw, r16.zzzw, r20.xxxy + movc r16.xy, r9.wwww, r16.zwzz, r16.xyxx + dp4 r9.w, cb1[r7.w + 4].xyzw, r3.xyzw + max r9.w, r9.w, l(0.000000) + max r9.w, r9.w, l(0.000100) + min r11.w, r19.z, r19.y + min r11.w, r11.w, r19.x + add r12.x, r18.y, r18.x + mad r12.x, r18.z, r18.z, r12.x + mad r8.w, r8.w, r8.w, -r12.x + mul r8.w, r8.w, cb1[r7.w + 9].x + mul r8.w, r8.w, cb1[r7.w + 9].x + add r12.x, l(1.000000), -cb1[r7.w + 10].y + mul r8.w, r8.w, r12.x + mul r8.w, r8.w, l(100.000000) + mad_sat r8.w, r11.w, cb1[r7.w + 10].y, r8.w + mul r11.w, r8.w, cb1[r7.w + 10].w + mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww + mov r16.z, cb1[r7.w + 5].w + sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z + mul r16.xyz, r16.xyzx, cb1[r7.w + 9].wwww + div r12.x, r1.y, r9.w + min r12.x, |r12.x|, l(1.000000) + mad r12.x, r12.x, l(2.000000), r1.y + add r9.w, r9.w, l(2.000000) + div r9.w, r12.x, r9.w + add r9.w, r9.w, l(-1.000000) + mad r9.w, r9.w, cb0[112].w, l(1.000000) + mul r16.xyz, r9.wwww, r16.xyzx + mul r16.xyz, r11.wwww, r16.xyzx + mad r10.xzw, r16.xxyz, r2.zzzz, r10.xxzw + mad r7.w, -r8.w, cb1[r7.w + 10].w, l(1.000000) + mul r2.z, r2.z, r7.w + endif + mov r4.y, l(-1) + continue + else + mov r4.y, r6.w + break + endif + mov r4.y, r6.w +endloop +if_nz r4.y + dp3 r1.x, r15.xyzx, r15.xyzx + rsq r1.x, r1.x + mul r5.xzw, r1.xxxx, r15.xxyz + lt r15.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r5.xzwx + lt r16.xyz, r5.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) + iadd r15.xyz, -r15.xyzx, r16.xyzx + itof r15.xyz, r15.xyzx + dp3 r1.x, r5.xzwx, r15.xyzx + div r5.xzw, r5.xxzw, r1.xxxx + lt r1.x, r5.w, l(0.000000) + add r4.xy, -|r5.zxzz|, l(1.000000, 1.000000, 0.000000, 0.000000) + mul r4.xy, r4.xyxx, r15.xyxx + movc r4.xy, r1.xxxx, r4.xyxx, r5.xzxx + mov r3.w, l(1.000000) + dp4 r1.x, cb1[3].xyzw, r3.xyzw + max r1.x, r1.x, l(0.000000) + max r1.x, r1.x, l(0.000100) + mad r3.xy, r4.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) + mad r3.xy, r3.xyxx, cb1[1].wwww, cb1[2].wwww + mov r3.z, l(0) + sample_l_indexable(texture2darray)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s3, r0.z + div r0.z, r1.y, r1.x + min r0.z, |r0.z|, l(1.000000) + mad r0.z, r0.z, l(2.000000), r1.y + add r1.x, r1.x, l(2.000000) + div r0.z, r0.z, r1.x + add r0.z, r0.z, l(-1.000000) + mad r0.z, r0.z, cb0[112].w, l(1.000000) + mul r3.xyz, r0.zzzz, r3.xyzx + mad r10.xzw, r3.xxyz, r2.zzzz, r10.xxzw +endif +mul r3.xyz, r10.xzwx, cb0[112].zzzz +mul r3.xyz, r3.xyzx, cb0[111].yyyy +// Cubemap ambient link modulation (cb13[13].y) +if_nz cb13[13].y + max r29.x, r29.x, l(0.000000) + min r29.x, r29.x, l(1.000000) + mad r29.x, r29.x, l(0.750000), l(0.250000) + mul r3.xyz, r3.xyzx, r29.xxxx +endif +if_nz r10.y + sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x + sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x + add r1.x, -r0.z, l(1.000000) + mul r10.xyz, r1.xxxx, r3.xyzx + mad r3.xyz, r5.xzwx, r0.zzzz, r10.xyzx +endif +mul r5.xzw, r11.xxyz, r17.xxyz +mul r5.xzw, r5.xxzw, cb0[111].xxxx +add r0.z, -r1.z, l(1.000000) +div r0.z, r0.z, r1.z +mul r1.xyz, r0.zzzz, r9.xyzx +mad r1.xyz, r1.xyzx, r12.yzwy, r12.yzwy +mul r1.xyz, r1.xyzx, r3.xyzx +mul r1.xyz, r13.xyzx, r1.xyzx +mad r1.xyz, r5.xzwx, r14.xyzx, r1.xyzx +add r1.xyz, r1.xyzx, r6.xyzx +mad r0.z, r5.y, cb0[156].w, cb0[157].w +max r0.z, r0.z, l(0.010000) +mad r2.z, r4.w, cb0[154].w, -cb0[153].w +max r2.z, r2.z, l(0.000000) +mul r3.x, r0.z, l(-1.442695) +exp r3.x, r3.x +add r3.x, -r3.x, l(1.000000) +div r0.z, r3.x, r0.z +mad r3.x, r5.y, cb0[156].w, cb0[158].w +mul r3.x, r3.x, l(1.442695) +exp r3.x, r3.x +mul r0.z, r0.z, r3.x +mul r0.z, r0.z, -r2.z +mul r3.xyz, r0.zzzz, cb0[155].xyzx +mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) +exp r3.xyz, r3.xyzx +dp3 r0.z, -r8.xyzx, cb0[154].xyzx +mad r2.z, cb0[155].w, cb0[155].w, l(1.000000) +dp2 r3.w, r0.zzzz, cb0[155].wwww +add r2.z, r2.z, -r3.w +lt r3.w, l(0.000000), cb0[165].z +if_nz r3.w + and r0.w, l(7), cb0[108].w + imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) + imad r0.x, r0.y, r0.w, r0.x + imad r0.y, r0.w, r0.x, r0.y + imad r0.w, r0.x, r0.y, r0.w + imad r4.x, r0.y, r0.w, r0.x + dp3 r0.x, -r8.xyzx, -r7.xyzx + add r3.w, r5.y, -cb0[44].y + lt r5.x, l(0.000000), r0.x + div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x + and r0.x, r0.x, r5.x + mul r0.x, r0.x, cb0[165].w + div r5.x, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w + mul r5.z, r0.x, r5.x + mad r5.w, r5.z, r3.w, cb0[44].y + mad r3.w, -r5.z, r3.w, r3.w + mad r0.x, -r0.x, r5.x, l(1.000000) + mul r5.x, r4.w, r0.x + mul r5.z, r3.w, cb0[159].z + max r5.z, r5.z, l(-127.000000) + mul r3.w, r3.w, cb0[162].x + max r3.w, r3.w, l(-127.000000) + add r6.x, r5.w, -cb0[159].x + mul r6.x, r6.x, cb0[159].z + max r6.x, r6.x, l(-127.000000) + exp r6.x, -r6.x + mul r6.x, r6.x, cb0[159].y + lt r6.y, l(0.000000), |r5.z| + exp r6.z, -r5.z + add r6.z, -r6.z, l(1.000000) + div r6.z, r6.z, r5.z + mad r5.z, -r5.z, l(0.240227), l(0.693147) + movc r5.z, r6.y, r6.z, r5.z + add r5.w, r5.w, -cb0[162].z + mul r5.w, r5.w, cb0[162].x + max r5.w, r5.w, l(-127.000000) + exp r5.w, -r5.w + mul r5.w, r5.w, cb0[162].y + lt r6.y, l(0.000000), |r3.w| + exp r6.z, -r3.w + add r6.z, -r6.z, l(1.000000) + div r6.z, r6.z, r3.w + mad r3.w, -r3.w, l(0.240227), l(0.693147) + movc r3.w, r6.y, r6.z, r3.w + mul r3.w, r3.w, r5.w + mad r3.w, r6.x, r5.z, r3.w + mad_sat r5.zw, r4.wwww, cb0[160].wwwy, cb0[160].zzzx + mul r5.x, r5.x, r3.w + exp r5.x, -r5.x + min r5.x, r5.x, l(1.000000) + max r5.x, r5.x, cb0[161].w + add r5.x, r5.w, r5.x + add r5.x, r5.z, r5.x + min r5.x, r5.x, l(1.000000) + imad r4.y, r0.w, r4.x, r0.y + ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) + utof r0.yw, r0.yyyw + mad r0.yw, r0.yyyw, l(0.000000, 0.000031, 0.000000, 0.000031), l(0.000000, -1.000000, 0.000000, -1.000000) + mad r0.yw, r0.yyyw, cb0[169].wwww, r2.xxxy + mul r6.xy, r0.ywyy, cb0[167].xyxx + mad r0.y, |r1.w|, cb0[166].x, cb0[166].y + log r0.y, r0.y + mul r0.y, r0.y, cb0[166].z + div r6.z, r0.y, cb0[165].z + sample_l_indexable(texture3d)(float,float,float,float) r6.xyzw, r6.xyzx, t10.xyzw, s1, l(0.000000) + add r0.y, |r1.w|, -cb0[168].z + mul_sat r0.y, r0.y, l(1000000.000000) + add r6.xyzw, r6.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) + mad r6.xyzw, r0.yyyy, r6.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) + add r0.y, -r5.x, l(1.000000) + dp3_sat r0.w, r8.xyzx, cb0[163].xyzx + log r0.w, r0.w + mul r0.w, r0.w, cb0[164].w + exp r0.w, r0.w + mul r7.xyz, r0.wwww, cb0[164].xyzx + mad r0.x, r0.x, r4.w, -cb0[163].w + max r0.x, r0.x, l(0.000000) + mul r0.x, r0.x, r3.w + exp r0.x, -r0.x + min r0.x, r0.x, l(1.000000) + add r0.x, -r0.x, l(1.000000) + mul r7.xyz, r0.xxxx, r7.xyzx + add r0.x, -r5.z, l(1.000000) + mul r7.xyz, r0.xxxx, r7.xyzx + mad r0.xyw, cb0[161].xyxz, r0.yyyy, r7.xyxz + mad r0.xyw, r0.xyxw, r6.wwww, r6.xyxz + mul r1.w, r5.x, r6.w +else + add r2.x, r5.y, -cb0[44].y + mul r2.y, r2.x, cb0[159].z + mul r2.x, r2.x, cb0[162].x + max r2.xy, r2.xyxx, l(-127.000000, -127.000000, 0.000000, 0.000000) + add r3.w, cb0[44].y, -cb0[159].x + mul r3.w, r3.w, cb0[159].z + max r3.w, r3.w, l(-127.000000) + exp r3.w, -r3.w + mul r3.w, r3.w, cb0[159].y + lt r4.x, l(0.000000), |r2.y| + exp r4.y, -r2.y + add r4.y, -r4.y, l(1.000000) + div r4.y, r4.y, r2.y + mad r2.y, -r2.y, l(0.240227), l(0.693147) + movc r2.y, r4.x, r4.y, r2.y + add r4.x, cb0[44].y, -cb0[162].z + mul r4.x, r4.x, cb0[162].x + max r4.x, r4.x, l(-127.000000) + exp r4.x, -r4.x + mul r4.x, r4.x, cb0[162].y + lt r4.y, l(0.000000), |r2.x| + exp r5.x, -r2.x + add r5.x, -r5.x, l(1.000000) + div r5.x, r5.x, r2.x + mad r2.x, -r2.x, l(0.240227), l(0.693147) + movc r2.x, r4.y, r5.x, r2.x + mul r2.x, r2.x, r4.x + mad r2.x, r3.w, r2.y, r2.x + mad_sat r4.xy, r4.wwww, cb0[160].wyww, cb0[160].zxzz + mul r2.y, r4.w, r2.x + exp r2.y, -r2.y + min r2.y, r2.y, l(1.000000) + max r2.y, r2.y, cb0[161].w + add r2.y, r4.y, r2.y + add r2.y, r4.x, r2.y + min r1.w, r2.y, l(1.000000) + add r2.y, -r1.w, l(1.000000) + dp3_sat r3.w, r8.xyzx, cb0[163].xyzx + log r3.w, r3.w + mul r3.w, r3.w, cb0[164].w + exp r3.w, r3.w + mul r5.xyz, r3.wwww, cb0[164].xyzx + mad r2.w, r2.w, r4.z, -cb0[163].w + max r2.w, r2.w, l(0.000000) + mul r2.x, r2.w, r2.x + exp r2.x, -r2.x + min r2.x, r2.x, l(1.000000) + add r2.x, -r2.x, l(1.000000) + mul r4.yzw, r2.xxxx, r5.xxyz + add r2.x, -r4.x, l(1.000000) + mul r4.xyz, r2.xxxx, r4.yzwy + mad r0.xyw, cb0[161].xyxz, r2.yyyy, r4.xyxz +endif +mul r2.xyw, r1.wwww, r3.xyxz +max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) +min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +mad r0.z, r0.z, r0.z, l(1.000000) +mul r0.z, r0.z, l(0.059683) +mad r4.xyz, cb0[156].xyzx, r0.zzzz, cb0[158].xyzx +mad r0.z, -cb0[155].w, cb0[155].w, l(1.000000) +mul r3.w, r2.z, l(12.566371) +sqrt r2.z, r2.z +mul r2.z, r2.z, r3.w +max r2.z, r2.z, l(0.001000) +div r0.z, r0.z, r2.z +mad_sat r4.xyz, cb0[157].xyzx, r0.zzzz, r4.xyzx +mul r4.xyz, r4.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) +mul r3.xyz, r3.xyzx, r4.xyzx +mad r0.xyz, r3.xyzx, r1.wwww, r0.xywx +lt r28.x, l(0.500000), cb13[12].y +if_nz r28.x + mul r24.xyz, r1.xyzx, l(0.003922, 0.003922, 0.003922, 0.000000) + mul r25.xyz, r0.xyzx, l(0.003922, 0.003922, 0.003922, 0.000000) + mul r26.xyz, r2.xywx, l(-1.000000, -1.000000, -1.000000, 0.000000) + add r26.xyz, r26.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) + mad r26.xyz, r26.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r2.xywx + mul r25.xyz, r25.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) + mad r27.xyz, r24.xyzx, r26.xyzx, r25.xyzx + mul o0.xyz, r27.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) +else + mad o0.xyz, r1.xyzx, r2.xywx, r0.xyzx +endif +dp3 o0.w, r2.xywx, l(0.333333, 0.333333, 0.333333, 0.000000) +ret +// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xEA6F34B7.cso b/src/games/endfield/deferred-lighting/0xEA6F34B7.cso new file mode 100644 index 0000000000000000000000000000000000000000..65117ade8288bd4a9650e727d36c08e7f12f3dd2 GIT binary patch literal 30552 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

      5r?ABRGczqtTDBag>T@4 zKlWE^?b#a3zfnVxHP`8*86UI^t&K(UmezLq$oDbsjVHgyngqjh2Sf)?a@9NxbDj`C zWUMD{+i7AT1D{}v_>_8XK9-?;3_bl$2f5IN-I*)c3Z8RO@W`w+)7gctKia$a53 z!q742xlbOYeka`Y!PD`Ef6WuxfBUarkAD;BlFiH4c(!w__NNZSI&}$NViA4~e+ot~ zpB29n7yF>b8O9CY)$rbq@13z<6Bc~ApT*ODMdsQ3N`B1pEAwhUkYAy-U%9tmx!=jJ zz-IZCdD$21I(fyKb>2!&sb9?1@sQlWT^%(`s|n+sIkn=B++Xh2{WI?z>9c9>)`cu` zjC>%z^yXtfC9LEh=g1)qc2cLbhQo(b{4(c121-R++Yf#Xvu)PtY%-rNpR826!w7nK zB7=65rtZmm-d_M~JAJ727=6##)Oh^cku>>y-*B$&fXL!-Vc)l%CZh2?L+jt+4QajC ze@Ynszc0vXVn%*{S$}s#+ep8CQuoqf?@DT__(Y9}b&)tHgyS{9{c~l9@$Ca-4Ch?q zpwYe)v4gK^4F81Yc<-@3H~E{A486w{gK;t`Utl--|^33XS2^mXqQ? zFB;x^&^TiJs#_FX}|{iaGm^b!hqnDGyz0T+S@Fk36#sVTUr_9|J|S>&f5x+qN2Jn~YxTa}* zMV!hzDsqkHey(HG|E82Yrq!_P?zo+ItV{Nn-)r$cbNDWe_j~9rb=B{Iw8g&64ap9F z2VTy#oe+z!@p-iHSH?7Qi2JtFN91S!{V5~oVjX|yqI|grztfx>C0F$BndZIWsk-lD z+5g)J{B1X9Zr=B4-SGFa$O`?n)`Q=?`nJ=@)ORh6r}4mVJADjvC)Vg^e#Sd^@GlPg zf(qS{W%>Ja4p`gqe-}M-&6lRgp*@?UiQU8#9+m_BvdrBH4_V;TSZlgl+^YE5ZhqVB J3*5uP{U3ruzOw)T literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xEC0BE43D.cso b/src/games/endfield/deferred-lighting/0xEC0BE43D.cso deleted file mode 100644 index 0971d7f54a00a5ad6ef38f8ea732bb82705bab71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57296 zcmeI5eUP2kUEiO5*148eQlu=2A}^F&Hq?cM4tS;7iiovGYqNQwLox=d34atY#f1(@ z7$u}H49)eL2ofMkO)+)arj7%mlXU1*Faw3wS_?2U)U?#JftD$4-Qr=UFVhh-`KyqA zKfiOn=broAyOJC`wA104x%WKJ`MtlK-#O2Dp1phT+qUodSIe8{|J#p$>|gxTFJE5y z)!V<|ZA)F({lJ`~>rbgYq`m|C90O4Y4Y(Xf1^lAY&o%u4 z*9rXw(ckNH>#ez;a}N6XxSw+l+FSHFdNkv6&O!gn^f5l?9Q2R$aX;rA^h;#z=bVFn zY%)IQ9O!$HRwsYDC?D7ATPgkDaQ>U$`mT3>=X<{MUGMC^@oV39&s*Md-@TnW-}LUC z3-5a8dv?C{+rGVfi+p#l@Uau#r}goHYz~@u6wKc-+x!v{gngV(w{rgbsM_wy2(~FGha8~hkjZ9yd`~Lf< z*YJ<)FUxRf+iT>s*T`zG$=&vvylSuUM_d>A!VPHqN^E96i26X+2h}D;@%+ZYV<%JirSBih( zMT|tdf=`w?S07rOnT$v91deRzUen#Oyi)MKct8_;3k|V0%};gR5A_dslZPL>t+NdC zKo)sC`tGcwa6e>RVu3y@3wRFcl&edM(}B%GbNdIg?$BG0R|)6M;(xX4CimR`s_vR_ zv291bz|Nh&c`S6H-W0j&?Yi&MXGn*AEgfSII`~Onu7Xa@0dlA45%~x$`b&*1#p^)T zN-( zqnqV?r?h<%Lf7%lCyqYR#GDs%8ds`sF^<9)10E+E82JFsQi3YxzytQ7VAT(Xf1N_n zz=PJ~5jTFqlq z`Tw%@0x!CsR(^!9(Ubgu*6qE*Cl0_o9*NC`!edlm#y4z5__yDd=^lM$&PnGCF#6yL zPRX0_DX^9YeChklYcd|N=OmMSIRCQTjt*uV@sGL=480=PWHQL(9)9SZA&TnufKgJ>ahVXZ&?~Vc|hlw4> zFY1$JcU#O&&;gg+BNuee+;Z`uvA)ThsApBbf1_)|o&`btO{3flyr6$Y9$$)S*coVd2j&;fU{r)eV9`6V1sL^3NaZxR-{4(uZD=l#N(iXe#b}edU8s~Kl z--6G)F6yqsX8APo6gy`1oop=?TUwdqGPw3Nu>E{}{{7Qj_*{Jr|Fy;+i+tVcSA6}H zeLWBBbf425SS@xe@O97{ZhMRGw(RScuW^RH1Siu?A~%gEe;uuPR%&;jggl+&;;N7D z&=;Ng)b#-C4eBSc@Y?n_b$(9c6yAo@N?y$UfxCdlxeo3dyY5G}m-71Pa>EDON8g?6 zEpwA{!}+JP>`&%<U|>?hcso?MM6%FZ5Af)E3^% z@rEg`A+I&qo%)d|DPnwUJBe0pH=!4D&ElV~B4e>2Lh#DmH zmFG&|=upU1=pE(U)cmDN#xP8)B*yeVU`owwI=626Ea!-rS*kO6BlXleyjF`1H8s9c@&3LVPXgxxH^hsYY zKo4Xvcei@juk^Kk<$6`A#{JAS>4%^Dq_4qYI6C%8UxUMN`1MI&g9AUTi#vWLhnYXP zN0Plqs=XJ-LB-su`;Iy`spq2tdp0n-1C{3G)46kWd^&fo7Fimbb$*lo>$%v}xrn%+ zR~~P_e^sY(A60a%G#UQZtE%@a_Z6B^8M}QFRo6xSxut$IdV~zix5NzHZJ{k49RL)7o!u{#DY>YeMi;k1$$^*eAE(71ks+t!lH z($RdNrG68~MfJO}J7PTbecYo)?QG{f`$9QfcQ`@bF`BQ_?o!V{~ zxe7nyFpiJ`p8L>cQEgup4z)desoKt(`bM=K8f0QW`XF0J?CpGkPRy@Qy3pae&UqUT zat3_j9_{|}BfnbQK8di@bl08SmutF!d-_DJwj64^;}0*!JAUFEJ4$XHyry$%3^g4X zbqZVC8V^r=Hg9XL?*h%)8a}?Uucu?F;Pwe_(>aW*KItplxL4Y0D{`oxwv}t!%K1ux zX&i;E)Jtpw*4pY?Z(E5IvG0?Hkm+h^CHi`JXAl~%UibiESpEAV&F?@s5J-xQxd>1&{S zpXi#Xp8C^u)bwG@h#m1gIe=MDVC~qvEFH*w(@`rA=z3ADbbM43qE<3*=2$JRmE<4s zYv&%uAO5Aao~s4VW7BkPeRJP_^$q(xM%m9qw_$x#&&sn!7Hc--_eo#naQ$liV|=fn zShFqSt$0q?N}uDJ4Zl#kh==8QJlki$Bx|O20c*$eqV?&#tv9zm{e0PqKGd#7wgMyG zt*tkzU5*p`X5>Pj^cA(s?e*8o$ij!MKK8R~mvP$K12 z+Wu1KQW-;6gnGbZK|JahGe5zjMiLYH+`^Nw(&_=M@ZVB?{Bf+QWA7Jx`=qZps8#vE z2huUt^~Cr5Qud9XvHn~2*_XhvkJdJ_(we z*R9ud?zp;z=6X7QTJRUEqj}t{j_Bk$o0f549m#Y1z<&I#Mn~ZIk+$_C*YMaZ{y46h zgP-2};jzBE&OFc&Tzud9(Y08h@FOtK?X=V%*DcnWS@vX0y2m{TJi)Wy!2z~jqY zhHW=6%LAslCDxIZ$Imgx`Hn_Lwxk^Q`h~S|L~)C`=hRkFWq8%V;8zv4lQ#i@c>3l zX^UTDUwsI(z0hKB%Tuw5=e@ub+qkFX+%e;P7&FJpEjao_%-rXg8Ai+ubIgD_X3-}* z!ReE}2FIUjY$gYZ9b=f*d$bGuv4tJvHhdpksreXnV_w$e3iG~VwE_(`JX-D_YMzu@ z46S$vAMpC5uX@C~>z2m zdxZx~N7P3H(&~tP{1T7g&$;a~oOy|y)BS$XnI8G% zFmoAw(B>T6OSG^4xqp3H`tCdb34IQ>QFL2VzQeoBmyz$Bn+BQIb119LFZ2QzbYhJE zh%vnSq_3{i96s41pSTCtb@&9h_=j9*kn!My&p+wC`l46x0k+hQpBnlD9AG;3a+?xk zys^vnMY|si{mpwQ_vFc+c@o|yPoCVmbDW=%5?lLb5l_R~+;IG8k)fmdL47qhian`~ ztNTo=*wuY~@6}5GxCe~foT(psN$x2h$0Y6P@k04@T{q76XoWUn!g-(cRiCTp_r=r^ z^TNCwKY!17(kJEx@amYK(aZO2c|GLXY0 zKDWSJ*QaA@QrCpk6KZmw^ffrBb-<}lebQIG_sn((J^~*8*&Tz>{WE>$<>fW7K=Diz zd)JQTJm_`4QQmXGMs%l7$6Ric8^8X{pFg|bxOvC#+?kx)t|Q1QIrXB)jeNW^9BIevE(Ux0@#E5G&H*W)Ly+r1H8)@P~8nHXpBoL@A= z&UuHfprsc5}l|W#AQ{SplxB2y+>Tu7s6)i*^u6R z(0zMAzgDh^%Qc--TY2w+-0zdVa=u1Q=3MVK95$ZbOPPDe%j?dIdXEDh;u~|O*Q@a7 z9VCul)(3tMNbai67xBBK_dpnP=k+YW;}HA6=RGv~bi|$!_m+xD)Fa@1id=tE`5qs2 z#TdUJ`d8|l_!XLH9ox1K9B|1;=vr8x1Q;CT0D0>i0KZTA8jO4D^^hNV1l^kl@0sbo zFVhU+ym}(g~VJkF@&=kL%Wj569!@z+>D}OIV*$ulm$=zxS;NxBXF9t=+HI zx$Cl9d<74~+SV}YxbbPh@ths=Ua9qc5@4Tt-SY5rcNy}sYen{P*@?Z_MBfRWQ_GOm zr>=YDPk(0nKd=4Qd)%@%Z}Gs_5wy4I1X}v~q-PHDNBfbVVyzImTb5erblm!g&Z%G4 zllZ~wbVEn3fz#Bw7=x@=hcI+q6+ZI7r=^b^R~z`y=?MM5P$#YJUvca2ZMPrkF@pzw zpZ52W`O)eKTD@BsGECe0hjV;{e(1HM@8F>pIvv$V%)Q{?BXIDM>4tuQ4j60xA8J#u+67KZ$& zPoYhYiR0PkywIk$i9fJD<+Y|x{|)^-DzX;B6d&Z+@91uy*#C?f`<*d^|J?FEyJ7YzzT6ca`6*tJ zZ*8s`PqGe~wogKysj(B@jSgDIhkQ3P{@`aml2>Cdnvh%aVs2h7I$5`9vAxkZ`pnz= ziY*4%J`t(U?=nNFn+z{4aeWf{qbV`3kCi} z|5fQhTsMk7t^S5t$5#KUN1=Bf;qR92gm@Ras8!See7afWjS9VUxt*uDAAz2hJk&Au zO`*F~<~(>>F1~yz<|$-5F74caKGc2M{pJSrdMV}x#*=mM+~B^KXl|IP^YHGIzFxvQ zk1yb>W1sw8T<3|o>rBp}m#)skdrf)L&KJ}s=aBD}|8Lg$2c#c<8|j%sQ|Hw)t@VB4 zl4Dxy84Hh;G2n6Ob`k8np5Y_sdShr<=kXtPp7u}be4Wqaky`I!O+lTfj<|+;ED!5E ze*ELA^XT(Z*Lm`1zdDb+VV&nbh&h1qNA0Io{!QzH=05uRl-Kw=jf49k>fkWH1zdq2 zdU!7B)AT+_-Ep+@i}7{}oe-wuMt#hS?YLPjeZ=skm|xJ<`JmH?5yvjE9e)(@}j??}M5(r0Mqa5p&iM=5;gt?GMj&?t6*mx+Bgx z?>Y8KLSuh{`=ETt)>vDTf0`3!=127DlfG_pezZLMu}_e4A2hue!nerM5jo7c`}(Ad zc+NSUBb5WO)?s}?T>-zHAIVet)@ES&KFF{kU8bMj2erJ-=f%#C_QgngF}C`Y?}NDi z(PbQ`$BTWyeGvCQ1#K=a*xM(4HTOWA_etN)JrL*k&$`&pZWqCxmcER4`yJiw6Z_G1 z1wG(}|J*V^4*iZVo3S!?A7s9gb;z`R64MuWA7nm~7wdBL^BBu9pWk0>?`MpQ?Tx;& zaGHBB_CAO@h@SY>@^n5EBmCLUkHh%&NeK0MGUxG5?mpwm&xbSK@IJ_MneXH9Ke}1R zGS9{QZaqc?hnVAI``dKXjY2nfAB4OiJ^sEXUMB>*r2CB6ODy*~@HR|)HgO-xbCyLo z@CL^+S{&wJ^Es|HAbYBkyKq0zdysCa&(LBQ{AqOrtzfmUPt*Cu`)wX8_y&Ik54F(g zsBv$70uDY|6&`fM@dusra|lCM(>aFpflppJ=X5%=Pl)gP)OGDXq~~C4_kJQRc=nB3 zWDN0y8Zwk~;Um-9H*WEf?ZHPOOD%Lds*gMe8wVemZs-T-fH9X2VfIm5ALv^bzWZLP zIT)YdTk=MBc72-Nzh@s`u&9aPDc|F{0(!jA=L(`d{6w+geA#bDUOqerPtJP3Tm38h zoS$bMR1xd7M_B z4q^MP!||>CFJDG|z^9A{{O8tlaO-#bl0Nx&;T#N1zKi#0nDhFiuN%z4j(r-?^K?0ed2e&u_u76wkv*~hnXJ6q=&$1NY%rpSfKIF#~U+n40M@;B-{=cR_6weRKYsPn|3Px{)Y&Xc>R$J24_F=0N`9qV9NmNk2? z)sB^-Ta4FsoSNReUu>Os9f`au^+D$g>pXVy%;^c?k=yg*0RgBy~vBQ)%QV<=$y4pyXItVudX<5w9f{grwflhP49z(SYL{H zonMT%Q{)R=_t{43!x#IlfrfjL&MR`Jg}IKm{-uvxMOWtHn|2Nc)ztg8$t9$^4kt#2(x2{IV@yxemHUQa^NF z*ZTIO_g$DDolC&T|32yKCEANbpPQW@t;eY3wDlRzkJOD~_uPFD@`m)MW&bttgzi$a z7s*@-Z^PKn;XZ1=y-4ppT86LTD?e5rb1wsomVHafIC53;>67219`b%FG2lJsKIy9- zldYeA!$Z91Qs-9J3~c`OXP)`zUPC#?v>S#0QbR|M0Bdt(we%TAOU%VH_Vat4FM2l? z9{e2%{280zQPXH!{zI7M+|lR-KIZ{9Og{T`zRV zBj>YDX-ntze)XbYtAe>DX7~gAS-MI6?a3B~ocjt7atzo=@6p0j$Ds;a@OK#?@V6PX z@Oeb^u{P81Z9+dP?Tn1V+wV_E-<3v2(Dg~ggF|}7+=70#wND_;J~yB)4EfovH#dKm zaY4G0^W-x;`Mr!ou=|$l|6K-j;ImG>5gm3LA06-s?=3^OsT?qjK6GImw>a!eK2hkP zC-1%PWt|PK_#E9VI_;FUPXgriM?TX4Y`?fEBM7;II^CX4BGbZ zeRlK?0Qjvh;Q=1^eDfArbcoWp*2w6rCjd%6AG{!SKti)_Ou$d}xh1JLi%DC^4KbM;AI^~is- z!~0Cs2IYSE3VOyKv~H=Vwxjs=v}O7CY+L)uiL1rWo_E+wf~RtOWSIJ@9~o2IqG1fe z8yg*~BJ&FK!TJCPT=<@B^oMR)ebA{6-mTO4Ta&^wWCFJh!#H`qu@2x0C+Zx32eMY; z&-sdE(IShQhwY3z|Gfx*k7FEo>j%Cp zu+aZ<@ypKP?Du8CiO)#w?W1Y^GoHtx@WY?}y=H8DR=gs=RCmZN|F#V_8g^dw6BsSJ zjGB1s@__M1N2dA+C-@Q*>%kfcSr?@Tt@Y8pW#lFL@94ch>~ZV71V)@`(ak)~!}iOz zhzI(%vVoHi#g&_uzq@U83|eICZ}scnm%-1nf$4Vy_V6=w z*4cImbq^d(m8tcO>D}%JgP(a1)tFP=AXs9F3E3WMW%OpmY<=g|dUg#JT z%ffL>J{#8BE0ouJUPRu8{*Kwc;D2*ScC7uWMf_emFzYg;b1s_hs&t4NroX?ozR>G9 zuvuW5FT*#%zx2tDxaU=z>-wfoy2!tw=VvFp7d(Pb!K;63t^RoT)AY2;gVA>3FZ-)Z z&C{{}jQl?7YjCjc2L|4Kg??0ObDsvty8PnCHm${~oQs9_D~fIdd#64wcspv*dy_Ts zxcpy_0_&3i)87+}i#|oeeJP(fyasVR)fvC}&sbpXuv_?28;rwmg^=gEkJY|iv##GA z>$2;9MIU}Qk=){te(_rw*rUIhrz?KTo}3ID%WokX-{TS3QUZGt|Jz}==x|YU5-_)( zlhDt4dJNzn=i<{vp1Pt2vEKFXJCZOuk654wAL(8HPG7(8t{(O+g(p6yHLkkr`l0B& zrQd&;<7XQL6G`T0o#`__>;FpOSbxjKKjbO*4p~;${n@Vjz*RYl|Mfz?v-aH4dJ`P( z_28=`=0j?!YF6MBUHJ{8sAmC_9@Nxzeb9}*f=AxO`X0W5g?%l&<>UMNUlcAirqBdG z=6TzIU91miiK}dnHB8)FYaLBp@IBctWO&5yxX#G|@cP8>>)gKOkGdo=+vM6y+o$<8QU+ZRliHY^( zo*zFU=Q+utPO`^g^=R@a#>xyd#wE+8DUouCw>lOJo z>_?XE=iG5>{aJ8kV#8VtT=-s(7dh}kc-b$ki=@|K+ra-=A-;Xmmk#@d7Cj1nYjfB) zwA*~J`B_DkIt%@(TEp0vqW@-NeyW)ZJwB-$Jd09nR<^~7nDpwKt!tC5c3#^Ro?}XD z82pE@T$iSEL`&zIB^&FS)Om%i;A)K;{=v?nFUWt!A91%Y;MM35v~AwGzQe1*i?L*% z(5{N7j=H|dy2=mD8j|seyzSyQ)7u}OW5Cl<*HLT2XABhIu*QtvIKU2gU>7ZV7o4qQ z8&q5upgl(ryXx}Lr)#m*Omc} zf7jOZg>K6@t$(ePVMYGW@1OhAI@S6<)5ULB-TG{?$vH^<0oQWp>zns>yV%bp_HE5X zN3I&O-dTwv(N`$3GS6HN<@S}}xi4UC*e&YD_yyER?ghg@*)RIH!VIdb}>FC9PnPhNHR z@Aj`a_cwmz`*^Qq1$}(q@^k<58&h7h1ZwORK?@!>8Sh_SJ*Hc}@K+$Rw*;Q##rqBD zVxNk(>dxL1JZQl|zbAB#jeXLWj(dOh*tvW** zKjR(z;BM&mN1ytF;6)yQXZ`fvLFo4@UwApu_kd{W8x=hGZ8!Xo_wu)V?A)(i{wkFSYtp~}NAK9SuUXd@A0Bw5@at38eed6XqQtA~ zw#R?4J&XnP|L*SJe(Fbl{4d^vHjc&6$M^l<7u~!4){hA%=auE*=9Jiox>S<%Sv zb-iVn=O^JDyDFSja6UZNcdpZY;w&HfZM!R~aZmQCbg0oYV(m3Qs6B@1-hzA(I>5_* zFdV&GIJt9Ned@1k{XVH9{7($>2R<>kjnIC~}L|cDJxK z!MLw7j`X?J`jThRSugqN@MYo0xYIMc_P)ALLhL3_=1)Es{t@H*e*TvP;++N8V&QA< zoBj>&G1+9jZ6_`BAG%$Td~COFJF21ZI@Q>VP4ZjR7uptvo%FT#TAuq#?Caie>qGmO zyfa;&#Bh*z=4G9cS#_2@T+2Uk&&%EsHqw$K$kTOHOOq=X+|yu*dp@A@S??|_{SRSzZ?|=VOpHExhJ@f&(4dcUD#)jdz(0Gk; z;T-mJN6jN={Snzrj@Tcx(4m9*GZ&vwA24c%admp@v(kY1&GQ;_Ejpdoy6URVh&Auf zvL~iE#5)tfpD(qsPrB&hf3nAWCR}J9ec7gH!DH=0D}7>~V(gJu^znRwb@h@yE2WQE z@9G>pd`4Sx?3~sw@$O9v6W_z&GY)yqDA{q`ukSO3KQhkfy%G+=g9rHVr_~Yn4a6tQ znp`n0x=}xoK^#m|bgIvNpatd@T-##0DgUn8VpzeCdpmR@M$zt$a||-SIXG($VuYTK zc}ws6T;J2m3t=lYLo&i&_=kC9S*?z+)itGU#s5&v7rpBYzQ$wl08hD7`PpaTd-)~e zobo>FSCtsFFm%VqZ67{n&zQDT{duGQ-}>%Sen-K2*e>3MjtGBCjx(`_+8LB9H~3t5Es!@Ujy@a^4_^y=&k2)dLi=&zj(? zYKt$Q%x&TsY&;`jeT3}!byCN@jXyfgzF?n1JR?St(@Awf@7JO4s$|heoiI$7Tgv-= zV3WAlBB!w3@#cQ9#zeIaJLvRE2Djq&-@qVi7 zeyD$KH+lH6+dA_yUDiqC=DTyw!UsKE6C4BNwR~C}aEE;G$xxPK*}~{+^Xtn8^6d}& zjgLGQoLBZ6`n>c?#X7Q^3Ia3k}Tp#2j4v$Gq$(u76lR zU35)&blQeO`yqx{n%2?L;s7E?b_)DRRlT`_#w&%t&YX!$~C-M~XPc!0kue9LzW&MD1z>jkE`#CxUi zl}`0sI0sBG9ikr|=uJzVH4nXaP~&(;@W`hmBx+=7bzb=)ha7|t_7#3d8h$f5x*yM% zkEb@8kM(Qip}*y2eWrht(du9x(tin`+J4jMUVZ6~65o~%IL~lB_JBEt)FJrdUybc0 zcu<3EE4God@K{zW{&61%kKx#-FYB_mg{+O@JJp|f$IEbPj`m;)4FldnLKX&r_1hZlo$997`$j@f9y3g zp5ehEpH)BEM)8igx3nwb0o{1O13MPQ<*qVzp&9CyWlv%av|aeFEz%>2cy???tf?Es z58fKn7oSp#uRZq=GaZK*7X>%Q73YiOs5{=bg`fDwvlno!XA74fD%?7plD}++`-*?h zC^zDsuIM`N>m=?vC}e7LA@KU=kza5s6gTXdJ7LRRC$h+S*f8O83L`{)UUtVih`I0fa-T?i9XHMUp(l0<_n>X2zQB)t3251i1*gpwuNmBuE4CAx zpm(mo!#s`eIRhUGZw1*WbbhHkGu7U0^$~XABk36HA?AMT4o#o*rE%SS>Y7G0ht1o2 z%6$@MJ}OOXqwOHCk>&R58XN6nd;&gx#WwVDYkXkf)5_KuKdg&9ZfNn5bd5bIV2W4f zDSrSHPQ(hBdGKthePP}$j{7`Toab6kL_LE~pY%1@`!=29QG90KMI6PW))RC9hn8GjMCUk~ z&T%vy*E(i+!V8`e>+w9ycHvLwnRQqb9rmqi$a@_HKl?ziCDoIfZ;UhH7WnjkjFvn* z;=F8Y95n@+MSa!@dXHh-q8LRT1E#)O-wd~oryBicVImZ4Tk^5V{7pxE4eOH-2Jx-< z;;~-*v^HaZJOhoj5AhLx=;(OR%7%lM0j+bg;Mbb9D_F5}ro}&|w?4K}K3x*L)-l%; z?G@HKwo>$Ut|7xY=Jw>i{+rr2jDdaVJ-$|V>rBkinbtaMoW}g#!i?`28J}zNPrAo^ zM?ZB1-?=s+S4YgtEltmV7YUe)g1&|@XcD_F{4Y=@QeNS$A z-F5y|Wnc8+@rX65^r&m{&9V=uWjhK zN4;A7$+HafVckJ1nMVw}q_qWhUi#4Z7O%It9)17pwR}?VA9Y@1Z2!oAb$za}RM$1y z_X!`33k|g35^Ho>gxmTP-0kb&w!Ttrj=2sQ8tbulfDGkEJzta;*r0x%3B`UqGD(i;9c!G(Hdd{!p>carww^#C^GC%cjc1II_3K zZgT+-Xp4QJkHp9R7J8V6?NvPu80)VV_Nh;9oYg*V)erp7>R21-*V_1~)_BMu_sk0$ z88;=r1Ab<}0~?KFyJu`1=XD%93LY_opY60Q@p{CwuHnhNL2TJS!56fKYdqGy4fye%uyJPV{4LA$ zqlb=}F~nL&xqb1R0L%JN2jP#d(ll}sofxY;AE0I4?G$h8ZG9U5MXZoFfbC_R>3ajM zy~f4nA#Y*?zs<4-+S0XirgaA&9PwIlEZnDkmbxx7J~EBBB3k@xe4WNUIr4R18hJw$ z+k0|wp^<)ZFAFZuV$p&1SfLeGUdu4|B8PtbY}xpi=Mnbvo#W{`$@(a^qoK{nZs&8> z6uaV#yrI3|N-xT0+@r@>yTP*xeNxBZ zz+U*>U*bjGX>G)Ia+3Txq4t9^;ejHfS04w@&-ifkNnbj!-+k?R*!-BYhP4wI@@b7dJc{iX7{Z;#A%hH#WoVPB-2{?yq7cd<+ougjE z4tX-aiht3fXgxG%S6|wP?AL+Me)DtEgE81AeGLxw z2wObrg8TYp&ui~**oW=Vg$+%Mo#L|yKYk}U;00fN zV?Fi}$?B5`r+bERq1e2v>Q;1=+(SdTEuWn(=U3}*_RvNp?tKc@vO8>#mfXE2{_Mkz zv^EL+(yHsw)gqg^PQGAspY&Ca?9Y>m&3(cRdfl1N<7I+V!o!Am4_xhjc;qd3Jbz-% zgiU=?=Wo6CEFWFQA)mDTLPzta{j_XHCmk(b$nO)~&Iiu(`k>Vh9(|gZi+rvYfeUs z$KTac&!{`L8`<_d_%Gs%{rLW7_@3E^uYHbw=gZu_qj)fW_LE6o+>A_YfbY%NLR@Z^FFt=Ed~eoA z`2J@3;(PM>X8eHf7x8_)a_u?6j*E|<3(%g>H8AHPdVz!8v@HzY^x4NMC3XD|9piv? ztCsffV~-1-?$dnxKIph^d777D9uwdpj}~2qIkH}0#PVi+V;S%>U-Df?+;?*hjJB-% z+0#F~t3KB0-0M+8+qL@ue`|Q(!#FLx;`j03qduNtRGHNBgX*V!wc2i+@1MaP^5>oj z`a8>f3Xb^$(|BIECm_Gp`|gpf;ohHp>1DOv^QKQn>2Kw>^u{G#*1>(|J%lmFjRTB$;9G2? zZD6ss#0R%)Eki9)9_u^DL^{VFO29ub?RVW#TYV`x!Hc>Jd`Q#s8vfn@xaI{twa&Jh zm)mEGttcy3fnq!>**5GEwhvv!~jt`;S)E@Pz@pPYk8?t0st?Z2)4SV+W z!}zJqQZpH!vp$;r+h*bkFXOnykBeaN(-Ctd=gxzTeQLS%I1C?f8L#}UfpF*Y61m`5 zE;(jh43nNQ@58UnLD4NKzv|q0M(~LH0y#Iz@xrUF70Hvs(#7KtI6N4ijM+u=BshPj z#F+YokBHrVd4YZ4IcBbH#06WtKEZe3AUkTC>JkUKF}|n~^s6_<0DRo%mU^>Y%yzCWd%9J$#NVQT}KWh2YXt5T72gga#|ed%=2{x z*3wxHdkLmit^N(>TnC;}+u;^3Xnx5+x z*762sxh*gJr04Q6mgv_Jc9Hjt1>Y@>B4BR@dl6eS${!^D!2AHcgypkxN~G<_`HAeK?$pnscHaFRPDdO~~NT zchpkO{WouYTKJn#5ku%@ON?oqRvP&-?z!kw9#vV`S!e)pR6JlDebU$TZzZpAA%5}h zG3WmKU-%4Y>Ust|#k%TfJoW;qrO=9J{LLn~f>#?_9M+KFv({>DvJPbp28+-IzB&%> z%9E@ImJ*kfE%`h6!;3Z8oni|PaV2K7IwDT+P+#EFZyvxI_bt4Y0o-y;51iOS!`h!b z;Ji=z8m#@-3heYa=Tod_)YtNm4-T3KdQaugt}Plp0>`+Fzah-}weezJgSY+9Gh+PT z=00{fR``_hz`^*Dtr2^!oyQ~PJjXlqInnrPDbX7-idZ9;vC8lGb69s;5AM-?7ta&0Y0{9N?MX^l#4L zV;bv^{g!n-`#&aH{AgVBL5B3&TBMi#-ulaQf<^pVm~;x=@dfY;@*{TCb=K}!S6%ma z^$|R37jWteZJ)9(=)*@{+{?w^5x01XPSglwyY?W{_pHRrc@goMjMbCnI;QBbl<1xC zyJ%qxGOQ~#iUT|y(_EEJ!Lx~za~b-~GuG-s_z8V8M-Z=o7hZ=7E;Z0PeV5K(tNT#= z##q_W{0m;6RKOp+t$x(i^{MN=`48UtdVkafZTJN_YlX)~X^9&=!664YH_W=32AuVR zW0>hpV?NYm!%S});)JZZIF1$AzjVE~IK6viiC_Knj>uH!{@(JN1W4qw?NgV?j*vlb4A%pxdZ}U?=#=R>r`e^YN z`p8~=cOAAGujpCFQ^hSb*16@Q`$O1t|3Dw$#4z}mmURoq6Z%lUhVbm$Ke{S#+*_D8 zt><8!R{r<|7`8^+$QS>W`%3>v;~RLN^wkCb+G>1{8a~xt^l$pJzZ(AYV=i(c-X%kp z`I6`Icjc?g;9K%P`Z+Io6~FI++;)68Uc`nxfq%;r+W+;3-xK?;CobF(d-=xmSina` zm!KDm$a{DZTUy00^wDX=$T4hj7R9iIJBHZ5UigZCwSN&$=id{OyU4H5KP1?aKCNHP zmwp{D*ss_PZJYBg&qaR4CTPy6T~=$qnwRXG%WGixNOEeefsQ`KFfyX{Kh%> zwAsJYzeTq$0tGLw(P3Cm%pdj<(Jy7&x{^B_Q1LJ5P z*Y{|5dalbV$2#Ey^lo9c*Rbp9_uArD<^p&+&)d1-e!0gwj`S1@SfBKz1C6uR(p&Sr z@y_cRK6)u8M~8iV5SME5;>a&8T2J-7dq;Ft9LA6*z1o6>@ucvSbT z$laNY_1$$psgHDsy*v8-+fW{hKcPO4A*@vPH2anFz4JfCmy)#HO_Zc|?tWxtd$?)rI1V%5QfZ z3_h-J#Ul0s!uH|=@;>y`HLZBmJa-PCDSnf$P_g=EzjX(C5EGDxF}cY(w&uKZxldvi z2lJrk!u(umS^dr<)&k0}8Y|1&l|JBM3$1emxbI0?_)-!;a;Q5EZSVyT8=L;%X&vCn ze6U*lmU&H1sy58b2kQk+|2fg%FCCHZ#6rG{e$ESzm}gCgZ-I$EXcga;?Q-7ogmyU3 z8gHfW81fR^n6pEV$yk?poz;$mC)9@@Y^Qn2|Df0P(h#0)$-Zr1)z(Ek?OSBxTl>Ji z#a9mrh7bQ=nQL30mUxDKvTts#weJ|C*oGZv)Gn)4EaMt}^tbfja2ST|rdMChE9Rl5 zKll{i@%y85HTKM89DF~nZ|2EO$-xHClb?QnhCi;piv^c+9kJKKiFLAVLm2$5e>+dQ z&-w{1#+urhwT0p2%LVC2U9*0^r$vAEX7Cv}$YdXMNv-dn@%gU$IFJp@Z6l-F)#~@P z?|l#dWAxB-g-(B)0-M-Fu`cdoFG0A6tE{F@aldSzxA)lS4gNB4wb+PGzjO3W=e|z! zB{2F7Gk)6#40_kO76z~KKUwDNGf%~TWoRG!Lbi|hn(&!qS3LLi;-8QA-P3jcbccuq zI(Z+0^FHZo<{mNUx@DUudv4$pH~1i%J#E@Hw%F-9%-;1<(wCk+Q%l%GKdg`Up@HiN zy*RgC&53*Jfn?<{|yBFEr?Z@?$Z=tI{&&HpdNuxXrg5j+lB%b{mg hrtF7@Eb}Mt!M&5cpaD-{^lz&lU9xW`TW59pe*lPtwORlG diff --git a/src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0.asm deleted file mode 100644 index b0f8651c6c..0000000000 --- a/src/games/endfield/deferred-lighting/0xEC0BE43D.ps_5_0.asm +++ /dev/null @@ -1,1867 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 16:59:16 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy w -// TEXCOORD 0 xy 1 NONE float xy -// TEXCOORD 1 xyz 2 NONE float xyz -// TEXCOORD 2 xyz 3 NONE float xyz -// TEXCOORD 3 xyzw 4 NONE float xyzw -// TEXCOORD 4 xyz 5 NONE float xyz -// TEXCOORD 5 xyz 6 NONE float xyz -// TEXCOORD 6 xyz 7 NONE float xyz -// TEXCOORD 7 xyz 8 NONE float xyz -// TEXCOORD 8 x 9 NONE uint x -// SV_IsFrontFace 0 x 10 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[216], immediateIndexed -dcl_constantbuffer CB1[4093], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[9], immediateIndexed -dcl_constantbuffer CB6[160], dynamicIndexed -dcl_constantbuffer CB13[13], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_comparison -dcl_sampler s3, mode_default -dcl_sampler s4, mode_default -dcl_sampler s5, mode_default -dcl_sampler s6, mode_default -dcl_resource_structured t0, 4 -dcl_resource_structured t1, 16 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture3d (float,float,float,float) t4 -dcl_resource_texture3d (float,float,float,float) t5 -dcl_resource_texture3d (float,float,float,float) t6 -dcl_resource_texture3d (float,float,float,float) t7 -dcl_resource_texture3d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texturecube (float,float,float,float) t16 -dcl_resource_texture2d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_input_ps_siv linear noperspective v0.xyw, position -dcl_input_ps linear v1.xy -dcl_input_ps linear v2.xyz -dcl_input_ps linear v3.xyz -dcl_input_ps linear v4.xyzw -dcl_input_ps linear v5.xyz -dcl_input_ps linear v6.xyz -dcl_input_ps linear v7.xyz -dcl_input_ps linear v8.xyz -dcl_input_ps constant v9.x -dcl_input_ps_sgv constant v10.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 32 -add r0.xyz, -v2.xyzx, cb0[44].xyzx -mov r1.x, cb0[0].z -mov r1.y, cb0[1].z -mov r1.z, cb0[2].z -add r2.xyz, -r0.xyzx, r1.xyzx -mad r0.xyz, cb0[86].wwww, r2.xyzx, r0.xyzx -dp3 r0.w, r0.xyzx, r0.xyzx -max r1.w, r0.w, l(9.999999939E-09) -rsq r1.w, r1.w -mul r2.xyz, r0.xyzx, r1.wwww -ishl r2.w, v9.x, l(4) -and r3.x, l(16), cb1[r2.w + 4].w -if_nz r3.x - iadd r3.x, l(2), cb1[r2.w + 5].x - ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.x, r3.x, l(12), t1.xxxx - ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r3.y, cb1[r2.w + 5].x, l(12), t1.xxxx -else - mov r3.xy, cb1[r2.w + 3].zxzz -endif -sample_b_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t12.xyzw, s3, cb0[108].x -sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, v1.xyxx, t13.xyzw, s4, cb0[108].x -add r3.z, -r5.w, l(1.000000) -mul r4.xyzw, r4.xyzw, cb5[5].xyzw -mul r6.xyz, r4.xyzx, cb5[4].zzzz -dp3 r3.w, r6.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r6.xyz, r4.xyzx, cb5[4].zzzz, -r3.wwww -mad r6.xyz, cb5[4].wwww, r6.xyzx, r3.wwww -sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, v1.xyxx, t14.xywz, s5, cb0[108].x -mul r7.x, r7.x, r7.z -mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r3.w, r7.xyxx, r7.xyxx -min r3.w, r3.w, l(1.000000) -add r3.w, -r3.w, l(1.000000) -sqrt r3.w, r3.w -max r3.w, r3.w, l(1.000000017E-16) -mul r7.xy, r7.xyxx, cb5[0].wwww -sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, v1.xyxx, t15.xyzw, s6, cb0[108].x -add r9.xz, -r3.yyxy, v2.xxzx -mov r9.y, l(0.0000610351562) -dp3 r3.x, r9.xyzx, r9.xyzx -rsq r3.x, r3.x -mul r9.xyz, r3.xxxx, r9.xyzx -mul r10.xyz, v3.zxyz, v4.yzxy -mad r10.xyz, v3.yzxy, v4.zxyz, -r10.xyzx -mul r10.xyz, r10.xyzx, v4.wwww -mul r7.yzw, r7.yyyy, r10.xxyz -mad r7.xyz, r7.xxxx, v4.xyzx, r7.yzwy -mad r3.xyw, r3.wwww, v3.xyxz, r7.xyxz -mad r6.w, cb5[1].y, l(2.000000), l(-1.000000) -movc r6.w, v10.x, l(1.000000), r6.w -dp3 r7.x, r3.xywx, r3.xywx -max r7.x, r7.x, l(1.175494351E-38) -rsq r7.x, r7.x -mul r3.xyw, r3.xyxw, r7.xxxx -mul r7.xyz, r6.wwww, r3.xywx -dp3 r8.w, v3.xyzx, v3.xyzx -rsq r8.w, r8.w -mul r10.xyz, r8.wwww, v3.xyzx -mul r10.xyz, r6.wwww, r10.xyzx -ftou r11.xy, v0.xyxx -add r8.w, l(1.000000), -cb0[111].x -mad r8.w, cb0[198].w, r8.w, cb0[111].x -mul r8.w, r8.w, cb0[109].x -lt r9.w, cb0[187].y, l(0.500000) -if_nz r9.w - mad r12.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx - add r12.xyz, -r12.xyzx, v2.xzyx - max r9.w, |r12.y|, |r12.x| - add r9.w, r9.w, l(-464.000000) - mul_sat r9.w, r9.w, l(0.031250) - add r10.w, |r12.z|, l(-208.000000) - mul_sat r10.w, r10.w, l(0.031250) - max r9.w, r9.w, r10.w - ne r10.w, l(0.000000), cb0[210].w - lt r12.x, r9.w, l(1.000000) - and r10.w, r10.w, r12.x - if_nz r10.w - mad r12.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r12.xyz, -r12.xyzx, v2.xzyx - max r10.w, |r12.y|, |r12.x| - add r10.w, r10.w, l(-29.000000) - mul_sat r10.w, r10.w, l(0.500000) - add r12.x, |r12.z|, l(-13.000000) - mul_sat r12.x, r12.x, l(0.500000) - max r10.w, r10.w, r12.x - lt r12.x, r10.w, l(1.000000) - if_nz r12.x - mad r12.xyz, v2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r13.xyz, r12.xyzx, cb0[211].xyzx - round_ni r13.xyz, r13.xyzx - mad r12.xyz, r12.xyzx, cb0[211].xyzx, -r13.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r13.xyw, r12.xyzx, t4.yzwx, s1, l(0.000000) - add r14.x, -r10.w, l(1.000000) - mul r14.y, l(0.500000), cb0[211].y - mad r14.z, -cb0[211].y, l(0.500000), l(1.000000) - max r12.y, r12.y, r14.y - min r12.y, r14.z, r12.y - mul r12.w, r12.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r12.xwzx, t5.xyzw, s0, l(0.000000) - mad r12.y, r15.w, r14.x, r9.w - add r14.yzw, r12.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.yzw, r14.yzwy, t5.wxyz, s0, l(0.000000) - mad r14.yzw, r14.yyzw, l(0.000000, 4.000000, 4.000000, 4.000000), l(0.000000, -2.000000, -2.000000, -2.000000) - mul r16.xyz, r13.yyyy, r14.yzwy - mov r16.w, r13.y - mul r16.xyzw, r14.xxxx, r16.xyzw - add r12.xzw, r12.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r12.xzw, r12.xzwx, t5.xwyz, s0, l(0.000000) - mad r12.xzw, r12.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r17.xyz, r13.xxxx, r12.xzwx - mov r17.w, r13.x - mul r17.xyzw, r14.xxxx, r17.xyzw - mad r12.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r13.xyz, r13.wwww, r12.xzwx - mul r13.xyzw, r14.xxxx, r13.xyzw - else - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r12.y, r9.w - endif - mad r12.xzw, cb0[6].xxzy, -cb0[212].zzzz, cb0[210].xxzy - add r12.xzw, -r12.xxzw, v2.xxzy - max r12.x, |r12.z|, |r12.x| - add r12.x, r12.x, l(-116.000000) - add r12.z, |r12.w|, l(-52.000000) - mul_sat r12.xz, r12.xxzx, l(0.125000, 0.000000, 0.125000, 0.000000) - max r12.x, r12.z, r12.x - lt r12.z, r12.x, l(1.000000) - if_nz r12.z - mad r14.xyz, v2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r15.xyz, r14.xyzx, cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r15.xyw, r14.xyzx, t6.yzwx, s1, l(0.000000) - add r12.z, -r12.x, l(1.000000) - mul r10.w, r10.w, r12.z - mul r12.z, l(0.500000), cb0[211].y - mad r12.w, -cb0[211].y, l(0.500000), l(1.000000) - max r12.z, r12.z, r14.y - min r12.z, r12.w, r12.z - mul r14.w, r12.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r14.xwzx, t7.xyzw, s0, l(0.000000) - mad r12.y, r18.w, r10.w, r12.y - add r19.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t7.xyzw, s0, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r15.yyyy, r19.xyzx - mov r19.w, r15.y - mad r16.xyzw, r19.xyzw, r10.wwww, r16.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t7.xyzw, s0, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r15.xxxx, r14.xyzx - mov r14.w, r15.x - mad r17.xyzw, r14.xyzw, r10.wwww, r17.xyzw - mad r14.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r15.wwww, r14.xyzx - mad r13.xyzw, r15.xyzw, r10.wwww, r13.xyzw - endif - lt r10.w, l(0.000000), r12.x - if_nz r10.w - mad r14.xyz, v2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r15.xyz, r14.xyzx, cb0[211].xyzx - mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx - mad r15.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r14.xyz, r18.xyzx, r14.xyzx - min r14.xyz, r15.xyzx, r14.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r14.xyzx, t8.yzwx, s1, l(0.000000) - add r10.w, -r9.w, l(1.000000) - mul r10.w, r10.w, r12.x - max r12.x, r18.y, r14.y - min r12.x, r15.y, r12.x - mul r14.w, r12.x, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r14.xwzx, t9.xyzw, s0, l(0.000000) - add r12.xzw, r14.xxwz, l(0.000000, 0.000000, 0.666666687, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r12.xzw, r12.xzwx, t9.xwyz, s0, l(0.000000) - mad r12.xzw, r12.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r18.xyz, r19.yyyy, r12.xzwx - mov r18.w, r19.y - mad r16.xyzw, r18.xyzw, r10.wwww, r16.xyzw - add r12.xzw, r14.xxwz, l(0.000000, 0.000000, 0.333333343, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r12.xzw, r12.xzwx, t9.xwyz, s0, l(0.000000) - mad r12.xzw, r12.xxzw, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r14.xyz, r19.xxxx, r12.xzwx - mov r14.w, r19.x - mad r17.xyzw, r14.xyzw, r10.wwww, r17.xyzw - mad r12.xzw, r15.xxyz, l(4.000000, 0.000000, 4.000000, 4.000000), l(-2.000000, 0.000000, -2.000000, -2.000000) - mul r19.xyz, r19.wwww, r12.xzwx - mad r13.xyzw, r19.xyzw, r10.wwww, r13.xyzw - mad r12.y, r15.w, r10.w, r12.y - endif - mad_sat r10.w, r12.y, l(2.000000), l(-1.000000) - add r12.x, -r9.w, r10.w - add r9.w, r9.w, r10.w - mul r12.y, r9.w, l(0.500000) - else - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r12.xy, l(0,1.000000,0,0) - endif - mul r14.xyzw, r12.yyyx, cb0[213].xyzw - mad r14.y, r14.w, l(0.500000), r14.y - mul r12.zw, r12.yyyx, cb0[213].wwwy - mad r14.w, r12.w, l(0.375000), r12.z - add r13.xyzw, r13.xyzw, r14.xyzw - mul r14.xyzw, r12.yyyx, cb0[214].xyzw - mad r14.y, r14.w, l(0.500000), r14.y - mul r12.zw, r12.yyyx, cb0[214].wwwy - mad r14.w, r12.w, l(0.375000), r12.z - add r14.xyzw, r14.xyzw, r17.xyzw - mul r15.xyzw, r12.yyyx, cb0[215].xyzw - mad r15.y, r15.w, l(0.500000), r15.y - mul r12.xy, r12.yxyy, cb0[215].wyww - mad r15.w, r12.y, l(0.375000), r12.x - add r12.xyzw, r15.xyzw, r16.xyzw - mov r7.w, l(1.000000) - dp4 r15.x, r13.xyzw, r7.xyzw - dp4 r15.y, r14.xyzw, r7.xyzw - dp4 r15.z, r12.xyzw, r7.xyzw - max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r16.xyz, r8.wwww, r15.xyzx - mul r17.xyz, r14.xyzx, l(0.715200, 0.715200, 0.715200, 0.000000) - mad r17.xyz, r13.xyzx, l(0.212600, 0.212600, 0.212600, 0.000000), r17.xyzx - mad r17.xyz, r12.xyzx, l(0.072200, 0.072200, 0.072200, 0.000000), r17.xyzx - dp3 r7.w, r17.xyzx, r17.xyzx - max r7.w, r7.w, l(1.175494351E-38) - rsq r7.w, r7.w - mul r17.xyz, r7.wwww, r17.xyzx - mov r17.y, |r17.y| - mov r17.w, l(1.000000) - dp4 r13.x, r13.xyzw, r17.xyzw - dp4 r13.y, r14.xyzw, r17.xyzw - dp4 r13.z, r12.xyzw, r17.xyzw - max r12.xyz, r13.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - ge r7.w, r16.y, r16.z - and r7.w, r7.w, l(0x3f800000) - mov r13.xy, r16.zyzz - mov r13.zw, l(0,0,-1.000000,0.666666687) - mad r14.xy, r15.yzyy, r8.wwww, -r13.xyxx - mov r14.zw, l(0,0,1.000000,-1.000000) - mad r13.xyzw, r7.wwww, r14.xyzw, r13.xyzw - ge r7.w, r16.x, r13.x - and r7.w, r7.w, l(0x3f800000) - mov r14.xyz, r13.xywx - mov r14.w, r16.x - mov r13.xyw, r14.wywx - add r13.xyzw, -r14.xyzw, r13.xyzw - mad r13.xyzw, r7.wwww, r13.xyzw, r14.xyzw - min r7.w, r13.y, r13.w - add r7.w, -r7.w, r13.x - add r9.w, -r13.y, r13.w - mad r10.w, r7.w, l(6.000000), l(0.000100) - div r9.w, r9.w, r10.w - add r9.w, r9.w, r13.z - frc r9.w, |r9.w| - add r10.w, r13.x, l(0.000100) - div r7.w, r7.w, r10.w - add r14.xyzw, r9.wwww, l(-0.500000, 1.000000, 0.666666687, 0.333333343) - add r9.w, |r14.x|, l(-0.450000) - mul_sat r9.w, r9.w, l(-10.000001) - mad r10.w, r9.w, l(-2.000000), l(3.000000) - mul r9.w, r9.w, r9.w - mul r9.w, r9.w, r10.w - mad r9.w, r9.w, l(-0.350000), l(0.700000) - mov_sat r13.x, r13.x - mul r9.w, r9.w, r13.x - min r7.w, r7.w, r9.w - add r9.w, -r7.w, l(2.000000) - div r9.w, l(2.000000), r9.w - frc r13.xyz, r14.yzwy - mad r13.xyz, r13.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) - add_sat r13.xyz, |r13.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r13.xyz, r13.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) - mad r13.xyz, r7.wwww, r13.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mul r13.xyz, r9.wwww, r13.xyzx - max r7.w, r12.y, r12.x - max r7.w, r12.z, r7.w - mul r8.w, r8.w, r7.w - mov r7.w, l(1.000000) -else - mov r17.xyz, l(0,0,0,0) - mov r16.xyz, l(1.000000,1.000000,1.000000,0) - mov r13.xyz, cb0[188].xyzx - mov r7.w, l(0) -endif -add r9.w, -v2.y, cb1[r2.w + 12].z -add r9.w, r9.w, l(0.200000) -mul_sat r9.w, r9.w, l(2.85714269) -mad r10.w, r9.w, l(-2.000000), l(3.000000) -mul r9.w, r9.w, r9.w -mul r9.w, r9.w, r10.w -mul r9.w, r9.w, cb1[r2.w + 12].y -max r9.w, r9.w, cb1[r2.w + 12].w -add r10.w, r9.w, cb1[r2.w + 12].x -lt r10.w, l(0.010000), r10.w -if_nz r10.w - add r10.w, -r5.x, l(1.000000) - mul r12.xyz, r4.xyzx, r10.wwww - dp3 r12.x, r12.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r12.x, r12.x, l(-0.350000) - mul_sat r12.x, r12.x, l(-4.000000) - mad r12.y, r12.x, l(-2.000000), l(3.000000) - mul r12.x, r12.x, r12.x - mul r12.z, r12.x, r12.y - mul r14.xyzw, v8.xyxz, l(1.000000, -1.000000, 1.000000, 1.000000) - movc r14.xyzw, cb1[r2.w + 4].wwww, r14.xyzw, v8.xzxy - mul r15.xyzw, r14.xyzw, cb0[196].zzzz - movc r18.yz, cb1[r2.w + 4].wwww, v7.zzyz, v7.yyzy - mov r18.x, v7.x - add r19.xyz, |r18.xyzx|, l(-0.200000, -0.200000, -0.200000, 0.000000) - mul r20.xyz, r19.xyzx, r19.xyzx - mul r19.xyz, r19.xyzx, r20.xyzx - max r19.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - dp3 r12.w, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - div r19.xyz, r19.xyzx, r12.wwww - sample_b_indexable(texture2d)(float,float,float,float) r21.xyzw, r15.zyzz, t10.xyzw, s3, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.zwzz, t10.xyzw, s3, cb0[108].x - mul r22.xyzw, r19.zzzz, r22.xyzw - mad r21.xyzw, r21.xyzw, r19.yyyy, r22.xyzw - sample_b_indexable(texture2d)(float,float,float,float) r22.xyzw, r15.ywyy, t10.xyzw, s3, cb0[108].x - mad r19.xyzw, r22.xyzw, r19.xxxx, r21.xyzw - add r18.yw, -r19.wwww, l(0.000000, 0.800000, 0.000000, 0.450000) - mul r21.xyz, r7.yyxy, l(0.200000, 0.000000, 1.000000, 0.000000) - mad_sat r12.w, cb1[r2.w + 12].x, r10.w, r21.x - add r12.w, -r18.y, r12.w - mul_sat r12.w, r12.w, l(3.33333325) - mad r13.w, r12.w, l(-2.000000), l(3.000000) - mul r12.w, r12.w, r12.w - mul r12.w, r12.w, r13.w - mul_sat r10.w, r9.w, r10.w - add r10.w, -r18.w, r10.w - mul_sat r10.w, r10.w, l(1.53846145) - mad r13.w, r10.w, l(-2.000000), l(3.000000) - mul r10.w, r10.w, r10.w - mul r10.w, r10.w, r13.w - max r10.w, r10.w, r12.w - add r12.w, r5.x, l(-0.500000) - mul_sat r12.w, r12.w, l(4.000000) - mad r13.w, r12.w, l(-2.000000), l(3.000000) - mul r12.w, r12.w, r12.w - mul r12.w, r12.w, r13.w - add r5.w, -r5.w, l(0.199999988) - mul_sat r5.w, r5.w, l(-5.00000048) - mad r13.w, r5.w, l(-2.000000), l(3.000000) - mul r5.w, r5.w, r5.w - mul r5.w, r5.w, r13.w - mad r13.w, r5.w, r12.z, r12.w - min r13.w, r13.w, l(1.000000) - max r9.w, r9.w, cb1[r2.w + 12].x - mad r18.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mul r19.xyw, r15.yzyw, l(20.000000, 20.000000, 0.000000, 20.000000) - mul r22.xyz, r15.yzwy, l(34.345600, 34.345600, 34.345600, 0.000000) - mul r23.xyz, r20.xyzx, r20.xyzx - mul r23.xyz, r23.xyzx, r23.xyzx - mul r20.xyz, r20.xyzx, r23.xyzx - dp3 r14.x, r20.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - div r20.xyz, r20.xyzx, r14.xxxx - round_ni r23.xyzw, r19.yxyw - mul r24.xyzw, r23.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r24.xyzw, r24.xyzw - add r25.xyzw, r24.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r14.x, r24.xyxx, r25.xyxx - add r21.xw, r14.xxxx, r24.xxxy - mul r14.x, r21.w, r21.x - add r16.w, r21.w, r21.x - frc r14.x, r14.x - frc r26.w, r16.w - add r27.xyzw, r23.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) - mul r27.xyzw, r27.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r27.xyzw, r27.xyzw - add r28.xyzw, r27.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r16.w, r27.xyxx, r28.xyxx - add r21.xw, r16.wwww, r27.xxxy - mul r16.w, r21.w, r21.x - add r17.w, r21.w, r21.x - frc r24.x, r16.w - frc r24.y, r17.w - mad r16.w, r14.x, l(0.399999976), l(0.600000) - mul r17.w, r16.w, l(0.250000) - mad r23.xyzw, r15.zyzw, l(20.000000, 20.000000, 20.000000, 20.000000), -r23.xyzw - mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.xxxy - add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) - mul r23.x, r21.x, l(1.250000) - lt r19.y, r21.w, l(0.000000) - movc r19.y, r19.y, l(1.250000), l(0.750000) - mul r23.y, r19.y, r21.w - mad r14.x, cb0[102].x, l(3.000000), r14.x - frc r14.x, r14.x - add r21.xw, r14.xxxx, l(-0.200000, 0.000000, 0.000000, -0.850000) - mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) - mad r25.xy, r21.xwxx, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) - mul r21.xw, r21.xxxw, r21.xxxw - mul r21.xw, r21.xxxw, r25.xxxy - mul r14.x, r21.w, r21.x - dp2 r19.y, r23.xyxx, r23.xyxx - sqrt r19.y, r19.y - mad r16.w, -r16.w, l(0.250000), r19.y - div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r17.w - mul_sat r16.w, r16.w, r19.y - mad r19.y, r16.w, l(-2.000000), l(3.000000) - mul r16.w, r16.w, r16.w - mul r16.w, r16.w, r19.y - ge r16.w, r16.w, l(0.001000) - and r16.w, r16.w, l(0x3f800000) - mul r26.z, r14.x, r16.w - div r21.xw, r23.xxxy, r17.wwww - max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) - min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - ge r14.x, r26.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r21.xw, r14.xxxx, r21.xxxw - mad r14.x, r24.x, l(0.250000), l(0.250000) - mul r26.xy, r14.xxxx, r21.xwxx - dp2 r14.x, r24.zwzz, r25.zwzz - add r21.xw, r14.xxxx, r24.zzzw - mul r14.x, r21.w, r21.x - add r16.w, r21.w, r21.x - frc r14.x, r14.x - frc r24.w, r16.w - dp2 r16.w, r27.zwzz, r28.zwzz - add r21.xw, r16.wwww, r27.zzzw - mul r16.w, r21.w, r21.x - add r17.w, r21.w, r21.x - frc r23.x, r16.w - frc r23.y, r17.w - mad r16.w, r14.x, l(0.399999976), l(0.600000) - mul r17.w, r16.w, l(0.250000) - mad r21.xw, r23.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r21.xw, r21.xxxw, l(0.250000, 0.000000, 0.000000, 0.250000), r23.zzzw - add r21.xw, r21.xxxw, l(-0.500000, 0.000000, 0.000000, -0.500000) - mul r25.x, r21.x, l(1.250000) - lt r19.y, r21.w, l(0.000000) - movc r19.y, r19.y, l(1.250000), l(0.750000) - mul r25.y, r19.y, r21.w - mad r14.x, cb0[102].x, l(3.000000), r14.x - frc r14.x, r14.x - add r21.xw, r14.xxxx, l(-0.200000, 0.000000, 0.000000, -0.850000) - mul_sat r21.xw, r21.xxxw, l(50.000011, 0.000000, 0.000000, -3.33333325) - mad r23.yz, r21.xxwx, l(0.000000, -2.000000, -2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000) - mul r21.xw, r21.xxxw, r21.xxxw - mul r21.xw, r21.xxxw, r23.yyyz - mul r14.x, r21.w, r21.x - dp2 r19.y, r25.xyxx, r25.xyxx - sqrt r19.y, r19.y - mad r16.w, -r16.w, l(0.250000), r19.y - div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), -r17.w - mul_sat r16.w, r16.w, r19.y - mad r19.y, r16.w, l(-2.000000), l(3.000000) - mul r16.w, r16.w, r16.w - mul r16.w, r16.w, r19.y - ge r16.w, r16.w, l(0.001000) - and r16.w, r16.w, l(0x3f800000) - mul r24.z, r14.x, r16.w - div r21.xw, r25.xxxy, r17.wwww - max r21.xw, r21.xxxw, l(-1.000000, 0.000000, 0.000000, -1.000000) - min r21.xw, r21.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - ge r14.x, r24.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r21.xw, r14.xxxx, r21.xxxw - mad r14.x, r23.x, l(0.250000), l(0.250000) - mul r24.xy, r14.xxxx, r21.xwxx - round_ni r19.xy, r19.xwxx - mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r21.xw, r21.xxxw - add r23.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r14.x, r21.xwxx, r23.xyxx - add r21.xw, r14.xxxx, r21.xxxw - mul r14.x, r21.w, r21.x - add r16.w, r21.w, r21.x - frc r14.x, r14.x - frc r23.w, r16.w - add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) - mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r21.xw, r21.xxxw - add r25.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r16.w, r21.xwxx, r25.xyxx - add r21.xw, r16.wwww, r21.xxxw - mul r16.w, r21.w, r21.x - add r17.w, r21.w, r21.x - frc r25.x, r16.w - frc r25.y, r17.w - mad r16.w, r14.x, l(0.399999976), l(0.600000) - mul r17.w, r16.w, l(0.250000) - mad r19.xy, r15.ywyy, l(20.000000, 20.000000, 0.000000, 0.000000), -r19.xyxx - mad r21.xw, r25.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx - add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - mul r27.x, r19.x, l(1.250000) - lt r19.x, r19.y, l(0.000000) - movc r19.x, r19.x, l(1.250000), l(0.750000) - mul r27.y, r19.x, r19.y - mad r14.x, cb0[102].x, l(3.000000), r14.x - frc r14.x, r14.x - add r19.xy, r14.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) - mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) - mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r19.xy, r19.xyxx, r19.xyxx - mul r19.xy, r19.xyxx, r21.xwxx - mul r14.x, r19.y, r19.x - dp2 r19.x, r27.xyxx, r27.xyxx - sqrt r19.x, r19.x - mad r16.w, -r16.w, l(0.250000), r19.x - div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), -r17.w - mul_sat r16.w, r16.w, r19.x - mad r19.x, r16.w, l(-2.000000), l(3.000000) - mul r16.w, r16.w, r16.w - mul r16.w, r16.w, r19.x - ge r16.w, r16.w, l(0.001000) - and r16.w, r16.w, l(0x3f800000) - mul r23.z, r14.x, r16.w - div r19.xy, r27.xyxx, r17.wwww - max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r14.x, r23.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r19.xy, r14.xxxx, r19.xyxx - mad r14.x, r25.x, l(0.250000), l(0.250000) - mul r23.xy, r14.xxxx, r19.xyxx - mul r24.xyzw, r20.zzzz, r24.xyzw - mad r24.xyzw, r26.xyzw, r20.yyyy, r24.xyzw - mad r23.xyzw, r23.xyzw, r20.xxxx, r24.xyzw - round_ni r24.xyzw, r22.yxyz - mul r25.xyzw, r24.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r25.xyzw, r25.xyzw - add r26.xyzw, r25.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r14.x, r25.xyxx, r26.xyxx - add r19.xy, r14.xxxx, r25.xyxx - mul r14.x, r19.y, r19.x - add r16.w, r19.y, r19.x - frc r14.x, r14.x - frc r27.w, r16.w - add r28.xyzw, r24.xyzw, l(114.514000, 114.514000, 114.514000, 114.514000) - mul r28.xyzw, r28.xyzw, l(123.339996, 456.209991, 123.339996, 456.209991) - frc r28.xyzw, r28.xyzw - add r29.xyzw, r28.xyzw, l(34.345001, 34.345001, 34.345001, 34.345001) - dp2 r16.w, r28.xyxx, r29.xyxx - add r19.xy, r16.wwww, r28.xyxx - mul r16.w, r19.y, r19.x - add r17.w, r19.y, r19.x - frc r19.x, r16.w - frc r19.y, r17.w - mad r16.w, r14.x, l(0.399999976), l(0.600000) - mul r17.w, r16.w, l(0.250000) - mad r24.xyzw, r15.xyzw, l(34.345600, 34.345600, 34.345600, 34.345600), -r24.xyzw - mad r19.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.xxxy - add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) - mul r24.x, r19.y, l(1.250000) - lt r15.x, r19.w, l(0.000000) - movc r15.x, r15.x, l(1.250000), l(0.750000) - mul r24.y, r15.x, r19.w - mad r14.x, cb0[102].x, l(4.345600), r14.x - frc r14.x, r14.x - add r19.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) - mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) - mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r19.yw, r19.yyyw, r19.yyyw - mul r19.yw, r19.yyyw, r21.xxxw - mul r14.x, r19.w, r19.y - dp2 r15.x, r24.xyxx, r24.xyxx - sqrt r15.x, r15.x - mad r15.x, -r16.w, l(0.250000), r15.x - div r16.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r17.w - mul_sat r15.x, r15.x, r16.w - mad r16.w, r15.x, l(-2.000000), l(3.000000) - mul r15.x, r15.x, r15.x - mul r15.x, r15.x, r16.w - ge r15.x, r15.x, l(0.001000) - and r15.x, r15.x, l(0x3f800000) - mul r27.z, r14.x, r15.x - div r19.yw, r24.xxxy, r17.wwww - max r19.yw, r19.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) - min r19.yw, r19.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) - ge r14.x, r27.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r19.yw, r14.xxxx, r19.yyyw - mad r14.x, r19.x, l(0.250000), l(0.250000) - mul r27.xy, r14.xxxx, r19.ywyy - dp2 r14.x, r25.zwzz, r26.zwzz - add r19.xy, r14.xxxx, r25.zwzz - mul r14.x, r19.y, r19.x - add r15.x, r19.y, r19.x - frc r14.x, r14.x - frc r25.w, r15.x - dp2 r15.x, r28.zwzz, r29.zwzz - add r19.xy, r15.xxxx, r28.zwzz - mul r15.x, r19.y, r19.x - add r16.w, r19.y, r19.x - frc r19.x, r15.x - frc r19.y, r16.w - mad r15.x, r14.x, l(0.399999976), l(0.600000) - mul r16.w, r15.x, l(0.250000) - mad r19.yw, r19.xxxy, l(0.000000, 2.000000, 0.000000, 2.000000), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r19.yw, r19.yyyw, l(0.000000, 0.250000, 0.000000, 0.250000), r24.zzzw - add r19.yw, r19.yyyw, l(0.000000, -0.500000, 0.000000, -0.500000) - mul r24.x, r19.y, l(1.250000) - lt r17.w, r19.w, l(0.000000) - movc r17.w, r17.w, l(1.250000), l(0.750000) - mul r24.y, r17.w, r19.w - mad r14.x, cb0[102].x, l(4.345600), r14.x - frc r14.x, r14.x - add r19.yw, r14.xxxx, l(0.000000, -0.200000, 0.000000, -0.850000) - mul_sat r19.yw, r19.yyyw, l(0.000000, 50.000011, 0.000000, -3.33333325) - mad r21.xw, r19.yyyw, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r19.yw, r19.yyyw, r19.yyyw - mul r19.yw, r19.yyyw, r21.xxxw - mul r14.x, r19.w, r19.y - dp2 r17.w, r24.xyxx, r24.xyxx - sqrt r17.w, r17.w - mad r15.x, -r15.x, l(0.250000), r17.w - div r17.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w - mul_sat r15.x, r15.x, r17.w - mad r17.w, r15.x, l(-2.000000), l(3.000000) - mul r15.x, r15.x, r15.x - mul r15.x, r15.x, r17.w - ge r15.x, r15.x, l(0.001000) - and r15.x, r15.x, l(0x3f800000) - mul r25.z, r14.x, r15.x - div r19.yw, r24.xxxy, r16.wwww - max r19.yw, r19.yyyw, l(0.000000, -1.000000, 0.000000, -1.000000) - min r19.yw, r19.yyyw, l(0.000000, 1.000000, 0.000000, 1.000000) - ge r14.x, r25.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r19.yw, r14.xxxx, r19.yyyw - mad r14.x, r19.x, l(0.250000), l(0.250000) - mul r25.xy, r14.xxxx, r19.ywyy - round_ni r19.xy, r22.xzxx - mul r21.xw, r19.xxxy, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r21.xw, r21.xxxw - add r22.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r14.x, r21.xwxx, r22.xyxx - add r21.xw, r14.xxxx, r21.xxxw - mul r14.x, r21.w, r21.x - add r15.x, r21.w, r21.x - frc r14.x, r14.x - frc r22.w, r15.x - add r21.xw, r19.xxxy, l(114.514000, 0.000000, 0.000000, 114.514000) - mul r21.xw, r21.xxxw, l(123.339996, 0.000000, 0.000000, 456.209991) - frc r21.xw, r21.xxxw - add r24.xy, r21.xwxx, l(34.345001, 34.345001, 0.000000, 0.000000) - dp2 r15.x, r21.xwxx, r24.xyxx - add r21.xw, r15.xxxx, r21.xxxw - mul r15.x, r21.w, r21.x - add r16.w, r21.w, r21.x - frc r24.x, r15.x - frc r24.y, r16.w - mad r15.x, r14.x, l(0.399999976), l(0.600000) - mul r16.w, r15.x, l(0.250000) - mad r19.xy, r15.ywyy, l(34.345600, 34.345600, 0.000000, 0.000000), -r19.xyxx - mad r21.xw, r24.xxxy, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000) - mad r19.xy, r21.xwxx, l(0.250000, 0.250000, 0.000000, 0.000000), r19.xyxx - add r19.xy, r19.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - mul r26.x, r19.x, l(1.250000) - lt r17.w, r19.y, l(0.000000) - movc r17.w, r17.w, l(1.250000), l(0.750000) - mul r26.y, r17.w, r19.y - mad r14.x, cb0[102].x, l(4.345600), r14.x - frc r14.x, r14.x - add r19.xy, r14.xxxx, l(-0.200000, -0.850000, 0.000000, 0.000000) - mul_sat r19.xy, r19.xyxx, l(50.000011, -3.33333325, 0.000000, 0.000000) - mad r21.xw, r19.xxxy, l(-2.000000, 0.000000, 0.000000, -2.000000), l(3.000000, 0.000000, 0.000000, 3.000000) - mul r19.xy, r19.xyxx, r19.xyxx - mul r19.xy, r19.xyxx, r21.xwxx - mul r14.x, r19.y, r19.x - dp2 r17.w, r26.xyxx, r26.xyxx - sqrt r17.w, r17.w - mad r15.x, -r15.x, l(0.250000), r17.w - div r17.w, l(1.000000, 1.000000, 1.000000, 1.000000), -r16.w - mul_sat r15.x, r15.x, r17.w - mad r17.w, r15.x, l(-2.000000), l(3.000000) - mul r15.x, r15.x, r15.x - mul r15.x, r15.x, r17.w - ge r15.x, r15.x, l(0.001000) - and r15.x, r15.x, l(0x3f800000) - mul r22.z, r14.x, r15.x - div r19.xy, r26.xyxx, r16.wwww - max r19.xy, r19.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - min r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - ge r14.x, r22.z, l(0.001000) - and r14.x, r14.x, l(0x3f800000) - mul r19.xy, r14.xxxx, r19.xyxx - mad r14.x, r24.x, l(0.250000), l(0.250000) - mul r22.xy, r14.xxxx, r19.xyxx - mul r24.xyzw, r20.zzzz, r25.xyzw - mad r24.xyzw, r27.xyzw, r20.yyyy, r24.xyzw - mad r20.xyzw, r22.xyzw, r20.xxxx, r24.xyzw - max r19.xy, r20.zwzz, r23.zwzz - mad r20.zw, -r13.wwww, r9.wwww, l(0.000000, 0.000000, 1.000000, 1.010000) - add r14.x, r19.y, l(-0.100000) - ge r14.x, r14.x, r20.z - and r14.x, r14.x, l(0x3f800000) - mul r14.x, r14.x, r19.x - ge r2.w, cb1[r2.w + 12].x, l(0.010000) - and r2.w, r2.w, l(0x3f800000) - mul r2.w, r2.w, r14.x - lt r14.x, l(0.001000), r2.w - add r19.xy, r20.xyxx, r23.xyxx - mul r15.x, cb0[102].x, cb0[196].z - mul r20.y, r15.x, l(0.750000) - dp2 r15.x, r18.xzxx, r18.xzxx - max r15.x, r15.x, l(1.175494351E-38) - rsq r15.x, r15.x - mul r18.xz, r15.xxxx, r18.xxzx - add r18.xz, |r18.xxzx|, l(-0.200000, 0.000000, -0.200000, 0.000000) - mul r21.xw, r18.xxxz, r18.xxxz - mul r18.xz, r18.xxzx, r21.xxwx - max r18.xz, r18.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) - dp2 r15.x, r18.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) - div r18.xz, r18.xxzx, r15.xxxx - sample_b_indexable(texture2d)(float,float,float,float) r22.xyz, r15.zwzz, t11.xyzw, s3, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, r15.ywyy, t11.xyzw, s3, cb0[108].x - mul r15.xyz, r18.xxxx, r15.xyzx - mad r15.xyz, r22.xyzx, r18.zzzz, r15.xyzx - movc r18.yw, r14.xxxx, r19.xxxy, r18.yyyw - mad r15.xy, r15.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mov r20.x, l(0) - mad r14.xyzw, r14.zwyw, cb0[196].zzzz, r20.xyxy - sample_b_indexable(texture2d)(float,float,float,float) r14.x, r14.xyxx, t11.wxyz, s3, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r14.y, r14.zwzz, t11.xwyz, s3, cb0[108].x - mul r14.y, r18.x, r14.y - mad r14.x, r14.x, r18.z, r14.y - mad r14.xy, r15.xyxx, r14.xxxx, r18.ywyy - ge r14.z, r19.z, r20.w - and r14.z, r14.z, l(0x3f800000) - max r2.w, r2.w, r14.z - add r14.z, -r15.z, l(1.000000) - mad r9.w, r13.w, r9.w, -r14.z - mul_sat r9.w, r9.w, l(9.999998) - mad r13.w, r9.w, l(-2.000000), l(3.000000) - mul r9.w, r9.w, r9.w - mul r9.w, r9.w, r13.w - max r2.w, r2.w, r9.w - mad r14.zw, -r7.zzzy, l(0.000000, 0.000000, 1.000000, 0.000000), r21.yyyz - dp2 r9.w, r14.zwzz, r14.zwzz - lt r13.w, l(0.0000610351562), r9.w - rsq r9.w, r9.w - mul r14.zw, r9.wwww, r14.zzzw - mov r14.zw, -r14.zzzw - movc r15.z, r13.w, r14.z, l(-1.000000) - and r15.y, r13.w, r14.w - min r9.w, r3.z, l(0.050000) - add r13.w, -r3.z, r9.w - mad r13.w, r2.w, r13.w, r3.z - mad r12.x, -r12.y, r12.x, l(1.000000) - mul r12.x, r10.w, r12.x - mad r5.w, -r5.w, r12.z, l(1.000000) - mul r5.w, r5.w, r12.x - mad r5.w, r5.w, l(-0.500000), l(1.000000) - mov r15.x, l(0) - mad r3.xyw, -r3.xyxw, r6.wwww, r15.zxzy - mad r3.xyw, r14.xxxx, r3.xyxw, r7.xyxz - mul r14.xzw, r7.zzxy, r15.xxyz - mad r14.xzw, r7.yyzx, r15.yyzx, -r14.xxzw - add r14.xzw, -r3.xxyw, r14.xxzw - mad r3.xyw, r14.yyyy, r14.xzxw, r3.xyxw - dp3 r6.w, r3.xywx, r3.xywx - rsq r6.w, r6.w - mad r3.xyw, r3.xyxw, r6.wwww, -r7.xyxz - mad r3.xyw, r2.wwww, r3.xyxw, r7.xyxz - dp3 r6.w, r3.xywx, r3.xywx - rsq r6.w, r6.w - mul r3.xyw, r3.xyxw, r6.wwww - mul r6.w, r12.z, r10.w - mad r6.w, -r6.w, l(0.200000), r13.w - min r10.w, r13.w, l(0.200000) - max r3.z, r6.w, r10.w - mul r6.xyz, r5.wwww, r6.xyzx - dp3 r6.w, r4.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r6.w, r6.w, l(-0.700000) - mul_sat r6.w, r6.w, l(-2.50000024) - mad r10.w, r6.w, l(-2.000000), l(3.000000) - mul r6.w, r6.w, r6.w - mul r6.w, r6.w, r10.w - mad r6.w, r6.w, l(0.500000), l(1.000000) - mul r10.w, r12.w, r2.w - mad r12.xyz, r4.xyzx, r6.wwww, -r4.xyzx - mad r12.xyz, r10.wwww, r12.xyzx, r4.xyzx - mul r4.xyz, r5.wwww, r12.xyzx -else - mov r3.xyw, r7.xyxz - mov r9.w, l(0.010000) - mov r2.w, l(0) -endif -mul r5.w, r5.y, l(0.040000) -mad r6.w, -r5.x, l(0.960000), l(0.960000) -mul r12.xyz, r4.xyzx, r6.wwww -mad r14.xyz, -r5.yyyy, l(0.040000, 0.040000, 0.040000, 0.000000), r4.xyzx -mad r14.xyz, r5.xxxx, r14.xyzx, r5.wwww -mul r6.xyz, r6.wwww, r6.xyzx -mul r5.y, r3.z, r3.z -max r5.y, r5.y, l(0.00781250000) -max r5.w, v5.z, l(9.999999939E-09) -div r15.xy, v5.xyxx, r5.wwww -max r5.w, v6.z, l(9.999999939E-09) -div r15.zw, v6.xxxy, r5.wwww -add r15.xy, -r15.zwzz, r15.xyxx -mul r18.xy, r15.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) -sqrt r18.xy, |r18.xyxx| -sqrt r18.xy, r18.xyxx -mov r15.z, -r15.y -lt r15.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xxxz -lt r15.xz, r15.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r15.xy, -r15.ywyy, r15.xzxx -itof r15.xy, r15.xyxx -mul r15.xy, r15.xyxx, r18.xyxx -mad o1.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -lt r5.w, l(0.500000), r2.w -movc o1.w, r5.w, l(0.700000), l(0.400000) -add r15.xyz, cb0[197].xyzx, cb3[0].xyzx -mad r15.xyz, cb0[187].wwww, r15.xyzx, -cb3[0].xyzx -mov r15.w, l(0.0000610351562) -dp3 r5.w, r15.xzwx, r15.xzwx -rsq r5.w, r5.w -mul r18.xyz, r5.wwww, r15.xwzx -add r19.xyz, cb0[191].xyzx, -cb3[3].xyzx -mad r19.xyz, cb0[198].yyyy, r19.xyzx, cb3[3].xyzx -add r5.w, l(1.000000), -cb3[3].w -mad r5.w, cb0[198].w, r5.w, cb3[3].w -mul r20.xyz, r5.wwww, r19.xyzx -mov r11.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r21.xy, r11.xyzz, t3.xyzw -add r10.w, r21.x, l(-1.000000) -mad r10.w, cb4[34].x, r10.w, l(1.000000) -add r11.z, -r10.w, l(1.000000) -mad r10.w, cb0[187].z, r11.z, r10.w -dp3 r11.z, r7.xyzx, r15.xyzx -mul r21.xzw, r6.xxyz, cb0[186].zzzz -mul r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000) -dp3 r12.w, r12.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -dp2 r13.w, cb0[6].xzxx, cb0[6].xzxx -rsq r13.w, r13.w -mul r23.xy, r13.wwww, cb0[6].xzxx -dp2 r13.w, r18.xzxx, r23.xyxx -mov_sat r13.w, -r13.w -add r23.xy, l(1.000000, 1.000000, 0.000000, 0.000000), -cb0[198].xyxx -mad r14.w, r11.z, l(0.500000), l(-1.000000) -mad r14.w, -r11.z, r14.w, -r11.z -add r15.w, l(0.750000), -|cb0[6].y| -add_sat r15.w, r15.w, r15.w -mad r16.w, r15.w, l(-2.000000), l(3.000000) -mul r15.w, r15.w, r15.w -mul r15.w, r15.w, r16.w -mul r15.w, r13.w, r15.w -mul r15.w, r23.x, r15.w -add r14.w, r14.w, l(0.500000) -mad r11.z, r15.w, r14.w, r11.z -mad r11.z, cb0[197].w, cb0[198].x, r11.z -max r11.z, r11.z, l(-1.000000) -min r11.z, r11.z, l(1.000000) -add r11.z, r11.z, l(-0.250000) -mul r11.z, r11.z, l(1.33333337) -max r11.z, r11.z, l(0.000000) -mad r14.w, r11.z, l(-2.000000), l(3.000000) -mul r11.z, r11.z, r11.z -mul r11.z, r11.z, r14.w -dp3 r14.w, r7.xyzx, cb0[6].xyzx -add r14.w, r14.w, l(-0.250000) -mul_sat r14.w, r14.w, l(1.33333337) -mad r15.w, r14.w, l(-2.000000), l(3.000000) -mul r14.w, r14.w, r14.w -mul r14.w, r14.w, r15.w -mul r15.w, r5.z, r21.y -min r16.w, r5.z, r21.y -min r17.w, r11.z, r16.w -mul r18.w, r14.w, r15.w -dp3 r19.w, r7.xyzx, cb0[192].xyzx -add_sat r19.w, r19.w, cb0[193].x -mad r19.w, r19.w, cb0[193].y, cb0[193].z -mul r20.w, r17.w, cb0[187].y -add r24.xyz, -r13.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r24.xyz, r20.wwww, r24.xyzx, r13.xyzx -mul r24.xyz, r19.wwww, r24.xyzx -mad r19.w, r8.w, l(0.350000024), l(0.650000) -min r19.w, r19.w, l(1.500000) -max r25.xyz, r8.wwww, l(1.250000, 0.000000, 0.500000, 0.000000) -min r25.xyz, r25.xyzx, l(1.750000, 1.500000, 1.500000, 0.000000) -add r8.w, -r19.w, r25.x -mad r8.w, cb0[187].x, r8.w, r19.w -mul r26.xyz, r8.wwww, r24.xyzx -mul r26.xyz, r26.xyzx, cb0[186].wwww -dp3 r8.w, r20.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r20.xyz, r19.xyzx, r5.wwww, -r8.wwww -mad r20.xyz, r17.wwww, r20.xyzx, r8.wwww -mul r24.xyz, r24.xyzx, r25.yyyy -mad r23.yzw, r19.xxyz, cb0[198].yyyy, r23.yyyy -mad r20.xyz, r24.xyzx, r23.yzwy, r20.xyzx -mad r20.xyz, r20.xyzx, cb0[186].yyyy, -r26.xyzx -mad r20.xyz, r10.wwww, r20.xyzx, r26.xyzx -dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mad r22.xyz, r21.xzwx, l(0.650000, 0.650000, 0.650000, 0.000000), -r8.wwww -mad r22.xyz, r22.xyzx, l(1.200000, 1.200000, 1.200000, 0.000000), r8.wwww -mad_sat r8.w, r14.w, r15.w, r11.z -mad r23.yzw, r6.xxyz, cb0[186].zzzz, -r22.xxyz -mad r22.xyz, r8.wwww, r23.yzwy, r22.xyzx -mad r23.yzw, r4.xxyz, r6.wwww, -r22.xxyz -mad r22.xyz, r17.wwww, r23.yzwy, r22.xyzx -mad r23.yzw, r4.xxyz, r6.wwww, -r12.wwww -mad r23.yzw, r23.yyzw, l(0.000000, 1.200000, 1.200000, 1.200000), r12.wwww -mad r23.yzw, -r6.xxyz, cb0[186].zzzz, r23.yyzw -mad r21.xzw, r18.wwww, r23.yyzw, r21.xxzw -dp3 r8.w, r22.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -max r11.z, r8.w, l(0.001000) -div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z -mul r8.w, r8.w, r11.z -max r8.w, r8.w, l(0.000000) -min r8.w, r8.w, l(1.500000) -mad r22.xyz, r22.xyzx, r8.wwww, -r21.xzwx -mad r21.xzw, r10.wwww, r22.xxyz, r21.xxzw -mad r8.w, -r14.w, r15.w, r17.w -mad r8.w, r10.w, r8.w, r18.w -add r11.z, l(1.000000), -cb0[186].z -mad r11.z, r8.w, r11.z, cb0[186].z -add r14.w, r15.y, l(-0.500000) -mad r22.y, r10.w, r14.w, l(0.500000) -dp3_sat r24.x, r3.xywx, r2.xyzx -mov r22.xz, cb0[6].xxzx -dp3 r14.w, r22.xyzx, r22.xyzx -max r14.w, r14.w, l(1.175494351E-38) -rsq r14.w, r14.w -mul r22.xyz, r14.wwww, r22.xyzx -add r22.xyz, r22.xyzx, r22.xyzx -mad r15.xyz, r15.xyzx, r10.wwww, r22.xyzx -add r14.w, r10.w, l(2.000000) -mad r15.xyz, r2.xyzx, r14.wwww, r15.xyzx -dp3 r14.w, r15.xyzx, r15.xyzx -rsq r14.w, r14.w -mul r15.xyz, r14.wwww, r15.xyzx -dp3 r14.w, r3.xywx, r15.xyzx -mul r15.x, r5.y, r5.y -mad r15.y, r14.w, r15.x, -r14.w -mad r14.w, r15.y, r14.w, l(1.000000) -mul r14.w, r14.w, r14.w -add r15.y, l(1.000000), -cb5[1].z -mad r15.y, r4.w, cb5[1].z, r15.y -mul r22.xyz, r20.xyzx, r21.xzwx -ne r15.z, r14.w, r15.x -div r14.w, r15.x, r14.w -movc r14.w, r15.z, r14.w, l(1.000000) -mad r15.x, r24.x, l(2.000000), r5.y -add r15.x, r15.x, l(0.000100) -div r15.x, l(0.500000), r15.x -mad r14.w, r14.w, r15.x, l(-0.0000610351562) -max r14.w, r14.w, l(0.000000) -min r14.w, r14.w, l(20.000000) -mul r15.xzw, r14.wwww, r14.xxyz -mad r8.w, r8.w, l(0.500000), l(0.500000) -mul r8.w, r11.z, r8.w -mul r20.xyz, r8.wwww, r20.xyzx -mul r15.xzw, r15.xxzw, r20.xxyz -mul r15.xzw, r15.xxzw, cb0[199].wwww -mad r15.xzw, r22.xxyz, r15.yyyy, r15.xxzw -dp3 r8.w, r15.xzwx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r14.w, r8.w, l(-0.500000) -max r14.w, r14.w, l(0.000000) -min r14.w, r14.w, l(0.500000) -mov r20.y, l(0) -mov r20.xz, cb0[195].yyxy -mul r22.xyz, r20.xyzx, cb0[6].zxyz -mad r20.xyz, cb0[6].yzxy, r20.yzxy, -r22.xyzx -dp3 r17.w, r20.xyzx, r20.xyzx -rsq r17.w, r17.w -mul r20.xyz, r17.wwww, r20.xyzx -dp3 r17.w, r2.xyzx, r7.xyzx -add r22.xy, -|r17.wwww|, l(1.000000, 0.399999976, 0.000000, 0.000000) -dp3 r18.x, r18.xyzx, r7.xyzx -add r18.y, -r10.w, l(1.000000) -add r9.w, -r3.z, r9.w -mad r2.w, r2.w, r9.w, r3.z -mul r26.y, r2.w, r2.w -mul r27.x, r24.x, r24.x -mul r27.z, r24.x, r27.x -mul r9.w, r26.y, r26.y -mul r26.z, r26.y, r9.w -mov r24.yzw, l(0,0.0365463011,9.063200,0.990440) -dp2 r25.x, l(3.327070, 1.000000, 0.000000, 0.000000), r24.xyxx -dp2 r25.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r24.xzxx -mov r26.x, l(1.000000) -dp2 r9.w, r25.xyxx, r26.xyxx -mov r27.yw, l(0,9.044010,0,1.000000) -dp3 r28.x, l(3.596850, -1.367720, 1.000000, 0.000000), r27.xzwx -dp3 r28.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r27.xyzx -mov r29.x, l(5.565890) -mov r29.yz, r27.xxzx -dp3 r28.z, l(1.000000, 19.788601, -20.212299, 0.000000), r29.xyzx -dp3 r18.z, r28.xyzx, r26.xyzx -div r9.w, r9.w, r18.z -dp2 r25.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r24.xwxx -mov r27.x, l(1.296780) -mov r27.y, r24.x -dp2 r25.y, l(1.000000, -0.755907, 0.000000, 0.000000), r27.xyxx -dp2 r18.z, r25.xyxx, r26.xyxx -dp3 r28.x, l(2.923380, 59.418800, 1.000000, 0.000000), r27.yzwy -mov r27.xw, l(20.322500,0,0,121.563004) -dp3 r28.y, l(1.000000, -27.030199, 222.591995, 0.000000), r27.xyzx -dp3 r28.z, l(626.130005, 316.627014, 1.000000, 0.000000), r27.yzwy -dp3 r18.w, r28.xyzx, r26.xyzx -div r18.z, r18.z, r18.w -mad r23.yzw, r14.xxyz, r9.wwww, r18.zzzz -add r9.w, r9.w, r18.z -mad r14.w, r14.w, r14.w, l(1.000000) -add r15.xzw, -r8.wwww, r15.xxzw -mad r15.xzw, r14.wwww, r15.xxzw, r8.wwww -mad r18.zw, cb0[195].wwww, l(0.000000, 0.000000, -0.600000, -0.399999976), l(0.000000, 0.000000, 0.800000, 0.900000) -add r8.w, -r18.z, r18.w -add r14.w, -r18.z, r22.x -div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w -mul_sat r8.w, r8.w, r14.w -mad r14.w, r8.w, l(-2.000000), l(3.000000) -mul r8.w, r8.w, r8.w -mul r8.w, r8.w, r14.w -mul r24.yzw, r8.wwww, cb0[194].xxyz -mul r24.yzw, r24.yyzw, cb0[194].wwww -dp3 r8.w, r9.xyzx, r20.xyzx -add_sat r8.w, r8.w, l(1.000000) -min r5.z, r5.z, r8.w -min r5.z, r21.y, r5.z -mul r24.yzw, r5.zzzz, r24.yyzw -mad r25.xyw, r4.xyxz, r6.wwww, l(-0.250000, -0.250000, 0.000000, -0.250000) -mad r25.xyw, cb0[195].zzzz, r25.xyxw, l(0.250000, 0.250000, 0.000000, 0.250000) -dp3_sat r5.z, r20.xyzx, r7.xyzx -mul r20.xyz, r5.zzzz, r25.xywx -max r5.z, r16.y, r16.x -max r5.z, r16.z, r5.z -mul r5.z, r5.z, l(0.500000) -max r5.z, r5.z, l(1.000000) -div r5.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.z -mul r16.xyz, r5.zzzz, r16.xyzx -mad r19.xyz, r19.xyzx, r5.wwww, -r16.xyzx -mad r16.xyz, r10.wwww, r19.xyzx, r16.xyzx -dp3 r5.z, r17.xyzx, r7.xyzx -mul r5.w, r7.w, r5.z -mad r8.w, r18.x, l(0.500000), l(-1.000000) -mad r8.w, -r18.x, r8.w, l(0.500000) -mad r5.z, -r5.z, r7.w, r8.w -mad_sat r5.z, r10.w, r5.z, r5.w -mul r16.xyz, r5.zzzz, r16.xyzx -mad r5.z, r13.w, r10.w, r18.y -mul r5.z, r23.x, r5.z -mul r16.xyz, r5.zzzz, r16.xyzx -mul_sat r5.z, r22.y, l(5.00000048) -mad r5.w, r5.z, l(-2.000000), l(3.000000) -mul r5.z, r5.z, r5.z -mul r5.z, r5.z, r5.w -mul r16.xyz, r5.zzzz, r16.xyzx -mul r16.xyz, r16.wwww, r16.xyzx -add r5.z, r12.w, l(-0.100000) -mul_sat r5.z, r5.z, l(-16.666666) -mad r5.w, r5.z, l(-2.000000), l(3.000000) -mul r5.z, r5.z, r5.z -mul r5.z, r5.z, r5.w -mad r5.z, r5.z, r10.w, r18.y -mul r16.xyz, r5.zzzz, r16.xyzx -max r17.xyz, r12.xyzx, l(0.150000, 0.150000, 0.150000, 0.000000) -mul r16.xyz, r16.xyzx, r17.xyzx -mad r16.xyz, r24.yzwy, r20.xyzx, r16.xyzx -add r15.xzw, r15.xxzw, r16.xxyz -utof r5.zw, r11.xxxy -mul r16.xy, r5.zwzz, l(0.031250, 0.031250, 0.000000, 0.000000) -round_ni r16.xy, r16.xyxx -mad r7.w, r16.y, cb2[1].y, r16.x -mul r7.w, r7.w, l(8.000000) -ftoi r7.w, r7.w -mad r8.w, -cb0[85].y, cb2[2].w, v0.w -round_ni r8.w, r8.w -add r10.w, l(-1.000000), cb2[1].w -max r12.w, r8.w, l(0.000000) -min r10.w, r10.w, r12.w -mul r12.w, r10.w, l(8.000000) -ftoi r12.w, r12.w -mul r8.xyz, r8.xyzx, cb5[6].xyzx -mul r8.xyz, r8.xyzx, cb5[1].wwww -mad r8.xyz, r8.xyzx, r15.yyyy, r15.xzwx -dp3 r13.w, -r2.xyzx, r3.xywx -add r13.w, r13.w, r13.w -mad r15.xzw, r3.xxyw, -r13.wwww, -r2.xxyz -max r2.w, r2.w, l(0.001000) -log r2.w, r2.w -mad r2.w, r2.w, l(1.200000), l(5.000000) -sample_l_indexable(texturecube)(float,float,float,float) r15.xzw, r15.xzwx, t16.xwyz, s0, r2.w -add r2.w, -r9.w, l(1.000000) -div r2.w, r2.w, r9.w -mul r16.xyz, r2.wwww, r14.xyzx -mad r16.xyz, r16.xyzx, r23.yzwy, r23.yzwy -mul r15.xzw, r15.xxzw, r16.xxyz -mul r2.w, r25.z, cb0[186].w -mul r2.w, r11.z, r2.w -mul r15.xzw, r2.wwww, r15.xxzw -mad r8.xyz, r15.xzwx, r13.xyzx, r8.xyzx -ge r2.w, r10.w, r8.w -iadd r8.w, r12.w, cb0[110].y -mad r9.w, r18.y, l(-0.250000), l(0.750000) -mad r4.xyz, r4.xyzx, r6.wwww, l(-0.500000, -0.500000, -0.500000, 0.000000) -add r6.w, -r5.y, l(0.010000) -ge r5.x, r5.x, l(0.500000) -and r5.x, r5.x, l(0x3f800000) -mov r13.w, l(1.000000) -mov r15.xzw, r8.xxyz -mov r10.w, l(0) -loop - ilt r11.z, l(7), r10.w - breakc_nz r11.z - iadd r11.z, r7.w, r10.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.z, r11.z, l(0), t0.xxxx - iadd r12.w, r8.w, r10.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx - and r11.z, r11.z, r12.w - and r11.z, r2.w, r11.z - ishl r12.w, r10.w, l(5) - mov r16.xyz, r15.xzwx - mov r14.w, r11.z - loop - breakc_z r14.w - firstbit_lo r16.w, r14.w - ishl r17.x, l(1), r16.w - xor r17.x, r14.w, r17.x - iadd r16.w, r12.w, r16.w - bfi r18.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 5, 6, 7) - ftou r17.y, cb3[r18.y + 6].w - ieq r17.y, r17.y, l(1) - if_nz r17.y - add r13.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx - and r19.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r18.y + 6].xzyx - and r20.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r18.z + 6].yxzy - ushr r22.yzw, cb3[r18.y + 6].xxzy, l(0, 16, 16, 16) - ushr r23.xyz, cb3[r18.z + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r19.xyz, r19.xyzx - f16tof32 r20.xyz, r20.xyzx - f16tof32 r25.xyz, r22.yzwy - f16tof32 r23.xyw, r23.yxyz - mov r26.xz, r19.xxzx - mov r26.yw, r25.xxxz - dp4 r17.y, r13.xyzw, r26.xyzw - mov r25.x, r19.y - mov r25.z, r20.y - mov r25.w, r23.x - dp4 r17.z, r13.xyzw, r25.xyzw - mov r23.xz, r20.xxzx - dp4 r13.x, r13.xyzw, r23.xyzw - max r13.y, |r17.z|, |r17.y| - max r13.x, |r13.x|, r13.y - mad r13.y, cb3[r18.w + 6].x, l(0.500000), l(0.500000) - add r13.x, -r13.y, r13.x - mad r13.y, -cb3[r18.w + 6].x, l(0.500000), l(0.500000) - div_sat r13.x, r13.x, r13.y - add r13.x, -r13.x, l(1.000000) - mul r13.x, r13.x, r13.x - else - mov r13.x, l(1.000000) - endif - lt r13.y, r13.x, l(0.001000) - if_nz r13.y - mov r14.w, r17.x - continue - endif - ishl r13.y, r16.w, l(3) - lt r13.z, cb3[r13.y + 6].w, l(1.500000) - if_nz r13.z - bfi r13.z, l(29), l(3), r16.w, l(3) - ieq r17.y, l(16), cb3[r13.z + 6].w - add r17.z, cb0[198].z, cb3[r13.z + 6].z - lt r17.z, r17.z, l(0.500000) - or r17.y, r17.z, r17.y - if_z r17.y - bfi r17.yz, l(0, 29, 29, 0), l(0, 3, 3, 0), r16.wwww, l(0, 2, 4, 0) - ftou r16.w, cb3[r13.y + 6].w - and r16.w, r16.w, l(1) - ieq r18.y, r16.w, l(0) - not r18.y, r18.y - lt r19.x, l(0.000000), cb3[r17.y + 6].z - and r18.y, r18.y, r19.x - ieq r19.x, l(4), cb3[r13.z + 6].w - movc r19.y, r16.w, l(0), l(1.000000) - mad r19.z, cb3[r17.y + 6].y, l(0.500000), l(0.500000) - add r20.z, r19.z, -|cb3[r17.y + 6].x| - add r20.x, -r20.z, cb3[r17.y + 6].y - add r19.z, -|r20.z|, l(1.000000) - add r19.z, -|r20.x|, r19.z - max r19.z, r19.z, l(0.000488281250) - ge r19.w, cb3[r17.y + 6].x, l(0.000000) - movc r20.y, r19.w, r19.z, -r19.z - dp3 r19.z, r20.xyzx, r20.xyzx - rsq r19.z, r19.z - mul r20.xyz, r19.zzzz, r20.xyzx - add r19.z, cb3[r17.z + 6].y, cb3[r17.z + 6].y - max r19.z, r19.z, l(0.100000) - and r19.w, r19.x, l(0x3f800000) - add r19.z, r19.z, -cb3[r18.z + 6].w - mad r18.z, r19.w, r19.z, cb3[r18.z + 6].w - add r22.yzw, -v2.xxyz, cb3[r18.x + 6].xxyz - dp3 r19.z, r22.zwyz, -r20.xyzx - lt r19.w, l(0.500000), cb3[r17.z + 6].z - and r19.w, r19.w, r19.x - and r19.w, r19.w, l(0x3f800000) - mul r19.w, r19.y, r19.w - mad r23.xyz, -r20.zxyz, r19.zzzz, -r22.yzwy - mad r22.yzw, r19.wwww, r23.xxyz, r22.yyzw - dp3 r19.z, r22.yzwy, r22.yzwy - rsq r19.w, r19.z - mul r23.xyz, r19.wwww, r22.yzwy - if_nz r18.y - mul r24.yzw, r20.zzxy, cb3[r17.y + 6].zzzz - mad r25.xyz, -r24.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), r22.yzwy - mad r24.yzw, r24.yyzw, l(0.000000, 0.500000, 0.500000, 0.500000), r22.yyzw - dp3 r19.w, r25.xyzx, r25.xyzx - sqrt r19.w, r19.w - dp3 r20.w, r24.yzwy, r24.yzwy - sqrt r20.w, r20.w - mul r26.xyz, r20.xyzx, r23.xyzx - mad r26.xyz, r20.zxyz, r23.yzxy, -r26.xyzx - mul r27.xyz, r20.xyzx, r26.xyzx - mad r26.xyz, r26.zxyz, r20.yzxy, -r27.xyzx - dp3 r21.y, r26.xyzx, r26.xyzx - rsq r21.y, r21.y - mul r23.xyz, r21.yyyy, r26.xyzx - dp3 r21.y, r25.xyzx, r24.yzwy - mad r21.y, r19.w, r20.w, r21.y - mad r21.y, r21.y, l(0.500000), l(1.000000) - div r21.y, l(1.000000, 1.000000, 1.000000, 1.000000), r21.y - dp3 r23.w, r23.xyzx, r25.xyzx - div r19.w, r23.w, r19.w - dp3 r23.w, r23.xyzx, r24.yzwy - div r20.w, r23.w, r20.w - add r19.w, r19.w, r20.w - mul_sat r19.w, r19.w, l(0.500000) - mul r19.w, r19.w, r21.y - else - mov r19.w, l(1.000000) - endif - lt r20.w, r18.z, l(0.000000) - if_nz r20.w - mul r20.w, cb3[r18.x + 6].w, cb3[r18.x + 6].w - mul r20.w, r19.z, r20.w - mad r20.w, -r20.w, r20.w, l(1.000000) - max r20.w, r20.w, l(0.000000) - add r19.z, r19.z, l(1.000000) - div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z - and r21.y, r18.y, l(0x3f800000) - add r23.w, -r19.z, r19.w - mad r19.z, r21.y, r23.w, r19.z - mul r20.w, r20.w, r20.w - mul r19.z, r19.z, r20.w - else - mul r24.yzw, r22.yyzw, cb3[r18.x + 6].wwww - dp3 r20.w, r24.yzwy, r24.yzwy - min r20.w, r20.w, l(1.000000) - add r20.w, -r20.w, l(1.000000) - log r20.w, r20.w - mul r18.z, r18.z, r20.w - exp r18.z, r18.z - mul r19.z, r18.z, r19.w - endif - dp3 r18.z, r23.yzxy, -r20.xyzx - add r18.z, r18.z, -cb3[r17.y + 6].z - mul_sat r18.z, r18.z, cb3[r17.y + 6].w - mad r18.z, r18.z, r18.z, l(-1.000000) - mad r18.z, r19.y, r18.z, l(1.000000) - mul r18.z, r18.z, r19.z - ftoi r19.y, cb3[r18.w + 6].w - not r18.y, r18.y - ige r19.z, r19.y, l(0) - and r18.y, r18.y, r19.z - if_nz r18.y - if_z r16.w - ishl r18.y, r19.y, l(2) - mul r20.xyz, v2.yyyy, cb6[r18.y + 33].xywx - mad r20.xyz, cb6[r18.y + 32].xywx, v2.xxxx, r20.xyzx - mad r20.xyz, cb6[r18.y + 34].xywx, v2.zzzz, r20.xyzx - add r20.xyz, r20.xyzx, cb6[r18.y + 35].xywx - div_sat r19.zw, r20.xxxy, r20.zzzz - mad r19.zw, r19.zzzw, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy - else - ishl r18.y, r19.y, l(2) - dp3 r20.x, -r22.yzwy, cb6[r18.y + 32].xyzx - dp3 r20.y, -r22.yzwy, cb6[r18.y + 33].xyzx - dp3 r20.z, -r22.yzwy, cb6[r18.y + 34].xyzx - lt r18.y, |r20.x|, |r20.y| - and r18.y, r18.y, l(1) - dp2 r20.w, |r20.xyxx|, icb[r18.y + 0].xyxx - lt r20.w, r20.w, |r20.z| - movc r18.y, r20.w, l(2), r18.y - dp3 r20.w, r20.xyzx, icb[r18.y + 0].xyzx - lt r20.w, r20.w, l(0.000000) - bfi r18.y, l(31), l(1), r18.y, r20.w - ushr r20.w, r18.y, l(1) - dp3 r20.w, r20.xyzx, icb[r20.w + 0].xyzx - div r21.y, l(0.000244140625), cb6[r19.y + 0].w - add r21.y, -r21.y, l(0.500000) - utof r22.y, r18.y - ult r22.z, r18.y, l(2) - and r22.z, r22.z, l(2) - dp2 r20.x, r20.xzxx, icb[r22.z + 0].xzxx - mul r20.x, r20.x, icb[r18.y + 4].z - div r20.x, r20.x, |r20.w| - mad r20.x, r20.x, r21.y, r22.y - add r20.x, r20.x, l(0.500000) - mul_sat r25.x, r20.x, l(0.166666672) - iadd r20.x, l(-1), icb[r18.y + 4].y - dp2 r20.x, r20.yzyy, icb[r20.x + 0].xyxx - mul r18.y, r20.x, icb[r18.y + 4].w - div r18.y, r18.y, |r20.w| - mad_sat r25.y, -r18.y, r21.y, l(0.500000) - mad r19.zw, r25.xxxy, cb6[r19.y + 0].zzzw, cb6[r19.y + 0].xxxy - endif - sample_l_indexable(texture2d)(float,float,float,float) r18.y, r19.zwzz, t17.yxzw, s0, l(0.000000) - mul r18.z, r18.y, r18.z - endif - mul r13.x, r13.x, r18.z - lt r18.y, l(0.000100), r13.x - if_nz r18.y - if_nz r19.x - add r18.y, l(1.000000), -cb3[r17.z + 6].w - dp3 r18.z, r10.xyzx, r23.xyzx - add_sat r18.z, r18.z, l(0.500000) - mad r19.y, r18.z, l(-2.000000), l(3.000000) - mul r18.z, r18.z, r18.z - mul r18.z, r18.z, r19.y - mad r18.y, r18.z, cb3[r17.z + 6].w, r18.y - mul r18.y, r18.y, cb3[r17.z + 6].x - mul r18.y, r13.x, r18.y - add r19.yzw, -r16.xxyz, cb3[r13.y + 6].xxyz - mad r19.yzw, r18.yyyy, r19.yyzw, r16.xxyz - endif - if_z r19.x - dp3 r18.y, r7.xyzx, r23.xyzx - mov_sat r18.z, r18.y - if_nz cb3[r13.z + 6].w - if_z r16.w - ftoi r16.w, cb3[r13.z + 6].x - else - add r20.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx - lt r22.yzw, |r20.yyzz|, |r20.xxxy| - and r20.w, r22.z, r22.y - lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx - ushr r21.y, cb3[r17.y + 6].w, l(24) - ubfe r22.yz, l(0, 8, 8, 0), l(0, 16, 8, 0), cb3[r17.y + 6].wwww - movc r20.x, r20.x, r21.y, r22.y - and r17.y, l(255), cb3[r17.y + 6].w - movc r17.y, r20.y, r22.z, r17.y - ubfe r20.y, l(8), l(8), cb3[r13.z + 6].x - and r21.y, l(255), cb3[r13.z + 6].x - movc r20.y, r20.z, r20.y, r21.y - movc r17.y, r22.w, r17.y, r20.y - movc r17.y, r20.w, r20.x, r17.y - ilt r20.x, r17.y, l(80) - movc r16.w, r20.x, r17.y, l(-1) - endif - ige r17.y, r16.w, l(0) - if_nz r17.y - add r20.xyz, v2.xyzx, -cb3[r18.x + 6].xyzx - ishl r17.y, r16.w, l(2) - dp3 r18.x, r20.xyzx, r20.xyzx - max r18.x, r18.x, l(1.175494351E-38) - rsq r18.x, r18.x - mul r20.xyz, r18.xxxx, r20.xyzx - mad r20.xyz, -r20.xyzx, cb4[r16.w + 288].xxxx, v2.xyzx - mul r18.x, l(5.000000), cb4[r16.w + 288].y - mad r20.xyz, r10.xyzx, r18.xxxx, r20.xyzx - mul r25.xyzw, r20.yyyy, cb4[r17.y + 65].xyzw - mad r25.xyzw, cb4[r17.y + 64].xyzw, r20.xxxx, r25.xyzw - mad r20.xyzw, cb4[r17.y + 66].xyzw, r20.zzzz, r25.xyzw - add r20.xyzw, r20.xyzw, cb4[r17.y + 67].xyzw - div r20.xyz, r20.xyzx, r20.wwww - ge r22.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xxyz - ge r24.yzw, r20.xxyz, l(0.000000, 1.000000, 1.000000, 1.000000) - add r25.xy, -cb4[r16.w + 344].xyxx, cb4[r16.w + 344].zwzz - mad r20.xy, r20.xyxx, r25.xyxx, cb4[r16.w + 344].xyxx - mad r25.xy, r20.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r25.xy, r25.xyxx - mad r20.xy, r20.xyxx, cb4[400].zwzz, -r25.xyxx - add r26.xyzw, r20.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r27.xyzw, r26.xxzz, r26.xxzz - add r25.zw, -r20.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r26.xz, r20.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r28.xy, r20.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy - add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r20.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r20.xyxx - mul r30.xy, r20.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r20.xy, -r26.xzxx, r26.xzxx, r25.zwzz - add r20.xy, r20.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r31.xy, r20.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r20.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r30.z, r31.x - mov r30.w, r20.x - mov r29.z, r28.x - mov r29.w, r27.x - add r26.xyzw, r29.zwxz, r30.zwxz - mov r31.z, r30.y - mov r31.w, r20.y - mov r28.z, r29.y - mov r28.w, r27.z - add r20.xyw, r28.zyzw, r31.zyzw - div r27.xyz, r29.xzwx, r26.zwyz - add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r27.xyz, r27.yxzy, cb4[400].xxxx - div r28.xyz, r28.zywz, r20.xywx - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyz, r28.xyzx, cb4[400].yyyy - mov r27.w, r28.x - mad r29.xyzw, r25.xyxy, cb4[400].xyxy, r27.ywxw - mad r25.zw, r25.xxxy, cb4[400].xxxy, r27.zzzw - mov r28.w, r27.y - mov r27.yw, r28.yyyz - mad r30.xyzw, r25.xyxy, cb4[400].xyxy, r27.xyzy - mad r28.xyzw, r25.xyxy, cb4[400].xyxy, r28.wywz - mad r27.xyzw, r25.xyxy, cb4[400].xyxy, r27.xwzw - mul r31.xyzw, r20.xxxy, r26.zwyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r29.xyxx, t2.xxxx, s2, r20.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r29.zwzz, t2.xxxx, s2, r20.z - mul r18.x, r18.x, r31.y - mad r17.y, r31.x, r17.y, r18.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r25.zwzz, t2.xxxx, s2, r20.z - mad r17.y, r31.z, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.xyxx, t2.xxxx, s2, r20.z - mad r17.y, r31.w, r18.x, r17.y - mul r25.xyzw, r20.yyww, r26.xyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.xyxx, t2.xxxx, s2, r20.z - mad r17.y, r25.x, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r30.zwzz, t2.xxxx, s2, r20.z - mad r17.y, r25.y, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.zwzz, t2.xxxx, s2, r20.z - mad r17.y, r25.z, r18.x, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r27.xyxx, t2.xxxx, s2, r20.z - mad r17.y, r25.w, r18.x, r17.y - or r22.yzw, r22.yyzw, r24.yyzw - or r18.x, r22.z, r22.y - or r18.x, r22.w, r18.x - and r20.x, r20.z, l(0x7fffffff) - ult r20.x, l(0x7f800000), r20.x - or r18.x, r18.x, r20.x - mul r20.x, r20.w, r26.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.y, r27.zwzz, t2.xxxx, s2, r20.z - mad r17.y, r20.x, r20.y, r17.y - add r17.y, r17.y, l(-1.000000) - mad r16.w, cb4[r16.w + 288].w, r17.y, l(1.000000) - movc r16.w, r18.x, l(1.000000), r16.w - else - dp3 r17.y, r9.xyzx, r23.xyzx - add_sat r16.w, r17.y, l(1.000000) - endif - else - mov r16.w, l(1.000000) - endif - if_z cb3[r13.z + 6].w - mul r20.xyz, r13.xxxx, cb3[r13.y + 6].xyzx - add r17.y, l(1.000000), -cb3[r17.z + 6].y - max r18.x, r20.y, r20.x - max r18.x, r20.z, r18.x - mul r18.x, r9.w, r18.x - max r18.x, r18.x, l(1.000000) - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x - mad r17.y, r18.x, cb3[r17.z + 6].y, r17.y - mul r20.xyz, r17.yyyy, cb3[r13.y + 6].xyzx - mul r17.y, l(0.250000), cb3[r17.z + 6].x - add_sat r18.x, r18.y, l(0.500000) - mad r20.w, -cb3[r17.z + 6].x, l(0.250000), l(1.000000) - mad r17.y, r18.x, r20.w, r17.y - mul r20.xyz, r17.yyyy, r20.xyzx - mov r22.yzw, r21.xxzw - mov r24.yzw, r21.xxzw - mov r17.y, l(1.000000) - mov r18.x, l(0) - else - ieq r20.w, l(3), cb3[r13.z + 6].w - if_nz r20.w - mad r25.xy, cb3[r17.z + 6].xxxx, l(-0.600000, -0.399999976, 0.000000, 0.000000), l(0.800000, 0.900000, 0.000000, 0.000000) - add r20.w, -r25.x, r25.y - add r21.y, r22.x, -r25.x - div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w - mul_sat r20.w, r20.w, r21.y - mad r21.y, r20.w, l(-2.000000), l(3.000000) - mul r20.w, r20.w, r20.w - mul r20.w, r20.w, r21.y - mul r20.w, r16.w, r20.w - mul r13.x, r13.x, r20.w - mul r25.xyz, r23.zxyz, cb0[6].xyzx - mad r25.xyz, cb0[6].zxyz, r23.xyzx, -r25.xyzx - mul r26.xyz, r25.xyzx, cb0[6].zxyz - mad r25.xyz, cb0[6].yzxy, r25.yzxy, -r26.xyzx - dp3 r20.w, r25.xyzx, r25.xyzx - rsq r20.w, r20.w - mul r25.xyz, r20.wwww, r25.xyzx - dp3_sat r18.z, r7.xyzx, -r25.xyzx - mad r22.yzw, cb3[r17.z + 6].yyyy, r4.xxyz, l(0.000000, 0.500000, 0.500000, 0.500000) - mov r24.yzw, l(0,0,0,0) - mov r17.y, l(1.000000) - mov r18.x, l(0) - else - ieq r20.w, l(1), cb3[r13.z + 6].w - if_nz r20.w - add r18.y, r18.y, cb3[r17.z + 6].x - max_sat r18.y, r18.y, l(-1.000000) - mul r18.z, r16.w, r18.y - mul r24.yzw, r6.xxyz, cb3[r17.z + 6].yyyy - mov r17.y, l(1.000000) - mov r18.x, l(0) - else - ieq r16.w, l(2), cb3[r13.z + 6].w - if_nz r16.w - add r18.y, l(0.050000), cb3[r17.z + 6].x - add r18.y, r3.z, -r18.y - mul_sat r18.y, r18.y, l(-10.000000) - mad r21.y, r18.y, l(-2.000000), l(3.000000) - mul r18.y, r18.y, r18.y - mul r18.y, r18.y, r21.y - add r21.y, l(1.000000), -cb3[r17.z + 6].z - mad r21.y, r5.x, cb3[r17.z + 6].z, r21.y - mul r17.y, r18.y, r21.y - else - mov r17.y, l(1.000000) - endif - and r18.x, r16.w, cb3[r17.z + 6].y - mov r24.yzw, l(0,0,0,0) - endif - and r22.yzw, r12.xxyz, r20.wwww - endif - mov r20.xyz, cb3[r13.y + 6].xyzx - endif - ine r13.y, l(3), cb3[r13.z + 6].w - if_nz r13.y - mad r13.y, r18.x, r6.w, r5.y - mad r23.xyz, r0.xyzx, r1.wwww, r23.xyzx - dp3 r13.z, r23.xyzx, r23.xyzx - rsq r13.z, r13.z - mul r23.xyz, r13.zzzz, r23.xyzx - dp3 r13.z, r3.xywx, r23.xyzx - mul r16.w, r13.y, r13.y - mad r17.z, r13.z, r16.w, -r13.z - mad r13.z, r17.z, r13.z, l(1.000000) - mul r13.z, r13.z, r13.z - ne r17.z, r13.z, r16.w - div r13.z, r16.w, r13.z - movc r13.z, r17.z, r13.z, l(1.000000) - mad r13.y, r24.x, l(2.000000), r13.y - add r13.y, r13.y, l(0.000100) - div r13.y, l(0.500000), r13.y - mad r13.y, r13.z, r13.y, l(-0.0000610351562) - max r13.y, r13.y, l(0.000000) - min r13.y, r13.y, l(20.000000) - mul r23.xyz, r13.yyyy, r14.xyzx - mul r23.xyz, r17.yyyy, r23.xyzx - mul r18.xyw, r23.xyxz, cb3[r18.w + 6].zzzz - else - mov r18.xyw, l(0,0,0,0) - endif - mul r13.xyz, r13.xxxx, r20.xyzx - add r20.xyz, r22.yzwy, -r24.yzwy - mad r20.xyz, r18.zzzz, r20.xyzx, r24.yzwy - mul r20.xyz, r13.xyzx, r20.xyzx - mul r13.xyz, r18.xywx, r13.xyzx - mul r13.xyz, r18.zzzz, r13.xyzx - mad r13.xyz, r20.xyzx, r15.yyyy, r13.xyzx - add r16.xyz, r13.xyzx, r16.xyzx - endif - else - mov r19.x, l(0) - endif - movc r16.xyz, r19.xxxx, r19.yzwy, r16.xyzx - endif - endif - mov r14.w, r17.x - endloop - mov r15.xzw, r16.xxyz - iadd r10.w, r10.w, l(1) -endloop -lt r0.x, l(0.500000), cb5[3].x -if_nz r0.x - dp3 r0.x, r15.xzwx, l(0.212672904, 0.715152204, 0.072175, 0.000000) - add r3.xyz, -r0.xxxx, r15.xzwx - mad r0.xyz, cb5[3].zzzz, r3.xyzx, r0.xxxx - add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000) - mad r0.xyz, cb5[3].wwww, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r3.xyz, r0.xyzx, cb5[3].yyyy - mad r0.xyz, -r0.xyzx, cb5[3].yyyy, cb5[7].xyzx - mad r0.xyz, cb5[7].wwww, r0.xyzx, r3.xyzx - add r2.w, l(1.000000), -cb5[4].x - mov_sat r17.w, r17.w - add r3.x, -r17.w, l(1.000000) - add r3.y, -r2.w, l(1.000000) - add r2.w, -r2.w, r3.x - div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.y - mul_sat r2.w, r2.w, r3.x - mad r3.x, r2.w, l(-2.000000), l(3.000000) - mul r2.w, r2.w, r2.w - mul r2.w, r2.w, r3.x - mul r3.xyz, r2.wwww, cb5[8].xyzx - mad r15.xzw, r3.xxyz, cb5[4].yyyy, r0.xxyz -endif -div r0.xyz, r15.xzwx, cb0[109].xxxx -eq r2.w, l(1.000000), cb5[2].x -movc o0.w, r2.w, r4.w, l(1.000000) -lt r2.w, cb0[198].w, l(0.500000) -if_nz r2.w - mul r0.w, r0.w, r1.w - mad r1.w, v2.y, cb0[156].w, cb0[157].w - max r1.w, r1.w, l(0.010000) - mad r2.w, r0.w, cb0[154].w, -cb0[153].w - max r2.w, r2.w, l(0.000000) - mul r3.x, r1.w, l(-1.442695) - exp r3.x, r3.x - add r3.x, -r3.x, l(1.000000) - div r1.w, r3.x, r1.w - mad r3.x, v2.y, cb0[156].w, cb0[158].w - mul r3.x, r3.x, l(1.442695) - exp r3.x, r3.x - mul r1.w, r1.w, r3.x - mul r1.w, r1.w, -r2.w - mul r3.xyz, r1.wwww, cb0[155].xyzx - mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) - exp r3.xyz, r3.xyzx - dp3 r1.w, -r2.xyzx, cb0[154].xyzx - mad r2.w, cb0[155].w, cb0[155].w, l(1.000000) - dp2 r3.w, r1.wwww, cb0[155].wwww - add r2.w, r2.w, -r3.w - lt r3.w, l(0.000000), cb0[163].z - if_nz r3.w - and r11.w, l(7), cb0[108].w - imad r4.xyz, r11.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r3.w, r4.y, r4.z, r4.x - imad r4.x, r4.z, r3.w, r4.y - imad r4.y, r3.w, r4.x, r4.z - imad r5.x, r4.x, r4.y, r3.w - dp3 r1.x, -r2.xyzx, -r1.xyzx - add r1.y, v2.y, -cb0[44].y - lt r1.z, l(5.960464478E-08), r1.x - div r1.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.x - and r1.x, r1.x, r1.z - mul r1.x, r1.x, cb0[163].w - div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w - mul r2.x, r1.z, r1.x - mad r2.y, r2.x, r1.y, cb0[44].y - mad r1.y, -r2.x, r1.y, r1.y - mul r2.x, r1.y, cb0[159].z - mul r1.y, r1.y, cb0[162].x - max r1.y, r1.y, l(-127.000000) - add r2.z, r2.y, -cb0[159].x - mul r2.z, r2.z, cb0[159].z - max r2.xz, r2.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - exp r2.z, -r2.z - mul r2.z, r2.z, cb0[159].y - lt r3.w, l(5.960464478E-08), |r2.x| - exp r4.z, -r2.x - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r2.x - mad r2.x, -r2.x, l(0.240226507), l(0.693147182) - movc r2.x, r3.w, r4.z, r2.x - add r2.y, r2.y, -cb0[162].z - mul r2.y, r2.y, cb0[162].x - max r2.y, r2.y, l(-127.000000) - exp r2.y, -r2.y - mul r2.y, r2.y, cb0[162].y - lt r3.w, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r3.w, r4.z, r1.y - mul r1.y, r1.y, r2.y - mad r1.y, r2.z, r2.x, r1.y - mad r1.x, -r1.x, r1.z, l(1.000000) - mul r1.x, r0.w, r1.x - mul r1.x, r1.x, r1.y - exp r1.x, -r1.x - min r1.x, r1.x, l(1.000000) - max r1.x, r1.x, cb0[161].w - mad_sat r1.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx - add r1.x, r1.y, r1.x - add r1.x, r1.z, r1.x - min r1.x, r1.x, l(1.000000) - imad r5.y, r4.y, r5.x, r4.x - ushr r1.yz, r5.xxyx, l(0, 16, 16, 0) - utof r1.yz, r1.yyzy - mad r1.yz, r1.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) - mad r1.yz, r1.yyzy, cb0[167].wwww, r5.zzwz - mul r2.xy, r1.yzyy, cb0[165].xyxx - mad r1.y, v0.w, cb0[164].x, cb0[164].y - log r1.y, r1.y - mul r1.y, r1.y, cb0[164].z - div r2.z, r1.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r2.xyzx, t18.xyzw, s0, l(0.000000) - add r1.y, v0.w, -cb0[166].z - mul_sat r1.y, r1.y, l(1000000.000000) - add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r4.xyzw, r1.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r1.y, -r1.x, l(1.000000) - mul r2.xyz, r1.yyyy, cb0[161].xyzx - mad r2.xyz, r2.xyzx, r4.wwww, r4.xyzx - mul r1.x, r1.x, r4.w - else - add r1.y, v2.y, -cb0[44].y - mul r1.z, r1.y, cb0[159].z - mul r1.y, r1.y, cb0[162].x - max r1.yz, r1.yyzy, l(0.000000, -127.000000, -127.000000, 0.000000) - add r3.w, cb0[44].y, -cb0[159].x - mul r3.w, r3.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[159].y - lt r4.x, l(5.960464478E-08), |r1.z| - exp r4.y, -r1.z - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r1.z - mad r1.z, -r1.z, l(0.240226507), l(0.693147182) - movc r1.z, r4.x, r4.y, r1.z - add r4.x, cb0[44].y, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.y, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r4.y, r4.z, r1.y - mul r1.y, r1.y, r4.x - mad r1.y, r3.w, r1.z, r1.y - mul r1.y, r0.w, r1.y - exp r1.y, -r1.y - min r1.y, r1.y, l(1.000000) - max r1.y, r1.y, cb0[161].w - mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.w, r1.y, r4.x - add r0.w, r4.y, r0.w - min r1.x, r0.w, l(1.000000) - add r0.w, -r1.x, l(1.000000) - mul r2.xyz, r0.wwww, cb0[161].xyzx - endif - mul r4.xyz, r1.xxxx, r3.xyzx - mad r0.w, r1.w, r1.w, l(1.000000) - mul r0.w, r0.w, l(0.0596831031) - mad r1.yzw, cb0[156].xxyz, r0.wwww, cb0[158].xxyz - mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) - mul r3.w, r2.w, l(12.566371) - sqrt r2.w, r2.w - mul r2.w, r2.w, r3.w - max r2.w, r2.w, l(0.001000) - div r0.w, r0.w, r2.w - mad_sat r1.yzw, cb0[157].xxyz, r0.wwww, r1.yyzw - mul r1.yzw, r1.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) - add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mul r1.yzw, r1.yyzw, r3.xxyz - mad r1.xyz, r1.yzwy, r1.xxxx, r2.xyzx - -// === Simplified Fog Modification (Anti-Banding) === -// Check if fog modification is enabled via cb13[12].y -lt r15.x, l(0.500000), cb13[12].y -if_nz r15.x - // r0.xyz = scene color, r4.xyz = transmittance, r1.xyz = fog inscatter - // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density - add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx - - // Reduce fog inscatter intensity - mul r16.xyz, r1.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - - // Modified fog blend: scene * boostedTrans + reducedInscatter - mad o0.xyz, r0.xyzx, r15.xyzx, r16.xyzx -else - // Original fog blend - mad o0.xyz, r0.xyzx, r4.xyzx, r1.xyzx -endif -// === End Fog Modification === -else - mov o0.xyz, r0.xyzx -endif -mov o1.z, l(1.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xF014B254.cso b/src/games/endfield/deferred-lighting/0xF014B254.cso new file mode 100644 index 0000000000000000000000000000000000000000..a27b36850ae5ad9beba71626c917237dfe1e49e3 GIT binary patch literal 67472 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 diff --git a/src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0.asm deleted file mode 100644 index f311146de1..0000000000 --- a/src/games/endfield/deferred-lighting/0xF901F0EC.ps_5_0.asm +++ /dev/null @@ -1,1000 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Sat Jan 31 22:35:08 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xy -// TEXCOORD 0 xy 1 NONE float xy -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_constantbuffer CB0[235], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[5], immediateIndexed -dcl_constantbuffer CB3[5], immediateIndexed -dcl_constantbuffer CB4[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture3d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_resource_texture2d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 26 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyzw, r0.xyzz, t22.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r0.xyzz, t23.xyzw -ld_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyzz, t24.xyzw -mul r1.xyz, r1.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000) -ftou r1.xz, r1.xxzx -ubfe r4.x, l(7), l(3), r1.x -utof r4.x, r4.x -round_ne r1.y, r1.y -ftou r1.y, r1.y -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r4.y, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r5.y, -r4.y, l(1.000000) -lt r4.y, r5.y, l(0.000000) -ge r4.zw, r2.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) -add r6.xy, -|r2.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) -movc r4.zw, r4.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000) -mul r4.zw, r4.zzzw, r6.xxxy -movc r5.xz, r4.yyyy, r4.zzwz, r2.xxyx -dp3 r2.x, r5.xyzx, r5.xyzx -rsq r2.x, r2.x -mul r6.xyz, r2.xxxx, r5.xyzx -and r2.y, r1.y, l(7) -utof r2.y, r2.y -mad r2.y, r2.y, l(0.107142866), l(0.500000) -utof r4.yz, r0.xxyx -mul r5.xz, v0.xxyx, cb0[82].zzwz -mad r7.xy, r5.xzxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -add r7.zw, r4.yyyz, l(0.000000, 0.000000, 0.500000, 0.500000) -mul r7.zw, r7.zzzw, cb0[82].zzzw -sample_l_indexable(texture2d)(float,float,float,float) r4.w, r7.zwzz, t1.yzwx, s0, l(0.000000) -mul r8.xyzw, -r7.yyyy, cb0[25].xyzw -mad r7.xyzw, cb0[24].xyzw, r7.xxxx, r8.xyzw -mad r7.xyzw, cb0[26].xyzw, r4.wwww, r7.xyzw -add r7.xyzw, r7.xyzw, cb0[27].xyzw -div r7.xyz, r7.xyzx, r7.wwww -mul r4.w, r7.y, cb0[1].z -mad r4.w, cb0[0].z, r7.x, r4.w -mad r4.w, cb0[2].z, r7.z, r4.w -add r4.w, r4.w, cb0[3].z -eq r5.w, l(0.000000), cb0[86].w -add r8.xyz, -r7.xyzx, cb0[44].xyzx -mov r9.x, cb0[0].z -mov r9.y, cb0[1].z -mov r9.z, cb0[2].z -movc r8.xyz, r5.wwww, r8.xyzx, r9.xyzx -dp3 r5.w, r8.xyzx, r8.xyzx -max r8.w, r5.w, l(9.999999939E-09) -rsq r8.w, r8.w -mul r10.xyz, r8.wwww, r8.xyzx -mul r5.w, r5.w, r8.w -lt r9.w, l(0.000488281250), cb0[234].x -if_nz r9.w - sample_b_indexable(texture2d)(float,float,float,float) r9.w, v1.xyxx, t21.yzwx, s1, cb0[108].x -else - mov r9.w, l(1.000000) -endif -lt r11.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[226].xyxx -if_nz r11.x - add r10.w, |r6.y|, |r6.x| - add r10.w, |r6.z|, r10.w - div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r10.w - mul r11.xzw, |r6.xxyz|, r10.wwww - mul r12.xyzw, r11.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) - add r12.xyz, r12.zwzz, r12.xxyx - mad r11.xzw, r11.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r12.xxyz - mul r12.xyz, r7.xyzx, cb0[229].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r10.w, r12.xyzx, t9.yzwx, s2, l(0.000000) - mad r10.w, r10.w, l(2.000000), l(-1.000000) - mul r11.xzw, r10.wwww, r11.xxzw - mov r10.w, |r6.y| - add r10.w, r10.w, l(-0.700000) - mul_sat r10.w, r10.w, l(4.000000) - mad r12.x, r10.w, l(-2.000000), l(3.000000) - mul r10.w, r10.w, r10.w - mul r10.w, r10.w, r12.x - add r12.x, -cb0[229].z, cb0[229].y - mad r10.w, r10.w, r12.x, cb0[229].z - mul r11.xzw, r10.wwww, r11.xxzw -else - mov r11.xzw, l(0,0,0,0) -endif -if_nz r11.y - mul r12.xyz, r6.xyzx, cb0[233].zzzz - mul r13.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[225].yyyy - mad r12.xyz, r12.xyzx, cb0[225].xxxx, r13.xyzx - max r10.w, -r6.y, l(0.000000) - min r10.w, r10.w, l(0.900000) - add r10.w, -r10.w, l(1.000000) - mad r2.x, -r5.y, r2.x, l(-0.200000) - mul_sat r2.x, r2.x, l(-10.000000) - mad r5.y, r2.x, l(-2.000000), l(3.000000) - mul r2.x, r2.x, r2.x - mul r2.x, r2.x, r5.y - max r2.x, r2.x, l(0.100000) - min r2.x, r2.x, l(1.000000) - mul r2.x, r2.x, r10.w - mad r12.xyz, r12.xyzx, r2.xxxx, r7.xyzx - add r11.xyz, r11.xzwx, r12.xyzx - mul r12.xyz, r11.yyyy, cb3[1].xyzx - mad r11.xyw, cb3[0].xyxz, r11.xxxx, r12.xyxz - mad r11.xyz, cb3[2].xyzx, r11.zzzz, r11.xywx - add r11.xyz, r11.xyzx, cb3[3].xyzx - mad r12.x, r11.x, l(0.500000), cb3[4].x - mad r2.x, r11.y, l(0.500000), l(0.500000) - add r12.z, -r2.x, cb3[4].y - add r11.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r2.x, r11.z, l(0.000488281250) - sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r11.xyxx, t8.xxxx, s4, r2.x -else - mov r2.x, l(1.000000) -endif -mov_sat r5.y, r6.y -add r10.w, l(1.000000), -cb0[230].w -mad r5.y, r5.y, r10.w, cb0[230].w -add r11.xy, r7.xzxx, -cb0[44].xzxx -max r10.w, |r11.y|, |r11.x| -mul r11.x, r5.y, cb0[230].z -mul r11.y, r2.x, r5.y -mul r11.z, l(0.0500000119), cb0[222].w -mad r11.w, -cb0[222].w, l(0.700000), r10.w -div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z -mul_sat r11.z, r11.z, r11.w -mad r11.w, r11.z, l(-2.000000), l(3.000000) -mul r11.z, r11.z, r11.z -mul r11.z, r11.z, r11.w -mad r2.x, -r5.y, r2.x, l(1.000000) -mad r2.x, r11.z, r2.x, r11.y -mad r5.y, -cb0[230].z, r5.y, l(1.000000) -mad r2.x, r2.x, r5.y, r11.x -mad r5.y, cb0[230].x, cb0[222].w, -cb0[222].w -add r10.w, r10.w, -cb0[222].w -div r5.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y -mul_sat r5.y, r5.y, r10.w -mad r10.w, r5.y, l(-2.000000), l(3.000000) -mul r5.y, r5.y, r5.y -mul r5.y, r5.y, r10.w -add r10.w, -r2.x, cb0[230].y -mad r2.x, r5.y, r10.w, r2.x -add r2.x, -r2.x, l(1.000000) -mad r2.x, -r9.w, r2.x, l(1.000000) -mad_sat r5.y, r2.z, l(0.300000), l(0.250000) -mul r5.y, r5.y, cb0[222].x -mul r5.y, r2.x, r5.y -mad r5.y, r5.y, l(-0.750000), l(1.000000) -mul r3.xyz, r3.xyzx, r5.yyyy -min r5.y, r2.z, l(0.300000) -mul r2.x, r2.x, cb0[222].x -mul r2.xw, r2.xxxw, l(0.500000, 0.000000, 0.000000, 3.000000) -add r5.y, -r2.z, r5.y -mad r11.z, r2.x, r5.y, r2.z -mul r2.x, r2.y, l(0.080000) -dp3 r2.z, r6.xyzx, r10.xyzx -max r5.y, r2.z, l(0.000000) -mad r12.xyzw, r11.zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r9.w, r12.x, r12.x -mul r10.w, r5.y, l(-9.280000) -exp r10.w, r10.w -min r9.w, r9.w, r10.w -mad r9.w, r9.w, r12.x, r12.y -mad r12.xy, r9.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r12.zwzz -ld_indexable(texture2d)(float,float,float,float) r12.z, r0.xyzz, t6.zwxy -lt r0.z, l(0.001000), r12.z -if_nz r0.z - bfi r0.z, l(3), l(2), r1.x, l(0) - mul r1.x, r1.w, l(3.000000) - ftou r1.x, r1.x - bfi r0.z, l(2), l(0), r1.x, r0.z - utof r0.z, r0.z - mul r1.x, r0.z, l(0.0322580636) - ubfe r1.y, l(7), l(3), r1.y - utof r1.y, r1.y - mul r1.y, r1.y, l(0.00787401572) - sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xzxx, t11.yzwx, s1, l(0.000000) - ge r25.x, cb13[12].z, l(1.000000) - mul r25.y, r1.w, r1.w - mul r25.y, r25.y, r25.y - movc r1.w, r25.x, r25.y, r1.w - dp3 r9.w, -r10.xyzx, r6.xyzx - add r9.w, r9.w, r9.w - mad r13.xyz, r6.xyzx, -r9.wwww, -r10.xyzx - dp3 r9.w, -cb2[0].xyzx, r13.xyzx - mad r14.xyz, cb2[0].xyzx, r9.wwww, r13.xyzx - lt r9.w, r9.w, cb2[4].z - dp3 r10.w, r14.xyzx, r14.xyzx - max r10.w, r10.w, l(0.0000610351562) - rsq r10.w, r10.w - mul r14.xyz, r10.wwww, r14.xyzx - mul r14.xyz, r14.xyzx, cb2[4].yyyy - mad r14.xyz, -cb2[0].xyzx, cb2[4].zzzz, r14.xyzx - dp3 r10.w, r14.xyzx, r14.xyzx - rsq r10.w, r10.w - mul r14.xyz, r10.wwww, r14.xyzx - movc r13.xyz, r9.wwww, r14.xyzx, r13.xyzx - mad r8.xyz, r8.xyzx, r8.wwww, r13.xyzx - dp3 r8.w, r8.xyzx, r8.xyzx - max r8.w, r8.w, l(0.0000610351562) - rsq r8.w, r8.w - mul r8.xyz, r8.wwww, r8.xyzx - dp3 r8.w, r6.xyzx, r13.xyzx - mov_sat r11.x, r8.w - dp3_sat r9.w, r6.xyzx, r8.xyzx - dp3 r10.w, r10.xyzx, r13.xyzx - min r11.y, r5.y, l(1.000000) - mul r11.w, r11.z, r11.z - mul r11.w, r11.w, r11.w - mad r13.x, r9.w, r11.w, -r9.w - mad r9.w, r13.x, r9.w, l(1.000000) - dp3_sat r8.x, r10.xyzx, r8.xyzx - add r8.x, -r8.x, l(1.000000) - mul r8.y, r8.x, r8.x - mul r8.y, r8.y, r8.y - mul r8.z, r8.x, r8.y - add r13.x, -r11.z, l(1.000000) - mad r13.y, -r13.x, l(0.383026), l(-0.0761947036) - mad r13.y, r13.x, r13.y, l(1.049970) - mad r13.x, r13.x, r13.y, l(0.409255) - min r13.x, r13.x, l(0.999000) - add r13.y, -r13.x, l(1.000000) - mad r2.y, -r2.y, l(0.080000), l(1.000000) - mad r2.y, r2.y, l(0.0476190485), r2.x - mov_sat r13.z, -r10.w - mul r13.z, r13.z, r13.z - mad r13.z, r13.z, l(-0.640000), l(1.000000) - mul r13.z, r13.z, r13.z - mad r8.x, -r8.y, r8.x, l(1.000000) - mad r8.x, r2.x, r8.x, r8.z - mul r8.y, r9.w, r9.w - div r8.y, r11.w, r8.y - mad r14.xy, -r11.yxyy, r11.wwww, r11.yxyy - mad r14.xy, r14.xyxx, r11.yxyy, r11.wwww - sqrt r14.xy, r14.xyxx - mul r14.xy, r11.xyxx, r14.xyxx - add r8.z, r14.y, r14.x - add r8.z, r8.z, l(0.000100) - div r8.z, l(0.500000), r8.z - mul r8.y, r8.z, r8.y - mul r8.x, r8.y, r8.x - min r8.x, r8.x, l(2048.000000) - mad r14.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r8.y, r14.xyxx, t10.yxzw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r8.z, r14.zwzz, t10.yzxw, s1, l(0.000000) - mul r8.y, r8.z, r8.y - mul r8.y, r13.x, r8.y - div r8.y, r8.y, r13.y - mul r8.z, r2.y, r2.y - mul r8.y, r8.y, r8.z - mad r2.y, -r2.y, r13.y, l(1.000000) - div r2.y, r8.y, r2.y - add r2.y, r2.y, r8.x - add_sat r2.z, r2.z, l(0.200000) - mov_sat r8.x, r10.w - add r8.x, r8.x, l(0.500000) - min r8.x, r8.x, l(1.000000) - mul r8.y, r2.z, r8.x - add_sat r8.z, r10.w, l(1.000000) - mad r2.z, -r2.z, r8.x, l(1.000000) - mad r2.z, r8.z, r2.z, r8.y - mul r2.y, r2.z, r2.y - mul r2.y, r1.y, r2.y - mul r8.xyz, r1.yyyy, r3.xyzx - ubfe r2.z, l(7), l(3), r1.z - utof r2.z, r2.z - mul r2.z, r2.z, l(0.00787401572) - mul r2.y, r2.y, cb2[4].x - max r2.y, r2.y, l(0.000000) - min r2.y, r2.y, l(1000.000000) - mul r2.y, r11.x, r2.y - mad r8.xyz, r8.xyzx, r2.zzzz, r2.yyyy - max r2.y, r3.y, r3.x - max r2.y, r3.z, r2.y - max r2.y, r2.y, l(0.010000) - div r13.xyw, r3.xyxz, r2.yyyy - mul r2.y, r4.x, l(0.00393700786) - mul r13.xyw, r2.yyyy, r13.xyxw - add_sat r2.y, -r8.w, l(0.500000) - ne r2.z, r13.z, l(0.360000) - div r9.w, l(0.360000), r13.z - movc r2.z, r2.z, r9.w, l(1.000000) - mul r2.y, r2.z, r2.y - mad_sat r0.z, r0.z, l(0.0322580636), r8.w - add r0.z, -r11.x, r0.z - mul r11.xyw, r0.zzzz, r3.xyxz - mad r11.xyw, r13.xyxw, r2.yyyy, r11.xyxw - mad r8.xyz, r11.xywx, r1.yyyy, r8.xyzx - mul r8.xyz, r8.xyzx, cb2[1].xyzx - mov r12.w, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r12.zwzz, t7.xywz, s1, cb0[108].x - add r0.z, -r12.z, l(1.000000) - mad r11.xyw, r8.xyxz, r11.xyxw, -r8.xyxz - mad r8.xyz, r0.zzzz, r11.xywx, r8.xyzx - max r0.z, r1.y, r1.w - add r0.z, -r1.w, r0.z - mad r0.z, r1.x, r0.z, r1.w - mul r1.xyw, r0.zzzz, r8.xyxz -else - mov r1.xyw, l(0,0,0,0) -endif -ne r2.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -movc r2.y, cb13[14].z, l(0xFFFFFFFF), r2.y -if_nz r2.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - mad r0.z, r0.z, l(0.750000), l(0.250000) - min r0.z, r3.w, r0.z - add r2.y, r0.z, r5.y - mad r8.x, r11.z, l(-16.000000), l(-1.000000) - exp r8.x, r8.x - log r2.y, |r2.y| - mul r2.y, r2.y, r8.x - exp r2.y, r2.y - add r2.y, r0.z, r2.y - add r2.y, r2.y, l(-1.000000) - mov_sat r8.xyz, r2.yyyy - mad r11.xyw, r3.xyxz, l(2.040400, 2.040400, 0.000000, 2.040400), l(-0.332400, -0.332400, 0.000000, -0.332400) - mul r11.xyw, r0.zzzz, r11.xyxw - mad r11.xyw, r3.xyxz, l(-4.795100, -4.795100, 0.000000, -4.795100), r11.xyxw - add r11.xyw, r11.xyxw, l(0.641700, 0.641700, 0.000000, 0.641700) - mul r11.xyw, r0.zzzz, r11.xyxw - mad r11.xyw, r3.xyxz, l(2.755200, 2.755200, 0.000000, 2.755200), r11.xyxw - add r11.xyw, r11.xyxw, l(0.690300, 0.690300, 0.000000, 0.690300) - mul r11.xyw, r0.zzzz, r11.xyxw - max r11.xyw, r0.zzzz, r11.xyxw -else - mov r8.xyz, r3.wwww - mov r11.xyw, r3.wwww -endif -movc r8.xyz, cb13[14].zzzz, r8.xyzx, l(1.0, 1.0, 1.0, 0) -mul r1.xyw, r1.xyzw, r8.xyxz -mad r13.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r13.xyz, r7.xzyx, -r13.xyzx -max r0.z, |r13.y|, |r13.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r2.y, |r13.z|, l(-208.000000) -mul_sat r2.y, r2.y, l(0.031250) -max r0.z, r0.z, r2.y -ne r2.y, l(0.000000), cb0[210].w -lt r3.w, r0.z, l(1.000000) -and r2.y, r2.y, r3.w -if_nz r2.y - mad r13.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r13.xyz, r7.xzyx, -r13.xyzx - max r2.y, |r13.y|, |r13.x| - add r2.y, r2.y, l(-29.000000) - mul_sat r2.y, r2.y, l(0.500000) - add r3.w, |r13.z|, l(-13.000000) - mul_sat r3.w, r3.w, l(0.500000) - max r2.y, r2.y, r3.w - lt r3.w, r2.y, l(1.000000) - if_nz r3.w - mad r13.xyz, r7.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r14.xyz, r13.xyzx, cb0[211].xyzx - round_ni r14.xyz, r14.xyzx - mad r13.xyz, r13.xyzx, cb0[211].xyzx, -r14.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r14.xyw, r13.xyzx, t15.yzwx, s2, l(0.000000) - add r3.w, -r2.y, l(1.000000) - mul r8.w, l(0.500000), cb0[211].y - mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) - max r8.w, r8.w, r13.y - min r8.w, r9.w, r8.w - mul r13.w, r8.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r13.xwzx, t16.xyzw, s1, l(0.000000) - mad r8.w, r15.w, r3.w, r0.z - add r16.xyz, r13.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t16.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r14.yyyy, r16.xyzx - mov r16.w, r14.y - mul r16.xyzw, r3.wwww, r16.xyzw - add r13.xyz, r13.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r13.xyz, r13.xyzx, t16.xyzw, s1, l(0.000000) - mad r13.xyz, r13.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r13.xyz, r14.xxxx, r13.xyzx - mov r13.w, r14.x - mul r13.xyzw, r3.wwww, r13.xyzw - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r14.wwww, r15.xyzx - mul r14.xyzw, r3.wwww, r14.xyzw - else - mov r16.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r8.w, r0.z - endif - mad r15.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r15.xyz, r7.xzyx, -r15.xyzx - max r3.w, |r15.y|, |r15.x| - add r3.w, r3.w, l(-116.000000) - mul_sat r3.w, r3.w, l(0.125000) - add r9.w, |r15.z|, l(-52.000000) - mul_sat r9.w, r9.w, l(0.125000) - max r3.w, r3.w, r9.w - lt r9.w, r3.w, l(1.000000) - if_nz r9.w - mad r15.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r15.xyzx, cb0[211].xyzx - round_ni r17.xyz, r17.xyzx - mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r17.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) - add r9.w, -r3.w, l(1.000000) - mul r2.y, r2.y, r9.w - mul r9.w, l(0.500000), cb0[211].y - mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) - max r9.w, r9.w, r15.y - min r9.w, r10.w, r9.w - mul r15.w, r9.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) - mad r8.w, r18.w, r2.y, r8.w - add r19.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r17.yyyy, r19.xyzx - mov r19.w, r17.y - mad r16.xyzw, r19.xyzw, r2.yyyy, r16.xyzw - add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r17.xxxx, r15.xyzx - mov r15.w, r17.x - mad r13.xyzw, r15.xyzw, r2.yyyy, r13.xyzw - mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r17.wwww, r15.xyzx - mad r14.xyzw, r17.xyzw, r2.yyyy, r14.xyzw - endif - lt r2.y, l(0.000000), r3.w - if_nz r2.y - mad r15.xyz, r7.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r15.xyzx, cb0[211].xyzx - mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r17.xyz, r17.xyzx - mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r17.xyzx - mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r15.xyz, r18.xyzx, r15.xyzx - min r15.xyz, r17.xyzx, r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r15.xyzx, t19.yzwx, s2, l(0.000000) - add r2.y, -r0.z, l(1.000000) - mul r2.y, r2.y, r3.w - max r3.w, r18.y, r15.y - min r3.w, r17.y, r3.w - mul r15.w, r3.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t20.xyzw, s1, l(0.000000) - add r18.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t20.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r19.yyyy, r18.xyzx - mov r18.w, r19.y - mad r16.xyzw, r18.xyzw, r2.yyyy, r16.xyzw - add r15.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t20.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r19.xxxx, r15.xyzx - mov r15.w, r19.x - mad r13.xyzw, r15.xyzw, r2.yyyy, r13.xyzw - mad r15.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r19.wwww, r15.xyzx - mad r14.xyzw, r19.xyzw, r2.yyyy, r14.xyzw - mad r8.w, r17.w, r2.y, r8.w - endif - mad_sat r2.y, r8.w, l(2.000000), l(-1.000000) - add r15.x, -r0.z, r2.y - add r0.z, r0.z, r2.y - mul r15.y, r0.z, l(0.500000) -else - mov r16.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r15.xy, l(0,1.000000,0,0) -endif -mul r17.xyzw, r15.yyyx, cb0[213].xyzw -mad r17.y, r17.w, l(0.500000), r17.y -mul r12.zw, r15.yyyx, cb0[213].wwwy -mad r17.w, r12.w, l(0.375000), r12.z -add r14.xyzw, r14.xyzw, r17.xyzw -mul r17.xyzw, r15.yyyx, cb0[214].xyzw -mad r17.y, r17.w, l(0.500000), r17.y -mul r12.zw, r15.yyyx, cb0[214].wwwy -mad r17.w, r12.w, l(0.375000), r12.z -add r13.xyzw, r13.xyzw, r17.xyzw -mul r17.xyzw, r15.yyyx, cb0[215].xyzw -mad r17.y, r17.w, l(0.500000), r17.y -mul r12.zw, r15.yyyx, cb0[215].wwwy -mad r17.w, r12.w, l(0.375000), r12.z -add r15.xyzw, r16.xyzw, r17.xyzw -ge r12.zw, r5.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r12.w, r12.z -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r16.xyzw, r5.xzxx, t14.xyzw, s1, l(0.000000) - lt r17.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r16.xyzw| - or r5.xz, r17.zzwz, r17.xxyx - or r0.z, r5.z, r5.x - if_nz r0.z - dp3 r0.z, r16.yzwy, r16.yzwy - sqrt r0.z, r0.z - mov r5.x, l(1.000000) - mov r5.z, r0.z - mov r2.y, l(0) - loop - ge r3.w, l(4.600000), r5.z - breakc_nz r3.w - iadd r3.w, r2.y, l(1) - mul r12.zw, r5.xxxz, l(0.000000, 0.000000, 0.500000, 0.500000) - mov r5.xz, r12.zzwz - mov r2.y, r3.w - continue - endloop - mul r16.xyzw, r5.xxxx, r16.xyzw - dp3 r0.z, r16.yzwy, r16.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb4[3].x, cb4[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r17.x, r0.z, l(0.00390625000) - mov r17.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r5.xz, r17.xyxx, t13.xzyw, s1, l(0.000000) - mad r5.xz, r5.xxzx, cb4[2].xxyx, cb4[2].zzwz - mul r17.x, r5.x, l(3.54490781) - mul r17.yzw, r5.zzzz, r16.yyzw - mul r0.z, r16.x, l(0.406976730) - exp r0.z, r0.z - mul r16.xyzw, r0.zzzz, r17.xyzw - mov r17.xyzw, r16.xyzw - mov r0.z, l(0) - loop - uge r3.w, r0.z, r2.y - breakc_nz r3.w - mul r18.xyzw, r17.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - dp4 r3.w, r18.xyzw, r17.xyzw - dp2 r5.x, r18.yxyy, r17.xyxx - dp2 r5.z, r18.zxzz, r17.xzxx - dp2 r8.w, r18.wxww, r17.xwxx - iadd r9.w, r0.z, l(1) - mov r17.x, r3.w - mov r17.yz, r5.xxzx - mov r17.w, r8.w - mov r0.z, r9.w - continue - endloop - mul r16.xyzw, r17.xyzw, l(0.282094777, 0.282094777, 0.282094777, 0.282094777) - mul r17.xyzw, r14.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r16.xyzw, r17.xyzw - dp2 r2.y, r16.yxyy, r17.xyxx - dp2 r3.w, r16.zxzz, r17.xzxx - dp2 r5.x, r16.wxww, r17.xwxx - mul r17.xyzw, r13.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r5.z, r16.xyzw, r17.xyzw - dp2 r8.w, r16.yxyy, r17.xyxx - dp2 r9.w, r16.zxzz, r17.xzxx - dp2 r10.w, r16.wxww, r17.xwxx - mul r17.xyzw, r15.wyzx, l(1.12837911, -0.977205, 0.977205, -0.977205) - dp4 r12.z, r16.xyzw, r17.xyzw - dp2 r12.w, r16.yxyy, r17.xyxx - dp2 r16.y, r16.zxzz, r17.xzxx - dp2 r16.x, r16.wxww, r17.xwxx - mul r14.w, r0.z, l(0.886226952) - mul r14.x, r5.x, l(-1.02332675) - mul r14.y, r2.y, l(-1.02332675) - mul r14.z, r3.w, l(1.02332675) - mul r13.w, r5.z, l(0.886226952) - mul r13.x, r10.w, l(-1.02332675) - mul r13.y, r8.w, l(-1.02332675) - mul r13.z, r9.w, l(1.02332675) - mul r15.yw, r12.wwwz, l(0.000000, -1.02332675, 0.000000, 0.886226952) - mul r15.xz, r16.xxyx, l(-1.02332675, 0.000000, 1.02332675, 0.000000) - endif -endif -mov r6.w, l(1.000000) -dp4 r16.x, r14.xyzw, r6.xyzw -dp4 r16.y, r13.xyzw, r6.xyzw -dp4 r16.z, r15.xyzw, r6.xyzw -max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -dp3 r0.z, -r10.xyzx, r6.xyzx -add r0.z, r0.z, r0.z -mad r17.xyz, r6.xyzx, -r0.zzzz, -r10.xyzx -add r0.z, l(-1.000000), cb0[113].x -max r2.y, r11.z, l(0.001000) -log r2.y, r2.y -mad r2.y, -r2.y, l(1.200000), l(1.000000) -add r0.z, r0.z, -r2.y -mul r5.xz, r4.yyzy, cb1[0].wwww -round_ni r5.xz, r5.xxzx -add r2.y, |r4.w|, -cb1[2].y -round_ni r2.y, r2.y -add r3.w, l(-1.000000), cb1[1].x -max r8.w, r2.y, l(0.000000) -min r3.w, r3.w, r8.w -ge r2.y, r3.w, r2.y -mad r5.x, r5.z, cb1[0].x, r5.x -ftoi r5.x, r5.x -iadd r5.x, r5.x, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.x, r5.x, l(0), t0.xxxx -ftoi r3.w, r3.w -iadd r3.w, r3.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx -and r3.w, r3.w, r5.x -and r2.y, r2.y, r3.w -mul r18.xyz, r16.xyzx, cb0[111].xxxx -dp3 r3.w, r18.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r7.w, l(1.000000) -mov r18.xyz, l(0,0,0,0) -mov r5.x, l(1.000000) -mov r5.z, r2.y -mov r8.w, l(0) -loop - lt r9.w, l(0.010000), r5.x - ine r10.w, r5.z, l(0) - and r10.w, r9.w, r10.w - if_nz r10.w - firstbit_lo r10.w, r5.z - ishl r11.z, l(1), r10.w - xor r5.z, r5.z, r11.z - ishl r10.w, r10.w, l(3) - dp4 r19.x, cb1[r10.w + 6].xyzw, r7.xyzw - dp4 r19.y, cb1[r10.w + 7].xyzw, r7.xyzw - dp4 r19.z, cb1[r10.w + 8].xyzw, r7.xyzw - ge r20.xyz, cb1[r10.w + 5].xyzx, |r19.xyzx| - and r11.z, r20.y, r20.x - and r11.z, r20.z, r11.z - if_nz r11.z - mul r11.z, l(0.100000), cb1[r10.w + 5].x - mul r20.xyz, |r19.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r12.zw, r20.xxxy, r20.xxxy - add r20.xyw, -|r19.xyxz|, cb1[r10.w + 5].xyxz - mul r20.xyw, r20.xyxw, cb1[r10.w + 9].xyxz - eq r16.w, l(1.000000), cb1[r10.w + 10].x - if_nz r16.w - dp3 r21.x, cb1[r10.w + 6].xyzx, r17.xyzx - dp3 r21.y, cb1[r10.w + 7].xyzx, r17.xyzx - dp3 r21.z, cb1[r10.w + 8].xyzx, r17.xyzx - add r22.xyz, -r19.xyzx, cb1[r10.w + 5].xyzx - div r22.xyz, r22.xyzx, r21.xyzx - add r23.xyz, -r19.xyzx, -cb1[r10.w + 5].xyzx - div r23.xyz, r23.xyzx, r21.xyzx - lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx - movc r22.xyz, r24.xyzx, r22.xyzx, r23.xyzx - min r16.w, r22.y, r22.x - min r16.w, r22.z, r16.w - mad r19.xyz, r21.xyzx, r16.wwww, r19.xyzx - else - mov r19.xyz, r17.xyzx - endif - dp3 r16.w, r19.xyzx, r19.xyzx - rsq r16.w, r16.w - mul r19.xyz, r16.wwww, r19.xyzx - lt r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - lt r22.xyz, r19.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r21.xyz, -r21.xyzx, r22.xyzx - itof r21.xyz, r21.xyzx - dp3 r16.w, r19.xyzx, r21.xyzx - div r19.xyz, r19.xyzx, r16.wwww - lt r16.w, r19.z, l(0.000000) - add r19.zw, -|r19.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r19.zw, r19.zzzw, r21.xxxy - movc r19.xy, r16.wwww, r19.zwzz, r19.xyxx - dp4 r16.w, cb1[r10.w + 4].xyzw, r6.xyzw - max r16.w, r16.w, l(0.000000) - max r16.w, r16.w, l(0.000100) - min r17.w, r20.w, r20.y - min r17.w, r17.w, r20.x - add r12.z, r12.w, r12.z - mad r12.z, r20.z, r20.z, r12.z - mad r11.z, r11.z, r11.z, -r12.z - mul r11.z, r11.z, cb1[r10.w + 9].x - mul r11.z, r11.z, cb1[r10.w + 9].x - add r12.z, l(1.000000), -cb1[r10.w + 10].y - mul r11.z, r11.z, r12.z - mul r11.z, r11.z, l(100.000000) - mad_sat r11.z, r17.w, cb1[r10.w + 10].y, r11.z - mul r12.z, r11.z, cb1[r10.w + 10].w - mad r19.xy, r19.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r19.xy, r19.xyxx, cb1[1].wwww, cb1[2].wwww - mov r19.z, cb1[r10.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r19.xyz, r19.xyzx, t5.xyzw, s3, r0.z - mul r19.xyz, r19.xyzx, cb1[r10.w + 9].wwww - div r12.w, r3.w, r16.w - min r12.w, |r12.w|, l(1.000000) - mad r12.w, r12.w, l(2.000000), r3.w - add r16.w, r16.w, l(2.000000) - div r12.w, r12.w, r16.w - add r12.w, r12.w, l(-1.000000) - mad r12.w, r12.w, cb0[112].w, l(1.000000) - mul r19.xyz, r12.wwww, r19.xyzx - mul r19.xyz, r12.zzzz, r19.xyzx - mad r18.xyz, r19.xyzx, r5.xxxx, r18.xyzx - mad r10.w, -r11.z, cb1[r10.w + 10].w, l(1.000000) - mul r5.x, r5.x, r10.w - endif - mov r8.w, l(-1) - continue - else - mov r8.w, r9.w - break - endif - mov r8.w, r9.w -endloop -if_nz r8.w - dp3 r2.y, r17.xyzx, r17.xyzx - rsq r2.y, r2.y - mul r7.xzw, r2.yyyy, r17.xxyz - lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r7.xzwx - lt r19.xyz, r7.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r17.xyz, -r17.xyzx, r19.xyzx - itof r17.xyz, r17.xyzx - dp3 r2.y, r7.xzwx, r17.xyzx - div r7.xzw, r7.xxzw, r2.yyyy - lt r2.y, r7.w, l(0.000000) - add r12.zw, -|r7.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r12.zw, r12.zzzw, r17.xxxy - movc r7.xz, r2.yyyy, r12.zzwz, r7.xxzx - dp4 r2.y, cb1[3].xyzw, r6.xyzw - max r2.y, r2.y, l(0.000000) - max r2.y, r2.y, l(0.000100) - mad r7.xz, r7.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) - mad r17.xy, r7.xzxx, cb1[1].wwww, cb1[2].wwww - mov r17.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r7.xzw, r17.xyzx, t5.xwyz, s3, r0.z - div r0.z, r3.w, r2.y - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r3.w - add r2.y, r2.y, l(2.000000) - div r0.z, r0.z, r2.y - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r7.xzw, r0.zzzz, r7.xxzw - mad r18.xyz, r7.xzwx, r5.xxxx, r18.xyzx -endif -mul r7.xzw, r18.xxyz, cb0[112].zzzz -mul r7.xzw, r7.xxzw, cb0[111].yyyy -if_nz r2.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r17.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x - add r2.y, -r0.z, l(1.000000) - mul r18.xyz, r2.yyyy, r7.xzwx - mad r7.xzw, r17.xxyz, r0.zzzz, r18.xxyz -endif -mul r16.xyz, r3.xyzx, r16.xyzx -mul r16.xyz, r16.xyzx, cb0[111].xxxx -mad r0.z, r2.x, r12.x, r12.y -mul r2.xyz, r0.zzzz, r7.xzwx -mul r2.xyz, r8.xyzx, r2.xyzx -mad r2.xyz, r16.xyzx, r11.xywx, r2.xyzx -mul r6.xyzw, r6.xyzw, l(-1.000000, -1.000000, -1.000000, 1.000000) -dp4 r8.x, r14.xyzw, r6.xyzw -dp4 r8.y, r13.xyzw, r6.xyzw -dp4 r8.z, r15.xyzw, r6.xyzw -max r6.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -mul r6.xyz, r6.xyzx, cb0[111].xxxx -mul r6.xyz, r11.xywx, r6.xyzx -max r0.z, r3.y, r3.x -max r0.z, r3.z, r0.z -max r0.z, r0.z, l(0.010000) -div r3.xyz, r3.xyzx, r0.zzzz -mul r3.xyz, r3.xyzx, r6.xyzx -mul r0.z, r4.x, l(0.00787401572) -min r3.w, r5.y, l(1.000000) -bfi r1.z, l(3), l(2), r1.z, l(0) -ftou r2.w, r2.w -bfi r1.z, l(2), l(0), r2.w, r1.z -utof r1.z, r1.z -mul r1.z, r1.z, l(0.0322580636) -mad r0.z, r0.z, r3.w, r1.z -mul r3.xyz, r0.zzzz, r3.xyzx -mad r2.xyz, r3.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000), r2.xyzx -add r1.xyz, r1.xywx, r2.xyzx -mad r0.z, r7.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r5.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r7.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xyz, r0.zzzz, cb0[155].xyzx -mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r2.xyz, r2.xyzx -dp3 r0.z, -r10.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.w, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.w -lt r2.w, l(0.000000), cb0[163].z -if_nz r2.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r10.xyzx, -r9.xyzx - add r2.w, r7.y, -cb0[44].y - lt r3.z, l(5.960464478E-08), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.z - mul r0.x, r0.x, cb0[163].w - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w - mul r3.w, r0.x, r3.z - mad r4.x, r3.w, r2.w, cb0[44].y - mad r2.w, -r3.w, r2.w, r2.w - mul r3.w, r2.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - mul r2.w, r2.w, cb0[162].x - max r2.w, r2.w, l(-127.000000) - add r5.x, r4.x, -cb0[159].x - mul r5.x, r5.x, cb0[159].z - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[159].y - lt r5.y, l(5.960464478E-08), |r3.w| - exp r5.z, -r3.w - add r5.z, -r5.z, l(1.000000) - div r5.z, r5.z, r3.w - mad r3.w, -r3.w, l(0.240226507), l(0.693147182) - movc r3.w, r5.y, r5.z, r3.w - add r4.x, r4.x, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r5.y, l(5.960464478E-08), |r2.w| - exp r5.z, -r2.w - add r5.z, -r5.z, l(1.000000) - div r5.z, r5.z, r2.w - mad r2.w, -r2.w, l(0.240226507), l(0.693147182) - movc r2.w, r5.y, r5.z, r2.w - mul r2.w, r2.w, r4.x - mad r2.w, r5.x, r3.w, r2.w - mad r0.x, -r0.x, r3.z, l(1.000000) - mul r0.x, r5.w, r0.x - mul r0.x, r0.x, r2.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - max r0.x, r0.x, cb0[161].w - mad_sat r3.zw, r5.wwww, cb0[160].yyyw, cb0[160].xxxz - add r0.x, r0.x, r3.z - add r0.x, r3.w, r0.x - min r0.x, r0.x, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.0000305180438, 0.000000, 0.0000305180438), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[167].wwww, r4.yyyz - mul r3.xy, r0.ywyy, cb0[165].xyxx - mad r0.y, |r4.w|, cb0[164].x, cb0[164].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[164].z - div r3.z, r0.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t12.xyzw, s1, l(0.000000) - add r0.y, |r4.w|, -cb0[166].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r0.yyyy, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r0.x, l(1.000000) - mul r4.xyz, r0.yyyy, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r0.x, r0.x, r3.w -else - add r0.y, r7.y, -cb0[44].y - mul r0.w, r0.y, cb0[159].z - mul r0.y, r0.y, cb0[162].x - max r0.yw, r0.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r2.w, cb0[44].y, -cb0[159].x - mul r2.w, r2.w, cb0[159].z - max r2.w, r2.w, l(-127.000000) - exp r2.w, -r2.w - mul r2.w, r2.w, cb0[159].y - lt r3.w, l(5.960464478E-08), |r0.w| - exp r4.x, -r0.w - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r0.w - mad r0.w, -r0.w, l(0.240226507), l(0.693147182) - movc r0.w, r3.w, r4.x, r0.w - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(5.960464478E-08), |r0.y| - exp r4.y, -r0.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.x, r4.y, r0.y - mul r0.y, r0.y, r3.w - mad r0.y, r2.w, r0.w, r0.y - mul r0.y, r5.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r5.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r0.x, r0.y, l(1.000000) - add r0.y, -r0.x, l(1.000000) - mul r3.xyz, r0.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r0.xxxx, r2.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.y, r0.y, l(0.0596831031) -mad r0.yzw, cb0[156].xxyz, r0.yyyy, cb0[158].xxyz -mad r2.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r1.w, r2.w, r1.w -mad_sat r0.yzw, cb0[157].xxyz, r1.wwww, r0.yyzw -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r2.xxyz -mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx - -// === Simplified Fog Modification (Anti-Banding) === -// Check if fog modification is enabled via cb13[12].y -lt r15.x, l(0.500000), cb13[12].y -if_nz r15.x - // r1.xyz = scene color (0-255), r4.xyz = transmittance, r0.xyz = fog inscatter - // Boost transmittance: lerp(trans, 1, 0.35) to reduce fog density - add r15.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r4.xyzx - - // Reduce fog inscatter intensity - mul r16.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - - // Modified fog blend: scene * boostedTrans + reducedInscatter - mad o0.xyz, r1.xyzx, r15.xyzx, r16.xyzx -else - // Original fog blend - mad o0.xyz, r1.xyzx, r4.xyzx, r0.xyzx -endif -// === End Fog Modification === -dp3 o0.w, r4.xyzx, l(0.333333343, 0.333333343, 0.333333343, 0.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0x843686F6.cso b/src/games/endfield/glass/0x048D5332.cso similarity index 95% rename from src/games/endfield/glass/0x843686F6.cso rename to src/games/endfield/glass/0x048D5332.cso index f076229da183dd6780354049c3c218e9484b1032..d72947b92f8961735bf543c742d585435ab8229f 100644 GIT binary patch delta 457 zcmZXPJ4k|26vyxJNstg^e5Uy*3l;MLHPjG93egL4sUVuv8Y-xvG5R72hoaz&;n1KJ z1^IPpP{*nq5DY<(Qtp~{13nXaMv>OwTxWrAM5eG&W!k9j;Bn6 z{oR*_mB@sk9hSit4a=s~kfPUBH!?P2)wR{|fr5^Mcg*T+P{N|l1D~|9ejhYBLdfc} zg^`eZ%^fH7kmqi9@W444dz=LfZvH$~-tJG8E8RPtx7lD}=; zV(e=E@sT$v=v*@|XUC$=$!N4oTEK3T*vrvP`;!9lIPdZ?mfaqFc6s5kk{>HM>h?mR zk_)u#K5d6XJPC4egm*ztOOpMjgOI8VQbROsS4Aw0gb3`FHZ0OgQs@YoA&GsVaS#{{ zcov$`NKHL&kpz;&&af4dbRx_F2y|hR3qqW(XHS8Rp{s%t_Rt~PU)N#9^f;6Ub1CXZ5yjt}QfHR=v delta 457 zcmeC#$K11zS;Qs6$yw9sux#ot*Ihd<-!oo0P5sYCkpL#fFPl@D(%BieZ$8U;o(V|J zS0qTJ1Tr#=#qA}x=$r~@q gGcKNd@nSgRvdx;8`q>zFOx}6Jn{mfx)|>2X06@#3rvLx| diff --git a/src/games/endfield/glass/0xF831814B.cso b/src/games/endfield/glass/0x08D1A751.cso similarity index 95% rename from src/games/endfield/glass/0xF831814B.cso rename to src/games/endfield/glass/0x08D1A751.cso index 914d924c7930daedb00592e336a462d0fcee405d..a50d8f10fde064bf7fb7b3a0b2f9f366ab55ec01 100644 GIT binary patch delta 446 zcmZ9HyGz1R6vyw;f*eFmRd;C<+W8V?az6LKO=slkj9fRpJQX-<$0x3~cl~Z} zR~J7pkdkg*1|M`q=1{>aCNvzpU|wT`H*9E}@J?ZHRi=C-gdE1qjD$3?r+46~?jD-B zreFU%qdk2PpoKneoN<%eV|?a}(4vZ=g8ZK=7$ukIMR$Qui7qd>Bj<7!E-enmo<$t% ztv1G(g`-Q>r#@)ojy=FwvpX?ob3sSS9VyS*UC@?IoD2^@5og0;C@~uGF1(=>HyD0i710+Ng(8hc zIDit}iedyRsHiMLg+?nW8D!|^^)0ZgeADfRJSOWlIKyh)q{;qTBlb>gsI@1;Fl3Pz POprmp5QH2}3M%C{s)m*D delta 446 zcmZ9HJxD@P6vyw;f*eF&`goDO)EYD#{AehLC^CYep(rp?$B5`_YD>zcHSFNz5~zI; zX>o~6vJ!d_ZEESzl3PpA7eTmm-=m@8a(?&xIlp`0CR6HUN^KmP8uZ<+hL_zvh9%eg z6Ibr97mkf%D)^u?Du)hUG0F+>g8Q5e-mu6y;hjSBtV(-F2-%2O7zrt1jd$R-@dipb z$It(r(HiduD5F>CW?U537@q|bl&PjAqyFbgCdCy+*&P?-vMVZX`+=H;6RU%u Ql+2L8KFJR|G$!e^-(*{sy#N3J diff --git a/src/games/endfield/glass/0x183ADBF7.ps_5_0.asm b/src/games/endfield/glass/0x183ADBF7.ps_5_0.asm deleted file mode 100644 index f0110c400a..0000000000 --- a/src/games/endfield/glass/0x183ADBF7.ps_5_0.asm +++ /dev/null @@ -1,1832 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Fri Feb 6 19:58:05 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xyz -// TEXCOORD 0 xy 1 NONE float xy -// TEXCOORD 1 zw 1 NONE float zw -// TEXCOORD 2 xyz 2 NONE float xyz -// TEXCOORD 3 xyzw 3 NONE float xyzw -// TEXCOORD 4 xyzw 4 NONE float x -// TEXCOORD 5 xyz 5 NONE float xyz -// TEXCOORD 6 xyz 6 NONE float xyz -// TEXCOORD 7 x 7 NONE uint x -// SV_IsFrontFace 0 x 8 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[244], immediateIndexed -dcl_constantbuffer CB1[4085], dynamicIndexed -dcl_constantbuffer CB2[24], immediateIndexed -dcl_constantbuffer CB3[259], dynamicIndexed -dcl_constantbuffer CB4[3], immediateIndexed -dcl_constantbuffer CB5[2054], dynamicIndexed -dcl_constantbuffer CB6[715], dynamicIndexed -dcl_constantbuffer CB7[160], dynamicIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_sampler s5, mode_default -dcl_sampler s6, mode_default -dcl_sampler s7, mode_default -dcl_sampler s8, mode_default -dcl_sampler s9, mode_default -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2darray (float,float,float,float) t4 -dcl_resource_texture2d (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture3d (float,float,float,float) t21 -dcl_resource_texture3d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_input_ps_siv linear noperspective v0.xyz, position -dcl_input_ps linear v1.xy -dcl_input_ps linear v1.zw -dcl_input_ps linear v2.xyz -dcl_input_ps linear v3.xyzw -dcl_input_ps linear v4.x -dcl_input_ps linear v5.xyz -dcl_input_ps linear v6.xyz -dcl_input_ps constant v7.x -dcl_input_ps_sgv constant v8.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 40 -ishl r0.x, v7.x, l(4) -max r0.y, cb1[r0.x + 4].z, cb1[r0.x + 4].y -dp2 r0.z, v0.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -ge r0.w, cb1[r0.x + 4].x, l(0.000000) -movc r0.w, r0.w, r0.z, -r0.z -add r0.x, -r0.w, cb1[r0.x + 4].x -add r0.z, -r0.y, -r0.z -add r0.z, r0.z, l(1.000000) -min r0.x, r0.z, r0.x -lt r0.x, r0.x, l(0.000000) -discard_nz r0.x -mul r0.xz, v0.xxyx, cb0[82].zzwz -mad r1.xy, r0.xzxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -mul r2.xyzw, -r1.yyyy, cb0[25].xyzw -mad r1.xyzw, cb0[24].xyzw, r1.xxxx, r2.xyzw -mad r1.xyzw, cb0[26].xyzw, v0.zzzz, r1.xyzw -add r1.xyzw, r1.xyzw, cb0[27].xyzw -div r1.xyz, r1.xyzx, r1.wwww -mul r0.w, r1.y, cb0[1].z -mad r0.w, cb0[0].z, r1.x, r0.w -mad r0.w, cb0[2].z, r1.z, r0.w -add r0.w, r0.w, cb0[3].z -mov r2.z, |r0.w| -lt r0.w, l(0.000000), v3.w -movc r0.w, r0.w, l(1.000000), l(-1.000000) -eq r2.w, l(0.000000), cb0[86].w -add r3.xyz, -r1.xyzx, cb0[44].xyzx -mov r4.x, cb0[0].z -mov r4.y, cb0[1].z -mov r4.z, cb0[2].z -movc r3.xyz, r2.wwww, r3.xyzx, r4.xyzx -dp3 r2.w, r3.xyzx, r3.xyzx -max r3.w, r2.w, l(9.999999939E-09) -rsq r3.w, r3.w -mul r5.xyz, r3.wwww, r3.xyzx -mul r2.w, r2.w, r3.w -add r6.xy, -v1.xyxx, v1.zwzz -mad r6.zw, cb2[3].xxxx, r6.xxxy, v1.xxxy -mad r6.zw, r6.zzzw, cb2[12].xxxy, cb2[12].zzzw -mad r6.xy, cb2[2].wwww, r6.xyxx, v1.xyxx -mad r6.xy, r6.xyxx, cb2[11].xyxx, cb2[11].zwzz -sample_b_indexable(texture2d)(float,float,float,float) r7.xyzw, r6.xyxx, t5.xyzw, s5, cb0[108].x -add r4.w, cb0[108].x, cb2[3].y -sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r6.zwzz, t6.xywz, s6, r4.w -mul r8.x, r8.x, r8.z -mad r6.xy, r8.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -mul r8.xy, r6.xyxx, cb2[0].xxxx -sample_b_indexable(texture2d)(float,float,float,float) r9.xyz, r6.zwzz, t7.xyzw, s7, cb0[108].x -mul r7.xyzw, r7.xyzw, cb2[8].xyzw -mul_sat r7.xyz, r7.xyzx, cb2[4].zzzz -add r10.xyz, -r7.xyzx, cb2[8].xyzx -mad r7.xyz, cb2[4].xxxx, r10.xyzx, r7.xyzx -mad r4.w, r7.w, v4.x, -r7.w -mad r10.w, cb2[23].x, r4.w, r7.w -add r4.w, -cb2[0].z, cb2[0].w -mad r11.w, r9.y, r4.w, cb2[0].z -add_sat r4.w, l(-1.000000), cb2[3].w -add r5.w, -r9.x, cb2[4].y -mad r4.w, r4.w, r5.w, r9.x -mul r9.xyw, v2.zxzy, v3.yzyx -mad r9.xyw, v2.yzyx, v3.zxzy, -r9.xyxw -mul r9.xyw, r0.wwww, r9.xyxw -mul r8.yzw, r8.yyyy, r9.xxyw -mad r8.xyz, v3.xyzx, r8.xxxx, r8.yzwy -dp2 r0.w, r6.xyxx, r6.xyxx -min r0.w, r0.w, l(1.000000) -add r0.w, -r0.w, l(1.000000) -sqrt r0.w, r0.w -max r0.w, r0.w, l(1.000000017E-16) -lt r5.w, l(0.000000), cb2[1].w -movc r5.w, r5.w, l(-1.000000), l(1.000000) -movc r5.w, v8.x, l(1.000000), r5.w -mul r0.w, r0.w, r5.w -mad r6.xyz, v2.xyzx, r0.wwww, r8.xyzx -dp3 r0.w, r6.xyzx, r6.xyzx -rsq r0.w, r0.w -mul r6.xyz, r0.wwww, r6.xyzx -dp3 r0.w, r6.xyzx, r5.xyzx -dp3 r5.w, -r5.xyzx, r6.xyzx -mul r7.w, cb2[19].z, cb2[19].z -mad r8.x, -r5.w, r5.w, l(1.000000) -mad r7.w, -r7.w, r8.x, l(1.000000) -sqrt r8.x, r7.w -mad r8.x, cb2[19].z, r5.w, r8.x -ge r7.w, r7.w, l(0.000000) -mul r8.xyz, r6.xyzx, r8.xxxx -mad r8.xyz, cb2[19].zzzz, -r5.xyzx, -r8.xyzx -and r8.xyz, r7.wwww, r8.xyzx -mul r7.w, r0.w, v0.z -max r7.w, r7.w, l(0.500000) -div r7.w, cb2[19].w, r7.w -add r7.w, r7.w, -cb2[19].w -mad r7.w, cb2[20].x, r7.w, cb2[19].w -mul r8.xyz, r7.wwww, r8.xyzx -mul r8.yw, r8.yyyy, cb0[1].xxxy -mad r8.xy, cb0[0].xyxx, r8.xxxx, r8.ywyy -mad r8.xy, cb0[2].xyxx, r8.zzzz, r8.xyxx -mad r8.zw, v1.xxxy, cb2[22].xxxy, cb2[22].zzzw -sample_b_indexable(texture2d)(float,float,float,float) r8.zw, r8.zwzz, t9.zwxy, s8, cb0[108].x -mad r8.zw, r8.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -mad r8.zw, r8.zzzw, cb2[19].yyyy, -r8.xxxy -mad r8.xy, cb2[19].xxxx, r8.zwzz, r8.xyxx -mad r8.zw, v0.xxxy, cb0[82].zzzw, r8.xxxy -mul r8.xy, r8.xyxx, l(0.250000, 0.250000, 0.000000, 0.000000) -mad r9.xy, v0.xyxx, cb0[82].zwzz, r8.xyxx -sample_b_indexable(texture2d)(float,float,float,float) r7.w, r8.zwzz, t1.yzwx, s0, cb0[108].x -sample_b_indexable(texture2d)(float,float,float,float) r9.x, r9.xyxx, t1.xyzw, s0, cb0[108].x -mad r9.x, cb0[84].z, r9.x, cb0[84].w -div r9.x, l(1.000000, 1.000000, 1.000000, 1.000000), r9.x -ge r9.x, r9.x, r2.z -and r9.x, r9.x, l(0x3f800000) -mad r8.xy, r9.xxxx, r8.xyxx, r0.xzxx -mad r7.w, cb0[84].z, r7.w, cb0[84].w -div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w -ge r7.w, r7.w, r2.z -and r7.w, r7.w, l(0x3f800000) -add r8.zw, -r8.xxxy, r8.zzzw -mad r8.xy, r7.wwww, r8.zwzz, r8.xyxx -sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r8.xyxx, t8.xyzw, s9, cb0[108].x -max r7.w, v5.z, l(9.999999939E-09) -div r9.xy, v5.xyxx, r7.wwww -max r7.w, v6.z, l(9.999999939E-09) -div r12.xy, v6.xyxx, r7.wwww -add r12.xy, r9.xyxx, -r12.xyxx -mul r7.w, l(0.080000), cb2[0].y -mad r9.xyw, -r7.xyxz, r4.wwww, r7.xyxz -mad r7.w, -r7.w, r4.w, r7.w -mad r7.xyz, r7.xyzx, r4.wwww, r7.wwww -mad r13.xyzw, r11.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r4.w, r13.x, r13.x -max r0.w, r0.w, l(0.000000) -mul r7.w, r0.w, l(-9.280000) -exp r7.w, r7.w -min r4.w, r4.w, r7.w -mad r4.w, r4.w, r13.x, r13.y -mad r13.xy, r4.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r13.zwzz -eq r4.w, l(1.000000), cb0[113].y -mul r14.xyzw, r1.yyyy, cb0[241].xyzw -mad r14.xyzw, cb0[240].xyzw, r1.xxxx, r14.xyzw -mad r14.xyzw, cb0[242].xyzw, r1.zzzz, r14.xyzw -add r14.xyzw, r14.xyzw, cb0[243].xyzw -div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r14.w -mul r14.xyz, r14.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) -mul r14.xyz, r7.wwww, r14.xyzx -mad_sat r13.zw, r14.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) -mul r13.zw, r13.zzzw, cb0[82].xxxy -ftou r15.xy, r13.zwzz -mad r7.w, cb0[84].z, r14.z, cb0[84].w -div r15.z, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w -ftou r2.xy, v0.xyxx -movc r14.xyz, r4.wwww, r15.xyzx, r2.xyzx -mad r2.xyz, r6.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r1.xyzx -mad r15.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r15.xyz, r2.xzyx, -r15.xyzx -max r4.w, |r15.y|, |r15.x| -add r4.w, r4.w, l(-464.000000) -mul_sat r4.w, r4.w, l(0.031250) -add r7.w, |r15.z|, l(-208.000000) -mul_sat r7.w, r7.w, l(0.031250) -max r4.w, r4.w, r7.w -ne r7.w, l(0.000000), cb0[210].w -lt r8.w, r4.w, l(1.000000) -and r7.w, r7.w, r8.w -if_nz r7.w - mad r15.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r15.xyz, r2.xzyx, -r15.xyzx - max r7.w, |r15.y|, |r15.x| - add r7.w, r7.w, l(-29.000000) - mul_sat r7.w, r7.w, l(0.500000) - add r8.w, |r15.z|, l(-13.000000) - mul_sat r8.w, r8.w, l(0.500000) - max r7.w, r7.w, r8.w - lt r8.w, r7.w, l(1.000000) - if_nz r8.w - mad r15.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r16.xyz, r15.xyzx, cb0[211].xyzx - round_ni r16.xyz, r16.xyzx - mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r15.xyzx, t16.xyzw, s2, l(0.000000) - add r8.w, -r7.w, l(1.000000) - mul r12.w, l(0.500000), cb0[211].y - mad r13.z, -cb0[211].y, l(0.500000), l(1.000000) - max r12.w, r12.w, r15.y - min r12.w, r13.z, r12.w - mul r15.w, r12.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t17.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r16.xxxx, r17.xyzx - add r17.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t17.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r16.yyyy, r17.xyzx - add r15.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t17.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r16.zzzz, r15.xyzx - mad r12.w, r17.w, r8.w, r4.w - mov r15.w, r16.z - mul r15.xyzw, r8.wwww, r15.xyzw - mov r19.w, r16.y - mul r17.xyzw, r8.wwww, r19.xyzw - mov r18.w, r16.x - mul r16.xyzw, r8.wwww, r18.xyzw - else - mov r15.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r12.w, r4.w - endif - mad r18.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r18.xyz, r2.xzyx, -r18.xyzx - max r8.w, |r18.y|, |r18.x| - add r8.w, r8.w, l(-116.000000) - mul_sat r8.w, r8.w, l(0.125000) - add r13.z, |r18.z|, l(-52.000000) - mul_sat r13.z, r13.z, l(0.125000) - max r8.w, r8.w, r13.z - lt r13.z, r8.w, l(1.000000) - if_nz r13.z - mad r18.xyz, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r19.xyz, r18.xyzx, cb0[211].xyzx - round_ni r19.xyz, r19.xyzx - mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r19.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r18.xyzx, t18.xyzw, s2, l(0.000000) - add r13.z, -r8.w, l(1.000000) - mul r7.w, r7.w, r13.z - mul r13.z, l(0.500000), cb0[211].y - mad r13.w, -cb0[211].y, l(0.500000), l(1.000000) - max r13.z, r13.z, r18.y - min r13.z, r13.w, r13.z - mul r18.w, r13.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t19.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r19.xxxx, r20.xyzx - add r20.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t19.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r19.yyyy, r20.xyzx - add r18.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t19.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r19.zzzz, r18.xyzx - mad r12.w, r20.w, r7.w, r12.w - mov r18.w, r19.z - mad r15.xyzw, r18.xyzw, r7.wwww, r15.xyzw - mov r22.w, r19.y - mad r17.xyzw, r22.xyzw, r7.wwww, r17.xyzw - mov r21.w, r19.x - mad r16.xyzw, r21.xyzw, r7.wwww, r16.xyzw - endif - lt r7.w, l(0.000000), r8.w - if_nz r7.w - mad r2.xyz, r2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r2.xyzx, cb0[211].xyzx - mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r2.xyz, r2.xyzx, cb0[211].xyzx, -r18.xyzx - mad r18.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r2.xyz, r19.xyzx, r2.xyzx - min r20.xyz, r18.xyzx, r2.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r20.xyzx, t20.yzwx, s2, l(0.000000) - add r2.x, -r4.w, l(1.000000) - mul r2.x, r2.x, r8.w - max r2.y, r19.y, r20.y - min r2.y, r18.y, r2.y - mul r20.w, r2.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r20.xwzx, t21.xyzw, s1, l(0.000000) - add r19.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t21.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r21.yyyy, r19.xyzx - mov r19.w, r21.y - mad r15.xyzw, r19.xyzw, r2.xxxx, r15.xyzw - add r19.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t21.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r21.xxxx, r19.xyzx - mov r19.w, r21.x - mad r17.xyzw, r19.xyzw, r2.xxxx, r17.xyzw - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r18.xyzx - mad r16.xyzw, r21.xyzw, r2.xxxx, r16.xyzw - mad r12.w, r18.w, r2.x, r12.w - endif - mad_sat r2.x, r12.w, l(2.000000), l(-1.000000) - add r18.x, -r4.w, r2.x - add r2.x, r4.w, r2.x - mul r18.y, r2.x, l(0.500000) -else - mov r15.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r18.xy, l(0,1.000000,0,0) -endif -mul r19.xyzw, r18.yyyx, cb0[213].xyzw -mad r19.y, r19.w, l(0.500000), r19.y -mul r2.xy, r18.yxyy, cb0[213].wyww -mad r19.w, r2.y, l(0.375000), r2.x -add r16.xyzw, r16.xyzw, r19.xyzw -mul r19.xyzw, r18.yyyx, cb0[214].xyzw -mad r19.y, r19.w, l(0.500000), r19.y -mul r2.xy, r18.yxyy, cb0[214].wyww -mad r19.w, r2.y, l(0.375000), r2.x -add r17.xyzw, r17.xyzw, r19.xyzw -mul r19.xyzw, r18.yyyx, cb0[215].xyzw -mad r19.y, r19.w, l(0.500000), r19.y -mul r2.xy, r18.yxyy, cb0[215].wyww -mad r19.w, r2.y, l(0.375000), r2.x -add r15.xyzw, r15.xyzw, r19.xyzw -dp3 r2.x, r16.xyzx, r6.xyzx -add r2.x, r16.w, r2.x -max r2.x, r2.x, l(0.000000) -dp3 r4.w, r17.xyzx, r6.xyzx -add r4.w, r17.w, r4.w -max r2.y, r4.w, l(0.000000) -dp3 r4.w, r15.xyzx, r6.xyzx -add r4.w, r15.w, r4.w -max r2.z, r4.w, l(0.000000) -add r4.w, r5.w, r5.w -mad r15.xyz, r6.xyzx, -r4.wwww, -r5.xyzx -add r4.w, l(-1.000000), cb0[113].x -max r5.w, r11.w, l(0.001000) -log r5.w, r5.w -mad r5.w, -r5.w, l(1.200000), l(1.000000) -add r4.w, r4.w, -r5.w -utof r13.zw, r14.xxxy -mul r16.xy, r13.zwzz, cb3[0].wwww -round_ni r16.xy, r16.xyxx -add r5.w, r14.z, -cb3[2].y -round_ni r5.w, r5.w -add r7.w, l(-1.000000), cb3[1].x -max r8.w, r5.w, l(0.000000) -min r7.w, r7.w, r8.w -ge r5.w, r7.w, r5.w -mad r8.w, r16.y, cb3[0].x, r16.x -ftoi r8.w, r8.w -iadd r8.w, r8.w, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r8.w, r8.w, l(0), t0.xxxx -ftoi r7.w, r7.w -iadd r7.w, r7.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r7.w, r7.w, l(0), t0.xxxx -and r7.w, r7.w, r8.w -and r5.w, r5.w, r7.w -mul r16.xyz, r2.xyzx, cb0[111].xxxx -dp3 r7.w, r16.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r1.w, l(1.000000) -mov r6.w, l(1.000000) -mov r16.xyz, l(0,0,0,0) -mov r8.w, l(1.000000) -mov r12.w, r5.w -mov r15.w, l(0) -loop - lt r16.w, l(0.010000), r8.w - ine r17.x, r12.w, l(0) - and r17.x, r16.w, r17.x - if_nz r17.x - firstbit_lo r17.x, r12.w - ishl r17.y, l(1), r17.x - xor r12.w, r12.w, r17.y - ishl r17.x, r17.x, l(3) - dp4 r18.x, cb3[r17.x + 6].xyzw, r1.xyzw - dp4 r18.y, cb3[r17.x + 7].xyzw, r1.xyzw - dp4 r18.z, cb3[r17.x + 8].xyzw, r1.xyzw - ge r17.yzw, cb3[r17.x + 5].xxyz, |r18.xxyz| - and r17.y, r17.z, r17.y - and r17.y, r17.w, r17.y - if_nz r17.y - mul r17.y, l(0.100000), cb3[r17.x + 5].x - mul r19.xyz, |r18.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r17.zw, r19.xxxy, r19.xxxy - add r19.xyw, -|r18.xyxz|, cb3[r17.x + 5].xyxz - mul r19.xyw, r19.xyxw, cb3[r17.x + 9].xyxz - eq r18.w, l(1.000000), cb3[r17.x + 10].x - if_nz r18.w - dp3 r20.x, cb3[r17.x + 6].xyzx, r15.xyzx - dp3 r20.y, cb3[r17.x + 7].xyzx, r15.xyzx - dp3 r20.z, cb3[r17.x + 8].xyzx, r15.xyzx - add r21.xyz, -r18.xyzx, cb3[r17.x + 5].xyzx - div r21.xyz, r21.xyzx, r20.xyzx - add r22.xyz, -r18.xyzx, -cb3[r17.x + 5].xyzx - div r22.xyz, r22.xyzx, r20.xyzx - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx - movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx - min r18.w, r21.y, r21.x - min r18.w, r21.z, r18.w - mad r18.xyz, r20.xyzx, r18.wwww, r18.xyzx - else - mov r18.xyz, r15.xyzx - endif - dp3 r18.w, r18.xyzx, r18.xyzx - rsq r18.w, r18.w - mul r18.xyz, r18.wwww, r18.xyzx - lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyzx - lt r21.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r20.xyz, -r20.xyzx, r21.xyzx - itof r20.xyz, r20.xyzx - dp3 r18.w, r18.xyzx, r20.xyzx - div r18.xyz, r18.xyzx, r18.wwww - lt r18.z, r18.z, l(0.000000) - add r20.zw, -|r18.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r20.xy, r20.zwzz, r20.xyxx - movc r18.xy, r18.zzzz, r20.xyxx, r18.xyxx - dp4 r18.z, cb3[r17.x + 4].xyzw, r6.xyzw - max r18.z, r18.z, l(0.000000) - max r18.z, r18.z, l(0.000100) - min r18.w, r19.w, r19.y - min r18.w, r18.w, r19.x - add r17.z, r17.w, r17.z - mad r17.z, r19.z, r19.z, r17.z - mad r17.y, r17.y, r17.y, -r17.z - mul r17.y, r17.y, cb3[r17.x + 9].x - mul r17.y, r17.y, cb3[r17.x + 9].x - add r17.z, l(1.000000), -cb3[r17.x + 10].y - mul r17.y, r17.z, r17.y - mul r17.y, r17.y, l(100.000000) - mad_sat r17.y, r18.w, cb3[r17.x + 10].y, r17.y - mul r17.z, r17.y, cb3[r17.x + 10].w - mad r18.xy, r18.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r19.xy, r18.xyxx, cb3[1].wwww, cb3[2].wwww - mov r19.z, cb3[r17.x + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r18.xyw, r19.xyzx, t4.xywz, s3, r4.w - mul r18.xyw, r18.xyxw, cb3[r17.x + 9].wwww - div r17.w, r7.w, r18.z - min r17.w, |r17.w|, l(1.000000) - mad r17.w, r17.w, l(2.000000), r7.w - add r18.z, r18.z, l(2.000000) - div r17.w, r17.w, r18.z - add r17.w, r17.w, l(-1.000000) - mad r17.w, r17.w, cb0[112].w, l(1.000000) - mul r18.xyz, r17.wwww, r18.xywx - mul r18.xyz, r17.zzzz, r18.xyzx - mad r16.xyz, r18.xyzx, r8.wwww, r16.xyzx - mad r17.x, -r17.y, cb3[r17.x + 10].w, l(1.000000) - mul r8.w, r8.w, r17.x - endif - mov r15.w, l(-1) - continue - else - mov r15.w, r16.w - break - endif - mov r15.w, r16.w -endloop -if_nz r15.w - dp3 r1.w, r15.xyzx, r15.xyzx - rsq r1.w, r1.w - mul r17.xyz, r1.wwww, r15.xyzx - lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx - lt r19.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r18.xyz, -r18.xyzx, r19.xyzx - itof r18.xyz, r18.xyzx - dp3 r1.w, r17.xyzx, r18.xyzx - div r17.xyz, r17.xyzx, r1.wwww - lt r1.w, r17.z, l(0.000000) - add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r17.zw, r17.zzzw, r18.xxxy - movc r17.xy, r1.wwww, r17.zwzz, r17.xyxx - mov r6.w, l(1.000000) - dp4 r1.w, cb3[3].xyzw, r6.xyzw - max r1.w, r1.w, l(0.000000) - max r1.w, r1.w, l(0.000100) - mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r17.xy, r17.xyxx, cb3[1].wwww, cb3[2].wwww - mov r17.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t4.xyzw, s3, r4.w - div r4.w, r7.w, r1.w - min r4.w, |r4.w|, l(1.000000) - mad r4.w, r4.w, l(2.000000), r7.w - add r1.w, r1.w, l(2.000000) - div r1.w, r4.w, r1.w - add r1.w, r1.w, l(-1.000000) - mad r1.w, r1.w, cb0[112].w, l(1.000000) - mul r17.xyz, r1.wwww, r17.xyzx - mad r16.xyz, r17.xyzx, r8.wwww, r16.xyzx -endif -mul r16.xyz, r16.xyzx, cb0[112].zzzz -// === Glass Fix: Reduce reflection probe intensity === -lt r37.x, l(0.500000), cb13[13].z -if_nz r37.x - mul r16.xyz, r16.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) -endif -mul r16.xyz, r16.xyzx, cb0[111].yyyy -ne r1.w, l(0.000000), cb0[112].y -if_nz r1.w - sample_b_indexable(texture2d)(float,float,float,float) r1.w, r0.xzxx, t3.yzwx, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r17.xyz, r0.xzxx, t2.xyzw, s1, cb0[108].x - add r0.x, -r1.w, l(1.000000) - mul r18.xyz, r0.xxxx, r16.xyzx - mad r16.xyz, r17.xyzx, r1.wwww, r18.xyzx -endif -mul r2.xyz, r9.xywx, r2.xyzx -add r0.x, r9.z, l(-1.000000) -mad r0.x, cb2[1].x, r0.x, l(1.000000) -mul r2.xyz, r0.xxxx, r2.xyzx -mul_sat r0.x, r7.y, l(50.000000) -mul r0.x, r13.y, r0.x -mad r17.xyz, r7.xyzx, r13.xxxx, r0.xxxx -mul r16.xyz, r16.xyzx, r17.xyzx -mad r2.xyz, r2.xyzx, cb0[111].xxxx, r16.xyzx -lt r0.x, cb6[35].w, l(0.990000) -if_nz r0.x - ftoi r0.x, cb6[35].x - ieq r0.z, r0.x, l(2) - movc r16.xyz, r0.zzzz, cb6[20].xyzx, cb0[44].xyzx - add r16.xyz, r1.xyzx, -r16.xyzx - dp3 r0.z, r16.xyzx, r16.xyzx - add r0.z, -r0.z, cb6[34].w - mul_sat r0.z, r0.z, cb6[34].z - lt r1.w, l(0.000000), r0.z - if_nz r1.w - ilt r0.x, l(0), r0.x - if_nz r0.x - add r16.xyz, r1.xyzx, -cb6[20].xyzx - add r17.xyz, r1.xyzx, -cb6[21].xyzx - add r18.xyz, r1.xyzx, -cb6[22].xyzx - add r19.xyz, r1.xyzx, -cb6[23].xyzx - dp3 r16.x, r16.xyzx, r16.xyzx - dp3 r16.y, r17.xyzx, r17.xyzx - dp3 r16.z, r18.xyzx, r18.xyzx - dp3 r16.w, r19.xyzx, r19.xyzx - lt r17.x, r16.x, cb6[20].w - lt r17.y, r16.y, cb6[21].w - lt r17.z, r16.z, cb6[22].w - lt r17.w, r16.w, cb6[23].w - and r18.xyzw, r17.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) - movc r17.xyz, r17.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) - add r17.xyz, r17.xyzx, r18.yzwy - max r18.yzw, r17.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) - dp4 r0.x, r18.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) - add r0.x, -r0.x, l(4.000000) - max r0.x, r0.x, l(0.000000) - min r0.x, r0.x, l(3.000000) - add r1.w, r0.x, l(1.000000) - min r1.w, r1.w, l(3.000000) - ftou r1.w, r1.w - dp3 r4.w, r16.yzwy, icb[r1.w + 0].yzwy - div r1.w, r4.w, cb6[r1.w + 20].w - ge r4.w, r1.w, l(0.000000) - ge r1.w, l(1.000000), r1.w - and r1.w, r1.w, r4.w - if_nz r1.w - ftou r1.w, r0.x - add r13.xy, r13.zwzz, l(2.083000, 4.867000, 0.000000, 0.000000) - dp2 r4.w, r13.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) - frc r4.w, r4.w - mul r4.w, r4.w, l(52.982918) - frc r4.w, r4.w - dp4 r5.w, r16.xyzw, icb[r1.w + 0].xyzw - div r1.w, r5.w, cb6[r1.w + 20].w - sqrt r1.w, r1.w - add r1.w, r1.w, l(-0.900000) - mul r1.w, r1.w, l(12.000000) - ge r1.w, r1.w, r4.w - and r1.w, r1.w, l(0x3f800000) - add r0.x, r0.x, r1.w - endif - dp3 r1.w, r6.xyzx, cb5[0].xyzx - max r1.w, r1.w, l(0.000000) - min r1.w, r1.w, l(0.900000) - add r1.w, -r1.w, l(1.000000) - ftou r4.w, r0.x - ishl r5.w, r4.w, l(2) - mul r13.xy, r1.wwww, cb6[r4.w + 24].xyxx - max r1.w, r13.x, l(0.000000) - mad r16.xyz, -cb5[0].xyzx, r1.wwww, r1.xyzx - mad r16.xyz, r6.xyzx, r13.yyyy, r16.xyzx - mul r17.xyz, r16.yyyy, cb6[r5.w + 1].xyzx - mad r16.xyw, cb6[r5.w + 0].xyxz, r16.xxxx, r17.xyxz - mad r16.xyz, cb6[r5.w + 2].xyzx, r16.zzzz, r16.xywx - add r16.xyz, r16.xyzx, cb6[r5.w + 3].xyzx - ge r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - ge r18.xyz, r16.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - or r17.xyz, r17.xyzx, r18.xyzx - or r1.w, r17.y, r17.x - or r1.w, r17.z, r1.w - and r4.w, r16.z, l(0x7fffffff) - ult r4.w, l(0x7f800000), r4.w - or r17.z, r1.w, r4.w - ftoi r0.x, r0.x - mad r13.xy, r16.xyxx, cb6[r0.x + 28].zwzz, cb6[r0.x + 28].xyxx - mad r16.xy, r13.xyxx, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r16.xy, r16.xyxx - mad r13.xy, r13.xyxx, cb6[32].zwzz, -r16.xyxx - add r18.xyzw, r13.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r19.xw, r18.xxxz, r18.xxxz - min r18.xz, r13.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r20.xy, r13.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r20.zw, r19.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r13.xxxy - add r13.xy, -r13.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mad r13.xy, -r18.xzxx, r18.xzxx, r13.xyxx - mad r18.xy, -r20.xyxx, r20.xyxx, r18.ywyy - mov r21.x, r20.z - mov r21.y, r13.x - mov r21.z, r18.x - mov r21.w, r19.x - mul r21.xyzw, r21.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r19.x, r20.w - mov r19.y, r13.y - mov r19.z, r18.y - mul r18.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r19.xyzw, r21.ywyw, r21.xzxz - add r20.xyzw, r18.yyww, r18.xxzz - div r13.xy, r21.ywyy, r19.zwzz - add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) - mul r21.xy, r13.xyxx, cb6[32].xxxx - div r13.xy, r18.ywyy, r20.ywyy - add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) - mul r21.zw, r13.xxxy, cb6[32].yyyy - mul r18.xyzw, r19.xyzw, r20.xyzw - mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xzyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r19.xyxx, t10.xxxx, s4, r16.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t10.xxxx, s4, r16.z - mul r1.w, r1.w, r18.y - mad r0.x, r18.x, r0.x, r1.w - mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.xyxx, t10.xxxx, s4, r16.z - mad r0.x, r18.z, r1.w, r0.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t10.xxxx, s4, r16.z - mad r0.x, r18.w, r1.w, r0.x - movc r17.x, r17.z, l(1.000000), r0.x - else - mov r17.xz, l(1.000000,0,0,0) - endif - else - mov r17.xz, l(1.000000,0,0,0) - endif - lt r0.x, r0.z, l(1.000000) - if_nz r0.x - dp3 r0.x, r6.xyzx, cb5[0].xyzx - max r0.x, r0.x, l(0.000000) - min r0.x, r0.x, l(0.900000) - add r0.x, -r0.x, l(1.000000) - mul r13.xy, r0.xxxx, cb6[584].xyxx - mad r16.xyz, -cb5[0].xyzx, r13.xxxx, r1.xyzx - mad r16.xyz, r6.xyzx, r13.yyyy, r16.xyzx - mul r13.xy, r16.yyyy, cb6[581].xyxx - mad r13.xy, cb6[580].xyxx, r16.xxxx, r13.xyxx - mad r13.xy, cb6[582].xyxx, r16.zzzz, r13.xyxx - add r13.xy, r13.xyxx, cb6[583].xyxx - lt r18.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r13.xyxx - and r0.x, r18.y, r18.x - lt r18.xy, r13.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - and r1.w, r18.y, r18.x - and r0.x, r0.x, r1.w - if_nz r0.x - mul r0.x, r13.y, cb6[585].z - round_ni r0.x, r0.x - add r0.x, r13.x, r0.x - mul r0.x, r0.x, cb6[585].y - ftou r0.x, r0.x - umin r0.x, r0.x, l(127) - and r1.w, l(0x0000ffff), cb6[r0.x + 587].x - f16tof32 r13.x, r1.w - ge r1.w, r13.x, l(0.000000) - if_nz r1.w - mov r18.x, cb6[576].x - mov r18.y, cb6[577].x - mov r18.z, cb6[578].x - mov r18.w, cb6[r0.x + 587].y - mov r16.w, l(1.000000) - dp4 r18.x, r18.xyzw, r16.xyzw - mov r19.x, cb6[576].y - mov r19.y, cb6[577].y - mov r19.z, cb6[578].y - mov r19.w, cb6[r0.x + 587].z - dp4 r18.y, r19.xyzw, r16.xyzw - mov r19.x, cb6[576].z - mov r19.y, cb6[577].z - mov r19.z, cb6[578].z - mov r19.w, cb6[r0.x + 587].w - dp4 r1.w, r19.xyzw, r16.xyzw - lt r16.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyxx - lt r4.w, l(0.000000), r1.w - and r5.w, r16.y, r16.x - and r4.w, r4.w, r5.w - lt r16.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - lt r5.w, r1.w, l(1.000000) - and r6.w, r16.y, r16.x - and r5.w, r5.w, r6.w - and r4.w, r4.w, r5.w - if_nz r4.w - ushr r0.x, cb6[r0.x + 587].x, l(16) - f16tof32 r13.y, r0.x - mad r13.xy, r18.xyxx, cb6[584].zwzz, r13.xyxx - mad r16.xy, r13.xyxx, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r16.xy, r16.xyxx - mad r13.xy, r13.xyxx, cb6[586].zwzz, -r16.xyxx - add r18.xyzw, r13.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r19.xw, r18.xxxz, r18.xxxz - min r16.zw, r13.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r18.xz, r13.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r20.xy, r19.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r13.xyxx - add r13.xy, -r13.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mad r13.xy, -r16.zwzz, r16.zwzz, r13.xyxx - mad r16.zw, -r18.xxxz, r18.xxxz, r18.yyyw - mov r18.x, r20.x - mov r18.y, r13.x - mov r18.z, r16.z - mov r18.w, r19.x - mul r18.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r19.x, r20.y - mov r19.y, r13.y - mov r19.z, r16.w - mul r19.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r20.xyzw, r18.ywyw, r18.xzxz - add r21.xyzw, r19.yyww, r19.xxzz - div r13.xy, r18.ywyy, r20.zwzz - add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) - mul r18.xy, r13.xyxx, cb6[586].xxxx - div r13.xy, r19.ywyy, r21.ywyy - add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) - mul r18.zw, r13.xxxy, cb6[586].yyyy - mul r19.xyzw, r20.xyzw, r21.xyzw - mad r20.xyzw, r16.xyxy, cb6[586].xyxy, r18.xzyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r20.xyxx, t13.xxxx, s4, r1.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r4.w, r20.zwzz, t13.xxxx, s4, r1.w - mul r4.w, r4.w, r19.y - mad r0.x, r19.x, r0.x, r4.w - mad r16.xyzw, r16.xyxy, cb6[586].xyxy, r18.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r4.w, r16.xyxx, t13.xxxx, s4, r1.w - mad r0.x, r19.z, r4.w, r0.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r16.zwzz, t13.xxxx, s4, r1.w - mad r17.y, r19.w, r1.w, r0.x - else - mov r17.y, l(1.000000) - endif - else - mov r17.y, l(1.000000) - endif - else - mov r17.y, l(1.000000) - endif - movc r17.x, r17.z, r17.y, r17.x - else - mov r17.y, l(1.000000) - endif - add r0.x, -r17.y, r17.x - mad r0.x, r0.z, r0.x, r17.y - lt r0.z, l(0.001000), r0.x - if_nz r0.z - add r16.xyz, r1.xyzx, -cb0[173].xyzx - mad r13.xy, cb0[176].xzxx, r16.yyyy, r16.xzxx - mul r16.yw, r13.xxxy, cb0[174].zzzz - mul r17.xy, cb0[175].xyxx, cb0[183].wwww - mad r13.xy, r13.xyxx, cb0[174].zzzz, r17.xyxx - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r13.xyxx, t12.yzxw, s2, l(0.000000) - mad r13.xy, r16.ywyy, cb0[175].wwww, r17.xyxx - sample_l_indexable(texture2d)(float,float,float,float) r1.w, r13.xyxx, t12.yzwx, s2, l(0.000000) - dp2 r4.w, r16.xzxx, r16.xzxx - sqrt r4.w, r4.w - add r5.w, -cb0[174].x, cb0[174].y - add r4.w, r4.w, -cb0[174].x - div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w - mul_sat r4.w, r4.w, r5.w - mad r5.w, r4.w, l(-2.000000), l(3.000000) - mul r4.w, r4.w, r4.w - mul r4.w, r4.w, r5.w - add r1.w, -r0.z, r1.w - mad r0.z, r4.w, r1.w, r0.z - add r0.z, r0.z, l(-1.000000) - mad r0.z, cb0[175].z, r0.z, l(1.000000) - mul r0.x, r0.z, r0.x - endif - add r0.z, -r0.x, cb6[35].z - mad r0.x, cb6[35].w, r0.z, r0.x -else - mov r0.x, cb6[35].z -endif -min r0.x, r0.x, l(1.000000) -add r0.x, r0.x, l(-1.000000) -mad r13.x, cb6[34].x, r0.x, l(1.000000) -lt r0.x, l(0.001000), r13.x -if_nz r0.x - dp3 r0.x, -cb5[0].xyzx, r15.xyzx - mad r16.xyz, cb5[0].xyzx, r0.xxxx, r15.xyzx - lt r0.x, r0.x, cb5[4].z - dp3 r0.z, r16.xyzx, r16.xyzx - max r0.z, r0.z, l(0.0000610351562) - rsq r0.z, r0.z - mul r16.xyz, r0.zzzz, r16.xyzx - mul r16.xyz, r16.xyzx, cb5[4].yyyy - mad r16.xyz, -cb5[0].xyzx, cb5[4].zzzz, r16.xyzx - dp3 r0.z, r16.xyzx, r16.xyzx - rsq r0.z, r0.z - mul r16.xyz, r0.zzzz, r16.xyzx - movc r16.xyz, r0.xxxx, r16.xyzx, r15.xyzx - mad r17.xyz, r3.xyzx, r3.wwww, r16.xyzx - dp3 r0.x, r17.xyzx, r17.xyzx - max r0.x, r0.x, l(0.0000610351562) - rsq r0.x, r0.x - mul r17.xyz, r0.xxxx, r17.xyzx - dp3_sat r11.y, r16.xyzx, r6.xyzx - dp3_sat r0.x, r6.xyzx, r17.xyzx - min r11.z, r0.w, l(1.000000) - mul r0.z, r11.w, r11.w - mul r0.z, r0.z, r0.z - mad r1.w, r0.x, r0.z, -r0.x - mad r0.x, r1.w, r0.x, l(1.000000) - dp3_sat r1.w, r5.xyzx, r17.xyzx - add r1.w, -r1.w, l(1.000000) - mul r4.w, r1.w, r1.w - mul r4.w, r4.w, r4.w - mul r5.w, r1.w, r4.w - add r6.w, -r11.w, l(1.000000) - mad r7.w, -r6.w, l(0.383026), l(-0.0761947036) - mad r7.w, r6.w, r7.w, l(1.049970) - mad r6.w, r6.w, r7.w, l(0.409255) - min r6.w, r6.w, l(0.999000) - add r7.w, -r6.w, l(1.000000) - add r16.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r16.xyz, r16.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx - mad r1.w, -r4.w, r1.w, l(1.000000) - mad r17.xyz, r7.xyzx, r1.wwww, r5.wwww - mul r0.x, r0.x, r0.x - div r0.x, r0.z, r0.x - mad r18.xy, -r11.zyzz, r0.zzzz, r11.zyzz - mad r18.xy, r18.xyxx, r11.zyzz, r0.zzzz - sqrt r18.xy, r18.xyxx - mul r18.xy, r11.yzyy, r18.xyxx - add r0.z, r18.y, r18.x - add r0.z, r0.z, l(0.000100) - div r0.z, l(0.500000), r0.z - mul r0.x, r0.z, r0.x - mul r17.xyz, r0.xxxx, r17.xyzx - min r17.xyz, r17.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r18.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.x, r18.xyxx, t15.xyzw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r18.zwzz, t15.yzxw, s1, l(0.000000) - mul r0.x, r0.z, r0.x - mul r0.x, r6.w, r0.x - div r0.x, r0.x, r7.w - mul r18.xyz, r16.xyzx, r16.xyzx - mul r18.xyz, r0.xxxx, r18.xyzx - mad r16.xyz, -r16.xyzx, r7.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r16.xyz, r18.xyzx, r16.xyzx - add r16.xyz, r16.xyzx, r17.xyzx - mul r16.xyz, r16.xyzx, cb5[4].xxxx - // === Glass Fix: Reduce sun specular intensity === - lt r37.x, l(0.500000), cb13[13].z - if_nz r37.x - mul r16.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - endif - max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r16.xyz, r16.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - max r0.x, r10.w, l(0.010000) - div r16.xyz, r16.xyzx, r0.xxxx - min r16.xyz, r16.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r17.xyz, r9.xywx, r11.yyyy - mad r16.xyz, r16.xyzx, r11.yyyy, r17.xyzx - mul r16.xyz, r16.xyzx, cb5[1].xyzx - mov r13.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r17.xyz, r13.xyxx, t14.xyzw, s1, cb0[108].x - add r0.x, -r13.x, l(1.000000) - mad r17.xyz, r16.xyzx, r17.xyzx, -r16.xyzx - mad r16.xyz, r0.xxxx, r17.xyzx, r16.xyzx -else - mov r16.xyz, l(0,0,0,0) -endif -mul r0.xz, r13.zzwz, l(0.031250, 0.000000, 0.031250, 0.000000) -round_ni r0.xz, r0.xxzx -mad r0.x, r0.z, cb4[1].y, r0.x -mul r0.x, r0.x, l(8.000000) -ftoi r0.x, r0.x -mad r0.z, -cb0[85].y, cb4[2].w, r14.z -round_ni r0.z, r0.z -add r1.w, l(-1.000000), cb4[1].w -max r4.w, r0.z, l(0.000000) -min r1.w, r1.w, r4.w -mul r4.w, r1.w, l(8.000000) -ftoi r4.w, r4.w -ge r0.z, r1.w, r0.z -iadd r1.w, r4.w, cb0[110].y -mul r4.w, r11.w, r11.w -min r11.x, r0.w, l(1.000000) -add r0.w, -r11.w, l(1.000000) -mad r5.w, -r0.w, l(0.383026), l(-0.0761947036) -mad r5.w, r0.w, r5.w, l(1.049970) -mad r0.w, r0.w, r5.w, l(0.409255) -min r0.w, r0.w, l(0.999000) -add r5.w, -r0.w, l(1.000000) -add r17.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r17.xyz, r17.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx -mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r6.w, r11.yzyy, t15.yzwx, s1, l(0.000000) -mad r18.xyz, -r17.xyzx, r5.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r17.xyz, r17.xyzx, r17.xyzx -mov r19.w, l(1.000000) -mov r13.y, l(1.000000) -mov r20.z, r11.w -mov r21.xyz, l(0,0,0,0) -mov r7.w, l(1.000000) -mov r8.w, l(0) -loop - ilt r9.z, l(7), r8.w - breakc_nz r9.z - iadd r9.z, r0.x, r8.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.z, r9.z, l(0), t0.xxxx - iadd r11.y, r1.w, r8.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.y, r11.y, l(0), t0.xxxx - and r9.z, r9.z, r11.y - and r9.z, r0.z, r9.z - ishl r11.y, r8.w, l(5) - mov r22.xyz, l(0,0,0,0) - mov r11.z, r7.w - mov r12.w, r9.z - loop - breakc_z r12.w - firstbit_lo r15.w, r12.w - ishl r16.w, l(1), r15.w - xor r16.w, r12.w, r16.w - iadd r15.w, r11.y, r15.w - bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r15.wwww, l(1, 3, 5, 6) - bfi r17.w, l(29), l(3), r15.w, l(7) - ftou r18.w, cb5[r23.z + 6].w - ieq r18.w, r18.w, l(1) - if_nz r18.w - add r19.xyz, r1.xyzx, -cb5[r23.x + 6].xyzx - and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r23.z + 6].xzyx - and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r23.w + 6].yxzy - ushr r26.xyz, cb5[r23.z + 6].xzyx, l(16, 16, 16, 0) - ushr r27.xyz, cb5[r23.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r24.xyz, r24.xyzx - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyz, r26.xyzx - f16tof32 r27.xyw, r27.yxyz - mov r28.xz, r24.xxzx - mov r28.yw, r26.xxxz - dp4 r18.w, r19.xyzw, r28.xyzw - mov r26.x, r24.y - mov r26.z, r25.y - mov r26.w, r27.x - dp4 r20.w, r19.xyzw, r26.xyzw - mov r27.xz, r25.xxzx - dp4 r19.x, r19.xyzw, r27.xyzw - max r18.w, |r18.w|, |r20.w| - max r18.w, |r19.x|, r18.w - mad r19.x, cb5[r17.w + 6].x, l(0.500000), l(0.500000) - add r18.w, r18.w, -r19.x - mad r19.x, -cb5[r17.w + 6].x, l(0.500000), l(0.500000) - div_sat r18.w, r18.w, r19.x - add r18.w, -r18.w, l(1.000000) - mul r18.w, r18.w, r18.w - else - mov r18.w, l(1.000000) - endif - lt r19.x, l(0.500000), cb5[r23.y + 6].z - lt r19.y, r18.w, l(0.001000) - or r19.y, r19.x, r19.y - if_nz r19.y - mov r12.w, r16.w - continue - endif - ishl r19.y, r15.w, l(3) - bfi r15.w, l(29), l(3), r15.w, l(2) - lt r19.z, cb5[r19.y + 6].w, l(1.500000) - if_nz r19.z - mad r19.z, cb5[r15.w + 6].y, l(0.500000), l(0.500000) - add r24.x, r19.z, -|cb5[r15.w + 6].x| - add r24.y, -r24.x, cb5[r15.w + 6].y - add r19.z, -|r24.x|, l(1.000000) - add r19.z, -|r24.y|, r19.z - max r19.z, r19.z, l(0.000488281250) - ge r20.w, cb5[r15.w + 6].x, l(0.000000) - movc r24.z, r20.w, r19.z, -r19.z - dp3 r19.z, r24.xyzx, r24.xyzx - rsq r19.z, r19.z - mul r24.xyz, r19.zzzz, r24.xyzx - add r25.xyz, -r1.xyzx, cb5[r23.x + 6].xyzx - dp3 r19.z, r25.xyzx, r25.xyzx - rsq r20.w, r19.z - mul r26.xyz, r20.wwww, r25.xyzx - ftoi r21.w, cb5[r17.w + 6].w - mul r27.xyz, r24.xyzx, cb5[r15.w + 6].zzzz - mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - ftou r22.w, cb5[r19.y + 6].w - and r22.w, r22.w, l(1) - ieq r23.z, r22.w, l(0) - not r23.z, r23.z - lt r24.w, l(0.000000), cb5[r15.w + 6].z - and r23.z, r23.z, r24.w - dp3 r24.w, r28.xyzx, r28.xyzx - sqrt r24.w, r24.w - dp3 r25.w, r29.xyzx, r29.xyzx - sqrt r25.w, r25.w - dp3 r26.w, r6.xyzx, r28.xyzx - div r26.w, r26.w, r24.w - dp3 r27.w, r6.xyzx, r29.xyzx - div r27.w, r27.w, r25.w - add r26.w, r26.w, r27.w - mul_sat r30.x, r26.w, l(0.500000) - dp3 r26.w, r28.xyzx, r29.xyzx - mad r24.w, r24.w, r25.w, r26.w - mad r24.w, r24.w, l(0.500000), l(1.000000) - div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r24.w - dp3_sat r13.x, r6.xyzx, r26.xyzx - movc r20.xy, r23.zzzz, r30.xyxx, r13.xyxx - lt r13.x, cb5[r23.w + 6].w, l(0.000000) - if_nz r13.x - mul r13.x, cb5[r23.x + 6].w, cb5[r23.x + 6].w - mul r13.x, r13.x, r19.z - mad r13.x, -r13.x, r13.x, l(1.000000) - max r13.x, r13.x, l(0.000000) - add r19.z, r19.z, l(1.000000) - div r19.z, l(1.000000, 1.000000, 1.000000, 1.000000), r19.z - and r24.w, r23.z, l(0x3f800000) - add r25.w, -r19.z, r20.y - mad r19.z, r24.w, r25.w, r19.z - mul r13.x, r13.x, r13.x - mul r13.x, r13.x, r19.z - else - mul r29.xyz, r25.xyzx, cb5[r23.x + 6].wwww - dp3 r19.z, r29.xyzx, r29.xyzx - min r19.z, r19.z, l(1.000000) - add r19.z, -r19.z, l(1.000000) - log r19.z, r19.z - mul r19.z, r19.z, cb5[r23.w + 6].w - exp r19.z, r19.z - mul r13.x, r19.z, r20.y - endif - dp3 r19.z, r26.xyzx, -r24.xyzx - add r19.z, r19.z, -cb5[r15.w + 6].z - mul_sat r19.z, r19.z, cb5[r15.w + 6].w - mul r19.z, r19.z, r19.z - movc r19.z, r22.w, l(1.000000), r19.z - mul r13.x, r13.x, r19.z - not r19.z, r23.z - ige r20.y, r21.w, l(0) - and r19.z, r19.z, r20.y - if_nz r19.z - if_z r22.w - ishl r19.z, r21.w, l(2) - mul r24.xyz, r1.yyyy, cb7[r19.z + 33].xywx - mad r24.xyz, cb7[r19.z + 32].xywx, r1.xxxx, r24.xyzx - mad r24.xyz, cb7[r19.z + 34].xywx, r1.zzzz, r24.xyzx - add r24.xyz, r24.xyzx, cb7[r19.z + 35].xywx - div_sat r24.xy, r24.xyxx, r24.zzzz - mad r24.xy, r24.xyxx, cb7[r21.w + 0].zwzz, cb7[r21.w + 0].xyxx - else - ishl r19.z, r21.w, l(2) - dp3 r29.x, -r25.xyzx, cb7[r19.z + 32].xyzx - dp3 r29.y, -r25.xyzx, cb7[r19.z + 33].xyzx - dp3 r29.z, -r25.xyzx, cb7[r19.z + 34].xyzx - lt r19.z, |r29.x|, |r29.y| - and r19.z, r19.z, l(1) - dp2 r20.y, |r29.xyxx|, icb[r19.z + 0].xyxx - lt r20.y, r20.y, |r29.z| - movc r19.z, r20.y, l(2), r19.z - dp3 r20.y, r29.xyzx, icb[r19.z + 0].xyzx - lt r20.y, r20.y, l(0.000000) - bfi r19.z, l(31), l(1), r19.z, r20.y - ushr r20.y, r19.z, l(1) - dp3 r20.y, r29.xyzx, icb[r20.y + 0].xyzx - div r24.z, l(0.000244140625), cb7[r21.w + 0].w - add r24.z, -r24.z, l(0.500000) - utof r24.w, r19.z - ult r25.x, r19.z, l(2) - and r25.x, r25.x, l(2) - dp2 r25.x, r29.xzxx, icb[r25.x + 0].xzxx - mul r25.x, r25.x, icb[r19.z + 4].z - div r25.x, r25.x, |r20.y| - mad r24.w, r25.x, r24.z, r24.w - add r24.w, r24.w, l(0.500000) - mul_sat r25.x, r24.w, l(0.166666672) - iadd r24.w, l(-1), icb[r19.z + 4].y - dp2 r24.w, r29.yzyy, icb[r24.w + 0].xyxx - mul r19.z, r24.w, icb[r19.z + 4].w - div r19.z, r19.z, |r20.y| - mad_sat r25.y, -r19.z, r24.z, l(0.500000) - mad r24.xy, r25.xyxx, cb7[r21.w + 0].zwzz, cb7[r21.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r19.z, r24.xyxx, t23.yzxw, s1, l(0.000000) - mul r13.x, r13.x, r19.z - endif - lt r19.z, l(0.000000), r13.x - if_nz r19.z - if_z r22.w - ftoi r20.y, cb5[r23.y + 6].x - else - add r24.xyz, r1.xyzx, -cb5[r23.x + 6].xyzx - lt r25.xyz, |r24.yzzy|, |r24.xxyx| - and r21.w, r25.y, r25.x - lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx - ushr r22.w, cb5[r15.w + 6].w, l(24) - ubfe r25.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r15.w + 6].wwww - movc r22.w, r24.x, r22.w, r25.x - and r24.x, l(255), cb5[r15.w + 6].w - movc r24.x, r24.y, r25.y, r24.x - ubfe r24.y, l(8), l(8), cb5[r23.y + 6].x - and r24.w, l(255), cb5[r23.y + 6].x - movc r24.y, r24.z, r24.y, r24.w - movc r24.x, r25.z, r24.x, r24.y - movc r21.w, r21.w, r22.w, r24.x - ilt r22.w, r21.w, l(80) - movc r20.y, r22.w, r21.w, l(-1) - endif - mad r24.xyz, r26.xyzx, cb6[r20.y + 288].xxxx, r1.xyzx - mul r21.w, l(5.000000), cb6[r20.y + 288].y - mad r24.xyz, r6.xyzx, r21.wwww, r24.xyzx - ishl r21.w, r20.y, l(2) - mul r25.xyzw, r24.yyyy, cb6[r21.w + 65].xyzw - mad r25.xyzw, cb6[r21.w + 64].xyzw, r24.xxxx, r25.xyzw - mad r24.xyzw, cb6[r21.w + 66].xyzw, r24.zzzz, r25.xyzw - add r24.xyzw, r24.xyzw, cb6[r21.w + 67].xyzw - div r24.xyz, r24.xyzx, r24.wwww - ge r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r24.xyzx - ge r29.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r30.xy, -cb6[r20.y + 344].xyxx, cb6[r20.y + 344].zwzz - mad r24.xy, r24.xyxx, r30.xyxx, cb6[r20.y + 344].xyxx - mad r30.xy, r24.xyxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r30.xy, r30.xyxx - mad r24.xy, r24.xyxx, cb6[400].zwzz, -r30.xyxx - add r31.xyzw, r24.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r32.xyzw, r31.xxzz, r31.xxzz - add r30.zw, -r24.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r31.xz, r24.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r33.xy, r24.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r34.xy, r30.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy - add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r24.xy, r32.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r24.xyxx - mul r35.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r24.xy, -r31.xzxx, r31.xzxx, r30.zwzz - add r24.xy, r24.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r36.xy, r24.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r24.xy, r31.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r35.z, r36.x - mov r35.w, r24.x - mov r34.z, r33.x - mov r34.w, r32.x - add r31.xyzw, r34.zwxz, r35.zwxz - mov r36.z, r35.y - mov r36.w, r24.y - mov r33.z, r34.y - mov r33.w, r32.z - add r24.xyw, r33.zyzw, r36.zyzw - div r32.xyz, r34.xzwx, r31.zwyz - add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r32.xyz, r32.xyzx, cb6[400].xxxx - div r33.xyz, r33.zywz, r24.xywx - add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r33.xyw, r33.xyxz, cb6[400].yyyy - mul r34.xyzw, r24.xxxy, r31.zwyz - mov r32.w, r33.x - mad r35.xyzw, r30.xyxy, cb6[400].xyxy, r32.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r35.xyxx, t11.xxxx, s4, r24.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.w, r35.zwzz, t11.xxxx, s4, r24.z - mul r22.w, r22.w, r34.y - mad r21.w, r34.x, r21.w, r22.w - mad r30.zw, r30.xxxy, cb6[400].xxxy, r32.zzzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.w, r30.zwzz, t11.xxxx, s4, r24.z - mad r21.w, r34.z, r22.w, r21.w - mov r33.z, r32.x - mad r35.xyzw, r30.xyxy, cb6[400].xyxy, r33.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.w, r35.xyxx, t11.xxxx, s4, r24.z - mad r21.w, r34.w, r22.w, r21.w - mul r34.xyzw, r24.yyww, r31.xyzw - mov r33.xz, r32.yyzy - mad r32.xyzw, r30.xyxy, cb6[400].xyxy, r33.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.w, r32.xyxx, t11.xxxx, s4, r24.z - mad r21.w, r34.x, r22.w, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.w, r32.zwzz, t11.xxxx, s4, r24.z - mad r21.w, r34.y, r22.w, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.w, r35.zwzz, t11.xxxx, s4, r24.z - mad r21.w, r34.z, r22.w, r21.w - ige r22.w, r20.y, l(0) - or r25.xyz, r25.xyzx, r29.xyzx - or r24.x, r25.y, r25.x - or r24.x, r25.z, r24.x - and r24.y, r24.z, l(0x7fffffff) - ult r24.y, l(0x7f800000), r24.y - or r24.x, r24.y, r24.x - mad r25.xyzw, r30.xyxy, cb6[400].xyxy, r33.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r25.xyxx, t11.xxxx, s4, r24.z - mad r21.w, r34.w, r24.y, r21.w - mul r24.y, r24.w, r31.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r25.zwzz, t11.xxxx, s4, r24.z - mad r21.w, r24.y, r24.z, r21.w - add r21.w, r21.w, l(-1.000000) - mad r20.y, cb6[r20.y + 288].w, r21.w, l(1.000000) - movc r20.y, r24.x, l(1.000000), r20.y - movc r20.y, r22.w, r20.y, l(1.000000) - else - mov r20.y, l(1.000000) - endif - if_nz r23.z - dp3 r21.w, r15.xyzx, r27.xyzx - mul_sat r22.w, r20.w, cb5[r15.w + 6].z - mad r22.w, r22.w, l(0.500000), r4.w - min r22.w, r22.w, l(1.000000) - div r22.w, r4.w, r22.w - mad r24.xyz, r15.xyzx, r21.wwww, -r27.xyzx - dp3 r23.z, r28.xyzx, r24.xyzx - mul r21.w, r21.w, r21.w - mad r21.w, cb5[r15.w + 6].z, cb5[r15.w + 6].z, -r21.w - div_sat r21.w, r23.z, r21.w - mad r24.xyz, r27.xyzx, r21.wwww, r28.xyzx - dp3 r21.w, r24.xyzx, r24.xyzx - rsq r21.w, r21.w - mul r26.xyz, r21.wwww, r24.xyzx - else - mov r22.w, l(1.000000) - endif - if_nz r19.z - mul_sat r19.z, r20.w, cb5[r17.w + 6].y - mad r24.xyz, r3.xyzx, r3.wwww, r26.xyzx - dp3 r20.w, r24.xyzx, r24.xyzx - max r20.w, r20.w, l(0.0000610351562) - rsq r20.w, r20.w - mul r24.xyz, r20.wwww, r24.xyzx - dp3_sat r20.w, r6.xyzx, r24.xyzx - dp3_sat r21.w, r5.xyzx, r24.xyzx - lt r23.z, l(0.000000), r19.z - mul r19.z, r19.z, r19.z - mad r24.x, r21.w, l(3.600000), l(0.400000) - div r19.z, r19.z, r24.x - mad r19.z, r11.w, r11.w, r19.z - min r19.z, r19.z, l(1.000000) - movc r19.z, r23.z, r19.z, r4.w - mul r19.z, r19.z, r19.z - mad r23.z, r20.w, r19.z, -r20.w - mad r20.w, r23.z, r20.w, l(1.000000) - add r21.w, -r21.w, l(1.000000) - mul r23.z, r21.w, r21.w - mul r23.z, r23.z, r23.z - mul r24.x, r21.w, r23.z - mad r21.w, -r23.z, r21.w, l(1.000000) - mad r24.xyz, r7.xyzx, r21.wwww, r24.xxxx - mul r20.w, r20.w, r20.w - div r20.w, r19.z, r20.w - mul r20.w, r22.w, r20.w - mad r21.w, -r11.x, r19.z, r11.x - mad r21.w, r21.w, r11.x, r19.z - sqrt r21.w, r21.w - mad r22.w, -r20.x, r19.z, r20.x - mad r19.z, r22.w, r20.x, r19.z - sqrt r19.z, r19.z - mul r19.z, r11.x, r19.z - mad r19.z, r20.x, r21.w, r19.z - add r19.z, r19.z, l(0.000100) - div r19.z, l(0.500000), r19.z - mul r19.z, r19.z, r20.w - mul r24.xyz, r19.zzzz, r24.xyzx - min r24.xyz, r24.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r25.xy, r20.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r19.z, r25.xyxx, t15.yzxw, s1, l(0.000000) - mul r19.z, r6.w, r19.z - mul r19.z, r0.w, r19.z - div r19.z, r19.z, r5.w - mul r25.xyz, r17.xyzx, r19.zzzz - div r25.xyz, r25.xyzx, r18.xyzx - add r24.xyz, r24.xyzx, r25.xyzx - mul r24.xyz, r24.xyzx, cb5[r17.w + 6].zzzz - max r24.xyz, r24.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r24.xyz, r24.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r25.xyz, r9.xywx, r20.xxxx - mad r24.xyz, r24.xyzx, r20.xxxx, r25.xyzx - mul r25.xyz, r13.xxxx, cb5[r19.y + 6].xyzx - mul r20.xyw, r20.yyyy, r25.xyxz - mul r20.xyw, r18.wwww, r20.xyxw - mul r20.xyw, r20.xyxw, r24.xyxz - else - mov r20.xyw, l(0,0,0,0) - endif - else - if_z r19.x - mad r13.x, cb5[r15.w + 6].y, l(0.500000), l(0.500000) - add r24.x, r13.x, -|cb5[r15.w + 6].x| - add r24.y, -r24.x, cb5[r15.w + 6].y - add r13.x, -|r24.x|, l(1.000000) - add r13.x, -|r24.y|, r13.x - max r13.x, r13.x, l(0.000488281250) - ge r18.w, cb5[r15.w + 6].x, l(0.000000) - movc r24.z, r18.w, r13.x, -r13.x - dp3 r13.x, r24.xyzx, r24.xyzx - rsq r13.x, r13.x - mul r24.xyz, r13.xxxx, r24.xyzx - add r25.xyz, -r1.xyzx, cb5[r23.x + 6].xyzx - dp3 r13.x, r25.xyzx, r25.xyzx - rsq r18.w, r13.x - mul r26.xyz, r18.wwww, r25.xyzx - ftoi r17.w, cb5[r17.w + 6].w - mul r27.xyz, r24.xyzx, cb5[r15.w + 6].zzzz - mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - mad r27.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - ftou r18.w, cb5[r19.y + 6].w - and r18.w, r18.w, l(1) - ieq r19.x, r18.w, l(0) - not r19.x, r19.x - lt r19.y, l(0.000000), cb5[r15.w + 6].z - and r19.x, r19.y, r19.x - dp3 r19.y, r28.xyzx, r28.xyzx - dp3 r19.z, r27.xyzx, r27.xyzx - sqrt r19.yz, r19.yyzy - dp3 r21.w, r28.xyzx, r27.xyzx - mad r19.y, r19.y, r19.z, r21.w - mad r19.y, r19.y, l(0.500000), l(1.000000) - div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), r19.y - movc r19.y, r19.x, r19.y, l(1.000000) - lt r19.z, cb5[r23.w + 6].w, l(0.000000) - if_nz r19.z - mul r19.z, cb5[r23.x + 6].w, cb5[r23.x + 6].w - mul r19.z, r13.x, r19.z - mad r19.z, -r19.z, r19.z, l(1.000000) - max r19.z, r19.z, l(0.000000) - add r13.x, r13.x, l(1.000000) - div r13.x, l(1.000000, 1.000000, 1.000000, 1.000000), r13.x - and r21.w, r19.x, l(0x3f800000) - add r22.w, -r13.x, r19.y - mad r13.x, r21.w, r22.w, r13.x - mul r19.z, r19.z, r19.z - mul r13.x, r13.x, r19.z - else - mul r27.xyz, r25.xyzx, cb5[r23.x + 6].wwww - dp3 r19.z, r27.xyzx, r27.xyzx - min r19.z, r19.z, l(1.000000) - add r19.z, -r19.z, l(1.000000) - log r19.z, r19.z - mul r19.z, r19.z, cb5[r23.w + 6].w - exp r19.z, r19.z - mul r13.x, r19.z, r19.y - endif - dp3 r19.y, r26.xyzx, -r24.xyzx - add r19.y, r19.y, -cb5[r15.w + 6].z - mul_sat r19.y, r19.y, cb5[r15.w + 6].w - mul r19.y, r19.y, r19.y - movc r19.y, r18.w, l(1.000000), r19.y - mul r13.x, r13.x, r19.y - not r19.x, r19.x - ige r19.y, r17.w, l(0) - and r19.x, r19.y, r19.x - if_nz r19.x - if_z r18.w - ishl r19.x, r17.w, l(2) - mul r24.xyz, r1.yyyy, cb7[r19.x + 33].xywx - mad r24.xyz, cb7[r19.x + 32].xywx, r1.xxxx, r24.xyzx - mad r24.xyz, cb7[r19.x + 34].xywx, r1.zzzz, r24.xyzx - add r19.xyz, r24.xyzx, cb7[r19.x + 35].xywx - div_sat r19.xy, r19.xyxx, r19.zzzz - mad r19.xy, r19.xyxx, cb7[r17.w + 0].zwzz, cb7[r17.w + 0].xyxx - else - ishl r19.z, r17.w, l(2) - dp3 r24.x, -r25.xyzx, cb7[r19.z + 32].xyzx - dp3 r24.y, -r25.xyzx, cb7[r19.z + 33].xyzx - dp3 r24.z, -r25.xyzx, cb7[r19.z + 34].xyzx - lt r19.z, |r24.x|, |r24.y| - and r19.z, r19.z, l(1) - dp2 r21.w, |r24.xyxx|, icb[r19.z + 0].xyxx - lt r21.w, r21.w, |r24.z| - movc r19.z, r21.w, l(2), r19.z - dp3 r21.w, r24.xyzx, icb[r19.z + 0].xyzx - lt r21.w, r21.w, l(0.000000) - bfi r19.z, l(31), l(1), r19.z, r21.w - ushr r21.w, r19.z, l(1) - dp3 r21.w, r24.xyzx, icb[r21.w + 0].xyzx - div r22.w, l(0.000244140625), cb7[r17.w + 0].w - add r22.w, -r22.w, l(0.500000) - utof r23.z, r19.z - ult r23.w, r19.z, l(2) - and r23.w, r23.w, l(2) - dp2 r23.w, r24.xzxx, icb[r23.w + 0].xzxx - mul r23.w, r23.w, icb[r19.z + 4].z - div r23.w, r23.w, |r21.w| - mad r23.z, r23.w, r22.w, r23.z - add r23.z, r23.z, l(0.500000) - mul_sat r25.x, r23.z, l(0.166666672) - iadd r23.z, l(-1), icb[r19.z + 4].y - dp2 r23.z, r24.yzyy, icb[r23.z + 0].xyxx - mul r19.z, r23.z, icb[r19.z + 4].w - div r19.z, r19.z, |r21.w| - mad_sat r25.y, -r19.z, r22.w, l(0.500000) - mad r19.xy, r25.xyxx, cb7[r17.w + 0].zwzz, cb7[r17.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r17.w, r19.xyxx, t23.yzwx, s1, l(0.000000) - mul r13.x, r13.x, r17.w - endif - lt r13.x, l(0.000000), r13.x - if_nz r13.x - if_z r18.w - ftoi r13.x, cb5[r23.y + 6].x - else - add r19.xyz, r1.xyzx, -cb5[r23.x + 6].xyzx - lt r23.xzw, |r19.yyzz|, |r19.xxxy| - and r17.w, r23.z, r23.x - lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - ushr r18.w, cb5[r15.w + 6].w, l(24) - ubfe r23.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb5[r15.w + 6].wwww - movc r18.w, r19.x, r18.w, r23.x - and r15.w, l(255), cb5[r15.w + 6].w - movc r15.w, r19.y, r23.z, r15.w - ubfe r19.x, l(8), l(8), cb5[r23.y + 6].x - and r19.y, l(255), cb5[r23.y + 6].x - movc r19.x, r19.z, r19.x, r19.y - movc r15.w, r23.w, r15.w, r19.x - movc r15.w, r17.w, r18.w, r15.w - ilt r17.w, r15.w, l(80) - movc r13.x, r17.w, r15.w, l(-1) - endif - mad r19.xyz, r26.xyzx, cb6[r13.x + 288].xxxx, r1.xyzx - mul r15.w, l(5.000000), cb6[r13.x + 288].y - mad r19.xyz, r6.xyzx, r15.wwww, r19.xyzx - ishl r15.w, r13.x, l(2) - mul r23.xyzw, r19.yyyy, cb6[r15.w + 65].xyzw - mad r23.xyzw, cb6[r15.w + 64].xyzw, r19.xxxx, r23.xyzw - mad r23.xyzw, cb6[r15.w + 66].xyzw, r19.zzzz, r23.xyzw - add r23.xyzw, r23.xyzw, cb6[r15.w + 67].xyzw - div r19.xyz, r23.xyzx, r23.wwww - ge r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - ge r24.xyz, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r25.xy, -cb6[r13.x + 344].xyxx, cb6[r13.x + 344].zwzz - mad r19.xy, r19.xyxx, r25.xyxx, cb6[r13.x + 344].xyxx - mad r25.xy, r19.xyxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r25.xy, r25.xyxx - mad r19.xy, r19.xyxx, cb6[400].zwzz, -r25.xyxx - add r26.xyzw, r19.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r27.xyzw, r26.xxzz, r26.xxzz - add r25.zw, -r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r26.xz, r19.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r28.xy, r19.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy - add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r19.xy, r27.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r19.xyxx - mul r30.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r19.xy, -r26.xzxx, r26.xzxx, r25.zwzz - add r19.xy, r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r31.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r19.xy, r26.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r30.z, r31.x - mov r30.w, r19.x - mov r29.z, r28.x - mov r29.w, r27.x - add r26.xyzw, r29.zwxz, r30.zwxz - mov r31.z, r30.y - mov r31.w, r19.y - mov r28.z, r29.y - mov r28.w, r27.z - add r27.xyz, r28.zywz, r31.zywz - div r29.xyz, r29.xzwx, r26.zwyz - add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r29.xyz, r29.xyzx, cb6[400].xxxx - div r28.xyz, r28.zywz, r27.xyzx - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyw, r28.xyxz, cb6[400].yyyy - mul r30.xyzw, r26.zwyz, r27.xxxy - mov r29.w, r28.x - mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r29.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r31.xyxx, t11.xxxx, s4, r19.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r31.zwzz, t11.xxxx, s4, r19.z - mul r17.w, r17.w, r30.y - mad r15.w, r30.x, r15.w, r17.w - mad r19.xy, r25.xyxx, cb6[400].xyxx, r29.zwzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r19.xyxx, t11.xxxx, s4, r19.z - mad r15.w, r30.z, r17.w, r15.w - mov r28.z, r29.x - mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r28.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r31.xyxx, t11.xxxx, s4, r19.z - mad r15.w, r30.w, r17.w, r15.w - mul r30.xyzw, r26.xyzw, r27.yyzz - mov r28.xz, r29.yyzy - mad r29.xyzw, r25.xyxy, cb6[400].xyxy, r28.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r29.xyxx, t11.xxxx, s4, r19.z - mad r15.w, r30.x, r17.w, r15.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r29.zwzz, t11.xxxx, s4, r19.z - mad r15.w, r30.y, r17.w, r15.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r31.zwzz, t11.xxxx, s4, r19.z - mad r15.w, r30.z, r17.w, r15.w - ige r17.w, r13.x, l(0) - or r23.xyz, r23.xyzx, r24.xyzx - or r18.w, r23.y, r23.x - or r18.w, r23.z, r18.w - and r19.x, r19.z, l(0x7fffffff) - ult r19.x, l(0x7f800000), r19.x - or r18.w, r18.w, r19.x - mad r23.xyzw, r25.xyxy, cb6[400].xyxy, r28.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r23.xyxx, t11.xxxx, s4, r19.z - mad r15.w, r30.w, r19.x, r15.w - mul r19.x, r26.y, r27.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.y, r23.zwzz, t11.xxxx, s4, r19.z - mad r15.w, r19.x, r19.y, r15.w - add r15.w, r15.w, l(-1.000000) - mad r13.x, cb6[r13.x + 288].w, r15.w, l(1.000000) - movc r13.x, r18.w, l(1.000000), r13.x - movc r13.x, r17.w, r13.x, l(1.000000) - else - mov r13.x, l(1.000000) - endif - else - mov r13.x, l(1.000000) - endif - mul r11.z, r11.z, r13.x - mov r20.xyw, l(0,0,0,0) - endif - add r22.xyz, r20.xywx, r22.xyzx - mov r12.w, r16.w - endloop - mov r7.w, r11.z - add r21.xyz, r21.xyzx, r22.xyzx - iadd r8.w, r8.w, l(1) -endloop -// === Glass Fix: Reduce clustered lights and overall brightness === -lt r37.x, l(0.500000), cb13[13].z -if_nz r37.x - mul r21.xyz, r21.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r2.xyz, r2.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) -endif -dp3 r0.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r1.xzw, -r0.xxxx, r2.xxyz -mad r0.xzw, cb0[184].wwww, r1.xxzw, r0.xxxx -mad r1.xzw, r21.xxyz, r7.wwww, r16.xxyz -mul r2.xyz, cb2[20].zzzz, cb2[21].xyzx -add r3.x, -r10.w, l(1.000000) -add r3.y, l(1.000000), -cb2[20].y -max r3.y, r3.y, l(0.010000) -div_sat r3.x, r3.x, r3.y -mad r2.xyz, r8.xyzx, r2.xyzx, -r1.xzwx -mad r1.xzw, r3.xxxx, r2.xxyz, r1.xxzw -mad r0.xzw, r0.xxzw, cb0[184].xxyz, r1.xxzw -mad r1.x, r1.y, cb0[156].w, cb0[157].w -mad r1.z, r2.w, cb0[154].w, -cb0[153].w -max r1.xz, r1.xxzx, l(0.010000, 0.000000, 0.000000, 0.000000) -mul r1.w, r1.x, l(-1.442695) -exp r1.w, r1.w -add r1.w, -r1.w, l(1.000000) -div r1.x, r1.w, r1.x -mad r1.w, r1.y, cb0[156].w, cb0[158].w -mul r1.w, r1.w, l(1.442695) -exp r1.w, r1.w -mul r1.x, r1.w, r1.x -mul r1.x, r1.x, -r1.z -mul r1.xzw, r1.xxxx, cb0[155].xxyz -mul r1.xzw, r1.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) -exp r1.xzw, r1.xxzw -dp3 r2.x, -r5.xyzx, cb0[154].xyzx -mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.z, r2.xxxx, cb0[155].wwww -add r2.y, -r2.z, r2.y -lt r2.z, l(0.000000), cb0[163].z -if_nz r2.z - and r14.w, l(7), cb0[108].w - imad r3.xyz, r14.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r2.z, r3.y, r3.z, r3.x - imad r3.x, r3.z, r2.z, r3.y - imad r3.y, r2.z, r3.x, r3.z - imad r6.x, r3.x, r3.y, r2.z - dp3 r2.z, -r5.xyzx, -r4.xyzx - add r3.z, r1.y, -cb0[44].y - lt r3.w, l(5.960464478E-08), r2.z - div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z - and r2.z, r2.z, r3.w - mul r2.z, r2.z, cb0[163].w - div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w - mul r4.x, r2.z, r3.w - mad r4.y, r4.x, r3.z, cb0[44].y - mad r3.z, -r4.x, r3.z, r3.z - mul r4.x, r3.z, cb0[159].z - mul r3.z, r3.z, cb0[162].x - max r3.z, r3.z, l(-127.000000) - add r4.z, r4.y, -cb0[159].x - mul r4.z, r4.z, cb0[159].z - max r4.xz, r4.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - exp r4.z, -r4.z - mul r4.z, r4.z, cb0[159].y - lt r4.w, l(5.960464478E-08), |r4.x| - exp r5.x, -r4.x - add r5.x, -r5.x, l(1.000000) - div r5.x, r5.x, r4.x - mad r4.x, -r4.x, l(0.240226507), l(0.693147182) - movc r4.x, r4.w, r5.x, r4.x - add r4.y, r4.y, -cb0[162].z - mul r4.y, r4.y, cb0[162].x - max r4.y, r4.y, l(-127.000000) - exp r4.y, -r4.y - mul r4.y, r4.y, cb0[162].y - lt r4.w, l(5.960464478E-08), |r3.z| - exp r5.x, -r3.z - add r5.x, -r5.x, l(1.000000) - div r5.x, r5.x, r3.z - mad r3.z, -r3.z, l(0.240226507), l(0.693147182) - movc r3.z, r4.w, r5.x, r3.z - mul r3.z, r3.z, r4.y - mad r3.z, r4.z, r4.x, r3.z - mad r2.z, -r2.z, r3.w, l(1.000000) - mul r2.z, r2.w, r2.z - mul r2.z, r2.z, r3.z - exp r2.z, -r2.z - min r2.z, r2.z, l(1.000000) - max r2.z, r2.z, cb0[161].w - mad_sat r3.zw, r2.wwww, cb0[160].yyyw, cb0[160].xxxz - add r2.z, r2.z, r3.z - add r2.z, r3.w, r2.z - min r2.z, r2.z, l(1.000000) - imad r6.y, r3.y, r6.x, r3.x - ushr r3.xy, r6.xyxx, l(16, 16, 0, 0) - utof r3.xy, r3.xyxx - mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mad r3.xy, r3.xyxx, cb0[167].wwww, r13.zwzz - mul r3.xy, r3.xyxx, cb0[165].xyxx - mad r3.w, r14.z, cb0[164].x, cb0[164].y - log r3.w, r3.w - mul r3.w, r3.w, cb0[164].z - div r3.z, r3.w, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t22.xyzw, s1, l(0.000000) - add r4.x, r14.z, -cb0[166].z - mul_sat r4.x, r4.x, l(1000000.000000) - add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r4.xxxx, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r4.x, -r2.z, l(1.000000) - mul r4.xyz, r4.xxxx, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r2.z, r2.z, r3.w -else - add r1.y, r1.y, -cb0[44].y - mul r3.w, r1.y, cb0[159].z - max r3.w, r3.w, l(-127.000000) - mul r1.y, r1.y, cb0[162].x - max r1.y, r1.y, l(-127.000000) - add r4.x, cb0[44].y, -cb0[159].x - mul r4.x, r4.x, cb0[159].z - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[159].y - lt r4.y, l(5.960464478E-08), |r3.w| - exp r4.z, -r3.w - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r3.w - mad r3.w, -r3.w, l(0.240226507), l(0.693147182) - movc r3.w, r4.y, r4.z, r3.w - add r4.y, cb0[44].y, -cb0[162].z - mul r4.y, r4.y, cb0[162].x - max r4.y, r4.y, l(-127.000000) - exp r4.y, -r4.y - mul r4.y, r4.y, cb0[162].y - lt r4.z, l(5.960464478E-08), |r1.y| - exp r4.w, -r1.y - add r4.w, -r4.w, l(1.000000) - div r4.w, r4.w, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r4.z, r4.w, r1.y - mul r1.y, r1.y, r4.y - mad r1.y, r4.x, r3.w, r1.y - mul r1.y, r2.w, r1.y - exp r1.y, -r1.y - min r1.y, r1.y, l(1.000000) - max r1.y, r1.y, cb0[161].w - mad_sat r4.xy, r2.wwww, cb0[160].ywyy, cb0[160].xzxx - add r1.y, r1.y, r4.x - add r1.y, r4.y, r1.y - min r2.z, r1.y, l(1.000000) - add r1.y, -r2.z, l(1.000000) - mul r3.xyz, r1.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r1.xzwx, r2.zzzz -mad r1.y, r2.x, r2.x, l(1.000000) -mul r1.y, r1.y, l(0.0596831031) -mad r5.xyz, cb0[156].xyzx, r1.yyyy, cb0[158].xyzx -mad r1.y, -cb0[155].w, cb0[155].w, l(1.000000) -mul r2.x, r2.y, l(12.566371) -sqrt r2.y, r2.y -mul r2.x, r2.y, r2.x -max r2.x, r2.x, l(0.001000) -div r1.y, r1.y, r2.x -mad_sat r2.xyw, cb0[157].xyxz, r1.yyyy, r5.xyxz -mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) -add r1.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r1.xyz, r1.xyzx, r2.xywx -mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx -// === Glass Transparency Fix === -lt r37.x, l(0.500000), cb13[13].z -if_nz r37.x - // Boost transmittance: lerp(r4, 1, 0.5) - add r37.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r37.xyz, r37.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r4.xyzx - // Reduce inscatter intensity - mul r38.xyz, r1.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000) - // Modified fog blend - mad r10.xyz, r0.xzwx, r37.xyzx, r38.xyzx -else - // Original fog blend - mad r10.xyz, r0.xzwx, r4.xyzx, r1.xyzx -endif -mul r0.xz, r12.xxyx, l(0.500000, 0.000000, -0.500000, 0.000000) -sqrt r0.xz, |r0.xxzx| -sqrt r0.xz, r0.xxzx -mov r12.z, -r12.y -lt r1.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r12.xzxx -lt r1.zw, r12.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r1.xy, -r1.xyxx, r1.zwzz -itof r1.xy, r1.xyxx -mul r0.xz, r0.xxzx, r1.xxyx -mad r0.xz, r0.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) -add r0.y, r0.y, l(-0.100000024) -lt r0.w, l(0.000000), r0.y -lt r0.y, r0.y, l(0.000000) -iadd r0.y, -r0.w, r0.y -itof r0.y, r0.y -mov_sat r0.y, r0.y -add r1.xy, -r0.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mad r0.xy, r0.yyyy, r1.xyxx, r0.xzxx -min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) -dp3 r0.x, r10.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mul r0.x, r10.w, r0.x -max r0.x, r10.w, r0.x -mul_sat r0.x, r0.x, l(10.000000) -lt r0.x, l(0.500000), r0.x -and o1.z, r0.x, l(0x3f800000) -// === Glass Highlight Compression === -lt r37.x, l(0.500000), cb13[13].z -if_nz r37.x - // Compute luminance - dp3 r37.y, r10.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) - // Soft compress if luminance > 0.5 - lt r37.z, l(0.500000), r37.y - if_nz r37.z - add r37.w, r37.y, l(-0.500000) - mul r37.w, r37.w, l(-0.666667) - exp r37.w, r37.w - add r37.w, -r37.w, l(1.000000) - mad r37.w, r37.w, l(1.500000), l(0.500000) - max r38.x, r37.y, l(0.001000) - div r38.x, r37.w, r38.x - mul r10.xyz, r10.xyzx, r38.xxxx - endif -endif -mov o0.xyzw, r10.xyzw -mov o1.w, l(0) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0x183ADBF7.cso b/src/games/endfield/glass/0x1913D5FD.cso similarity index 95% rename from src/games/endfield/glass/0x183ADBF7.cso rename to src/games/endfield/glass/0x1913D5FD.cso index b0d1d989b530dcdde5a1bb67682cc0419bcedadd..9b5e56214b458e772850cc1472004f35250cd81d 100644 GIT binary patch delta 460 zcmbQUoq5i7W)YVNCub?uWxtnyJg+xRgf)`Ua__N?A^}W{KQ^Z_C5thBo%~Tkobk)# zhZ5?H-zIZP>N9@dY$>^)k@p4z14CP*0+3{2xHh>^Mtib>^a;jmlYdHQqsnbAlnG~K zygvD)tTB-MD_ajFYvrVY%k4%EMG z#JGO4Zjw0Trpc~J`kEVnKCxh6;51?oU=Red-5L~tBm=`nApX{`0Ae!i1Y)DfjPb&g zHzaW|ZkW6?DVlNPWYOeyUXX4nsE!SjS0*bnZrFS_S)7p-q+M%rVTSPLKPe|-7WoV#r=FGPU4mrZlF1X#8gqg~_!t;C YoF=b5E6%uh^3${7jLSCLo{Q%N00uIeuK)l5 diff --git a/src/games/endfield/glass/0x754218B1.cso b/src/games/endfield/glass/0x25F7357D.cso similarity index 95% rename from src/games/endfield/glass/0x754218B1.cso rename to src/games/endfield/glass/0x25F7357D.cso index 247a14d49880b456a449c9292a84e037d7deb798..e8ad846e626bdfc9a6a2217369fa1747b2f45da9 100644 GIT binary patch delta 436 zcmdn6g?YmkW)YVNCuhlHn?#)ibME?Q&M=(i`J`~8NB|S#kIkt}%S9N!PUaOCXZ$i* zRa~9%+hkvHea7#bYsL37^4?%zU}$Sp0Fn$0*Cu;PerCKj*;XnWLtK0F11TLw#_N-L zWsHHOqf9-JJSZa#Bq!DhZ~h=NhZ$AR=9voNAoU*=LF!eNW`oo#!PP6xUz`$w5Aiy99WV462QdxWpgUiauLRllX=C(89z)` z6<25cG}%{NpYikNTJimiyjK_)7}^>YfFuLMrOBR>pBXPrww21p5ZB)PKuU*^@$zI| z8Dk*nC{qt456Vab$%%Esn?K0RVMf)nd8R@*Nc~4eka|_6*&y{waP>+vn1KSFYT7_@ zs~SkjOEq=I%bNw&zq2r2ogAp^3?x75=ufWEF<`s~=3fKy;~B4m+1EjGn~&(OF=AXh zxiCSTal_=!1bx+YKwnreFmM_%2rvi&*=`LAK$3xBJrIBER{${?woksBAkVmN^52AL z#`Qo_d~!iz0WV0W6jb%P$!`;t8P{zVOcG~gT)$Z}`F;%Jj?J70>=}WS=fT-bjEgrv zJ-nY0NG&~jo0W0-;>nt4!WoxsZalM| F7XXein0NpH diff --git a/src/games/endfield/glass/0x41AF9F2B.ps_5_0.asm b/src/games/endfield/glass/0x41AF9F2B.ps_5_0.asm deleted file mode 100644 index bb9abbf0c4..0000000000 --- a/src/games/endfield/glass/0x41AF9F2B.ps_5_0.asm +++ /dev/null @@ -1,1805 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Fri Feb 6 19:58:05 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xyz -// TEXCOORD 0 xy 1 NONE float xy -// TEXCOORD 1 zw 1 NONE float zw -// TEXCOORD 2 xyz 2 NONE float xyz -// TEXCOORD 3 xyzw 3 NONE float xyzw -// TEXCOORD 4 xyzw 4 NONE float x -// TEXCOORD 5 xyz 5 NONE float xyz -// TEXCOORD 6 xyz 6 NONE float xyz -// TEXCOORD 7 x 7 NONE uint x -// SV_IsFrontFace 0 x 8 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[244], immediateIndexed -dcl_constantbuffer CB1[4085], dynamicIndexed -dcl_constantbuffer CB2[24], immediateIndexed -dcl_constantbuffer CB3[259], dynamicIndexed -dcl_constantbuffer CB4[3], immediateIndexed -dcl_constantbuffer CB5[2054], dynamicIndexed -dcl_constantbuffer CB6[715], dynamicIndexed -dcl_constantbuffer CB7[160], dynamicIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_sampler s5, mode_default -dcl_sampler s6, mode_default -dcl_sampler s7, mode_default -dcl_sampler s8, mode_default -dcl_sampler s9, mode_default -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2darray (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2d (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_input_ps_siv linear noperspective v0.xyz, position -dcl_input_ps linear v1.xy -dcl_input_ps linear v1.zw -dcl_input_ps linear v2.xyz -dcl_input_ps linear v3.xyzw -dcl_input_ps linear v4.x -dcl_input_ps linear v5.xyz -dcl_input_ps linear v6.xyz -dcl_input_ps constant v7.x -dcl_input_ps_sgv constant v8.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 40 -mul r0.xy, v0.xyxx, cb0[82].zwzz -mad r0.zw, r0.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -mul r1.xyzw, -r0.wwww, cb0[25].xyzw -mad r1.xyzw, cb0[24].xyzw, r0.zzzz, r1.xyzw -mad r1.xyzw, cb0[26].xyzw, v0.zzzz, r1.xyzw -add r1.xyzw, r1.xyzw, cb0[27].xyzw -div r1.xyz, r1.xyzx, r1.wwww -mul r0.z, r1.y, cb0[1].z -mad r0.z, cb0[0].z, r1.x, r0.z -mad r0.z, cb0[2].z, r1.z, r0.z -add r0.z, r0.z, cb0[3].z -mov r2.z, |r0.z| -lt r0.z, l(0.000000), v3.w -movc r0.z, r0.z, l(1.000000), l(-1.000000) -eq r0.w, l(0.000000), cb0[86].w -add r3.xyz, -r1.xyzx, cb0[44].xyzx -mov r4.x, cb0[0].z -mov r4.y, cb0[1].z -mov r4.z, cb0[2].z -movc r3.xyz, r0.wwww, r3.xyzx, r4.xyzx -dp3 r0.w, r3.xyzx, r3.xyzx -max r2.w, r0.w, l(9.999999939E-09) -rsq r2.w, r2.w -mul r5.xyz, r2.wwww, r3.xyzx -mul r0.w, r0.w, r2.w -add r6.xy, -v1.xyxx, v1.zwzz -mad r6.zw, cb2[3].xxxx, r6.xxxy, v1.xxxy -mad r6.zw, r6.zzzw, cb2[12].xxxy, cb2[12].zzzw -mad r6.xy, cb2[2].wwww, r6.xyxx, v1.xyxx -mad r6.xy, r6.xyxx, cb2[11].xyxx, cb2[11].zwzz -sample_b_indexable(texture2d)(float,float,float,float) r7.xyzw, r6.xyxx, t3.xyzw, s5, cb0[108].x -add r3.w, cb0[108].x, cb2[3].y -sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r6.zwzz, t4.xywz, s6, r3.w -mul r8.x, r8.x, r8.z -mad r6.xy, r8.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -mul r8.xy, r6.xyxx, cb2[0].xxxx -sample_b_indexable(texture2d)(float,float,float,float) r9.xyz, r6.zwzz, t5.xyzw, s7, cb0[108].x -mul r7.xyzw, r7.xyzw, cb2[8].xyzw -mul_sat r7.xyz, r7.xyzx, cb2[4].zzzz -add r10.xyz, -r7.xyzx, cb2[8].xyzx -mad r7.xyz, cb2[4].xxxx, r10.xyzx, r7.xyzx -mad r3.w, r7.w, v4.x, -r7.w -mad r10.w, cb2[23].x, r3.w, r7.w -add r3.w, -cb2[0].z, cb2[0].w -mad r11.w, r9.y, r3.w, cb2[0].z -add_sat r3.w, l(-1.000000), cb2[3].w -add r4.w, -r9.x, cb2[4].y -mad r3.w, r3.w, r4.w, r9.x -mul r9.xyw, v2.zxzy, v3.yzyx -mad r9.xyw, v2.yzyx, v3.zxzy, -r9.xyxw -mul r9.xyw, r0.zzzz, r9.xyxw -mul r8.yzw, r8.yyyy, r9.xxyw -mad r8.xyz, v3.xyzx, r8.xxxx, r8.yzwy -dp2 r0.z, r6.xyxx, r6.xyxx -min r0.z, r0.z, l(1.000000) -add r0.z, -r0.z, l(1.000000) -sqrt r0.z, r0.z -max r0.z, r0.z, l(1.000000017E-16) -lt r4.w, l(0.000000), cb2[1].w -movc r4.w, r4.w, l(-1.000000), l(1.000000) -movc r4.w, v8.x, l(1.000000), r4.w -mul r0.z, r0.z, r4.w -mad r6.xyz, v2.xyzx, r0.zzzz, r8.xyzx -dp3 r0.z, r6.xyzx, r6.xyzx -rsq r0.z, r0.z -mul r6.xyz, r0.zzzz, r6.xyzx -dp3 r0.z, r6.xyzx, r5.xyzx -dp3 r4.w, -r5.xyzx, r6.xyzx -mul r5.w, cb2[19].z, cb2[19].z -mad r7.w, -r4.w, r4.w, l(1.000000) -mad r5.w, -r5.w, r7.w, l(1.000000) -sqrt r7.w, r5.w -mad r7.w, cb2[19].z, r4.w, r7.w -ge r5.w, r5.w, l(0.000000) -mul r8.xyz, r6.xyzx, r7.wwww -mad r8.xyz, cb2[19].zzzz, -r5.xyzx, -r8.xyzx -and r8.xyz, r5.wwww, r8.xyzx -mul r5.w, r0.z, v0.z -max r5.w, r5.w, l(0.500000) -div r5.w, cb2[19].w, r5.w -add r5.w, r5.w, -cb2[19].w -mad r5.w, cb2[20].x, r5.w, cb2[19].w -mul r8.xyz, r5.wwww, r8.xyzx -mul r8.yw, r8.yyyy, cb0[1].xxxy -mad r8.xy, cb0[0].xyxx, r8.xxxx, r8.ywyy -mad r8.xy, cb0[2].xyxx, r8.zzzz, r8.xyxx -mad r8.zw, v1.xxxy, cb2[22].xxxy, cb2[22].zzzw -sample_b_indexable(texture2d)(float,float,float,float) r8.zw, r8.zwzz, t7.zwxy, s8, cb0[108].x -mad r8.zw, r8.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -mad r8.zw, r8.zzzw, cb2[19].yyyy, -r8.xxxy -mad r8.xy, cb2[19].xxxx, r8.zwzz, r8.xyxx -mad r8.zw, v0.xxxy, cb0[82].zzzw, r8.xxxy -mul r8.xy, r8.xyxx, l(0.250000, 0.250000, 0.000000, 0.000000) -mad r9.xy, v0.xyxx, cb0[82].zwzz, r8.xyxx -sample_b_indexable(texture2d)(float,float,float,float) r5.w, r8.zwzz, t1.yzwx, s0, cb0[108].x -sample_b_indexable(texture2d)(float,float,float,float) r7.w, r9.xyxx, t1.yzwx, s0, cb0[108].x -mad r7.w, cb0[84].z, r7.w, cb0[84].w -div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w -ge r7.w, r7.w, r2.z -and r7.w, r7.w, l(0x3f800000) -mad r0.xy, r7.wwww, r8.xyxx, r0.xyxx -mad r5.w, cb0[84].z, r5.w, cb0[84].w -div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w -ge r5.w, r5.w, r2.z -and r5.w, r5.w, l(0x3f800000) -add r8.xy, -r0.xyxx, r8.zwzz -mad r0.xy, r5.wwww, r8.xyxx, r0.xyxx -sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r0.xyxx, t6.xyzw, s9, cb0[108].x -max r0.x, v5.z, l(9.999999939E-09) -div r0.xy, v5.xyxx, r0.xxxx -max r5.w, v6.z, l(9.999999939E-09) -div r9.xy, v6.xyxx, r5.wwww -add r12.xy, r0.xyxx, -r9.xyxx -mul r0.x, l(0.080000), cb2[0].y -mad r9.xyw, -r7.xyxz, r3.wwww, r7.xyxz -mad r0.x, -r0.x, r3.w, r0.x -mad r7.xyz, r7.xyzx, r3.wwww, r0.xxxx -mad r13.xyzw, r11.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r0.x, r13.x, r13.x -max r0.y, r0.z, l(0.000000) -mul r0.z, r0.y, l(-9.280000) -exp r0.z, r0.z -min r0.x, r0.z, r0.x -mad r0.x, r0.x, r13.x, r13.y -mad r0.xz, r0.xxxx, l(-1.040000, 0.000000, 1.040000, 0.000000), r13.zzwz -eq r3.w, l(1.000000), cb0[113].y -mul r13.xyzw, r1.yyyy, cb0[241].xyzw -mad r13.xyzw, cb0[240].xyzw, r1.xxxx, r13.xyzw -mad r13.xyzw, cb0[242].xyzw, r1.zzzz, r13.xyzw -add r13.xyzw, r13.xyzw, cb0[243].xyzw -div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r13.w -mul r13.xyz, r13.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) -mul r13.xyz, r5.wwww, r13.xyzx -mad_sat r13.xy, r13.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -mul r13.xy, r13.xyxx, cb0[82].xyxx -ftou r14.xy, r13.xyxx -mad r5.w, cb0[84].z, r13.z, cb0[84].w -div r14.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w -ftou r2.xy, v0.xyxx -movc r13.xyz, r3.wwww, r14.xyzx, r2.xyzx -mad r2.xyz, r6.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r1.xyzx -mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r14.xyz, r2.xzyx, -r14.xyzx -max r3.w, |r14.y|, |r14.x| -add r3.w, r3.w, l(-464.000000) -mul_sat r3.w, r3.w, l(0.031250) -add r5.w, |r14.z|, l(-208.000000) -mul_sat r5.w, r5.w, l(0.031250) -max r3.w, r3.w, r5.w -ne r5.w, l(0.000000), cb0[210].w -lt r7.w, r3.w, l(1.000000) -and r5.w, r5.w, r7.w -if_nz r5.w - mad r14.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r14.xyz, r2.xzyx, -r14.xyzx - max r5.w, |r14.y|, |r14.x| - add r5.w, r5.w, l(-29.000000) - mul_sat r5.w, r5.w, l(0.500000) - add r7.w, |r14.z|, l(-13.000000) - mul_sat r7.w, r7.w, l(0.500000) - max r5.w, r5.w, r7.w - lt r7.w, r5.w, l(1.000000) - if_nz r7.w - mad r14.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r15.xyz, r14.xyzx, cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r14.xyzx, t14.xyzw, s2, l(0.000000) - add r7.w, -r5.w, l(1.000000) - mul r8.w, l(0.500000), cb0[211].y - mad r12.w, -cb0[211].y, l(0.500000), l(1.000000) - max r8.w, r8.w, r14.y - min r8.w, r12.w, r8.w - mul r14.w, r8.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t15.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r15.xxxx, r16.xyzx - add r16.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t15.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r15.yyyy, r16.xyzx - add r14.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t15.xyzw, s1, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r15.zzzz, r14.xyzx - mad r8.w, r16.w, r7.w, r3.w - mov r14.w, r15.z - mul r14.xyzw, r7.wwww, r14.xyzw - mov r18.w, r15.y - mul r16.xyzw, r7.wwww, r18.xyzw - mov r17.w, r15.x - mul r15.xyzw, r7.wwww, r17.xyzw - else - mov r14.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r8.w, r3.w - endif - mad r17.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r17.xyz, r2.xzyx, -r17.xyzx - max r7.w, |r17.y|, |r17.x| - add r7.w, r7.w, l(-116.000000) - mul_sat r7.w, r7.w, l(0.125000) - add r12.w, |r17.z|, l(-52.000000) - mul_sat r12.w, r12.w, l(0.125000) - max r7.w, r7.w, r12.w - lt r12.w, r7.w, l(1.000000) - if_nz r12.w - mad r17.xyz, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r17.xyzx, cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r17.xyzx, t16.xyzw, s2, l(0.000000) - add r12.w, -r7.w, l(1.000000) - mul r5.w, r5.w, r12.w - mul r12.w, l(0.500000), cb0[211].y - mad r18.w, -cb0[211].y, l(0.500000), l(1.000000) - max r12.w, r12.w, r17.y - min r12.w, r18.w, r12.w - mul r17.w, r12.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t17.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r18.xxxx, r19.xyzx - add r19.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t17.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r18.yyyy, r19.xyzx - add r17.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t17.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r18.zzzz, r17.xyzx - mad r8.w, r19.w, r5.w, r8.w - mov r17.w, r18.z - mad r14.xyzw, r17.xyzw, r5.wwww, r14.xyzw - mov r21.w, r18.y - mad r16.xyzw, r21.xyzw, r5.wwww, r16.xyzw - mov r20.w, r18.x - mad r15.xyzw, r20.xyzw, r5.wwww, r15.xyzw - endif - lt r5.w, l(0.000000), r7.w - if_nz r5.w - mad r2.xyz, r2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r2.xyzx, cb0[211].xyzx - mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r17.xyz, r17.xyzx - mad r2.xyz, r2.xyzx, cb0[211].xyzx, -r17.xyzx - mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r2.xyz, r18.xyzx, r2.xyzx - min r19.xyz, r17.xyzx, r2.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r19.xyzx, t18.yzwx, s2, l(0.000000) - add r2.x, -r3.w, l(1.000000) - mul r2.x, r2.x, r7.w - max r2.y, r18.y, r19.y - min r2.y, r17.y, r2.y - mul r19.w, r2.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r19.xwzx, t19.xyzw, s1, l(0.000000) - add r18.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t19.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r20.yyyy, r18.xyzx - mov r18.w, r20.y - mad r14.xyzw, r18.xyzw, r2.xxxx, r14.xyzw - add r18.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t19.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r20.xxxx, r18.xyzx - mov r18.w, r20.x - mad r16.xyzw, r18.xyzw, r2.xxxx, r16.xyzw - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r17.xyzx - mad r15.xyzw, r20.xyzw, r2.xxxx, r15.xyzw - mad r8.w, r17.w, r2.x, r8.w - endif - mad_sat r2.x, r8.w, l(2.000000), l(-1.000000) - add r17.x, -r3.w, r2.x - add r2.x, r3.w, r2.x - mul r17.y, r2.x, l(0.500000) -else - mov r14.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r17.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r17.yyyx, cb0[213].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r2.xy, r17.yxyy, cb0[213].wyww -mad r18.w, r2.y, l(0.375000), r2.x -add r15.xyzw, r15.xyzw, r18.xyzw -mul r18.xyzw, r17.yyyx, cb0[214].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r2.xy, r17.yxyy, cb0[214].wyww -mad r18.w, r2.y, l(0.375000), r2.x -add r16.xyzw, r16.xyzw, r18.xyzw -mul r18.xyzw, r17.yyyx, cb0[215].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r2.xy, r17.yxyy, cb0[215].wyww -mad r18.w, r2.y, l(0.375000), r2.x -add r14.xyzw, r14.xyzw, r18.xyzw -dp3 r2.x, r15.xyzx, r6.xyzx -add r2.x, r15.w, r2.x -max r2.x, r2.x, l(0.000000) -dp3 r3.w, r16.xyzx, r6.xyzx -add r3.w, r16.w, r3.w -max r2.y, r3.w, l(0.000000) -dp3 r3.w, r14.xyzx, r6.xyzx -add r3.w, r14.w, r3.w -max r2.z, r3.w, l(0.000000) -add r3.w, r4.w, r4.w -mad r14.xyz, r6.xyzx, -r3.wwww, -r5.xyzx -add r3.w, l(-1.000000), cb0[113].x -max r4.w, r11.w, l(0.001000) -log r4.w, r4.w -mad r4.w, -r4.w, l(1.200000), l(1.000000) -add r3.w, r3.w, -r4.w -utof r15.xy, r13.xyxx -mul r15.zw, r15.xxxy, cb3[0].wwww -round_ni r15.zw, r15.zzzw -add r4.w, r13.z, -cb3[2].y -round_ni r4.w, r4.w -add r5.w, l(-1.000000), cb3[1].x -max r7.w, r4.w, l(0.000000) -min r5.w, r5.w, r7.w -ge r4.w, r5.w, r4.w -mad r7.w, r15.w, cb3[0].x, r15.z -ftoi r7.w, r7.w -iadd r7.w, r7.w, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r7.w, r7.w, l(0), t0.xxxx -ftoi r5.w, r5.w -iadd r5.w, r5.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.w, r5.w, l(0), t0.xxxx -and r5.w, r5.w, r7.w -and r4.w, r4.w, r5.w -mul r16.xyz, r2.xyzx, cb0[111].xxxx -dp3 r5.w, r16.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r1.w, l(1.000000) -mov r6.w, l(1.000000) -mov r16.xyz, l(0,0,0,0) -mov r7.w, l(1.000000) -mov r8.w, r4.w -mov r12.w, l(0) -loop - lt r14.w, l(0.010000), r7.w - ine r15.z, r8.w, l(0) - and r15.z, r14.w, r15.z - if_nz r15.z - firstbit_lo r15.z, r8.w - ishl r15.w, l(1), r15.z - xor r8.w, r8.w, r15.w - ishl r15.z, r15.z, l(3) - dp4 r17.x, cb3[r15.z + 6].xyzw, r1.xyzw - dp4 r17.y, cb3[r15.z + 7].xyzw, r1.xyzw - dp4 r17.z, cb3[r15.z + 8].xyzw, r1.xyzw - ge r18.xyz, cb3[r15.z + 5].xyzx, |r17.xyzx| - and r15.w, r18.y, r18.x - and r15.w, r18.z, r15.w - if_nz r15.w - mul r15.w, l(0.100000), cb3[r15.z + 5].x - mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r18.xy, r18.xyxx, r18.xyxx - add r19.xyz, -|r17.xyzx|, cb3[r15.z + 5].xyzx - mul r19.xyz, r19.xyzx, cb3[r15.z + 9].xyzx - eq r16.w, l(1.000000), cb3[r15.z + 10].x - if_nz r16.w - dp3 r20.x, cb3[r15.z + 6].xyzx, r14.xyzx - dp3 r20.y, cb3[r15.z + 7].xyzx, r14.xyzx - dp3 r20.z, cb3[r15.z + 8].xyzx, r14.xyzx - add r21.xyz, -r17.xyzx, cb3[r15.z + 5].xyzx - div r21.xyz, r21.xyzx, r20.xyzx - add r22.xyz, -r17.xyzx, -cb3[r15.z + 5].xyzx - div r22.xyz, r22.xyzx, r20.xyzx - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx - movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx - min r16.w, r21.y, r21.x - min r16.w, r21.z, r16.w - mad r17.xyz, r20.xyzx, r16.wwww, r17.xyzx - else - mov r17.xyz, r14.xyzx - endif - dp3 r16.w, r17.xyzx, r17.xyzx - rsq r16.w, r16.w - mul r17.xyz, r16.wwww, r17.xyzx - lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx - lt r21.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r20.xyz, -r20.xyzx, r21.xyzx - itof r20.xyz, r20.xyzx - dp3 r16.w, r17.xyzx, r20.xyzx - div r17.xyz, r17.xyzx, r16.wwww - lt r16.w, r17.z, l(0.000000) - add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r17.zw, r17.zzzw, r20.xxxy - movc r17.xy, r16.wwww, r17.zwzz, r17.xyxx - dp4 r16.w, cb3[r15.z + 4].xyzw, r6.xyzw - max r16.w, r16.w, l(0.000000) - max r16.w, r16.w, l(0.000100) - min r17.z, r19.z, r19.y - min r17.z, r17.z, r19.x - add r17.w, r18.y, r18.x - mad r17.w, r18.z, r18.z, r17.w - mad r15.w, r15.w, r15.w, -r17.w - mul r15.w, r15.w, cb3[r15.z + 9].x - mul r15.w, r15.w, cb3[r15.z + 9].x - add r17.w, l(1.000000), -cb3[r15.z + 10].y - mul r15.w, r15.w, r17.w - mul r15.w, r15.w, l(100.000000) - mad_sat r15.w, r17.z, cb3[r15.z + 10].y, r15.w - mul r17.z, r15.w, cb3[r15.z + 10].w - mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r18.xy, r17.xyxx, cb3[1].wwww, cb3[2].wwww - mov r18.z, cb3[r15.z + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r17.xyw, r18.xyzx, t2.xywz, s3, r3.w - mul r17.xyw, r17.xyxw, cb3[r15.z + 9].wwww - div r18.x, r5.w, r16.w - min r18.x, |r18.x|, l(1.000000) - mad r18.x, r18.x, l(2.000000), r5.w - add r16.w, r16.w, l(2.000000) - div r16.w, r18.x, r16.w - add r16.w, r16.w, l(-1.000000) - mad r16.w, r16.w, cb0[112].w, l(1.000000) - mul r17.xyw, r16.wwww, r17.xyxw - mul r17.xyz, r17.zzzz, r17.xywx - mad r16.xyz, r17.xyzx, r7.wwww, r16.xyzx - mad r15.z, -r15.w, cb3[r15.z + 10].w, l(1.000000) - mul r7.w, r7.w, r15.z - endif - mov r12.w, l(-1) - continue - else - mov r12.w, r14.w - break - endif - mov r12.w, r14.w -endloop -if_nz r12.w - dp3 r1.w, r14.xyzx, r14.xyzx - rsq r1.w, r1.w - mul r17.xyz, r1.wwww, r14.xyzx - lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx - lt r19.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r18.xyz, -r18.xyzx, r19.xyzx - itof r18.xyz, r18.xyzx - dp3 r1.w, r17.xyzx, r18.xyzx - div r17.xyz, r17.xyzx, r1.wwww - lt r1.w, r17.z, l(0.000000) - add r15.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r15.zw, r15.zzzw, r18.xxxy - movc r15.zw, r1.wwww, r15.zzzw, r17.xxxy - mov r6.w, l(1.000000) - dp4 r1.w, cb3[3].xyzw, r6.xyzw - max r1.w, r1.w, l(0.000000) - max r1.w, r1.w, l(0.000100) - mad r15.zw, r15.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r17.xy, r15.zwzz, cb3[1].wwww, cb3[2].wwww - mov r17.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t2.xyzw, s3, r3.w - div r3.w, r5.w, r1.w - min r3.w, |r3.w|, l(1.000000) - mad r3.w, r3.w, l(2.000000), r5.w - add r1.w, r1.w, l(2.000000) - div r1.w, r3.w, r1.w - add r1.w, r1.w, l(-1.000000) - mad r1.w, r1.w, cb0[112].w, l(1.000000) - mul r17.xyz, r1.wwww, r17.xyzx - mad r16.xyz, r17.xyzx, r7.wwww, r16.xyzx -endif -mul r2.xyz, r9.xywx, r2.xyzx -add r1.w, r9.z, l(-1.000000) -mad r1.w, cb2[1].x, r1.w, l(1.000000) -mul r2.xyz, r1.wwww, r2.xyzx -mul r16.xyz, r16.xyzx, cb0[112].zzzz -// === Glass Fix: Reduce reflection probe intensity === -lt r37.x, l(0.500000), cb13[13].z -if_nz r37.x - mul r16.xyz, r16.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) -endif -mul r16.xyz, r16.xyzx, cb0[111].yyyy -mul_sat r1.w, r7.y, l(50.000000) -mul r0.z, r0.z, r1.w -mad r17.xyz, r7.xyzx, r0.xxxx, r0.zzzz -mul r16.xyz, r16.xyzx, r17.xyzx -mad r2.xyz, r2.xyzx, cb0[111].xxxx, r16.xyzx -lt r0.x, cb6[35].w, l(0.990000) -if_nz r0.x - ftoi r0.x, cb6[35].x - ieq r0.z, r0.x, l(2) - movc r16.xyz, r0.zzzz, cb6[20].xyzx, cb0[44].xyzx - add r16.xyz, r1.xyzx, -r16.xyzx - dp3 r0.z, r16.xyzx, r16.xyzx - add r0.z, -r0.z, cb6[34].w - mul_sat r0.z, r0.z, cb6[34].z - lt r1.w, l(0.000000), r0.z - if_nz r1.w - ilt r0.x, l(0), r0.x - if_nz r0.x - add r16.xyz, r1.xyzx, -cb6[20].xyzx - add r17.xyz, r1.xyzx, -cb6[21].xyzx - add r18.xyz, r1.xyzx, -cb6[22].xyzx - add r19.xyz, r1.xyzx, -cb6[23].xyzx - dp3 r16.x, r16.xyzx, r16.xyzx - dp3 r16.y, r17.xyzx, r17.xyzx - dp3 r16.z, r18.xyzx, r18.xyzx - dp3 r16.w, r19.xyzx, r19.xyzx - lt r17.x, r16.x, cb6[20].w - lt r17.y, r16.y, cb6[21].w - lt r17.z, r16.z, cb6[22].w - lt r17.w, r16.w, cb6[23].w - and r18.xyzw, r17.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) - movc r17.xyz, r17.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) - add r17.xyz, r17.xyzx, r18.yzwy - max r18.yzw, r17.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) - dp4 r0.x, r18.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) - add r0.x, -r0.x, l(4.000000) - max r0.x, r0.x, l(0.000000) - min r0.x, r0.x, l(3.000000) - add r1.w, r0.x, l(1.000000) - min r1.w, r1.w, l(3.000000) - ftou r1.w, r1.w - dp3 r3.w, r16.yzwy, icb[r1.w + 0].yzwy - div r1.w, r3.w, cb6[r1.w + 20].w - ge r3.w, r1.w, l(0.000000) - ge r1.w, l(1.000000), r1.w - and r1.w, r1.w, r3.w - if_nz r1.w - ftou r1.w, r0.x - add r15.zw, r15.xxxy, l(0.000000, 0.000000, 2.083000, 4.867000) - dp2 r3.w, r15.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) - frc r3.w, r3.w - mul r3.w, r3.w, l(52.982918) - frc r3.w, r3.w - dp4 r4.w, r16.xyzw, icb[r1.w + 0].xyzw - div r1.w, r4.w, cb6[r1.w + 20].w - sqrt r1.w, r1.w - add r1.w, r1.w, l(-0.900000) - mul r1.w, r1.w, l(12.000000) - ge r1.w, r1.w, r3.w - and r1.w, r1.w, l(0x3f800000) - add r0.x, r0.x, r1.w - endif - dp3 r1.w, r6.xyzx, cb5[0].xyzx - max r1.w, r1.w, l(0.000000) - min r1.w, r1.w, l(0.900000) - add r1.w, -r1.w, l(1.000000) - ftou r3.w, r0.x - ishl r4.w, r3.w, l(2) - mul r15.zw, r1.wwww, cb6[r3.w + 24].xxxy - max r1.w, r15.z, l(0.000000) - mad r16.xyz, -cb5[0].xyzx, r1.wwww, r1.xyzx - mad r16.xyz, r6.xyzx, r15.wwww, r16.xyzx - mul r17.xyz, r16.yyyy, cb6[r4.w + 1].xyzx - mad r16.xyw, cb6[r4.w + 0].xyxz, r16.xxxx, r17.xyxz - mad r16.xyz, cb6[r4.w + 2].xyzx, r16.zzzz, r16.xywx - add r16.xyz, r16.xyzx, cb6[r4.w + 3].xyzx - ge r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - ge r18.xyz, r16.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - or r17.xyz, r17.xyzx, r18.xyzx - or r1.w, r17.y, r17.x - or r1.w, r17.z, r1.w - and r3.w, r16.z, l(0x7fffffff) - ult r3.w, l(0x7f800000), r3.w - or r17.z, r1.w, r3.w - ftoi r0.x, r0.x - mad r15.zw, r16.xxxy, cb6[r0.x + 28].zzzw, cb6[r0.x + 28].xxxy - mad r16.xy, r15.zwzz, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r16.xy, r16.xyxx - mad r15.zw, r15.zzzw, cb6[32].zzzw, -r16.xxxy - add r18.xyzw, r15.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r19.xw, r18.xxxz, r18.xxxz - min r18.xz, r15.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) - max r20.xy, r15.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r20.zw, r19.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r15.zzzw - add r15.zw, -r15.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - mad r15.zw, -r18.xxxz, r18.xxxz, r15.zzzw - mad r18.xy, -r20.xyxx, r20.xyxx, r18.ywyy - mov r21.x, r20.z - mov r21.y, r15.z - mov r21.z, r18.x - mov r21.w, r19.x - mul r21.xyzw, r21.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r19.x, r20.w - mov r19.y, r15.w - mov r19.z, r18.y - mul r18.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r19.xyzw, r21.ywyw, r21.xzxz - add r20.xyzw, r18.yyww, r18.xxzz - div r15.zw, r21.yyyw, r19.zzzw - add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r21.xy, r15.zwzz, cb6[32].xxxx - div r15.zw, r18.yyyw, r20.yyyw - add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r21.zw, r15.zzzw, cb6[32].yyyy - mul r18.xyzw, r19.xyzw, r20.xyzw - mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xzyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r19.xyxx, t8.xxxx, s4, r16.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t8.xxxx, s4, r16.z - mul r1.w, r1.w, r18.y - mad r0.x, r18.x, r0.x, r1.w - mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.xyxx, t8.xxxx, s4, r16.z - mad r0.x, r18.z, r1.w, r0.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t8.xxxx, s4, r16.z - mad r0.x, r18.w, r1.w, r0.x - movc r17.x, r17.z, l(1.000000), r0.x - else - mov r17.xz, l(1.000000,0,0,0) - endif - else - mov r17.xz, l(1.000000,0,0,0) - endif - lt r0.x, r0.z, l(1.000000) - if_nz r0.x - dp3 r0.x, r6.xyzx, cb5[0].xyzx - max r0.x, r0.x, l(0.000000) - min r0.x, r0.x, l(0.900000) - add r0.x, -r0.x, l(1.000000) - mul r15.zw, r0.xxxx, cb6[584].xxxy - mad r16.xyz, -cb5[0].xyzx, r15.zzzz, r1.xyzx - mad r16.xyz, r6.xyzx, r15.wwww, r16.xyzx - mul r15.zw, r16.yyyy, cb6[581].xxxy - mad r15.zw, cb6[580].xxxy, r16.xxxx, r15.zzzw - mad r15.zw, cb6[582].xxxy, r16.zzzz, r15.zzzw - add r15.zw, r15.zzzw, cb6[583].xxxy - lt r18.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r15.zwzz - and r0.x, r18.y, r18.x - lt r18.xy, r15.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000) - and r1.w, r18.y, r18.x - and r0.x, r0.x, r1.w - if_nz r0.x - mul r0.x, r15.w, cb6[585].z - round_ni r0.x, r0.x - add r0.x, r15.z, r0.x - mul r0.x, r0.x, cb6[585].y - ftou r0.x, r0.x - umin r0.x, r0.x, l(127) - and r1.w, l(0x0000ffff), cb6[r0.x + 587].x - f16tof32 r18.x, r1.w - ge r1.w, r18.x, l(0.000000) - if_nz r1.w - mov r19.x, cb6[576].x - mov r19.y, cb6[577].x - mov r19.z, cb6[578].x - mov r19.w, cb6[r0.x + 587].y - mov r16.w, l(1.000000) - dp4 r19.x, r19.xyzw, r16.xyzw - mov r20.x, cb6[576].y - mov r20.y, cb6[577].y - mov r20.z, cb6[578].y - mov r20.w, cb6[r0.x + 587].z - dp4 r19.y, r20.xyzw, r16.xyzw - mov r20.x, cb6[576].z - mov r20.y, cb6[577].z - mov r20.z, cb6[578].z - mov r20.w, cb6[r0.x + 587].w - dp4 r1.w, r20.xyzw, r16.xyzw - lt r15.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxxy - lt r3.w, l(0.000000), r1.w - and r4.w, r15.w, r15.z - and r3.w, r3.w, r4.w - lt r15.zw, r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - lt r4.w, r1.w, l(1.000000) - and r5.w, r15.w, r15.z - and r4.w, r4.w, r5.w - and r3.w, r3.w, r4.w - if_nz r3.w - ushr r0.x, cb6[r0.x + 587].x, l(16) - f16tof32 r18.y, r0.x - mad r15.zw, r19.xxxy, cb6[584].zzzw, r18.xxxy - mad r16.xy, r15.zwzz, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r16.xy, r16.xyxx - mad r15.zw, r15.zzzw, cb6[586].zzzw, -r16.xxxy - add r18.xyzw, r15.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r19.xw, r18.xxxz, r18.xxxz - min r16.zw, r15.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) - max r18.xz, r15.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r20.xy, r19.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r15.zwzz - add r15.zw, -r15.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - mad r15.zw, -r16.zzzw, r16.zzzw, r15.zzzw - mad r16.zw, -r18.xxxz, r18.xxxz, r18.yyyw - mov r18.x, r20.x - mov r18.y, r15.z - mov r18.z, r16.z - mov r18.w, r19.x - mul r18.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r19.x, r20.y - mov r19.y, r15.w - mov r19.z, r16.w - mul r19.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r20.xyzw, r18.ywyw, r18.xzxz - add r21.xyzw, r19.yyww, r19.xxzz - div r15.zw, r18.yyyw, r20.zzzw - add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r18.xy, r15.zwzz, cb6[586].xxxx - div r15.zw, r19.yyyw, r21.yyyw - add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r18.zw, r15.zzzw, cb6[586].yyyy - mul r19.xyzw, r20.xyzw, r21.xyzw - mad r20.xyzw, r16.xyxy, cb6[586].xyxy, r18.xzyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r20.xyxx, t11.xxxx, s4, r1.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r20.zwzz, t11.xxxx, s4, r1.w - mul r3.w, r3.w, r19.y - mad r0.x, r19.x, r0.x, r3.w - mad r16.xyzw, r16.xyxy, cb6[586].xyxy, r18.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r16.xyxx, t11.xxxx, s4, r1.w - mad r0.x, r19.z, r3.w, r0.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r16.zwzz, t11.xxxx, s4, r1.w - mad r17.y, r19.w, r1.w, r0.x - else - mov r17.y, l(1.000000) - endif - else - mov r17.y, l(1.000000) - endif - else - mov r17.y, l(1.000000) - endif - movc r17.x, r17.z, r17.y, r17.x - else - mov r17.y, l(1.000000) - endif - add r0.x, -r17.y, r17.x - mad r0.x, r0.z, r0.x, r17.y - lt r0.z, l(0.001000), r0.x - if_nz r0.z - add r16.xyz, r1.xyzx, -cb0[173].xyzx - mad r15.zw, cb0[176].xxxz, r16.yyyy, r16.xxxz - mul r16.yw, r15.zzzw, cb0[174].zzzz - mul r17.xy, cb0[175].xyxx, cb0[183].wwww - mad r15.zw, r15.zzzw, cb0[174].zzzz, r17.xxxy - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r15.zwzz, t10.yzxw, s2, l(0.000000) - mad r15.zw, r16.yyyw, cb0[175].wwww, r17.xxxy - sample_l_indexable(texture2d)(float,float,float,float) r1.w, r15.zwzz, t10.yzwx, s2, l(0.000000) - dp2 r3.w, r16.xzxx, r16.xzxx - sqrt r3.w, r3.w - add r4.w, -cb0[174].x, cb0[174].y - add r3.w, r3.w, -cb0[174].x - div r4.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w - mul_sat r3.w, r3.w, r4.w - mad r4.w, r3.w, l(-2.000000), l(3.000000) - mul r3.w, r3.w, r3.w - mul r3.w, r3.w, r4.w - add r1.w, -r0.z, r1.w - mad r0.z, r3.w, r1.w, r0.z - add r0.z, r0.z, l(-1.000000) - mad r0.z, cb0[175].z, r0.z, l(1.000000) - mul r0.x, r0.z, r0.x - endif - add r0.z, -r0.x, cb6[35].z - mad r0.x, cb6[35].w, r0.z, r0.x -else - mov r0.x, cb6[35].z -endif -min r0.x, r0.x, l(1.000000) -add r0.x, r0.x, l(-1.000000) -mad r16.x, cb6[34].x, r0.x, l(1.000000) -lt r0.x, l(0.001000), r16.x -if_nz r0.x - dp3 r0.x, -cb5[0].xyzx, r14.xyzx - mad r17.xyz, cb5[0].xyzx, r0.xxxx, r14.xyzx - lt r0.x, r0.x, cb5[4].z - dp3 r0.z, r17.xyzx, r17.xyzx - max r0.z, r0.z, l(0.0000610351562) - rsq r0.z, r0.z - mul r17.xyz, r0.zzzz, r17.xyzx - mul r17.xyz, r17.xyzx, cb5[4].yyyy - mad r17.xyz, -cb5[0].xyzx, cb5[4].zzzz, r17.xyzx - dp3 r0.z, r17.xyzx, r17.xyzx - rsq r0.z, r0.z - mul r17.xyz, r0.zzzz, r17.xyzx - movc r17.xyz, r0.xxxx, r17.xyzx, r14.xyzx - mad r18.xyz, r3.xyzx, r2.wwww, r17.xyzx - dp3 r0.x, r18.xyzx, r18.xyzx - max r0.x, r0.x, l(0.0000610351562) - rsq r0.x, r0.x - mul r18.xyz, r0.xxxx, r18.xyzx - dp3_sat r11.y, r17.xyzx, r6.xyzx - dp3_sat r0.x, r6.xyzx, r18.xyzx - min r11.z, r0.y, l(1.000000) - mul r0.z, r11.w, r11.w - mul r0.z, r0.z, r0.z - mad r1.w, r0.x, r0.z, -r0.x - mad r0.x, r1.w, r0.x, l(1.000000) - dp3_sat r1.w, r5.xyzx, r18.xyzx - add r1.w, -r1.w, l(1.000000) - mul r3.w, r1.w, r1.w - mul r3.w, r3.w, r3.w - mul r4.w, r1.w, r3.w - add r5.w, -r11.w, l(1.000000) - mad r6.w, -r5.w, l(0.383026), l(-0.0761947036) - mad r6.w, r5.w, r6.w, l(1.049970) - mad r5.w, r5.w, r6.w, l(0.409255) - min r5.w, r5.w, l(0.999000) - add r6.w, -r5.w, l(1.000000) - add r17.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r17.xyz, r17.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx - mad r1.w, -r3.w, r1.w, l(1.000000) - mad r18.xyz, r7.xyzx, r1.wwww, r4.wwww - mul r0.x, r0.x, r0.x - div r0.x, r0.z, r0.x - mad r15.zw, -r11.zzzy, r0.zzzz, r11.zzzy - mad r15.zw, r15.zzzw, r11.zzzy, r0.zzzz - sqrt r15.zw, r15.zzzw - mul r15.zw, r11.yyyz, r15.zzzw - add r0.z, r15.w, r15.z - add r0.z, r0.z, l(0.000100) - div r0.z, l(0.500000), r0.z - mul r0.x, r0.z, r0.x - mul r18.xyz, r0.xxxx, r18.xyzx - min r18.xyz, r18.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r19.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.x, r19.xyxx, t13.xyzw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r19.zwzz, t13.yzxw, s1, l(0.000000) - mul r0.x, r0.z, r0.x - mul r0.x, r5.w, r0.x - div r0.x, r0.x, r6.w - mul r19.xyz, r17.xyzx, r17.xyzx - mul r19.xyz, r0.xxxx, r19.xyzx - mad r17.xyz, -r17.xyzx, r6.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r17.xyz, r19.xyzx, r17.xyzx - add r17.xyz, r17.xyzx, r18.xyzx - mul r17.xyz, r17.xyzx, cb5[4].xxxx - // === Glass Fix: Reduce sun specular intensity === - lt r37.x, l(0.500000), cb13[13].z - if_nz r37.x - mul r17.xyz, r17.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - endif - max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r17.xyz, r17.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - max r0.x, r10.w, l(0.010000) - div r17.xyz, r17.xyzx, r0.xxxx - min r17.xyz, r17.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r18.xyz, r9.xywx, r11.yyyy - mad r17.xyz, r17.xyzx, r11.yyyy, r18.xyzx - mul r17.xyz, r17.xyzx, cb5[1].xyzx - mov r16.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r16.yzw, r16.xyxx, t12.wxyz, s1, cb0[108].x - add r0.x, -r16.x, l(1.000000) - mad r16.xyz, r17.xyzx, r16.yzwy, -r17.xyzx - mad r16.xyz, r0.xxxx, r16.xyzx, r17.xyzx -else - mov r16.xyz, l(0,0,0,0) -endif -mul r0.xz, r15.xxyx, l(0.031250, 0.000000, 0.031250, 0.000000) -round_ni r0.xz, r0.xxzx -mad r0.x, r0.z, cb4[1].y, r0.x -mul r0.x, r0.x, l(8.000000) -ftoi r0.x, r0.x -mad r0.z, -cb0[85].y, cb4[2].w, r13.z -round_ni r0.z, r0.z -add r1.w, l(-1.000000), cb4[1].w -max r3.w, r0.z, l(0.000000) -min r1.w, r1.w, r3.w -mul r3.w, r1.w, l(8.000000) -ftoi r3.w, r3.w -ge r0.z, r1.w, r0.z -iadd r1.w, r3.w, cb0[110].y -mul r3.w, r11.w, r11.w -min r11.x, r0.y, l(1.000000) -add r0.y, -r11.w, l(1.000000) -mad r4.w, -r0.y, l(0.383026), l(-0.0761947036) -mad r4.w, r0.y, r4.w, l(1.049970) -mad r0.y, r0.y, r4.w, l(0.409255) -min r0.y, r0.y, l(0.999000) -add r4.w, -r0.y, l(1.000000) -add r17.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r17.xyz, r17.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx -mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r5.w, r11.yzyy, t13.yzwx, s1, l(0.000000) -mad r18.xyz, -r17.xyzx, r4.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r17.xyz, r17.xyzx, r17.xyzx -mov r19.w, l(1.000000) -mov r20.y, l(1.000000) -mov r21.z, r11.w -mov r22.xyz, l(0,0,0,0) -mov r6.w, l(1.000000) -mov r7.w, l(0) -loop - ilt r8.w, l(7), r7.w - breakc_nz r8.w - iadd r8.w, r0.x, r7.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r8.w, r8.w, l(0), t0.xxxx - iadd r9.z, r1.w, r7.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.z, r9.z, l(0), t0.xxxx - and r8.w, r8.w, r9.z - and r8.w, r0.z, r8.w - ishl r9.z, r7.w, l(5) - mov r23.xyz, l(0,0,0,0) - mov r11.y, r6.w - mov r11.z, r8.w - loop - breakc_z r11.z - firstbit_lo r12.w, r11.z - ishl r14.w, l(1), r12.w - xor r14.w, r11.z, r14.w - iadd r12.w, r9.z, r12.w - bfi r24.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r12.wwww, l(1, 3, 5, 6) - bfi r15.z, l(29), l(3), r12.w, l(7) - ftou r15.w, cb5[r24.z + 6].w - ieq r15.w, r15.w, l(1) - if_nz r15.w - add r19.xyz, r1.xyzx, -cb5[r24.x + 6].xyzx - and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r24.z + 6].xzyx - and r26.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r24.w + 6].yxzy - ushr r27.xyz, cb5[r24.z + 6].xzyx, l(16, 16, 16, 0) - ushr r28.xyz, cb5[r24.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyz, r26.xyzx - f16tof32 r27.xyz, r27.xyzx - f16tof32 r28.xyw, r28.yxyz - mov r29.xz, r25.xxzx - mov r29.yw, r27.xxxz - dp4 r15.w, r19.xyzw, r29.xyzw - mov r27.x, r25.y - mov r27.z, r26.y - mov r27.w, r28.x - dp4 r16.w, r19.xyzw, r27.xyzw - mov r28.xz, r26.xxzx - dp4 r17.w, r19.xyzw, r28.xyzw - max r15.w, |r15.w|, |r16.w| - max r15.w, |r17.w|, r15.w - mad r16.w, cb5[r15.z + 6].x, l(0.500000), l(0.500000) - add r15.w, r15.w, -r16.w - mad r16.w, -cb5[r15.z + 6].x, l(0.500000), l(0.500000) - div_sat r15.w, r15.w, r16.w - add r15.w, -r15.w, l(1.000000) - mul r15.w, r15.w, r15.w - else - mov r15.w, l(1.000000) - endif - lt r16.w, l(0.500000), cb5[r24.y + 6].z - lt r17.w, r15.w, l(0.001000) - or r17.w, r16.w, r17.w - if_nz r17.w - mov r11.z, r14.w - continue - endif - ishl r17.w, r12.w, l(3) - bfi r12.w, l(29), l(3), r12.w, l(2) - lt r18.w, cb5[r17.w + 6].w, l(1.500000) - if_nz r18.w - mad r18.w, cb5[r12.w + 6].y, l(0.500000), l(0.500000) - add r19.x, r18.w, -|cb5[r12.w + 6].x| - add r19.y, -r19.x, cb5[r12.w + 6].y - add r18.w, -|r19.x|, l(1.000000) - add r18.w, -|r19.y|, r18.w - max r18.w, r18.w, l(0.000488281250) - ge r20.z, cb5[r12.w + 6].x, l(0.000000) - movc r19.z, r20.z, r18.w, -r18.w - dp3 r18.w, r19.xyzx, r19.xyzx - rsq r18.w, r18.w - mul r19.xyz, r18.wwww, r19.xyzx - add r25.xyz, -r1.xyzx, cb5[r24.x + 6].xyzx - dp3 r18.w, r25.xyzx, r25.xyzx - rsq r20.z, r18.w - mul r26.xyz, r20.zzzz, r25.xyzx - ftoi r20.w, cb5[r15.z + 6].w - mul r27.xyz, r19.xyzx, cb5[r12.w + 6].zzzz - mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - ftou r21.w, cb5[r17.w + 6].w - and r21.w, r21.w, l(1) - ieq r22.w, r21.w, l(0) - not r22.w, r22.w - lt r23.w, l(0.000000), cb5[r12.w + 6].z - and r22.w, r22.w, r23.w - dp3 r23.w, r28.xyzx, r28.xyzx - sqrt r23.w, r23.w - dp3 r24.z, r29.xyzx, r29.xyzx - sqrt r24.z, r24.z - dp3 r25.w, r6.xyzx, r28.xyzx - div r25.w, r25.w, r23.w - dp3 r26.w, r6.xyzx, r29.xyzx - div r26.w, r26.w, r24.z - add r25.w, r25.w, r26.w - mul_sat r30.x, r25.w, l(0.500000) - dp3 r25.w, r28.xyzx, r29.xyzx - mad r23.w, r23.w, r24.z, r25.w - mad r23.w, r23.w, l(0.500000), l(1.000000) - div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r23.w - dp3_sat r20.x, r6.xyzx, r26.xyzx - movc r21.xy, r22.wwww, r30.xyxx, r20.xyxx - lt r20.x, cb5[r24.w + 6].w, l(0.000000) - if_nz r20.x - mul r20.x, cb5[r24.x + 6].w, cb5[r24.x + 6].w - mul r20.x, r18.w, r20.x - mad r20.x, -r20.x, r20.x, l(1.000000) - max r20.x, r20.x, l(0.000000) - add r18.w, r18.w, l(1.000000) - div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), r18.w - and r23.w, r22.w, l(0x3f800000) - add r24.z, -r18.w, r21.y - mad r18.w, r23.w, r24.z, r18.w - mul r20.x, r20.x, r20.x - mul r18.w, r18.w, r20.x - else - mul r29.xyz, r25.xyzx, cb5[r24.x + 6].wwww - dp3 r20.x, r29.xyzx, r29.xyzx - min r20.x, r20.x, l(1.000000) - add r20.x, -r20.x, l(1.000000) - log r20.x, r20.x - mul r20.x, r20.x, cb5[r24.w + 6].w - exp r20.x, r20.x - mul r18.w, r20.x, r21.y - endif - dp3 r19.x, r26.xyzx, -r19.xyzx - add r19.x, r19.x, -cb5[r12.w + 6].z - mul_sat r19.x, r19.x, cb5[r12.w + 6].w - mul r19.x, r19.x, r19.x - movc r19.x, r21.w, l(1.000000), r19.x - mul r18.w, r18.w, r19.x - not r19.x, r22.w - ige r19.y, r20.w, l(0) - and r19.x, r19.y, r19.x - if_nz r19.x - if_z r21.w - ishl r19.x, r20.w, l(2) - mul r29.xyz, r1.yyyy, cb7[r19.x + 33].xywx - mad r29.xyz, cb7[r19.x + 32].xywx, r1.xxxx, r29.xyzx - mad r29.xyz, cb7[r19.x + 34].xywx, r1.zzzz, r29.xyzx - add r19.xyz, r29.xyzx, cb7[r19.x + 35].xywx - div_sat r19.xy, r19.xyxx, r19.zzzz - mad r19.xy, r19.xyxx, cb7[r20.w + 0].zwzz, cb7[r20.w + 0].xyxx - else - ishl r19.z, r20.w, l(2) - dp3 r29.x, -r25.xyzx, cb7[r19.z + 32].xyzx - dp3 r29.y, -r25.xyzx, cb7[r19.z + 33].xyzx - dp3 r29.z, -r25.xyzx, cb7[r19.z + 34].xyzx - lt r19.z, |r29.x|, |r29.y| - and r19.z, r19.z, l(1) - dp2 r20.x, |r29.xyxx|, icb[r19.z + 0].xyxx - lt r20.x, r20.x, |r29.z| - movc r19.z, r20.x, l(2), r19.z - dp3 r20.x, r29.xyzx, icb[r19.z + 0].xyzx - lt r20.x, r20.x, l(0.000000) - bfi r19.z, l(31), l(1), r19.z, r20.x - ushr r20.x, r19.z, l(1) - dp3 r20.x, r29.xyzx, icb[r20.x + 0].xyzx - div r21.y, l(0.000244140625), cb7[r20.w + 0].w - add r21.y, -r21.y, l(0.500000) - utof r23.w, r19.z - ult r24.z, r19.z, l(2) - and r24.z, r24.z, l(2) - dp2 r24.z, r29.xzxx, icb[r24.z + 0].xzxx - mul r24.z, r24.z, icb[r19.z + 4].z - div r24.z, r24.z, |r20.x| - mad r23.w, r24.z, r21.y, r23.w - add r23.w, r23.w, l(0.500000) - mul_sat r25.x, r23.w, l(0.166666672) - iadd r23.w, l(-1), icb[r19.z + 4].y - dp2 r23.w, r29.yzyy, icb[r23.w + 0].xyxx - mul r19.z, r23.w, icb[r19.z + 4].w - div r19.z, r19.z, |r20.x| - mad_sat r25.y, -r19.z, r21.y, l(0.500000) - mad r19.xy, r25.xyxx, cb7[r20.w + 0].zwzz, cb7[r20.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r19.x, r19.xyxx, t21.xyzw, s1, l(0.000000) - mul r18.w, r18.w, r19.x - endif - lt r19.x, l(0.000000), r18.w - if_nz r19.x - if_z r21.w - ftoi r19.y, cb5[r24.y + 6].x - else - add r25.xyz, r1.xyzx, -cb5[r24.x + 6].xyzx - lt r29.xyz, |r25.yzzy|, |r25.xxyx| - and r19.z, r29.y, r29.x - lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx - ushr r20.x, cb5[r12.w + 6].w, l(24) - ubfe r21.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb5[r12.w + 6].wwww - movc r20.x, r25.x, r20.x, r21.y - and r20.w, l(255), cb5[r12.w + 6].w - movc r20.w, r25.y, r21.w, r20.w - ubfe r21.y, l(8), l(8), cb5[r24.y + 6].x - and r21.w, l(255), cb5[r24.y + 6].x - movc r21.y, r25.z, r21.y, r21.w - movc r20.w, r29.z, r20.w, r21.y - movc r19.z, r19.z, r20.x, r20.w - ilt r20.x, r19.z, l(80) - movc r19.y, r20.x, r19.z, l(-1) - endif - mad r25.xyz, r26.xyzx, cb6[r19.y + 288].xxxx, r1.xyzx - mul r19.z, l(5.000000), cb6[r19.y + 288].y - mad r25.xyz, r6.xyzx, r19.zzzz, r25.xyzx - ishl r19.z, r19.y, l(2) - mul r29.xyzw, r25.yyyy, cb6[r19.z + 65].xyzw - mad r29.xyzw, cb6[r19.z + 64].xyzw, r25.xxxx, r29.xyzw - mad r25.xyzw, cb6[r19.z + 66].xyzw, r25.zzzz, r29.xyzw - add r25.xyzw, r25.xyzw, cb6[r19.z + 67].xyzw - div r25.xyz, r25.xyzx, r25.wwww - ge r29.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx - ge r30.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r20.xw, -cb6[r19.y + 344].xxxy, cb6[r19.y + 344].zzzw - mad r20.xw, r25.xxxy, r20.xxxw, cb6[r19.y + 344].xxxy - mad r21.yw, r20.xxxw, cb6[400].zzzw, l(0.000000, 0.500000, 0.000000, 0.500000) - round_ni r21.yw, r21.yyyw - mad r20.xw, r20.xxxw, cb6[400].zzzw, -r21.yyyw - add r31.xyzw, r20.xxww, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r32.xyzw, r31.xxzz, r31.xxzz - add r25.xy, -r20.xwxx, l(1.000000, 1.000000, 0.000000, 0.000000) - min r31.xz, r20.xxwx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r33.xy, r20.xwxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r34.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy - add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r20.xw, r32.yyyw, l(0.500000, 0.000000, 0.000000, 0.500000), -r20.xxxw - mul r35.xy, r20.xwxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r20.xw, -r31.xxxz, r31.xxxz, r25.xxxy - add r20.xw, r20.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - mul r36.xy, r20.xwxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r20.xw, r31.yyyw, l(0.160000, 0.000000, 0.000000, 0.160000) - mov r35.z, r36.x - mov r35.w, r20.x - mov r34.z, r33.x - mov r34.w, r32.x - add r31.xyzw, r34.zwxz, r35.zwxz - mov r36.z, r35.y - mov r36.w, r20.w - mov r33.z, r34.y - mov r33.w, r32.z - add r25.xyw, r33.zyzw, r36.zyzw - div r32.xyz, r34.xzwx, r31.zwyz - add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r32.xyz, r32.xyzx, cb6[400].xxxx - div r33.xyz, r33.zywz, r25.xywx - add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r33.xyw, r33.xyxz, cb6[400].yyyy - mul r34.xyzw, r25.xxxy, r31.zwyz - mov r32.w, r33.x - mad r35.xyzw, r21.ywyw, cb6[400].xyxy, r32.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r35.xyxx, t9.xxxx, s4, r25.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r35.zwzz, t9.xxxx, s4, r25.z - mul r20.x, r20.x, r34.y - mad r19.z, r34.x, r19.z, r20.x - mad r20.xw, r21.yyyw, cb6[400].xxxy, r32.zzzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r20.xwxx, t9.xxxx, s4, r25.z - mad r19.z, r34.z, r20.x, r19.z - mov r33.z, r32.x - mad r35.xyzw, r21.ywyw, cb6[400].xyxy, r33.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r35.xyxx, t9.xxxx, s4, r25.z - mad r19.z, r34.w, r20.x, r19.z - mul r34.xyzw, r25.yyww, r31.xyzw - mov r33.xz, r32.yyzy - mad r32.xyzw, r21.ywyw, cb6[400].xyxy, r33.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r32.xyxx, t9.xxxx, s4, r25.z - mad r19.z, r34.x, r20.x, r19.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r32.zwzz, t9.xxxx, s4, r25.z - mad r19.z, r34.y, r20.x, r19.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r35.zwzz, t9.xxxx, s4, r25.z - mad r19.z, r34.z, r20.x, r19.z - ige r20.x, r19.y, l(0) - or r29.xyz, r29.xyzx, r30.xyzx - or r20.w, r29.y, r29.x - or r20.w, r29.z, r20.w - and r23.w, r25.z, l(0x7fffffff) - ult r23.w, l(0x7f800000), r23.w - or r20.w, r20.w, r23.w - mad r29.xyzw, r21.ywyw, cb6[400].xyxy, r33.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.y, r29.xyxx, t9.xxxx, s4, r25.z - mad r19.z, r34.w, r21.y, r19.z - mul r21.y, r25.w, r31.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r29.zwzz, t9.xxxx, s4, r25.z - mad r19.z, r21.y, r21.w, r19.z - add r19.z, r19.z, l(-1.000000) - mad r19.y, cb6[r19.y + 288].w, r19.z, l(1.000000) - movc r19.y, r20.w, l(1.000000), r19.y - movc r19.y, r20.x, r19.y, l(1.000000) - else - mov r19.y, l(1.000000) - endif - if_nz r22.w - dp3 r19.z, r14.xyzx, r27.xyzx - mul_sat r20.x, r20.z, cb5[r12.w + 6].z - mad r20.x, r20.x, l(0.500000), r3.w - min r20.x, r20.x, l(1.000000) - div r20.x, r3.w, r20.x - mad r25.xyz, r14.xyzx, r19.zzzz, -r27.xyzx - dp3 r20.w, r28.xyzx, r25.xyzx - mul r19.z, r19.z, r19.z - mad r19.z, cb5[r12.w + 6].z, cb5[r12.w + 6].z, -r19.z - div_sat r19.z, r20.w, r19.z - mad r25.xyz, r27.xyzx, r19.zzzz, r28.xyzx - dp3 r19.z, r25.xyzx, r25.xyzx - rsq r19.z, r19.z - mul r26.xyz, r19.zzzz, r25.xyzx - else - mov r20.x, l(1.000000) - endif - if_nz r19.x - mul_sat r19.x, r20.z, cb5[r15.z + 6].y - mad r25.xyz, r3.xyzx, r2.wwww, r26.xyzx - dp3 r19.z, r25.xyzx, r25.xyzx - max r19.z, r19.z, l(0.0000610351562) - rsq r19.z, r19.z - mul r25.xyz, r19.zzzz, r25.xyzx - dp3_sat r19.z, r6.xyzx, r25.xyzx - dp3_sat r20.z, r5.xyzx, r25.xyzx - lt r20.w, l(0.000000), r19.x - mul r19.x, r19.x, r19.x - mad r21.y, r20.z, l(3.600000), l(0.400000) - div r19.x, r19.x, r21.y - mad r19.x, r11.w, r11.w, r19.x - min r19.x, r19.x, l(1.000000) - movc r19.x, r20.w, r19.x, r3.w - mul r19.x, r19.x, r19.x - mad r20.w, r19.z, r19.x, -r19.z - mad r19.z, r20.w, r19.z, l(1.000000) - add r20.z, -r20.z, l(1.000000) - mul r20.w, r20.z, r20.z - mul r20.w, r20.w, r20.w - mul r21.y, r20.z, r20.w - mad r20.z, -r20.w, r20.z, l(1.000000) - mad r25.xyz, r7.xyzx, r20.zzzz, r21.yyyy - mul r19.z, r19.z, r19.z - div r19.z, r19.x, r19.z - mul r19.z, r20.x, r19.z - mad r20.x, -r11.x, r19.x, r11.x - mad r20.x, r20.x, r11.x, r19.x - sqrt r20.x, r20.x - mad r20.z, -r21.x, r19.x, r21.x - mad r19.x, r20.z, r21.x, r19.x - sqrt r19.x, r19.x - mul r19.x, r11.x, r19.x - mad r19.x, r21.x, r20.x, r19.x - add r19.x, r19.x, l(0.000100) - div r19.x, l(0.500000), r19.x - mul r19.x, r19.x, r19.z - mul r20.xzw, r19.xxxx, r25.xxyz - min r20.xzw, r20.xxzw, l(2048.000000, 0.000000, 2048.000000, 2048.000000) - mad r19.xz, r21.xxzx, l(0.968750, 0.000000, 0.968750, 0.000000), l(0.015625, 0.000000, 0.015625, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r19.x, r19.xzxx, t13.xyzw, s1, l(0.000000) - mul r19.x, r5.w, r19.x - mul r19.x, r0.y, r19.x - div r19.x, r19.x, r4.w - mul r25.xyz, r17.xyzx, r19.xxxx - div r25.xyz, r25.xyzx, r18.xyzx - add r20.xzw, r20.xxzw, r25.xxyz - mul r20.xzw, r20.xxzw, cb5[r15.z + 6].zzzz - max r20.xzw, r20.xxzw, l(0.000000, 0.000000, 0.000000, 0.000000) - min r20.xzw, r20.xxzw, l(1000.000000, 0.000000, 1000.000000, 1000.000000) - mul r25.xyz, r9.xywx, r21.xxxx - mad r20.xzw, r20.xxzw, r21.xxxx, r25.xxyz - mul r21.xyw, r18.wwww, cb5[r17.w + 6].xyxz - mul r19.xyz, r19.yyyy, r21.xywx - mul r19.xyz, r15.wwww, r19.xyzx - mul r19.xyz, r19.xyzx, r20.xzwx - else - mov r19.xyz, l(0,0,0,0) - endif - else - if_z r16.w - mad r15.w, cb5[r12.w + 6].y, l(0.500000), l(0.500000) - add r25.x, r15.w, -|cb5[r12.w + 6].x| - add r25.y, -r25.x, cb5[r12.w + 6].y - add r15.w, -|r25.x|, l(1.000000) - add r15.w, -|r25.y|, r15.w - max r15.w, r15.w, l(0.000488281250) - ge r16.w, cb5[r12.w + 6].x, l(0.000000) - movc r25.z, r16.w, r15.w, -r15.w - dp3 r15.w, r25.xyzx, r25.xyzx - rsq r15.w, r15.w - mul r20.xzw, r15.wwww, r25.xxyz - add r21.xyw, -r1.xyxz, cb5[r24.x + 6].xyxz - dp3 r15.w, r21.xywx, r21.xywx - rsq r16.w, r15.w - mul r25.xyz, r16.wwww, r21.xywx - ftoi r15.z, cb5[r15.z + 6].w - mul r26.xyz, r20.xzwx, cb5[r12.w + 6].zzzz - mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r21.xywx - mad r26.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r21.xywx - ftou r16.w, cb5[r17.w + 6].w - and r16.w, r16.w, l(1) - ieq r17.w, r16.w, l(0) - not r17.w, r17.w - lt r18.w, l(0.000000), cb5[r12.w + 6].z - and r17.w, r17.w, r18.w - dp3 r18.w, r27.xyzx, r27.xyzx - sqrt r18.w, r18.w - dp3 r22.w, r26.xyzx, r26.xyzx - sqrt r22.w, r22.w - dp3 r23.w, r27.xyzx, r26.xyzx - mad r18.w, r18.w, r22.w, r23.w - mad r18.w, r18.w, l(0.500000), l(1.000000) - div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), r18.w - movc r18.w, r17.w, r18.w, l(1.000000) - lt r22.w, cb5[r24.w + 6].w, l(0.000000) - if_nz r22.w - mul r22.w, cb5[r24.x + 6].w, cb5[r24.x + 6].w - mul r22.w, r15.w, r22.w - mad r22.w, -r22.w, r22.w, l(1.000000) - max r22.w, r22.w, l(0.000000) - add r15.w, r15.w, l(1.000000) - div r15.w, l(1.000000, 1.000000, 1.000000, 1.000000), r15.w - and r23.w, r17.w, l(0x3f800000) - add r24.z, -r15.w, r18.w - mad r15.w, r23.w, r24.z, r15.w - mul r22.w, r22.w, r22.w - mul r15.w, r15.w, r22.w - else - mul r26.xyz, r21.xywx, cb5[r24.x + 6].wwww - dp3 r22.w, r26.xyzx, r26.xyzx - min r22.w, r22.w, l(1.000000) - add r22.w, -r22.w, l(1.000000) - log r22.w, r22.w - mul r22.w, r22.w, cb5[r24.w + 6].w - exp r22.w, r22.w - mul r15.w, r18.w, r22.w - endif - dp3 r18.w, r25.xyzx, -r20.xzwx - add r18.w, r18.w, -cb5[r12.w + 6].z - mul_sat r18.w, r18.w, cb5[r12.w + 6].w - mul r18.w, r18.w, r18.w - movc r18.w, r16.w, l(1.000000), r18.w - mul r15.w, r15.w, r18.w - not r17.w, r17.w - ige r18.w, r15.z, l(0) - and r17.w, r17.w, r18.w - if_nz r17.w - if_z r16.w - ishl r17.w, r15.z, l(2) - mul r20.xzw, r1.yyyy, cb7[r17.w + 33].xxyw - mad r20.xzw, cb7[r17.w + 32].xxyw, r1.xxxx, r20.xxzw - mad r20.xzw, cb7[r17.w + 34].xxyw, r1.zzzz, r20.xxzw - add r20.xzw, r20.xxzw, cb7[r17.w + 35].xxyw - div_sat r20.xz, r20.xxzx, r20.wwww - mad r20.xz, r20.xxzx, cb7[r15.z + 0].zzwz, cb7[r15.z + 0].xxyx - else - ishl r17.w, r15.z, l(2) - dp3 r26.x, -r21.xywx, cb7[r17.w + 32].xyzx - dp3 r26.y, -r21.xywx, cb7[r17.w + 33].xyzx - dp3 r26.z, -r21.xywx, cb7[r17.w + 34].xyzx - lt r17.w, |r26.x|, |r26.y| - and r17.w, r17.w, l(1) - dp2 r18.w, |r26.xyxx|, icb[r17.w + 0].xyxx - lt r18.w, r18.w, |r26.z| - movc r17.w, r18.w, l(2), r17.w - dp3 r18.w, r26.xyzx, icb[r17.w + 0].xyzx - lt r18.w, r18.w, l(0.000000) - bfi r17.w, l(31), l(1), r17.w, r18.w - ushr r18.w, r17.w, l(1) - dp3 r18.w, r26.xyzx, icb[r18.w + 0].xyzx - div r20.w, l(0.000244140625), cb7[r15.z + 0].w - add r20.w, -r20.w, l(0.500000) - utof r21.x, r17.w - ult r21.y, r17.w, l(2) - and r21.y, r21.y, l(2) - dp2 r21.y, r26.xzxx, icb[r21.y + 0].xzxx - mul r21.y, r21.y, icb[r17.w + 4].z - div r21.y, r21.y, |r18.w| - mad r21.x, r21.y, r20.w, r21.x - add r21.x, r21.x, l(0.500000) - mul_sat r21.x, r21.x, l(0.166666672) - iadd r21.w, l(-1), icb[r17.w + 4].y - dp2 r21.w, r26.yzyy, icb[r21.w + 0].xyxx - mul r17.w, r21.w, icb[r17.w + 4].w - div r17.w, r17.w, |r18.w| - mad_sat r21.y, -r17.w, r20.w, l(0.500000) - mad r20.xz, r21.xxyx, cb7[r15.z + 0].zzwz, cb7[r15.z + 0].xxyx - endif - sample_l_indexable(texture2d)(float,float,float,float) r15.z, r20.xzxx, t21.yzxw, s1, l(0.000000) - mul r15.w, r15.z, r15.w - endif - lt r15.z, l(0.000000), r15.w - if_nz r15.z - if_z r16.w - ftoi r15.z, cb5[r24.y + 6].x - else - add r20.xzw, r1.xxyz, -cb5[r24.x + 6].xxyz - lt r21.xyw, |r20.zwzw|, |r20.xxxz| - and r15.w, r21.y, r21.x - lt r20.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xxzw - ushr r16.w, cb5[r12.w + 6].w, l(24) - ubfe r21.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r12.w + 6].wwww - movc r16.w, r20.x, r16.w, r21.x - and r12.w, l(255), cb5[r12.w + 6].w - movc r12.w, r20.z, r21.y, r12.w - ubfe r17.w, l(8), l(8), cb5[r24.y + 6].x - and r18.w, l(255), cb5[r24.y + 6].x - movc r17.w, r20.w, r17.w, r18.w - movc r12.w, r21.w, r12.w, r17.w - movc r12.w, r15.w, r16.w, r12.w - ilt r15.w, r12.w, l(80) - movc r15.z, r15.w, r12.w, l(-1) - endif - mad r20.xzw, r25.xxyz, cb6[r15.z + 288].xxxx, r1.xxyz - mul r12.w, l(5.000000), cb6[r15.z + 288].y - mad r20.xzw, r6.xxyz, r12.wwww, r20.xxzw - ishl r12.w, r15.z, l(2) - mul r24.xyzw, r20.zzzz, cb6[r12.w + 65].xyzw - mad r24.xyzw, cb6[r12.w + 64].xyzw, r20.xxxx, r24.xyzw - mad r24.xyzw, cb6[r12.w + 66].xyzw, r20.wwww, r24.xyzw - add r24.xyzw, r24.xyzw, cb6[r12.w + 67].xyzw - div r20.xzw, r24.xxyz, r24.wwww - ge r21.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xzxw - ge r24.xyz, r20.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r25.xy, -cb6[r15.z + 344].xyxx, cb6[r15.z + 344].zwzz - mad r20.xz, r20.xxzx, r25.xxyx, cb6[r15.z + 344].xxyx - mad r25.xy, r20.xzxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r25.xy, r25.xyxx - mad r20.xz, r20.xxzx, cb6[400].zzwz, -r25.xxyx - add r26.xyzw, r20.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r27.xyzw, r26.xxzz, r26.xxzz - add r25.zw, -r20.xxxz, l(0.000000, 0.000000, 1.000000, 1.000000) - min r26.xz, r20.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r28.xy, r20.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy - add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r20.xz, r27.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r20.xxzx - mul r30.xy, r20.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r20.xz, -r26.xxzx, r26.xxzx, r25.zzwz - add r20.xz, r20.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) - mul r31.xy, r20.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r20.xz, r26.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) - mov r30.z, r31.x - mov r30.w, r20.x - mov r29.z, r28.x - mov r29.w, r27.x - add r26.xyzw, r29.zwxz, r30.zwxz - mov r31.z, r30.y - mov r31.w, r20.z - mov r28.z, r29.y - mov r28.w, r27.z - add r27.xyz, r28.zywz, r31.zywz - div r29.xyz, r29.xzwx, r26.zwyz - add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r29.xyz, r29.xyzx, cb6[400].xxxx - div r28.xyz, r28.zywz, r27.xyzx - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyw, r28.xyxz, cb6[400].yyyy - mul r30.xyzw, r26.zwyz, r27.xxxy - mov r29.w, r28.x - mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r29.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r12.w, r31.xyxx, t9.xxxx, s4, r20.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r31.zwzz, t9.xxxx, s4, r20.w - mul r15.w, r15.w, r30.y - mad r12.w, r30.x, r12.w, r15.w - mad r20.xz, r25.xxyx, cb6[400].xxyx, r29.zzwz - sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r20.xzxx, t9.xxxx, s4, r20.w - mad r12.w, r30.z, r15.w, r12.w - mov r28.z, r29.x - mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r28.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r31.xyxx, t9.xxxx, s4, r20.w - mad r12.w, r30.w, r15.w, r12.w - mul r30.xyzw, r26.xyzw, r27.yyzz - mov r28.xz, r29.yyzy - mad r29.xyzw, r25.xyxy, cb6[400].xyxy, r28.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r29.xyxx, t9.xxxx, s4, r20.w - mad r12.w, r30.x, r15.w, r12.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r29.zwzz, t9.xxxx, s4, r20.w - mad r12.w, r30.y, r15.w, r12.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r31.zwzz, t9.xxxx, s4, r20.w - mad r12.w, r30.z, r15.w, r12.w - ige r15.w, r15.z, l(0) - or r21.xyw, r21.xyxw, r24.xyxz - or r16.w, r21.y, r21.x - or r16.w, r21.w, r16.w - and r17.w, r20.w, l(0x7fffffff) - ult r17.w, l(0x7f800000), r17.w - or r16.w, r16.w, r17.w - mad r24.xyzw, r25.xyxy, cb6[400].xyxy, r28.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r24.xyxx, t9.xxxx, s4, r20.w - mad r12.w, r30.w, r17.w, r12.w - mul r17.w, r26.y, r27.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r24.zwzz, t9.xxxx, s4, r20.w - mad r12.w, r17.w, r18.w, r12.w - add r12.w, r12.w, l(-1.000000) - mad r12.w, cb6[r15.z + 288].w, r12.w, l(1.000000) - movc r12.w, r16.w, l(1.000000), r12.w - movc r12.w, r15.w, r12.w, l(1.000000) - else - mov r12.w, l(1.000000) - endif - else - mov r12.w, l(1.000000) - endif - mul r11.y, r11.y, r12.w - mov r19.xyz, l(0,0,0,0) - endif - add r23.xyz, r19.xyzx, r23.xyzx - mov r11.z, r14.w - endloop - mov r6.w, r11.y - add r22.xyz, r22.xyzx, r23.xyzx - iadd r7.w, r7.w, l(1) -endloop -// === Glass Fix: Reduce clustered lights and overall brightness === -lt r37.x, l(0.500000), cb13[13].z -if_nz r37.x - mul r22.xyz, r22.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r2.xyz, r2.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) -endif -dp3 r0.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r1.xzw, -r0.xxxx, r2.xxyz -mad r0.xyz, cb0[184].wwww, r1.xzwx, r0.xxxx -mad r1.xzw, r22.xxyz, r6.wwww, r16.xxyz -mul r2.xyz, cb2[20].zzzz, cb2[21].xyzx -add r2.w, -r10.w, l(1.000000) -add r3.x, l(1.000000), -cb2[20].y -max r3.x, r3.x, l(0.010000) -div_sat r2.w, r2.w, r3.x -mad r2.xyz, r8.xyzx, r2.xyzx, -r1.xzwx -mad r1.xzw, r2.wwww, r2.xxyz, r1.xxzw -mad r0.xyz, r0.xyzx, cb0[184].xyzx, r1.xzwx -mad r1.x, r1.y, cb0[156].w, cb0[157].w -mad r1.z, r0.w, cb0[154].w, -cb0[153].w -max r1.xz, r1.xxzx, l(0.010000, 0.000000, 0.000000, 0.000000) -mul r1.w, r1.x, l(-1.442695) -exp r1.w, r1.w -add r1.w, -r1.w, l(1.000000) -div r1.x, r1.w, r1.x -mad r1.w, r1.y, cb0[156].w, cb0[158].w -mul r1.w, r1.w, l(1.442695) -exp r1.w, r1.w -mul r1.x, r1.w, r1.x -mul r1.x, r1.x, -r1.z -mul r1.xzw, r1.xxxx, cb0[155].xxyz -mul r1.xzw, r1.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) -exp r1.xzw, r1.xxzw -dp3 r2.x, -r5.xyzx, cb0[154].xyzx -mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.z, r2.xxxx, cb0[155].wwww -add r2.y, -r2.z, r2.y -lt r2.z, l(0.000000), cb0[163].z -if_nz r2.z - and r13.w, l(7), cb0[108].w - imad r3.xyz, r13.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r2.z, r3.y, r3.z, r3.x - imad r2.w, r3.z, r2.z, r3.y - imad r3.x, r2.z, r2.w, r3.z - imad r6.x, r2.w, r3.x, r2.z - dp3 r2.z, -r5.xyzx, -r4.xyzx - add r3.y, r1.y, -cb0[44].y - lt r3.z, l(5.960464478E-08), r2.z - div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z - and r2.z, r2.z, r3.z - mul r2.z, r2.z, cb0[163].w - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w - mul r3.w, r2.z, r3.z - mad r4.x, r3.w, r3.y, cb0[44].y - mad r3.y, -r3.w, r3.y, r3.y - mul r3.w, r3.y, cb0[159].z - mul r3.y, r3.y, cb0[162].x - max r3.yw, r3.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - add r4.y, r4.x, -cb0[159].x - mul r4.y, r4.y, cb0[159].z - max r4.y, r4.y, l(-127.000000) - exp r4.y, -r4.y - mul r4.y, r4.y, cb0[159].y - lt r4.z, l(5.960464478E-08), |r3.w| - exp r4.w, -r3.w - add r4.w, -r4.w, l(1.000000) - div r4.w, r4.w, r3.w - mad r3.w, -r3.w, l(0.240226507), l(0.693147182) - movc r3.w, r4.z, r4.w, r3.w - add r4.x, r4.x, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.z, l(5.960464478E-08), |r3.y| - exp r4.w, -r3.y - add r4.w, -r4.w, l(1.000000) - div r4.w, r4.w, r3.y - mad r3.y, -r3.y, l(0.240226507), l(0.693147182) - movc r3.y, r4.z, r4.w, r3.y - mul r3.y, r3.y, r4.x - mad r3.y, r4.y, r3.w, r3.y - mad r2.z, -r2.z, r3.z, l(1.000000) - mul r2.z, r0.w, r2.z - mul r2.z, r2.z, r3.y - exp r2.z, -r2.z - min r2.z, r2.z, l(1.000000) - max r2.z, r2.z, cb0[161].w - mad_sat r3.yz, r0.wwww, cb0[160].yywy, cb0[160].xxzx - add r2.z, r2.z, r3.y - add r2.z, r3.z, r2.z - min r2.z, r2.z, l(1.000000) - imad r6.y, r3.x, r6.x, r2.w - ushr r3.xy, r6.xyxx, l(16, 16, 0, 0) - utof r3.xy, r3.xyxx - mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mad r3.xy, r3.xyxx, cb0[167].wwww, r15.xyxx - mul r3.xy, r3.xyxx, cb0[165].xyxx - mad r2.w, r13.z, cb0[164].x, cb0[164].y - log r2.w, r2.w - mul r2.w, r2.w, cb0[164].z - div r3.z, r2.w, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t20.xyzw, s1, l(0.000000) - add r2.w, r13.z, -cb0[166].z - mul_sat r2.w, r2.w, l(1000000.000000) - add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r2.wwww, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r2.w, -r2.z, l(1.000000) - mul r4.xyz, r2.wwww, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r2.z, r2.z, r3.w -else - add r1.y, r1.y, -cb0[44].y - mul r2.w, r1.y, cb0[159].z - max r2.w, r2.w, l(-127.000000) - mul r1.y, r1.y, cb0[162].x - max r1.y, r1.y, l(-127.000000) - add r3.w, cb0[44].y, -cb0[159].x - mul r3.w, r3.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[159].y - lt r4.x, l(5.960464478E-08), |r2.w| - exp r4.y, -r2.w - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r2.w - mad r2.w, -r2.w, l(0.240226507), l(0.693147182) - movc r2.w, r4.x, r4.y, r2.w - add r4.x, cb0[44].y, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.y, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r4.y, r4.z, r1.y - mul r1.y, r1.y, r4.x - mad r1.y, r3.w, r2.w, r1.y - mul r1.y, r0.w, r1.y - exp r1.y, -r1.y - min r1.y, r1.y, l(1.000000) - max r1.y, r1.y, cb0[161].w - mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.w, r1.y, r4.x - add r0.w, r4.y, r0.w - min r2.z, r0.w, l(1.000000) - add r0.w, -r2.z, l(1.000000) - mul r3.xyz, r0.wwww, cb0[161].xyzx -endif -mul r4.xyz, r1.xzwx, r2.zzzz -mad r0.w, r2.x, r2.x, l(1.000000) -mul r0.w, r0.w, l(0.0596831031) -mad r5.xyz, cb0[156].xyzx, r0.wwww, cb0[158].xyzx -mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r1.y, r2.y, l(12.566371) -sqrt r2.x, r2.y -mul r1.y, r1.y, r2.x -max r1.y, r1.y, l(0.001000) -div r0.w, r0.w, r1.y -mad_sat r2.xyw, cb0[157].xyxz, r0.wwww, r5.xyxz -mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) -add r1.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r1.xyz, r1.xyzx, r2.xywx -mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx -// === Glass Transparency Fix === -lt r37.x, l(0.500000), cb13[13].z -if_nz r37.x - add r37.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r37.xyz, r37.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r4.xyzx - mul r38.xyz, r1.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000) - mad r10.xyz, r0.xyzx, r37.xyzx, r38.xyzx -else - mad r10.xyz, r0.xyzx, r4.xyzx, r1.xyzx -endif -mul r0.xy, r12.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) -sqrt r0.xy, |r0.xyxx| -sqrt r0.xy, r0.xyxx -mov r12.z, -r12.y -lt r0.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r12.xxxz -lt r1.xy, r12.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r0.zw, -r0.zzzw, r1.xxxy -itof r0.zw, r0.zzzw -mul r0.xy, r0.zwzz, r0.xyxx -mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -ishl r0.z, v7.x, l(4) -max r0.z, cb1[r0.z + 4].z, cb1[r0.z + 4].y -add r0.z, r0.z, l(-0.100000024) -lt r0.w, l(0.000000), r0.z -lt r0.z, r0.z, l(0.000000) -iadd r0.z, -r0.w, r0.z -itof r0.z, r0.z -mov_sat r0.z, r0.z -add r1.xy, -r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mad r0.xy, r0.zzzz, r1.xyxx, r0.xyxx -min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) -dp3 r0.x, r10.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mul r0.x, r10.w, r0.x -max r0.x, r10.w, r0.x -mul_sat r0.x, r0.x, l(10.000000) -lt r0.x, l(0.500000), r0.x -and o1.z, r0.x, l(0x3f800000) -// === Glass Highlight Compression === -lt r37.x, l(0.500000), cb13[13].z -if_nz r37.x - dp3 r37.y, r10.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) - lt r37.z, l(0.500000), r37.y - if_nz r37.z - add r37.w, r37.y, l(-0.500000) - mul r37.w, r37.w, l(-0.666667) - exp r37.w, r37.w - add r37.w, -r37.w, l(1.000000) - mad r37.w, r37.w, l(1.500000), l(0.500000) - max r38.x, r37.y, l(0.001000) - div r38.x, r37.w, r38.x - mul r10.xyz, r10.xyzx, r38.xxxx - endif -endif -mov o0.xyzw, r10.xyzw -mov o1.w, l(0) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0x424F9536.ps_5_0.asm b/src/games/endfield/glass/0x424F9536.ps_5_0.asm deleted file mode 100644 index 67e0d77e7d..0000000000 --- a/src/games/endfield/glass/0x424F9536.ps_5_0.asm +++ /dev/null @@ -1,1833 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Fri Feb 6 19:58:05 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xyz -// TEXCOORD 0 xyzw 1 NONE float xyzw -// TEXCOORD 1 xyzw 2 NONE float xy -// TEXCOORD 2 xyz 3 NONE float xyz -// TEXCOORD 3 xyzw 4 NONE float xyzw -// TEXCOORD 4 xyzw 5 NONE float xyzw -// TEXCOORD 5 xyz 6 NONE float xyz -// TEXCOORD 6 xyz 7 NONE float xyz -// TEXCOORD 7 x 8 NONE uint x -// SV_IsFrontFace 0 x 9 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[244], immediateIndexed -dcl_constantbuffer CB1[4085], dynamicIndexed -dcl_constantbuffer CB2[22], immediateIndexed -dcl_constantbuffer CB3[259], dynamicIndexed -dcl_constantbuffer CB4[3], immediateIndexed -dcl_constantbuffer CB5[2054], dynamicIndexed -dcl_constantbuffer CB6[715], dynamicIndexed -dcl_constantbuffer CB7[160], dynamicIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_sampler s5, mode_default -dcl_sampler s6, mode_default -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2darray (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture3d (float,float,float,float) t5 -dcl_resource_texture3d (float,float,float,float) t6 -dcl_resource_texture3d (float,float,float,float) t7 -dcl_resource_texture3d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture3d (float,float,float,float) t10 -dcl_resource_texture3d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture2d (float,float,float,float) t17 -dcl_resource_texture2d (float,float,float,float) t18 -dcl_input_ps_siv linear noperspective v0.xyz, position -dcl_input_ps linear v1.xyzw -dcl_input_ps linear v2.xy -dcl_input_ps linear v3.xyz -dcl_input_ps linear v4.xyzw -dcl_input_ps linear v5.xyzw -dcl_input_ps linear v6.xyz -dcl_input_ps linear v7.xyz -dcl_input_ps constant v8.x -dcl_input_ps_sgv constant v9.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 38 -mul r0.xy, v0.xyxx, cb0[82].zwzz -ftou r1.xy, v0.xyxx -mad r0.zw, r0.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -mul r2.xyzw, -r0.wwww, cb0[25].xyzw -mad r2.xyzw, cb0[24].xyzw, r0.zzzz, r2.xyzw -mad r2.xyzw, cb0[26].xyzw, v0.zzzz, r2.xyzw -add r2.xyzw, r2.xyzw, cb0[27].xyzw -div r2.xyz, r2.xyzx, r2.wwww -mul r0.z, r2.y, cb0[1].z -mad r0.z, cb0[0].z, r2.x, r0.z -mad r0.z, cb0[2].z, r2.z, r0.z -add r0.z, r0.z, cb0[3].z -mov r1.z, |r0.z| -lt r0.z, l(0.000000), v4.w -movc r0.z, r0.z, l(1.000000), l(-1.000000) -eq r0.w, l(0.000000), cb0[86].w -add r3.xyz, -r2.xyzx, cb0[44].xyzx -mov r4.x, cb0[0].z -mov r4.y, cb0[1].z -mov r4.z, cb0[2].z -movc r3.xyz, r0.wwww, r3.xyzx, r4.xyzx -dp3 r0.w, r3.xyzx, r3.xyzx -max r1.w, r0.w, l(9.999999939E-09) -rsq r1.w, r1.w -mul r5.xyz, r1.wwww, r3.xyzx -mul r0.w, r0.w, r1.w -add r6.xyzw, -v5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000) -mad r6.xyzw, cb2[1].yyyy, r6.xyzw, v5.xyzw -mul r6.xyzw, r6.xyzw, cb2[4].xyzw -mul r6.xyzw, r6.xyzw, cb2[1].zzzw -add r3.w, l(1.000000), -cb2[3].x -mad r3.w, cb0[109].x, cb2[3].x, r3.w -div r6.xyz, r6.xyzx, r3.wwww -mul r7.xyzw, v2.xxyy, cb2[1].xxxx -mad r8.xyzw, v1.zzww, cb2[1].xxxx, -r7.xyzw -add r8.xyzw, r8.xyzw, v2.xxyy -mul r9.xyzw, r8.yyww, cb2[8].yyyy -mad r9.xyzw, v1.xxyy, cb2[8].xxxx, r9.xyzw -mad r9.xyzw, cb2[6].xxyy, cb0[183].wwww, r9.xyzw -mad r9.xyzw, cb2[6].zzww, r7.yyyy, r9.xyzw -add r9.xyzw, r9.xyzw, l(-0.500000, -0.500000, -0.500000, -0.500000) -mul r9.xyzw, r9.xyzw, cb2[7].xyzw -add r7.xy, r9.zwzz, r9.xyxx -add r7.xy, r7.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mad r7.xy, r7.xyxx, cb2[9].xyxx, cb2[9].zwzz -ishl r3.w, v8.x, l(4) -add r4.w, cb1[r3.w + 3].y, cb1[r3.w + 3].x -add r4.w, r4.w, cb1[r3.w + 3].z -frc r4.w, r4.w -mul r5.w, r4.w, cb2[21].z -min r5.w, r5.w, l(0.500000) -add r5.w, r5.w, l(1.000000) -mul r7.z, r5.w, r7.y -mad r7.xy, cb2[21].zzzz, r4.wwww, r7.xzxx -add r4.w, l(1.000000), cb0[108].x -sample_b_indexable(texture2d)(float,float,float,float) r9.xyzw, r7.xyxx, t3.xyzw, s5, r4.w -mov r10.x, l(1.000000) -mov r10.w, r9.x -add r10.xyzw, -r9.xyzw, r10.xxxw -mad r9.xyzw, cb2[5].yyyy, r10.xyzw, r9.xyzw -mul r6.xyzw, r6.xyzw, r9.xyzw -mul r8.xyzw, r8.xyzw, cb2[18].yyyy -mad r8.xyzw, v1.xxyy, cb2[18].xxxx, r8.xyzw -mad r8.xyzw, cb2[16].xxyy, cb0[183].wwww, r8.xyzw -mad r7.xyzw, cb2[16].zzww, r7.wwww, r8.xyzw -add r7.xyzw, r7.xyzw, l(-0.500000, -0.500000, -0.500000, -0.500000) -mul r7.xyzw, r7.xyzw, cb2[17].xyzw -add r7.xy, r7.zwzz, r7.xyxx -add r7.xy, r7.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mad r7.xy, r7.xyxx, cb2[15].xyxx, cb2[15].zwzz -sample_b_indexable(texture2d)(float,float,float,float) r7.xyz, r7.xyxx, t4.xywz, s6, cb0[108].x -mul r7.x, r7.x, r7.z -mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r4.w, r7.xyxx, r7.xyxx -min r4.w, r4.w, l(1.000000) -add r4.w, -r4.w, l(1.000000) -sqrt r4.w, r4.w -max r8.z, r4.w, l(1.000000017E-16) -mul r8.xy, r7.xyxx, cb2[14].xxxx -dp3 r4.w, r8.xyzx, r8.xyzx -rsq r4.w, r4.w -mul r7.xyz, r4.wwww, r8.xyzx -mul r8.xyz, v3.zxyz, v4.yzxy -mad r8.xyz, v3.yzxy, v4.zxyz, -r8.xyzx -mul r8.xyz, r0.zzzz, r8.xyzx -mul r8.xyz, r7.yyyy, r8.xyzx -mad r7.xyw, r7.xxxx, v4.xyxz, r8.xyxz -mad r7.xyz, r7.zzzz, v3.xyzx, r7.xywx -utof r8.xy, r1.xyxx -mul r8.xy, r8.xyxx, cb0[82].zwzz -mad r8.xy, r8.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r0.x, r0.xyxx, t1.xyzw, s0, l(0.000000) -mul r9.xyzw, -r8.yyyy, cb0[25].xyzw -mad r8.xyzw, cb0[24].xyzw, r8.xxxx, r9.xyzw -mad r8.xyzw, cb0[26].xyzw, r0.xxxx, r8.xyzw -add r8.xyzw, r8.xyzw, cb0[27].xyzw -movc r7.xyz, v9.xxxx, r7.xyzx, -r7.xyzx -ne r0.x, l(0.000000), cb2[11].x -add r0.yz, r1.zzzz, -cb2[11].yywy -add r4.w, -cb2[11].y, cb2[11].z -div_sat r0.y, r0.y, r4.w -add r4.w, -cb2[11].w, cb2[12].x -div_sat r0.z, r0.z, r4.w -mul r0.y, r0.z, r0.y -movc r0.x, r0.x, r0.y, l(1.000000) -mul r0.x, r0.x, r6.w -div r8.xyz, r8.xyzx, r8.wwww -mul r0.y, r8.y, cb0[1].z -mad r0.y, cb0[0].z, r8.x, r0.y -mad r0.y, cb0[2].z, r8.z, r0.y -add r0.y, r0.y, cb0[3].z -add r0.y, -r1.z, |r0.y| -add r0.y, r0.y, cb2[13].y -div_sat r0.y, r0.y, cb2[13].x -mul r0.x, r0.y, r0.x -add r0.y, v5.w, l(-1.000000) -mad r0.y, cb2[21].x, r0.y, l(1.000000) -mul r0.x, r0.y, r0.x -dp3 r0.y, v3.xyzx, r5.xyzx -log r0.y, |r0.y| -mul r0.y, r0.y, cb2[19].y -exp r0.y, r0.y -add r0.y, r0.y, l(-1.000000) -mad r0.y, cb2[19].w, r0.y, l(1.000000) -mul r0.x, r0.y, r0.x -add r0.y, l(1.000000), -cb1[r3.w + 4].y -mul_sat r0.x, r0.y, r0.x -max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r6.xyz, r6.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) -mul r8.xyz, r6.xyzx, cb2[20].xxxx -add r0.y, l(1.000000), cb2[0].w -add_sat r0.y, r0.y, -cb2[0].x -lt r0.y, l(0.500000), r0.y -max r0.z, v6.z, l(9.999999939E-09) -div r9.xy, v6.xyxx, r0.zzzz -max r0.z, v7.z, l(9.999999939E-09) -div r9.zw, v7.xxxy, r0.zzzz -add r9.xy, -r9.zwzz, r9.xyxx -mul r10.xy, r9.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) -sqrt r10.xy, |r10.xyxx| -sqrt r10.xy, r10.xyxx -mov r9.z, -r9.y -lt r9.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xxxz -lt r9.xz, r9.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r9.xy, -r9.ywyy, r9.xzxx -itof r9.xy, r9.xyxx -mul r9.xy, r9.xyxx, r10.xyxx -mad r9.xy, r9.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -and r0.yz, r0.yyyy, r9.xxyx -mul r3.w, l(0.080000), cb2[20].w -mul r9.xyz, r8.xyzx, cb2[20].yyyy -mad r9.xyz, r6.xyzx, cb2[20].xxxx, -r9.xyzx -mad r3.w, -r3.w, cb2[20].y, r3.w -mad r8.xyz, r8.xyzx, cb2[20].yyyy, r3.wwww -dp3 r3.w, r7.xyzx, r5.xyzx -mad r10.xyzw, cb2[20].zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r4.w, r10.x, r10.x -max r3.w, r3.w, l(0.000000) -mul r5.w, r3.w, l(-9.280000) -exp r5.w, r5.w -min r4.w, r4.w, r5.w -mad r4.w, r4.w, r10.x, r10.y -mad r10.xy, r4.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r10.zwzz -eq r4.w, l(1.000000), cb0[113].y -mul r11.xyzw, r2.yyyy, cb0[241].xyzw -mad r11.xyzw, cb0[240].xyzw, r2.xxxx, r11.xyzw -mad r11.xyzw, cb0[242].xyzw, r2.zzzz, r11.xyzw -add r11.xyzw, r11.xyzw, cb0[243].xyzw -div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w -mul r11.xyz, r11.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) -mul r11.xyz, r5.wwww, r11.xyzx -mad_sat r10.zw, r11.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) -mul r10.zw, r10.zzzw, cb0[82].xxxy -ftou r12.xy, r10.zwzz -mad r5.w, cb0[84].z, r11.z, cb0[84].w -div r12.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w -movc r11.xyz, r4.wwww, r12.xyzx, r1.xyzx -mad r1.xyz, r7.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r2.xyzx -mad r12.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r12.xyz, r1.xzyx, -r12.xyzx -max r4.w, |r12.y|, |r12.x| -add r4.w, r4.w, l(-464.000000) -mul_sat r4.w, r4.w, l(0.031250) -add r5.w, |r12.z|, l(-208.000000) -mul_sat r5.w, r5.w, l(0.031250) -max r4.w, r4.w, r5.w -ne r5.w, l(0.000000), cb0[210].w -lt r6.w, r4.w, l(1.000000) -and r5.w, r5.w, r6.w -if_nz r5.w - mad r12.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r12.xyz, r1.xzyx, -r12.xyzx - max r5.w, |r12.y|, |r12.x| - add r5.w, r5.w, l(-29.000000) - mul_sat r5.w, r5.w, l(0.500000) - add r6.w, |r12.z|, l(-13.000000) - mul_sat r6.w, r6.w, l(0.500000) - max r5.w, r5.w, r6.w - lt r6.w, r5.w, l(1.000000) - if_nz r6.w - mad r12.xyz, r1.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r13.xyz, r12.xyzx, cb0[211].xyzx - round_ni r13.xyz, r13.xyzx - mad r12.xyz, r12.xyzx, cb0[211].xyzx, -r13.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r13.xyz, r12.xyzx, t6.xyzw, s2, l(0.000000) - add r6.w, -r5.w, l(1.000000) - mul r8.w, l(0.500000), cb0[211].y - mad r9.w, -cb0[211].y, l(0.500000), l(1.000000) - max r8.w, r8.w, r12.y - min r8.w, r9.w, r8.w - mul r12.w, r8.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyzw, r12.xwzx, t7.xyzw, s1, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r13.xxxx, r14.xyzx - add r14.xyz, r12.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t7.xyzw, s1, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r13.yyyy, r14.xyzx - add r12.xyz, r12.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r12.xyzx, t7.xyzw, s1, l(0.000000) - mad r12.xyz, r12.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r12.xyz, r13.zzzz, r12.xyzx - mad r8.w, r14.w, r6.w, r4.w - mov r12.w, r13.z - mul r12.xyzw, r6.wwww, r12.xyzw - mov r16.w, r13.y - mul r14.xyzw, r6.wwww, r16.xyzw - mov r15.w, r13.x - mul r13.xyzw, r6.wwww, r15.xyzw - else - mov r12.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r8.w, r4.w - endif - mad r15.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r15.xyz, r1.xzyx, -r15.xyzx - max r6.w, |r15.y|, |r15.x| - add r6.w, r6.w, l(-116.000000) - mul_sat r6.w, r6.w, l(0.125000) - add r9.w, |r15.z|, l(-52.000000) - mul_sat r9.w, r9.w, l(0.125000) - max r6.w, r6.w, r9.w - lt r9.w, r6.w, l(1.000000) - if_nz r9.w - mad r15.xyz, r1.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r16.xyz, r15.xyzx, cb0[211].xyzx - round_ni r16.xyz, r16.xyzx - mad r15.xyz, r15.xyzx, cb0[211].xyzx, -r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r15.xyzx, t8.xyzw, s2, l(0.000000) - add r9.w, -r6.w, l(1.000000) - mul r5.w, r5.w, r9.w - mul r9.w, l(0.500000), cb0[211].y - mad r10.z, -cb0[211].y, l(0.500000), l(1.000000) - max r9.w, r9.w, r15.y - min r9.w, r10.z, r9.w - mul r15.w, r9.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t9.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r16.xxxx, r17.xyzx - add r17.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t9.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r16.yyyy, r17.xyzx - add r15.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t9.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r16.zzzz, r15.xyzx - mad r8.w, r17.w, r5.w, r8.w - mov r15.w, r16.z - mad r12.xyzw, r15.xyzw, r5.wwww, r12.xyzw - mov r19.w, r16.y - mad r14.xyzw, r19.xyzw, r5.wwww, r14.xyzw - mov r18.w, r16.x - mad r13.xyzw, r18.xyzw, r5.wwww, r13.xyzw - endif - lt r5.w, l(0.000000), r6.w - if_nz r5.w - mad r1.xyz, r1.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r15.xyz, r1.xyzx, cb0[211].xyzx - mul r16.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r1.xyz, r1.xyzx, cb0[211].xyzx, -r15.xyzx - mad r15.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r1.xyz, r16.xyzx, r1.xyzx - min r17.xyz, r15.xyzx, r1.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t10.yzwx, s2, l(0.000000) - add r1.x, -r4.w, l(1.000000) - mul r1.x, r1.x, r6.w - max r1.y, r16.y, r17.y - min r1.y, r15.y, r1.y - mul r17.w, r1.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r17.xwzx, t11.xyzw, s1, l(0.000000) - add r16.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t11.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r18.yyyy, r16.xyzx - mov r16.w, r18.y - mad r12.xyzw, r16.xyzw, r1.xxxx, r12.xyzw - add r16.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t11.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r18.xxxx, r16.xyzx - mov r16.w, r18.x - mad r14.xyzw, r16.xyzw, r1.xxxx, r14.xyzw - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r15.xyzx - mad r13.xyzw, r18.xyzw, r1.xxxx, r13.xyzw - mad r8.w, r15.w, r1.x, r8.w - endif - mad_sat r1.x, r8.w, l(2.000000), l(-1.000000) - add r15.x, -r4.w, r1.x - add r1.x, r4.w, r1.x - mul r15.y, r1.x, l(0.500000) -else - mov r12.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r15.xy, l(0,1.000000,0,0) -endif -mul r16.xyzw, r15.yyyx, cb0[213].xyzw -mad r16.y, r16.w, l(0.500000), r16.y -mul r1.xy, r15.yxyy, cb0[213].wyww -mad r16.w, r1.y, l(0.375000), r1.x -add r13.xyzw, r13.xyzw, r16.xyzw -mul r16.xyzw, r15.yyyx, cb0[214].xyzw -mad r16.y, r16.w, l(0.500000), r16.y -mul r1.xy, r15.yxyy, cb0[214].wyww -mad r16.w, r1.y, l(0.375000), r1.x -add r14.xyzw, r14.xyzw, r16.xyzw -mul r16.xyzw, r15.yyyx, cb0[215].xyzw -mad r16.y, r16.w, l(0.500000), r16.y -mul r1.xy, r15.yxyy, cb0[215].wyww -mad r16.w, r1.y, l(0.375000), r1.x -add r12.xyzw, r12.xyzw, r16.xyzw -dp3 r1.x, r13.xyzx, r7.xyzx -add r1.x, r13.w, r1.x -max r1.x, r1.x, l(0.000000) -dp3 r4.w, r14.xyzx, r7.xyzx -add r4.w, r14.w, r4.w -max r1.y, r4.w, l(0.000000) -dp3 r4.w, r12.xyzx, r7.xyzx -add r4.w, r12.w, r4.w -max r1.z, r4.w, l(0.000000) -mul r12.xyz, r9.xyzx, r1.xyzx -mul r10.zw, r12.xxxy, cb0[111].xxxx -dp3 r4.w, -r5.xyzx, r7.xyzx -add r4.w, r4.w, r4.w -mad r13.xyz, r7.xyzx, -r4.wwww, -r5.xyzx -add r4.w, l(-1.000000), cb0[113].x -max r5.w, l(0.001000), cb2[20].z -log r5.w, r5.w -mad r5.w, -r5.w, l(1.200000), l(1.000000) -add r4.w, r4.w, -r5.w -utof r14.xy, r11.xyxx -mul r14.zw, r14.xxxy, cb3[0].wwww -round_ni r14.zw, r14.zzzw -add r5.w, r11.z, -cb3[2].y -round_ni r5.w, r5.w -add r6.w, l(-1.000000), cb3[1].x -max r8.w, r5.w, l(0.000000) -min r6.w, r6.w, r8.w -ge r5.w, r6.w, r5.w -mad r8.w, r14.w, cb3[0].x, r14.z -ftoi r8.w, r8.w -iadd r8.w, r8.w, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r8.w, r8.w, l(0), t0.xxxx -ftoi r6.w, r6.w -iadd r6.w, r6.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r6.w, r6.w, l(0), t0.xxxx -and r6.w, r6.w, r8.w -and r5.w, r5.w, r6.w -mul r1.xyz, r1.xyzx, cb0[111].xxxx -dp3 r1.x, r1.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r2.w, l(1.000000) -mov r7.w, l(1.000000) -mov r15.xyz, l(0,0,0,0) -mov r1.y, l(1.000000) -mov r1.z, r5.w -mov r6.w, l(0) -loop - lt r8.w, l(0.010000), r1.y - ine r9.w, r1.z, l(0) - and r9.w, r8.w, r9.w - if_nz r9.w - firstbit_lo r9.w, r1.z - ishl r12.w, l(1), r9.w - xor r1.z, r1.z, r12.w - ishl r9.w, r9.w, l(3) - dp4 r16.x, cb3[r9.w + 6].xyzw, r2.xyzw - dp4 r16.y, cb3[r9.w + 7].xyzw, r2.xyzw - dp4 r16.z, cb3[r9.w + 8].xyzw, r2.xyzw - ge r17.xyz, cb3[r9.w + 5].xyzx, |r16.xyzx| - and r12.w, r17.y, r17.x - and r12.w, r17.z, r12.w - if_nz r12.w - mul r12.w, l(0.100000), cb3[r9.w + 5].x - mul r17.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r14.zw, r17.xxxy, r17.xxxy - add r17.xyw, -|r16.xyxz|, cb3[r9.w + 5].xyxz - mul r17.xyw, r17.xyxw, cb3[r9.w + 9].xyxz - eq r13.w, l(1.000000), cb3[r9.w + 10].x - if_nz r13.w - dp3 r18.x, cb3[r9.w + 6].xyzx, r13.xyzx - dp3 r18.y, cb3[r9.w + 7].xyzx, r13.xyzx - dp3 r18.z, cb3[r9.w + 8].xyzx, r13.xyzx - add r19.xyz, -r16.xyzx, cb3[r9.w + 5].xyzx - div r19.xyz, r19.xyzx, r18.xyzx - add r20.xyz, -r16.xyzx, -cb3[r9.w + 5].xyzx - div r20.xyz, r20.xyzx, r18.xyzx - lt r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyzx - movc r19.xyz, r21.xyzx, r19.xyzx, r20.xyzx - min r13.w, r19.y, r19.x - min r13.w, r19.z, r13.w - mad r16.xyz, r18.xyzx, r13.wwww, r16.xyzx - else - mov r16.xyz, r13.xyzx - endif - dp3 r13.w, r16.xyzx, r16.xyzx - rsq r13.w, r13.w - mul r16.xyz, r13.wwww, r16.xyzx - lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - lt r19.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r18.xyz, -r18.xyzx, r19.xyzx - itof r18.xyz, r18.xyzx - dp3 r13.w, r16.xyzx, r18.xyzx - div r16.xyz, r16.xyzx, r13.wwww - lt r13.w, r16.z, l(0.000000) - add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r16.zw, r16.zzzw, r18.xxxy - movc r16.xy, r13.wwww, r16.zwzz, r16.xyxx - dp4 r13.w, cb3[r9.w + 4].xyzw, r7.xyzw - max r13.w, r13.w, l(0.000000) - max r13.w, r13.w, l(0.000100) - min r15.w, r17.w, r17.y - min r15.w, r15.w, r17.x - add r14.z, r14.w, r14.z - mad r14.z, r17.z, r17.z, r14.z - mad r12.w, r12.w, r12.w, -r14.z - mul r12.w, r12.w, cb3[r9.w + 9].x - mul r12.w, r12.w, cb3[r9.w + 9].x - add r14.z, l(1.000000), -cb3[r9.w + 10].y - mul r12.w, r12.w, r14.z - mul r12.w, r12.w, l(100.000000) - mad_sat r12.w, r15.w, cb3[r9.w + 10].y, r12.w - mul r14.z, r12.w, cb3[r9.w + 10].w - mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r16.xy, r16.xyxx, cb3[1].wwww, cb3[2].wwww - mov r16.z, cb3[r9.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t2.xyzw, s3, r4.w - mul r16.xyz, r16.xyzx, cb3[r9.w + 9].wwww - div r14.w, r1.x, r13.w - min r14.w, |r14.w|, l(1.000000) - mad r14.w, r14.w, l(2.000000), r1.x - add r13.w, r13.w, l(2.000000) - div r13.w, r14.w, r13.w - add r13.w, r13.w, l(-1.000000) - mad r13.w, r13.w, cb0[112].w, l(1.000000) - mul r16.xyz, r13.wwww, r16.xyzx - mul r16.xyz, r14.zzzz, r16.xyzx - mad r15.xyz, r16.xyzx, r1.yyyy, r15.xyzx - mad r9.w, -r12.w, cb3[r9.w + 10].w, l(1.000000) - mul r1.y, r1.y, r9.w - endif - mov r6.w, l(-1) - continue - else - mov r6.w, r8.w - break - endif - mov r6.w, r8.w -endloop -if_nz r6.w - dp3 r1.z, r13.xyzx, r13.xyzx - rsq r1.z, r1.z - mul r16.xyz, r1.zzzz, r13.xyzx - lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - lt r18.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r17.xyz, -r17.xyzx, r18.xyzx - itof r17.xyz, r17.xyzx - dp3 r1.z, r16.xyzx, r17.xyzx - div r16.xyz, r16.xyzx, r1.zzzz - lt r1.z, r16.z, l(0.000000) - add r14.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r14.zw, r14.zzzw, r17.xxxy - movc r14.zw, r1.zzzz, r14.zzzw, r16.xxxy - mov r7.w, l(1.000000) - dp4 r1.z, cb3[3].xyzw, r7.xyzw - max r1.z, r1.z, l(0.000000) - max r1.z, r1.z, l(0.000100) - mad r14.zw, r14.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r16.xy, r14.zwzz, cb3[1].wwww, cb3[2].wwww - mov r16.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t2.xyzw, s3, r4.w - div r2.w, r1.x, r1.z - min r2.w, |r2.w|, l(1.000000) - mad r1.x, r2.w, l(2.000000), r1.x - add r1.z, r1.z, l(2.000000) - div r1.x, r1.x, r1.z - add r1.x, r1.x, l(-1.000000) - mad r1.x, r1.x, cb0[112].w, l(1.000000) - mul r16.xyz, r1.xxxx, r16.xyzx - mad r15.xyz, r16.xyzx, r1.yyyy, r15.xyzx -endif -mul r1.xyz, r15.xyzx, cb0[112].zzzz -// === Glass Fix: Reduce reflection probe intensity === -lt r36.x, l(0.500000), cb13[13].z -if_nz r36.x - mul r1.xyz, r1.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) -endif -mul r1.xyz, r1.xyzx, cb0[111].yyyy -mul_sat r2.w, r8.y, l(50.000000) -mul r2.w, r10.y, r2.w -mad r15.xyz, r8.xyzx, r10.xxxx, r2.wwww -mul r1.xyz, r1.xyzx, r15.xyzx -max r2.w, r0.x, l(0.010000) -div r1.xyz, r1.xyzx, r2.wwww -add r4.w, r10.w, r10.z -mad r4.w, r12.z, cb0[111].x, r4.w -mul r4.w, r4.w, l(0.333333343) -add r5.w, r1.y, r1.x -add r5.w, r1.z, r5.w -mul r6.w, r5.w, l(0.333333343) -mad r10.xyz, r12.xyzx, cb0[111].xxxx, -r4.wwww -mad r10.xyz, r10.xyzx, cb2[19].zzzz, r4.wwww -mad r1.xyz, -r5.wwww, l(0.333333343, 0.333333343, 0.333333343, 0.000000), r1.xyzx -mad r1.xyz, r1.xyzx, cb2[19].zzzz, r6.wwww -add r1.xyz, r1.xyzx, r10.xyzx -lt r4.w, cb6[35].w, l(0.990000) -if_nz r4.w - mad r10.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r2.xyzx - ftoi r4.w, cb6[35].x - ieq r5.w, r4.w, l(2) - movc r12.xyz, r5.wwww, cb6[20].xyzx, cb0[44].xyzx - add r12.xyz, r10.xyzx, -r12.xyzx - dp3 r5.w, r12.xyzx, r12.xyzx - add r5.w, -r5.w, cb6[34].w - mul_sat r5.w, r5.w, cb6[34].z - lt r6.w, l(0.000000), r5.w - if_nz r6.w - ilt r4.w, l(0), r4.w - if_nz r4.w - add r12.xyz, r10.xyzx, -cb6[20].xyzx - add r15.xyz, r10.xyzx, -cb6[21].xyzx - add r16.xyz, r10.xyzx, -cb6[22].xyzx - add r17.xyz, r10.xyzx, -cb6[23].xyzx - dp3 r12.x, r12.xyzx, r12.xyzx - dp3 r12.y, r15.xyzx, r15.xyzx - dp3 r12.z, r16.xyzx, r16.xyzx - dp3 r12.w, r17.xyzx, r17.xyzx - lt r15.x, r12.x, cb6[20].w - lt r15.y, r12.y, cb6[21].w - lt r15.z, r12.z, cb6[22].w - lt r15.w, r12.w, cb6[23].w - and r16.xyzw, r15.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) - movc r15.xyz, r15.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) - add r15.xyz, r15.xyzx, r16.yzwy - max r16.yzw, r15.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) - dp4 r4.w, r16.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) - add r4.w, -r4.w, l(4.000000) - max r4.w, r4.w, l(0.000000) - min r4.w, r4.w, l(3.000000) - add r6.w, r4.w, l(1.000000) - min r6.w, r6.w, l(3.000000) - ftou r6.w, r6.w - dp3 r7.w, r12.yzwy, icb[r6.w + 0].yzwy - div r6.w, r7.w, cb6[r6.w + 20].w - ge r7.w, r6.w, l(0.000000) - ge r6.w, l(1.000000), r6.w - and r6.w, r6.w, r7.w - if_nz r6.w - ftou r6.w, r4.w - add r14.zw, r14.xxxy, l(0.000000, 0.000000, 2.083000, 4.867000) - dp2 r7.w, r14.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) - frc r7.w, r7.w - mul r7.w, r7.w, l(52.982918) - frc r7.w, r7.w - dp4 r8.w, r12.xyzw, icb[r6.w + 0].xyzw - div r6.w, r8.w, cb6[r6.w + 20].w - sqrt r6.w, r6.w - add r6.w, r6.w, l(-0.900000) - mul r6.w, r6.w, l(12.000000) - ge r6.w, r6.w, r7.w - and r6.w, r6.w, l(0x3f800000) - add r4.w, r4.w, r6.w - endif - dp3 r6.w, r7.xyzx, cb5[0].xyzx - max r6.w, r6.w, l(0.000000) - min r6.w, r6.w, l(0.900000) - add r6.w, -r6.w, l(1.000000) - ftou r7.w, r4.w - ishl r8.w, r7.w, l(2) - mul r12.xy, r6.wwww, cb6[r7.w + 24].xyxx - max r6.w, r12.x, l(0.000000) - mad r12.xzw, -cb5[0].xxyz, r6.wwww, r10.xxyz - mad r12.xyz, r7.xyzx, r12.yyyy, r12.xzwx - mul r15.xyz, r12.yyyy, cb6[r8.w + 1].xyzx - mad r12.xyw, cb6[r8.w + 0].xyxz, r12.xxxx, r15.xyxz - mad r12.xyz, cb6[r8.w + 2].xyzx, r12.zzzz, r12.xywx - add r12.xyz, r12.xyzx, cb6[r8.w + 3].xyzx - ge r15.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r12.xyzx - ge r16.xyz, r12.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - or r15.xyz, r15.xyzx, r16.xyzx - or r6.w, r15.y, r15.x - or r6.w, r15.z, r6.w - and r7.w, r12.z, l(0x7fffffff) - ult r7.w, l(0x7f800000), r7.w - or r15.z, r6.w, r7.w - ftoi r4.w, r4.w - mad r12.xy, r12.xyxx, cb6[r4.w + 28].zwzz, cb6[r4.w + 28].xyxx - mad r14.zw, r12.xxxy, cb6[32].zzzw, l(0.000000, 0.000000, 0.500000, 0.500000) - round_ni r14.zw, r14.zzzw - mad r12.xy, r12.xyxx, cb6[32].zwzz, -r14.zwzz - add r16.xyzw, r12.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r17.xw, r16.xxxz, r16.xxxz - min r16.xz, r12.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r18.xy, r12.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r18.zw, r17.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r12.xxxy - add r12.xy, -r12.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mad r12.xy, -r16.xzxx, r16.xzxx, r12.xyxx - mad r16.xy, -r18.xyxx, r18.xyxx, r16.ywyy - mov r19.x, r18.z - mov r19.y, r12.x - mov r19.z, r16.x - mov r19.w, r17.x - mul r19.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r17.x, r18.w - mov r17.y, r12.y - mov r17.z, r16.y - mul r16.xyzw, r17.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r17.xyzw, r19.ywyw, r19.xzxz - add r18.xyzw, r16.yyww, r16.xxzz - div r12.xy, r19.ywyy, r17.zwzz - add r12.xy, r12.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) - mul r19.xy, r12.xyxx, cb6[32].xxxx - div r12.xy, r16.ywyy, r18.ywyy - add r12.xy, r12.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) - mul r19.zw, r12.xxxy, cb6[32].yyyy - mul r16.xyzw, r17.xyzw, r18.xyzw - mad r17.xyzw, r14.zwzw, cb6[32].xyxy, r19.xzyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r4.w, r17.xyxx, t12.xxxx, s4, r12.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r6.w, r17.zwzz, t12.xxxx, s4, r12.z - mul r6.w, r6.w, r16.y - mad r4.w, r16.x, r4.w, r6.w - mad r17.xyzw, r14.zwzw, cb6[32].xyxy, r19.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r6.w, r17.xyxx, t12.xxxx, s4, r12.z - mad r4.w, r16.z, r6.w, r4.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r6.w, r17.zwzz, t12.xxxx, s4, r12.z - mad r4.w, r16.w, r6.w, r4.w - movc r15.x, r15.z, l(1.000000), r4.w - else - mov r15.xz, l(1.000000,0,0,0) - endif - else - mov r15.xz, l(1.000000,0,0,0) - endif - lt r4.w, r5.w, l(1.000000) - if_nz r4.w - dp3 r4.w, r7.xyzx, cb5[0].xyzx - max r4.w, r4.w, l(0.000000) - min r4.w, r4.w, l(0.900000) - add r4.w, -r4.w, l(1.000000) - mul r12.xy, r4.wwww, cb6[584].xyxx - mad r12.xzw, -cb5[0].xxyz, r12.xxxx, r10.xxyz - mad r12.xyz, r7.xyzx, r12.yyyy, r12.xzwx - mul r14.zw, r12.yyyy, cb6[581].xxxy - mad r14.zw, cb6[580].xxxy, r12.xxxx, r14.zzzw - mad r14.zw, cb6[582].xxxy, r12.zzzz, r14.zzzw - add r14.zw, r14.zzzw, cb6[583].xxxy - lt r16.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r14.zwzz - and r4.w, r16.y, r16.x - lt r16.xy, r14.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000) - and r6.w, r16.y, r16.x - and r4.w, r4.w, r6.w - if_nz r4.w - mul r4.w, r14.w, cb6[585].z - round_ni r4.w, r4.w - add r4.w, r14.z, r4.w - mul r4.w, r4.w, cb6[585].y - ftou r4.w, r4.w - umin r4.w, r4.w, l(127) - and r6.w, l(0x0000ffff), cb6[r4.w + 587].x - f16tof32 r16.x, r6.w - ge r6.w, r16.x, l(0.000000) - if_nz r6.w - mov r17.x, cb6[576].x - mov r17.y, cb6[577].x - mov r17.z, cb6[578].x - mov r17.w, cb6[r4.w + 587].y - mov r12.w, l(1.000000) - dp4 r17.x, r17.xyzw, r12.xyzw - mov r18.x, cb6[576].y - mov r18.y, cb6[577].y - mov r18.z, cb6[578].y - mov r18.w, cb6[r4.w + 587].z - dp4 r17.y, r18.xyzw, r12.xyzw - mov r18.x, cb6[576].z - mov r18.y, cb6[577].z - mov r18.z, cb6[578].z - mov r18.w, cb6[r4.w + 587].w - dp4 r6.w, r18.xyzw, r12.xyzw - lt r12.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyxx - lt r7.w, l(0.000000), r6.w - and r8.w, r12.y, r12.x - and r7.w, r7.w, r8.w - lt r12.xy, r17.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - lt r8.w, r6.w, l(1.000000) - and r9.w, r12.y, r12.x - and r8.w, r8.w, r9.w - and r7.w, r7.w, r8.w - if_nz r7.w - ushr r4.w, cb6[r4.w + 587].x, l(16) - f16tof32 r16.y, r4.w - mad r12.xy, r17.xyxx, cb6[584].zwzz, r16.xyxx - mad r12.zw, r12.xxxy, cb6[586].zzzw, l(0.000000, 0.000000, 0.500000, 0.500000) - round_ni r12.zw, r12.zzzw - mad r12.xy, r12.xyxx, cb6[586].zwzz, -r12.zwzz - add r16.xyzw, r12.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r17.xw, r16.xxxz, r16.xxxz - min r14.zw, r12.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r16.xz, r12.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r18.xy, r17.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r12.xyxx - add r12.xy, -r12.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mad r12.xy, -r14.zwzz, r14.zwzz, r12.xyxx - mad r14.zw, -r16.xxxz, r16.xxxz, r16.yyyw - mov r16.x, r18.x - mov r16.y, r12.x - mov r16.z, r14.z - mov r16.w, r17.x - mul r16.xyzw, r16.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r17.x, r18.y - mov r17.y, r12.y - mov r17.z, r14.w - mul r17.xyzw, r17.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r18.xyzw, r16.ywyw, r16.xzxz - add r19.xyzw, r17.yyww, r17.xxzz - div r12.xy, r16.ywyy, r18.zwzz - add r12.xy, r12.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) - mul r16.xy, r12.xyxx, cb6[586].xxxx - div r12.xy, r17.ywyy, r19.ywyy - add r12.xy, r12.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) - mul r16.zw, r12.xxxy, cb6[586].yyyy - mul r17.xyzw, r18.xyzw, r19.xyzw - mad r18.xyzw, r12.zwzw, cb6[586].xyxy, r16.xzyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r4.w, r18.xyxx, t15.xxxx, s4, r6.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r7.w, r18.zwzz, t15.xxxx, s4, r6.w - mul r7.w, r7.w, r17.y - mad r4.w, r17.x, r4.w, r7.w - mad r12.xyzw, r12.zwzw, cb6[586].xyxy, r16.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r7.w, r12.xyxx, t15.xxxx, s4, r6.w - mad r4.w, r17.z, r7.w, r4.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r6.w, r12.zwzz, t15.xxxx, s4, r6.w - mad r15.y, r17.w, r6.w, r4.w - else - mov r15.y, l(1.000000) - endif - else - mov r15.y, l(1.000000) - endif - else - mov r15.y, l(1.000000) - endif - movc r15.x, r15.z, r15.y, r15.x - else - mov r15.y, l(1.000000) - endif - add r4.w, -r15.y, r15.x - mad r4.w, r5.w, r4.w, r15.y - lt r5.w, l(0.001000), r4.w - if_nz r5.w - add r10.xyz, r10.xyzx, -cb0[173].xyzx - mad r10.yw, cb0[176].xxxz, r10.yyyy, r10.xxxz - mul r12.xy, r10.ywyy, cb0[174].zzzz - mul r12.zw, cb0[175].xxxy, cb0[183].wwww - mad r10.yw, r10.yyyw, cb0[174].zzzz, r12.zzzw - sample_l_indexable(texture2d)(float,float,float,float) r5.w, r10.ywyy, t14.yzwx, s2, l(0.000000) - mad r10.yw, r12.xxxy, cb0[175].wwww, r12.zzzw - sample_l_indexable(texture2d)(float,float,float,float) r6.w, r10.ywyy, t14.yzwx, s2, l(0.000000) - dp2 r7.w, r10.xzxx, r10.xzxx - sqrt r7.w, r7.w - add r8.w, -cb0[174].x, cb0[174].y - add r7.w, r7.w, -cb0[174].x - div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w - mul_sat r7.w, r7.w, r8.w - mad r8.w, r7.w, l(-2.000000), l(3.000000) - mul r7.w, r7.w, r7.w - mul r7.w, r7.w, r8.w - add r6.w, -r5.w, r6.w - mad r5.w, r7.w, r6.w, r5.w - add r5.w, r5.w, l(-1.000000) - mad r5.w, cb0[175].z, r5.w, l(1.000000) - mul r4.w, r4.w, r5.w - endif - add r5.w, -r4.w, cb6[35].z - mad r4.w, cb6[35].w, r5.w, r4.w -else - mov r4.w, cb6[35].z -endif -min r4.w, r4.w, l(1.000000) -add r4.w, r4.w, l(-1.000000) -mad r10.x, cb6[34].x, r4.w, l(1.000000) -lt r4.w, l(0.001000), r10.x -if_nz r4.w - dp3 r4.w, -cb5[0].xyzx, r13.xyzx - mad r12.xyz, cb5[0].xyzx, r4.wwww, r13.xyzx - lt r4.w, r4.w, cb5[4].z - dp3 r5.w, r12.xyzx, r12.xyzx - max r5.w, r5.w, l(0.0000610351562) - rsq r5.w, r5.w - mul r12.xyz, r5.wwww, r12.xyzx - mul r12.xyz, r12.xyzx, cb5[4].yyyy - mad r12.xyz, -cb5[0].xyzx, cb5[4].zzzz, r12.xyzx - dp3 r5.w, r12.xyzx, r12.xyzx - rsq r5.w, r5.w - mul r12.xyz, r5.wwww, r12.xyzx - movc r12.xyz, r4.wwww, r12.xyzx, r13.xyzx - mad r15.xyz, r3.xyzx, r1.wwww, r12.xyzx - dp3 r4.w, r15.xyzx, r15.xyzx - max r4.w, r4.w, l(0.0000610351562) - rsq r4.w, r4.w - mul r15.xyz, r4.wwww, r15.xyzx - dp3_sat r12.z, r12.xyzx, r7.xyzx - dp3_sat r4.w, r7.xyzx, r15.xyzx - min r12.x, r3.w, l(1.000000) - mul r5.w, cb2[20].z, cb2[20].z - mul r5.w, r5.w, r5.w - mad r6.w, r4.w, r5.w, -r4.w - mad r4.w, r6.w, r4.w, l(1.000000) - dp3_sat r6.w, r5.xyzx, r15.xyzx - add r6.w, -r6.w, l(1.000000) - mul r7.w, r6.w, r6.w - mul r7.w, r7.w, r7.w - mul r8.w, r6.w, r7.w - add r9.w, l(1.000000), -cb2[20].z - mad r10.z, -r9.w, l(0.383026), l(-0.0761947036) - mad r10.z, r9.w, r10.z, l(1.049970) - mad r9.w, r9.w, r10.z, l(0.409255) - min r9.w, r9.w, l(0.999000) - add r10.z, -r9.w, l(1.000000) - add r15.xyz, -r8.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r8.xyzx - mad r6.w, -r7.w, r6.w, l(1.000000) - mad r16.xyz, r8.xyzx, r6.wwww, r8.wwww - mul r4.w, r4.w, r4.w - div r4.w, r5.w, r4.w - mad r14.zw, -r12.xxxz, r5.wwww, r12.xxxz - mad r14.zw, r14.zzzw, r12.xxxz, r5.wwww - sqrt r14.zw, r14.zzzw - mul r14.zw, r12.zzzx, r14.zzzw - add r5.w, r14.w, r14.z - add r5.w, r5.w, l(0.000100) - div r5.w, l(0.500000), r5.w - mul r4.w, r4.w, r5.w - mul r16.xyz, r4.wwww, r16.xyzx - min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mov r12.yw, cb2[20].zzzz - mad r17.xyzw, r12.xyzw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r4.w, r17.xyxx, t17.yzwx, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r5.w, r17.zwzz, t17.yzwx, s1, l(0.000000) - mul r4.w, r4.w, r5.w - mul r4.w, r9.w, r4.w - div r4.w, r4.w, r10.z - mul r12.xyw, r15.xyxz, r15.xyxz - mul r12.xyw, r4.wwww, r12.xyxw - mad r15.xyz, -r15.xyzx, r10.zzzz, l(1.000000, 1.000000, 1.000000, 0.000000) - div r12.xyw, r12.xyxw, r15.xyxz - add r12.xyw, r12.xyxw, r16.xyxz - mul r12.xyw, r12.xyxw, cb5[4].xxxx - // === Glass Fix: Reduce sun specular intensity === - lt r36.x, l(0.500000), cb13[13].z - if_nz r36.x - mul r12.xyw, r12.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000) - endif - max r12.xyw, r12.xyxw, l(0.000000, 0.000000, 0.000000, 0.000000) - min r12.xyw, r12.xyxw, l(1000.000000, 1000.000000, 0.000000, 1000.000000) - div r12.xyw, r12.xyxw, r2.wwww - min r12.xyw, r12.xyxw, l(1000.000000, 1000.000000, 0.000000, 1000.000000) - mul r12.xyw, r12.xyxw, cb2[19].xxxx - mul r15.xyz, r9.xyzx, r12.zzzz - mad r12.xyz, r12.xywx, r12.zzzz, r15.xyzx - mul r12.xyz, r12.xyzx, cb5[1].xyzx - mov r10.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r10.yzw, r10.xyxx, t16.wxyz, s1, cb0[108].x - add r2.w, -r10.x, l(1.000000) - mad r10.xyz, r12.xyzx, r10.yzwy, -r12.xyzx - mad r10.xyz, r2.wwww, r10.xyzx, r12.xyzx -else - mov r10.xyz, l(0,0,0,0) -endif -mul r12.xy, r14.xyxx, l(0.031250, 0.031250, 0.000000, 0.000000) -round_ni r12.xy, r12.xyxx -mad r2.w, r12.y, cb4[1].y, r12.x -mul r2.w, r2.w, l(8.000000) -ftoi r2.w, r2.w -mad r4.w, -cb0[85].y, cb4[2].w, r11.z -round_ni r4.w, r4.w -add r5.w, l(-1.000000), cb4[1].w -max r6.w, r4.w, l(0.000000) -min r5.w, r5.w, r6.w -mul r6.w, r5.w, l(8.000000) -ftoi r6.w, r6.w -ge r4.w, r5.w, r4.w -iadd r5.w, r6.w, cb0[110].y -mul r6.w, cb2[20].z, cb2[20].z -min r12.x, r3.w, l(1.000000) -add r12.zw, l(0.000000, 0.000000, 1.000000, 1.000000), -cb2[20].zzzx -mad r3.w, -r12.z, l(0.383026), l(-0.0761947036) -mad r3.w, r12.z, r3.w, l(1.049970) -mad r3.w, r12.z, r3.w, l(0.409255) -min r3.w, r3.w, l(0.999000) -add r7.w, -r3.w, l(1.000000) -add r15.xyz, -r8.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r8.xyzx -mov r12.y, cb2[20].z -mad r12.yz, r12.xxyx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r8.w, r12.yzyy, t17.yzwx, s1, l(0.000000) -mad r16.xyz, -r15.xyzx, r7.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r15.xyz, r15.xyzx, r15.xyzx -mov r17.w, l(1.000000) -mov r18.y, l(1.000000) -mov r19.z, cb2[20].z -mov r20.xyz, l(0,0,0,0) -mov r9.w, l(1.000000) -mov r10.w, l(0) -loop - ilt r12.y, l(7), r10.w - breakc_nz r12.y - iadd r12.y, r2.w, r10.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.y, r12.y, l(0), t0.xxxx - iadd r12.z, r5.w, r10.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.z, r12.z, l(0), t0.xxxx - and r12.y, r12.z, r12.y - and r12.y, r4.w, r12.y - ishl r12.z, r10.w, l(5) - mov r21.xyz, l(0,0,0,0) - mov r13.w, r9.w - mov r14.z, r12.y - loop - breakc_z r14.z - firstbit_lo r14.w, r14.z - ishl r15.w, l(1), r14.w - xor r15.w, r14.z, r15.w - iadd r14.w, r12.z, r14.w - bfi r22.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r14.wwww, l(1, 3, 5, 6) - bfi r16.w, l(29), l(3), r14.w, l(7) - ftou r18.z, cb5[r22.z + 6].w - ieq r18.z, r18.z, l(1) - if_nz r18.z - add r17.xyz, r2.xyzx, -cb5[r22.x + 6].xyzx - and r23.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r22.z + 6].xzyx - and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r22.w + 6].yxzy - ushr r25.xyz, cb5[r22.z + 6].xzyx, l(16, 16, 16, 0) - ushr r26.xyz, cb5[r22.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r23.xyz, r23.xyzx - f16tof32 r24.xyz, r24.xyzx - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyw, r26.yxyz - mov r27.xz, r23.xxzx - mov r27.yw, r25.xxxz - dp4 r18.z, r17.xyzw, r27.xyzw - mov r25.x, r23.y - mov r25.z, r24.y - mov r25.w, r26.x - dp4 r18.w, r17.xyzw, r25.xyzw - mov r26.xz, r24.xxzx - dp4 r17.x, r17.xyzw, r26.xyzw - max r17.y, |r18.w|, |r18.z| - max r17.x, |r17.x|, r17.y - mad r17.y, cb5[r16.w + 6].x, l(0.500000), l(0.500000) - add r17.x, -r17.y, r17.x - mad r17.y, -cb5[r16.w + 6].x, l(0.500000), l(0.500000) - div_sat r17.x, r17.x, r17.y - add r17.x, -r17.x, l(1.000000) - mul r17.x, r17.x, r17.x - else - mov r17.x, l(1.000000) - endif - lt r17.y, l(0.500000), cb5[r22.y + 6].z - lt r17.z, r17.x, l(0.001000) - or r17.z, r17.y, r17.z - if_nz r17.z - mov r14.z, r15.w - continue - endif - ishl r17.z, r14.w, l(3) - bfi r14.w, l(29), l(3), r14.w, l(2) - lt r18.z, cb5[r17.z + 6].w, l(1.500000) - if_nz r18.z - mad r18.z, cb5[r14.w + 6].y, l(0.500000), l(0.500000) - add r23.x, r18.z, -|cb5[r14.w + 6].x| - add r23.y, -r23.x, cb5[r14.w + 6].y - add r18.z, -|r23.x|, l(1.000000) - add r18.z, -|r23.y|, r18.z - max r18.z, r18.z, l(0.000488281250) - ge r18.w, cb5[r14.w + 6].x, l(0.000000) - movc r23.z, r18.w, r18.z, -r18.z - dp3 r18.z, r23.xyzx, r23.xyzx - rsq r18.z, r18.z - mul r23.xyz, r18.zzzz, r23.xyzx - add r24.xyz, -r2.xyzx, cb5[r22.x + 6].xyzx - dp3 r18.z, r24.xyzx, r24.xyzx - rsq r18.w, r18.z - mul r25.xyz, r18.wwww, r24.xyzx - ftoi r19.w, cb5[r16.w + 6].w - mul r26.xyz, r23.xyzx, cb5[r14.w + 6].zzzz - mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - mad r28.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - ftou r20.w, cb5[r17.z + 6].w - and r20.w, r20.w, l(1) - ieq r21.w, r20.w, l(0) - not r21.w, r21.w - lt r22.z, l(0.000000), cb5[r14.w + 6].z - and r21.w, r21.w, r22.z - dp3 r22.z, r27.xyzx, r27.xyzx - sqrt r22.z, r22.z - dp3 r23.w, r28.xyzx, r28.xyzx - sqrt r23.w, r23.w - dp3 r24.w, r7.xyzx, r27.xyzx - div r24.w, r24.w, r22.z - dp3 r25.w, r7.xyzx, r28.xyzx - div r25.w, r25.w, r23.w - add r24.w, r24.w, r25.w - mul_sat r29.x, r24.w, l(0.500000) - dp3 r24.w, r27.xyzx, r28.xyzx - mad r22.z, r22.z, r23.w, r24.w - mad r22.z, r22.z, l(0.500000), l(1.000000) - div r29.y, l(1.000000, 1.000000, 1.000000, 1.000000), r22.z - dp3_sat r18.x, r7.xyzx, r25.xyzx - movc r19.xy, r21.wwww, r29.xyxx, r18.xyxx - lt r18.x, cb5[r22.w + 6].w, l(0.000000) - if_nz r18.x - mul r18.x, cb5[r22.x + 6].w, cb5[r22.x + 6].w - mul r18.x, r18.x, r18.z - mad r18.x, -r18.x, r18.x, l(1.000000) - max r18.x, r18.x, l(0.000000) - add r18.z, r18.z, l(1.000000) - div r18.z, l(1.000000, 1.000000, 1.000000, 1.000000), r18.z - and r22.z, r21.w, l(0x3f800000) - add r23.w, -r18.z, r19.y - mad r18.z, r22.z, r23.w, r18.z - mul r18.x, r18.x, r18.x - mul r18.x, r18.x, r18.z - else - mul r28.xyz, r24.xyzx, cb5[r22.x + 6].wwww - dp3 r18.z, r28.xyzx, r28.xyzx - min r18.z, r18.z, l(1.000000) - add r18.z, -r18.z, l(1.000000) - log r18.z, r18.z - mul r18.z, r18.z, cb5[r22.w + 6].w - exp r18.z, r18.z - mul r18.x, r18.z, r19.y - endif - dp3 r18.z, r25.xyzx, -r23.xyzx - add r18.z, r18.z, -cb5[r14.w + 6].z - mul_sat r18.z, r18.z, cb5[r14.w + 6].w - mul r18.z, r18.z, r18.z - movc r18.z, r20.w, l(1.000000), r18.z - mul r18.x, r18.z, r18.x - not r18.z, r21.w - ige r19.y, r19.w, l(0) - and r18.z, r18.z, r19.y - if_nz r18.z - if_z r20.w - ishl r18.z, r19.w, l(2) - mul r23.xyz, r2.yyyy, cb7[r18.z + 33].xywx - mad r23.xyz, cb7[r18.z + 32].xywx, r2.xxxx, r23.xyzx - mad r23.xyz, cb7[r18.z + 34].xywx, r2.zzzz, r23.xyzx - add r23.xyz, r23.xyzx, cb7[r18.z + 35].xywx - div_sat r23.xy, r23.xyxx, r23.zzzz - mad r23.xy, r23.xyxx, cb7[r19.w + 0].zwzz, cb7[r19.w + 0].xyxx - else - ishl r18.z, r19.w, l(2) - dp3 r28.x, -r24.xyzx, cb7[r18.z + 32].xyzx - dp3 r28.y, -r24.xyzx, cb7[r18.z + 33].xyzx - dp3 r28.z, -r24.xyzx, cb7[r18.z + 34].xyzx - lt r18.z, |r28.x|, |r28.y| - and r18.z, r18.z, l(1) - dp2 r19.y, |r28.xyxx|, icb[r18.z + 0].xyxx - lt r19.y, r19.y, |r28.z| - movc r18.z, r19.y, l(2), r18.z - dp3 r19.y, r28.xyzx, icb[r18.z + 0].xyzx - lt r19.y, r19.y, l(0.000000) - bfi r18.z, l(31), l(1), r18.z, r19.y - ushr r19.y, r18.z, l(1) - dp3 r19.y, r28.xyzx, icb[r19.y + 0].xyzx - div r22.z, l(0.000244140625), cb7[r19.w + 0].w - add r22.z, -r22.z, l(0.500000) - utof r23.z, r18.z - ult r23.w, r18.z, l(2) - and r23.w, r23.w, l(2) - dp2 r23.w, r28.xzxx, icb[r23.w + 0].xzxx - mul r23.w, r23.w, icb[r18.z + 4].z - div r23.w, r23.w, |r19.y| - mad r23.z, r23.w, r22.z, r23.z - add r23.z, r23.z, l(0.500000) - mul_sat r24.x, r23.z, l(0.166666672) - iadd r23.z, l(-1), icb[r18.z + 4].y - dp2 r23.z, r28.yzyy, icb[r23.z + 0].xyxx - mul r18.z, r23.z, icb[r18.z + 4].w - div r18.z, r18.z, |r19.y| - mad_sat r24.y, -r18.z, r22.z, l(0.500000) - mad r23.xy, r24.xyxx, cb7[r19.w + 0].zwzz, cb7[r19.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r18.z, r23.xyxx, t18.yzxw, s1, l(0.000000) - mul r18.x, r18.z, r18.x - endif - lt r18.z, l(0.000000), r18.x - if_nz r18.z - if_z r20.w - ftoi r19.y, cb5[r22.y + 6].x - else - add r23.xyz, r2.xyzx, -cb5[r22.x + 6].xyzx - lt r24.xyz, |r23.yzzy|, |r23.xxyx| - and r19.w, r24.y, r24.x - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx - ushr r20.w, cb5[r14.w + 6].w, l(24) - ubfe r24.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r14.w + 6].wwww - movc r20.w, r23.x, r20.w, r24.x - and r22.z, l(255), cb5[r14.w + 6].w - movc r22.z, r23.y, r24.y, r22.z - ubfe r23.x, l(8), l(8), cb5[r22.y + 6].x - and r23.y, l(255), cb5[r22.y + 6].x - movc r23.x, r23.z, r23.x, r23.y - movc r22.z, r24.z, r22.z, r23.x - movc r19.w, r19.w, r20.w, r22.z - ilt r20.w, r19.w, l(80) - movc r19.y, r20.w, r19.w, l(-1) - endif - ishl r19.w, r19.y, l(2) - mad r23.xyz, r25.xyzx, cb6[r19.y + 288].xxxx, r2.xyzx - mul r20.w, l(5.000000), cb6[r19.y + 288].y - mad r23.xyz, r7.xyzx, r20.wwww, r23.xyzx - mul r24.xyzw, r23.yyyy, cb6[r19.w + 65].xyzw - mad r24.xyzw, cb6[r19.w + 64].xyzw, r23.xxxx, r24.xyzw - mad r23.xyzw, cb6[r19.w + 66].xyzw, r23.zzzz, r24.xyzw - add r23.xyzw, r23.xyzw, cb6[r19.w + 67].xyzw - div r23.xyz, r23.xyzx, r23.wwww - ge r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx - ge r28.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r29.xy, -cb6[r19.y + 344].xyxx, cb6[r19.y + 344].zwzz - mad r23.xy, r23.xyxx, r29.xyxx, cb6[r19.y + 344].xyxx - mad r29.xy, r23.xyxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r29.xy, r29.xyxx - mad r23.xy, r23.xyxx, cb6[400].zwzz, -r29.xyxx - add r30.xyzw, r23.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r31.xyzw, r30.xxzz, r30.xxzz - add r29.zw, -r23.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r30.xz, r23.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r32.xy, r23.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r33.xy, r29.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r32.xy, -r32.xyxx, r32.xyxx, r30.ywyy - add r32.xy, r32.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r32.xy, r32.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r31.xz, r31.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r23.xy, r31.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r23.xyxx - mul r34.xy, r23.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r23.xy, -r30.xzxx, r30.xzxx, r29.zwzz - add r23.xy, r23.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r35.xy, r23.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r23.xy, r30.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r34.z, r35.x - mov r34.w, r23.x - mov r33.z, r32.x - mov r33.w, r31.x - add r30.xyzw, r33.zwxz, r34.zwxz - mov r35.z, r34.y - mov r35.w, r23.y - mov r32.z, r33.y - mov r32.w, r31.z - add r23.xyw, r32.zyzw, r35.zyzw - div r31.xyz, r33.xzwx, r30.zwyz - add r31.xyz, r31.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r31.xyz, r31.xyzx, cb6[400].xxxx - div r32.xyz, r32.zywz, r23.xywx - add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r32.xyw, r32.xyxz, cb6[400].yyyy - mul r33.xyzw, r23.xxxy, r30.zwyz - mov r31.w, r32.x - mad r34.xyzw, r29.xyxy, cb6[400].xyxy, r31.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.w, r34.xyxx, t13.xxxx, s4, r23.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r34.zwzz, t13.xxxx, s4, r23.z - mul r20.w, r20.w, r33.y - mad r19.w, r33.x, r19.w, r20.w - mad r29.zw, r29.xxxy, cb6[400].xxxy, r31.zzzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r29.zwzz, t13.xxxx, s4, r23.z - mad r19.w, r33.z, r20.w, r19.w - mov r32.z, r31.x - mad r34.xyzw, r29.xyxy, cb6[400].xyxy, r32.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r34.xyxx, t13.xxxx, s4, r23.z - mad r19.w, r33.w, r20.w, r19.w - mul r33.xyzw, r23.yyww, r30.xyzw - mov r32.xz, r31.yyzy - mad r31.xyzw, r29.xyxy, cb6[400].xyxy, r32.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r31.xyxx, t13.xxxx, s4, r23.z - mad r19.w, r33.x, r20.w, r19.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r31.zwzz, t13.xxxx, s4, r23.z - mad r19.w, r33.y, r20.w, r19.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r34.zwzz, t13.xxxx, s4, r23.z - mad r19.w, r33.z, r20.w, r19.w - ige r20.w, r19.y, l(0) - or r24.xyz, r24.xyzx, r28.xyzx - or r22.z, r24.y, r24.x - or r22.z, r24.z, r22.z - and r23.x, r23.z, l(0x7fffffff) - ult r23.x, l(0x7f800000), r23.x - or r22.z, r22.z, r23.x - mad r24.xyzw, r29.xyxy, cb6[400].xyxy, r32.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r24.xyxx, t13.xxxx, s4, r23.z - mad r19.w, r33.w, r23.x, r19.w - mul r23.x, r23.w, r30.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.y, r24.zwzz, t13.xxxx, s4, r23.z - mad r19.w, r23.x, r23.y, r19.w - add r19.w, r19.w, l(-1.000000) - mad r19.y, cb6[r19.y + 288].w, r19.w, l(1.000000) - movc r19.y, r22.z, l(1.000000), r19.y - movc r19.y, r20.w, r19.y, l(1.000000) - else - mov r19.y, l(1.000000) - endif - if_nz r21.w - dp3 r19.w, r13.xyzx, r26.xyzx - mul_sat r20.w, r18.w, cb5[r14.w + 6].z - mad r20.w, r20.w, l(0.500000), r6.w - min r20.w, r20.w, l(1.000000) - div r20.w, r6.w, r20.w - mad r23.xyz, r13.xyzx, r19.wwww, -r26.xyzx - dp3 r21.w, r27.xyzx, r23.xyzx - mul r19.w, r19.w, r19.w - mad r19.w, cb5[r14.w + 6].z, cb5[r14.w + 6].z, -r19.w - div_sat r19.w, r21.w, r19.w - mad r23.xyz, r26.xyzx, r19.wwww, r27.xyzx - dp3 r19.w, r23.xyzx, r23.xyzx - rsq r19.w, r19.w - mul r25.xyz, r19.wwww, r23.xyzx - else - mov r20.w, l(1.000000) - endif - if_nz r18.z - mul_sat r18.z, r18.w, cb5[r16.w + 6].y - mad r23.xyz, r3.xyzx, r1.wwww, r25.xyzx - dp3 r18.w, r23.xyzx, r23.xyzx - max r18.w, r18.w, l(0.0000610351562) - rsq r18.w, r18.w - mul r23.xyz, r18.wwww, r23.xyzx - dp3_sat r18.w, r7.xyzx, r23.xyzx - dp3_sat r19.w, r5.xyzx, r23.xyzx - lt r21.w, l(0.000000), r18.z - mul r18.z, r18.z, r18.z - mad r22.z, r19.w, l(3.600000), l(0.400000) - div r18.z, r18.z, r22.z - mad r18.z, cb2[20].z, cb2[20].z, r18.z - min r18.z, r18.z, l(1.000000) - movc r18.z, r21.w, r18.z, r6.w - mul r18.z, r18.z, r18.z - mad r21.w, r18.w, r18.z, -r18.w - mad r18.w, r21.w, r18.w, l(1.000000) - add r19.w, -r19.w, l(1.000000) - mul r21.w, r19.w, r19.w - mul r21.w, r21.w, r21.w - mul r22.z, r19.w, r21.w - mad r19.w, -r21.w, r19.w, l(1.000000) - mad r23.xyz, r8.xyzx, r19.wwww, r22.zzzz - mul r18.w, r18.w, r18.w - div r18.w, r18.z, r18.w - mul r18.w, r20.w, r18.w - mad r19.w, -r12.x, r18.z, r12.x - mad r19.w, r19.w, r12.x, r18.z - sqrt r19.w, r19.w - mad r20.w, -r19.x, r18.z, r19.x - mad r18.z, r20.w, r19.x, r18.z - sqrt r18.z, r18.z - mul r18.z, r12.x, r18.z - mad r18.z, r19.x, r19.w, r18.z - add r18.z, r18.z, l(0.000100) - div r18.z, l(0.500000), r18.z - mul r18.z, r18.z, r18.w - mul r23.xyz, r18.zzzz, r23.xyzx - min r23.xyz, r23.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r18.zw, r19.xxxz, l(0.000000, 0.000000, 0.968750, 0.968750), l(0.000000, 0.000000, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r18.z, r18.zwzz, t17.yzxw, s1, l(0.000000) - mul r18.z, r8.w, r18.z - mul r18.z, r3.w, r18.z - div r18.z, r18.z, r7.w - mul r24.xyz, r15.xyzx, r18.zzzz - div r24.xyz, r24.xyzx, r16.xyzx - add r23.xyz, r23.xyzx, r24.xyzx - mul r23.xyz, r23.xyzx, cb5[r16.w + 6].zzzz - max r23.xyz, r23.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r23.xyz, r23.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r24.xyz, r9.xyzx, r19.xxxx - mad r23.xyz, r23.xyzx, r19.xxxx, r24.xyzx - mul r18.xzw, r18.xxxx, cb5[r17.z + 6].xxyz - mul r18.xzw, r19.yyyy, r18.xxzw - mul r18.xzw, r17.xxxx, r18.xxzw - mul r18.xzw, r18.xxzw, r23.xxyz - else - mov r18.xzw, l(0,0,0,0) - endif - else - if_z r17.y - mad r17.x, cb5[r14.w + 6].y, l(0.500000), l(0.500000) - add r23.x, r17.x, -|cb5[r14.w + 6].x| - add r23.y, -r23.x, cb5[r14.w + 6].y - add r17.x, -|r23.x|, l(1.000000) - add r17.x, -|r23.y|, r17.x - max r17.x, r17.x, l(0.000488281250) - ge r17.y, cb5[r14.w + 6].x, l(0.000000) - movc r23.z, r17.y, r17.x, -r17.x - dp3 r17.x, r23.xyzx, r23.xyzx - rsq r17.x, r17.x - mul r19.xyw, r17.xxxx, r23.xyxz - add r23.xyz, -r2.xyzx, cb5[r22.x + 6].xyzx - dp3 r17.x, r23.xyzx, r23.xyzx - rsq r17.y, r17.x - mul r24.xyz, r17.yyyy, r23.xyzx - ftoi r16.w, cb5[r16.w + 6].w - mul r25.xyz, r19.xywx, cb5[r14.w + 6].zzzz - mad r26.xyz, -r25.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r23.xyzx - mad r25.xyz, r25.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r23.xyzx - ftou r17.y, cb5[r17.z + 6].w - and r17.y, r17.y, l(1) - ieq r17.z, r17.y, l(0) - not r17.z, r17.z - lt r20.w, l(0.000000), cb5[r14.w + 6].z - and r17.z, r17.z, r20.w - dp3 r20.w, r26.xyzx, r26.xyzx - sqrt r20.w, r20.w - dp3 r21.w, r25.xyzx, r25.xyzx - sqrt r21.w, r21.w - dp3 r22.z, r26.xyzx, r25.xyzx - mad r20.w, r20.w, r21.w, r22.z - mad r20.w, r20.w, l(0.500000), l(1.000000) - div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w - movc r20.w, r17.z, r20.w, l(1.000000) - lt r21.w, cb5[r22.w + 6].w, l(0.000000) - if_nz r21.w - mul r21.w, cb5[r22.x + 6].w, cb5[r22.x + 6].w - mul r21.w, r17.x, r21.w - mad r21.w, -r21.w, r21.w, l(1.000000) - max r21.w, r21.w, l(0.000000) - add r17.x, r17.x, l(1.000000) - div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x - and r22.z, r17.z, l(0x3f800000) - add r23.w, -r17.x, r20.w - mad r17.x, r22.z, r23.w, r17.x - mul r21.w, r21.w, r21.w - mul r17.x, r17.x, r21.w - else - mul r25.xyz, r23.xyzx, cb5[r22.x + 6].wwww - dp3 r21.w, r25.xyzx, r25.xyzx - min r21.w, r21.w, l(1.000000) - add r21.w, -r21.w, l(1.000000) - log r21.w, r21.w - mul r21.w, r21.w, cb5[r22.w + 6].w - exp r21.w, r21.w - mul r17.x, r20.w, r21.w - endif - dp3 r19.x, r24.xyzx, -r19.xywx - add r19.x, r19.x, -cb5[r14.w + 6].z - mul_sat r19.x, r19.x, cb5[r14.w + 6].w - mul r19.x, r19.x, r19.x - movc r19.x, r17.y, l(1.000000), r19.x - mul r17.x, r17.x, r19.x - not r17.z, r17.z - ige r19.x, r16.w, l(0) - and r17.z, r17.z, r19.x - if_nz r17.z - if_z r17.y - ishl r17.z, r16.w, l(2) - mul r19.xyw, r2.yyyy, cb7[r17.z + 33].xyxw - mad r19.xyw, cb7[r17.z + 32].xyxw, r2.xxxx, r19.xyxw - mad r19.xyw, cb7[r17.z + 34].xyxw, r2.zzzz, r19.xyxw - add r19.xyw, r19.xyxw, cb7[r17.z + 35].xyxw - div_sat r19.xy, r19.xyxx, r19.wwww - mad r19.xy, r19.xyxx, cb7[r16.w + 0].zwzz, cb7[r16.w + 0].xyxx - else - ishl r17.z, r16.w, l(2) - dp3 r25.x, -r23.xyzx, cb7[r17.z + 32].xyzx - dp3 r25.y, -r23.xyzx, cb7[r17.z + 33].xyzx - dp3 r25.z, -r23.xyzx, cb7[r17.z + 34].xyzx - lt r17.z, |r25.x|, |r25.y| - and r17.z, r17.z, l(1) - dp2 r19.w, |r25.xyxx|, icb[r17.z + 0].xyxx - lt r19.w, r19.w, |r25.z| - movc r17.z, r19.w, l(2), r17.z - dp3 r19.w, r25.xyzx, icb[r17.z + 0].xyzx - lt r19.w, r19.w, l(0.000000) - bfi r17.z, l(31), l(1), r17.z, r19.w - ushr r19.w, r17.z, l(1) - dp3 r19.w, r25.xyzx, icb[r19.w + 0].xyzx - div r20.w, l(0.000244140625), cb7[r16.w + 0].w - add r20.w, -r20.w, l(0.500000) - utof r21.w, r17.z - ult r22.z, r17.z, l(2) - and r22.z, r22.z, l(2) - dp2 r22.z, r25.xzxx, icb[r22.z + 0].xzxx - mul r22.z, r22.z, icb[r17.z + 4].z - div r22.z, r22.z, |r19.w| - mad r21.w, r22.z, r20.w, r21.w - add r21.w, r21.w, l(0.500000) - mul_sat r23.x, r21.w, l(0.166666672) - iadd r21.w, l(-1), icb[r17.z + 4].y - dp2 r21.w, r25.yzyy, icb[r21.w + 0].xyxx - mul r17.z, r21.w, icb[r17.z + 4].w - div r17.z, r17.z, |r19.w| - mad_sat r23.y, -r17.z, r20.w, l(0.500000) - mad r19.xy, r23.xyxx, cb7[r16.w + 0].zwzz, cb7[r16.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r16.w, r19.xyxx, t18.yzwx, s1, l(0.000000) - mul r17.x, r16.w, r17.x - endif - lt r16.w, l(0.000000), r17.x - if_nz r16.w - if_z r17.y - ftoi r16.w, cb5[r22.y + 6].x - else - add r17.xyz, r2.xyzx, -cb5[r22.x + 6].xyzx - lt r19.xyw, |r17.yzyz|, |r17.xxxy| - and r19.x, r19.y, r19.x - lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx - ushr r19.y, cb5[r14.w + 6].w, l(24) - ubfe r22.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb5[r14.w + 6].wwww - movc r17.x, r17.x, r19.y, r22.x - and r14.w, l(255), cb5[r14.w + 6].w - movc r14.w, r17.y, r22.z, r14.w - ubfe r17.y, l(8), l(8), cb5[r22.y + 6].x - and r19.y, l(255), cb5[r22.y + 6].x - movc r17.y, r17.z, r17.y, r19.y - movc r14.w, r19.w, r14.w, r17.y - movc r14.w, r19.x, r17.x, r14.w - ilt r17.x, r14.w, l(80) - movc r16.w, r17.x, r14.w, l(-1) - endif - ishl r14.w, r16.w, l(2) - mad r17.xyz, r24.xyzx, cb6[r16.w + 288].xxxx, r2.xyzx - mul r19.x, l(5.000000), cb6[r16.w + 288].y - mad r17.xyz, r7.xyzx, r19.xxxx, r17.xyzx - mul r22.xyzw, r17.yyyy, cb6[r14.w + 65].xyzw - mad r22.xyzw, cb6[r14.w + 64].xyzw, r17.xxxx, r22.xyzw - mad r22.xyzw, cb6[r14.w + 66].xyzw, r17.zzzz, r22.xyzw - add r22.xyzw, r22.xyzw, cb6[r14.w + 67].xyzw - div r17.xyz, r22.xyzx, r22.wwww - ge r19.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyxz - ge r22.xyz, r17.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r23.xy, -cb6[r16.w + 344].xyxx, cb6[r16.w + 344].zwzz - mad r17.xy, r17.xyxx, r23.xyxx, cb6[r16.w + 344].xyxx - mad r23.xy, r17.xyxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r23.xy, r23.xyxx - mad r17.xy, r17.xyxx, cb6[400].zwzz, -r23.xyxx - add r24.xyzw, r17.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r25.xyzw, r24.xxzz, r24.xxzz - add r23.zw, -r17.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r24.xz, r17.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r26.xy, r17.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r27.xy, r23.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r26.xy, -r26.xyxx, r26.xyxx, r24.ywyy - add r26.xy, r26.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r26.xy, r26.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r25.xz, r25.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r17.xy, r25.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r17.xyxx - mul r28.xy, r17.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r17.xy, -r24.xzxx, r24.xzxx, r23.zwzz - add r17.xy, r17.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r29.xy, r17.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r17.xy, r24.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r28.z, r29.x - mov r28.w, r17.x - mov r27.z, r26.x - mov r27.w, r25.x - add r24.xyzw, r27.zwxz, r28.zwxz - mov r29.z, r28.y - mov r29.w, r17.y - mov r26.z, r27.y - mov r26.w, r25.z - add r25.xyz, r26.zywz, r29.zywz - div r27.xyz, r27.xzwx, r24.zwyz - add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r27.xyz, r27.xyzx, cb6[400].xxxx - div r26.xyz, r26.zywz, r25.xyzx - add r26.xyz, r26.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r26.xyw, r26.xyxz, cb6[400].yyyy - mul r28.xyzw, r24.zwyz, r25.xxxy - mov r27.w, r26.x - mad r29.xyzw, r23.xyxy, cb6[400].xyxy, r27.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r14.w, r29.xyxx, t13.xxxx, s4, r17.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.x, r29.zwzz, t13.xxxx, s4, r17.z - mul r17.x, r17.x, r28.y - mad r14.w, r28.x, r14.w, r17.x - mad r17.xy, r23.xyxx, cb6[400].xyxx, r27.zwzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.x, r17.xyxx, t13.xxxx, s4, r17.z - mad r14.w, r28.z, r17.x, r14.w - mov r26.z, r27.x - mad r29.xyzw, r23.xyxy, cb6[400].xyxy, r26.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.x, r29.xyxx, t13.xxxx, s4, r17.z - mad r14.w, r28.w, r17.x, r14.w - mul r28.xyzw, r24.xyzw, r25.yyzz - mov r26.xz, r27.yyzy - mad r27.xyzw, r23.xyxy, cb6[400].xyxy, r26.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.x, r27.xyxx, t13.xxxx, s4, r17.z - mad r14.w, r28.x, r17.x, r14.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.x, r27.zwzz, t13.xxxx, s4, r17.z - mad r14.w, r28.y, r17.x, r14.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.x, r29.zwzz, t13.xxxx, s4, r17.z - mad r14.w, r28.z, r17.x, r14.w - ige r17.x, r16.w, l(0) - or r19.xyw, r19.xyxw, r22.xyxz - or r17.y, r19.y, r19.x - or r17.y, r19.w, r17.y - and r19.x, r17.z, l(0x7fffffff) - ult r19.x, l(0x7f800000), r19.x - or r17.y, r17.y, r19.x - mad r22.xyzw, r23.xyxy, cb6[400].xyxy, r26.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r22.xyxx, t13.xxxx, s4, r17.z - mad r14.w, r28.w, r19.x, r14.w - mul r19.x, r24.y, r25.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r22.zwzz, t13.xxxx, s4, r17.z - mad r14.w, r19.x, r17.z, r14.w - add r14.w, r14.w, l(-1.000000) - mad r14.w, cb6[r16.w + 288].w, r14.w, l(1.000000) - movc r14.w, r17.y, l(1.000000), r14.w - movc r14.w, r17.x, r14.w, l(1.000000) - else - mov r14.w, l(1.000000) - endif - else - mov r14.w, l(1.000000) - endif - mul r13.w, r13.w, r14.w - mov r18.xzw, l(0,0,0,0) - endif - add r21.xyz, r18.xzwx, r21.xyzx - mov r14.z, r15.w - endloop - mov r9.w, r13.w - add r20.xyz, r20.xyzx, r21.xyzx - iadd r10.w, r10.w, l(1) -endloop -add r1.w, l(1.000000), -cb2[0].y -mad r2.x, r2.y, cb0[156].w, cb0[157].w -mad r2.z, r0.w, cb0[154].w, -cb0[153].w -max r2.xz, r2.xxzx, l(0.010000, 0.000000, 0.000000, 0.000000) -mul r2.w, r2.x, l(-1.442695) -exp r2.w, r2.w -add r2.w, -r2.w, l(1.000000) -div r2.x, r2.w, r2.x -mad r2.w, r2.y, cb0[156].w, cb0[158].w -mul r2.w, r2.w, l(1.442695) -exp r2.w, r2.w -mul r2.x, r2.w, r2.x -mul r2.x, r2.x, -r2.z -mul r2.xzw, r2.xxxx, cb0[155].xxyz -mul r2.xzw, r2.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) -exp r2.xzw, r2.xxzw -dp3 r3.x, -r5.xyzx, cb0[154].xyzx -mad r3.y, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r3.z, r3.xxxx, cb0[155].wwww -add r3.y, -r3.z, r3.y -lt r3.z, l(0.000000), cb0[163].z -if_nz r3.z - and r11.w, l(7), cb0[108].w - imad r7.xyz, r11.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r3.z, r7.y, r7.z, r7.x - imad r3.w, r7.z, r3.z, r7.y - imad r4.w, r3.z, r3.w, r7.z - imad r7.x, r3.w, r4.w, r3.z - dp3 r3.z, -r5.xyzx, -r4.xyzx - add r4.x, r2.y, -cb0[44].y - lt r4.y, l(5.960464478E-08), r3.z - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r3.z - and r3.z, r3.z, r4.y - mul r3.z, r3.z, cb0[163].w - div r4.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w - mul r4.z, r3.z, r4.y - mad r5.x, r4.z, r4.x, cb0[44].y - mad r4.x, -r4.z, r4.x, r4.x - mul r4.z, r4.x, cb0[159].z - mul r4.x, r4.x, cb0[162].x - max r4.xz, r4.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - add r5.y, r5.x, -cb0[159].x - mul r5.y, r5.y, cb0[159].z - max r5.y, r5.y, l(-127.000000) - exp r5.y, -r5.y - mul r5.y, r5.y, cb0[159].y - lt r5.z, l(5.960464478E-08), |r4.z| - exp r5.w, -r4.z - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r4.z - mad r4.z, -r4.z, l(0.240226507), l(0.693147182) - movc r4.z, r5.z, r5.w, r4.z - add r5.x, r5.x, -cb0[162].z - mul r5.x, r5.x, cb0[162].x - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[162].y - lt r5.z, l(5.960464478E-08), |r4.x| - exp r5.w, -r4.x - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r4.x - mad r4.x, -r4.x, l(0.240226507), l(0.693147182) - movc r4.x, r5.z, r5.w, r4.x - mul r4.x, r4.x, r5.x - mad r4.x, r5.y, r4.z, r4.x - mad r3.z, -r3.z, r4.y, l(1.000000) - mul r3.z, r0.w, r3.z - mul r3.z, r3.z, r4.x - exp r3.z, -r3.z - min r3.z, r3.z, l(1.000000) - max r3.z, r3.z, cb0[161].w - mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx - add r3.z, r3.z, r4.x - add r3.z, r4.y, r3.z - min r3.z, r3.z, l(1.000000) - imad r7.y, r4.w, r7.x, r3.w - ushr r4.xy, r7.xyxx, l(16, 16, 0, 0) - utof r4.xy, r4.xyxx - mad r4.xy, r4.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mad r4.xy, r4.xyxx, cb0[167].wwww, r14.xyxx - mul r4.xy, r4.xyxx, cb0[165].xyxx - mad r3.w, r11.z, cb0[164].x, cb0[164].y - log r3.w, r3.w - mul r3.w, r3.w, cb0[164].z - div r4.z, r3.w, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t5.xyzw, s1, l(0.000000) - add r3.w, r11.z, -cb0[166].z - mul_sat r3.w, r3.w, l(1000000.000000) - add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r4.xyzw, r3.wwww, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r3.w, -r3.z, l(1.000000) - mul r5.xyz, r3.wwww, cb0[161].xyzx - mad r4.xyz, r5.xyzx, r4.wwww, r4.xyzx - mul r3.z, r3.z, r4.w -else - add r2.y, r2.y, -cb0[44].y - mul r3.w, r2.y, cb0[159].z - max r3.w, r3.w, l(-127.000000) - mul r2.y, r2.y, cb0[162].x - max r2.y, r2.y, l(-127.000000) - add r4.w, cb0[44].y, -cb0[159].x - mul r4.w, r4.w, cb0[159].z - max r4.w, r4.w, l(-127.000000) - exp r4.w, -r4.w - mul r4.w, r4.w, cb0[159].y - lt r5.x, l(5.960464478E-08), |r3.w| - exp r5.y, -r3.w - add r5.y, -r5.y, l(1.000000) - div r5.y, r5.y, r3.w - mad r3.w, -r3.w, l(0.240226507), l(0.693147182) - movc r3.w, r5.x, r5.y, r3.w - add r5.x, cb0[44].y, -cb0[162].z - mul r5.x, r5.x, cb0[162].x - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[162].y - lt r5.y, l(5.960464478E-08), |r2.y| - exp r5.z, -r2.y - add r5.z, -r5.z, l(1.000000) - div r5.z, r5.z, r2.y - mad r2.y, -r2.y, l(0.240226507), l(0.693147182) - movc r2.y, r5.y, r5.z, r2.y - mul r2.y, r2.y, r5.x - mad r2.y, r4.w, r3.w, r2.y - mul r2.y, r0.w, r2.y - exp r2.y, -r2.y - min r2.y, r2.y, l(1.000000) - max r2.y, r2.y, cb0[161].w - mad_sat r5.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.w, r2.y, r5.x - add r0.w, r5.y, r0.w - min r3.z, r0.w, l(1.000000) - add r0.w, -r3.z, l(1.000000) - mul r4.xyz, r0.wwww, cb0[161].xyzx -endif -// === Glass Fix: Reduce clustered lights and overall brightness === -lt r36.x, l(0.500000), cb13[13].z -if_nz r36.x - mul r20.xyz, r20.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r1.xyz, r1.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) -endif -dp3 r0.w, r1.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r1.xyz, -r0.wwww, r1.xyzx -mad r1.xyz, cb0[184].wwww, r1.xyzx, r0.wwww -mul r5.xyz, r6.xyzx, r12.wwww -mad r1.xyz, r1.xyzx, cb0[184].xyzx, r5.xyzx -mad r5.xyz, r20.xyzx, r9.wwww, r10.xyzx -add r1.xyz, r1.xyzx, r5.xyzx -mul r5.xyz, r2.xzwx, r3.zzzz -mad r0.w, r3.x, r3.x, l(1.000000) -mul r0.w, r0.w, l(0.0596831031) -mad r6.xyz, cb0[156].xyzx, r0.wwww, cb0[158].xyzx -mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r2.y, r3.y, l(12.566371) -sqrt r3.x, r3.y -mul r2.y, r2.y, r3.x -max r2.y, r2.y, l(0.001000) -div r0.w, r0.w, r2.y -mad_sat r3.xyw, cb0[157].xyxz, r0.wwww, r6.xyxz -mul r3.xyw, r3.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) -add r2.xyz, -r2.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r2.xyz, r2.xyzx, r3.xywx -mad r2.xyz, r2.xyzx, r3.zzzz, r4.xyzx -mul r2.xyz, r1.wwww, r2.xyzx -// === Glass Transparency Fix === -lt r36.x, l(0.500000), cb13[13].z -if_nz r36.x - // Boost transmittance: lerp(r5, 1, 0.5) - add r36.xyz, -r5.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r36.xyz, r36.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r5.xyzx - // Reduce inscatter intensity - mul r37.xyz, r2.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000) - // Modified fog blend - mad r1.xyz, r1.xyzx, r36.xyzx, r37.xyzx -else - // Original fog blend - mad r1.xyz, r1.xyzx, r5.xyzx, r2.xyzx -endif -mul r2.xyz, r0.xxxx, r1.xyzx -mul r2.w, r0.x, r1.w -min o1.xy, r0.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) -dp3 r0.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mul r0.x, r2.w, r0.x -max r0.x, r2.w, r0.x -mul_sat r0.x, r0.x, l(10.000000) -lt r0.x, l(0.500000), r0.x -and o1.z, r0.x, l(0x3f800000) -// === Glass Highlight Compression === -lt r36.x, l(0.500000), cb13[13].z -if_nz r36.x - dp3 r36.y, r2.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) - lt r36.z, l(0.500000), r36.y - if_nz r36.z - add r36.w, r36.y, l(-0.500000) - mul r36.w, r36.w, l(-0.666667) - exp r36.w, r36.w - add r36.w, -r36.w, l(1.000000) - mad r36.w, r36.w, l(1.500000), l(0.500000) - max r37.x, r36.y, l(0.001000) - div r37.x, r36.w, r37.x - mul r2.xyz, r2.xyzx, r37.xxxx - endif -endif -mov o0.xyzw, r2.xyzw -mov o1.w, l(0) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0x69B6459F.cso b/src/games/endfield/glass/0x4F5F426C.cso similarity index 95% rename from src/games/endfield/glass/0x69B6459F.cso rename to src/games/endfield/glass/0x4F5F426C.cso index dbf6f23e62b5f2c927d70f13b9cbd1808677e933..67b7673ef7d23416474a1fa9f38f713811ba95d8 100644 GIT binary patch delta 459 zcmZ9HKS)Ax5XXP_o<&73f=u&I_*Brr#LQXxy95n6Ra88Mq9Gz0gQ9GR7KymgNleSB zXTPb4{tLmgDX`Ll+8PVWf|gF9p_b2m@9x9F9dYr9i~51lzW$e!?V{NFT@KkVZ<^NF zVpcyaz!#quv=;b4zrhIaIB0M~85ayb_~Z%0j3C`H#@3@Uk+A|s%^vJAT|ois&9i@Z zJZc^RxW#)*fGAm4h%u`LZh6KU7yr2-x$0)@75C8|CoVe3#f;U$RmYM@(d+UM$6OU9 z=5iAw_I5m+Z{km`ybkU$)X`6T^C(cP<|1VuUUqasiFyyp-Zo0l@fJShz4Dv(=z}iC z8qQfW6Dikj$VA5W(X04C#Yx2|WvMT3%9SxYz^G!Qc|sY7EYXOKp*mD2bts3YB$W*F zs$3D7id$hPnZcYB)uav|!mp6!*Abk6LmoNq7N{gnO9G_$^2G^I3Fb;QkU^8?h8^tH dY*L!e{GLnWoECsICNvwQ@Jt(lU2e)Jr5^^-p|Jn} delta 459 zcmZ9H$xA|U5XXP>o<`e?$k3h|J_|HZvGOb}b_qJYO$V^EZr2qIeM=t;E2 zLu&jEMMQfLyt=d!71SRPXhrA7phI0g^PQOw1GC4)JuX(Zb+-oe6&r81VUc;{ z?~X^zT>#hkVDS+p>ojq}YJqE>v_{2$ZczDgllHv(Y>yHrYRJW;)xtA1lOjcr!$s_I zV*{ct0pN;{nw(BAG2+Ys5Y9%)LuvvO;{Q%#7w^qmC%5c zBEvkRnLkZ hSj862CMD?1@3{nyYCcF{OtV28kF+jW<@PJSyU&iG|A ztGGJjx5>KV`i$Q<$BOS~ zl{N;FiZb;;a-obgkSwef-h4r34l}Br&6Nt_AoUj&LF!qRW`oo#!PP6xUF#i^iAJ2Fj%)Skh+q^_~jUnUu z$$|0WjGHEB#_OwY0Q$m$fq~PAL4ZLJ$aZT`0Fn$08-e&+zXFKKuygX>czMPRlkdhy zGj0Tu;*$ds3V1;}rJ$-eOg@{S%(!9m#{_Xk#*LdflRn2V?%Mo!pFJaxvOO@HiE-)X zn}_x@0;!otZnHA3oLqWJopJf(xu@iLmm!(6Z1Txd#*E7*|2-woxOB4Y>2Sssn@dlx G=LG;6ew!Bn delta 436 zcmZ3oiFwH;W)YVNCui2$Ju|BF4lfMb{=I&0*=@OvA^}W{UpA*QwTm!*ocvZyobkhC zR&jO4Pm^`U^%*~Jjuqd}$a{r>fuXHY0Z1}1T$-#Y`I+(3WLc?f3~}wv2c&cu881(M zD{TxU6=mvy03;b0)&udkegzPdVf*C0@$!u8Cf|*Z zW?T;>#U}?O6!3y{Nfu#j2V|q{(DNEaq(o?)8UNEHkY1W G&kF!FNt)&W diff --git a/src/games/endfield/glass/0xD2EC68A2.cso b/src/games/endfield/glass/0x68EDC7A9.cso similarity index 95% rename from src/games/endfield/glass/0xD2EC68A2.cso rename to src/games/endfield/glass/0x68EDC7A9.cso index 5b5a373548809d1b9f87b4db7f25dcf2962e1390..580e5ea4db5c4b2fd85effe31e69268f7239c069 100644 GIT binary patch delta 460 zcmZ9H&npCB7{}jdhvG1-Y-ZTSW@$!SJI1DPQC808AjGC!$$@{s2?t8T){}#ja`0nG zX1qC&VoP!uN{Zc`grkFl@-r9jOb$3apXd3$&-eM(o7m$Ldz`1OyEW28HZNr3Ywm8D zJ1g86o-sTfF8H8>u1E>I;-x6S3#LQ~-tbXW;GLG19s!>wgiKBN840;Y%@;(s_YAHv z;~oCHqnfV^;0BZBVaD6?F~(?x7jEci#SZt++fe0rX9Ko36OC-Qv`Wbi2zVN?|b#ZVn&9i4UbA=8$lEvhP(3OmTh1lYxzm{O~=A2bq@ zUr*emh|TTeenvtJR&VoudnEg;>hU33jEPtt=(rf`1%uIx?)V6ACzSnM={Ow^fKIpL z0_55e&8Q6(qkfe`?+4O-a6tEuTY$CC)RGHU>B7kou-18MLdmjXiaT5-h`U==fF7i>`Vyr2IDaRHq! delta 460 zcmbQRm3hKeW)YVNC+7z=EUfx_Ox1JeIt*H`NZLcy&?Lp<)AhjxBwJNKbfgDv0Z6Fz_ z0g`UjPzRD9)x|d-(RjeZcy;nyJ!c?ksINa+LeGHl8km0#%-;j#UkCHAZ#LAwZOFKG zGH;?do%`V5@%!u8DTX!FkN`^hRZCQA0*$1 zVcfBK=K*_0AocU$Y$nFVo2MSx&j_SKkKJZvTt3 0.5 - lt r30.z, l(0.500000), r30.y - if_nz r30.z - // compression = 0.5 + 1.5 * (1 - exp(-(luma - 0.5) / 1.5)) - add r30.w, r30.y, l(-0.500000) - mul r30.w, r30.w, l(-0.666667) - exp r30.w, r30.w - add r30.w, -r30.w, l(1.000000) - mad r30.w, r30.w, l(1.500000), l(0.500000) - // scale = compression / luma - max r31.x, r30.y, l(0.001000) - div r31.x, r30.w, r31.x - mul r10.xyz, r10.xyzx, r31.xxxx - endif -endif -mov o0.xyzw, r10.xyzw -mov o1.w, l(0) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0x843686F6.ps_5_0.asm b/src/games/endfield/glass/0x843686F6.ps_5_0.asm deleted file mode 100644 index 2ac5997483..0000000000 --- a/src/games/endfield/glass/0x843686F6.ps_5_0.asm +++ /dev/null @@ -1,1860 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Fri Feb 6 19:58:05 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xyz -// TEXCOORD 0 xyzw 1 NONE float xyzw -// TEXCOORD 1 xyzw 2 NONE float xy -// TEXCOORD 2 xyz 3 NONE float xyz -// TEXCOORD 3 xyzw 4 NONE float -// TEXCOORD 4 xyzw 5 NONE float xyzw -// TEXCOORD 5 xyz 6 NONE float xyz -// TEXCOORD 6 xyz 7 NONE float xyz -// TEXCOORD 7 x 8 NONE uint x -// SV_IsFrontFace 0 x 9 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[244], immediateIndexed -dcl_constantbuffer CB1[4085], dynamicIndexed -dcl_constantbuffer CB2[23], immediateIndexed -dcl_constantbuffer CB3[259], dynamicIndexed -dcl_constantbuffer CB4[3], immediateIndexed -dcl_constantbuffer CB5[2054], dynamicIndexed -dcl_constantbuffer CB6[715], dynamicIndexed -dcl_constantbuffer CB7[160], dynamicIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_sampler s5, mode_default -dcl_sampler s6, mode_default -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2darray (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture3d (float,float,float,float) t5 -dcl_resource_texture3d (float,float,float,float) t6 -dcl_resource_texture3d (float,float,float,float) t7 -dcl_resource_texture3d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture3d (float,float,float,float) t10 -dcl_resource_texture3d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture2d (float,float,float,float) t17 -dcl_resource_texture2d (float,float,float,float) t18 -dcl_input_ps_siv linear noperspective v0.xyz, position -dcl_input_ps linear v1.xyzw -dcl_input_ps linear v2.xy -dcl_input_ps linear v3.xyz -dcl_input_ps linear v5.xyzw -dcl_input_ps linear v6.xyz -dcl_input_ps linear v7.xyz -dcl_input_ps constant v8.x -dcl_input_ps_sgv constant v9.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 37 -mul r0.xy, v0.xyxx, cb0[82].zwzz -ftou r1.xy, v0.xyxx -mad r0.zw, r0.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -mul r2.xyzw, -r0.wwww, cb0[25].xyzw -mad r2.xyzw, cb0[24].xyzw, r0.zzzz, r2.xyzw -mad r2.xyzw, cb0[26].xyzw, v0.zzzz, r2.xyzw -add r2.xyzw, r2.xyzw, cb0[27].xyzw -div r2.xyz, r2.xyzx, r2.wwww -mul r0.z, r2.y, cb0[1].z -mad r0.z, cb0[0].z, r2.x, r0.z -mad r0.z, cb0[2].z, r2.z, r0.z -add r0.z, r0.z, cb0[3].z -mov r1.z, |r0.z| -eq r0.z, l(0.000000), cb0[86].w -add r3.xyz, -r2.xyzx, cb0[44].xyzx -mov r4.x, cb0[0].z -mov r4.y, cb0[1].z -mov r4.z, cb0[2].z -movc r3.xyz, r0.zzzz, r3.xyzx, r4.xyzx -dp3 r0.z, r3.xyzx, r3.xyzx -max r0.w, r0.z, l(9.999999939E-09) -rsq r0.w, r0.w -mul r5.xyz, r0.wwww, r3.xyzx -mul r0.z, r0.w, r0.z -add r6.xyzw, -v5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000) -mad r6.xyzw, cb2[1].yyyy, r6.xyzw, v5.xyzw -mul r6.xyzw, r6.xyzw, cb2[4].xyzw -mul r6.xyzw, r6.xyzw, cb2[1].zzzw -add r1.w, l(1.000000), -cb2[3].x -mad r1.w, cb0[109].x, cb2[3].x, r1.w -div r6.xyz, r6.xyzx, r1.wwww -mul r7.xyzw, v2.xxyy, cb2[1].xxxx -mad r8.xyzw, v1.zzww, cb2[1].xxxx, -r7.xyzw -add r8.xyzw, r8.xyzw, v2.xxyy -mul r9.xyzw, r8.yyww, cb2[8].yyyy -mad r9.xyzw, v1.xxyy, cb2[8].xxxx, r9.xyzw -mad r9.xyzw, cb2[6].xxyy, cb0[183].wwww, r9.xyzw -mad r9.xyzw, cb2[6].zzww, r7.yyyy, r9.xyzw -add r9.xyzw, r9.xyzw, l(-0.500000, -0.500000, -0.500000, -0.500000) -mul r9.xyzw, r9.xyzw, cb2[7].xyzw -add r7.xy, r9.zwzz, r9.xyxx -add r7.xy, r7.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mad r7.xy, r7.xyxx, cb2[9].xyxx, cb2[9].zwzz -ishl r1.w, v8.x, l(4) -add r3.w, cb1[r1.w + 3].y, cb1[r1.w + 3].x -add r3.w, r3.w, cb1[r1.w + 3].z -frc r3.w, r3.w -mul r4.w, r3.w, cb2[22].w -min r4.w, r4.w, l(0.500000) -add r4.w, r4.w, l(1.000000) -mul r7.z, r4.w, r7.y -mad r7.xy, cb2[22].wwww, r3.wwww, r7.xzxx -add r3.w, l(1.000000), cb0[108].x -sample_b_indexable(texture2d)(float,float,float,float) r9.xyzw, r7.xyxx, t3.xyzw, s5, r3.w -mul r8.xyzw, r8.xyzw, cb2[15].yyyy -mad r8.xyzw, v1.xxyy, cb2[15].xxxx, r8.xyzw -mad r8.xyzw, cb2[13].xxyy, cb0[183].wwww, r8.xyzw -mad r7.xyzw, cb2[13].zzww, r7.wwww, r8.xyzw -add r7.xyzw, r7.xyzw, l(-0.500000, -0.500000, -0.500000, -0.500000) -mul r7.xyzw, r7.xyzw, cb2[14].xyzw -add r7.xy, r7.zwzz, r7.xyxx -add r7.xy, r7.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mad r7.xy, r7.xyxx, cb2[12].xyxx, cb2[12].zwzz -sample_b_indexable(texture2d)(float,float,float,float) r7.xyzw, r7.xyxx, t4.xyzw, s6, cb0[108].x -mov r8.x, l(1.000000) -mov r8.w, r9.x -add r8.xyzw, -r9.xyzw, r8.xxxw -mad r8.xyzw, cb2[5].yyyy, r8.xyzw, r9.xyzw -mul r6.xyzw, r6.xyzw, r8.xyzw -mov r8.x, l(1.000000) -mov r8.w, r7.x -add r8.xyzw, -r7.xyzw, r8.xxxw -mad r7.xyzw, cb2[11].xxxx, r8.xyzw, r7.xyzw -mul r6.xyzw, r6.xyzw, r7.xyzw -utof r7.xy, r1.xyxx -mul r7.xy, r7.xyxx, cb0[82].zwzz -mad r7.xy, r7.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r0.x, r0.xyxx, t1.xyzw, s0, l(0.000000) -mul r8.xyzw, -r7.yyyy, cb0[25].xyzw -mad r7.xyzw, cb0[24].xyzw, r7.xxxx, r8.xyzw -mad r7.xyzw, cb0[26].xyzw, r0.xxxx, r7.xyzw -add r7.xyzw, r7.xyzw, cb0[27].xyzw -movc r8.xyz, v9.xxxx, v3.xyzx, -v3.xyzx -ne r0.x, l(0.000000), cb2[16].x -add r9.xy, r1.zzzz, -cb2[16].ywyy -add r0.y, -cb2[16].y, cb2[16].z -div_sat r0.y, r9.x, r0.y -add r3.w, -cb2[16].w, cb2[17].x -div_sat r3.w, r9.y, r3.w -mul r0.y, r0.y, r3.w -movc r0.x, r0.x, r0.y, l(1.000000) -mul r0.x, r0.x, r6.w -div r7.xyz, r7.xyzx, r7.wwww -mul r0.y, r7.y, cb0[1].z -mad r0.y, cb0[0].z, r7.x, r0.y -mad r0.y, cb0[2].z, r7.z, r0.y -add r0.y, r0.y, cb0[3].z -add r0.y, -r1.z, |r0.y| -add r0.y, r0.y, cb2[18].y -div_sat r0.y, r0.y, cb2[18].x -mul r0.x, r0.y, r0.x -add r7.xy, v5.wxww, l(-1.000000, -1.000000, 0.000000, 0.000000) -mad r7.xy, cb2[22].yyyy, r7.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) -mul r0.x, r0.x, r7.x -dp3 r0.y, v3.xyzx, r5.xyzx -log r0.y, |r0.y| -mul r0.y, r0.y, cb2[20].z -exp r0.y, r0.y -add r0.y, r0.y, l(-1.000000) -mad r0.y, cb2[21].x, r0.y, l(1.000000) -mul r0.x, r0.y, r0.x -add r0.y, l(1.000000), -cb1[r1.w + 4].y -mul_sat r0.x, r0.y, r0.x -max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r6.xyz, r6.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) -mul r7.xzw, r6.xxyz, cb2[21].yyyy -mul r0.y, r7.y, cb2[19].z -mul r1.w, r7.x, r0.y -add r3.w, l(1.000000), cb2[0].w -add_sat r3.w, r3.w, -cb2[0].x -lt r3.w, l(0.500000), r3.w -max r4.w, v6.z, l(9.999999939E-09) -div r9.xy, v6.xyxx, r4.wwww -max r4.w, v7.z, l(9.999999939E-09) -div r9.zw, v7.xxxy, r4.wwww -add r9.xy, -r9.zwzz, r9.xyxx -mul r10.xy, r9.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) -sqrt r10.xy, |r10.xyxx| -sqrt r10.xy, r10.xyxx -mov r9.z, -r9.y -lt r9.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xxxz -lt r9.xz, r9.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r9.xy, -r9.ywyy, r9.xzxx -itof r9.xy, r9.xyxx -mul r9.xy, r9.xyxx, r10.xyxx -mad r9.xy, r9.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -and r9.xy, r3.wwww, r9.xyxx -mul r9.zw, l(0.000000, 0.000000, 4.000000, 0.080000), cb2[22].xxxx -dp3 r3.w, r8.xyzx, r5.xyzx -mad r10.xyzw, cb2[21].wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r4.w, r10.x, r10.x -max r3.w, r3.w, l(0.000000) -mul r5.w, r3.w, l(-9.280000) -exp r5.w, r5.w -min r4.w, r4.w, r5.w -mad r4.w, r4.w, r10.x, r10.y -mad r10.xy, r4.wwww, l(-1.040000, 1.040000, 0.000000, 0.000000), r10.zwzz -eq r4.w, l(1.000000), cb0[113].y -mul r11.xyzw, r2.yyyy, cb0[241].xyzw -mad r11.xyzw, cb0[240].xyzw, r2.xxxx, r11.xyzw -mad r11.xyzw, cb0[242].xyzw, r2.zzzz, r11.xyzw -add r11.xyzw, r11.xyzw, cb0[243].xyzw -div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w -mul r11.xyz, r11.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) -mul r11.xyz, r5.wwww, r11.xyzx -mad_sat r10.zw, r11.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) -mul r10.zw, r10.zzzw, cb0[82].xxxy -ftou r12.xy, r10.zwzz -mad r5.w, cb0[84].z, r11.z, cb0[84].w -div r12.z, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w -movc r11.xyz, r4.wwww, r12.xyzx, r1.xyzx -mad r1.xyz, r8.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r2.xyzx -mad r12.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r12.xyz, r1.xzyx, -r12.xyzx -max r4.w, |r12.y|, |r12.x| -add r4.w, r4.w, l(-464.000000) -mul_sat r4.w, r4.w, l(0.031250) -add r5.w, |r12.z|, l(-208.000000) -mul_sat r5.w, r5.w, l(0.031250) -max r4.w, r4.w, r5.w -ne r5.w, l(0.000000), cb0[210].w -lt r6.w, r4.w, l(1.000000) -and r5.w, r5.w, r6.w -if_nz r5.w - mad r12.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r12.xyz, r1.xzyx, -r12.xyzx - max r5.w, |r12.y|, |r12.x| - add r5.w, r5.w, l(-29.000000) - mul_sat r5.w, r5.w, l(0.500000) - add r6.w, |r12.z|, l(-13.000000) - mul_sat r6.w, r6.w, l(0.500000) - max r5.w, r5.w, r6.w - lt r6.w, r5.w, l(1.000000) - if_nz r6.w - mad r12.xyz, r1.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r13.xyz, r12.xyzx, cb0[211].xyzx - round_ni r13.xyz, r13.xyzx - mad r12.xyz, r12.xyzx, cb0[211].xyzx, -r13.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r13.xyw, r12.xyzx, t6.yzwx, s2, l(0.000000) - add r6.w, -r5.w, l(1.000000) - mul r7.y, l(0.500000), cb0[211].y - mad r10.z, -cb0[211].y, l(0.500000), l(1.000000) - max r7.y, r7.y, r12.y - min r7.y, r10.z, r7.y - mul r12.w, r7.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyzw, r12.xwzx, t7.xyzw, s1, l(0.000000) - mad r7.y, r14.w, r6.w, r4.w - add r15.xyz, r12.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t7.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r13.yyyy, r15.xyzx - mov r15.w, r13.y - mul r15.xyzw, r6.wwww, r15.xyzw - add r12.xyz, r12.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r12.xyzx, t7.xyzw, s1, l(0.000000) - mad r12.xyz, r12.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r12.xyz, r13.xxxx, r12.xyzx - mov r12.w, r13.x - mul r12.xyzw, r6.wwww, r12.xyzw - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r13.xyz, r13.wwww, r14.xyzx - mul r13.xyzw, r6.wwww, r13.xyzw - else - mov r15.xyzw, l(0,0,0,0) - mov r12.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r7.y, r4.w - endif - mad r14.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r14.xyz, r1.xzyx, -r14.xyzx - max r6.w, |r14.y|, |r14.x| - add r6.w, r6.w, l(-116.000000) - mul_sat r6.w, r6.w, l(0.125000) - add r10.z, |r14.z|, l(-52.000000) - mul_sat r10.z, r10.z, l(0.125000) - max r6.w, r6.w, r10.z - lt r10.z, r6.w, l(1.000000) - if_nz r10.z - mad r14.xyz, r1.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r16.xyz, r14.xyzx, cb0[211].xyzx - round_ni r16.xyz, r16.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r16.xyw, r14.xyzx, t8.yzwx, s2, l(0.000000) - add r10.z, -r6.w, l(1.000000) - mul r5.w, r5.w, r10.z - mul r10.z, l(0.500000), cb0[211].y - mad r10.w, -cb0[211].y, l(0.500000), l(1.000000) - max r10.z, r10.z, r14.y - min r10.z, r10.w, r10.z - mul r14.w, r10.z, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r14.xwzx, t9.xyzw, s1, l(0.000000) - mad r7.y, r17.w, r5.w, r7.y - add r18.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t9.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r16.yyyy, r18.xyzx - mov r18.w, r16.y - mad r15.xyzw, r18.xyzw, r5.wwww, r15.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t9.xyzw, s1, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r16.xxxx, r14.xyzx - mov r14.w, r16.x - mad r12.xyzw, r14.xyzw, r5.wwww, r12.xyzw - mad r14.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r16.wwww, r14.xyzx - mad r13.xyzw, r16.xyzw, r5.wwww, r13.xyzw - endif - lt r5.w, l(0.000000), r6.w - if_nz r5.w - mad r1.xyz, r1.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r14.xyz, r1.xyzx, cb0[211].xyzx - mul r16.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r14.xyz, r14.xyzx - mad r1.xyz, r1.xyzx, cb0[211].xyzx, -r14.xyzx - mad r14.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r1.xyz, r16.xyzx, r1.xyzx - min r17.xyz, r14.xyzx, r1.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t10.yzwx, s2, l(0.000000) - add r1.x, -r4.w, l(1.000000) - mul r1.x, r1.x, r6.w - max r1.y, r16.y, r17.y - min r1.y, r14.y, r1.y - mul r17.w, r1.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyzw, r17.xwzx, t11.xyzw, s1, l(0.000000) - add r16.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t11.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r18.yyyy, r16.xyzx - mov r16.w, r18.y - mad r15.xyzw, r16.xyzw, r1.xxxx, r15.xyzw - add r16.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t11.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r18.xxxx, r16.xyzx - mov r16.w, r18.x - mad r12.xyzw, r16.xyzw, r1.xxxx, r12.xyzw - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r14.xyzx - mad r13.xyzw, r18.xyzw, r1.xxxx, r13.xyzw - mad r7.y, r14.w, r1.x, r7.y - endif - mad_sat r1.x, r7.y, l(2.000000), l(-1.000000) - add r14.x, -r4.w, r1.x - add r1.x, r4.w, r1.x - mul r14.y, r1.x, l(0.500000) -else - mov r15.xyzw, l(0,0,0,0) - mov r12.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r14.xy, l(0,1.000000,0,0) -endif -mul r16.xyzw, r14.yyyx, cb0[213].xyzw -mad r16.y, r16.w, l(0.500000), r16.y -mul r1.xy, r14.yxyy, cb0[213].wyww -mad r16.w, r1.y, l(0.375000), r1.x -add r13.xyzw, r13.xyzw, r16.xyzw -mul r16.xyzw, r14.yyyx, cb0[214].xyzw -mad r16.y, r16.w, l(0.500000), r16.y -mul r1.xy, r14.yxyy, cb0[214].wyww -mad r16.w, r1.y, l(0.375000), r1.x -add r12.xyzw, r12.xyzw, r16.xyzw -mul r16.xyzw, r14.yyyx, cb0[215].xyzw -mad r16.y, r16.w, l(0.500000), r16.y -mul r1.xy, r14.yxyy, cb0[215].wyww -mad r16.w, r1.y, l(0.375000), r1.x -add r14.xyzw, r15.xyzw, r16.xyzw -dp3 r1.x, r13.xyzx, r8.xyzx -add r1.x, r13.w, r1.x -max r1.x, r1.x, l(0.000000) -dp3 r4.w, r12.xyzx, r8.xyzx -add r4.w, r12.w, r4.w -max r1.y, r4.w, l(0.000000) -dp3 r4.w, r14.xyzx, r8.xyzx -add r4.w, r14.w, r4.w -max r1.z, r4.w, l(0.000000) -add r12.xyz, l(1.000000, 0.666666687, 0.333333343, 0.000000), cb2[19].xxxx -frc r12.xyz, r12.xyzx -mad r12.xyz, r12.xyzx, l(6.000000, 6.000000, 6.000000, 0.000000), l(-3.000000, -3.000000, -3.000000, 0.000000) -add_sat r12.xyz, |r12.xyzx|, l(-1.000000, -1.000000, -1.000000, 0.000000) -add r12.xyz, r12.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) -mad r12.xyz, cb2[19].yyyy, r12.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r12.xyz, r1.wwww, r12.xyzx -mad r13.xyz, r12.xyzx, cb2[19].wwww, r7.xzwx -mul r13.xyz, r1.xyzx, r13.xyzx -mul r10.zw, r13.xxxy, cb0[111].xxxx -dp3 r1.w, -r5.xyzx, r8.xyzx -add r1.w, r1.w, r1.w -mad r14.xyz, r8.xyzx, -r1.wwww, -r5.xyzx -add r1.w, l(-1.000000), cb0[113].x -max r4.w, l(0.001000), cb2[21].w -log r4.w, r4.w -mad r4.w, -r4.w, l(1.200000), l(1.000000) -add r1.w, r1.w, -r4.w -utof r15.xy, r11.xyxx -mul r15.zw, r15.xxxy, cb3[0].wwww -round_ni r15.zw, r15.zzzw -add r4.w, r11.z, -cb3[2].y -round_ni r4.w, r4.w -add r5.w, l(-1.000000), cb3[1].x -max r6.w, r4.w, l(0.000000) -min r5.w, r5.w, r6.w -ge r4.w, r5.w, r4.w -mad r6.w, r15.w, cb3[0].x, r15.z -ftoi r6.w, r6.w -iadd r6.w, r6.w, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r6.w, r6.w, l(0), t0.xxxx -ftoi r5.w, r5.w -iadd r5.w, r5.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.w, r5.w, l(0), t0.xxxx -and r5.w, r5.w, r6.w -and r4.w, r4.w, r5.w -mul r1.xyz, r1.xyzx, cb0[111].xxxx -dp3 r1.x, r1.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r2.w, l(1.000000) -mov r8.w, l(1.000000) -mov r16.xyz, l(0,0,0,0) -mov r1.y, l(1.000000) -mov r1.z, r4.w -mov r5.w, l(0) -loop - lt r6.w, l(0.010000), r1.y - ine r7.y, r1.z, l(0) - and r7.y, r6.w, r7.y - if_nz r7.y - firstbit_lo r7.y, r1.z - ishl r12.w, l(1), r7.y - xor r1.z, r1.z, r12.w - ishl r7.y, r7.y, l(3) - dp4 r17.x, cb3[r7.y + 6].xyzw, r2.xyzw - dp4 r17.y, cb3[r7.y + 7].xyzw, r2.xyzw - dp4 r17.z, cb3[r7.y + 8].xyzw, r2.xyzw - ge r18.xyz, cb3[r7.y + 5].xyzx, |r17.xyzx| - and r12.w, r18.y, r18.x - and r12.w, r18.z, r12.w - if_nz r12.w - mul r12.w, l(0.100000), cb3[r7.y + 5].x - mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r15.zw, r18.xxxy, r18.xxxy - add r18.xyw, -|r17.xyxz|, cb3[r7.y + 5].xyxz - mul r18.xyw, r18.xyxw, cb3[r7.y + 9].xyxz - eq r13.w, l(1.000000), cb3[r7.y + 10].x - if_nz r13.w - dp3 r19.x, cb3[r7.y + 6].xyzx, r14.xyzx - dp3 r19.y, cb3[r7.y + 7].xyzx, r14.xyzx - dp3 r19.z, cb3[r7.y + 8].xyzx, r14.xyzx - add r20.xyz, -r17.xyzx, cb3[r7.y + 5].xyzx - div r20.xyz, r20.xyzx, r19.xyzx - add r21.xyz, -r17.xyzx, -cb3[r7.y + 5].xyzx - div r21.xyz, r21.xyzx, r19.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx - min r13.w, r20.y, r20.x - min r13.w, r20.z, r13.w - mad r17.xyz, r19.xyzx, r13.wwww, r17.xyzx - else - mov r17.xyz, r14.xyzx - endif - dp3 r13.w, r17.xyzx, r17.xyzx - rsq r13.w, r13.w - mul r17.xyz, r13.wwww, r17.xyzx - lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx - lt r20.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r19.xyz, -r19.xyzx, r20.xyzx - itof r19.xyz, r19.xyzx - dp3 r13.w, r17.xyzx, r19.xyzx - div r17.xyz, r17.xyzx, r13.wwww - lt r13.w, r17.z, l(0.000000) - add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r17.zw, r17.zzzw, r19.xxxy - movc r17.xy, r13.wwww, r17.zwzz, r17.xyxx - dp4 r13.w, cb3[r7.y + 4].xyzw, r8.xyzw - max r13.w, r13.w, l(0.000000) - max r13.w, r13.w, l(0.000100) - min r14.w, r18.w, r18.y - min r14.w, r14.w, r18.x - add r15.z, r15.w, r15.z - mad r15.z, r18.z, r18.z, r15.z - mad r12.w, r12.w, r12.w, -r15.z - mul r12.w, r12.w, cb3[r7.y + 9].x - mul r12.w, r12.w, cb3[r7.y + 9].x - add r15.z, l(1.000000), -cb3[r7.y + 10].y - mul r12.w, r12.w, r15.z - mul r12.w, r12.w, l(100.000000) - mad_sat r12.w, r14.w, cb3[r7.y + 10].y, r12.w - mul r14.w, r12.w, cb3[r7.y + 10].w - mad r15.zw, r17.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r17.xy, r15.zwzz, cb3[1].wwww, cb3[2].wwww - mov r17.z, cb3[r7.y + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t2.xyzw, s3, r1.w - mul r17.xyz, r17.xyzx, cb3[r7.y + 9].wwww - div r15.z, r1.x, r13.w - min r15.z, |r15.z|, l(1.000000) - mad r15.z, r15.z, l(2.000000), r1.x - add r13.w, r13.w, l(2.000000) - div r13.w, r15.z, r13.w - add r13.w, r13.w, l(-1.000000) - mad r13.w, r13.w, cb0[112].w, l(1.000000) - mul r17.xyz, r13.wwww, r17.xyzx - mul r17.xyz, r14.wwww, r17.xyzx - mad r16.xyz, r17.xyzx, r1.yyyy, r16.xyzx - mad r7.y, -r12.w, cb3[r7.y + 10].w, l(1.000000) - mul r1.y, r1.y, r7.y - endif - mov r5.w, l(-1) - continue - else - mov r5.w, r6.w - break - endif - mov r5.w, r6.w -endloop -if_nz r5.w - dp3 r1.z, r14.xyzx, r14.xyzx - rsq r1.z, r1.z - mul r17.xyz, r1.zzzz, r14.xyzx - lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx - lt r19.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r18.xyz, -r18.xyzx, r19.xyzx - itof r18.xyz, r18.xyzx - dp3 r1.z, r17.xyzx, r18.xyzx - div r17.xyz, r17.xyzx, r1.zzzz - lt r1.z, r17.z, l(0.000000) - add r15.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r15.zw, r15.zzzw, r18.xxxy - movc r15.zw, r1.zzzz, r15.zzzw, r17.xxxy - mov r8.w, l(1.000000) - dp4 r1.z, cb3[3].xyzw, r8.xyzw - max r1.z, r1.z, l(0.000000) - max r1.z, r1.z, l(0.000100) - mad r15.zw, r15.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r17.xy, r15.zwzz, cb3[1].wwww, cb3[2].wwww - mov r17.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t2.xyzw, s3, r1.w - div r1.w, r1.x, r1.z - min r1.w, |r1.w|, l(1.000000) - mad r1.x, r1.w, l(2.000000), r1.x - add r1.z, r1.z, l(2.000000) - div r1.x, r1.x, r1.z - add r1.x, r1.x, l(-1.000000) - mad r1.x, r1.x, cb0[112].w, l(1.000000) - mul r1.xzw, r1.xxxx, r17.xxyz - mad r16.xyz, r1.xzwx, r1.yyyy, r16.xyzx -endif -mul r1.xyz, r16.xyzx, cb0[112].zzzz -// === Glass Fix: Reduce reflection probe intensity === -lt r35.x, l(0.500000), cb13[13].z -if_nz r35.x - mul r1.xyz, r1.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) -endif -mul r1.xyz, r1.xyzx, cb0[111].yyyy -mov_sat r9.z, r9.z -mul r1.w, r10.y, r9.z -mad r1.w, r9.w, r10.x, r1.w -mul r1.xyz, r1.wwww, r1.xyzx -max r1.w, r0.x, l(0.010000) -div r1.xyz, r1.xyzx, r1.wwww -add r2.w, r10.w, r10.z -mad r2.w, r13.z, cb0[111].x, r2.w -mul r2.w, r2.w, l(0.333333343) -add r4.w, r1.y, r1.x -add r4.w, r1.z, r4.w -mul r5.w, r4.w, l(0.333333343) -mad r10.xyz, r13.xyzx, cb0[111].xxxx, -r2.wwww -mad r10.xyz, r10.xyzx, cb2[20].wwww, r2.wwww -mad r1.xyz, -r4.wwww, l(0.333333343, 0.333333343, 0.333333343, 0.000000), r1.xyzx -mad r1.xyz, r1.xyzx, cb2[20].wwww, r5.wwww -add r1.xyz, r1.xyzx, r10.xyzx -lt r2.w, cb6[35].w, l(0.990000) -if_nz r2.w - mad r10.xyz, r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r2.xyzx - ftoi r2.w, cb6[35].x - ieq r4.w, r2.w, l(2) - movc r13.xyz, r4.wwww, cb6[20].xyzx, cb0[44].xyzx - add r13.xyz, r10.xyzx, -r13.xyzx - dp3 r4.w, r13.xyzx, r13.xyzx - add r4.w, -r4.w, cb6[34].w - mul_sat r4.w, r4.w, cb6[34].z - lt r5.w, l(0.000000), r4.w - if_nz r5.w - ilt r2.w, l(0), r2.w - if_nz r2.w - add r13.xyz, r10.xyzx, -cb6[20].xyzx - add r16.xyz, r10.xyzx, -cb6[21].xyzx - add r17.xyz, r10.xyzx, -cb6[22].xyzx - add r18.xyz, r10.xyzx, -cb6[23].xyzx - dp3 r13.x, r13.xyzx, r13.xyzx - dp3 r13.y, r16.xyzx, r16.xyzx - dp3 r13.z, r17.xyzx, r17.xyzx - dp3 r13.w, r18.xyzx, r18.xyzx - lt r16.x, r13.x, cb6[20].w - lt r16.y, r13.y, cb6[21].w - lt r16.z, r13.z, cb6[22].w - lt r16.w, r13.w, cb6[23].w - and r17.xyzw, r16.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) - movc r16.xyz, r16.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) - add r16.xyz, r16.xyzx, r17.yzwy - max r17.yzw, r16.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) - dp4 r2.w, r17.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) - add r2.w, -r2.w, l(4.000000) - max r2.w, r2.w, l(0.000000) - min r2.w, r2.w, l(3.000000) - add r5.w, r2.w, l(1.000000) - min r5.w, r5.w, l(3.000000) - ftou r5.w, r5.w - dp3 r6.w, r13.yzwy, icb[r5.w + 0].yzwy - div r5.w, r6.w, cb6[r5.w + 20].w - ge r6.w, r5.w, l(0.000000) - ge r5.w, l(1.000000), r5.w - and r5.w, r5.w, r6.w - if_nz r5.w - ftou r5.w, r2.w - add r15.zw, r15.xxxy, l(0.000000, 0.000000, 2.083000, 4.867000) - dp2 r6.w, r15.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) - frc r6.w, r6.w - mul r6.w, r6.w, l(52.982918) - frc r6.w, r6.w - dp4 r7.y, r13.xyzw, icb[r5.w + 0].xyzw - div r5.w, r7.y, cb6[r5.w + 20].w - sqrt r5.w, r5.w - add r5.w, r5.w, l(-0.900000) - mul r5.w, r5.w, l(12.000000) - ge r5.w, r5.w, r6.w - and r5.w, r5.w, l(0x3f800000) - add r2.w, r2.w, r5.w - endif - dp3 r5.w, r8.xyzx, cb5[0].xyzx - max r5.w, r5.w, l(0.000000) - min r5.w, r5.w, l(0.900000) - add r5.w, -r5.w, l(1.000000) - ftou r6.w, r2.w - ishl r7.y, r6.w, l(2) - mul r13.xy, r5.wwww, cb6[r6.w + 24].xyxx - max r5.w, r13.x, l(0.000000) - mad r13.xzw, -cb5[0].xxyz, r5.wwww, r10.xxyz - mad r13.xyz, r8.xyzx, r13.yyyy, r13.xzwx - mul r16.xyz, r13.yyyy, cb6[r7.y + 1].xyzx - mad r13.xyw, cb6[r7.y + 0].xyxz, r13.xxxx, r16.xyxz - mad r13.xyz, cb6[r7.y + 2].xyzx, r13.zzzz, r13.xywx - add r13.xyz, r13.xyzx, cb6[r7.y + 3].xyzx - ge r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r13.xyzx - ge r17.xyz, r13.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - or r16.xyz, r16.xyzx, r17.xyzx - or r5.w, r16.y, r16.x - or r5.w, r16.z, r5.w - and r6.w, r13.z, l(0x7fffffff) - ult r6.w, l(0x7f800000), r6.w - or r16.z, r5.w, r6.w - ftoi r2.w, r2.w - mad r13.xy, r13.xyxx, cb6[r2.w + 28].zwzz, cb6[r2.w + 28].xyxx - mad r15.zw, r13.xxxy, cb6[32].zzzw, l(0.000000, 0.000000, 0.500000, 0.500000) - round_ni r15.zw, r15.zzzw - mad r13.xy, r13.xyxx, cb6[32].zwzz, -r15.zwzz - add r17.xyzw, r13.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r18.xw, r17.xxxz, r17.xxxz - min r17.xz, r13.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r19.xy, r13.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r19.zw, r18.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r13.xxxy - add r13.xy, -r13.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mad r13.xy, -r17.xzxx, r17.xzxx, r13.xyxx - mad r17.xy, -r19.xyxx, r19.xyxx, r17.ywyy - mov r20.x, r19.z - mov r20.y, r13.x - mov r20.z, r17.x - mov r20.w, r18.x - mul r20.xyzw, r20.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r18.x, r19.w - mov r18.y, r13.y - mov r18.z, r17.y - mul r17.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r18.xyzw, r20.ywyw, r20.xzxz - add r19.xyzw, r17.yyww, r17.xxzz - div r13.xy, r20.ywyy, r18.zwzz - add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) - mul r20.xy, r13.xyxx, cb6[32].xxxx - div r13.xy, r17.ywyy, r19.ywyy - add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) - mul r20.zw, r13.xxxy, cb6[32].yyyy - mul r17.xyzw, r18.xyzw, r19.xyzw - mad r18.xyzw, r15.zwzw, cb6[32].xyxy, r20.xzyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r2.w, r18.xyxx, t12.xxxx, s4, r13.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r5.w, r18.zwzz, t12.xxxx, s4, r13.z - mul r5.w, r5.w, r17.y - mad r2.w, r17.x, r2.w, r5.w - mad r18.xyzw, r15.zwzw, cb6[32].xyxy, r20.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r5.w, r18.xyxx, t12.xxxx, s4, r13.z - mad r2.w, r17.z, r5.w, r2.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r5.w, r18.zwzz, t12.xxxx, s4, r13.z - mad r2.w, r17.w, r5.w, r2.w - movc r16.x, r16.z, l(1.000000), r2.w - else - mov r16.xz, l(1.000000,0,0,0) - endif - else - mov r16.xz, l(1.000000,0,0,0) - endif - lt r2.w, r4.w, l(1.000000) - if_nz r2.w - dp3 r2.w, r8.xyzx, cb5[0].xyzx - max r2.w, r2.w, l(0.000000) - min r2.w, r2.w, l(0.900000) - add r2.w, -r2.w, l(1.000000) - mul r13.xy, r2.wwww, cb6[584].xyxx - mad r13.xzw, -cb5[0].xxyz, r13.xxxx, r10.xxyz - mad r13.xyz, r8.xyzx, r13.yyyy, r13.xzwx - mul r15.zw, r13.yyyy, cb6[581].xxxy - mad r15.zw, cb6[580].xxxy, r13.xxxx, r15.zzzw - mad r15.zw, cb6[582].xxxy, r13.zzzz, r15.zzzw - add r15.zw, r15.zzzw, cb6[583].xxxy - lt r17.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r15.zwzz - and r2.w, r17.y, r17.x - lt r17.xy, r15.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000) - and r5.w, r17.y, r17.x - and r2.w, r2.w, r5.w - if_nz r2.w - mul r2.w, r15.w, cb6[585].z - round_ni r2.w, r2.w - add r2.w, r15.z, r2.w - mul r2.w, r2.w, cb6[585].y - ftou r2.w, r2.w - umin r2.w, r2.w, l(127) - and r5.w, l(0x0000ffff), cb6[r2.w + 587].x - f16tof32 r17.x, r5.w - ge r5.w, r17.x, l(0.000000) - if_nz r5.w - mov r18.x, cb6[576].x - mov r18.y, cb6[577].x - mov r18.z, cb6[578].x - mov r18.w, cb6[r2.w + 587].y - mov r13.w, l(1.000000) - dp4 r18.x, r18.xyzw, r13.xyzw - mov r19.x, cb6[576].y - mov r19.y, cb6[577].y - mov r19.z, cb6[578].y - mov r19.w, cb6[r2.w + 587].z - dp4 r18.y, r19.xyzw, r13.xyzw - mov r19.x, cb6[576].z - mov r19.y, cb6[577].z - mov r19.z, cb6[578].z - mov r19.w, cb6[r2.w + 587].w - dp4 r5.w, r19.xyzw, r13.xyzw - lt r13.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyxx - lt r6.w, l(0.000000), r5.w - and r7.y, r13.y, r13.x - and r6.w, r6.w, r7.y - lt r13.xy, r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - lt r7.y, r5.w, l(1.000000) - and r8.w, r13.y, r13.x - and r7.y, r7.y, r8.w - and r6.w, r6.w, r7.y - if_nz r6.w - ushr r2.w, cb6[r2.w + 587].x, l(16) - f16tof32 r17.y, r2.w - mad r13.xy, r18.xyxx, cb6[584].zwzz, r17.xyxx - mad r13.zw, r13.xxxy, cb6[586].zzzw, l(0.000000, 0.000000, 0.500000, 0.500000) - round_ni r13.zw, r13.zzzw - mad r13.xy, r13.xyxx, cb6[586].zwzz, -r13.zwzz - add r17.xyzw, r13.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r18.xw, r17.xxxz, r17.xxxz - min r15.zw, r13.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r17.xz, r13.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r19.xy, r18.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r13.xyxx - add r13.xy, -r13.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mad r13.xy, -r15.zwzz, r15.zwzz, r13.xyxx - mad r15.zw, -r17.xxxz, r17.xxxz, r17.yyyw - mov r17.x, r19.x - mov r17.y, r13.x - mov r17.z, r15.z - mov r17.w, r18.x - mul r17.xyzw, r17.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r18.x, r19.y - mov r18.y, r13.y - mov r18.z, r15.w - mul r18.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r19.xyzw, r17.ywyw, r17.xzxz - add r20.xyzw, r18.yyww, r18.xxzz - div r13.xy, r17.ywyy, r19.zwzz - add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) - mul r17.xy, r13.xyxx, cb6[586].xxxx - div r13.xy, r18.ywyy, r20.ywyy - add r13.xy, r13.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000) - mul r17.zw, r13.xxxy, cb6[586].yyyy - mad r18.xyzw, r13.zwzw, cb6[586].xyxy, r17.xzyz - mad r13.xyzw, r13.zwzw, cb6[586].xyxy, r17.xwyw - mul r17.xyzw, r19.xyzw, r20.xyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r2.w, r18.xyxx, t15.xxxx, s4, r5.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r6.w, r18.zwzz, t15.xxxx, s4, r5.w - mul r6.w, r6.w, r17.y - mad r2.w, r17.x, r2.w, r6.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r6.w, r13.xyxx, t15.xxxx, s4, r5.w - mad r2.w, r17.z, r6.w, r2.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r5.w, r13.zwzz, t15.xxxx, s4, r5.w - mad r16.y, r17.w, r5.w, r2.w - else - mov r16.y, l(1.000000) - endif - else - mov r16.y, l(1.000000) - endif - else - mov r16.y, l(1.000000) - endif - movc r16.x, r16.z, r16.y, r16.x - else - mov r16.y, l(1.000000) - endif - add r2.w, -r16.y, r16.x - mad r2.w, r4.w, r2.w, r16.y - lt r4.w, l(0.001000), r2.w - if_nz r4.w - add r10.xyz, r10.xyzx, -cb0[173].xyzx - mad r10.yw, cb0[176].xxxz, r10.yyyy, r10.xxxz - mul r13.xy, r10.ywyy, cb0[174].zzzz - mul r13.zw, cb0[175].xxxy, cb0[183].wwww - mad r10.yw, r10.yyyw, cb0[174].zzzz, r13.zzzw - sample_l_indexable(texture2d)(float,float,float,float) r4.w, r10.ywyy, t14.yzwx, s2, l(0.000000) - mad r10.yw, r13.xxxy, cb0[175].wwww, r13.zzzw - sample_l_indexable(texture2d)(float,float,float,float) r5.w, r10.ywyy, t14.yzwx, s2, l(0.000000) - dp2 r6.w, r10.xzxx, r10.xzxx - sqrt r6.w, r6.w - add r7.y, -cb0[174].x, cb0[174].y - add r6.w, r6.w, -cb0[174].x - div r7.y, l(1.000000, 1.000000, 1.000000, 1.000000), r7.y - mul_sat r6.w, r6.w, r7.y - mad r7.y, r6.w, l(-2.000000), l(3.000000) - mul r6.w, r6.w, r6.w - mul r6.w, r6.w, r7.y - add r5.w, -r4.w, r5.w - mad r4.w, r6.w, r5.w, r4.w - add r4.w, r4.w, l(-1.000000) - mad r4.w, cb0[175].z, r4.w, l(1.000000) - mul r2.w, r2.w, r4.w - endif - add r4.w, -r2.w, cb6[35].z - mad r2.w, cb6[35].w, r4.w, r2.w -else - mov r2.w, cb6[35].z -endif -min r2.w, r2.w, l(1.000000) -add r2.w, r2.w, l(-1.000000) -mad r10.x, cb6[34].x, r2.w, l(1.000000) -lt r2.w, l(0.001000), r10.x -if_nz r2.w - dp3 r2.w, -cb5[0].xyzx, r14.xyzx - mad r13.xyz, cb5[0].xyzx, r2.wwww, r14.xyzx - lt r2.w, r2.w, cb5[4].z - dp3 r4.w, r13.xyzx, r13.xyzx - max r4.w, r4.w, l(0.0000610351562) - rsq r4.w, r4.w - mul r13.xyz, r4.wwww, r13.xyzx - mul r13.xyz, r13.xyzx, cb5[4].yyyy - mad r13.xyz, -cb5[0].xyzx, cb5[4].zzzz, r13.xyzx - dp3 r4.w, r13.xyzx, r13.xyzx - rsq r4.w, r4.w - mul r13.xyz, r4.wwww, r13.xyzx - movc r13.xyz, r2.wwww, r13.xyzx, r14.xyzx - mad r16.xyz, r3.xyzx, r0.wwww, r13.xyzx - dp3 r2.w, r16.xyzx, r16.xyzx - max r2.w, r2.w, l(0.0000610351562) - rsq r2.w, r2.w - mul r16.xyz, r2.wwww, r16.xyzx - dp3 r2.w, r13.xyzx, r8.xyzx - mov_sat r17.z, r2.w - dp3_sat r4.w, r8.xyzx, r16.xyzx - min r17.x, r3.w, l(1.000000) - mul r5.w, cb2[21].w, cb2[21].w - mul r5.w, r5.w, r5.w - mad r6.w, r4.w, r5.w, -r4.w - mad r4.w, r6.w, r4.w, l(1.000000) - dp3_sat r6.w, r5.xyzx, r16.xyzx - add r6.w, -r6.w, l(1.000000) - mul r7.y, r6.w, r6.w - mul r7.y, r7.y, r7.y - mul r8.w, r6.w, r7.y - add r9.z, l(1.000000), -cb2[21].w - mad r10.z, -r9.z, l(0.383026), l(-0.0761947036) - mad r10.z, r9.z, r10.z, l(1.049970) - mad r9.z, r9.z, r10.z, l(0.409255) - min r9.z, r9.z, l(0.999000) - add r10.z, -r9.z, l(1.000000) - mad r10.w, -cb2[22].x, l(0.080000), l(1.000000) - mad r10.w, r10.w, l(0.0476190485), r9.w - mad_sat r12.w, -r0.y, r7.x, l(1.000000) - mad r6.w, -r7.y, r6.w, l(1.000000) - mad r6.w, r9.w, r6.w, r8.w - mul r4.w, r4.w, r4.w - div r4.w, r5.w, r4.w - mad r15.zw, -r17.xxxz, r5.wwww, r17.xxxz - mad r15.zw, r15.zzzw, r17.xxxz, r5.wwww - sqrt r15.zw, r15.zzzw - mul r15.zw, r15.zzzw, r17.zzzx - add r5.w, r15.w, r15.z - add r5.w, r5.w, l(0.000100) - div r5.w, l(0.500000), r5.w - mul r4.w, r4.w, r5.w - mul r4.w, r4.w, r6.w - min r4.w, r4.w, l(2048.000000) - mov r17.yw, cb2[21].wwww - mad r16.xyzw, r17.xyzw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r5.w, r16.xyxx, t17.yzwx, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r6.w, r16.zwzz, t17.yzwx, s1, l(0.000000) - mul r5.w, r5.w, r6.w - mul r5.w, r9.z, r5.w - div r5.w, r5.w, r10.z - mul r6.w, r10.w, r10.w - mul r5.w, r5.w, r6.w - mad r6.w, -r10.w, r10.z, l(1.000000) - div r5.w, r5.w, r6.w - add r4.w, r4.w, r5.w - mul r4.w, r4.w, cb5[4].x - // === Glass Fix: Reduce sun specular intensity === - lt r35.x, l(0.500000), cb13[13].z - if_nz r35.x - mul r4.w, r4.w, l(0.500000) - endif - max r4.w, r4.w, l(0.000000) - min r4.w, r4.w, l(1000.000000) - div r1.w, r4.w, r1.w - min r1.w, r1.w, l(1000.000000) - mul r1.w, r1.w, cb2[20].y - mad_sat r2.w, r2.w, l(0.666666687), l(0.333333343) - log r2.w, r2.w - mul r2.w, r2.w, l(1.500000) - exp r2.w, r2.w - mad r2.w, r2.w, l(1.66666663), l(-1.000000) - mad r2.w, r12.w, r2.w, l(1.000000) - mul r4.w, r2.w, l(0.159154937) - dp3 r5.w, r5.xyzx, r13.xyzx - mov_sat r5.w, -r5.w - log r5.w, r5.w - mul r5.w, r5.w, l(12.000000) - exp r5.w, r5.w - mad r6.w, r12.w, l(-2.900000), l(3.000000) - mul r5.w, r5.w, r6.w - mad r2.w, -r2.w, l(0.159154937), l(1.000000) - mad r2.w, r5.w, r2.w, r4.w - mul r13.xyz, r2.wwww, r12.xyzx - mad r13.xyz, r1.wwww, r17.zzzz, r13.xyzx - mad r13.xyz, r7.xzwx, r17.zzzz, r13.xyzx - mul r13.xyz, r13.xyzx, cb5[1].xyzx - mov r10.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r10.yzw, r10.xyxx, t16.wxyz, s1, cb0[108].x - add r1.w, -r10.x, l(1.000000) - mad r10.xyz, r13.xyzx, r10.yzwy, -r13.xyzx - mad r10.xyz, r1.wwww, r10.xyzx, r13.xyzx -else - mov r10.xyz, l(0,0,0,0) -endif -mul r13.xy, r15.xyxx, l(0.031250, 0.031250, 0.000000, 0.000000) -round_ni r13.xy, r13.xyxx -mad r1.w, r13.y, cb4[1].y, r13.x -mul r1.w, r1.w, l(8.000000) -ftoi r1.w, r1.w -mad r2.w, -cb0[85].y, cb4[2].w, r11.z -round_ni r2.w, r2.w -add r4.w, l(-1.000000), cb4[1].w -max r5.w, r2.w, l(0.000000) -min r4.w, r4.w, r5.w -mul r5.w, r4.w, l(8.000000) -ftoi r5.w, r5.w -ge r2.w, r4.w, r2.w -iadd r4.w, r5.w, cb0[110].y -mul r5.w, cb2[21].w, cb2[21].w -min r13.x, r3.w, l(1.000000) -add r13.zw, l(0.000000, 0.000000, 1.000000, 1.000000), -cb2[21].wwwy -mad r3.w, -r13.z, l(0.383026), l(-0.0761947036) -mad r3.w, r13.z, r3.w, l(1.049970) -mad r3.w, r13.z, r3.w, l(0.409255) -min r3.w, r3.w, l(0.999000) -add r6.w, -r3.w, l(1.000000) -mad r7.y, -cb2[22].x, l(0.080000), l(1.000000) -mad r7.y, r7.y, l(0.0476190485), r9.w -mad_sat r0.y, -r0.y, r7.x, l(1.000000) -mov r13.y, cb2[21].w -mad r13.yz, r13.xxyx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r8.w, r13.yzyy, t17.yzwx, s1, l(0.000000) -mad r9.z, -r7.y, r6.w, l(1.000000) -mad r10.w, r0.y, l(-2.900000), l(3.000000) -mul r7.y, r7.y, r7.y -mov r16.w, l(1.000000) -mov r17.y, l(1.000000) -mov r18.z, cb2[21].w -mov r19.xyz, l(0,0,0,0) -mov r12.w, l(1.000000) -mov r13.y, l(0) -loop - ilt r13.z, l(7), r13.y - breakc_nz r13.z - iadd r13.z, r1.w, r13.y - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r13.z, r13.z, l(0), t0.xxxx - iadd r14.w, r4.w, r13.y - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r14.w, r14.w, l(0), t0.xxxx - and r13.z, r13.z, r14.w - and r13.z, r2.w, r13.z - ishl r14.w, r13.y, l(5) - mov r20.xyz, l(0,0,0,0) - mov r15.z, r12.w - mov r15.w, r13.z - loop - breakc_z r15.w - firstbit_lo r17.z, r15.w - ishl r17.w, l(1), r17.z - xor r17.w, r15.w, r17.w - iadd r17.z, r14.w, r17.z - bfi r21.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r17.zzzz, l(1, 3, 5, 6) - bfi r18.w, l(29), l(3), r17.z, l(7) - ftou r19.w, cb5[r21.z + 6].w - ieq r19.w, r19.w, l(1) - if_nz r19.w - add r16.xyz, r2.xyzx, -cb5[r21.x + 6].xyzx - and r22.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r21.z + 6].xzyx - and r23.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r21.w + 6].yxzy - ushr r24.xyz, cb5[r21.z + 6].xzyx, l(16, 16, 16, 0) - ushr r25.xyz, cb5[r21.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r22.xyz, r22.xyzx - f16tof32 r23.xyz, r23.xyzx - f16tof32 r24.xyz, r24.xyzx - f16tof32 r25.xyw, r25.yxyz - mov r26.xz, r22.xxzx - mov r26.yw, r24.xxxz - dp4 r19.w, r16.xyzw, r26.xyzw - mov r24.x, r22.y - mov r24.z, r23.y - mov r24.w, r25.x - dp4 r20.w, r16.xyzw, r24.xyzw - mov r25.xz, r23.xxzx - dp4 r16.x, r16.xyzw, r25.xyzw - max r16.y, |r19.w|, |r20.w| - max r16.x, |r16.x|, r16.y - mad r16.y, cb5[r18.w + 6].x, l(0.500000), l(0.500000) - add r16.x, -r16.y, r16.x - mad r16.y, -cb5[r18.w + 6].x, l(0.500000), l(0.500000) - div_sat r16.x, r16.x, r16.y - add r16.x, -r16.x, l(1.000000) - mul r16.x, r16.x, r16.x - else - mov r16.x, l(1.000000) - endif - lt r16.y, l(0.500000), cb5[r21.y + 6].z - lt r16.z, r16.x, l(0.001000) - or r16.z, r16.y, r16.z - if_nz r16.z - mov r15.w, r17.w - continue - endif - ishl r16.z, r17.z, l(3) - bfi r17.z, l(29), l(3), r17.z, l(2) - lt r19.w, cb5[r16.z + 6].w, l(1.500000) - if_nz r19.w - mad r19.w, cb5[r17.z + 6].y, l(0.500000), l(0.500000) - add r22.x, r19.w, -|cb5[r17.z + 6].x| - add r22.y, -r22.x, cb5[r17.z + 6].y - add r19.w, -|r22.x|, l(1.000000) - add r19.w, -|r22.y|, r19.w - max r19.w, r19.w, l(0.000488281250) - ge r20.w, cb5[r17.z + 6].x, l(0.000000) - movc r22.z, r20.w, r19.w, -r19.w - dp3 r19.w, r22.xyzx, r22.xyzx - rsq r19.w, r19.w - mul r22.xyz, r19.wwww, r22.xyzx - add r23.xyz, -r2.xyzx, cb5[r21.x + 6].xyzx - dp3 r19.w, r23.xyzx, r23.xyzx - rsq r20.w, r19.w - mul r24.xyz, r20.wwww, r23.xyzx - ftoi r21.z, cb5[r18.w + 6].w - mul r25.xyz, r22.xyzx, cb5[r17.z + 6].zzzz - mad r26.xyz, -r25.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r23.xyzx - mad r27.xyz, r25.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r23.xyzx - ftou r22.w, cb5[r16.z + 6].w - and r22.w, r22.w, l(1) - ieq r23.w, r22.w, l(0) - not r23.w, r23.w - lt r24.w, l(0.000000), cb5[r17.z + 6].z - and r23.w, r23.w, r24.w - dp3 r24.w, r26.xyzx, r26.xyzx - sqrt r24.w, r24.w - dp3 r25.w, r27.xyzx, r27.xyzx - sqrt r25.w, r25.w - dp3 r26.w, r8.xyzx, r26.xyzx - div r26.w, r26.w, r24.w - dp3 r27.w, r8.xyzx, r27.xyzx - div r27.w, r27.w, r25.w - add r26.w, r26.w, r27.w - mul_sat r28.x, r26.w, l(0.500000) - dp3 r26.w, r26.xyzx, r27.xyzx - mad r24.w, r24.w, r25.w, r26.w - mad r24.w, r24.w, l(0.500000), l(1.000000) - div r28.y, l(1.000000, 1.000000, 1.000000, 1.000000), r24.w - dp3_sat r17.x, r8.xyzx, r24.xyzx - movc r18.xy, r23.wwww, r28.xyxx, r17.xyxx - lt r17.x, cb5[r21.w + 6].w, l(0.000000) - if_nz r17.x - mul r17.x, cb5[r21.x + 6].w, cb5[r21.x + 6].w - mul r17.x, r17.x, r19.w - mad r17.x, -r17.x, r17.x, l(1.000000) - max r17.x, r17.x, l(0.000000) - add r19.w, r19.w, l(1.000000) - div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), r19.w - and r24.w, r23.w, l(0x3f800000) - add r25.w, r18.y, -r19.w - mad r19.w, r24.w, r25.w, r19.w - mul r17.x, r17.x, r17.x - mul r17.x, r17.x, r19.w - else - mul r27.xyz, r23.xyzx, cb5[r21.x + 6].wwww - dp3 r19.w, r27.xyzx, r27.xyzx - min r19.w, r19.w, l(1.000000) - add r19.w, -r19.w, l(1.000000) - log r19.w, r19.w - mul r19.w, r19.w, cb5[r21.w + 6].w - exp r19.w, r19.w - mul r17.x, r18.y, r19.w - endif - dp3 r18.y, r24.xyzx, -r22.xyzx - add r18.y, r18.y, -cb5[r17.z + 6].z - mul_sat r18.y, r18.y, cb5[r17.z + 6].w - mul r18.y, r18.y, r18.y - movc r18.y, r22.w, l(1.000000), r18.y - mul r17.x, r17.x, r18.y - not r18.y, r23.w - ige r19.w, r21.z, l(0) - and r18.y, r18.y, r19.w - if_nz r18.y - if_z r22.w - ishl r18.y, r21.z, l(2) - mul r22.xyz, r2.yyyy, cb7[r18.y + 33].xywx - mad r22.xyz, cb7[r18.y + 32].xywx, r2.xxxx, r22.xyzx - mad r22.xyz, cb7[r18.y + 34].xywx, r2.zzzz, r22.xyzx - add r22.xyz, r22.xyzx, cb7[r18.y + 35].xywx - div_sat r22.xy, r22.xyxx, r22.zzzz - mad r22.xy, r22.xyxx, cb7[r21.z + 0].zwzz, cb7[r21.z + 0].xyxx - else - ishl r18.y, r21.z, l(2) - dp3 r27.x, -r23.xyzx, cb7[r18.y + 32].xyzx - dp3 r27.y, -r23.xyzx, cb7[r18.y + 33].xyzx - dp3 r27.z, -r23.xyzx, cb7[r18.y + 34].xyzx - lt r18.y, |r27.x|, |r27.y| - and r18.y, r18.y, l(1) - dp2 r19.w, |r27.xyxx|, icb[r18.y + 0].xyxx - lt r19.w, r19.w, |r27.z| - movc r18.y, r19.w, l(2), r18.y - dp3 r19.w, r27.xyzx, icb[r18.y + 0].xyzx - lt r19.w, r19.w, l(0.000000) - bfi r18.y, l(31), l(1), r18.y, r19.w - ushr r19.w, r18.y, l(1) - dp3 r19.w, r27.xyzx, icb[r19.w + 0].xyzx - div r22.z, l(0.000244140625), cb7[r21.z + 0].w - add r22.z, -r22.z, l(0.500000) - utof r23.x, r18.y - ult r23.y, r18.y, l(2) - and r23.y, r23.y, l(2) - dp2 r23.y, r27.xzxx, icb[r23.y + 0].xzxx - mul r23.y, r23.y, icb[r18.y + 4].z - div r23.y, r23.y, |r19.w| - mad r23.x, r23.y, r22.z, r23.x - add r23.x, r23.x, l(0.500000) - mul_sat r23.x, r23.x, l(0.166666672) - iadd r23.z, l(-1), icb[r18.y + 4].y - dp2 r23.z, r27.yzyy, icb[r23.z + 0].xyxx - mul r18.y, r23.z, icb[r18.y + 4].w - div r18.y, r18.y, |r19.w| - mad_sat r23.y, -r18.y, r22.z, l(0.500000) - mad r22.xy, r23.xyxx, cb7[r21.z + 0].zwzz, cb7[r21.z + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r18.y, r22.xyxx, t18.yxzw, s1, l(0.000000) - mul r17.x, r17.x, r18.y - endif - lt r18.y, l(0.000000), r17.x - if_nz r18.y - if_z r22.w - ftoi r19.w, cb5[r21.y + 6].x - else - add r22.xyz, r2.xyzx, -cb5[r21.x + 6].xyzx - lt r23.xyz, |r22.yzzy|, |r22.xxyx| - and r21.z, r23.y, r23.x - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx - ushr r22.w, cb5[r17.z + 6].w, l(24) - ubfe r23.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r17.z + 6].wwww - movc r22.x, r22.x, r22.w, r23.x - and r22.w, l(255), cb5[r17.z + 6].w - movc r22.y, r22.y, r23.y, r22.w - ubfe r22.w, l(8), l(8), cb5[r21.y + 6].x - and r23.x, l(255), cb5[r21.y + 6].x - movc r22.z, r22.z, r22.w, r23.x - movc r22.y, r23.z, r22.y, r22.z - movc r21.z, r21.z, r22.x, r22.y - ilt r22.x, r21.z, l(80) - movc r19.w, r22.x, r21.z, l(-1) - endif - ishl r21.z, r19.w, l(2) - mad r22.xyz, r24.xyzx, cb6[r19.w + 288].xxxx, r2.xyzx - mul r22.w, l(5.000000), cb6[r19.w + 288].y - mad r22.xyz, r8.xyzx, r22.wwww, r22.xyzx - mul r27.xyzw, r22.yyyy, cb6[r21.z + 65].xyzw - mad r27.xyzw, cb6[r21.z + 64].xyzw, r22.xxxx, r27.xyzw - mad r22.xyzw, cb6[r21.z + 66].xyzw, r22.zzzz, r27.xyzw - add r22.xyzw, r22.xyzw, cb6[r21.z + 67].xyzw - div r22.xyz, r22.xyzx, r22.wwww - ge r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx - ge r27.xyz, r22.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r28.xy, -cb6[r19.w + 344].xyxx, cb6[r19.w + 344].zwzz - mad r22.xy, r22.xyxx, r28.xyxx, cb6[r19.w + 344].xyxx - mad r28.xy, r22.xyxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r28.xy, r28.xyxx - mad r22.xy, r22.xyxx, cb6[400].zwzz, -r28.xyxx - add r29.xyzw, r22.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r30.xyzw, r29.xxzz, r29.xxzz - add r28.zw, -r22.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r29.xz, r22.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r31.xy, r22.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r32.xy, r28.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r31.xy, -r31.xyxx, r31.xyxx, r29.ywyy - add r31.xy, r31.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r31.xy, r31.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r30.xz, r30.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r22.xy, r30.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r22.xyxx - mul r33.xy, r22.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r22.xy, -r29.xzxx, r29.xzxx, r28.zwzz - add r22.xy, r22.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r34.xy, r22.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r22.xy, r29.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r33.z, r34.x - mov r33.w, r22.x - mov r32.z, r31.x - mov r32.w, r30.x - add r29.xyzw, r32.zwxz, r33.zwxz - mov r34.z, r33.y - mov r34.w, r22.y - mov r31.z, r32.y - mov r31.w, r30.z - add r22.xyw, r31.zyzw, r34.zyzw - div r30.xyz, r32.xzwx, r29.zwyz - add r30.xyz, r30.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r30.xyz, r30.xyzx, cb6[400].xxxx - div r31.xyz, r31.zywz, r22.xywx - add r31.xyz, r31.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r31.xyw, r31.xyxz, cb6[400].yyyy - mul r32.xyzw, r22.xxxy, r29.zwyz - mov r30.w, r31.x - mad r33.xyzw, r28.xyxy, cb6[400].xyxy, r30.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.z, r33.xyxx, t13.xxxx, s4, r22.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.x, r33.zwzz, t13.xxxx, s4, r22.z - mul r22.x, r22.x, r32.y - mad r21.z, r32.x, r21.z, r22.x - mad r28.zw, r28.xxxy, cb6[400].xxxy, r30.zzzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.x, r28.zwzz, t13.xxxx, s4, r22.z - mad r21.z, r32.z, r22.x, r21.z - mov r31.z, r30.x - mad r33.xyzw, r28.xyxy, cb6[400].xyxy, r31.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.x, r33.xyxx, t13.xxxx, s4, r22.z - mad r21.z, r32.w, r22.x, r21.z - mul r32.xyzw, r22.yyww, r29.xyzw - mov r31.xz, r30.yyzy - mad r30.xyzw, r28.xyxy, cb6[400].xyxy, r31.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.x, r30.xyxx, t13.xxxx, s4, r22.z - mad r21.z, r32.x, r22.x, r21.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.x, r30.zwzz, t13.xxxx, s4, r22.z - mad r21.z, r32.y, r22.x, r21.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.x, r33.zwzz, t13.xxxx, s4, r22.z - mad r21.z, r32.z, r22.x, r21.z - ige r22.x, r19.w, l(0) - or r23.xyz, r23.xyzx, r27.xyzx - or r22.y, r23.y, r23.x - or r22.y, r23.z, r22.y - and r23.x, r22.z, l(0x7fffffff) - ult r23.x, l(0x7f800000), r23.x - or r22.y, r22.y, r23.x - mad r27.xyzw, r28.xyxy, cb6[400].xyxy, r31.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r27.xyxx, t13.xxxx, s4, r22.z - mad r21.z, r32.w, r23.x, r21.z - mul r22.w, r22.w, r29.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.z, r27.zwzz, t13.xxxx, s4, r22.z - mad r21.z, r22.w, r22.z, r21.z - add r21.z, r21.z, l(-1.000000) - mad r19.w, cb6[r19.w + 288].w, r21.z, l(1.000000) - movc r19.w, r22.y, l(1.000000), r19.w - movc r19.w, r22.x, r19.w, l(1.000000) - else - mov r19.w, l(1.000000) - endif - if_nz r23.w - dp3 r21.z, r14.xyzx, r25.xyzx - mul_sat r22.x, r20.w, cb5[r17.z + 6].z - mad r22.x, r22.x, l(0.500000), r5.w - min r22.x, r22.x, l(1.000000) - div r22.x, r5.w, r22.x - mad r22.yzw, r14.xxyz, r21.zzzz, -r25.xxyz - dp3 r22.y, r26.xyzx, r22.yzwy - mul r21.z, r21.z, r21.z - mad r21.z, cb5[r17.z + 6].z, cb5[r17.z + 6].z, -r21.z - div_sat r21.z, r22.y, r21.z - mad r22.yzw, r25.xxyz, r21.zzzz, r26.xxyz - dp3 r21.z, r22.yzwy, r22.yzwy - rsq r21.z, r21.z - mul r24.xyz, r21.zzzz, r22.yzwy - else - mov r22.x, l(1.000000) - endif - if_nz r18.y - mul_sat r18.y, r20.w, cb5[r18.w + 6].y - mad r22.yzw, r3.xxyz, r0.wwww, r24.xxyz - dp3 r20.w, r22.yzwy, r22.yzwy - max r20.w, r20.w, l(0.0000610351562) - rsq r20.w, r20.w - mul r22.yzw, r20.wwww, r22.yyzw - dp3_sat r20.w, r8.xyzx, r22.yzwy - dp3_sat r21.z, r5.xyzx, r22.yzwy - lt r22.y, l(0.000000), r18.y - mul r18.y, r18.y, r18.y - mad r22.z, r21.z, l(3.600000), l(0.400000) - div r18.y, r18.y, r22.z - mad r18.y, cb2[21].w, cb2[21].w, r18.y - min r18.y, r18.y, l(1.000000) - movc r18.y, r22.y, r18.y, r5.w - mul r18.y, r18.y, r18.y - mad r22.y, r20.w, r18.y, -r20.w - mad r20.w, r22.y, r20.w, l(1.000000) - add r21.z, -r21.z, l(1.000000) - mul r22.y, r21.z, r21.z - mul r22.y, r22.y, r22.y - mul r22.z, r21.z, r22.y - mad r21.z, -r22.y, r21.z, l(1.000000) - mad r21.z, r9.w, r21.z, r22.z - mul r20.w, r20.w, r20.w - div r20.w, r18.y, r20.w - mul r20.w, r22.x, r20.w - mad r22.x, -r13.x, r18.y, r13.x - mad r22.x, r22.x, r13.x, r18.y - sqrt r22.x, r22.x - mad r22.y, -r18.x, r18.y, r18.x - mad r18.y, r22.y, r18.x, r18.y - sqrt r18.y, r18.y - mul r18.y, r13.x, r18.y - mad r18.y, r18.x, r22.x, r18.y - add r18.y, r18.y, l(0.000100) - div r18.y, l(0.500000), r18.y - mul r18.y, r18.y, r20.w - mul r18.y, r18.y, r21.z - min r18.y, r18.y, l(2048.000000) - mad r22.xy, r18.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r20.w, r22.xyxx, t17.yzwx, s1, l(0.000000) - mul r20.w, r8.w, r20.w - mul r20.w, r3.w, r20.w - div r20.w, r20.w, r6.w - mul r20.w, r7.y, r20.w - div r20.w, r20.w, r9.z - add r18.y, r18.y, r20.w - mul r18.y, r18.y, cb5[r18.w + 6].z - max r18.y, r18.y, l(0.000000) - min r18.y, r18.y, l(1000.000000) - dp3 r20.w, r8.xyzx, r24.xyzx - mad_sat r20.w, r20.w, l(0.666666687), l(0.333333343) - log r20.w, r20.w - mul r20.w, r20.w, l(1.500000) - exp r20.w, r20.w - mad r20.w, r20.w, l(1.66666663), l(-1.000000) - mad r20.w, r0.y, r20.w, l(1.000000) - mul r21.z, r20.w, l(0.159154937) - dp3 r22.x, r5.xyzx, r24.xyzx - mov_sat r22.x, -r22.x - log r22.x, r22.x - mul r22.x, r22.x, l(12.000000) - exp r22.x, r22.x - mul r22.x, r10.w, r22.x - mad r20.w, -r20.w, l(0.159154937), l(1.000000) - mad r20.w, r22.x, r20.w, r21.z - mul r22.xyz, r12.xyzx, r20.wwww - mad r22.xyz, r18.yyyy, r18.xxxx, r22.xyzx - mad r22.xyz, r7.xzwx, r18.xxxx, r22.xyzx - mul r23.xyz, r17.xxxx, cb5[r16.z + 6].xyzx - mul r23.xyz, r19.wwww, r23.xyzx - mul r23.xyz, r16.xxxx, r23.xyzx - mul r22.xyz, r22.xyzx, r23.xyzx - else - mov r22.xyz, l(0,0,0,0) - endif - else - if_z r16.y - mad r16.x, cb5[r17.z + 6].y, l(0.500000), l(0.500000) - add r23.x, r16.x, -|cb5[r17.z + 6].x| - add r23.y, -r23.x, cb5[r17.z + 6].y - add r16.x, -|r23.x|, l(1.000000) - add r16.x, -|r23.y|, r16.x - max r16.x, r16.x, l(0.000488281250) - ge r16.y, cb5[r17.z + 6].x, l(0.000000) - movc r23.z, r16.y, r16.x, -r16.x - dp3 r16.x, r23.xyzx, r23.xyzx - rsq r16.x, r16.x - mul r23.xyz, r16.xxxx, r23.xyzx - add r24.xyz, -r2.xyzx, cb5[r21.x + 6].xyzx - dp3 r16.x, r24.xyzx, r24.xyzx - rsq r16.y, r16.x - mul r25.xyz, r16.yyyy, r24.xyzx - ftoi r16.y, cb5[r18.w + 6].w - mul r18.xyw, r23.xyxz, cb5[r17.z + 6].zzzz - mad r26.xyz, -r18.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - mad r18.xyw, r18.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r24.xyxz - ftou r16.z, cb5[r16.z + 6].w - and r16.z, r16.z, l(1) - ieq r17.x, r16.z, l(0) - not r17.x, r17.x - lt r19.w, l(0.000000), cb5[r17.z + 6].z - and r17.x, r17.x, r19.w - dp3 r19.w, r26.xyzx, r26.xyzx - sqrt r19.w, r19.w - dp3 r20.w, r18.xywx, r18.xywx - sqrt r20.w, r20.w - dp3 r18.x, r26.xyzx, r18.xywx - mad r18.x, r19.w, r20.w, r18.x - mad r18.x, r18.x, l(0.500000), l(1.000000) - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x - movc r18.x, r17.x, r18.x, l(1.000000) - lt r18.y, cb5[r21.w + 6].w, l(0.000000) - if_nz r18.y - mul r18.y, cb5[r21.x + 6].w, cb5[r21.x + 6].w - mul r18.y, r16.x, r18.y - mad r18.y, -r18.y, r18.y, l(1.000000) - max r18.y, r18.y, l(0.000000) - add r16.x, r16.x, l(1.000000) - div r16.x, l(1.000000, 1.000000, 1.000000, 1.000000), r16.x - and r18.w, r17.x, l(0x3f800000) - add r19.w, -r16.x, r18.x - mad r16.x, r18.w, r19.w, r16.x - mul r18.y, r18.y, r18.y - mul r16.x, r16.x, r18.y - else - mul r26.xyz, r24.xyzx, cb5[r21.x + 6].wwww - dp3 r18.y, r26.xyzx, r26.xyzx - min r18.y, r18.y, l(1.000000) - add r18.y, -r18.y, l(1.000000) - log r18.y, r18.y - mul r18.y, r18.y, cb5[r21.w + 6].w - exp r18.y, r18.y - mul r16.x, r18.y, r18.x - endif - dp3 r18.x, r25.xyzx, -r23.xyzx - add r18.x, r18.x, -cb5[r17.z + 6].z - mul_sat r18.x, r18.x, cb5[r17.z + 6].w - mul r18.x, r18.x, r18.x - movc r18.x, r16.z, l(1.000000), r18.x - mul r16.x, r16.x, r18.x - not r17.x, r17.x - ige r18.x, r16.y, l(0) - and r17.x, r17.x, r18.x - if_nz r17.x - if_z r16.z - ishl r17.x, r16.y, l(2) - mul r18.xyw, r2.yyyy, cb7[r17.x + 33].xyxw - mad r18.xyw, cb7[r17.x + 32].xyxw, r2.xxxx, r18.xyxw - mad r18.xyw, cb7[r17.x + 34].xyxw, r2.zzzz, r18.xyxw - add r18.xyw, r18.xyxw, cb7[r17.x + 35].xyxw - div_sat r18.xy, r18.xyxx, r18.wwww - mad r18.xy, r18.xyxx, cb7[r16.y + 0].zwzz, cb7[r16.y + 0].xyxx - else - ishl r17.x, r16.y, l(2) - dp3 r23.x, -r24.xyzx, cb7[r17.x + 32].xyzx - dp3 r23.y, -r24.xyzx, cb7[r17.x + 33].xyzx - dp3 r23.z, -r24.xyzx, cb7[r17.x + 34].xyzx - lt r17.x, |r23.x|, |r23.y| - and r17.x, r17.x, l(1) - dp2 r18.w, |r23.xyxx|, icb[r17.x + 0].xyxx - lt r18.w, r18.w, |r23.z| - movc r17.x, r18.w, l(2), r17.x - dp3 r18.w, r23.xyzx, icb[r17.x + 0].xyzx - lt r18.w, r18.w, l(0.000000) - bfi r17.x, l(31), l(1), r17.x, r18.w - ushr r18.w, r17.x, l(1) - dp3 r18.w, r23.xyzx, icb[r18.w + 0].xyzx - div r19.w, l(0.000244140625), cb7[r16.y + 0].w - add r19.w, -r19.w, l(0.500000) - utof r20.w, r17.x - ult r21.z, r17.x, l(2) - and r21.z, r21.z, l(2) - dp2 r21.z, r23.xzxx, icb[r21.z + 0].xzxx - mul r21.z, r21.z, icb[r17.x + 4].z - div r21.z, r21.z, |r18.w| - mad r20.w, r21.z, r19.w, r20.w - add r20.w, r20.w, l(0.500000) - mul_sat r24.x, r20.w, l(0.166666672) - iadd r20.w, l(-1), icb[r17.x + 4].y - dp2 r20.w, r23.yzyy, icb[r20.w + 0].xyxx - mul r17.x, r20.w, icb[r17.x + 4].w - div r17.x, r17.x, |r18.w| - mad_sat r24.y, -r17.x, r19.w, l(0.500000) - mad r18.xy, r24.xyxx, cb7[r16.y + 0].zwzz, cb7[r16.y + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r16.y, r18.xyxx, t18.yxzw, s1, l(0.000000) - mul r16.x, r16.y, r16.x - endif - lt r16.x, l(0.000000), r16.x - if_nz r16.x - if_z r16.z - ftoi r16.x, cb5[r21.y + 6].x - else - add r18.xyw, r2.xyxz, -cb5[r21.x + 6].xyxz - lt r21.xzw, |r18.yyww|, |r18.xxxy| - and r16.y, r21.z, r21.x - lt r18.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyxw - ushr r16.z, cb5[r17.z + 6].w, l(24) - ubfe r21.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb5[r17.z + 6].wwww - movc r16.z, r18.x, r16.z, r21.x - and r17.x, l(255), cb5[r17.z + 6].w - movc r17.x, r18.y, r21.z, r17.x - ubfe r17.z, l(8), l(8), cb5[r21.y + 6].x - and r18.x, l(255), cb5[r21.y + 6].x - movc r17.z, r18.w, r17.z, r18.x - movc r17.x, r21.w, r17.x, r17.z - movc r16.y, r16.y, r16.z, r17.x - ilt r16.z, r16.y, l(80) - movc r16.x, r16.z, r16.y, l(-1) - endif - ishl r16.y, r16.x, l(2) - mad r18.xyw, r25.xyxz, cb6[r16.x + 288].xxxx, r2.xyxz - mul r16.z, l(5.000000), cb6[r16.x + 288].y - mad r18.xyw, r8.xyxz, r16.zzzz, r18.xyxw - mul r21.xyzw, r18.yyyy, cb6[r16.y + 65].xyzw - mad r21.xyzw, cb6[r16.y + 64].xyzw, r18.xxxx, r21.xyzw - mad r21.xyzw, cb6[r16.y + 66].xyzw, r18.wwww, r21.xyzw - add r21.xyzw, r21.xyzw, cb6[r16.y + 67].xyzw - div r18.xyw, r21.xyxz, r21.wwww - ge r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xywx - ge r23.xyz, r18.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r16.yz, -cb6[r16.x + 344].xxyx, cb6[r16.x + 344].zzwz - mad r16.yz, r18.xxyx, r16.yyzy, cb6[r16.x + 344].xxyx - mad r17.xz, r16.yyzy, cb6[400].zzwz, l(0.500000, 0.000000, 0.500000, 0.000000) - round_ni r17.xz, r17.xxzx - mad r16.yz, r16.yyzy, cb6[400].zzwz, -r17.xxzx - add r24.xyzw, r16.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r25.xyzw, r24.xxzz, r24.xxzz - add r18.xy, -r16.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) - min r24.xz, r16.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r26.xy, r16.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r27.xy, r18.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r26.xy, -r26.xyxx, r26.xyxx, r24.ywyy - add r26.xy, r26.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r26.xy, r26.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r25.xz, r25.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r16.yz, r25.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r16.yyzy - mul r28.xy, r16.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r16.yz, -r24.xxzx, r24.xxzx, r18.xxyx - add r16.yz, r16.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r29.xy, r16.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r16.yz, r24.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r28.z, r29.x - mov r28.w, r16.y - mov r27.z, r26.x - mov r27.w, r25.x - add r24.xyzw, r27.zwxz, r28.zwxz - mov r29.z, r28.y - mov r29.w, r16.z - mov r26.z, r27.y - mov r26.w, r25.z - add r25.xyz, r26.zywz, r29.zywz - div r27.xyz, r27.xzwx, r24.zwyz - add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r27.xyz, r27.xyzx, cb6[400].xxxx - div r26.xyz, r26.zywz, r25.xyzx - add r26.xyz, r26.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r26.xyw, r26.xyxz, cb6[400].yyyy - mul r28.xyzw, r24.zwyz, r25.xxxy - mov r27.w, r26.x - mad r29.xyzw, r17.xzxz, cb6[400].xyxy, r27.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.y, r29.xyxx, t13.xxxx, s4, r18.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.z, r29.zwzz, t13.xxxx, s4, r18.w - mul r16.z, r16.z, r28.y - mad r16.y, r28.x, r16.y, r16.z - mad r18.xy, r17.xzxx, cb6[400].xyxx, r27.zwzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.z, r18.xyxx, t13.xxxx, s4, r18.w - mad r16.y, r28.z, r16.z, r16.y - mov r26.z, r27.x - mad r29.xyzw, r17.xzxz, cb6[400].xyxy, r26.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.z, r29.xyxx, t13.xxxx, s4, r18.w - mad r16.y, r28.w, r16.z, r16.y - mul r28.xyzw, r24.xyzw, r25.yyzz - mov r26.xz, r27.yyzy - mad r27.xyzw, r17.xzxz, cb6[400].xyxy, r26.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.z, r27.xyxx, t13.xxxx, s4, r18.w - mad r16.y, r28.x, r16.z, r16.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.z, r27.zwzz, t13.xxxx, s4, r18.w - mad r16.y, r28.y, r16.z, r16.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.z, r29.zwzz, t13.xxxx, s4, r18.w - mad r16.y, r28.z, r16.z, r16.y - ige r16.z, r16.x, l(0) - or r21.xyz, r21.xyzx, r23.xyzx - or r18.x, r21.y, r21.x - or r18.x, r21.z, r18.x - and r18.y, r18.w, l(0x7fffffff) - ult r18.y, l(0x7f800000), r18.y - or r18.x, r18.y, r18.x - mad r21.xyzw, r17.xzxz, cb6[400].xyxy, r26.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.x, r21.xyxx, t13.xxxx, s4, r18.w - mad r16.y, r28.w, r17.x, r16.y - mul r17.x, r24.y, r25.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r21.zwzz, t13.xxxx, s4, r18.w - mad r16.y, r17.x, r17.z, r16.y - add r16.y, r16.y, l(-1.000000) - mad r16.x, cb6[r16.x + 288].w, r16.y, l(1.000000) - movc r16.x, r18.x, l(1.000000), r16.x - movc r16.x, r16.z, r16.x, l(1.000000) - else - mov r16.x, l(1.000000) - endif - else - mov r16.x, l(1.000000) - endif - mul r15.z, r15.z, r16.x - mov r22.xyz, l(0,0,0,0) - endif - add r20.xyz, r20.xyzx, r22.xyzx - mov r15.w, r17.w - endloop - mov r12.w, r15.z - add r19.xyz, r19.xyzx, r20.xyzx - iadd r13.y, r13.y, l(1) -endloop -add r0.y, l(1.000000), -cb2[0].y -mad r0.w, r2.y, cb0[156].w, cb0[157].w -max r0.w, r0.w, l(0.010000) -mad r1.w, r0.z, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.w, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.w, r2.x, r0.w -mad r2.x, r2.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.w, r0.w, r2.x -mul r0.w, r0.w, -r1.w -mul r2.xzw, r0.wwww, cb0[155].xxyz -mul r2.xzw, r2.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) -exp r2.xzw, r2.xxzw -dp3 r0.w, -r5.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r3.x, r0.wwww, cb0[155].wwww -add r1.w, r1.w, -r3.x -lt r3.x, l(0.000000), cb0[163].z -if_nz r3.x - and r11.w, l(7), cb0[108].w - imad r3.xyz, r11.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r3.x, r3.y, r3.z, r3.x - imad r3.y, r3.z, r3.x, r3.y - imad r3.z, r3.x, r3.y, r3.z - imad r7.x, r3.y, r3.z, r3.x - dp3 r3.x, -r5.xyzx, -r4.xyzx - add r3.w, r2.y, -cb0[44].y - lt r4.x, l(5.960464478E-08), r3.x - div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.x - and r3.x, r3.x, r4.x - mul r3.x, r3.x, cb0[163].w - div r4.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.z - mul r4.y, r3.x, r4.x - mad r4.z, r4.y, r3.w, cb0[44].y - mad r3.w, -r4.y, r3.w, r3.w - mul r4.y, r3.w, cb0[159].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - add r4.w, r4.z, -cb0[159].x - mul r4.w, r4.w, cb0[159].z - max r4.yw, r4.yyyw, l(0.000000, -127.000000, 0.000000, -127.000000) - exp r4.w, -r4.w - mul r4.w, r4.w, cb0[159].y - lt r5.x, l(5.960464478E-08), |r4.y| - exp r5.y, -r4.y - add r5.y, -r5.y, l(1.000000) - div r5.y, r5.y, r4.y - mad r4.y, -r4.y, l(0.240226507), l(0.693147182) - movc r4.y, r5.x, r5.y, r4.y - add r4.z, r4.z, -cb0[162].z - mul r4.z, r4.z, cb0[162].x - max r4.z, r4.z, l(-127.000000) - exp r4.z, -r4.z - mul r4.z, r4.z, cb0[162].y - lt r5.x, l(5.960464478E-08), |r3.w| - exp r5.y, -r3.w - add r5.y, -r5.y, l(1.000000) - div r5.y, r5.y, r3.w - mad r3.w, -r3.w, l(0.240226507), l(0.693147182) - movc r3.w, r5.x, r5.y, r3.w - mul r3.w, r3.w, r4.z - mad r3.w, r4.w, r4.y, r3.w - mad r3.x, -r3.x, r4.x, l(1.000000) - mul r3.x, r0.z, r3.x - mul r3.x, r3.x, r3.w - exp r3.x, -r3.x - min r3.x, r3.x, l(1.000000) - max r3.x, r3.x, cb0[161].w - mad_sat r4.xy, r0.zzzz, cb0[160].ywyy, cb0[160].xzxx - add r3.x, r3.x, r4.x - add r3.x, r4.y, r3.x - min r3.x, r3.x, l(1.000000) - imad r7.y, r3.z, r7.x, r3.y - ushr r3.yz, r7.xxyx, l(0, 16, 16, 0) - utof r3.yz, r3.yyzy - mad r3.yz, r3.yyzy, l(0.000000, 0.0000305180438, 0.0000305180438, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) - mad r3.yz, r3.yyzy, cb0[167].wwww, r15.xxyx - mul r4.xy, r3.yzyy, cb0[165].xyxx - mad r3.y, r11.z, cb0[164].x, cb0[164].y - log r3.y, r3.y - mul r3.y, r3.y, cb0[164].z - div r4.z, r3.y, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r4.xyzw, r4.xyzx, t5.xyzw, s1, l(0.000000) - add r3.y, r11.z, -cb0[166].z - mul_sat r3.y, r3.y, l(1000000.000000) - add r4.xyzw, r4.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r4.xyzw, r3.yyyy, r4.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r3.y, -r3.x, l(1.000000) - mul r3.yzw, r3.yyyy, cb0[161].xxyz - mad r3.yzw, r3.yyzw, r4.wwww, r4.xxyz - mul r3.x, r3.x, r4.w -else - add r2.y, r2.y, -cb0[44].y - mul r4.x, r2.y, cb0[159].z - mul r2.y, r2.y, cb0[162].x - max r2.y, r2.y, l(-127.000000) - add r4.y, cb0[44].y, -cb0[159].x - mul r4.y, r4.y, cb0[159].z - max r4.xy, r4.xyxx, l(-127.000000, -127.000000, 0.000000, 0.000000) - exp r4.y, -r4.y - mul r4.y, r4.y, cb0[159].y - lt r4.z, l(5.960464478E-08), |r4.x| - exp r4.w, -r4.x - add r4.w, -r4.w, l(1.000000) - div r4.w, r4.w, r4.x - mad r4.x, -r4.x, l(0.240226507), l(0.693147182) - movc r4.x, r4.z, r4.w, r4.x - add r4.z, cb0[44].y, -cb0[162].z - mul r4.z, r4.z, cb0[162].x - max r4.z, r4.z, l(-127.000000) - exp r4.z, -r4.z - mul r4.z, r4.z, cb0[162].y - lt r4.w, l(5.960464478E-08), |r2.y| - exp r5.x, -r2.y - add r5.x, -r5.x, l(1.000000) - div r5.x, r5.x, r2.y - mad r2.y, -r2.y, l(0.240226507), l(0.693147182) - movc r2.y, r4.w, r5.x, r2.y - mul r2.y, r2.y, r4.z - mad r2.y, r4.y, r4.x, r2.y - mul r2.y, r0.z, r2.y - exp r2.y, -r2.y - min r2.y, r2.y, l(1.000000) - max r2.y, r2.y, cb0[161].w - mad_sat r4.xy, r0.zzzz, cb0[160].ywyy, cb0[160].xzxx - add r0.z, r2.y, r4.x - add r0.z, r4.y, r0.z - min r3.x, r0.z, l(1.000000) - add r0.z, -r3.x, l(1.000000) - mul r3.yzw, r0.zzzz, cb0[161].xxyz -endif -// === Glass Fix: Reduce clustered lights and overall brightness === -lt r35.x, l(0.500000), cb13[13].z -if_nz r35.x - mul r19.xyz, r19.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r1.xyz, r1.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) -endif -dp3 r0.z, r1.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r1.xyz, -r0.zzzz, r1.xyzx -mad r1.xyz, cb0[184].wwww, r1.xyzx, r0.zzzz -mul r4.xyz, r6.xyzx, r13.wwww -mad r1.xyz, r1.xyzx, cb0[184].xyzx, r4.xyzx -mad r4.xyz, r19.xyzx, r12.wwww, r10.xyzx -add r1.xyz, r1.xyzx, r4.xyzx -mul r4.xyz, r2.xzwx, r3.xxxx -mad r0.z, r0.w, r0.w, l(1.000000) -mul r0.z, r0.z, l(0.0596831031) -mad r5.xyz, cb0[156].xyzx, r0.zzzz, cb0[158].xyzx -mad r0.z, -cb0[155].w, cb0[155].w, l(1.000000) -mul r0.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r0.w, r0.w, r1.w -max r0.w, r0.w, l(0.001000) -div r0.z, r0.z, r0.w -mad_sat r5.xyz, cb0[157].xyzx, r0.zzzz, r5.xyzx -mul r5.xyz, r5.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -add r2.xyz, -r2.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r2.xyz, r2.xyzx, r5.xyzx -mad r2.xyz, r2.xyzx, r3.xxxx, r3.yzwy -mul r2.xyz, r0.yyyy, r2.xyzx -// === Glass Transparency Fix === -lt r35.x, l(0.500000), cb13[13].z -if_nz r35.x - // Boost transmittance: lerp(r4, 1, 0.5) - add r35.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r35.xyz, r35.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r4.xyzx - // Reduce inscatter intensity - mul r36.xyz, r2.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000) - // Modified fog blend - mad r1.xyz, r1.xyzx, r35.xyzx, r36.xyzx -else - // Original fog blend - mad r1.xyz, r1.xyzx, r4.xyzx, r2.xyzx -endif -mul r1.xyz, r0.xxxx, r1.xyzx -mul r1.w, r0.y, r0.x -min o1.xy, r9.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) -dp3 r0.x, r1.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mul r0.x, r1.w, r0.x -max r0.x, r1.w, r0.x -mul_sat r0.x, r0.x, l(10.000000) -lt r0.x, l(0.500000), r0.x -and o1.z, r0.x, l(0x3f800000) -// === Glass Highlight Compression === -lt r35.x, l(0.500000), cb13[13].z -if_nz r35.x - dp3 r35.y, r1.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) - lt r35.z, l(0.500000), r35.y - if_nz r35.z - add r35.w, r35.y, l(-0.500000) - mul r35.w, r35.w, l(-0.666667) - exp r35.w, r35.w - add r35.w, -r35.w, l(1.000000) - mad r35.w, r35.w, l(1.500000), l(0.500000) - max r36.x, r35.y, l(0.001000) - div r36.x, r35.w, r36.x - mul r1.xyz, r1.xyzx, r36.xxxx - endif -endif -mov o0.xyzw, r1.xyzw -mov o1.w, l(0) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0x859412D4.ps_5_0.asm b/src/games/endfield/glass/0x859412D4.ps_5_0.asm deleted file mode 100644 index 04545a0057..0000000000 --- a/src/games/endfield/glass/0x859412D4.ps_5_0.asm +++ /dev/null @@ -1,1840 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Fri Feb 6 19:58:05 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xyz -// TEXCOORD 0 xyzw 1 NONE float xyzw -// TEXCOORD 1 xyzw 2 NONE float xyz -// TEXCOORD 2 xyz 3 NONE float xyz -// TEXCOORD 3 xyzw 4 NONE float xyzw -// TEXCOORD 4 xyzw 5 NONE float xyzw -// TEXCOORD 5 xyz 6 NONE float xyz -// TEXCOORD 6 xyz 7 NONE float xyz -// TEXCOORD 7 x 8 NONE uint x -// SV_IsFrontFace 0 x 9 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[244], immediateIndexed -dcl_constantbuffer CB1[4085], dynamicIndexed -dcl_constantbuffer CB2[28], immediateIndexed -dcl_constantbuffer CB3[259], dynamicIndexed -dcl_constantbuffer CB4[3], immediateIndexed -dcl_constantbuffer CB5[2054], dynamicIndexed -dcl_constantbuffer CB6[715], dynamicIndexed -dcl_constantbuffer CB7[160], dynamicIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_comparison -dcl_sampler s4, mode_default -dcl_sampler s5, mode_default -dcl_sampler s6, mode_default -dcl_resource_structured t0, 4 -dcl_resource_texture2darray (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture3d (float,float,float,float) t5 -dcl_resource_texture3d (float,float,float,float) t6 -dcl_resource_texture3d (float,float,float,float) t7 -dcl_resource_texture3d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture3d (float,float,float,float) t10 -dcl_resource_texture3d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture2d (float,float,float,float) t17 -dcl_resource_texture2d (float,float,float,float) t18 -dcl_input_ps_siv linear noperspective v0.xyz, position -dcl_input_ps linear v1.xyzw -dcl_input_ps linear v2.xyz -dcl_input_ps linear v3.xyz -dcl_input_ps linear v4.xyzw -dcl_input_ps linear v5.xyzw -dcl_input_ps linear v6.xyz -dcl_input_ps linear v7.xyz -dcl_input_ps constant v8.x -dcl_input_ps_sgv constant v9.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 37 -mul r0.xy, v0.xyxx, cb0[82].zwzz -mad r0.xy, r0.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -mul r1.xyzw, -r0.yyyy, cb0[25].xyzw -mad r0.xyzw, cb0[24].xyzw, r0.xxxx, r1.xyzw -mad r0.xyzw, cb0[26].xyzw, v0.zzzz, r0.xyzw -add r0.xyzw, r0.xyzw, cb0[27].xyzw -div r0.xyz, r0.xyzx, r0.wwww -mul r1.x, r0.y, cb0[1].z -mad r1.x, cb0[0].z, r0.x, r1.x -mad r1.x, cb0[2].z, r0.z, r1.x -add r1.x, r1.x, cb0[3].z -mov r1.z, |r1.x| -lt r1.w, l(0.000000), v4.w -movc r1.w, r1.w, l(1.000000), l(-1.000000) -eq r2.x, l(0.000000), cb0[86].w -add r2.yzw, -r0.xxyz, cb0[44].xxyz -mov r3.x, cb0[0].z -mov r3.y, cb0[1].z -mov r3.z, cb0[2].z -movc r2.xyz, r2.xxxx, r2.yzwy, r3.xyzx -dp3 r2.w, r2.xyzx, r2.xyzx -max r3.w, r2.w, l(9.999999939E-09) -rsq r3.w, r3.w -mul r4.xyz, r2.xyzx, r3.wwww -mul r2.w, r2.w, r3.w -add r5.xyzw, -v5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000) -mad r5.xyzw, cb2[1].yyyy, r5.xyzw, v5.xyzw -mul r5.xyzw, r5.xyzw, cb2[4].xyzw -mul r5.xyzw, r5.xyzw, cb2[1].zzzw -add r4.w, l(1.000000), -cb2[3].x -mad r4.w, cb0[109].x, cb2[3].x, r4.w -div r5.xyz, r5.xyzx, r4.wwww -mul r6.xy, v2.xyxx, cb2[1].xxxx -mad r7.xyzw, v1.zzww, cb2[1].xxxx, -r6.xxyy -add r7.xyzw, r7.xyzw, v2.xxyy -mul r8.xyzw, r7.yyww, cb2[8].yyyy -mad r8.xyzw, v1.xxyy, cb2[8].xxxx, r8.xyzw -mad r8.xyzw, cb2[6].xxyy, cb0[183].wwww, r8.xyzw -mad r8.xyzw, cb2[6].zzww, r6.xxxx, r8.xyzw -add r8.xyzw, r8.xyzw, l(-0.500000, -0.500000, -0.500000, -0.500000) -mul r8.xyzw, r8.xyzw, cb2[7].xyzw -add r6.xz, r8.zzwz, r8.xxyx -add r6.xz, r6.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000) -mad r8.xy, r6.xzxx, cb2[9].xyxx, cb2[9].zwzz -ishl r4.w, v8.x, l(4) -add r6.x, cb1[r4.w + 3].y, cb1[r4.w + 3].x -add r6.x, r6.x, cb1[r4.w + 3].z -frc r6.x, r6.x -mul r6.z, r6.x, cb2[26].z -min r6.z, r6.z, l(0.500000) -add r6.z, r6.z, l(1.000000) -mul r8.z, r6.z, r8.y -mad r6.xz, cb2[26].zzzz, r6.xxxx, r8.xxzx -add r6.w, l(1.000000), cb0[108].x -sample_b_indexable(texture2d)(float,float,float,float) r8.xyzw, r6.xzxx, t2.xyzw, s4, r6.w -mov r6.x, l(1.000000) -mov r6.w, r8.x -add r9.xyzw, -r8.xyzw, r6.xxxw -mad r8.xyzw, cb2[5].yyyy, r9.xyzw, r8.xyzw -mul r5.xyzw, r5.xyzw, r8.xyzw -mul r8.xyzw, r7.yyww, cb2[23].yyyy -mad r8.xyzw, v1.xxyy, cb2[23].xxxx, r8.xyzw -mad r8.xyzw, cb2[21].xxyy, cb0[183].wwww, r8.xyzw -mad r8.xyzw, cb2[21].zzww, r6.yyyy, r8.xyzw -add r8.xyzw, r8.xyzw, l(-0.500000, -0.500000, -0.500000, -0.500000) -mul r8.xyzw, r8.xyzw, cb2[22].xyzw -add r6.xz, r8.zzwz, r8.xxyx -add r6.xz, r6.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000) -mad r6.xz, r6.xxzx, cb2[20].xxyx, cb2[20].zzwz -sample_b_indexable(texture2d)(float,float,float,float) r6.xzw, r6.xzxx, t3.xzyw, s5, cb0[108].x -mul r6.x, r6.x, r6.w -mad r6.xz, r6.xxzx, l(2.000000, 0.000000, 2.000000, 0.000000), l(-1.000000, 0.000000, -1.000000, 0.000000) -dp2 r6.w, r6.xzxx, r6.xzxx -min r6.w, r6.w, l(1.000000) -add r6.w, -r6.w, l(1.000000) -sqrt r6.w, r6.w -max r8.z, r6.w, l(1.000000017E-16) -mul r8.xy, r6.xzxx, cb2[19].xxxx -dp3 r6.x, r8.xyzx, r8.xyzx -rsq r6.x, r6.x -mul r6.xzw, r6.xxxx, r8.xxyz -mul r8.xyz, v3.zxyz, v4.yzxy -mad r8.xyz, v3.yzxy, v4.zxyz, -r8.xyzx -mul r8.xyz, r1.wwww, r8.xyzx -mul r8.xyz, r6.zzzz, r8.xyzx -mad r8.xyz, r6.xxxx, v4.xyzx, r8.xyzx -mad r6.xzw, r6.wwww, v3.xxyz, r8.xxyz -mul r7.xyzw, r7.xyzw, cb2[15].yyyy -mad r7.xyzw, v1.xxyy, cb2[15].xxxx, r7.xyzw -mad r7.xyzw, cb2[13].xxyy, cb0[183].wwww, r7.xyzw -mad r7.xyzw, cb2[13].zzww, r6.yyyy, r7.xyzw -add r7.xyzw, r7.xyzw, l(-0.500000, -0.500000, -0.500000, -0.500000) -mul r7.xyzw, r7.xyzw, cb2[14].xyzw -add r7.xy, r7.zwzz, r7.xyxx -add r7.xy, r7.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mad r7.xy, r7.xyxx, cb2[12].xyxx, cb2[12].zwzz -sample_b_indexable(texture2d)(float,float,float,float) r1.w, r7.xyxx, t4.yzwx, s6, cb0[108].x -mad r6.y, v2.z, cb2[1].x, cb2[11].y -add r7.x, -v5.x, v5.w -mad r7.x, cb2[26].w, r7.x, v5.x -add r7.x, r7.x, l(-1.000000) -mad r7.x, cb2[27].x, r7.x, l(1.000000) -add_sat r7.x, r7.x, -cb2[27].y -mad r6.y, r6.y, l(2.020000), l(-0.00999999046) -mad r6.y, r7.x, r6.y, l(-1.000000) -add r1.w, r1.w, -r6.y -mul_sat r6.y, r1.w, cb2[11].z -add r1.w, -r1.w, cb2[11].w -mul_sat r1.w, r1.w, cb2[11].z -movc r7.xyz, v9.xxxx, r6.xzwx, -r6.xzwx -mul r5.w, r5.w, r6.y -ne r6.x, l(0.000000), cb2[17].x -add r6.yz, r1.zzzz, -cb2[17].yywy -add r6.w, -cb2[17].y, cb2[17].z -div_sat r6.y, r6.y, r6.w -add r6.w, -cb2[17].w, cb2[18].x -div_sat r6.z, r6.z, r6.w -mul r6.y, r6.z, r6.y -movc r6.x, r6.x, r6.y, l(1.000000) -mul r5.w, r5.w, r6.x -add r6.x, v5.w, l(-1.000000) -mad r6.x, cb2[26].x, r6.x, l(1.000000) -mul r5.w, r5.w, r6.x -dp3 r6.x, v3.xyzx, r4.xyzx -log r6.x, |r6.x| -mul r6.x, r6.x, cb2[24].y -exp r6.x, r6.x -add r6.x, r6.x, l(-1.000000) -mad r6.x, cb2[24].w, r6.x, l(1.000000) -mul r5.w, r5.w, r6.x -add r4.w, l(1.000000), -cb1[r4.w + 4].y -mul_sat r4.w, r4.w, r5.w -mul r6.xyz, r1.wwww, cb2[16].xyzx -mad r6.xyz, r6.xyzx, cb2[1].zzzz, -r5.xyzx -mad r5.xyz, r1.wwww, r6.xyzx, r5.xyzx -max r5.xyz, r5.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r5.xyz, r5.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) -mul r6.xyz, r5.xyzx, cb2[25].xxxx -add r1.w, l(1.000000), cb2[0].w -add_sat r1.w, r1.w, -cb2[0].x -lt r1.w, l(0.500000), r1.w -max r5.w, v6.z, l(9.999999939E-09) -div r8.xy, v6.xyxx, r5.wwww -max r5.w, v7.z, l(9.999999939E-09) -div r8.zw, v7.xxxy, r5.wwww -add r8.xy, -r8.zwzz, r8.xyxx -mul r9.xy, r8.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) -sqrt r9.xy, |r9.xyxx| -sqrt r9.xy, r9.xyxx -mov r8.z, -r8.y -lt r8.yw, l(0.000000, 0.000000, 0.000000, 0.000000), r8.xxxz -lt r8.xz, r8.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r8.xy, -r8.ywyy, r8.xzxx -itof r8.xy, r8.xyxx -mul r8.xy, r8.xyxx, r9.xyxx -mad r8.xy, r8.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -and r8.xy, r1.wwww, r8.xyxx -mul r1.w, l(0.080000), cb2[25].w -mul r9.xyz, r6.xyzx, cb2[25].yyyy -mad r9.xyz, r5.xyzx, cb2[25].xxxx, -r9.xyzx -mad r1.w, -r1.w, cb2[25].y, r1.w -mad r6.xyz, r6.xyzx, cb2[25].yyyy, r1.wwww -dp3 r1.w, r7.xyzx, r4.xyzx -mad r10.xyzw, cb2[25].zzzz, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r5.w, r10.x, r10.x -max r1.w, r1.w, l(0.000000) -mul r6.w, r1.w, l(-9.280000) -exp r6.w, r6.w -min r5.w, r5.w, r6.w -mad r5.w, r5.w, r10.x, r10.y -mad r8.zw, r5.wwww, l(0.000000, 0.000000, -1.040000, 1.040000), r10.zzzw -eq r5.w, l(1.000000), cb0[113].y -mul r10.xyzw, r0.yyyy, cb0[241].xyzw -mad r10.xyzw, cb0[240].xyzw, r0.xxxx, r10.xyzw -mad r10.xyzw, cb0[242].xyzw, r0.zzzz, r10.xyzw -add r10.xyzw, r10.xyzw, cb0[243].xyzw -div r6.w, l(1.000000, 1.000000, 1.000000, 1.000000), r10.w -mul r10.xyz, r10.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) -mul r10.xyz, r6.wwww, r10.xyzx -mad_sat r10.xy, r10.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -mul r10.xy, r10.xyxx, cb0[82].xyxx -ftou r11.xy, r10.xyxx -mad r6.w, cb0[84].z, r10.z, cb0[84].w -div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r6.w -ftou r1.xy, v0.xyxx -movc r10.xyz, r5.wwww, r11.xyzx, r1.xyzx -mad r1.xyz, r7.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r0.xyzx -mad r11.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r11.xyz, r1.xzyx, -r11.xyzx -max r5.w, |r11.y|, |r11.x| -add r5.w, r5.w, l(-464.000000) -mul_sat r5.w, r5.w, l(0.031250) -add r6.w, |r11.z|, l(-208.000000) -mul_sat r6.w, r6.w, l(0.031250) -max r5.w, r5.w, r6.w -ne r6.w, l(0.000000), cb0[210].w -lt r9.w, r5.w, l(1.000000) -and r6.w, r6.w, r9.w -if_nz r6.w - mad r11.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r11.xyz, r1.xzyx, -r11.xyzx - max r6.w, |r11.y|, |r11.x| - add r6.w, r6.w, l(-29.000000) - mul_sat r6.w, r6.w, l(0.500000) - add r9.w, |r11.z|, l(-13.000000) - mul_sat r9.w, r9.w, l(0.500000) - max r6.w, r6.w, r9.w - lt r9.w, r6.w, l(1.000000) - if_nz r9.w - mad r11.xyz, r1.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r12.xyz, r11.xyzx, cb0[211].xyzx - round_ni r12.xyz, r12.xyzx - mad r11.xyz, r11.xyzx, cb0[211].xyzx, -r12.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r11.xyzx, t6.xyzw, s1, l(0.000000) - add r9.w, -r6.w, l(1.000000) - mul r12.w, l(0.500000), cb0[211].y - mad r13.x, -cb0[211].y, l(0.500000), l(1.000000) - max r11.y, r11.y, r12.w - min r11.y, r13.x, r11.y - mul r11.w, r11.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r13.xyzw, r11.xwzx, t7.xyzw, s0, l(0.000000) - mad r13.xyz, r13.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r12.xxxx, r13.xyzx - add r13.xyz, r11.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r13.xyz, r13.xyzx, t7.xyzw, s0, l(0.000000) - mad r13.xyz, r13.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r12.yyyy, r13.xyzx - add r11.xyz, r11.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r11.xyz, r11.xyzx, t7.xyzw, s0, l(0.000000) - mad r11.xyz, r11.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r11.xyz, r12.zzzz, r11.xyzx - mad r12.w, r13.w, r9.w, r5.w - mov r11.w, r12.z - mul r11.xyzw, r9.wwww, r11.xyzw - mov r15.w, r12.y - mul r13.xyzw, r9.wwww, r15.xyzw - mov r14.w, r12.x - mul r14.xyzw, r9.wwww, r14.xyzw - else - mov r11.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r12.w, r5.w - endif - mad r12.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r12.xyz, r1.xzyx, -r12.xyzx - max r9.w, |r12.y|, |r12.x| - add r9.w, r9.w, l(-116.000000) - mul_sat r9.w, r9.w, l(0.125000) - add r12.x, |r12.z|, l(-52.000000) - mul_sat r12.x, r12.x, l(0.125000) - max r9.w, r9.w, r12.x - lt r12.x, r9.w, l(1.000000) - if_nz r12.x - mad r12.xyz, r1.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r15.xyz, r12.xyzx, cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r15.xyz, r12.xyzx, cb0[211].xyzx, -r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r15.xyzx, t8.xyzw, s1, l(0.000000) - add r16.x, -r9.w, l(1.000000) - mul r6.w, r6.w, r16.x - mul r16.x, l(0.500000), cb0[211].y - mad r16.y, -cb0[211].y, l(0.500000), l(1.000000) - max r15.y, r15.y, r16.x - min r15.y, r16.y, r15.y - mul r15.w, r15.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r15.xwzx, t9.xyzw, s0, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r12.xxxx, r16.xyzx - add r16.xyz, r15.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t9.xyzw, s0, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r12.yyyy, r16.xyzx - add r15.xyz, r15.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t9.xyzw, s0, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r12.zzzz, r15.xyzx - mad r12.w, r16.w, r6.w, r12.w - mov r15.w, r12.z - mad r11.xyzw, r15.xyzw, r6.wwww, r11.xyzw - mov r18.w, r12.y - mad r13.xyzw, r18.xyzw, r6.wwww, r13.xyzw - mov r17.w, r12.x - mad r14.xyzw, r17.xyzw, r6.wwww, r14.xyzw - endif - lt r6.w, l(0.000000), r9.w - if_nz r6.w - mad r1.xyz, r1.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r12.xyz, r1.xyzx, cb0[211].xyzx - mul r15.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r12.xyz, r12.xyzx - mad r1.xyz, r1.xyzx, cb0[211].xyzx, -r12.xyzx - mad r12.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r1.xyz, r15.xyzx, r1.xyzx - min r16.xyz, r12.xyzx, r1.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t10.yzwx, s1, l(0.000000) - add r1.x, -r5.w, l(1.000000) - mul r1.x, r1.x, r9.w - max r1.y, r15.y, r16.y - min r1.y, r12.y, r1.y - mul r16.w, r1.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyzw, r16.xwzx, t11.xyzw, s0, l(0.000000) - add r12.xyz, r16.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r12.xyzx, t11.xyzw, s0, l(0.000000) - mad r12.xyz, r12.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r17.yyyy, r12.xyzx - mov r18.w, r17.y - mad r11.xyzw, r18.xyzw, r1.xxxx, r11.xyzw - add r12.xyz, r16.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r12.xyz, r12.xyzx, t11.xyzw, s0, l(0.000000) - mad r12.xyz, r12.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r17.xxxx, r12.xyzx - mov r16.w, r17.x - mad r13.xyzw, r16.xyzw, r1.xxxx, r13.xyzw - mad r12.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r17.wwww, r12.xyzx - mad r14.xyzw, r17.xyzw, r1.xxxx, r14.xyzw - mad r12.w, r15.w, r1.x, r12.w - endif - mad_sat r1.x, r12.w, l(2.000000), l(-1.000000) - add r12.x, -r5.w, r1.x - add r1.x, r5.w, r1.x - mul r12.y, r1.x, l(0.500000) -else - mov r11.xyzw, l(0,0,0,0) - mov r13.xyzw, l(0,0,0,0) - mov r14.xyzw, l(0,0,0,0) - mov r12.xy, l(0,1.000000,0,0) -endif -mul r15.xyzw, r12.yyyx, cb0[213].xyzw -mad r15.y, r15.w, l(0.500000), r15.y -mul r1.xy, r12.yxyy, cb0[213].wyww -mad r15.w, r1.y, l(0.375000), r1.x -add r14.xyzw, r14.xyzw, r15.xyzw -mul r15.xyzw, r12.yyyx, cb0[214].xyzw -mad r15.y, r15.w, l(0.500000), r15.y -mul r1.xy, r12.yxyy, cb0[214].wyww -mad r15.w, r1.y, l(0.375000), r1.x -add r13.xyzw, r13.xyzw, r15.xyzw -mul r15.xyzw, r12.yyyx, cb0[215].xyzw -mad r15.y, r15.w, l(0.500000), r15.y -mul r1.xy, r12.yxyy, cb0[215].wyww -mad r15.w, r1.y, l(0.375000), r1.x -add r11.xyzw, r11.xyzw, r15.xyzw -dp3 r1.x, r14.xyzx, r7.xyzx -add r1.x, r14.w, r1.x -max r1.x, r1.x, l(0.000000) -dp3 r5.w, r13.xyzx, r7.xyzx -add r5.w, r13.w, r5.w -max r1.y, r5.w, l(0.000000) -dp3 r5.w, r11.xyzx, r7.xyzx -add r5.w, r11.w, r5.w -max r1.z, r5.w, l(0.000000) -mul r11.xyz, r9.xyzx, r1.xyzx -mul r12.xy, r11.xyxx, cb0[111].xxxx -dp3 r5.w, -r4.xyzx, r7.xyzx -add r5.w, r5.w, r5.w -mad r13.xyz, r7.xyzx, -r5.wwww, -r4.xyzx -add r5.w, l(-1.000000), cb0[113].x -max r6.w, l(0.001000), cb2[25].z -log r6.w, r6.w -mad r6.w, -r6.w, l(1.200000), l(1.000000) -add r5.w, r5.w, -r6.w -utof r12.zw, r10.xxxy -mul r14.xy, r12.zwzz, cb3[0].wwww -round_ni r14.xy, r14.xyxx -add r6.w, r10.z, -cb3[2].y -round_ni r6.w, r6.w -add r9.w, l(-1.000000), cb3[1].x -max r11.w, r6.w, l(0.000000) -min r9.w, r9.w, r11.w -ge r6.w, r9.w, r6.w -mad r11.w, r14.y, cb3[0].x, r14.x -ftoi r11.w, r11.w -iadd r11.w, r11.w, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx -ftoi r9.w, r9.w -iadd r9.w, r9.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.w, r9.w, l(0), t0.xxxx -and r9.w, r9.w, r11.w -and r6.w, r6.w, r9.w -mul r1.xyz, r1.xyzx, cb0[111].xxxx -dp3 r1.x, r1.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r0.w, l(1.000000) -mov r7.w, l(1.000000) -mov r14.xyz, l(0,0,0,0) -mov r1.y, l(1.000000) -mov r1.z, r6.w -mov r9.w, l(0) -loop - lt r11.w, l(0.010000), r1.y - ine r13.w, r1.z, l(0) - and r13.w, r11.w, r13.w - if_nz r13.w - firstbit_lo r13.w, r1.z - ishl r14.w, l(1), r13.w - xor r1.z, r1.z, r14.w - ishl r13.w, r13.w, l(3) - dp4 r15.x, cb3[r13.w + 6].xyzw, r0.xyzw - dp4 r15.y, cb3[r13.w + 7].xyzw, r0.xyzw - dp4 r15.z, cb3[r13.w + 8].xyzw, r0.xyzw - ge r16.xyz, cb3[r13.w + 5].xyzx, |r15.xyzx| - and r14.w, r16.y, r16.x - and r14.w, r16.z, r14.w - if_nz r14.w - mul r14.w, l(0.100000), cb3[r13.w + 5].x - mul r16.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r16.xy, r16.xyxx, r16.xyxx - add r17.xyz, -|r15.xyzx|, cb3[r13.w + 5].xyzx - mul r17.xyz, r17.xyzx, cb3[r13.w + 9].xyzx - eq r15.w, l(1.000000), cb3[r13.w + 10].x - if_nz r15.w - dp3 r18.x, cb3[r13.w + 6].xyzx, r13.xyzx - dp3 r18.y, cb3[r13.w + 7].xyzx, r13.xyzx - dp3 r18.z, cb3[r13.w + 8].xyzx, r13.xyzx - add r19.xyz, -r15.xyzx, cb3[r13.w + 5].xyzx - div r19.xyz, r19.xyzx, r18.xyzx - add r20.xyz, -r15.xyzx, -cb3[r13.w + 5].xyzx - div r20.xyz, r20.xyzx, r18.xyzx - lt r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r18.xyzx - movc r19.xyz, r21.xyzx, r19.xyzx, r20.xyzx - min r15.w, r19.y, r19.x - min r15.w, r19.z, r15.w - mad r15.xyz, r18.xyzx, r15.wwww, r15.xyzx - else - mov r15.xyz, r13.xyzx - endif - dp3 r15.w, r15.xyzx, r15.xyzx - rsq r15.w, r15.w - mul r15.xyz, r15.wwww, r15.xyzx - lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx - lt r19.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r18.xyz, -r18.xyzx, r19.xyzx - itof r18.xyz, r18.xyzx - dp3 r15.w, r15.xyzx, r18.xyzx - div r15.xyz, r15.xyzx, r15.wwww - lt r15.z, r15.z, l(0.000000) - add r18.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r18.xy, r18.zwzz, r18.xyxx - movc r15.xy, r15.zzzz, r18.xyxx, r15.xyxx - dp4 r15.z, cb3[r13.w + 4].xyzw, r7.xyzw - max r15.z, r15.z, l(0.000000) - max r15.z, r15.z, l(0.000100) - min r15.w, r17.z, r17.y - min r15.w, r15.w, r17.x - add r16.x, r16.y, r16.x - mad r16.x, r16.z, r16.z, r16.x - mad r14.w, r14.w, r14.w, -r16.x - mul r14.w, r14.w, cb3[r13.w + 9].x - mul r14.w, r14.w, cb3[r13.w + 9].x - add r16.x, l(1.000000), -cb3[r13.w + 10].y - mul r14.w, r14.w, r16.x - mul r14.w, r14.w, l(100.000000) - mad_sat r14.w, r15.w, cb3[r13.w + 10].y, r14.w - mul r15.w, r14.w, cb3[r13.w + 10].w - mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r16.xy, r15.xyxx, cb3[1].wwww, cb3[2].wwww - mov r16.z, cb3[r13.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t1.xyzw, s2, r5.w - mul r16.xyz, r16.xyzx, cb3[r13.w + 9].wwww - div r15.x, r1.x, r15.z - min r15.x, |r15.x|, l(1.000000) - mad r15.x, r15.x, l(2.000000), r1.x - add r15.y, r15.z, l(2.000000) - div r15.x, r15.x, r15.y - add r15.x, r15.x, l(-1.000000) - mad r15.x, r15.x, cb0[112].w, l(1.000000) - mul r15.xyz, r15.xxxx, r16.xyzx - mul r15.xyz, r15.wwww, r15.xyzx - mad r14.xyz, r15.xyzx, r1.yyyy, r14.xyzx - mad r13.w, -r14.w, cb3[r13.w + 10].w, l(1.000000) - mul r1.y, r1.y, r13.w - endif - mov r9.w, l(-1) - continue - else - mov r9.w, r11.w - break - endif - mov r9.w, r11.w -endloop -if_nz r9.w - dp3 r0.w, r13.xyzx, r13.xyzx - rsq r0.w, r0.w - mul r15.xyz, r0.wwww, r13.xyzx - lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx - lt r17.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r16.xyz, -r16.xyzx, r17.xyzx - itof r16.xyz, r16.xyzx - dp3 r0.w, r15.xyzx, r16.xyzx - div r15.xyz, r15.xyzx, r0.wwww - lt r0.w, r15.z, l(0.000000) - add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r15.zw, r15.zzzw, r16.xxxy - movc r15.xy, r0.wwww, r15.zwzz, r15.xyxx - mov r7.w, l(1.000000) - dp4 r0.w, cb3[3].xyzw, r7.xyzw - max r0.w, r0.w, l(0.000000) - max r0.w, r0.w, l(0.000100) - mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r15.xy, r15.xyxx, cb3[1].wwww, cb3[2].wwww - mov r15.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t1.xyzw, s2, r5.w - div r1.z, r1.x, r0.w - min r1.z, |r1.z|, l(1.000000) - mad r1.x, r1.z, l(2.000000), r1.x - add r0.w, r0.w, l(2.000000) - div r0.w, r1.x, r0.w - add r0.w, r0.w, l(-1.000000) - mad r0.w, r0.w, cb0[112].w, l(1.000000) - mul r15.xyz, r0.wwww, r15.xyzx - mad r14.xyz, r15.xyzx, r1.yyyy, r14.xyzx -endif -mul r1.xyz, r14.xyzx, cb0[112].zzzz -// === Glass Fix: Reduce reflection probe intensity === -lt r35.x, l(0.500000), cb13[13].z -if_nz r35.x - mul r1.xyz, r1.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) -endif -mul r1.xyz, r1.xyzx, cb0[111].yyyy -mul_sat r0.w, r6.y, l(50.000000) -mul r0.w, r8.w, r0.w -mad r14.xyz, r6.xyzx, r8.zzzz, r0.wwww -mul r1.xyz, r1.xyzx, r14.xyzx -max r0.w, r4.w, l(0.010000) -div r1.xyz, r1.xyzx, r0.wwww -add r5.w, r12.y, r12.x -mad r5.w, r11.z, cb0[111].x, r5.w -mul r5.w, r5.w, l(0.333333343) -add r6.w, r1.y, r1.x -add r6.w, r1.z, r6.w -mul r7.w, r6.w, l(0.333333343) -mad r11.xyz, r11.xyzx, cb0[111].xxxx, -r5.wwww -mad r11.xyz, r11.xyzx, cb2[24].zzzz, r5.wwww -mad r1.xyz, -r6.wwww, l(0.333333343, 0.333333343, 0.333333343, 0.000000), r1.xyzx -mad r1.xyz, r1.xyzx, cb2[24].zzzz, r7.wwww -add r1.xyz, r1.xyzx, r11.xyzx -lt r5.w, cb6[35].w, l(0.990000) -if_nz r5.w - mad r11.xyz, r7.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r0.xyzx - ftoi r5.w, cb6[35].x - ieq r6.w, r5.w, l(2) - movc r14.xyz, r6.wwww, cb6[20].xyzx, cb0[44].xyzx - add r14.xyz, r11.xyzx, -r14.xyzx - dp3 r6.w, r14.xyzx, r14.xyzx - add r6.w, -r6.w, cb6[34].w - mul_sat r6.w, r6.w, cb6[34].z - lt r7.w, l(0.000000), r6.w - if_nz r7.w - ilt r5.w, l(0), r5.w - if_nz r5.w - add r14.xyz, r11.xyzx, -cb6[20].xyzx - add r15.xyz, r11.xyzx, -cb6[21].xyzx - add r16.xyz, r11.xyzx, -cb6[22].xyzx - add r17.xyz, r11.xyzx, -cb6[23].xyzx - dp3 r14.x, r14.xyzx, r14.xyzx - dp3 r14.y, r15.xyzx, r15.xyzx - dp3 r14.z, r16.xyzx, r16.xyzx - dp3 r14.w, r17.xyzx, r17.xyzx - lt r15.x, r14.x, cb6[20].w - lt r15.y, r14.y, cb6[21].w - lt r15.z, r14.z, cb6[22].w - lt r15.w, r14.w, cb6[23].w - and r16.xyzw, r15.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) - movc r15.xyz, r15.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) - add r15.xyz, r15.xyzx, r16.yzwy - max r16.yzw, r15.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) - dp4 r5.w, r16.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) - add r5.w, -r5.w, l(4.000000) - max r5.w, r5.w, l(0.000000) - min r5.w, r5.w, l(3.000000) - add r7.w, r5.w, l(1.000000) - min r7.w, r7.w, l(3.000000) - ftou r7.w, r7.w - dp3 r8.z, r14.yzwy, icb[r7.w + 0].yzwy - div r7.w, r8.z, cb6[r7.w + 20].w - ge r8.z, r7.w, l(0.000000) - ge r7.w, l(1.000000), r7.w - and r7.w, r7.w, r8.z - if_nz r7.w - ftou r7.w, r5.w - add r8.zw, r12.zzzw, l(0.000000, 0.000000, 2.083000, 4.867000) - dp2 r8.z, r8.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) - frc r8.z, r8.z - mul r8.z, r8.z, l(52.982918) - frc r8.z, r8.z - dp4 r8.w, r14.xyzw, icb[r7.w + 0].xyzw - div r7.w, r8.w, cb6[r7.w + 20].w - sqrt r7.w, r7.w - add r7.w, r7.w, l(-0.900000) - mul r7.w, r7.w, l(12.000000) - ge r7.w, r7.w, r8.z - and r7.w, r7.w, l(0x3f800000) - add r5.w, r5.w, r7.w - endif - dp3 r7.w, r7.xyzx, cb5[0].xyzx - max r7.w, r7.w, l(0.000000) - min r7.w, r7.w, l(0.900000) - add r7.w, -r7.w, l(1.000000) - ftou r8.z, r5.w - ishl r8.w, r8.z, l(2) - mul r12.xy, r7.wwww, cb6[r8.z + 24].xyxx - max r7.w, r12.x, l(0.000000) - mad r14.xyz, -cb5[0].xyzx, r7.wwww, r11.xyzx - mad r14.xyz, r7.xyzx, r12.yyyy, r14.xyzx - mul r15.xyz, r14.yyyy, cb6[r8.w + 1].xyzx - mad r14.xyw, cb6[r8.w + 0].xyxz, r14.xxxx, r15.xyxz - mad r14.xyz, cb6[r8.w + 2].xyzx, r14.zzzz, r14.xywx - add r14.xyz, r14.xyzx, cb6[r8.w + 3].xyzx - ge r15.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r14.xyzx - ge r16.xyz, r14.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - or r15.xyz, r15.xyzx, r16.xyzx - or r7.w, r15.y, r15.x - or r7.w, r15.z, r7.w - and r8.z, r14.z, l(0x7fffffff) - ult r8.z, l(0x7f800000), r8.z - or r15.z, r7.w, r8.z - ftoi r5.w, r5.w - mad r8.zw, r14.xxxy, cb6[r5.w + 28].zzzw, cb6[r5.w + 28].xxxy - mad r12.xy, r8.zwzz, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r12.xy, r12.xyxx - mad r8.zw, r8.zzzw, cb6[32].zzzw, -r12.xxxy - add r16.xyzw, r8.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r17.xw, r16.xxxz, r16.xxxz - min r14.xy, r8.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) - max r16.xz, r8.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r18.xy, r17.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r8.zwzz - add r8.zw, -r8.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - mad r8.zw, -r14.xxxy, r14.xxxy, r8.zzzw - mad r14.xy, -r16.xzxx, r16.xzxx, r16.ywyy - mov r16.x, r18.x - mov r16.y, r8.z - mov r16.z, r14.x - mov r16.w, r17.x - mul r16.xyzw, r16.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r17.x, r18.y - mov r17.y, r8.w - mov r17.z, r14.y - mul r17.xyzw, r17.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r18.xyzw, r16.ywyw, r16.xzxz - add r19.xyzw, r17.yyww, r17.xxzz - div r8.zw, r16.yyyw, r18.zzzw - add r8.zw, r8.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r16.xy, r8.zwzz, cb6[32].xxxx - div r8.zw, r17.yyyw, r19.yyyw - add r8.zw, r8.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r16.zw, r8.zzzw, cb6[32].yyyy - mul r17.xyzw, r18.xyzw, r19.xyzw - mad r18.xyzw, r12.xyxy, cb6[32].xyxy, r16.xzyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r5.w, r18.xyxx, t12.xxxx, s3, r14.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r7.w, r18.zwzz, t12.xxxx, s3, r14.z - mul r7.w, r7.w, r17.y - mad r5.w, r17.x, r5.w, r7.w - mad r16.xyzw, r12.xyxy, cb6[32].xyxy, r16.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r7.w, r16.xyxx, t12.xxxx, s3, r14.z - mad r5.w, r17.z, r7.w, r5.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r7.w, r16.zwzz, t12.xxxx, s3, r14.z - mad r5.w, r17.w, r7.w, r5.w - movc r15.x, r15.z, l(1.000000), r5.w - else - mov r15.xz, l(1.000000,0,0,0) - endif - else - mov r15.xz, l(1.000000,0,0,0) - endif - lt r5.w, r6.w, l(1.000000) - if_nz r5.w - dp3 r5.w, r7.xyzx, cb5[0].xyzx - max r5.w, r5.w, l(0.000000) - min r5.w, r5.w, l(0.900000) - add r5.w, -r5.w, l(1.000000) - mul r8.zw, r5.wwww, cb6[584].xxxy - mad r14.xyz, -cb5[0].xyzx, r8.zzzz, r11.xyzx - mad r14.xyz, r7.xyzx, r8.wwww, r14.xyzx - mul r8.zw, r14.yyyy, cb6[581].xxxy - mad r8.zw, cb6[580].xxxy, r14.xxxx, r8.zzzw - mad r8.zw, cb6[582].xxxy, r14.zzzz, r8.zzzw - add r8.zw, r8.zzzw, cb6[583].xxxy - lt r12.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r8.zwzz - and r5.w, r12.y, r12.x - lt r12.xy, r8.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000) - and r7.w, r12.y, r12.x - and r5.w, r5.w, r7.w - if_nz r5.w - mul r5.w, r8.w, cb6[585].z - round_ni r5.w, r5.w - add r5.w, r8.z, r5.w - mul r5.w, r5.w, cb6[585].y - ftou r5.w, r5.w - umin r5.w, r5.w, l(127) - and r7.w, l(0x0000ffff), cb6[r5.w + 587].x - f16tof32 r12.x, r7.w - ge r7.w, r12.x, l(0.000000) - if_nz r7.w - mov r16.x, cb6[576].x - mov r16.y, cb6[577].x - mov r16.z, cb6[578].x - mov r16.w, cb6[r5.w + 587].y - mov r14.w, l(1.000000) - dp4 r16.x, r16.xyzw, r14.xyzw - mov r17.x, cb6[576].y - mov r17.y, cb6[577].y - mov r17.z, cb6[578].y - mov r17.w, cb6[r5.w + 587].z - dp4 r16.y, r17.xyzw, r14.xyzw - mov r17.x, cb6[576].z - mov r17.y, cb6[577].z - mov r17.z, cb6[578].z - mov r17.w, cb6[r5.w + 587].w - dp4 r7.w, r17.xyzw, r14.xyzw - lt r8.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xxxy - lt r9.w, l(0.000000), r7.w - and r8.z, r8.w, r8.z - and r8.z, r9.w, r8.z - lt r14.xy, r16.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - lt r8.w, r7.w, l(1.000000) - and r9.w, r14.y, r14.x - and r8.w, r8.w, r9.w - and r8.z, r8.w, r8.z - if_nz r8.z - ushr r5.w, cb6[r5.w + 587].x, l(16) - f16tof32 r12.y, r5.w - mad r8.zw, r16.xxxy, cb6[584].zzzw, r12.xxxy - mad r12.xy, r8.zwzz, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r12.xy, r12.xyxx - mad r8.zw, r8.zzzw, cb6[586].zzzw, -r12.xxxy - add r14.xyzw, r8.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r16.xw, r14.xxxz, r14.xxxz - min r14.xz, r8.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) - max r17.xy, r8.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r17.zw, r16.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r8.zzzw - add r8.zw, -r8.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - mad r8.zw, -r14.xxxz, r14.xxxz, r8.zzzw - mad r14.xy, -r17.xyxx, r17.xyxx, r14.ywyy - mov r18.x, r17.z - mov r18.y, r8.z - mov r18.z, r14.x - mov r18.w, r16.x - mul r18.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r16.x, r17.w - mov r16.y, r8.w - mov r16.z, r14.y - mul r14.xyzw, r16.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r16.xyzw, r18.ywyw, r18.xzxz - add r17.xyzw, r14.yyww, r14.xxzz - div r8.zw, r18.yyyw, r16.zzzw - add r8.zw, r8.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r18.xy, r8.zwzz, cb6[586].xxxx - div r8.zw, r14.yyyw, r17.yyyw - add r8.zw, r8.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r18.zw, r8.zzzw, cb6[586].yyyy - mul r14.xyzw, r16.xyzw, r17.xyzw - mad r16.xyzw, r12.xyxy, cb6[586].xyxy, r18.xzyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r5.w, r16.xyxx, t15.xxxx, s3, r7.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r8.z, r16.zwzz, t15.xxxx, s3, r7.w - mul r8.z, r8.z, r14.y - mad r5.w, r14.x, r5.w, r8.z - mad r16.xyzw, r12.xyxy, cb6[586].xyxy, r18.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r8.z, r16.xyxx, t15.xxxx, s3, r7.w - mad r5.w, r14.z, r8.z, r5.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r7.w, r16.zwzz, t15.xxxx, s3, r7.w - mad r15.y, r14.w, r7.w, r5.w - else - mov r15.y, l(1.000000) - endif - else - mov r15.y, l(1.000000) - endif - else - mov r15.y, l(1.000000) - endif - movc r15.x, r15.z, r15.y, r15.x - else - mov r15.y, l(1.000000) - endif - add r5.w, -r15.y, r15.x - mad r5.w, r6.w, r5.w, r15.y - lt r6.w, l(0.001000), r5.w - if_nz r6.w - add r11.xyz, r11.xyzx, -cb0[173].xyzx - mad r8.zw, cb0[176].xxxz, r11.yyyy, r11.xxxz - mul r11.yw, r8.zzzw, cb0[174].zzzz - mul r12.xy, cb0[175].xyxx, cb0[183].wwww - mad r8.zw, r8.zzzw, cb0[174].zzzz, r12.xxxy - sample_l_indexable(texture2d)(float,float,float,float) r6.w, r8.zwzz, t14.yzwx, s1, l(0.000000) - mad r8.zw, r11.yyyw, cb0[175].wwww, r12.xxxy - sample_l_indexable(texture2d)(float,float,float,float) r7.w, r8.zwzz, t14.yzwx, s1, l(0.000000) - dp2 r8.z, r11.xzxx, r11.xzxx - sqrt r8.z, r8.z - add r8.w, -cb0[174].x, cb0[174].y - add r8.z, r8.z, -cb0[174].x - div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w - mul_sat r8.z, r8.w, r8.z - mad r8.w, r8.z, l(-2.000000), l(3.000000) - mul r8.z, r8.z, r8.z - mul r8.z, r8.z, r8.w - add r7.w, -r6.w, r7.w - mad r6.w, r8.z, r7.w, r6.w - add r6.w, r6.w, l(-1.000000) - mad r6.w, cb0[175].z, r6.w, l(1.000000) - mul r5.w, r5.w, r6.w - endif - add r6.w, -r5.w, cb6[35].z - mad r5.w, cb6[35].w, r6.w, r5.w -else - mov r5.w, cb6[35].z -endif -min r5.w, r5.w, l(1.000000) -add r5.w, r5.w, l(-1.000000) -mad r11.x, cb6[34].x, r5.w, l(1.000000) -lt r5.w, l(0.001000), r11.x -if_nz r5.w - dp3 r5.w, -cb5[0].xyzx, r13.xyzx - mad r14.xyz, cb5[0].xyzx, r5.wwww, r13.xyzx - lt r5.w, r5.w, cb5[4].z - dp3 r6.w, r14.xyzx, r14.xyzx - max r6.w, r6.w, l(0.0000610351562) - rsq r6.w, r6.w - mul r14.xyz, r6.wwww, r14.xyzx - mul r14.xyz, r14.xyzx, cb5[4].yyyy - mad r14.xyz, -cb5[0].xyzx, cb5[4].zzzz, r14.xyzx - dp3 r6.w, r14.xyzx, r14.xyzx - rsq r6.w, r6.w - mul r14.xyz, r6.wwww, r14.xyzx - movc r14.xyz, r5.wwww, r14.xyzx, r13.xyzx - mad r15.xyz, r2.xyzx, r3.wwww, r14.xyzx - dp3 r5.w, r15.xyzx, r15.xyzx - max r5.w, r5.w, l(0.0000610351562) - rsq r5.w, r5.w - mul r15.xyz, r5.wwww, r15.xyzx - dp3_sat r14.z, r14.xyzx, r7.xyzx - dp3_sat r5.w, r7.xyzx, r15.xyzx - min r14.x, r1.w, l(1.000000) - mul r6.w, cb2[25].z, cb2[25].z - mul r6.w, r6.w, r6.w - mad r7.w, r5.w, r6.w, -r5.w - mad r5.w, r7.w, r5.w, l(1.000000) - dp3_sat r7.w, r4.xyzx, r15.xyzx - add r7.w, -r7.w, l(1.000000) - mul r8.z, r7.w, r7.w - mul r8.z, r8.z, r8.z - mul r8.w, r7.w, r8.z - add r9.w, l(1.000000), -cb2[25].z - mad r11.z, -r9.w, l(0.383026), l(-0.0761947036) - mad r11.z, r9.w, r11.z, l(1.049970) - mad r9.w, r9.w, r11.z, l(0.409255) - min r9.w, r9.w, l(0.999000) - add r11.z, -r9.w, l(1.000000) - add r15.xyz, -r6.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r6.xyzx - mad r7.w, -r8.z, r7.w, l(1.000000) - mad r16.xyz, r6.xyzx, r7.wwww, r8.wwww - mul r5.w, r5.w, r5.w - div r5.w, r6.w, r5.w - mad r8.zw, -r14.xxxz, r6.wwww, r14.xxxz - mad r8.zw, r8.zzzw, r14.xxxz, r6.wwww - sqrt r8.zw, r8.zzzw - mul r8.zw, r8.zzzw, r14.zzzx - add r6.w, r8.w, r8.z - add r6.w, r6.w, l(0.000100) - div r6.w, l(0.500000), r6.w - mul r5.w, r5.w, r6.w - mul r16.xyz, r5.wwww, r16.xyzx - min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mov r14.yw, cb2[25].zzzz - mad r17.xyzw, r14.xyzw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r5.w, r17.xyxx, t17.yzwx, s0, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r6.w, r17.zwzz, t17.yzwx, s0, l(0.000000) - mul r5.w, r5.w, r6.w - mul r5.w, r9.w, r5.w - div r5.w, r5.w, r11.z - mul r14.xyw, r15.xyxz, r15.xyxz - mul r14.xyw, r5.wwww, r14.xyxw - mad r15.xyz, -r15.xyzx, r11.zzzz, l(1.000000, 1.000000, 1.000000, 0.000000) - div r14.xyw, r14.xyxw, r15.xyxz - add r14.xyw, r14.xyxw, r16.xyxz - mul r14.xyw, r14.xyxw, cb5[4].xxxx - // === Glass Fix: Reduce sun specular intensity === - lt r35.x, l(0.500000), cb13[13].z - if_nz r35.x - mul r14.xyw, r14.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000) - endif - max r14.xyw, r14.xyxw, l(0.000000, 0.000000, 0.000000, 0.000000) - min r14.xyw, r14.xyxw, l(1000.000000, 1000.000000, 0.000000, 1000.000000) - div r14.xyw, r14.xyxw, r0.wwww - min r14.xyw, r14.xyxw, l(1000.000000, 1000.000000, 0.000000, 1000.000000) - mul r14.xyw, r14.xyxw, cb2[24].xxxx - mul r15.xyz, r9.xyzx, r14.zzzz - mad r14.xyz, r14.xywx, r14.zzzz, r15.xyzx - mul r14.xyz, r14.xyzx, cb5[1].xyzx - mov r11.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r11.yzw, r11.xyxx, t16.wxyz, s0, cb0[108].x - add r0.w, -r11.x, l(1.000000) - mad r11.xyz, r14.xyzx, r11.yzwy, -r14.xyzx - mad r11.xyz, r0.wwww, r11.xyzx, r14.xyzx -else - mov r11.xyz, l(0,0,0,0) -endif -mul r8.zw, r12.zzzw, l(0.000000, 0.000000, 0.031250, 0.031250) -round_ni r8.zw, r8.zzzw -mad r0.w, r8.w, cb4[1].y, r8.z -mul r0.w, r0.w, l(8.000000) -ftoi r0.w, r0.w -mad r5.w, -cb0[85].y, cb4[2].w, r10.z -round_ni r5.w, r5.w -add r6.w, l(-1.000000), cb4[1].w -max r7.w, r5.w, l(0.000000) -min r6.w, r6.w, r7.w -mul r7.w, r6.w, l(8.000000) -ftoi r7.w, r7.w -ge r5.w, r6.w, r5.w -iadd r6.w, r7.w, cb0[110].y -mul r7.w, cb2[25].z, cb2[25].z -min r12.x, r1.w, l(1.000000) -add r8.zw, l(0.000000, 0.000000, 1.000000, 1.000000), -cb2[25].zzzx -mad r1.w, -r8.z, l(0.383026), l(-0.0761947036) -mad r1.w, r8.z, r1.w, l(1.049970) -mad r1.w, r8.z, r1.w, l(0.409255) -min r1.w, r1.w, l(0.999000) -add r8.z, -r1.w, l(1.000000) -add r14.xyz, -r6.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r14.xyz, r14.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r6.xyzx -mov r12.y, cb2[25].z -mad r15.xy, r12.xyxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r9.w, r15.xyxx, t17.yzwx, s0, l(0.000000) -mad r15.xyz, -r14.xyzx, r8.zzzz, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r14.xyz, r14.xyzx, r14.xyzx -mov r16.w, l(1.000000) -mov r17.y, l(1.000000) -mov r18.z, cb2[25].z -mov r19.xyz, l(0,0,0,0) -mov r11.w, l(1.000000) -mov r12.y, l(0) -loop - ilt r13.w, l(7), r12.y - breakc_nz r13.w - iadd r13.w, r0.w, r12.y - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r13.w, r13.w, l(0), t0.xxxx - iadd r14.w, r6.w, r12.y - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r14.w, r14.w, l(0), t0.xxxx - and r13.w, r13.w, r14.w - and r13.w, r5.w, r13.w - ishl r14.w, r12.y, l(5) - mov r20.xyz, l(0,0,0,0) - mov r15.w, r11.w - mov r17.z, r13.w - loop - breakc_z r17.z - firstbit_lo r17.w, r17.z - ishl r18.w, l(1), r17.w - xor r18.w, r17.z, r18.w - iadd r17.w, r14.w, r17.w - bfi r21.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r17.wwww, l(1, 3, 5, 6) - bfi r19.w, l(29), l(3), r17.w, l(7) - ftou r20.w, cb5[r21.z + 6].w - ieq r20.w, r20.w, l(1) - if_nz r20.w - add r16.xyz, r0.xyzx, -cb5[r21.x + 6].xyzx - and r22.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r21.z + 6].xzyx - and r23.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r21.w + 6].yxzy - ushr r24.xyz, cb5[r21.z + 6].xzyx, l(16, 16, 16, 0) - ushr r25.xyz, cb5[r21.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r22.xyz, r22.xyzx - f16tof32 r23.xyz, r23.xyzx - f16tof32 r24.xyz, r24.xyzx - f16tof32 r25.xyw, r25.yxyz - mov r26.xz, r22.xxzx - mov r26.yw, r24.xxxz - dp4 r20.w, r16.xyzw, r26.xyzw - mov r24.x, r22.y - mov r24.z, r23.y - mov r24.w, r25.x - dp4 r21.z, r16.xyzw, r24.xyzw - mov r25.xz, r23.xxzx - dp4 r16.x, r16.xyzw, r25.xyzw - max r16.y, |r20.w|, |r21.z| - max r16.x, |r16.x|, r16.y - mad r16.y, cb5[r19.w + 6].x, l(0.500000), l(0.500000) - add r16.x, -r16.y, r16.x - mad r16.y, -cb5[r19.w + 6].x, l(0.500000), l(0.500000) - div_sat r16.x, r16.x, r16.y - add r16.x, -r16.x, l(1.000000) - mul r16.x, r16.x, r16.x - else - mov r16.x, l(1.000000) - endif - lt r16.y, l(0.500000), cb5[r21.y + 6].z - lt r16.z, r16.x, l(0.001000) - or r16.z, r16.y, r16.z - if_nz r16.z - mov r17.z, r18.w - continue - endif - ishl r16.z, r17.w, l(3) - bfi r17.w, l(29), l(3), r17.w, l(2) - lt r20.w, cb5[r16.z + 6].w, l(1.500000) - if_nz r20.w - mad r20.w, cb5[r17.w + 6].y, l(0.500000), l(0.500000) - add r22.x, r20.w, -|cb5[r17.w + 6].x| - add r22.y, -r22.x, cb5[r17.w + 6].y - add r20.w, -|r22.x|, l(1.000000) - add r20.w, -|r22.y|, r20.w - max r20.w, r20.w, l(0.000488281250) - ge r21.z, cb5[r17.w + 6].x, l(0.000000) - movc r22.z, r21.z, r20.w, -r20.w - dp3 r20.w, r22.xyzx, r22.xyzx - rsq r20.w, r20.w - mul r22.xyz, r20.wwww, r22.xyzx - add r23.xyz, -r0.xyzx, cb5[r21.x + 6].xyzx - dp3 r20.w, r23.xyzx, r23.xyzx - rsq r21.z, r20.w - mul r24.xyz, r21.zzzz, r23.xyzx - ftoi r22.w, cb5[r19.w + 6].w - mul r25.xyz, r22.xyzx, cb5[r17.w + 6].zzzz - mad r26.xyz, -r25.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r23.xyzx - mad r27.xyz, r25.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r23.xyzx - ftou r23.w, cb5[r16.z + 6].w - and r23.w, r23.w, l(1) - ieq r24.w, r23.w, l(0) - not r24.w, r24.w - lt r25.w, l(0.000000), cb5[r17.w + 6].z - and r24.w, r24.w, r25.w - dp3 r25.w, r26.xyzx, r26.xyzx - sqrt r25.w, r25.w - dp3 r26.w, r27.xyzx, r27.xyzx - sqrt r26.w, r26.w - dp3 r27.w, r7.xyzx, r26.xyzx - div r27.w, r27.w, r25.w - dp3 r28.x, r7.xyzx, r27.xyzx - div r28.x, r28.x, r26.w - add r27.w, r27.w, r28.x - mul_sat r28.x, r27.w, l(0.500000) - dp3 r27.x, r26.xyzx, r27.xyzx - mad r25.w, r25.w, r26.w, r27.x - mad r25.w, r25.w, l(0.500000), l(1.000000) - div r28.y, l(1.000000, 1.000000, 1.000000, 1.000000), r25.w - dp3_sat r17.x, r7.xyzx, r24.xyzx - movc r18.xy, r24.wwww, r28.xyxx, r17.xyxx - lt r17.x, cb5[r21.w + 6].w, l(0.000000) - if_nz r17.x - mul r17.x, cb5[r21.x + 6].w, cb5[r21.x + 6].w - mul r17.x, r17.x, r20.w - mad r17.x, -r17.x, r17.x, l(1.000000) - max r17.x, r17.x, l(0.000000) - add r20.w, r20.w, l(1.000000) - div r20.w, l(1.000000, 1.000000, 1.000000, 1.000000), r20.w - and r25.w, r24.w, l(0x3f800000) - add r26.w, r18.y, -r20.w - mad r20.w, r25.w, r26.w, r20.w - mul r17.x, r17.x, r17.x - mul r17.x, r17.x, r20.w - else - mul r27.xyz, r23.xyzx, cb5[r21.x + 6].wwww - dp3 r20.w, r27.xyzx, r27.xyzx - min r20.w, r20.w, l(1.000000) - add r20.w, -r20.w, l(1.000000) - log r20.w, r20.w - mul r20.w, r20.w, cb5[r21.w + 6].w - exp r20.w, r20.w - mul r17.x, r18.y, r20.w - endif - dp3 r18.y, r24.xyzx, -r22.xyzx - add r18.y, r18.y, -cb5[r17.w + 6].z - mul_sat r18.y, r18.y, cb5[r17.w + 6].w - mul r18.y, r18.y, r18.y - movc r18.y, r23.w, l(1.000000), r18.y - mul r17.x, r17.x, r18.y - not r18.y, r24.w - ige r20.w, r22.w, l(0) - and r18.y, r18.y, r20.w - if_nz r18.y - if_z r23.w - ishl r18.y, r22.w, l(2) - mul r22.xyz, r0.yyyy, cb7[r18.y + 33].xywx - mad r22.xyz, cb7[r18.y + 32].xywx, r0.xxxx, r22.xyzx - mad r22.xyz, cb7[r18.y + 34].xywx, r0.zzzz, r22.xyzx - add r22.xyz, r22.xyzx, cb7[r18.y + 35].xywx - div_sat r22.xy, r22.xyxx, r22.zzzz - mad r22.xy, r22.xyxx, cb7[r22.w + 0].zwzz, cb7[r22.w + 0].xyxx - else - ishl r18.y, r22.w, l(2) - dp3 r27.x, -r23.xyzx, cb7[r18.y + 32].xyzx - dp3 r27.y, -r23.xyzx, cb7[r18.y + 33].xyzx - dp3 r27.z, -r23.xyzx, cb7[r18.y + 34].xyzx - lt r18.y, |r27.x|, |r27.y| - and r18.y, r18.y, l(1) - dp2 r20.w, |r27.xyxx|, icb[r18.y + 0].xyxx - lt r20.w, r20.w, |r27.z| - movc r18.y, r20.w, l(2), r18.y - dp3 r20.w, r27.xyzx, icb[r18.y + 0].xyzx - lt r20.w, r20.w, l(0.000000) - bfi r18.y, l(31), l(1), r18.y, r20.w - ushr r20.w, r18.y, l(1) - dp3 r20.w, r27.xyzx, icb[r20.w + 0].xyzx - div r22.z, l(0.000244140625), cb7[r22.w + 0].w - add r22.z, -r22.z, l(0.500000) - utof r23.x, r18.y - ult r23.y, r18.y, l(2) - and r23.y, r23.y, l(2) - dp2 r23.y, r27.xzxx, icb[r23.y + 0].xzxx - mul r23.y, r23.y, icb[r18.y + 4].z - div r23.y, r23.y, |r20.w| - mad r23.x, r23.y, r22.z, r23.x - add r23.x, r23.x, l(0.500000) - mul_sat r23.x, r23.x, l(0.166666672) - iadd r23.z, l(-1), icb[r18.y + 4].y - dp2 r23.z, r27.yzyy, icb[r23.z + 0].xyxx - mul r18.y, r23.z, icb[r18.y + 4].w - div r18.y, r18.y, |r20.w| - mad_sat r23.y, -r18.y, r22.z, l(0.500000) - mad r22.xy, r23.xyxx, cb7[r22.w + 0].zwzz, cb7[r22.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r18.y, r22.xyxx, t18.yxzw, s0, l(0.000000) - mul r17.x, r17.x, r18.y - endif - lt r18.y, l(0.000000), r17.x - if_nz r18.y - if_z r23.w - ftoi r20.w, cb5[r21.y + 6].x - else - add r22.xyz, r0.xyzx, -cb5[r21.x + 6].xyzx - lt r23.xyz, |r22.yzzy|, |r22.xxyx| - and r22.w, r23.y, r23.x - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx - ushr r23.x, cb5[r17.w + 6].w, l(24) - ubfe r23.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb5[r17.w + 6].wwww - movc r22.x, r22.x, r23.x, r23.y - and r23.x, l(255), cb5[r17.w + 6].w - movc r22.y, r22.y, r23.w, r23.x - ubfe r23.x, l(8), l(8), cb5[r21.y + 6].x - and r23.y, l(255), cb5[r21.y + 6].x - movc r22.z, r22.z, r23.x, r23.y - movc r22.y, r23.z, r22.y, r22.z - movc r22.x, r22.w, r22.x, r22.y - ilt r22.y, r22.x, l(80) - movc r20.w, r22.y, r22.x, l(-1) - endif - ishl r22.x, r20.w, l(2) - mad r22.yzw, r24.xxyz, cb6[r20.w + 288].xxxx, r0.xxyz - mul r23.x, l(5.000000), cb6[r20.w + 288].y - mad r22.yzw, r7.xxyz, r23.xxxx, r22.yyzw - mul r23.xyzw, r22.zzzz, cb6[r22.x + 65].xyzw - mad r23.xyzw, cb6[r22.x + 64].xyzw, r22.yyyy, r23.xyzw - mad r23.xyzw, cb6[r22.x + 66].xyzw, r22.wwww, r23.xyzw - add r22.xyzw, r23.xyzw, cb6[r22.x + 67].xyzw - div r22.xyz, r22.xyzx, r22.wwww - ge r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx - ge r27.xyz, r22.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r28.xy, -cb6[r20.w + 344].xyxx, cb6[r20.w + 344].zwzz - mad r22.xy, r22.xyxx, r28.xyxx, cb6[r20.w + 344].xyxx - mad r28.xy, r22.xyxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r28.xy, r28.xyxx - mad r22.xy, r22.xyxx, cb6[400].zwzz, -r28.xyxx - add r29.xyzw, r22.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r30.xyzw, r29.xxzz, r29.xxzz - add r28.zw, -r22.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r29.xz, r22.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r31.xy, r22.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r32.xy, r28.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r31.xy, -r31.xyxx, r31.xyxx, r29.ywyy - add r31.xy, r31.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r31.xy, r31.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r30.xz, r30.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r22.xy, r30.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r22.xyxx - mul r33.xy, r22.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r22.xy, -r29.xzxx, r29.xzxx, r28.zwzz - add r22.xy, r22.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r34.xy, r22.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r22.xy, r29.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r33.z, r34.x - mov r33.w, r22.x - mov r32.z, r31.x - mov r32.w, r30.x - add r29.xyzw, r32.zwxz, r33.zwxz - mov r34.z, r33.y - mov r34.w, r22.y - mov r31.z, r32.y - mov r31.w, r30.z - add r22.xyw, r31.zyzw, r34.zyzw - div r30.xyz, r32.xzwx, r29.zwyz - add r30.xyz, r30.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r30.xyz, r30.xyzx, cb6[400].xxxx - div r31.xyz, r31.zywz, r22.xywx - add r31.xyz, r31.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r31.xyw, r31.xyxz, cb6[400].yyyy - mul r32.xyzw, r22.xxxy, r29.zwyz - mov r30.w, r31.x - mad r33.xyzw, r28.xyxy, cb6[400].xyxy, r30.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.x, r33.xyxx, t13.xxxx, s3, r22.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r33.zwzz, t13.xxxx, s3, r22.z - mul r23.w, r23.w, r32.y - mad r22.x, r32.x, r22.x, r23.w - mad r28.zw, r28.xxxy, cb6[400].xxxy, r30.zzzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r28.zwzz, t13.xxxx, s3, r22.z - mad r22.x, r32.z, r23.w, r22.x - mov r31.z, r30.x - mad r33.xyzw, r28.xyxy, cb6[400].xyxy, r31.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.w, r33.xyxx, t13.xxxx, s3, r22.z - mad r22.x, r32.w, r23.w, r22.x - mul r32.xyzw, r22.yyww, r29.xyzw - mov r31.xz, r30.yyzy - mad r30.xyzw, r28.xyxy, cb6[400].xyxy, r31.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.y, r30.xyxx, t13.xxxx, s3, r22.z - mad r22.x, r32.x, r22.y, r22.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.y, r30.zwzz, t13.xxxx, s3, r22.z - mad r22.x, r32.y, r22.y, r22.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.y, r33.zwzz, t13.xxxx, s3, r22.z - mad r22.x, r32.z, r22.y, r22.x - ige r22.y, r20.w, l(0) - or r23.xyz, r23.xyzx, r27.xyzx - or r23.x, r23.y, r23.x - or r23.x, r23.z, r23.x - and r23.y, r22.z, l(0x7fffffff) - ult r23.y, l(0x7f800000), r23.y - or r23.x, r23.y, r23.x - mad r27.xyzw, r28.xyxy, cb6[400].xyxy, r31.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.y, r27.xyxx, t13.xxxx, s3, r22.z - mad r22.x, r32.w, r23.y, r22.x - mul r22.w, r22.w, r29.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.z, r27.zwzz, t13.xxxx, s3, r22.z - mad r22.x, r22.w, r22.z, r22.x - add r22.x, r22.x, l(-1.000000) - mad r20.w, cb6[r20.w + 288].w, r22.x, l(1.000000) - movc r20.w, r23.x, l(1.000000), r20.w - movc r20.w, r22.y, r20.w, l(1.000000) - else - mov r20.w, l(1.000000) - endif - if_nz r24.w - dp3 r22.x, r13.xyzx, r25.xyzx - mul_sat r22.y, r21.z, cb5[r17.w + 6].z - mad r22.y, r22.y, l(0.500000), r7.w - min r22.y, r22.y, l(1.000000) - div r22.y, r7.w, r22.y - mad r23.xyz, r13.xyzx, r22.xxxx, -r25.xyzx - dp3 r22.z, r26.xyzx, r23.xyzx - mul r22.x, r22.x, r22.x - mad r22.x, cb5[r17.w + 6].z, cb5[r17.w + 6].z, -r22.x - div_sat r22.x, r22.z, r22.x - mad r22.xzw, r25.xxyz, r22.xxxx, r26.xxyz - dp3 r23.x, r22.xzwx, r22.xzwx - rsq r23.x, r23.x - mul r24.xyz, r22.xzwx, r23.xxxx - else - mov r22.y, l(1.000000) - endif - if_nz r18.y - mul_sat r18.y, r21.z, cb5[r19.w + 6].y - mad r22.xzw, r2.xxyz, r3.wwww, r24.xxyz - dp3 r21.z, r22.xzwx, r22.xzwx - max r21.z, r21.z, l(0.0000610351562) - rsq r21.z, r21.z - mul r22.xzw, r21.zzzz, r22.xxzw - dp3_sat r21.z, r7.xyzx, r22.xzwx - dp3_sat r22.x, r4.xyzx, r22.xzwx - lt r22.z, l(0.000000), r18.y - mul r18.y, r18.y, r18.y - mad r22.w, r22.x, l(3.600000), l(0.400000) - div r18.y, r18.y, r22.w - mad r18.y, cb2[25].z, cb2[25].z, r18.y - min r18.y, r18.y, l(1.000000) - movc r18.y, r22.z, r18.y, r7.w - mul r18.y, r18.y, r18.y - mad r22.z, r21.z, r18.y, -r21.z - mad r21.z, r22.z, r21.z, l(1.000000) - add r22.x, -r22.x, l(1.000000) - mul r22.z, r22.x, r22.x - mul r22.z, r22.z, r22.z - mul r22.w, r22.x, r22.z - mad r22.x, -r22.z, r22.x, l(1.000000) - mad r22.xzw, r6.xxyz, r22.xxxx, r22.wwww - mul r21.z, r21.z, r21.z - div r21.z, r18.y, r21.z - mul r21.z, r22.y, r21.z - mad r22.y, -r12.x, r18.y, r12.x - mad r22.y, r22.y, r12.x, r18.y - sqrt r22.y, r22.y - mad r23.x, -r18.x, r18.y, r18.x - mad r18.y, r23.x, r18.x, r18.y - sqrt r18.y, r18.y - mul r18.y, r12.x, r18.y - mad r18.y, r18.x, r22.y, r18.y - add r18.y, r18.y, l(0.000100) - div r18.y, l(0.500000), r18.y - mul r18.y, r18.y, r21.z - mul r22.xyz, r18.yyyy, r22.xzwx - min r22.xyz, r22.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r23.xy, r18.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r18.y, r23.xyxx, t17.yxzw, s0, l(0.000000) - mul r18.y, r9.w, r18.y - mul r18.y, r1.w, r18.y - div r18.y, r18.y, r8.z - mul r23.xyz, r14.xyzx, r18.yyyy - div r23.xyz, r23.xyzx, r15.xyzx - add r22.xyz, r22.xyzx, r23.xyzx - mul r22.xyz, r22.xyzx, cb5[r19.w + 6].zzzz - max r22.xyz, r22.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r22.xyz, r22.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r23.xyz, r9.xyzx, r18.xxxx - mad r22.xyz, r22.xyzx, r18.xxxx, r23.xyzx - mul r23.xyz, r17.xxxx, cb5[r16.z + 6].xyzx - mul r23.xyz, r20.wwww, r23.xyzx - mul r23.xyz, r16.xxxx, r23.xyzx - mul r22.xyz, r22.xyzx, r23.xyzx - else - mov r22.xyz, l(0,0,0,0) - endif - else - if_z r16.y - mad r16.x, cb5[r17.w + 6].y, l(0.500000), l(0.500000) - add r23.x, r16.x, -|cb5[r17.w + 6].x| - add r23.y, -r23.x, cb5[r17.w + 6].y - add r16.x, -|r23.x|, l(1.000000) - add r16.x, -|r23.y|, r16.x - max r16.x, r16.x, l(0.000488281250) - ge r16.y, cb5[r17.w + 6].x, l(0.000000) - movc r23.z, r16.y, r16.x, -r16.x - dp3 r16.x, r23.xyzx, r23.xyzx - rsq r16.x, r16.x - mul r23.xyz, r16.xxxx, r23.xyzx - add r24.xyz, -r0.xyzx, cb5[r21.x + 6].xyzx - dp3 r16.x, r24.xyzx, r24.xyzx - rsq r16.y, r16.x - mul r25.xyz, r16.yyyy, r24.xyzx - ftoi r16.y, cb5[r19.w + 6].w - mul r26.xyz, r23.xyzx, cb5[r17.w + 6].zzzz - mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - mad r26.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - ftou r16.z, cb5[r16.z + 6].w - and r16.z, r16.z, l(1) - ieq r17.x, r16.z, l(0) - not r17.x, r17.x - lt r18.x, l(0.000000), cb5[r17.w + 6].z - and r17.x, r17.x, r18.x - dp3 r18.x, r27.xyzx, r27.xyzx - dp3 r18.y, r26.xyzx, r26.xyzx - sqrt r18.xy, r18.xyxx - dp3 r19.w, r27.xyzx, r26.xyzx - mad r18.x, r18.x, r18.y, r19.w - mad r18.x, r18.x, l(0.500000), l(1.000000) - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x - movc r18.x, r17.x, r18.x, l(1.000000) - lt r18.y, cb5[r21.w + 6].w, l(0.000000) - if_nz r18.y - mul r18.y, cb5[r21.x + 6].w, cb5[r21.x + 6].w - mul r18.y, r16.x, r18.y - mad r18.y, -r18.y, r18.y, l(1.000000) - max r18.y, r18.y, l(0.000000) - add r16.x, r16.x, l(1.000000) - div r16.x, l(1.000000, 1.000000, 1.000000, 1.000000), r16.x - and r19.w, r17.x, l(0x3f800000) - add r20.w, -r16.x, r18.x - mad r16.x, r19.w, r20.w, r16.x - mul r18.y, r18.y, r18.y - mul r16.x, r16.x, r18.y - else - mul r26.xyz, r24.xyzx, cb5[r21.x + 6].wwww - dp3 r18.y, r26.xyzx, r26.xyzx - min r18.y, r18.y, l(1.000000) - add r18.y, -r18.y, l(1.000000) - log r18.y, r18.y - mul r18.y, r18.y, cb5[r21.w + 6].w - exp r18.y, r18.y - mul r16.x, r18.y, r18.x - endif - dp3 r18.x, r25.xyzx, -r23.xyzx - add r18.x, r18.x, -cb5[r17.w + 6].z - mul_sat r18.x, r18.x, cb5[r17.w + 6].w - mul r18.x, r18.x, r18.x - movc r18.x, r16.z, l(1.000000), r18.x - mul r16.x, r16.x, r18.x - not r17.x, r17.x - ige r18.x, r16.y, l(0) - and r17.x, r17.x, r18.x - if_nz r17.x - if_z r16.z - ishl r17.x, r16.y, l(2) - mul r23.xyz, r0.yyyy, cb7[r17.x + 33].xywx - mad r23.xyz, cb7[r17.x + 32].xywx, r0.xxxx, r23.xyzx - mad r23.xyz, cb7[r17.x + 34].xywx, r0.zzzz, r23.xyzx - add r23.xyz, r23.xyzx, cb7[r17.x + 35].xywx - div_sat r18.xy, r23.xyxx, r23.zzzz - mad r18.xy, r18.xyxx, cb7[r16.y + 0].zwzz, cb7[r16.y + 0].xyxx - else - ishl r17.x, r16.y, l(2) - dp3 r23.x, -r24.xyzx, cb7[r17.x + 32].xyzx - dp3 r23.y, -r24.xyzx, cb7[r17.x + 33].xyzx - dp3 r23.z, -r24.xyzx, cb7[r17.x + 34].xyzx - lt r17.x, |r23.x|, |r23.y| - and r17.x, r17.x, l(1) - dp2 r19.w, |r23.xyxx|, icb[r17.x + 0].xyxx - lt r19.w, r19.w, |r23.z| - movc r17.x, r19.w, l(2), r17.x - dp3 r19.w, r23.xyzx, icb[r17.x + 0].xyzx - lt r19.w, r19.w, l(0.000000) - bfi r17.x, l(31), l(1), r17.x, r19.w - ushr r19.w, r17.x, l(1) - dp3 r19.w, r23.xyzx, icb[r19.w + 0].xyzx - div r20.w, l(0.000244140625), cb7[r16.y + 0].w - add r20.w, -r20.w, l(0.500000) - utof r21.z, r17.x - ult r21.w, r17.x, l(2) - and r21.w, r21.w, l(2) - dp2 r21.w, r23.xzxx, icb[r21.w + 0].xzxx - mul r21.w, r21.w, icb[r17.x + 4].z - div r21.w, r21.w, |r19.w| - mad r21.z, r21.w, r20.w, r21.z - add r21.z, r21.z, l(0.500000) - mul_sat r24.x, r21.z, l(0.166666672) - iadd r21.z, l(-1), icb[r17.x + 4].y - dp2 r21.z, r23.yzyy, icb[r21.z + 0].xyxx - mul r17.x, r21.z, icb[r17.x + 4].w - div r17.x, r17.x, |r19.w| - mad_sat r24.y, -r17.x, r20.w, l(0.500000) - mad r18.xy, r24.xyxx, cb7[r16.y + 0].zwzz, cb7[r16.y + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r16.y, r18.xyxx, t18.yxzw, s0, l(0.000000) - mul r16.x, r16.y, r16.x - endif - lt r16.x, l(0.000000), r16.x - if_nz r16.x - if_z r16.z - ftoi r16.x, cb5[r21.y + 6].x - else - add r21.xzw, r0.xxyz, -cb5[r21.x + 6].xxyz - lt r23.xyz, |r21.zwwz|, |r21.xxzx| - and r16.y, r23.y, r23.x - lt r21.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xxzw - ushr r16.z, cb5[r17.w + 6].w, l(24) - ubfe r18.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r17.w + 6].wwww - movc r16.z, r21.x, r16.z, r18.x - and r17.x, l(255), cb5[r17.w + 6].w - movc r17.x, r21.z, r18.y, r17.x - ubfe r17.w, l(8), l(8), cb5[r21.y + 6].x - and r18.x, l(255), cb5[r21.y + 6].x - movc r17.w, r21.w, r17.w, r18.x - movc r17.x, r23.z, r17.x, r17.w - movc r16.y, r16.y, r16.z, r17.x - ilt r16.z, r16.y, l(80) - movc r16.x, r16.z, r16.y, l(-1) - endif - ishl r16.y, r16.x, l(2) - mad r21.xyz, r25.xyzx, cb6[r16.x + 288].xxxx, r0.xyzx - mul r16.z, l(5.000000), cb6[r16.x + 288].y - mad r21.xyz, r7.xyzx, r16.zzzz, r21.xyzx - mul r23.xyzw, r21.yyyy, cb6[r16.y + 65].xyzw - mad r23.xyzw, cb6[r16.y + 64].xyzw, r21.xxxx, r23.xyzw - mad r21.xyzw, cb6[r16.y + 66].xyzw, r21.zzzz, r23.xyzw - add r21.xyzw, r21.xyzw, cb6[r16.y + 67].xyzw - div r21.xyz, r21.xyzx, r21.wwww - ge r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx - ge r24.xyz, r21.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r16.yz, -cb6[r16.x + 344].xxyx, cb6[r16.x + 344].zzwz - mad r16.yz, r21.xxyx, r16.yyzy, cb6[r16.x + 344].xxyx - mad r17.xw, r16.yyyz, cb6[400].zzzw, l(0.500000, 0.000000, 0.000000, 0.500000) - round_ni r17.xw, r17.xxxw - mad r16.yz, r16.yyzy, cb6[400].zzwz, -r17.xxwx - add r25.xyzw, r16.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r26.xyzw, r25.xxzz, r25.xxzz - add r18.xy, -r16.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) - min r21.xy, r16.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r25.xz, r16.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r27.xy, r18.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r25.xz, -r25.xxzx, r25.xxzx, r25.yywy - add r25.xz, r25.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) - mul r28.xy, r25.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r25.xz, r26.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r16.yz, r26.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r16.yyzy - mul r26.xy, r16.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r16.yz, -r21.xxyx, r21.xxyx, r18.xxyx - add r16.yz, r16.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r29.xy, r16.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r16.yz, r25.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r26.z, r29.x - mov r26.w, r16.y - mov r27.z, r28.x - mov r27.w, r25.x - add r30.xyzw, r26.zwxz, r27.zwxz - mov r29.z, r26.y - mov r29.w, r16.z - mov r28.z, r27.y - mov r28.w, r25.z - add r21.xyw, r28.zyzw, r29.zyzw - div r25.xyz, r27.xzwx, r30.zwyz - add r25.xyz, r25.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r25.xyz, r25.xyzx, cb6[400].xxxx - div r26.xyz, r28.zywz, r21.xywx - add r26.xyz, r26.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r26.xyw, r26.xyxz, cb6[400].yyyy - mul r27.xyzw, r21.xxxy, r30.zwyz - mov r25.w, r26.x - mad r28.xyzw, r17.xwxw, cb6[400].xyxy, r25.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.y, r28.xyxx, t13.xxxx, s3, r21.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.z, r28.zwzz, t13.xxxx, s3, r21.z - mul r16.z, r16.z, r27.y - mad r16.y, r27.x, r16.y, r16.z - mad r18.xy, r17.xwxx, cb6[400].xyxx, r25.zwzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.z, r18.xyxx, t13.xxxx, s3, r21.z - mad r16.y, r27.z, r16.z, r16.y - mov r26.z, r25.x - mad r28.xyzw, r17.xwxw, cb6[400].xyxy, r26.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.z, r28.xyxx, t13.xxxx, s3, r21.z - mad r16.y, r27.w, r16.z, r16.y - mul r27.xyzw, r21.yyww, r30.xyzw - mov r26.xz, r25.yyzy - mad r25.xyzw, r17.xwxw, cb6[400].xyxy, r26.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.z, r25.xyxx, t13.xxxx, s3, r21.z - mad r16.y, r27.x, r16.z, r16.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.z, r25.zwzz, t13.xxxx, s3, r21.z - mad r16.y, r27.y, r16.z, r16.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.z, r28.zwzz, t13.xxxx, s3, r21.z - mad r16.y, r27.z, r16.z, r16.y - ige r16.z, r16.x, l(0) - or r23.xyz, r23.xyzx, r24.xyzx - or r18.x, r23.y, r23.x - or r18.x, r23.z, r18.x - and r18.y, r21.z, l(0x7fffffff) - ult r18.y, l(0x7f800000), r18.y - or r18.x, r18.y, r18.x - mad r23.xyzw, r17.xwxw, cb6[400].xyxy, r26.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.x, r23.xyxx, t13.xxxx, s3, r21.z - mad r16.y, r27.w, r17.x, r16.y - mul r17.x, r21.w, r30.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.w, r23.zwzz, t13.xxxx, s3, r21.z - mad r16.y, r17.x, r17.w, r16.y - add r16.y, r16.y, l(-1.000000) - mad r16.x, cb6[r16.x + 288].w, r16.y, l(1.000000) - movc r16.x, r18.x, l(1.000000), r16.x - movc r16.x, r16.z, r16.x, l(1.000000) - else - mov r16.x, l(1.000000) - endif - else - mov r16.x, l(1.000000) - endif - mul r15.w, r15.w, r16.x - mov r22.xyz, l(0,0,0,0) - endif - add r20.xyz, r20.xyzx, r22.xyzx - mov r17.z, r18.w - endloop - mov r11.w, r15.w - add r19.xyz, r19.xyzx, r20.xyzx - iadd r12.y, r12.y, l(1) -endloop -add r0.x, l(1.000000), -cb2[0].y -mad r0.z, r0.y, cb0[156].w, cb0[157].w -mad r0.w, r2.w, cb0[154].w, -cb0[153].w -max r0.zw, r0.zzzw, l(0.000000, 0.000000, 0.010000, 0.000000) -mul r1.w, r0.z, l(-1.442695) -exp r1.w, r1.w -add r1.w, -r1.w, l(1.000000) -div r0.z, r1.w, r0.z -mad r1.w, r0.y, cb0[156].w, cb0[158].w -mul r1.w, r1.w, l(1.442695) -exp r1.w, r1.w -mul r0.z, r0.z, r1.w -mul r0.z, r0.z, -r0.w -mul r2.xyz, r0.zzzz, cb0[155].xyzx -mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r2.xyz, r2.xyzx -dp3 r0.z, -r4.xyzx, cb0[154].xyzx -mad r0.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r1.w, r0.zzzz, cb0[155].wwww -add r0.w, r0.w, -r1.w -lt r1.w, l(0.000000), cb0[163].z -if_nz r1.w - and r10.w, l(7), cb0[108].w - imad r6.xyz, r10.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r1.w, r6.y, r6.z, r6.x - imad r3.w, r6.z, r1.w, r6.y - imad r5.w, r1.w, r3.w, r6.z - imad r6.x, r3.w, r5.w, r1.w - dp3 r1.w, -r4.xyzx, -r3.xyzx - add r3.x, r0.y, -cb0[44].y - lt r3.y, l(5.960464478E-08), r1.w - div r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), r1.w - and r1.w, r1.w, r3.y - mul r1.w, r1.w, cb0[163].w - div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w - mul r3.z, r1.w, r3.y - mad r4.x, r3.z, r3.x, cb0[44].y - mad r3.x, -r3.z, r3.x, r3.x - mul r3.z, r3.x, cb0[159].z - mul r3.x, r3.x, cb0[162].x - max r3.xz, r3.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - add r4.y, r4.x, -cb0[159].x - mul r4.y, r4.y, cb0[159].z - max r4.y, r4.y, l(-127.000000) - exp r4.y, -r4.y - mul r4.y, r4.y, cb0[159].y - lt r4.z, l(5.960464478E-08), |r3.z| - exp r6.z, -r3.z - add r6.z, -r6.z, l(1.000000) - div r6.z, r6.z, r3.z - mad r3.z, -r3.z, l(0.240226507), l(0.693147182) - movc r3.z, r4.z, r6.z, r3.z - add r4.x, r4.x, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.z, l(5.960464478E-08), |r3.x| - exp r6.z, -r3.x - add r6.z, -r6.z, l(1.000000) - div r6.z, r6.z, r3.x - mad r3.x, -r3.x, l(0.240226507), l(0.693147182) - movc r3.x, r4.z, r6.z, r3.x - mul r3.x, r3.x, r4.x - mad r3.x, r4.y, r3.z, r3.x - mad r1.w, -r1.w, r3.y, l(1.000000) - mul r1.w, r2.w, r1.w - mul r1.w, r1.w, r3.x - exp r1.w, -r1.w - min r1.w, r1.w, l(1.000000) - max r1.w, r1.w, cb0[161].w - mad_sat r3.xy, r2.wwww, cb0[160].ywyy, cb0[160].xzxx - add r1.w, r1.w, r3.x - add r1.w, r3.y, r1.w - min r1.w, r1.w, l(1.000000) - imad r6.y, r5.w, r6.x, r3.w - ushr r3.xy, r6.xyxx, l(16, 16, 0, 0) - utof r3.xy, r3.xyxx - mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mad r3.xy, r3.xyxx, cb0[167].wwww, r12.zwzz - mul r3.xy, r3.xyxx, cb0[165].xyxx - mad r3.w, r10.z, cb0[164].x, cb0[164].y - log r3.w, r3.w - mul r3.w, r3.w, cb0[164].z - div r3.z, r3.w, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t5.xyzw, s0, l(0.000000) - add r4.x, r10.z, -cb0[166].z - mul_sat r4.x, r4.x, l(1000000.000000) - add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r4.xxxx, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r4.x, -r1.w, l(1.000000) - mul r4.xyz, r4.xxxx, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r1.w, r1.w, r3.w -else - add r0.y, r0.y, -cb0[44].y - mul r3.w, r0.y, cb0[159].z - max r3.w, r3.w, l(-127.000000) - mul r0.y, r0.y, cb0[162].x - max r0.y, r0.y, l(-127.000000) - add r4.x, cb0[44].y, -cb0[159].x - mul r4.x, r4.x, cb0[159].z - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[159].y - lt r4.y, l(5.960464478E-08), |r3.w| - exp r4.z, -r3.w - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r3.w - mad r3.w, -r3.w, l(0.240226507), l(0.693147182) - movc r3.w, r4.y, r4.z, r3.w - add r4.y, cb0[44].y, -cb0[162].z - mul r4.y, r4.y, cb0[162].x - max r4.y, r4.y, l(-127.000000) - exp r4.y, -r4.y - mul r4.y, r4.y, cb0[162].y - lt r4.z, l(5.960464478E-08), |r0.y| - exp r5.w, -r0.y - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r0.y - mad r0.y, -r0.y, l(0.240226507), l(0.693147182) - movc r0.y, r4.z, r5.w, r0.y - mul r0.y, r0.y, r4.y - mad r0.y, r4.x, r3.w, r0.y - mul r0.y, r2.w, r0.y - exp r0.y, -r0.y - min r0.y, r0.y, l(1.000000) - max r0.y, r0.y, cb0[161].w - mad_sat r4.xy, r2.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.y, r0.y, r4.x - add r0.y, r4.y, r0.y - min r1.w, r0.y, l(1.000000) - add r0.y, -r1.w, l(1.000000) - mul r3.xyz, r0.yyyy, cb0[161].xyzx -endif -// === Glass Fix: Reduce clustered lights and overall brightness === -lt r35.x, l(0.500000), cb13[13].z -if_nz r35.x - mul r19.xyz, r19.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r1.xyz, r1.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) -endif -dp3 r0.y, r1.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r1.xyz, -r0.yyyy, r1.xyzx -mad r1.xyz, cb0[184].wwww, r1.xyzx, r0.yyyy -mul r4.xyz, r5.xyzx, r8.wwww -mad r1.xyz, r1.xyzx, cb0[184].xyzx, r4.xyzx -mad r4.xyz, r19.xyzx, r11.wwww, r11.xyzx -add r1.xyz, r1.xyzx, r4.xyzx -mul r4.xyz, r1.wwww, r2.xyzx -mad r0.y, r0.z, r0.z, l(1.000000) -mul r0.yz, r0.yywy, l(0.000000, 0.0596831031, 12.566371, 0.000000) -mad r5.xyz, cb0[156].xyzx, r0.yyyy, cb0[158].xyzx -mad r0.y, -cb0[155].w, cb0[155].w, l(1.000000) -sqrt r0.w, r0.w -mul r0.z, r0.w, r0.z -max r0.z, r0.z, l(0.001000) -div r0.y, r0.y, r0.z -mad_sat r0.yzw, cb0[157].xxyz, r0.yyyy, r5.xxyz -mul r0.yzw, r0.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000) -add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r0.yzw, r0.yyzw, r2.xxyz -mad r0.yzw, r0.yyzw, r1.wwww, r3.xxyz -mul r0.yzw, r0.xxxx, r0.yyzw -// === Glass Transparency Fix === -lt r35.x, l(0.500000), cb13[13].z -if_nz r35.x - // Boost transmittance: lerp(r4, 1, 0.5) - add r35.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r35.xyz, r35.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r4.xyzx - // Reduce inscatter intensity - mul r36.xyz, r0.yzwy, l(0.350000, 0.350000, 0.350000, 0.000000) - // Modified fog blend - mad r0.yzw, r1.xxyz, r35.xxyz, r36.xxyz -else - // Original fog blend - mad r0.yzw, r1.xxyz, r4.xxyz, r0.yyzw -endif -mul r1.xyz, r4.wwww, r0.yzwy -mul r1.w, r0.x, r4.w -min o1.xy, r8.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) -dp3 r0.x, r1.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mul r0.x, r1.w, r0.x -max r0.x, r1.w, r0.x -mul_sat r0.x, r0.x, l(10.000000) -lt r0.x, l(0.500000), r0.x -and o1.z, r0.x, l(0x3f800000) -// === Glass Highlight Compression === -lt r35.x, l(0.500000), cb13[13].z -if_nz r35.x - dp3 r35.y, r1.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) - lt r35.z, l(0.500000), r35.y - if_nz r35.z - add r35.w, r35.y, l(-0.500000) - mul r35.w, r35.w, l(-0.666667) - exp r35.w, r35.w - add r35.w, -r35.w, l(1.000000) - mad r35.w, r35.w, l(1.500000), l(0.500000) - max r36.x, r35.y, l(0.001000) - div r36.x, r35.w, r36.x - mul r1.xyz, r1.xyzx, r36.xxxx - endif -endif -mov o0.xyzw, r1.xyzw -mov o1.w, l(0) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0x424F9536.cso b/src/games/endfield/glass/0x91CF3135.cso similarity index 95% rename from src/games/endfield/glass/0x424F9536.cso rename to src/games/endfield/glass/0x91CF3135.cso index 821f58396032c1f0765d7e1bc7aa8e1461455dd5..098de349e448e9c8c6051c00b4f93a0fc57d57ae 100644 GIT binary patch delta 453 zcmZXOODIHf6vqE&?wF~mTZ&Bc;9fB%GwRNm)hs=BHa3h%qPZT)O4eQ_l+f8Iq?GX* z&At8`Gbve+jVlYom@F(U<+)MLouXv(JLmh(_ti-r3CSa&w7H|PX=rq3YV^7@_0m_i zw>A$Jy|mQ=pIo(YJEXbG(IwCr6I(=h!&A2tUNPtP!#jdUfe#+`?1Om67@L`tiHv3O z$@>CXd?+9O=Lh*jMIFE`9!L@5qcl$Jl|97pbO~RQ*Mz?v9<7d<`DLG(Kl81c`I_H+ z&5A%qZ6HW&3z(6)fFEwT9{8|A4xd9!#O08J-cShc3;LdP59AAb-n{X6xHaNR(dYGy zIW}1_bI@*^m5GcU;$>U`4Zq?}Q78SrD4RA*W2GvQ-=KDZPV}JGZpCADP}Jz^o{-HD z(=gm$1sZSbcLL~qWI*YGExvw!0yMfW@y`!|FGg9K<&w4Hji46z) z+wZU)lqhoXDq~ub9No;Ylk&WZlFR3LzTfBjttXKe5_!SgKho##UD^p2BUSIa+H>8i# z6}ZNSrm25^C!cNZ0w`co@)Dn<8REEXBP#O^d`;dI{&u*pZCKAo9eV!Ev7zVNfAj6@ z0vR2yPGZ2NN0wYpDDbSSS_8LO_V|fWj~neC4-~(3k#rF5zV|!*#zV@Ww=qedcQa<% zW%bNNyKzw_GM2&1kQ-9?8M26J(jTj`ZnGS=s1o_T>L{d%Hp~pw;E_5hrs!&&mGuxy zp%QL|6c2 0.5 - lt r30.z, l(0.500000), r30.y - if_nz r30.z - // compression = 0.5 + 1.5 * (1 - exp(-(luma - 0.5) / 1.5)) - add r30.w, r30.y, l(-0.500000) - mul r30.w, r30.w, l(-0.666667) - exp r30.w, r30.w - add r30.w, -r30.w, l(1.000000) - mad r30.w, r30.w, l(1.500000), l(0.500000) - // scale = compression / luma - max r31.x, r30.y, l(0.001000) - div r31.x, r30.w, r31.x - mul r8.xyz, r8.xyzx, r31.xxxx - endif -endif -mov o0.xyzw, r8.xyzw -mov o1.w, l(0) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0xB8941FB1.ps_5_0.asm b/src/games/endfield/glass/0xB8941FB1.ps_5_0.asm deleted file mode 100644 index 0f5fbe5301..0000000000 --- a/src/games/endfield/glass/0xB8941FB1.ps_5_0.asm +++ /dev/null @@ -1,1804 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Wed Feb 4 07:24:18 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xyz -// TEXCOORD 0 xy 1 NONE float xy -// TEXCOORD 1 zw 1 NONE float zw -// TEXCOORD 2 xyz 2 NONE float xyz -// TEXCOORD 3 xyzw 3 NONE float xyzw -// TEXCOORD 4 xyzw 4 NONE float x -// TEXCOORD 5 xyz 5 NONE float xyz -// TEXCOORD 6 xyz 6 NONE float xyz -// TEXCOORD 7 x 7 NONE uint x -// SV_IsFrontFace 0 x 8 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[244], immediateIndexed -dcl_constantbuffer CB1[4096], dynamicIndexed -dcl_constantbuffer CB2[24], immediateIndexed -dcl_constantbuffer CB3[259], dynamicIndexed -dcl_constantbuffer CB4[3], immediateIndexed -dcl_constantbuffer CB5[2054], dynamicIndexed -dcl_constantbuffer CB6[715], dynamicIndexed -dcl_constantbuffer CB7[160], dynamicIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_comparison -dcl_sampler s4, mode_default -dcl_sampler s5, mode_default -dcl_sampler s6, mode_default -dcl_resource_structured t0, 4 -dcl_resource_texture2darray (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2d (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture3d (float,float,float,float) t11 -dcl_resource_texture3d (float,float,float,float) t12 -dcl_resource_texture3d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture2d (float,float,float,float) t18 -dcl_input_ps_siv linear noperspective v0.xyz, position -dcl_input_ps linear v1.xy -dcl_input_ps linear v1.zw -dcl_input_ps linear v2.xyz -dcl_input_ps linear v3.xyzw -dcl_input_ps linear v4.x -dcl_input_ps linear v5.xyz -dcl_input_ps linear v6.xyz -dcl_input_ps constant v7.x -dcl_input_ps_sgv constant v8.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 40 -mul r0.xy, v0.xyxx, cb0[82].zwzz -mad r0.zw, r0.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -mul r1.xyzw, -r0.wwww, cb0[25].xyzw -mad r1.xyzw, cb0[24].xyzw, r0.zzzz, r1.xyzw -mad r1.xyzw, cb0[26].xyzw, v0.zzzz, r1.xyzw -add r1.xyzw, r1.xyzw, cb0[27].xyzw -div r1.xyz, r1.xyzx, r1.wwww -lt r0.z, l(0.000000), v3.w -movc r0.z, r0.z, l(1.000000), l(-1.000000) -eq r0.w, l(0.000000), cb0[86].w -add r2.xyz, -r1.xyzx, cb0[44].xyzx -mov r3.x, cb0[0].z -mov r3.y, cb0[1].z -mov r3.z, cb0[2].z -movc r2.xyz, r0.wwww, r2.xyzx, r3.xyzx -dp3 r0.w, r2.xyzx, r2.xyzx -max r2.w, r0.w, l(9.999999939E-09) -rsq r2.w, r2.w -mul r4.xyz, r2.wwww, r2.xyzx -mul r0.w, r0.w, r2.w -add r5.xy, -v1.xyxx, v1.zwzz -mad r5.zw, cb2[2].wwww, r5.xxxy, v1.xxxy -mad r5.zw, r5.zzzw, cb2[11].xxxy, cb2[11].zzzw -sample_b_indexable(texture2d)(float,float,float,float) r6.xyzw, r5.zwzz, t2.xyzw, s4, cb0[108].x -mad r5.xy, cb2[3].xxxx, r5.xyxx, v1.xyxx -mad r5.xy, r5.xyxx, cb2[12].xyxx, cb2[12].zwzz -add r3.w, cb0[108].x, cb2[3].y -sample_b_indexable(texture2d)(float,float,float,float) r5.xyzw, r5.xyxx, t3.xyzw, s5, r3.w -mad r5.xy, r5.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -lt r7.xy, |r5.xyxx|, l(0.012000, 0.012000, 0.000000, 0.000000) -movc r5.xy, r7.xyxx, l(0,0,0,0), r5.xyxx -mul r7.xy, r5.xyxx, cb2[0].xxxx -add r7.zw, -r6.wwww, r5.wwwz -mad r3.w, cb2[1].z, r7.z, r6.w -mul r3.w, r3.w, cb2[8].w -mad r4.w, r3.w, v4.x, -r3.w -mad r8.w, cb2[23].x, r4.w, r3.w -add r3.w, -cb2[0].z, cb2[0].w -mad r9.w, r5.z, r3.w, cb2[0].z -add_sat r3.w, l(-1.000000), cb2[3].w -add r4.w, -r6.w, cb2[4].y -mad r3.w, r3.w, r4.w, r6.w -mov_sat r4.w, cb2[21].y -add_sat r10.xy, l(-1.000000, -2.000000, 0.000000, 0.000000), cb2[21].yyyy -mad r5.z, r10.x, r7.w, r6.w -add r6.w, -r5.z, r5.w -mad r5.z, r10.y, r6.w, r5.z -add r5.z, r5.z, l(-1.000000) -mad r5.z, r4.w, r5.z, l(1.000000) -mad_sat r5.z, r5.z, l(1.11111116), l(-0.0555555597) -ishl r6.w, v7.x, l(4) -ge r7.z, r5.z, l(0.100000) -and r7.z, r7.z, l(0x3f800000) -mul r7.w, r7.z, cb1[r6.w + 15].w -mul r6.xyz, r6.xyzx, cb2[8].xyzx -mul_sat r6.xyz, r6.xyzx, cb2[4].zzzz -add r10.xyz, -r6.xyzx, cb2[8].xyzx -mad r6.xyz, cb2[4].xxxx, r10.xyzx, r6.xyzx -mad r7.z, -cb1[r6.w + 15].w, r7.z, l(1.000000) -mad r10.xyz, cb1[r6.w + 15].xyzx, r7.wwww, r7.zzzz -mul r11.xyz, r6.xyzx, r10.xyzx -mul r12.xyz, v2.zxyz, v3.yzxy -mad r12.xyz, v2.yzxy, v3.zxyz, -r12.xyzx -mul r12.xyz, r0.zzzz, r12.xyzx -mul r7.yzw, r7.yyyy, r12.xxyz -mad r7.xyz, v3.xyzx, r7.xxxx, r7.yzwy -dp2 r0.z, r5.xyxx, r5.xyxx -add r0.z, -r0.z, l(1.000000) -max r0.z, r0.z, l(0.000000) -sqrt r0.z, r0.z -lt r5.x, l(0.000000), cb2[1].w -movc r5.x, r5.x, l(-1.000000), l(1.000000) -movc r5.x, v8.x, l(1.000000), r5.x -mul r0.z, r0.z, r5.x -mad r7.xyz, v2.xyzx, r0.zzzz, r7.xyzx -dp3 r0.z, r7.xyzx, r7.xyzx -rsq r0.z, r0.z -mul r7.xyz, r0.zzzz, r7.xyzx -dp3 r0.z, -r4.xyzx, r7.xyzx -mul r5.x, cb2[22].x, cb2[22].x -mad r5.y, -r0.z, r0.z, l(1.000000) -mad r5.x, -r5.x, r5.y, l(1.000000) -sqrt r5.y, r5.x -mad r5.y, cb2[22].x, r0.z, r5.y -ge r5.x, r5.x, l(0.000000) -mul r12.xyz, r7.xyzx, r5.yyyy -mad r12.xyz, cb2[22].xxxx, -r4.xyzx, -r12.xyzx -and r12.xyz, r5.xxxx, r12.xyzx -mul r5.xy, r12.yyyy, cb0[1].xyxx -mad r5.xy, cb0[0].xyxx, r12.xxxx, r5.xyxx -mad r5.xy, cb0[2].xyxx, r12.zzzz, r5.xyxx -mul r5.xy, r5.xyxx, cb2[22].yyyy -mad r0.xy, r5.xyxx, r8.wwww, r0.xyxx -sample_b_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xyxx, t4.xyzw, s6, cb0[108].x -max r0.x, v5.z, l(9.999999939E-09) -div r0.xy, v5.xyxx, r0.xxxx -max r5.x, v6.z, l(9.999999939E-09) -div r5.xy, v6.xyxx, r5.xxxx -add r13.xy, r0.xyxx, -r5.xyxx -mul r0.x, l(0.080000), cb2[0].y -mul r14.xyz, r3.wwww, r11.xyzx -mad r14.xyz, r6.xyzx, r10.xyzx, -r14.xyzx -mad r0.x, -r0.x, r3.w, r0.x -mad r15.xyz, r11.xyzx, r3.wwww, r0.xxxx -dp3 r0.x, r7.xyzx, r4.xyzx -mad r16.xyzw, r9.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r0.y, r16.x, r16.x -max r0.x, r0.x, l(0.000000) -mul r3.w, r0.x, l(-9.280000) -exp r3.w, r3.w -min r0.y, r0.y, r3.w -mad r0.y, r0.y, r16.x, r16.y -mad r5.xy, r0.yyyy, l(-1.040000, 1.040000, 0.000000, 0.000000), r16.zwzz -eq r0.y, l(1.000000), cb0[113].y -mul r16.xyzw, r1.yyyy, cb0[241].xyzw -mad r16.xyzw, cb0[240].xyzw, r1.xxxx, r16.xyzw -mad r16.xyzw, cb0[242].xyzw, r1.zzzz, r16.xyzw -add r16.xyzw, r16.xyzw, cb0[243].xyzw -div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r16.w -mul r16.xyz, r16.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) -mul r16.xyz, r3.wwww, r16.xyzx -mad_sat r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -mul r16.xy, r16.xyxx, cb0[82].xyxx -ftou r17.xy, r16.xyxx -mad r3.w, cb0[84].z, r16.z, cb0[84].w -div r17.z, l(1.000000, 1.000000, 1.000000, 1.000000), r3.w -ftou r16.xy, v0.xyxx -mul r3.w, r1.y, cb0[1].z -mad r3.w, cb0[0].z, r1.x, r3.w -mad r3.w, cb0[2].z, r1.z, r3.w -add r3.w, r3.w, cb0[3].z -mov r16.z, |r3.w| -movc r16.xyz, r0.yyyy, r17.xyzx, r16.xyzx -mad r17.xyz, r7.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r1.xyzx -mad r18.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r18.xyz, r17.xzyx, -r18.xyzx -max r0.y, |r18.y|, |r18.x| -add r0.y, r0.y, l(-464.000000) -mul_sat r0.y, r0.y, l(0.031250) -add r3.w, |r18.z|, l(-208.000000) -mul_sat r3.w, r3.w, l(0.031250) -max r0.y, r0.y, r3.w -ne r3.w, l(0.000000), cb0[210].w -lt r10.w, r0.y, l(1.000000) -and r3.w, r3.w, r10.w -if_nz r3.w - mad r18.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r18.xyz, r17.xzyx, -r18.xyzx - max r3.w, |r18.y|, |r18.x| - add r3.w, r3.w, l(-29.000000) - mul_sat r3.w, r3.w, l(0.500000) - add r10.w, |r18.z|, l(-13.000000) - mul_sat r10.w, r10.w, l(0.500000) - max r3.w, r3.w, r10.w - lt r10.w, r3.w, l(1.000000) - if_nz r10.w - mad r18.xyz, r17.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r19.xyz, r18.xyzx, cb0[211].xyzx - round_ni r19.xyz, r19.xyzx - mad r18.xyz, r18.xyzx, cb0[211].xyzx, -r19.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r18.xyzx, t11.yzwx, s1, l(0.000000) - add r10.w, -r3.w, l(1.000000) - mul r11.w, l(0.500000), cb0[211].y - mad r12.w, -cb0[211].y, l(0.500000), l(1.000000) - max r11.w, r11.w, r18.y - min r11.w, r12.w, r11.w - mul r18.w, r11.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r18.xwzx, t12.xyzw, s0, l(0.000000) - mad r11.w, r20.w, r10.w, r0.y - add r21.xyz, r18.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t12.xyzw, s0, l(0.000000) - mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r19.yyyy, r21.xyzx - mov r21.w, r19.y - mul r21.xyzw, r10.wwww, r21.xyzw - add r18.xyz, r18.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t12.xyzw, s0, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r19.xxxx, r18.xyzx - mov r18.w, r19.x - mul r18.xyzw, r10.wwww, r18.xyzw - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r19.wwww, r20.xyzx - mul r19.xyzw, r10.wwww, r19.xyzw - else - mov r21.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r19.xyzw, l(0,0,0,0) - mov r11.w, r0.y - endif - mad r20.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r20.xyz, r17.xzyx, -r20.xyzx - max r10.w, |r20.y|, |r20.x| - add r10.w, r10.w, l(-116.000000) - mul_sat r10.w, r10.w, l(0.125000) - add r12.w, |r20.z|, l(-52.000000) - mul_sat r12.w, r12.w, l(0.125000) - max r10.w, r10.w, r12.w - lt r12.w, r10.w, l(1.000000) - if_nz r12.w - mad r20.xyz, r17.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r22.xyz, r20.xyzx, cb0[211].xyzx - round_ni r22.xyz, r22.xyzx - mad r20.xyz, r20.xyzx, cb0[211].xyzx, -r22.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r20.xyzx, t13.yzwx, s1, l(0.000000) - add r12.w, -r10.w, l(1.000000) - mul r3.w, r3.w, r12.w - mul r12.w, l(0.500000), cb0[211].y - mad r13.w, -cb0[211].y, l(0.500000), l(1.000000) - max r12.w, r12.w, r20.y - min r12.w, r13.w, r12.w - mul r20.w, r12.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r23.xyzw, r20.xwzx, t14.xyzw, s0, l(0.000000) - mad r11.w, r23.w, r3.w, r11.w - add r24.xyz, r20.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t14.xyzw, s0, l(0.000000) - mad r24.xyz, r24.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r24.xyz, r22.yyyy, r24.xyzx - mov r24.w, r22.y - mad r21.xyzw, r24.xyzw, r3.wwww, r21.xyzw - add r20.xyz, r20.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t14.xyzw, s0, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r22.xxxx, r20.xyzx - mov r20.w, r22.x - mad r18.xyzw, r20.xyzw, r3.wwww, r18.xyzw - mad r20.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r22.wwww, r20.xyzx - mad r19.xyzw, r22.xyzw, r3.wwww, r19.xyzw - endif - lt r3.w, l(0.000000), r10.w - if_nz r3.w - mad r17.xyz, r17.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r20.xyz, r17.xyzx, cb0[211].xyzx - mul r22.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r20.xyz, r20.xyzx - mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r20.xyzx - mad r20.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r17.xyz, r22.xyzx, r17.xyzx - min r17.xyz, r20.xyzx, r17.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r23.xyw, r17.xyzx, t15.yzwx, s1, l(0.000000) - add r3.w, -r0.y, l(1.000000) - mul r3.w, r3.w, r10.w - max r10.w, r22.y, r17.y - min r10.w, r20.y, r10.w - mul r17.w, r10.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t16.xyzw, s0, l(0.000000) - add r22.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t16.xyzw, s0, l(0.000000) - mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r23.yyyy, r22.xyzx - mov r22.w, r23.y - mad r21.xyzw, r22.xyzw, r3.wwww, r21.xyzw - add r17.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s0, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r23.xxxx, r17.xyzx - mov r17.w, r23.x - mad r18.xyzw, r17.xyzw, r3.wwww, r18.xyzw - mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r23.xyz, r23.wwww, r17.xyzx - mad r19.xyzw, r23.xyzw, r3.wwww, r19.xyzw - mad r11.w, r20.w, r3.w, r11.w - endif - mad_sat r3.w, r11.w, l(2.000000), l(-1.000000) - add r17.x, -r0.y, r3.w - add r0.y, r0.y, r3.w - mul r17.y, r0.y, l(0.500000) -else - mov r21.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r19.xyzw, l(0,0,0,0) - mov r17.xy, l(0,1.000000,0,0) -endif -mul r20.xyzw, r17.yyyx, cb0[213].xyzw -mad r20.y, r20.w, l(0.500000), r20.y -mul r17.zw, r17.yyyx, cb0[213].wwwy -mad r20.w, r17.w, l(0.375000), r17.z -add r19.xyzw, r19.xyzw, r20.xyzw -mul r20.xyzw, r17.yyyx, cb0[214].xyzw -mad r20.y, r20.w, l(0.500000), r20.y -mul r17.zw, r17.yyyx, cb0[214].wwwy -mad r20.w, r17.w, l(0.375000), r17.z -add r18.xyzw, r18.xyzw, r20.xyzw -mul r20.xyzw, r17.yyyx, cb0[215].xyzw -mad r20.y, r20.w, l(0.500000), r20.y -mul r17.xy, r17.yxyy, cb0[215].wyww -mad r20.w, r17.y, l(0.375000), r17.x -add r17.xyzw, r20.xyzw, r21.xyzw -dp3 r0.y, r19.xyzx, r7.xyzx -add r0.y, r19.w, r0.y -max r19.x, r0.y, l(0.000000) -dp3 r0.y, r18.xyzx, r7.xyzx -add r0.y, r18.w, r0.y -max r19.y, r0.y, l(0.000000) -dp3 r0.y, r17.xyzx, r7.xyzx -add r0.y, r17.w, r0.y -max r19.z, r0.y, l(0.000000) -add r0.y, r0.z, r0.z -mad r17.xyz, r7.xyzx, -r0.yyyy, -r4.xyzx -add r0.y, l(-1.000000), cb0[113].x -max r0.z, r9.w, l(0.001000) -log r0.z, r0.z -mad r0.z, -r0.z, l(1.200000), l(1.000000) -add r0.y, -r0.z, r0.y -utof r18.xy, r16.xyxx -mul r18.zw, r18.xxxy, cb3[0].wwww -round_ni r18.zw, r18.zzzw -add r0.z, r16.z, -cb3[2].y -round_ni r0.z, r0.z -add r3.w, l(-1.000000), cb3[1].x -max r10.w, r0.z, l(0.000000) -min r3.w, r3.w, r10.w -ge r0.z, r3.w, r0.z -mad r10.w, r18.w, cb3[0].x, r18.z -ftoi r10.w, r10.w -iadd r10.w, r10.w, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.w, r10.w, l(0), t0.xxxx -ftoi r3.w, r3.w -iadd r3.w, r3.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.w, r3.w, l(0), t0.xxxx -and r3.w, r3.w, r10.w -and r0.z, r0.z, r3.w -mul r20.xyz, r19.xyzx, cb0[111].xxxx -dp3 r3.w, r20.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r1.w, l(1.000000) -mov r7.w, l(1.000000) -mov r20.xyz, l(0,0,0,0) -mov r10.w, l(1.000000) -mov r11.w, r0.z -mov r12.w, l(0) -loop - lt r13.w, l(0.010000), r10.w - ine r14.w, r11.w, l(0) - and r14.w, r13.w, r14.w - if_nz r14.w - firstbit_lo r14.w, r11.w - ishl r15.w, l(1), r14.w - xor r11.w, r11.w, r15.w - ishl r14.w, r14.w, l(3) - dp4 r21.x, cb3[r14.w + 6].xyzw, r1.xyzw - dp4 r21.y, cb3[r14.w + 7].xyzw, r1.xyzw - dp4 r21.z, cb3[r14.w + 8].xyzw, r1.xyzw - ge r22.xyz, cb3[r14.w + 5].xyzx, |r21.xyzx| - and r15.w, r22.y, r22.x - and r15.w, r22.z, r15.w - if_nz r15.w - mul r15.w, l(0.100000), cb3[r14.w + 5].x - mul r22.xyz, |r21.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r18.zw, r22.xxxy, r22.xxxy - add r22.xyw, -|r21.xyxz|, cb3[r14.w + 5].xyxz - mul r22.xyw, r22.xyxw, cb3[r14.w + 9].xyxz - eq r17.w, l(1.000000), cb3[r14.w + 10].x - if_nz r17.w - dp3 r23.x, cb3[r14.w + 6].xyzx, r17.xyzx - dp3 r23.y, cb3[r14.w + 7].xyzx, r17.xyzx - dp3 r23.z, cb3[r14.w + 8].xyzx, r17.xyzx - add r24.xyz, -r21.xyzx, cb3[r14.w + 5].xyzx - div r24.xyz, r24.xyzx, r23.xyzx - add r25.xyz, -r21.xyzx, -cb3[r14.w + 5].xyzx - div r25.xyz, r25.xyzx, r23.xyzx - lt r26.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx - movc r24.xyz, r26.xyzx, r24.xyzx, r25.xyzx - min r17.w, r24.y, r24.x - min r17.w, r24.z, r17.w - mad r21.xyz, r23.xyzx, r17.wwww, r21.xyzx - else - mov r21.xyz, r17.xyzx - endif - dp3 r17.w, r21.xyzx, r21.xyzx - rsq r17.w, r17.w - mul r21.xyz, r17.wwww, r21.xyzx - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx - lt r24.xyz, r21.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r23.xyz, -r23.xyzx, r24.xyzx - itof r23.xyz, r23.xyzx - dp3 r17.w, r21.xyzx, r23.xyzx - div r21.xyz, r21.xyzx, r17.wwww - lt r17.w, r21.z, l(0.000000) - add r21.zw, -|r21.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r21.zw, r21.zzzw, r23.xxxy - movc r21.xy, r17.wwww, r21.zwzz, r21.xyxx - dp4 r17.w, cb3[r14.w + 4].xyzw, r7.xyzw - max r17.w, r17.w, l(0.000000) - max r17.w, r17.w, l(0.000100) - min r19.w, r22.w, r22.y - min r19.w, r19.w, r22.x - add r18.z, r18.w, r18.z - mad r18.z, r22.z, r22.z, r18.z - mad r15.w, r15.w, r15.w, -r18.z - mul r15.w, r15.w, cb3[r14.w + 9].x - mul r15.w, r15.w, cb3[r14.w + 9].x - add r18.z, l(1.000000), -cb3[r14.w + 10].y - mul r15.w, r15.w, r18.z - mul r15.w, r15.w, l(100.000000) - mad_sat r15.w, r19.w, cb3[r14.w + 10].y, r15.w - mul r18.z, r15.w, cb3[r14.w + 10].w - mad r21.xy, r21.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r21.xy, r21.xyxx, cb3[1].wwww, cb3[2].wwww - mov r21.z, cb3[r14.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r21.xyz, r21.xyzx, t1.xyzw, s2, r0.y - mul r21.xyz, r21.xyzx, cb3[r14.w + 9].wwww - div r18.w, r3.w, r17.w - min r18.w, |r18.w|, l(1.000000) - mad r18.w, r18.w, l(2.000000), r3.w - add r17.w, r17.w, l(2.000000) - div r17.w, r18.w, r17.w - add r17.w, r17.w, l(-1.000000) - mad r17.w, r17.w, cb0[112].w, l(1.000000) - mul r21.xyz, r17.wwww, r21.xyzx - mul r21.xyz, r18.zzzz, r21.xyzx - mad r20.xyz, r21.xyzx, r10.wwww, r20.xyzx - mad r14.w, -r15.w, cb3[r14.w + 10].w, l(1.000000) - mul r10.w, r10.w, r14.w - endif - mov r12.w, l(-1) - continue - else - mov r12.w, r13.w - break - endif - mov r12.w, r13.w -endloop -if_nz r12.w - dp3 r0.z, r17.xyzx, r17.xyzx - rsq r0.z, r0.z - mul r21.xyz, r0.zzzz, r17.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx - lt r23.xyz, r21.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r22.xyz, -r22.xyzx, r23.xyzx - itof r22.xyz, r22.xyzx - dp3 r0.z, r21.xyzx, r22.xyzx - div r21.xyz, r21.xyzx, r0.zzzz - lt r0.z, r21.z, l(0.000000) - add r18.zw, -|r21.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r18.zw, r18.zzzw, r22.xxxy - movc r18.zw, r0.zzzz, r18.zzzw, r21.xxxy - mov r7.w, l(1.000000) - dp4 r0.z, cb3[3].xyzw, r7.xyzw - max r0.z, r0.z, l(0.000000) - max r0.z, r0.z, l(0.000100) - mad r18.zw, r18.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r21.xy, r18.zwzz, cb3[1].wwww, cb3[2].wwww - mov r21.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r21.xyz, r21.xyzx, t1.xyzw, s2, r0.y - div r0.y, r3.w, r0.z - min r0.y, |r0.y|, l(1.000000) - mad r0.y, r0.y, l(2.000000), r3.w - add r0.z, r0.z, l(2.000000) - div r0.y, r0.y, r0.z - add r0.y, r0.y, l(-1.000000) - mad r0.y, r0.y, cb0[112].w, l(1.000000) - mul r21.xyz, r0.yyyy, r21.xyzx - mad r20.xyz, r21.xyzx, r10.wwww, r20.xyzx -endif -mul r19.xyz, r14.xyzx, r19.xyzx -add r0.y, r5.w, l(-1.000000) -mad r0.y, cb2[1].x, r0.y, l(1.000000) -mul r19.xyz, r0.yyyy, r19.xyzx -mul r20.xyz, r20.xyzx, cb0[112].zzzz -// === Glass Fix: Reduce reflection probe intensity === -lt r32.x, l(0.500000), cb13[13].z -if_nz r32.x - mul r20.xyz, r20.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) -endif -mul r20.xyz, r20.xyzx, cb0[111].yyyy -mul_sat r0.y, r15.y, l(50.000000) -mul r0.y, r5.y, r0.y -mad r5.xyw, r15.xyxz, r5.xxxx, r0.yyyy -mul r5.xyw, r5.xyxw, r20.xyxz -mad r5.xyw, r19.xyxz, cb0[111].xxxx, r5.xyxw -lt r0.y, cb6[35].w, l(0.990000) -if_nz r0.y - ftoi r0.y, cb6[35].x - ieq r0.z, r0.y, l(2) - movc r19.xyz, r0.zzzz, cb6[20].xyzx, cb0[44].xyzx - add r19.xyz, r1.xyzx, -r19.xyzx - dp3 r0.z, r19.xyzx, r19.xyzx - add r0.z, -r0.z, cb6[34].w - mul_sat r0.z, r0.z, cb6[34].z - lt r1.w, l(0.000000), r0.z - if_nz r1.w - ilt r0.y, l(0), r0.y - if_nz r0.y - add r19.xyz, r1.xyzx, -cb6[20].xyzx - add r20.xyz, r1.xyzx, -cb6[21].xyzx - add r21.xyz, r1.xyzx, -cb6[22].xyzx - add r22.xyz, r1.xyzx, -cb6[23].xyzx - dp3 r19.x, r19.xyzx, r19.xyzx - dp3 r19.y, r20.xyzx, r20.xyzx - dp3 r19.z, r21.xyzx, r21.xyzx - dp3 r19.w, r22.xyzx, r22.xyzx - lt r20.x, r19.x, cb6[20].w - lt r20.y, r19.y, cb6[21].w - lt r20.z, r19.z, cb6[22].w - lt r20.w, r19.w, cb6[23].w - and r21.xyzw, r20.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) - movc r20.xyz, r20.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) - add r20.xyz, r20.xyzx, r21.yzwy - max r21.yzw, r20.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) - dp4 r0.y, r21.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) - add r0.y, -r0.y, l(4.000000) - max r0.y, r0.y, l(0.000000) - min r0.y, r0.y, l(3.000000) - add r1.w, r0.y, l(1.000000) - min r1.w, r1.w, l(3.000000) - ftou r1.w, r1.w - dp3 r3.w, r19.yzwy, icb[r1.w + 0].yzwy - div r1.w, r3.w, cb6[r1.w + 20].w - ge r3.w, r1.w, l(0.000000) - ge r1.w, l(1.000000), r1.w - and r1.w, r1.w, r3.w - if_nz r1.w - ftou r1.w, r0.y - add r18.zw, r18.xxxy, l(0.000000, 0.000000, 2.083000, 4.867000) - dp2 r3.w, r18.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) - frc r3.w, r3.w - mul r3.w, r3.w, l(52.982918) - frc r3.w, r3.w - dp4 r7.w, r19.xyzw, icb[r1.w + 0].xyzw - div r1.w, r7.w, cb6[r1.w + 20].w - sqrt r1.w, r1.w - add r1.w, r1.w, l(-0.900000) - mul r1.w, r1.w, l(12.000000) - ge r1.w, r1.w, r3.w - and r1.w, r1.w, l(0x3f800000) - add r0.y, r0.y, r1.w - endif - dp3 r1.w, r7.xyzx, cb5[0].xyzx - max r1.w, r1.w, l(0.000000) - min r1.w, r1.w, l(0.900000) - add r1.w, -r1.w, l(1.000000) - ftou r3.w, r0.y - ishl r7.w, r3.w, l(2) - mul r18.zw, r1.wwww, cb6[r3.w + 24].xxxy - max r1.w, r18.z, l(0.000000) - mad r19.xyz, -cb5[0].xyzx, r1.wwww, r1.xyzx - mad r19.xyz, r7.xyzx, r18.wwww, r19.xyzx - mul r20.xyz, r19.yyyy, cb6[r7.w + 1].xyzx - mad r19.xyw, cb6[r7.w + 0].xyxz, r19.xxxx, r20.xyxz - mad r19.xyz, cb6[r7.w + 2].xyzx, r19.zzzz, r19.xywx - add r19.xyz, r19.xyzx, cb6[r7.w + 3].xyzx - ge r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - ge r21.xyz, r19.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - or r20.xyz, r20.xyzx, r21.xyzx - or r1.w, r20.y, r20.x - or r1.w, r20.z, r1.w - and r3.w, r19.z, l(0x7fffffff) - ult r3.w, l(0x7f800000), r3.w - or r20.z, r1.w, r3.w - ftoi r0.y, r0.y - mad r18.zw, r19.xxxy, cb6[r0.y + 28].zzzw, cb6[r0.y + 28].xxxy - mad r19.xy, r18.zwzz, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r19.xy, r19.xyxx - mad r18.zw, r18.zzzw, cb6[32].zzzw, -r19.xxxy - add r21.xyzw, r18.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r22.xw, r21.xxxz, r21.xxxz - min r21.xz, r18.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) - max r23.xy, r18.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r23.zw, r22.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r18.zzzw - add r18.zw, -r18.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - mad r18.zw, -r21.xxxz, r21.xxxz, r18.zzzw - mad r21.xy, -r23.xyxx, r23.xyxx, r21.ywyy - mov r24.x, r23.z - mov r24.y, r18.z - mov r24.z, r21.x - mov r24.w, r22.x - mul r24.xyzw, r24.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r22.x, r23.w - mov r22.y, r18.w - mov r22.z, r21.y - mul r21.xyzw, r22.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r22.xyzw, r24.ywyw, r24.xzxz - add r23.xyzw, r21.yyww, r21.xxzz - div r18.zw, r24.yyyw, r22.zzzw - add r18.zw, r18.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r24.xy, r18.zwzz, cb6[32].xxxx - div r18.zw, r21.yyyw, r23.yyyw - add r18.zw, r18.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r24.zw, r18.zzzw, cb6[32].yyyy - mul r21.xyzw, r22.xyzw, r23.xyzw - mad r22.xyzw, r19.xyxy, cb6[32].xyxy, r24.xzyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r0.y, r22.xyxx, t5.xxxx, s3, r19.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r22.zwzz, t5.xxxx, s3, r19.z - mul r1.w, r1.w, r21.y - mad r0.y, r21.x, r0.y, r1.w - mad r22.xyzw, r19.xyxy, cb6[32].xyxy, r24.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r22.xyxx, t5.xxxx, s3, r19.z - mad r0.y, r21.z, r1.w, r0.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r22.zwzz, t5.xxxx, s3, r19.z - mad r0.y, r21.w, r1.w, r0.y - movc r20.x, r20.z, l(1.000000), r0.y - else - mov r20.xz, l(1.000000,0,0,0) - endif - else - mov r20.xz, l(1.000000,0,0,0) - endif - lt r0.y, r0.z, l(1.000000) - if_nz r0.y - dp3 r0.y, r7.xyzx, cb5[0].xyzx - max r0.y, r0.y, l(0.000000) - min r0.y, r0.y, l(0.900000) - add r0.y, -r0.y, l(1.000000) - mul r18.zw, r0.yyyy, cb6[584].xxxy - mad r19.xyz, -cb5[0].xyzx, r18.zzzz, r1.xyzx - mad r19.xyz, r7.xyzx, r18.wwww, r19.xyzx - mul r18.zw, r19.yyyy, cb6[581].xxxy - mad r18.zw, cb6[580].xxxy, r19.xxxx, r18.zzzw - mad r18.zw, cb6[582].xxxy, r19.zzzz, r18.zzzw - add r18.zw, r18.zzzw, cb6[583].xxxy - lt r21.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r18.zwzz - and r0.y, r21.y, r21.x - lt r21.xy, r18.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000) - and r1.w, r21.y, r21.x - and r0.y, r0.y, r1.w - if_nz r0.y - mul r0.y, r18.w, cb6[585].z - round_ni r0.y, r0.y - add r0.y, r18.z, r0.y - mul r0.y, r0.y, cb6[585].y - ftou r0.y, r0.y - umin r0.y, r0.y, l(127) - and r1.w, l(0x0000ffff), cb6[r0.y + 587].x - f16tof32 r21.x, r1.w - ge r1.w, r21.x, l(0.000000) - if_nz r1.w - mov r22.x, cb6[576].x - mov r22.y, cb6[577].x - mov r22.z, cb6[578].x - mov r22.w, cb6[r0.y + 587].y - mov r19.w, l(1.000000) - dp4 r22.x, r22.xyzw, r19.xyzw - mov r23.x, cb6[576].y - mov r23.y, cb6[577].y - mov r23.z, cb6[578].y - mov r23.w, cb6[r0.y + 587].z - dp4 r22.y, r23.xyzw, r19.xyzw - mov r23.x, cb6[576].z - mov r23.y, cb6[577].z - mov r23.z, cb6[578].z - mov r23.w, cb6[r0.y + 587].w - dp4 r1.w, r23.xyzw, r19.xyzw - lt r18.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xxxy - lt r3.w, l(0.000000), r1.w - and r7.w, r18.w, r18.z - and r3.w, r3.w, r7.w - lt r18.zw, r22.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - lt r7.w, r1.w, l(1.000000) - and r10.w, r18.w, r18.z - and r7.w, r7.w, r10.w - and r3.w, r3.w, r7.w - if_nz r3.w - ushr r0.y, cb6[r0.y + 587].x, l(16) - f16tof32 r21.y, r0.y - mad r18.zw, r22.xxxy, cb6[584].zzzw, r21.xxxy - mad r19.xy, r18.zwzz, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r19.xy, r19.xyxx - mad r18.zw, r18.zzzw, cb6[586].zzzw, -r19.xxxy - add r21.xyzw, r18.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r22.xw, r21.xxxz, r21.xxxz - min r19.zw, r18.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) - max r21.xz, r18.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r23.xy, r22.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r18.zwzz - add r18.zw, -r18.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - mad r18.zw, -r19.zzzw, r19.zzzw, r18.zzzw - mad r19.zw, -r21.xxxz, r21.xxxz, r21.yyyw - mov r21.x, r23.x - mov r21.y, r18.z - mov r21.z, r19.z - mov r21.w, r22.x - mul r21.xyzw, r21.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r22.x, r23.y - mov r22.y, r18.w - mov r22.z, r19.w - mul r22.xyzw, r22.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r23.xyzw, r21.ywyw, r21.xzxz - add r24.xyzw, r22.yyww, r22.xxzz - div r18.zw, r21.yyyw, r23.zzzw - add r18.zw, r18.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r21.xy, r18.zwzz, cb6[586].xxxx - div r18.zw, r22.yyyw, r24.yyyw - add r18.zw, r18.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r21.zw, r18.zzzw, cb6[586].yyyy - mad r22.xyzw, r19.xyxy, cb6[586].xyxy, r21.xzyz - mad r19.xyzw, r19.xyxy, cb6[586].xyxy, r21.xwyw - mul r21.xyzw, r23.xyzw, r24.xyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r0.y, r22.xyxx, t8.xxxx, s3, r1.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r22.zwzz, t8.xxxx, s3, r1.w - mul r3.w, r3.w, r21.y - mad r0.y, r21.x, r0.y, r3.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r3.w, r19.xyxx, t8.xxxx, s3, r1.w - mad r0.y, r21.z, r3.w, r0.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t8.xxxx, s3, r1.w - mad r20.y, r21.w, r1.w, r0.y - else - mov r20.y, l(1.000000) - endif - else - mov r20.y, l(1.000000) - endif - else - mov r20.y, l(1.000000) - endif - movc r20.x, r20.z, r20.y, r20.x - else - mov r20.y, l(1.000000) - endif - add r0.y, -r20.y, r20.x - mad r0.y, r0.z, r0.y, r20.y - lt r0.z, l(0.001000), r0.y - if_nz r0.z - add r19.xyz, r1.xyzx, -cb0[173].xyzx - mad r18.zw, cb0[176].xxxz, r19.yyyy, r19.xxxz - mul r19.yw, r18.zzzw, cb0[174].zzzz - mul r20.xy, cb0[175].xyxx, cb0[183].wwww - mad r18.zw, r18.zzzw, cb0[174].zzzz, r20.xxxy - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r18.zwzz, t7.yzxw, s1, l(0.000000) - mad r18.zw, r19.yyyw, cb0[175].wwww, r20.xxxy - sample_l_indexable(texture2d)(float,float,float,float) r1.w, r18.zwzz, t7.yzwx, s1, l(0.000000) - dp2 r3.w, r19.xzxx, r19.xzxx - sqrt r3.w, r3.w - add r7.w, -cb0[174].x, cb0[174].y - add r3.w, r3.w, -cb0[174].x - div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w - mul_sat r3.w, r3.w, r7.w - mad r7.w, r3.w, l(-2.000000), l(3.000000) - mul r3.w, r3.w, r3.w - mul r3.w, r3.w, r7.w - add r1.w, -r0.z, r1.w - mad r0.z, r3.w, r1.w, r0.z - add r0.z, r0.z, l(-1.000000) - mad r0.z, cb0[175].z, r0.z, l(1.000000) - mul r0.y, r0.z, r0.y - endif - add r0.z, -r0.y, cb6[35].z - mad r0.y, cb6[35].w, r0.z, r0.y -else - mov r0.y, cb6[35].z -endif -min r0.y, r0.y, l(1.000000) -add r0.y, r0.y, l(-1.000000) -mad r19.x, cb6[34].x, r0.y, l(1.000000) -lt r0.y, l(0.001000), r19.x -if_nz r0.y - dp3 r0.y, -cb5[0].xyzx, r17.xyzx - mad r20.xyz, cb5[0].xyzx, r0.yyyy, r17.xyzx - lt r0.y, r0.y, cb5[4].z - dp3 r0.z, r20.xyzx, r20.xyzx - max r0.z, r0.z, l(0.0000610351562) - rsq r0.z, r0.z - mul r20.xyz, r0.zzzz, r20.xyzx - mul r20.xyz, r20.xyzx, cb5[4].yyyy - mad r20.xyz, -cb5[0].xyzx, cb5[4].zzzz, r20.xyzx - dp3 r0.z, r20.xyzx, r20.xyzx - rsq r0.z, r0.z - mul r20.xyz, r0.zzzz, r20.xyzx - movc r20.xyz, r0.yyyy, r20.xyzx, r17.xyzx - mad r21.xyz, r2.xyzx, r2.wwww, r20.xyzx - dp3 r0.y, r21.xyzx, r21.xyzx - max r0.y, r0.y, l(0.0000610351562) - rsq r0.y, r0.y - mul r21.xyz, r0.yyyy, r21.xyzx - dp3_sat r9.y, r20.xyzx, r7.xyzx - dp3_sat r0.y, r7.xyzx, r21.xyzx - min r9.z, r0.x, l(1.000000) - mul r0.z, r9.w, r9.w - mul r0.z, r0.z, r0.z - mad r1.w, r0.y, r0.z, -r0.y - mad r0.y, r1.w, r0.y, l(1.000000) - dp3_sat r1.w, r4.xyzx, r21.xyzx - add r1.w, -r1.w, l(1.000000) - mul r3.w, r1.w, r1.w - mul r3.w, r3.w, r3.w - mul r7.w, r1.w, r3.w - add r10.w, -r9.w, l(1.000000) - mad r11.w, -r10.w, l(0.383026), l(-0.0761947036) - mad r11.w, r10.w, r11.w, l(1.049970) - mad r10.w, r10.w, r11.w, l(0.409255) - min r10.w, r10.w, l(0.999000) - add r11.w, -r10.w, l(1.000000) - add r20.xyz, -r15.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r20.xyz, r20.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r15.xyzx - mad r1.w, -r3.w, r1.w, l(1.000000) - mad r21.xyz, r15.xyzx, r1.wwww, r7.wwww - mul r0.y, r0.y, r0.y - div r0.y, r0.z, r0.y - mad r18.zw, -r9.zzzy, r0.zzzz, r9.zzzy - mad r18.zw, r18.zzzw, r9.zzzy, r0.zzzz - sqrt r18.zw, r18.zzzw - mul r18.zw, r9.yyyz, r18.zzzw - add r0.z, r18.w, r18.z - add r0.z, r0.z, l(0.000100) - div r0.z, l(0.500000), r0.z - mul r0.y, r0.z, r0.y - mul r21.xyz, r0.yyyy, r21.xyzx - min r21.xyz, r21.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r22.xyzw, r9.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.y, r22.xyxx, t10.yxzw, s0, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r22.zwzz, t10.yzxw, s0, l(0.000000) - mul r0.y, r0.z, r0.y - mul r0.y, r10.w, r0.y - div r0.y, r0.y, r11.w - mul r22.xyz, r20.xyzx, r20.xyzx - mul r22.xyz, r0.yyyy, r22.xyzx - mad r20.xyz, -r20.xyzx, r11.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r20.xyz, r22.xyzx, r20.xyzx - add r20.xyz, r20.xyzx, r21.xyzx - mul r20.xyz, r20.xyzx, cb5[4].xxxx - // === Glass Fix: Reduce sun specular intensity === - lt r32.x, l(0.500000), cb13[13].z - if_nz r32.x - mul r20.xyz, r20.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - endif - max r20.xyz, r20.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r20.xyz, r20.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r21.xyz, r9.yyyy, r14.xyzx - mad r20.xyz, r20.xyzx, r9.yyyy, r21.xyzx - mul r20.xyz, r20.xyzx, cb5[1].xyzx - mov r19.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r19.yzw, r19.xyxx, t9.wxyz, s0, cb0[108].x - add r0.y, -r19.x, l(1.000000) - mad r19.xyz, r20.xyzx, r19.yzwy, -r20.xyzx - mad r19.xyz, r0.yyyy, r19.xyzx, r20.xyzx -else - mov r19.xyz, l(0,0,0,0) -endif -mul r0.yz, r18.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) -round_ni r0.yz, r0.yyzy -mad r0.y, r0.z, cb4[1].y, r0.y -mul r0.y, r0.y, l(8.000000) -ftoi r0.y, r0.y -mad r0.z, -cb0[85].y, cb4[2].w, r16.z -round_ni r0.z, r0.z -add r1.w, l(-1.000000), cb4[1].w -max r3.w, r0.z, l(0.000000) -min r1.w, r1.w, r3.w -mul r3.w, r1.w, l(8.000000) -ftoi r3.w, r3.w -ge r0.z, r1.w, r0.z -iadd r1.w, r3.w, cb0[110].y -mul r3.w, r9.w, r9.w -min r9.x, r0.x, l(1.000000) -add r0.x, -r9.w, l(1.000000) -mad r7.w, -r0.x, l(0.383026), l(-0.0761947036) -mad r7.w, r0.x, r7.w, l(1.049970) -mad r0.x, r0.x, r7.w, l(0.409255) -min r0.x, r0.x, l(0.999000) -add r7.w, -r0.x, l(1.000000) -add r20.xyz, -r15.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r20.xyz, r20.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r15.xyzx -mad r9.yz, r9.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r9.y, r9.yzyy, t10.yxzw, s0, l(0.000000) -mad r21.xyz, -r20.xyzx, r7.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r20.xyz, r20.xyzx, r20.xyzx -mov r22.w, l(1.000000) -mov r23.y, l(1.000000) -mov r24.z, r9.w -mov r25.xyz, l(0,0,0,0) -mov r9.z, l(1.000000) -mov r10.w, l(0) -loop - ilt r11.w, l(7), r10.w - breakc_nz r11.w - iadd r11.w, r0.y, r10.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx - iadd r12.w, r1.w, r10.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r12.w, r12.w, l(0), t0.xxxx - and r11.w, r11.w, r12.w - and r11.w, r0.z, r11.w - ishl r12.w, r10.w, l(5) - mov r26.xyz, l(0,0,0,0) - mov r13.w, r9.z - mov r14.w, r11.w - loop - breakc_z r14.w - firstbit_lo r15.w, r14.w - ishl r17.w, l(1), r15.w - xor r17.w, r14.w, r17.w - iadd r15.w, r12.w, r15.w - bfi r27.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r15.wwww, l(1, 3, 5, 6) - bfi r18.z, l(29), l(3), r15.w, l(7) - ftou r18.w, cb5[r27.z + 6].w - ieq r18.w, r18.w, l(1) - if_nz r18.w - add r22.xyz, r1.xyzx, -cb5[r27.x + 6].xyzx - and r28.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r27.z + 6].xzyx - and r29.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r27.w + 6].yxzy - ushr r30.xyz, cb5[r27.z + 6].xzyx, l(16, 16, 16, 0) - ushr r31.xyz, cb5[r27.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r28.xyz, r28.xyzx - f16tof32 r29.xyz, r29.xyzx - f16tof32 r30.xyz, r30.xyzx - f16tof32 r31.xyw, r31.yxyz - mov r32.xz, r28.xxzx - mov r32.yw, r30.xxxz - dp4 r18.w, r22.xyzw, r32.xyzw - mov r30.x, r28.y - mov r30.z, r29.y - mov r30.w, r31.x - dp4 r19.w, r22.xyzw, r30.xyzw - mov r31.xz, r29.xxzx - dp4 r20.w, r22.xyzw, r31.xyzw - max r18.w, |r18.w|, |r19.w| - max r18.w, |r20.w|, r18.w - mad r19.w, cb5[r18.z + 6].x, l(0.500000), l(0.500000) - add r18.w, r18.w, -r19.w - mad r19.w, -cb5[r18.z + 6].x, l(0.500000), l(0.500000) - div_sat r18.w, r18.w, r19.w - add r18.w, -r18.w, l(1.000000) - mul r18.w, r18.w, r18.w - else - mov r18.w, l(1.000000) - endif - lt r19.w, l(0.500000), cb5[r27.y + 6].z - lt r20.w, r18.w, l(0.001000) - or r20.w, r19.w, r20.w - if_nz r20.w - mov r14.w, r17.w - continue - endif - ishl r20.w, r15.w, l(3) - bfi r15.w, l(29), l(3), r15.w, l(2) - lt r21.w, cb5[r20.w + 6].w, l(1.500000) - if_nz r21.w - mad r21.w, cb5[r15.w + 6].y, l(0.500000), l(0.500000) - add r22.x, r21.w, -|cb5[r15.w + 6].x| - add r22.y, -r22.x, cb5[r15.w + 6].y - add r21.w, -|r22.x|, l(1.000000) - add r21.w, -|r22.y|, r21.w - max r21.w, r21.w, l(0.000488281250) - ge r23.z, cb5[r15.w + 6].x, l(0.000000) - movc r22.z, r23.z, r21.w, -r21.w - dp3 r21.w, r22.xyzx, r22.xyzx - rsq r21.w, r21.w - mul r22.xyz, r21.wwww, r22.xyzx - add r28.xyz, -r1.xyzx, cb5[r27.x + 6].xyzx - dp3 r21.w, r28.xyzx, r28.xyzx - rsq r23.z, r21.w - mul r29.xyz, r23.zzzz, r28.xyzx - ftoi r23.w, cb5[r18.z + 6].w - mul r30.xyz, r22.xyzx, cb5[r15.w + 6].zzzz - mad r31.xyz, -r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r28.xyzx - mad r32.xyz, r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r28.xyzx - ftou r24.w, cb5[r20.w + 6].w - and r24.w, r24.w, l(1) - ieq r25.w, r24.w, l(0) - not r25.w, r25.w - lt r26.w, l(0.000000), cb5[r15.w + 6].z - and r25.w, r25.w, r26.w - dp3 r26.w, r31.xyzx, r31.xyzx - sqrt r26.w, r26.w - dp3 r27.z, r32.xyzx, r32.xyzx - sqrt r27.z, r27.z - dp3 r28.w, r7.xyzx, r31.xyzx - div r28.w, r28.w, r26.w - dp3 r29.w, r7.xyzx, r32.xyzx - div r29.w, r29.w, r27.z - add r28.w, r28.w, r29.w - mul_sat r33.x, r28.w, l(0.500000) - dp3 r28.w, r31.xyzx, r32.xyzx - mad r26.w, r26.w, r27.z, r28.w - mad r26.w, r26.w, l(0.500000), l(1.000000) - div r33.y, l(1.000000, 1.000000, 1.000000, 1.000000), r26.w - dp3_sat r23.x, r7.xyzx, r29.xyzx - movc r24.xy, r25.wwww, r33.xyxx, r23.xyxx - lt r23.x, cb5[r27.w + 6].w, l(0.000000) - if_nz r23.x - mul r23.x, cb5[r27.x + 6].w, cb5[r27.x + 6].w - mul r23.x, r21.w, r23.x - mad r23.x, -r23.x, r23.x, l(1.000000) - max r23.x, r23.x, l(0.000000) - add r21.w, r21.w, l(1.000000) - div r21.w, l(1.000000, 1.000000, 1.000000, 1.000000), r21.w - and r26.w, r25.w, l(0x3f800000) - add r27.z, -r21.w, r24.y - mad r21.w, r26.w, r27.z, r21.w - mul r23.x, r23.x, r23.x - mul r21.w, r21.w, r23.x - else - mul r32.xyz, r28.xyzx, cb5[r27.x + 6].wwww - dp3 r23.x, r32.xyzx, r32.xyzx - min r23.x, r23.x, l(1.000000) - add r23.x, -r23.x, l(1.000000) - log r23.x, r23.x - mul r23.x, r23.x, cb5[r27.w + 6].w - exp r23.x, r23.x - mul r21.w, r23.x, r24.y - endif - dp3 r22.x, r29.xyzx, -r22.xyzx - add r22.x, r22.x, -cb5[r15.w + 6].z - mul_sat r22.x, r22.x, cb5[r15.w + 6].w - mul r22.x, r22.x, r22.x - movc r22.x, r24.w, l(1.000000), r22.x - mul r21.w, r21.w, r22.x - not r22.x, r25.w - ige r22.y, r23.w, l(0) - and r22.x, r22.y, r22.x - if_nz r22.x - if_z r24.w - ishl r22.x, r23.w, l(2) - mul r32.xyz, r1.yyyy, cb7[r22.x + 33].xywx - mad r32.xyz, cb7[r22.x + 32].xywx, r1.xxxx, r32.xyzx - mad r32.xyz, cb7[r22.x + 34].xywx, r1.zzzz, r32.xyzx - add r22.xyz, r32.xyzx, cb7[r22.x + 35].xywx - div_sat r22.xy, r22.xyxx, r22.zzzz - mad r22.xy, r22.xyxx, cb7[r23.w + 0].zwzz, cb7[r23.w + 0].xyxx - else - ishl r22.z, r23.w, l(2) - dp3 r32.x, -r28.xyzx, cb7[r22.z + 32].xyzx - dp3 r32.y, -r28.xyzx, cb7[r22.z + 33].xyzx - dp3 r32.z, -r28.xyzx, cb7[r22.z + 34].xyzx - lt r22.z, |r32.x|, |r32.y| - and r22.z, r22.z, l(1) - dp2 r23.x, |r32.xyxx|, icb[r22.z + 0].xyxx - lt r23.x, r23.x, |r32.z| - movc r22.z, r23.x, l(2), r22.z - dp3 r23.x, r32.xyzx, icb[r22.z + 0].xyzx - lt r23.x, r23.x, l(0.000000) - bfi r22.z, l(31), l(1), r22.z, r23.x - ushr r23.x, r22.z, l(1) - dp3 r23.x, r32.xyzx, icb[r23.x + 0].xyzx - div r24.y, l(0.000244140625), cb7[r23.w + 0].w - add r24.y, -r24.y, l(0.500000) - utof r26.w, r22.z - ult r27.z, r22.z, l(2) - and r27.z, r27.z, l(2) - dp2 r27.z, r32.xzxx, icb[r27.z + 0].xzxx - mul r27.z, r27.z, icb[r22.z + 4].z - div r27.z, r27.z, |r23.x| - mad r26.w, r27.z, r24.y, r26.w - add r26.w, r26.w, l(0.500000) - mul_sat r28.x, r26.w, l(0.166666672) - iadd r26.w, l(-1), icb[r22.z + 4].y - dp2 r26.w, r32.yzyy, icb[r26.w + 0].xyxx - mul r22.z, r26.w, icb[r22.z + 4].w - div r22.z, r22.z, |r23.x| - mad_sat r28.y, -r22.z, r24.y, l(0.500000) - mad r22.xy, r28.xyxx, cb7[r23.w + 0].zwzz, cb7[r23.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r22.x, r22.xyxx, t18.xyzw, s0, l(0.000000) - mul r21.w, r21.w, r22.x - endif - lt r22.x, l(0.000000), r21.w - if_nz r22.x - if_z r24.w - ftoi r22.y, cb5[r27.y + 6].x - else - add r28.xyz, r1.xyzx, -cb5[r27.x + 6].xyzx - lt r32.xyz, |r28.yzzy|, |r28.xxyx| - and r22.z, r32.y, r32.x - lt r28.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r28.xyzx - ushr r23.x, cb5[r15.w + 6].w, l(24) - ubfe r24.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb5[r15.w + 6].wwww - movc r23.x, r28.x, r23.x, r24.y - and r23.w, l(255), cb5[r15.w + 6].w - movc r23.w, r28.y, r24.w, r23.w - ubfe r24.y, l(8), l(8), cb5[r27.y + 6].x - and r24.w, l(255), cb5[r27.y + 6].x - movc r24.y, r28.z, r24.y, r24.w - movc r23.w, r32.z, r23.w, r24.y - movc r22.z, r22.z, r23.x, r23.w - ilt r23.x, r22.z, l(80) - movc r22.y, r23.x, r22.z, l(-1) - endif - ishl r22.z, r22.y, l(2) - mad r28.xyz, r29.xyzx, cb6[r22.y + 288].xxxx, r1.xyzx - mul r23.x, l(5.000000), cb6[r22.y + 288].y - mad r28.xyz, r7.xyzx, r23.xxxx, r28.xyzx - mul r32.xyzw, r28.yyyy, cb6[r22.z + 65].xyzw - mad r32.xyzw, cb6[r22.z + 64].xyzw, r28.xxxx, r32.xyzw - mad r28.xyzw, cb6[r22.z + 66].xyzw, r28.zzzz, r32.xyzw - add r28.xyzw, r28.xyzw, cb6[r22.z + 67].xyzw - div r28.xyz, r28.xyzx, r28.wwww - ge r32.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r28.xyzx - ge r33.xyz, r28.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r23.xw, -cb6[r22.y + 344].xxxy, cb6[r22.y + 344].zzzw - mad r23.xw, r28.xxxy, r23.xxxw, cb6[r22.y + 344].xxxy - mad r24.yw, r23.xxxw, cb6[400].zzzw, l(0.000000, 0.500000, 0.000000, 0.500000) - round_ni r24.yw, r24.yyyw - mad r23.xw, r23.xxxw, cb6[400].zzzw, -r24.yyyw - add r34.xyzw, r23.xxww, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r35.xyzw, r34.xxzz, r34.xxzz - add r28.xy, -r23.xwxx, l(1.000000, 1.000000, 0.000000, 0.000000) - min r34.xz, r23.xxwx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r36.xy, r23.xwxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r37.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r36.xy, -r36.xyxx, r36.xyxx, r34.ywyy - add r36.xy, r36.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r36.xy, r36.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r35.xz, r35.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r23.xw, r35.yyyw, l(0.500000, 0.000000, 0.000000, 0.500000), -r23.xxxw - mul r38.xy, r23.xwxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r23.xw, -r34.xxxz, r34.xxxz, r28.xxxy - add r23.xw, r23.xxxw, l(1.000000, 0.000000, 0.000000, 1.000000) - mul r39.xy, r23.xwxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r23.xw, r34.yyyw, l(0.160000, 0.000000, 0.000000, 0.160000) - mov r38.z, r39.x - mov r38.w, r23.x - mov r37.z, r36.x - mov r37.w, r35.x - add r34.xyzw, r37.zwxz, r38.zwxz - mov r39.z, r38.y - mov r39.w, r23.w - mov r36.z, r37.y - mov r36.w, r35.z - add r28.xyw, r36.zyzw, r39.zyzw - div r35.xyz, r37.xzwx, r34.zwyz - add r35.xyz, r35.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r35.xyz, r35.xyzx, cb6[400].xxxx - div r36.xyz, r36.zywz, r28.xywx - add r36.xyz, r36.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r36.xyw, r36.xyxz, cb6[400].yyyy - mul r37.xyzw, r28.xxxy, r34.zwyz - mov r35.w, r36.x - mad r38.xyzw, r24.ywyw, cb6[400].xyxy, r35.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.z, r38.xyxx, t6.xxxx, s3, r28.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r38.zwzz, t6.xxxx, s3, r28.z - mul r23.x, r23.x, r37.y - mad r22.z, r37.x, r22.z, r23.x - mad r23.xw, r24.yyyw, cb6[400].xxxy, r35.zzzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r23.xwxx, t6.xxxx, s3, r28.z - mad r22.z, r37.z, r23.x, r22.z - mov r36.z, r35.x - mad r38.xyzw, r24.ywyw, cb6[400].xyxy, r36.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r38.xyxx, t6.xxxx, s3, r28.z - mad r22.z, r37.w, r23.x, r22.z - mul r37.xyzw, r28.yyww, r34.xyzw - mov r36.xz, r35.yyzy - mad r35.xyzw, r24.ywyw, cb6[400].xyxy, r36.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r35.xyxx, t6.xxxx, s3, r28.z - mad r22.z, r37.x, r23.x, r22.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r35.zwzz, t6.xxxx, s3, r28.z - mad r22.z, r37.y, r23.x, r22.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.x, r38.zwzz, t6.xxxx, s3, r28.z - mad r22.z, r37.z, r23.x, r22.z - ige r23.x, r22.y, l(0) - or r32.xyz, r32.xyzx, r33.xyzx - or r23.w, r32.y, r32.x - or r23.w, r32.z, r23.w - and r26.w, r28.z, l(0x7fffffff) - ult r26.w, l(0x7f800000), r26.w - or r23.w, r23.w, r26.w - mad r32.xyzw, r24.ywyw, cb6[400].xyxy, r36.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r32.xyxx, t6.xxxx, s3, r28.z - mad r22.z, r37.w, r24.y, r22.z - mul r24.y, r28.w, r34.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.w, r32.zwzz, t6.xxxx, s3, r28.z - mad r22.z, r24.y, r24.w, r22.z - add r22.z, r22.z, l(-1.000000) - mad r22.y, cb6[r22.y + 288].w, r22.z, l(1.000000) - movc r22.y, r23.w, l(1.000000), r22.y - movc r22.y, r23.x, r22.y, l(1.000000) - else - mov r22.y, l(1.000000) - endif - if_nz r25.w - dp3 r22.z, r17.xyzx, r30.xyzx - mul_sat r23.x, r23.z, cb5[r15.w + 6].z - mad r23.x, r23.x, l(0.500000), r3.w - min r23.x, r23.x, l(1.000000) - div r23.x, r3.w, r23.x - mad r28.xyz, r17.xyzx, r22.zzzz, -r30.xyzx - dp3 r23.w, r31.xyzx, r28.xyzx - mul r22.z, r22.z, r22.z - mad r22.z, cb5[r15.w + 6].z, cb5[r15.w + 6].z, -r22.z - div_sat r22.z, r23.w, r22.z - mad r28.xyz, r30.xyzx, r22.zzzz, r31.xyzx - dp3 r22.z, r28.xyzx, r28.xyzx - rsq r22.z, r22.z - mul r29.xyz, r22.zzzz, r28.xyzx - else - mov r23.x, l(1.000000) - endif - if_nz r22.x - mul_sat r22.x, r23.z, cb5[r18.z + 6].y - mad r28.xyz, r2.xyzx, r2.wwww, r29.xyzx - dp3 r22.z, r28.xyzx, r28.xyzx - max r22.z, r22.z, l(0.0000610351562) - rsq r22.z, r22.z - mul r28.xyz, r22.zzzz, r28.xyzx - dp3_sat r22.z, r7.xyzx, r28.xyzx - dp3_sat r23.z, r4.xyzx, r28.xyzx - lt r23.w, l(0.000000), r22.x - mul r22.x, r22.x, r22.x - mad r24.y, r23.z, l(3.600000), l(0.400000) - div r22.x, r22.x, r24.y - mad r22.x, r9.w, r9.w, r22.x - min r22.x, r22.x, l(1.000000) - movc r22.x, r23.w, r22.x, r3.w - mul r22.x, r22.x, r22.x - mad r23.w, r22.z, r22.x, -r22.z - mad r22.z, r23.w, r22.z, l(1.000000) - add r23.z, -r23.z, l(1.000000) - mul r23.w, r23.z, r23.z - mul r23.w, r23.w, r23.w - mul r24.y, r23.z, r23.w - mad r23.z, -r23.w, r23.z, l(1.000000) - mad r28.xyz, r15.xyzx, r23.zzzz, r24.yyyy - mul r22.z, r22.z, r22.z - div r22.z, r22.x, r22.z - mul r22.z, r23.x, r22.z - mad r23.x, -r9.x, r22.x, r9.x - mad r23.x, r23.x, r9.x, r22.x - sqrt r23.x, r23.x - mad r23.z, -r24.x, r22.x, r24.x - mad r22.x, r23.z, r24.x, r22.x - sqrt r22.x, r22.x - mul r22.x, r9.x, r22.x - mad r22.x, r24.x, r23.x, r22.x - add r22.x, r22.x, l(0.000100) - div r22.x, l(0.500000), r22.x - mul r22.x, r22.x, r22.z - mul r23.xzw, r22.xxxx, r28.xxyz - min r23.xzw, r23.xxzw, l(2048.000000, 0.000000, 2048.000000, 2048.000000) - mad r22.xz, r24.xxzx, l(0.968750, 0.000000, 0.968750, 0.000000), l(0.015625, 0.000000, 0.015625, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r22.x, r22.xzxx, t10.xyzw, s0, l(0.000000) - mul r22.x, r9.y, r22.x - mul r22.x, r0.x, r22.x - div r22.x, r22.x, r7.w - mul r28.xyz, r20.xyzx, r22.xxxx - div r28.xyz, r28.xyzx, r21.xyzx - add r23.xzw, r23.xxzw, r28.xxyz - mul r23.xzw, r23.xxzw, cb5[r18.z + 6].zzzz - max r23.xzw, r23.xxzw, l(0.000000, 0.000000, 0.000000, 0.000000) - min r23.xzw, r23.xxzw, l(1000.000000, 0.000000, 1000.000000, 1000.000000) - mul r28.xyz, r14.xyzx, r24.xxxx - mad r23.xzw, r23.xxzw, r24.xxxx, r28.xxyz - mul r24.xyw, r21.wwww, cb5[r20.w + 6].xyxz - mul r22.xyz, r22.yyyy, r24.xywx - mul r22.xyz, r18.wwww, r22.xyzx - mul r22.xyz, r22.xyzx, r23.xzwx - else - mov r22.xyz, l(0,0,0,0) - endif - else - if_z r19.w - mad r18.w, cb5[r15.w + 6].y, l(0.500000), l(0.500000) - add r28.x, r18.w, -|cb5[r15.w + 6].x| - add r28.y, -r28.x, cb5[r15.w + 6].y - add r18.w, -|r28.x|, l(1.000000) - add r18.w, -|r28.y|, r18.w - max r18.w, r18.w, l(0.000488281250) - ge r19.w, cb5[r15.w + 6].x, l(0.000000) - movc r28.z, r19.w, r18.w, -r18.w - dp3 r18.w, r28.xyzx, r28.xyzx - rsq r18.w, r18.w - mul r23.xzw, r18.wwww, r28.xxyz - add r24.xyw, -r1.xyxz, cb5[r27.x + 6].xyxz - dp3 r18.w, r24.xywx, r24.xywx - rsq r19.w, r18.w - mul r28.xyz, r19.wwww, r24.xywx - ftoi r18.z, cb5[r18.z + 6].w - mul r29.xyz, r23.xzwx, cb5[r15.w + 6].zzzz - mad r30.xyz, -r29.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xywx - mad r29.xyz, r29.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xywx - ftou r19.w, cb5[r20.w + 6].w - and r19.w, r19.w, l(1) - ieq r20.w, r19.w, l(0) - not r20.w, r20.w - lt r21.w, l(0.000000), cb5[r15.w + 6].z - and r20.w, r20.w, r21.w - dp3 r21.w, r30.xyzx, r30.xyzx - sqrt r21.w, r21.w - dp3 r25.w, r29.xyzx, r29.xyzx - sqrt r25.w, r25.w - dp3 r26.w, r30.xyzx, r29.xyzx - mad r21.w, r21.w, r25.w, r26.w - mad r21.w, r21.w, l(0.500000), l(1.000000) - div r21.w, l(1.000000, 1.000000, 1.000000, 1.000000), r21.w - movc r21.w, r20.w, r21.w, l(1.000000) - lt r25.w, cb5[r27.w + 6].w, l(0.000000) - if_nz r25.w - mul r25.w, cb5[r27.x + 6].w, cb5[r27.x + 6].w - mul r25.w, r18.w, r25.w - mad r25.w, -r25.w, r25.w, l(1.000000) - max r25.w, r25.w, l(0.000000) - add r18.w, r18.w, l(1.000000) - div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), r18.w - and r26.w, r20.w, l(0x3f800000) - add r27.z, -r18.w, r21.w - mad r18.w, r26.w, r27.z, r18.w - mul r25.w, r25.w, r25.w - mul r18.w, r18.w, r25.w - else - mul r29.xyz, r24.xywx, cb5[r27.x + 6].wwww - dp3 r25.w, r29.xyzx, r29.xyzx - min r25.w, r25.w, l(1.000000) - add r25.w, -r25.w, l(1.000000) - log r25.w, r25.w - mul r25.w, r25.w, cb5[r27.w + 6].w - exp r25.w, r25.w - mul r18.w, r21.w, r25.w - endif - dp3 r21.w, r28.xyzx, -r23.xzwx - add r21.w, r21.w, -cb5[r15.w + 6].z - mul_sat r21.w, r21.w, cb5[r15.w + 6].w - mul r21.w, r21.w, r21.w - movc r21.w, r19.w, l(1.000000), r21.w - mul r18.w, r18.w, r21.w - not r20.w, r20.w - ige r21.w, r18.z, l(0) - and r20.w, r20.w, r21.w - if_nz r20.w - if_z r19.w - ishl r20.w, r18.z, l(2) - mul r23.xzw, r1.yyyy, cb7[r20.w + 33].xxyw - mad r23.xzw, cb7[r20.w + 32].xxyw, r1.xxxx, r23.xxzw - mad r23.xzw, cb7[r20.w + 34].xxyw, r1.zzzz, r23.xxzw - add r23.xzw, r23.xxzw, cb7[r20.w + 35].xxyw - div_sat r23.xz, r23.xxzx, r23.wwww - mad r23.xz, r23.xxzx, cb7[r18.z + 0].zzwz, cb7[r18.z + 0].xxyx - else - ishl r20.w, r18.z, l(2) - dp3 r29.x, -r24.xywx, cb7[r20.w + 32].xyzx - dp3 r29.y, -r24.xywx, cb7[r20.w + 33].xyzx - dp3 r29.z, -r24.xywx, cb7[r20.w + 34].xyzx - lt r20.w, |r29.x|, |r29.y| - and r20.w, r20.w, l(1) - dp2 r21.w, |r29.xyxx|, icb[r20.w + 0].xyxx - lt r21.w, r21.w, |r29.z| - movc r20.w, r21.w, l(2), r20.w - dp3 r21.w, r29.xyzx, icb[r20.w + 0].xyzx - lt r21.w, r21.w, l(0.000000) - bfi r20.w, l(31), l(1), r20.w, r21.w - ushr r21.w, r20.w, l(1) - dp3 r21.w, r29.xyzx, icb[r21.w + 0].xyzx - div r23.w, l(0.000244140625), cb7[r18.z + 0].w - add r23.w, -r23.w, l(0.500000) - utof r24.x, r20.w - ult r24.y, r20.w, l(2) - and r24.y, r24.y, l(2) - dp2 r24.y, r29.xzxx, icb[r24.y + 0].xzxx - mul r24.y, r24.y, icb[r20.w + 4].z - div r24.y, r24.y, |r21.w| - mad r24.x, r24.y, r23.w, r24.x - add r24.x, r24.x, l(0.500000) - mul_sat r24.x, r24.x, l(0.166666672) - iadd r24.w, l(-1), icb[r20.w + 4].y - dp2 r24.w, r29.yzyy, icb[r24.w + 0].xyxx - mul r20.w, r24.w, icb[r20.w + 4].w - div r20.w, r20.w, |r21.w| - mad_sat r24.y, -r20.w, r23.w, l(0.500000) - mad r23.xz, r24.xxyx, cb7[r18.z + 0].zzwz, cb7[r18.z + 0].xxyx - endif - sample_l_indexable(texture2d)(float,float,float,float) r18.z, r23.xzxx, t18.yzxw, s0, l(0.000000) - mul r18.w, r18.z, r18.w - endif - lt r18.z, l(0.000000), r18.w - if_nz r18.z - if_z r19.w - ftoi r18.z, cb5[r27.y + 6].x - else - add r23.xzw, r1.xxyz, -cb5[r27.x + 6].xxyz - lt r24.xyw, |r23.zwzw|, |r23.xxxz| - and r18.w, r24.y, r24.x - lt r23.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xxzw - ushr r19.w, cb5[r15.w + 6].w, l(24) - ubfe r24.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r15.w + 6].wwww - movc r19.w, r23.x, r19.w, r24.x - and r15.w, l(255), cb5[r15.w + 6].w - movc r15.w, r23.z, r24.y, r15.w - ubfe r20.w, l(8), l(8), cb5[r27.y + 6].x - and r21.w, l(255), cb5[r27.y + 6].x - movc r20.w, r23.w, r20.w, r21.w - movc r15.w, r24.w, r15.w, r20.w - movc r15.w, r18.w, r19.w, r15.w - ilt r18.w, r15.w, l(80) - movc r18.z, r18.w, r15.w, l(-1) - endif - ishl r15.w, r18.z, l(2) - mad r23.xzw, r28.xxyz, cb6[r18.z + 288].xxxx, r1.xxyz - mul r18.w, l(5.000000), cb6[r18.z + 288].y - mad r23.xzw, r7.xxyz, r18.wwww, r23.xxzw - mul r27.xyzw, r23.zzzz, cb6[r15.w + 65].xyzw - mad r27.xyzw, cb6[r15.w + 64].xyzw, r23.xxxx, r27.xyzw - mad r27.xyzw, cb6[r15.w + 66].xyzw, r23.wwww, r27.xyzw - add r27.xyzw, r27.xyzw, cb6[r15.w + 67].xyzw - div r23.xzw, r27.xxyz, r27.wwww - ge r24.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xzxw - ge r27.xyz, r23.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r28.xy, -cb6[r18.z + 344].xyxx, cb6[r18.z + 344].zwzz - mad r23.xz, r23.xxzx, r28.xxyx, cb6[r18.z + 344].xxyx - mad r28.xy, r23.xzxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r28.xy, r28.xyxx - mad r23.xz, r23.xxzx, cb6[400].zzwz, -r28.xxyx - add r29.xyzw, r23.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r30.xyzw, r29.xxzz, r29.xxzz - add r28.zw, -r23.xxxz, l(0.000000, 0.000000, 1.000000, 1.000000) - min r29.xz, r23.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r31.xy, r23.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r32.xy, r28.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r31.xy, -r31.xyxx, r31.xyxx, r29.ywyy - add r31.xy, r31.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r31.xy, r31.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r30.xz, r30.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r23.xz, r30.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r23.xxzx - mul r33.xy, r23.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r23.xz, -r29.xxzx, r29.xxzx, r28.zzwz - add r23.xz, r23.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) - mul r34.xy, r23.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r23.xz, r29.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) - mov r33.z, r34.x - mov r33.w, r23.x - mov r32.z, r31.x - mov r32.w, r30.x - add r29.xyzw, r32.zwxz, r33.zwxz - mov r34.z, r33.y - mov r34.w, r23.z - mov r31.z, r32.y - mov r31.w, r30.z - add r30.xyz, r31.zywz, r34.zywz - div r32.xyz, r32.xzwx, r29.zwyz - add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r32.xyz, r32.xyzx, cb6[400].xxxx - div r31.xyz, r31.zywz, r30.xyzx - add r31.xyz, r31.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r31.xyw, r31.xyxz, cb6[400].yyyy - mul r33.xyzw, r29.zwyz, r30.xxxy - mov r32.w, r31.x - mad r34.xyzw, r28.xyxy, cb6[400].xyxy, r32.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r15.w, r34.xyxx, t6.xxxx, s3, r23.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r34.zwzz, t6.xxxx, s3, r23.w - mul r18.w, r18.w, r33.y - mad r15.w, r33.x, r15.w, r18.w - mad r23.xz, r28.xxyx, cb6[400].xxyx, r32.zzwz - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r23.xzxx, t6.xxxx, s3, r23.w - mad r15.w, r33.z, r18.w, r15.w - mov r31.z, r32.x - mad r34.xyzw, r28.xyxy, cb6[400].xyxy, r31.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r34.xyxx, t6.xxxx, s3, r23.w - mad r15.w, r33.w, r18.w, r15.w - mul r33.xyzw, r29.xyzw, r30.yyzz - mov r31.xz, r32.yyzy - mad r32.xyzw, r28.xyxy, cb6[400].xyxy, r31.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r32.xyxx, t6.xxxx, s3, r23.w - mad r15.w, r33.x, r18.w, r15.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r32.zwzz, t6.xxxx, s3, r23.w - mad r15.w, r33.y, r18.w, r15.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r34.zwzz, t6.xxxx, s3, r23.w - mad r15.w, r33.z, r18.w, r15.w - ige r18.w, r18.z, l(0) - or r24.xyw, r24.xyxw, r27.xyxz - or r19.w, r24.y, r24.x - or r19.w, r24.w, r19.w - and r20.w, r23.w, l(0x7fffffff) - ult r20.w, l(0x7f800000), r20.w - or r19.w, r19.w, r20.w - mad r27.xyzw, r28.xyxy, cb6[400].xyxy, r31.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.w, r27.xyxx, t6.xxxx, s3, r23.w - mad r15.w, r33.w, r20.w, r15.w - mul r20.w, r29.y, r30.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r27.zwzz, t6.xxxx, s3, r23.w - mad r15.w, r20.w, r21.w, r15.w - add r15.w, r15.w, l(-1.000000) - mad r15.w, cb6[r18.z + 288].w, r15.w, l(1.000000) - movc r15.w, r19.w, l(1.000000), r15.w - movc r15.w, r18.w, r15.w, l(1.000000) - else - mov r15.w, l(1.000000) - endif - else - mov r15.w, l(1.000000) - endif - mul r13.w, r13.w, r15.w - mov r22.xyz, l(0,0,0,0) - endif - add r26.xyz, r22.xyzx, r26.xyzx - mov r14.w, r17.w - endloop - mov r9.z, r13.w - add r25.xyz, r25.xyzx, r26.xyzx - iadd r10.w, r10.w, l(1) -endloop -// === Glass Fix: Reduce clustered lights and overall brightness === -lt r32.x, l(0.500000), cb13[13].z -if_nz r32.x - mul r25.xyz, r25.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r5.xyw, r5.xyxw, l(0.650000, 0.650000, 0.000000, 0.650000) -endif -dp3 r0.x, r5.xywx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r1.xzw, -r0.xxxx, r5.xxyw -mad r0.xyz, cb0[184].wwww, r1.xzwx, r0.xxxx -add r1.xzw, -cb2[20].xxyz, cb1[r6.w + 13].xxyz -mad r1.xzw, cb1[r6.w + 13].wwww, r1.xxzw, cb2[20].xxyz -mul r1.xzw, r5.zzzz, r1.xxzw -mul r1.xzw, r1.xxzw, cb2[21].xxxx -mul r1.xzw, r1.xxzw, r4.wwww -mad r2.xyz, -r6.xyzx, r10.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r2.xyz, cb2[19].yyyy, r2.xyzx, r11.xyzx -mul r1.xzw, r1.xxzw, r2.xxyz -add r2.x, l(1.000000), -cb1[r6.w + 11].x -mul r1.xzw, r1.xxzw, r2.xxxx -add r2.x, l(1.000000), -cb2[19].x -mad r2.x, cb0[109].x, cb2[19].x, r2.x -div r2.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.x -mul r1.xzw, r1.xxzw, r2.xxxx -mad r0.xyz, r0.xyzx, cb0[184].xyzx, r1.xzwx -mad r1.xzw, r25.xxyz, r9.zzzz, r19.xxyz -add r0.xyz, r0.xyzx, r1.xzwx -mad r1.x, r1.y, cb0[156].w, cb0[157].w -mad r1.z, r0.w, cb0[154].w, -cb0[153].w -max r1.xz, r1.xxzx, l(0.010000, 0.000000, 0.000000, 0.000000) -mul r1.w, r1.x, l(-1.442695) -exp r1.w, r1.w -add r1.w, -r1.w, l(1.000000) -div r1.x, r1.w, r1.x -mad r1.w, r1.y, cb0[156].w, cb0[158].w -mul r1.w, r1.w, l(1.442695) -exp r1.w, r1.w -mul r1.x, r1.w, r1.x -mul r1.x, r1.x, -r1.z -mul r1.xzw, r1.xxxx, cb0[155].xxyz -mul r1.xzw, r1.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) -exp r1.xzw, r1.xxzw -dp3 r2.x, -r4.xyzx, cb0[154].xyzx -mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.z, r2.xxxx, cb0[155].wwww -add r2.y, -r2.z, r2.y -lt r2.z, l(0.000000), cb0[163].z -if_nz r2.z - and r16.w, l(7), cb0[108].w - imad r5.xyz, r16.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r2.z, r5.y, r5.z, r5.x - imad r2.w, r5.z, r2.z, r5.y - imad r3.w, r2.z, r2.w, r5.z - imad r5.x, r2.w, r3.w, r2.z - dp3 r2.z, -r4.xyzx, -r3.xyzx - add r3.x, r1.y, -cb0[44].y - lt r3.y, l(5.960464478E-08), r2.z - div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z - and r2.z, r2.z, r3.y - mul r2.z, r2.z, cb0[163].w - div r3.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w - mul r3.z, r2.z, r3.y - mad r4.x, r3.z, r3.x, cb0[44].y - mad r3.x, -r3.z, r3.x, r3.x - mul r3.z, r3.x, cb0[159].z - mul r3.x, r3.x, cb0[162].x - max r3.xz, r3.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - add r4.y, r4.x, -cb0[159].x - mul r4.y, r4.y, cb0[159].z - max r4.y, r4.y, l(-127.000000) - exp r4.y, -r4.y - mul r4.y, r4.y, cb0[159].y - lt r4.z, l(5.960464478E-08), |r3.z| - exp r4.w, -r3.z - add r4.w, -r4.w, l(1.000000) - div r4.w, r4.w, r3.z - mad r3.z, -r3.z, l(0.240226507), l(0.693147182) - movc r3.z, r4.z, r4.w, r3.z - add r4.x, r4.x, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.z, l(5.960464478E-08), |r3.x| - exp r4.w, -r3.x - add r4.w, -r4.w, l(1.000000) - div r4.w, r4.w, r3.x - mad r3.x, -r3.x, l(0.240226507), l(0.693147182) - movc r3.x, r4.z, r4.w, r3.x - mul r3.x, r3.x, r4.x - mad r3.x, r4.y, r3.z, r3.x - mad r2.z, -r2.z, r3.y, l(1.000000) - mul r2.z, r0.w, r2.z - mul r2.z, r2.z, r3.x - exp r2.z, -r2.z - min r2.z, r2.z, l(1.000000) - max r2.z, r2.z, cb0[161].w - mad_sat r3.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx - add r2.z, r2.z, r3.x - add r2.z, r3.y, r2.z - min r2.z, r2.z, l(1.000000) - imad r5.y, r3.w, r5.x, r2.w - ushr r3.xy, r5.xyxx, l(16, 16, 0, 0) - utof r3.xy, r3.xyxx - mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mad r3.xy, r3.xyxx, cb0[167].wwww, r18.xyxx - mul r3.xy, r3.xyxx, cb0[165].xyxx - mad r2.w, r16.z, cb0[164].x, cb0[164].y - log r2.w, r2.w - mul r2.w, r2.w, cb0[164].z - div r3.z, r2.w, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t17.xyzw, s0, l(0.000000) - add r2.w, r16.z, -cb0[166].z - mul_sat r2.w, r2.w, l(1000000.000000) - add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r2.wwww, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r2.w, -r2.z, l(1.000000) - mul r4.xyz, r2.wwww, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r2.z, r2.z, r3.w -else - add r1.y, r1.y, -cb0[44].y - mul r2.w, r1.y, cb0[159].z - max r2.w, r2.w, l(-127.000000) - mul r1.y, r1.y, cb0[162].x - max r1.y, r1.y, l(-127.000000) - add r3.w, cb0[44].y, -cb0[159].x - mul r3.w, r3.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[159].y - lt r4.x, l(5.960464478E-08), |r2.w| - exp r4.y, -r2.w - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r2.w - mad r2.w, -r2.w, l(0.240226507), l(0.693147182) - movc r2.w, r4.x, r4.y, r2.w - add r4.x, cb0[44].y, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.y, l(5.960464478E-08), |r1.y| - exp r4.z, -r1.y - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r4.y, r4.z, r1.y - mul r1.y, r1.y, r4.x - mad r1.y, r3.w, r2.w, r1.y - mul r1.y, r0.w, r1.y - exp r1.y, -r1.y - min r1.y, r1.y, l(1.000000) - max r1.y, r1.y, cb0[161].w - mad_sat r4.xy, r0.wwww, cb0[160].ywyy, cb0[160].xzxx - add r0.w, r1.y, r4.x - add r0.w, r4.y, r0.w - min r2.z, r0.w, l(1.000000) - add r0.w, -r2.z, l(1.000000) - mul r3.xyz, r0.wwww, cb0[161].xyzx -endif -mul r4.xyz, r1.xzwx, r2.zzzz -mad r0.w, r2.x, r2.x, l(1.000000) -mul r0.w, r0.w, l(0.0596831031) -mad r5.xyz, cb0[156].xyzx, r0.wwww, cb0[158].xyzx -mad r0.w, -cb0[155].w, cb0[155].w, l(1.000000) -mul r1.y, r2.y, l(12.566371) -sqrt r2.x, r2.y -mul r1.y, r1.y, r2.x -max r1.y, r1.y, l(0.001000) -div r0.w, r0.w, r1.y -mad_sat r2.xyw, cb0[157].xyxz, r0.wwww, r5.xyxz -mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) -add r1.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r1.xyz, r1.xyzx, r2.xywx -mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx -// === Glass Transparency Fix === -lt r30.x, l(0.500000), cb13[13].z -if_nz r30.x - // Boost transmittance: lerp(r4, 1, 0.5) - add r30.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r30.xyz, r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r4.xyzx - // Reduce inscatter intensity - mul r31.xyz, r1.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000) - // Modified fog blend - mad r0.xyz, r0.xyzx, r30.xyzx, r31.xyzx -else - // Original fog blend - mad r0.xyz, r0.xyzx, r4.xyzx, r1.xyzx -endif -add r0.xyz, -r12.xyzx, r0.xyzx -mad r8.xyz, r8.wwww, r0.xyzx, r12.xyzx -mul r0.xy, r13.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000) -sqrt r0.xy, |r0.xyxx| -sqrt r0.xy, r0.xyxx -mov r13.z, -r13.y -lt r0.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r13.xxxz -lt r1.xy, r13.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r0.zw, -r0.zzzw, r1.xxxy -itof r0.zw, r0.zzzw -mul r0.xy, r0.zwzz, r0.xyxx -mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -max r0.z, cb1[r6.w + 4].z, cb1[r6.w + 4].y -add r0.z, r0.z, l(-0.100000024) -lt r0.w, l(0.000000), r0.z -lt r0.z, r0.z, l(0.000000) -iadd r0.z, -r0.w, r0.z -itof r0.z, r0.z -mov_sat r0.z, r0.z -add r1.xy, -r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mad r0.xy, r0.zzzz, r1.xyxx, r0.xyxx -min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) -dp3 r0.x, r8.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mul r0.x, r8.w, r0.x -max r0.x, r8.w, r0.x -mul_sat r0.x, r0.x, l(10.000000) -lt r0.x, l(0.500000), r0.x -and o1.z, r0.x, l(0x3f800000) -// === Glass Highlight Compression === -lt r30.x, l(0.500000), cb13[13].z -if_nz r30.x - // Compute luminance - dp3 r30.y, r8.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) - // Soft compress if luminance > 0.5 - lt r30.z, l(0.500000), r30.y - if_nz r30.z - // compression = 0.5 + 1.5 * (1 - exp(-(luma - 0.5) / 1.5)) - add r30.w, r30.y, l(-0.500000) - mul r30.w, r30.w, l(-0.666667) - exp r30.w, r30.w - add r30.w, -r30.w, l(1.000000) - mad r30.w, r30.w, l(1.500000), l(0.500000) - // scale = compression / luma - max r31.x, r30.y, l(0.001000) - div r31.x, r30.w, r31.x - mul r8.xyz, r8.xyzx, r31.xxxx - endif -endif -mov o0.xyzw, r8.xyzw -mov o1.w, l(0) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0xD2EC68A2.ps_5_0.asm b/src/games/endfield/glass/0xD2EC68A2.ps_5_0.asm deleted file mode 100644 index 43bd1bd307..0000000000 --- a/src/games/endfield/glass/0xD2EC68A2.ps_5_0.asm +++ /dev/null @@ -1,1817 +0,0 @@ -// -// Generated by Microsoft (R) D3D Shader Disassembler -// -// using 3Dmigoto v1.4.1 on Fri Feb 6 19:58:05 2026 -// -// -// Input signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Position 0 xyzw 0 POS float xyz -// TEXCOORD 0 xy 1 NONE float xy -// TEXCOORD 1 zw 1 NONE float zw -// TEXCOORD 2 xyz 2 NONE float xyz -// TEXCOORD 3 xyzw 3 NONE float xyzw -// TEXCOORD 4 xyzw 4 NONE float x -// TEXCOORD 5 xyz 5 NONE float xyz -// TEXCOORD 6 xyz 6 NONE float xyz -// TEXCOORD 7 x 7 NONE uint x -// SV_IsFrontFace 0 x 8 FFACE uint x -// -// -// Output signature: -// -// Name Index Mask Register SysValue Format Used -// -------------------- ----- ------ -------- -------- ------- ------ -// SV_Target 0 xyzw 0 TARGET float xyzw -// SV_Target 1 xyzw 1 TARGET float xyzw -// -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[244], immediateIndexed -dcl_constantbuffer CB1[4085], dynamicIndexed -dcl_constantbuffer CB2[24], immediateIndexed -dcl_constantbuffer CB3[259], dynamicIndexed -dcl_constantbuffer CB4[3], immediateIndexed -dcl_constantbuffer CB5[2054], dynamicIndexed -dcl_constantbuffer CB6[715], dynamicIndexed -dcl_constantbuffer CB7[160], dynamicIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_sampler s5, mode_default -dcl_sampler s6, mode_default -dcl_sampler s7, mode_default -dcl_sampler s8, mode_default -dcl_sampler s9, mode_default -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2darray (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2d (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_input_ps_siv linear noperspective v0.xyz, position -dcl_input_ps linear v1.xy -dcl_input_ps linear v1.zw -dcl_input_ps linear v2.xyz -dcl_input_ps linear v3.xyzw -dcl_input_ps linear v4.x -dcl_input_ps linear v5.xyz -dcl_input_ps linear v6.xyz -dcl_input_ps constant v7.x -dcl_input_ps_sgv constant v8.x, is_front_face -dcl_output o0.xyzw -dcl_output o1.xyzw -dcl_temps 40 -ishl r0.x, v7.x, l(4) -max r0.y, cb1[r0.x + 4].z, cb1[r0.x + 4].y -dp2 r0.z, v0.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -ge r0.w, cb1[r0.x + 4].x, l(0.000000) -movc r0.w, r0.w, r0.z, -r0.z -add r0.x, -r0.w, cb1[r0.x + 4].x -add r0.z, -r0.y, -r0.z -add r0.z, r0.z, l(1.000000) -min r0.x, r0.z, r0.x -lt r0.x, r0.x, l(0.000000) -discard_nz r0.x -mul r0.xz, v0.xxyx, cb0[82].zzwz -mad r1.xy, r0.xzxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -mul r2.xyzw, -r1.yyyy, cb0[25].xyzw -mad r1.xyzw, cb0[24].xyzw, r1.xxxx, r2.xyzw -mad r1.xyzw, cb0[26].xyzw, v0.zzzz, r1.xyzw -add r1.xyzw, r1.xyzw, cb0[27].xyzw -div r1.xyz, r1.xyzx, r1.wwww -mul r0.w, r1.y, cb0[1].z -mad r0.w, cb0[0].z, r1.x, r0.w -mad r0.w, cb0[2].z, r1.z, r0.w -add r0.w, r0.w, cb0[3].z -mov r2.z, |r0.w| -lt r0.w, l(0.000000), v3.w -movc r0.w, r0.w, l(1.000000), l(-1.000000) -eq r2.w, l(0.000000), cb0[86].w -add r3.xyz, -r1.xyzx, cb0[44].xyzx -mov r4.x, cb0[0].z -mov r4.y, cb0[1].z -mov r4.z, cb0[2].z -movc r3.xyz, r2.wwww, r3.xyzx, r4.xyzx -dp3 r2.w, r3.xyzx, r3.xyzx -max r3.w, r2.w, l(9.999999939E-09) -rsq r3.w, r3.w -mul r5.xyz, r3.wwww, r3.xyzx -mul r2.w, r2.w, r3.w -add r6.xy, -v1.xyxx, v1.zwzz -mad r6.zw, cb2[3].xxxx, r6.xxxy, v1.xxxy -mad r6.zw, r6.zzzw, cb2[12].xxxy, cb2[12].zzzw -mad r6.xy, cb2[2].wwww, r6.xyxx, v1.xyxx -mad r6.xy, r6.xyxx, cb2[11].xyxx, cb2[11].zwzz -sample_b_indexable(texture2d)(float,float,float,float) r7.xyzw, r6.xyxx, t3.xyzw, s5, cb0[108].x -add r4.w, cb0[108].x, cb2[3].y -sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r6.zwzz, t4.xywz, s6, r4.w -mul r8.x, r8.x, r8.z -mad r6.xy, r8.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -mul r8.xy, r6.xyxx, cb2[0].xxxx -sample_b_indexable(texture2d)(float,float,float,float) r9.xyz, r6.zwzz, t5.xyzw, s7, cb0[108].x -mul r7.xyzw, r7.xyzw, cb2[8].xyzw -mul_sat r7.xyz, r7.xyzx, cb2[4].zzzz -add r10.xyz, -r7.xyzx, cb2[8].xyzx -mad r7.xyz, cb2[4].xxxx, r10.xyzx, r7.xyzx -mad r4.w, r7.w, v4.x, -r7.w -mad r10.w, cb2[23].x, r4.w, r7.w -add r4.w, -cb2[0].z, cb2[0].w -mad r11.w, r9.y, r4.w, cb2[0].z -add_sat r4.w, l(-1.000000), cb2[3].w -add r5.w, -r9.x, cb2[4].y -mad r4.w, r4.w, r5.w, r9.x -mul r9.xyw, v2.zxzy, v3.yzyx -mad r9.xyw, v2.yzyx, v3.zxzy, -r9.xyxw -mul r9.xyw, r0.wwww, r9.xyxw -mul r8.yzw, r8.yyyy, r9.xxyw -mad r8.xyz, v3.xyzx, r8.xxxx, r8.yzwy -dp2 r0.w, r6.xyxx, r6.xyxx -min r0.w, r0.w, l(1.000000) -add r0.w, -r0.w, l(1.000000) -sqrt r0.w, r0.w -max r0.w, r0.w, l(1.000000017E-16) -lt r5.w, l(0.000000), cb2[1].w -movc r5.w, r5.w, l(-1.000000), l(1.000000) -movc r5.w, v8.x, l(1.000000), r5.w -mul r0.w, r0.w, r5.w -mad r6.xyz, v2.xyzx, r0.wwww, r8.xyzx -dp3 r0.w, r6.xyzx, r6.xyzx -rsq r0.w, r0.w -mul r6.xyz, r0.wwww, r6.xyzx -dp3 r0.w, r6.xyzx, r5.xyzx -dp3 r5.w, -r5.xyzx, r6.xyzx -mul r7.w, cb2[19].z, cb2[19].z -mad r8.x, -r5.w, r5.w, l(1.000000) -mad r7.w, -r7.w, r8.x, l(1.000000) -sqrt r8.x, r7.w -mad r8.x, cb2[19].z, r5.w, r8.x -ge r7.w, r7.w, l(0.000000) -mul r8.xyz, r6.xyzx, r8.xxxx -mad r8.xyz, cb2[19].zzzz, -r5.xyzx, -r8.xyzx -and r8.xyz, r7.wwww, r8.xyzx -mul r7.w, r0.w, v0.z -max r7.w, r7.w, l(0.500000) -div r7.w, cb2[19].w, r7.w -add r7.w, r7.w, -cb2[19].w -mad r7.w, cb2[20].x, r7.w, cb2[19].w -mul r8.xyz, r7.wwww, r8.xyzx -mul r8.yw, r8.yyyy, cb0[1].xxxy -mad r8.xy, cb0[0].xyxx, r8.xxxx, r8.ywyy -mad r8.xy, cb0[2].xyxx, r8.zzzz, r8.xyxx -mad r8.zw, v1.xxxy, cb2[22].xxxy, cb2[22].zzzw -sample_b_indexable(texture2d)(float,float,float,float) r8.zw, r8.zwzz, t7.zwxy, s8, cb0[108].x -mad r8.zw, r8.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -mad r8.zw, r8.zzzw, cb2[19].yyyy, -r8.xxxy -mad r8.xy, cb2[19].xxxx, r8.zwzz, r8.xyxx -mad r8.zw, v0.xxxy, cb0[82].zzzw, r8.xxxy -mul r8.xy, r8.xyxx, l(0.250000, 0.250000, 0.000000, 0.000000) -mad r9.xy, v0.xyxx, cb0[82].zwzz, r8.xyxx -sample_b_indexable(texture2d)(float,float,float,float) r7.w, r8.zwzz, t1.yzwx, s0, cb0[108].x -sample_b_indexable(texture2d)(float,float,float,float) r9.x, r9.xyxx, t1.xyzw, s0, cb0[108].x -mad r9.x, cb0[84].z, r9.x, cb0[84].w -div r9.x, l(1.000000, 1.000000, 1.000000, 1.000000), r9.x -ge r9.x, r9.x, r2.z -and r9.x, r9.x, l(0x3f800000) -mad r0.xz, r9.xxxx, r8.xxyx, r0.xxzx -mad r7.w, cb0[84].z, r7.w, cb0[84].w -div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w -ge r7.w, r7.w, r2.z -and r7.w, r7.w, l(0x3f800000) -add r8.xy, -r0.xzxx, r8.zwzz -mad r0.xz, r7.wwww, r8.xxyx, r0.xxzx -sample_b_indexable(texture2d)(float,float,float,float) r8.xyz, r0.xzxx, t6.xyzw, s9, cb0[108].x -max r0.x, v5.z, l(9.999999939E-09) -div r0.xz, v5.xxyx, r0.xxxx -max r7.w, v6.z, l(9.999999939E-09) -div r9.xy, v6.xyxx, r7.wwww -add r12.xy, r0.xzxx, -r9.xyxx -mul r0.x, l(0.080000), cb2[0].y -mad r9.xyw, -r7.xyxz, r4.wwww, r7.xyxz -mad r0.x, -r0.x, r4.w, r0.x -mad r7.xyz, r7.xyzx, r4.wwww, r0.xxxx -mad r13.xyzw, r11.wwww, l(-1.000000, -0.027500, -0.572000, 0.022000), l(1.000000, 0.042500, 1.040000, -0.040000) -mul r0.x, r13.x, r13.x -max r0.z, r0.w, l(0.000000) -mul r0.w, r0.z, l(-9.280000) -exp r0.w, r0.w -min r0.x, r0.w, r0.x -mad r0.x, r0.x, r13.x, r13.y -mad r0.xw, r0.xxxx, l(-1.040000, 0.000000, 0.000000, 1.040000), r13.zzzw -eq r4.w, l(1.000000), cb0[113].y -mul r13.xyzw, r1.yyyy, cb0[241].xyzw -mad r13.xyzw, cb0[240].xyzw, r1.xxxx, r13.xyzw -mad r13.xyzw, cb0[242].xyzw, r1.zzzz, r13.xyzw -add r13.xyzw, r13.xyzw, cb0[243].xyzw -div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r13.w -mul r13.xyz, r13.xyzx, l(1.000000, -1.000000, 1.000000, 0.000000) -mul r13.xyz, r7.wwww, r13.xyzx -mad_sat r13.xy, r13.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) -mul r13.xy, r13.xyxx, cb0[82].xyxx -ftou r14.xy, r13.xyxx -mad r7.w, cb0[84].z, r13.z, cb0[84].w -div r14.z, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w -ftou r2.xy, v0.xyxx -movc r13.xyz, r4.wwww, r14.xyzx, r2.xyzx -mad r2.xyz, r6.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r1.xyzx -mad r14.xyz, cb0[6].xzyx, -cb0[212].wwww, cb0[210].xzyx -add r14.xyz, r2.xzyx, -r14.xyzx -max r4.w, |r14.y|, |r14.x| -add r4.w, r4.w, l(-464.000000) -mul_sat r4.w, r4.w, l(0.031250) -add r7.w, |r14.z|, l(-208.000000) -mul_sat r7.w, r7.w, l(0.031250) -max r4.w, r4.w, r7.w -ne r7.w, l(0.000000), cb0[210].w -lt r8.w, r4.w, l(1.000000) -and r7.w, r7.w, r8.w -if_nz r7.w - mad r14.xyz, cb0[6].xzyx, -cb0[212].yyyy, cb0[210].xzyx - add r14.xyz, r2.xzyx, -r14.xyzx - max r7.w, |r14.y|, |r14.x| - add r7.w, r7.w, l(-29.000000) - mul_sat r7.w, r7.w, l(0.500000) - add r8.w, |r14.z|, l(-13.000000) - mul_sat r8.w, r8.w, l(0.500000) - max r7.w, r7.w, r8.w - lt r8.w, r7.w, l(1.000000) - if_nz r8.w - mad r14.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r15.xyz, r14.xyzx, cb0[211].xyzx - round_ni r15.xyz, r15.xyzx - mad r14.xyz, r14.xyzx, cb0[211].xyzx, -r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r14.xyzx, t14.xyzw, s2, l(0.000000) - add r8.w, -r7.w, l(1.000000) - mul r12.w, l(0.500000), cb0[211].y - mad r15.w, -cb0[211].y, l(0.500000), l(1.000000) - max r12.w, r12.w, r14.y - min r12.w, r15.w, r12.w - mul r14.w, r12.w, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyzw, r14.xwzx, t15.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r15.xxxx, r16.xyzx - add r16.xyz, r14.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t15.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r15.yyyy, r16.xyzx - add r14.xyz, r14.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t15.xyzw, s1, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r15.zzzz, r14.xyzx - mad r12.w, r16.w, r8.w, r4.w - mov r14.w, r15.z - mul r14.xyzw, r8.wwww, r14.xyzw - mov r18.w, r15.y - mul r16.xyzw, r8.wwww, r18.xyzw - mov r17.w, r15.x - mul r15.xyzw, r8.wwww, r17.xyzw - else - mov r14.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r12.w, r4.w - endif - mad r17.xyz, cb0[6].xzyx, -cb0[212].zzzz, cb0[210].xzyx - add r17.xyz, r2.xzyx, -r17.xyzx - max r8.w, |r17.y|, |r17.x| - add r8.w, r8.w, l(-116.000000) - mul_sat r8.w, r8.w, l(0.125000) - add r17.x, |r17.z|, l(-52.000000) - mul_sat r17.x, r17.x, l(0.125000) - max r8.w, r8.w, r17.x - lt r17.x, r8.w, l(1.000000) - if_nz r17.x - mad r17.xyz, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r17.xyzx, cb0[211].xyzx - round_ni r18.xyz, r18.xyzx - mad r17.xyz, r17.xyzx, cb0[211].xyzx, -r18.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r17.xyzx, t16.xyzw, s2, l(0.000000) - add r18.w, -r8.w, l(1.000000) - mul r7.w, r7.w, r18.w - mul r18.w, l(0.500000), cb0[211].y - mad r19.x, -cb0[211].y, l(0.500000), l(1.000000) - max r17.y, r17.y, r18.w - min r17.y, r19.x, r17.y - mul r17.w, r17.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t17.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r18.xxxx, r19.xyzx - add r19.xyz, r17.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t17.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r18.yyyy, r19.xyzx - add r17.xyz, r17.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t17.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r18.zzzz, r17.xyzx - mad r12.w, r19.w, r7.w, r12.w - mov r17.w, r18.z - mad r14.xyzw, r17.xyzw, r7.wwww, r14.xyzw - mov r21.w, r18.y - mad r16.xyzw, r21.xyzw, r7.wwww, r16.xyzw - mov r20.w, r18.x - mad r15.xyzw, r20.xyzw, r7.wwww, r15.xyzw - endif - lt r7.w, l(0.000000), r8.w - if_nz r7.w - mad r2.xyz, r2.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r2.xyzx, cb0[211].xyzx - mul r18.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[211].xyzx - round_ni r17.xyz, r17.xyzx - mad r2.xyz, r2.xyzx, cb0[211].xyzx, -r17.xyzx - mad r17.xyz, -cb0[211].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r2.xyz, r18.xyzx, r2.xyzx - min r19.xyz, r17.xyzx, r2.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r19.xyzx, t18.yzwx, s2, l(0.000000) - add r2.x, -r4.w, l(1.000000) - mul r2.x, r2.x, r8.w - max r2.y, r18.y, r19.y - min r2.y, r17.y, r2.y - mul r19.w, r2.y, l(0.333333343) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r19.xwzx, t19.xyzw, s1, l(0.000000) - add r18.xyz, r19.xwzx, l(0.000000, 0.666666687, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t19.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r20.yyyy, r18.xyzx - mov r18.w, r20.y - mad r14.xyzw, r18.xyzw, r2.xxxx, r14.xyzw - add r18.xyz, r19.xwzx, l(0.000000, 0.333333343, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t19.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r20.xxxx, r18.xyzx - mov r18.w, r20.x - mad r16.xyzw, r18.xyzw, r2.xxxx, r16.xyzw - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r17.xyzx - mad r15.xyzw, r20.xyzw, r2.xxxx, r15.xyzw - mad r12.w, r17.w, r2.x, r12.w - endif - mad_sat r2.x, r12.w, l(2.000000), l(-1.000000) - add r17.x, -r4.w, r2.x - add r2.x, r4.w, r2.x - mul r17.y, r2.x, l(0.500000) -else - mov r14.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r17.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r17.yyyx, cb0[213].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r2.xy, r17.yxyy, cb0[213].wyww -mad r18.w, r2.y, l(0.375000), r2.x -add r15.xyzw, r15.xyzw, r18.xyzw -mul r18.xyzw, r17.yyyx, cb0[214].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r2.xy, r17.yxyy, cb0[214].wyww -mad r18.w, r2.y, l(0.375000), r2.x -add r16.xyzw, r16.xyzw, r18.xyzw -mul r18.xyzw, r17.yyyx, cb0[215].xyzw -mad r18.y, r18.w, l(0.500000), r18.y -mul r2.xy, r17.yxyy, cb0[215].wyww -mad r18.w, r2.y, l(0.375000), r2.x -add r14.xyzw, r14.xyzw, r18.xyzw -dp3 r2.x, r15.xyzx, r6.xyzx -add r2.x, r15.w, r2.x -max r2.x, r2.x, l(0.000000) -dp3 r4.w, r16.xyzx, r6.xyzx -add r4.w, r16.w, r4.w -max r2.y, r4.w, l(0.000000) -dp3 r4.w, r14.xyzx, r6.xyzx -add r4.w, r14.w, r4.w -max r2.z, r4.w, l(0.000000) -add r4.w, r5.w, r5.w -mad r14.xyz, r6.xyzx, -r4.wwww, -r5.xyzx -add r4.w, l(-1.000000), cb0[113].x -max r5.w, r11.w, l(0.001000) -log r5.w, r5.w -mad r5.w, -r5.w, l(1.200000), l(1.000000) -add r4.w, r4.w, -r5.w -utof r15.xy, r13.xyxx -mul r15.zw, r15.xxxy, cb3[0].wwww -round_ni r15.zw, r15.zzzw -add r5.w, r13.z, -cb3[2].y -round_ni r5.w, r5.w -add r7.w, l(-1.000000), cb3[1].x -max r8.w, r5.w, l(0.000000) -min r7.w, r7.w, r8.w -ge r5.w, r7.w, r5.w -mad r8.w, r15.w, cb3[0].x, r15.z -ftoi r8.w, r8.w -iadd r8.w, r8.w, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r8.w, r8.w, l(0), t0.xxxx -ftoi r7.w, r7.w -iadd r7.w, r7.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r7.w, r7.w, l(0), t0.xxxx -and r7.w, r7.w, r8.w -and r5.w, r5.w, r7.w -mul r16.xyz, r2.xyzx, cb0[111].xxxx -dp3 r7.w, r16.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mov r1.w, l(1.000000) -mov r6.w, l(1.000000) -mov r16.xyz, l(0,0,0,0) -mov r8.w, l(1.000000) -mov r12.w, r5.w -mov r14.w, l(0) -loop - lt r15.z, l(0.010000), r8.w - ine r15.w, r12.w, l(0) - and r15.w, r15.z, r15.w - if_nz r15.w - firstbit_lo r15.w, r12.w - ishl r16.w, l(1), r15.w - xor r12.w, r12.w, r16.w - ishl r15.w, r15.w, l(3) - dp4 r17.x, cb3[r15.w + 6].xyzw, r1.xyzw - dp4 r17.y, cb3[r15.w + 7].xyzw, r1.xyzw - dp4 r17.z, cb3[r15.w + 8].xyzw, r1.xyzw - ge r18.xyz, cb3[r15.w + 5].xyzx, |r17.xyzx| - and r16.w, r18.y, r18.x - and r16.w, r18.z, r16.w - if_nz r16.w - mul r16.w, l(0.100000), cb3[r15.w + 5].x - mul r18.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r18.xy, r18.xyxx, r18.xyxx - add r19.xyz, -|r17.xyzx|, cb3[r15.w + 5].xyzx - mul r19.xyz, r19.xyzx, cb3[r15.w + 9].xyzx - eq r17.w, l(1.000000), cb3[r15.w + 10].x - if_nz r17.w - dp3 r20.x, cb3[r15.w + 6].xyzx, r14.xyzx - dp3 r20.y, cb3[r15.w + 7].xyzx, r14.xyzx - dp3 r20.z, cb3[r15.w + 8].xyzx, r14.xyzx - add r21.xyz, -r17.xyzx, cb3[r15.w + 5].xyzx - div r21.xyz, r21.xyzx, r20.xyzx - add r22.xyz, -r17.xyzx, -cb3[r15.w + 5].xyzx - div r22.xyz, r22.xyzx, r20.xyzx - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx - movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx - min r17.w, r21.y, r21.x - min r17.w, r21.z, r17.w - mad r17.xyz, r20.xyzx, r17.wwww, r17.xyzx - else - mov r17.xyz, r14.xyzx - endif - dp3 r17.w, r17.xyzx, r17.xyzx - rsq r17.w, r17.w - mul r17.xyz, r17.wwww, r17.xyzx - lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx - lt r21.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r20.xyz, -r20.xyzx, r21.xyzx - itof r20.xyz, r20.xyzx - dp3 r17.w, r17.xyzx, r20.xyzx - div r17.xyz, r17.xyzx, r17.wwww - lt r17.z, r17.z, l(0.000000) - add r20.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r20.xy, r20.zwzz, r20.xyxx - movc r17.xy, r17.zzzz, r20.xyxx, r17.xyxx - dp4 r17.z, cb3[r15.w + 4].xyzw, r6.xyzw - max r17.z, r17.z, l(0.000000) - max r17.z, r17.z, l(0.000100) - min r17.w, r19.z, r19.y - min r17.w, r17.w, r19.x - add r18.x, r18.y, r18.x - mad r18.x, r18.z, r18.z, r18.x - mad r16.w, r16.w, r16.w, -r18.x - mul r16.w, r16.w, cb3[r15.w + 9].x - mul r16.w, r16.w, cb3[r15.w + 9].x - add r18.x, l(1.000000), -cb3[r15.w + 10].y - mul r16.w, r16.w, r18.x - mul r16.w, r16.w, l(100.000000) - mad_sat r16.w, r17.w, cb3[r15.w + 10].y, r16.w - mul r17.w, r16.w, cb3[r15.w + 10].w - mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r18.xy, r17.xyxx, cb3[1].wwww, cb3[2].wwww - mov r18.z, cb3[r15.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r18.xyz, r18.xyzx, t2.xyzw, s3, r4.w - mul r18.xyz, r18.xyzx, cb3[r15.w + 9].wwww - div r17.x, r7.w, r17.z - min r17.x, |r17.x|, l(1.000000) - mad r17.x, r17.x, l(2.000000), r7.w - add r17.y, r17.z, l(2.000000) - div r17.x, r17.x, r17.y - add r17.x, r17.x, l(-1.000000) - mad r17.x, r17.x, cb0[112].w, l(1.000000) - mul r17.xyz, r17.xxxx, r18.xyzx - mul r17.xyz, r17.wwww, r17.xyzx - mad r16.xyz, r17.xyzx, r8.wwww, r16.xyzx - mad r15.w, -r16.w, cb3[r15.w + 10].w, l(1.000000) - mul r8.w, r8.w, r15.w - endif - mov r14.w, l(-1) - continue - else - mov r14.w, r15.z - break - endif - mov r14.w, r15.z -endloop -if_nz r14.w - dp3 r1.w, r14.xyzx, r14.xyzx - rsq r1.w, r1.w - mul r17.xyz, r1.wwww, r14.xyzx - lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx - lt r19.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r18.xyz, -r18.xyzx, r19.xyzx - itof r18.xyz, r18.xyzx - dp3 r1.w, r17.xyzx, r18.xyzx - div r17.xyz, r17.xyzx, r1.wwww - lt r1.w, r17.z, l(0.000000) - add r15.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r15.zw, r15.zzzw, r18.xxxy - movc r15.zw, r1.wwww, r15.zzzw, r17.xxxy - mov r6.w, l(1.000000) - dp4 r1.w, cb3[3].xyzw, r6.xyzw - max r1.w, r1.w, l(0.000000) - max r1.w, r1.w, l(0.000100) - mad r15.zw, r15.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r17.xy, r15.zwzz, cb3[1].wwww, cb3[2].wwww - mov r17.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t2.xyzw, s3, r4.w - div r4.w, r7.w, r1.w - min r4.w, |r4.w|, l(1.000000) - mad r4.w, r4.w, l(2.000000), r7.w - add r1.w, r1.w, l(2.000000) - div r1.w, r4.w, r1.w - add r1.w, r1.w, l(-1.000000) - mad r1.w, r1.w, cb0[112].w, l(1.000000) - mul r17.xyz, r1.wwww, r17.xyzx - mad r16.xyz, r17.xyzx, r8.wwww, r16.xyzx -endif -mul r2.xyz, r9.xywx, r2.xyzx -add r1.w, r9.z, l(-1.000000) -mad r1.w, cb2[1].x, r1.w, l(1.000000) -mul r2.xyz, r1.wwww, r2.xyzx -mul r16.xyz, r16.xyzx, cb0[112].zzzz -// === Glass Fix: Reduce reflection probe intensity === -lt r37.x, l(0.500000), cb13[13].z -if_nz r37.x - mul r16.xyz, r16.xyzx, l(0.400000, 0.400000, 0.400000, 0.000000) -endif -mul r16.xyz, r16.xyzx, cb0[111].yyyy -mul_sat r1.w, r7.y, l(50.000000) -mul r0.w, r0.w, r1.w -mad r17.xyz, r7.xyzx, r0.xxxx, r0.wwww -mul r16.xyz, r16.xyzx, r17.xyzx -mad r2.xyz, r2.xyzx, cb0[111].xxxx, r16.xyzx -lt r0.x, cb6[35].w, l(0.990000) -if_nz r0.x - ftoi r0.x, cb6[35].x - ieq r0.w, r0.x, l(2) - movc r16.xyz, r0.wwww, cb6[20].xyzx, cb0[44].xyzx - add r16.xyz, r1.xyzx, -r16.xyzx - dp3 r0.w, r16.xyzx, r16.xyzx - add r0.w, -r0.w, cb6[34].w - mul_sat r0.w, r0.w, cb6[34].z - lt r1.w, l(0.000000), r0.w - if_nz r1.w - ilt r0.x, l(0), r0.x - if_nz r0.x - add r16.xyz, r1.xyzx, -cb6[20].xyzx - add r17.xyz, r1.xyzx, -cb6[21].xyzx - add r18.xyz, r1.xyzx, -cb6[22].xyzx - add r19.xyz, r1.xyzx, -cb6[23].xyzx - dp3 r16.x, r16.xyzx, r16.xyzx - dp3 r16.y, r17.xyzx, r17.xyzx - dp3 r16.z, r18.xyzx, r18.xyzx - dp3 r16.w, r19.xyzx, r19.xyzx - lt r17.x, r16.x, cb6[20].w - lt r17.y, r16.y, cb6[21].w - lt r17.z, r16.z, cb6[22].w - lt r17.w, r16.w, cb6[23].w - and r18.xyzw, r17.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000) - movc r17.xyz, r17.xyzx, l(-1.000000,-1.000000,-1.000000,0), l(-0.000000,-0.000000,-0.000000,0) - add r17.xyz, r17.xyzx, r18.yzwy - max r18.yzw, r17.xxyz, l(0.000000, 0.000000, 0.000000, 0.000000) - dp4 r0.x, r18.xyzw, l(4.000000, 3.000000, 2.000000, 1.000000) - add r0.x, -r0.x, l(4.000000) - max r0.x, r0.x, l(0.000000) - min r0.x, r0.x, l(3.000000) - add r1.w, r0.x, l(1.000000) - min r1.w, r1.w, l(3.000000) - ftou r1.w, r1.w - dp3 r4.w, r16.yzwy, icb[r1.w + 0].yzwy - div r1.w, r4.w, cb6[r1.w + 20].w - ge r4.w, r1.w, l(0.000000) - ge r1.w, l(1.000000), r1.w - and r1.w, r1.w, r4.w - if_nz r1.w - ftou r1.w, r0.x - add r15.zw, r15.xxxy, l(0.000000, 0.000000, 2.083000, 4.867000) - dp2 r4.w, r15.zwzz, l(0.0671105608, 0.00583714992, 0.000000, 0.000000) - frc r4.w, r4.w - mul r4.w, r4.w, l(52.982918) - frc r4.w, r4.w - dp4 r5.w, r16.xyzw, icb[r1.w + 0].xyzw - div r1.w, r5.w, cb6[r1.w + 20].w - sqrt r1.w, r1.w - add r1.w, r1.w, l(-0.900000) - mul r1.w, r1.w, l(12.000000) - ge r1.w, r1.w, r4.w - and r1.w, r1.w, l(0x3f800000) - add r0.x, r0.x, r1.w - endif - dp3 r1.w, r6.xyzx, cb5[0].xyzx - max r1.w, r1.w, l(0.000000) - min r1.w, r1.w, l(0.900000) - add r1.w, -r1.w, l(1.000000) - ftou r4.w, r0.x - ishl r5.w, r4.w, l(2) - mul r15.zw, r1.wwww, cb6[r4.w + 24].xxxy - max r1.w, r15.z, l(0.000000) - mad r16.xyz, -cb5[0].xyzx, r1.wwww, r1.xyzx - mad r16.xyz, r6.xyzx, r15.wwww, r16.xyzx - mul r17.xyz, r16.yyyy, cb6[r5.w + 1].xyzx - mad r16.xyw, cb6[r5.w + 0].xyxz, r16.xxxx, r17.xyxz - mad r16.xyz, cb6[r5.w + 2].xyzx, r16.zzzz, r16.xywx - add r16.xyz, r16.xyzx, cb6[r5.w + 3].xyzx - ge r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - ge r18.xyz, r16.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - or r17.xyz, r17.xyzx, r18.xyzx - or r1.w, r17.y, r17.x - or r1.w, r17.z, r1.w - and r4.w, r16.z, l(0x7fffffff) - ult r4.w, l(0x7f800000), r4.w - or r17.z, r1.w, r4.w - ftoi r0.x, r0.x - mad r15.zw, r16.xxxy, cb6[r0.x + 28].zzzw, cb6[r0.x + 28].xxxy - mad r16.xy, r15.zwzz, cb6[32].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r16.xy, r16.xyxx - mad r15.zw, r15.zzzw, cb6[32].zzzw, -r16.xxxy - add r18.xyzw, r15.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r19.xw, r18.xxxz, r18.xxxz - min r18.xz, r15.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) - max r20.xy, r15.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r20.zw, r19.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r15.zzzw - add r15.zw, -r15.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - mad r15.zw, -r18.xxxz, r18.xxxz, r15.zzzw - mad r18.xy, -r20.xyxx, r20.xyxx, r18.ywyy - mov r21.x, r20.z - mov r21.y, r15.z - mov r21.z, r18.x - mov r21.w, r19.x - mul r21.xyzw, r21.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r19.x, r20.w - mov r19.y, r15.w - mov r19.z, r18.y - mul r18.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r19.xyzw, r21.ywyw, r21.xzxz - add r20.xyzw, r18.yyww, r18.xxzz - div r15.zw, r21.yyyw, r19.zzzw - add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r21.xy, r15.zwzz, cb6[32].xxxx - div r15.zw, r18.yyyw, r20.yyyw - add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r21.zw, r15.zzzw, cb6[32].yyyy - mul r18.xyzw, r19.xyzw, r20.xyzw - mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xzyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r19.xyxx, t8.xxxx, s4, r16.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t8.xxxx, s4, r16.z - mul r1.w, r1.w, r18.y - mad r0.x, r18.x, r0.x, r1.w - mad r19.xyzw, r16.xyxy, cb6[32].xyxy, r21.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.xyxx, t8.xxxx, s4, r16.z - mad r0.x, r18.z, r1.w, r0.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r19.zwzz, t8.xxxx, s4, r16.z - mad r0.x, r18.w, r1.w, r0.x - movc r17.x, r17.z, l(1.000000), r0.x - else - mov r17.xz, l(1.000000,0,0,0) - endif - else - mov r17.xz, l(1.000000,0,0,0) - endif - lt r0.x, r0.w, l(1.000000) - if_nz r0.x - dp3 r0.x, r6.xyzx, cb5[0].xyzx - max r0.x, r0.x, l(0.000000) - min r0.x, r0.x, l(0.900000) - add r0.x, -r0.x, l(1.000000) - mul r15.zw, r0.xxxx, cb6[584].xxxy - mad r16.xyz, -cb5[0].xyzx, r15.zzzz, r1.xyzx - mad r16.xyz, r6.xyzx, r15.wwww, r16.xyzx - mul r15.zw, r16.yyyy, cb6[581].xxxy - mad r15.zw, cb6[580].xxxy, r16.xxxx, r15.zzzw - mad r15.zw, cb6[582].xxxy, r16.zzzz, r15.zzzw - add r15.zw, r15.zzzw, cb6[583].xxxy - lt r18.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r15.zwzz - and r0.x, r18.y, r18.x - lt r18.xy, r15.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000) - and r1.w, r18.y, r18.x - and r0.x, r0.x, r1.w - if_nz r0.x - mul r0.x, r15.w, cb6[585].z - round_ni r0.x, r0.x - add r0.x, r15.z, r0.x - mul r0.x, r0.x, cb6[585].y - ftou r0.x, r0.x - umin r0.x, r0.x, l(127) - and r1.w, l(0x0000ffff), cb6[r0.x + 587].x - f16tof32 r18.x, r1.w - ge r1.w, r18.x, l(0.000000) - if_nz r1.w - mov r19.x, cb6[576].x - mov r19.y, cb6[577].x - mov r19.z, cb6[578].x - mov r19.w, cb6[r0.x + 587].y - mov r16.w, l(1.000000) - dp4 r19.x, r19.xyzw, r16.xyzw - mov r20.x, cb6[576].y - mov r20.y, cb6[577].y - mov r20.z, cb6[578].y - mov r20.w, cb6[r0.x + 587].z - dp4 r19.y, r20.xyzw, r16.xyzw - mov r20.x, cb6[576].z - mov r20.y, cb6[577].z - mov r20.z, cb6[578].z - mov r20.w, cb6[r0.x + 587].w - dp4 r1.w, r20.xyzw, r16.xyzw - lt r15.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xxxy - lt r4.w, l(0.000000), r1.w - and r5.w, r15.w, r15.z - and r4.w, r4.w, r5.w - lt r15.zw, r19.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - lt r5.w, r1.w, l(1.000000) - and r6.w, r15.w, r15.z - and r5.w, r5.w, r6.w - and r4.w, r4.w, r5.w - if_nz r4.w - ushr r0.x, cb6[r0.x + 587].x, l(16) - f16tof32 r18.y, r0.x - mad r15.zw, r19.xxxy, cb6[584].zzzw, r18.xxxy - mad r16.xy, r15.zwzz, cb6[586].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r16.xy, r16.xyxx - mad r15.zw, r15.zzzw, cb6[586].zzzw, -r16.xxxy - add r18.xyzw, r15.zzww, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r19.xw, r18.xxxz, r18.xxxz - min r16.zw, r15.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) - max r18.xz, r15.zzwz, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r20.xy, r19.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r15.zwzz - add r15.zw, -r15.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - mad r15.zw, -r16.zzzw, r16.zzzw, r15.zzzw - mad r16.zw, -r18.xxxz, r18.xxxz, r18.yyyw - mov r18.x, r20.x - mov r18.y, r15.z - mov r18.z, r16.z - mov r18.w, r19.x - mul r18.xyzw, r18.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - mov r19.x, r20.y - mov r19.y, r15.w - mov r19.z, r16.w - mul r19.xyzw, r19.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220) - add r20.xyzw, r18.ywyw, r18.xzxz - add r21.xyzw, r19.yyww, r19.xxzz - div r15.zw, r18.yyyw, r20.zzzw - add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r18.xy, r15.zwzz, cb6[586].xxxx - div r15.zw, r19.yyyw, r21.yyyw - add r15.zw, r15.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000) - mul r18.zw, r15.zzzw, cb6[586].yyyy - mul r19.xyzw, r20.xyzw, r21.xyzw - mad r20.xyzw, r16.xyxy, cb6[586].xyxy, r18.xzyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r0.x, r20.xyxx, t11.xxxx, s4, r1.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r4.w, r20.zwzz, t11.xxxx, s4, r1.w - mul r4.w, r4.w, r19.y - mad r0.x, r19.x, r0.x, r4.w - mad r16.xyzw, r16.xyxy, cb6[586].xyxy, r18.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r4.w, r16.xyxx, t11.xxxx, s4, r1.w - mad r0.x, r19.z, r4.w, r0.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r1.w, r16.zwzz, t11.xxxx, s4, r1.w - mad r17.y, r19.w, r1.w, r0.x - else - mov r17.y, l(1.000000) - endif - else - mov r17.y, l(1.000000) - endif - else - mov r17.y, l(1.000000) - endif - movc r17.x, r17.z, r17.y, r17.x - else - mov r17.y, l(1.000000) - endif - add r0.x, -r17.y, r17.x - mad r0.x, r0.w, r0.x, r17.y - lt r0.w, l(0.001000), r0.x - if_nz r0.w - add r16.xyz, r1.xyzx, -cb0[173].xyzx - mad r15.zw, cb0[176].xxxz, r16.yyyy, r16.xxxz - mul r16.yw, r15.zzzw, cb0[174].zzzz - mul r17.xy, cb0[175].xyxx, cb0[183].wwww - mad r15.zw, r15.zzzw, cb0[174].zzzz, r17.xxxy - sample_l_indexable(texture2d)(float,float,float,float) r0.w, r15.zwzz, t10.yzwx, s2, l(0.000000) - mad r15.zw, r16.yyyw, cb0[175].wwww, r17.xxxy - sample_l_indexable(texture2d)(float,float,float,float) r1.w, r15.zwzz, t10.yzwx, s2, l(0.000000) - dp2 r4.w, r16.xzxx, r16.xzxx - sqrt r4.w, r4.w - add r5.w, -cb0[174].x, cb0[174].y - add r4.w, r4.w, -cb0[174].x - div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w - mul_sat r4.w, r4.w, r5.w - mad r5.w, r4.w, l(-2.000000), l(3.000000) - mul r4.w, r4.w, r4.w - mul r4.w, r4.w, r5.w - add r1.w, -r0.w, r1.w - mad r0.w, r4.w, r1.w, r0.w - add r0.w, r0.w, l(-1.000000) - mad r0.w, cb0[175].z, r0.w, l(1.000000) - mul r0.x, r0.w, r0.x - endif - add r0.w, -r0.x, cb6[35].z - mad r0.x, cb6[35].w, r0.w, r0.x -else - mov r0.x, cb6[35].z -endif -min r0.x, r0.x, l(1.000000) -add r0.x, r0.x, l(-1.000000) -mad r16.x, cb6[34].x, r0.x, l(1.000000) -lt r0.x, l(0.001000), r16.x -if_nz r0.x - dp3 r0.x, -cb5[0].xyzx, r14.xyzx - mad r17.xyz, cb5[0].xyzx, r0.xxxx, r14.xyzx - lt r0.x, r0.x, cb5[4].z - dp3 r0.w, r17.xyzx, r17.xyzx - max r0.w, r0.w, l(0.0000610351562) - rsq r0.w, r0.w - mul r17.xyz, r0.wwww, r17.xyzx - mul r17.xyz, r17.xyzx, cb5[4].yyyy - mad r17.xyz, -cb5[0].xyzx, cb5[4].zzzz, r17.xyzx - dp3 r0.w, r17.xyzx, r17.xyzx - rsq r0.w, r0.w - mul r17.xyz, r0.wwww, r17.xyzx - movc r17.xyz, r0.xxxx, r17.xyzx, r14.xyzx - mad r18.xyz, r3.xyzx, r3.wwww, r17.xyzx - dp3 r0.x, r18.xyzx, r18.xyzx - max r0.x, r0.x, l(0.0000610351562) - rsq r0.x, r0.x - mul r18.xyz, r0.xxxx, r18.xyzx - dp3_sat r11.y, r17.xyzx, r6.xyzx - dp3_sat r0.x, r6.xyzx, r18.xyzx - min r11.z, r0.z, l(1.000000) - mul r0.w, r11.w, r11.w - mul r0.w, r0.w, r0.w - mad r1.w, r0.x, r0.w, -r0.x - mad r0.x, r1.w, r0.x, l(1.000000) - dp3_sat r1.w, r5.xyzx, r18.xyzx - add r1.w, -r1.w, l(1.000000) - mul r4.w, r1.w, r1.w - mul r4.w, r4.w, r4.w - mul r5.w, r1.w, r4.w - add r6.w, -r11.w, l(1.000000) - mad r7.w, -r6.w, l(0.383026), l(-0.0761947036) - mad r7.w, r6.w, r7.w, l(1.049970) - mad r6.w, r6.w, r7.w, l(0.409255) - min r6.w, r6.w, l(0.999000) - add r7.w, -r6.w, l(1.000000) - add r17.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r17.xyz, r17.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx - mad r1.w, -r4.w, r1.w, l(1.000000) - mad r18.xyz, r7.xyzx, r1.wwww, r5.wwww - mul r0.x, r0.x, r0.x - div r0.x, r0.w, r0.x - mad r15.zw, -r11.zzzy, r0.wwww, r11.zzzy - mad r15.zw, r15.zzzw, r11.zzzy, r0.wwww - sqrt r15.zw, r15.zzzw - mul r15.zw, r11.yyyz, r15.zzzw - add r0.w, r15.w, r15.z - add r0.w, r0.w, l(0.000100) - div r0.w, l(0.500000), r0.w - mul r0.x, r0.w, r0.x - mul r18.xyz, r0.xxxx, r18.xyzx - min r18.xyz, r18.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r19.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.x, r19.xyxx, t13.xyzw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r0.w, r19.zwzz, t13.yzwx, s1, l(0.000000) - mul r0.x, r0.w, r0.x - mul r0.x, r6.w, r0.x - div r0.x, r0.x, r7.w - mul r19.xyz, r17.xyzx, r17.xyzx - mul r19.xyz, r0.xxxx, r19.xyzx - mad r17.xyz, -r17.xyzx, r7.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r17.xyz, r19.xyzx, r17.xyzx - add r17.xyz, r17.xyzx, r18.xyzx - mul r17.xyz, r17.xyzx, cb5[4].xxxx - // === Glass Fix: Reduce sun specular intensity === - lt r37.x, l(0.500000), cb13[13].z - if_nz r37.x - mul r17.xyz, r17.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - endif - max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r17.xyz, r17.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - max r0.x, r10.w, l(0.010000) - div r17.xyz, r17.xyzx, r0.xxxx - min r17.xyz, r17.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r18.xyz, r9.xywx, r11.yyyy - mad r17.xyz, r17.xyzx, r11.yyyy, r18.xyzx - mul r17.xyz, r17.xyzx, cb5[1].xyzx - mov r16.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r16.yzw, r16.xyxx, t12.wxyz, s1, cb0[108].x - add r0.x, -r16.x, l(1.000000) - mad r16.xyz, r17.xyzx, r16.yzwy, -r17.xyzx - mad r16.xyz, r0.xxxx, r16.xyzx, r17.xyzx -else - mov r16.xyz, l(0,0,0,0) -endif -mul r0.xw, r15.xxxy, l(0.031250, 0.000000, 0.000000, 0.031250) -round_ni r0.xw, r0.xxxw -mad r0.x, r0.w, cb4[1].y, r0.x -mul r0.x, r0.x, l(8.000000) -ftoi r0.x, r0.x -mad r0.w, -cb0[85].y, cb4[2].w, r13.z -round_ni r0.w, r0.w -add r1.w, l(-1.000000), cb4[1].w -max r4.w, r0.w, l(0.000000) -min r1.w, r1.w, r4.w -mul r4.w, r1.w, l(8.000000) -ftoi r4.w, r4.w -ge r0.w, r1.w, r0.w -iadd r1.w, r4.w, cb0[110].y -min r11.x, r0.z, l(1.000000) -mul r0.z, r11.w, r11.w -add r4.w, -r11.w, l(1.000000) -mad r5.w, -r4.w, l(0.383026), l(-0.0761947036) -mad r5.w, r4.w, r5.w, l(1.049970) -mad r4.w, r4.w, r5.w, l(0.409255) -min r4.w, r4.w, l(0.999000) -add r5.w, -r4.w, l(1.000000) -add r17.xyz, -r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r17.xyz, r17.xyzx, l(0.0476190485, 0.0476190485, 0.0476190485, 0.000000), r7.xyzx -mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r6.w, r11.yzyy, t13.yzwx, s1, l(0.000000) -mad r18.xyz, -r17.xyzx, r5.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r17.xyz, r17.xyzx, r17.xyzx -mov r19.w, l(1.000000) -mov r20.y, l(1.000000) -mov r21.z, r11.w -mov r22.xyz, l(0,0,0,0) -mov r7.w, l(1.000000) -mov r8.w, l(0) -loop - ilt r9.z, l(7), r8.w - breakc_nz r9.z - iadd r9.z, r0.x, r8.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r9.z, r9.z, l(0), t0.xxxx - iadd r11.y, r1.w, r8.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.y, r11.y, l(0), t0.xxxx - and r9.z, r9.z, r11.y - and r9.z, r0.w, r9.z - ishl r11.y, r8.w, l(5) - mov r23.xyz, l(0,0,0,0) - mov r11.z, r7.w - mov r12.w, r9.z - loop - breakc_z r12.w - firstbit_lo r14.w, r12.w - ishl r15.z, l(1), r14.w - xor r15.z, r12.w, r15.z - iadd r14.w, r11.y, r14.w - bfi r24.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r14.wwww, l(1, 3, 5, 6) - bfi r15.w, l(29), l(3), r14.w, l(7) - ftou r16.w, cb5[r24.z + 6].w - ieq r16.w, r16.w, l(1) - if_nz r16.w - add r19.xyz, r1.xyzx, -cb5[r24.x + 6].xyzx - and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r24.z + 6].xzyx - and r26.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb5[r24.w + 6].yxzy - ushr r27.xyz, cb5[r24.z + 6].xzyx, l(16, 16, 16, 0) - ushr r28.xyz, cb5[r24.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyz, r26.xyzx - f16tof32 r27.xyz, r27.xyzx - f16tof32 r28.xyw, r28.yxyz - mov r29.xz, r25.xxzx - mov r29.yw, r27.xxxz - dp4 r16.w, r19.xyzw, r29.xyzw - mov r27.x, r25.y - mov r27.z, r26.y - mov r27.w, r28.x - dp4 r17.w, r19.xyzw, r27.xyzw - mov r28.xz, r26.xxzx - dp4 r18.w, r19.xyzw, r28.xyzw - max r16.w, |r16.w|, |r17.w| - max r16.w, |r18.w|, r16.w - mad r17.w, cb5[r15.w + 6].x, l(0.500000), l(0.500000) - add r16.w, r16.w, -r17.w - mad r17.w, -cb5[r15.w + 6].x, l(0.500000), l(0.500000) - div_sat r16.w, r16.w, r17.w - add r16.w, -r16.w, l(1.000000) - mul r16.w, r16.w, r16.w - else - mov r16.w, l(1.000000) - endif - lt r17.w, l(0.500000), cb5[r24.y + 6].z - lt r18.w, r16.w, l(0.001000) - or r18.w, r17.w, r18.w - if_nz r18.w - mov r12.w, r15.z - continue - endif - ishl r18.w, r14.w, l(3) - bfi r14.w, l(29), l(3), r14.w, l(2) - lt r19.x, cb5[r18.w + 6].w, l(1.500000) - if_nz r19.x - mad r19.x, cb5[r14.w + 6].y, l(0.500000), l(0.500000) - add r19.x, r19.x, -|cb5[r14.w + 6].x| - add r19.y, -r19.x, cb5[r14.w + 6].y - add r20.z, -|r19.x|, l(1.000000) - add r20.z, -|r19.y|, r20.z - max r20.z, r20.z, l(0.000488281250) - ge r20.w, cb5[r14.w + 6].x, l(0.000000) - movc r19.z, r20.w, r20.z, -r20.z - dp3 r20.z, r19.xyzx, r19.xyzx - rsq r20.z, r20.z - mul r19.xyz, r19.xyzx, r20.zzzz - add r25.xyz, -r1.xyzx, cb5[r24.x + 6].xyzx - dp3 r20.z, r25.xyzx, r25.xyzx - rsq r20.w, r20.z - mul r26.xyz, r20.wwww, r25.xyzx - ftoi r21.w, cb5[r15.w + 6].w - mul r27.xyz, r19.xyzx, cb5[r14.w + 6].zzzz - mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - ftou r22.w, cb5[r18.w + 6].w - and r22.w, r22.w, l(1) - ieq r23.w, r22.w, l(0) - not r23.w, r23.w - lt r24.z, l(0.000000), cb5[r14.w + 6].z - and r23.w, r23.w, r24.z - dp3 r24.z, r28.xyzx, r28.xyzx - sqrt r24.z, r24.z - dp3 r25.w, r29.xyzx, r29.xyzx - sqrt r25.w, r25.w - dp3 r26.w, r6.xyzx, r28.xyzx - div r26.w, r26.w, r24.z - dp3 r27.w, r6.xyzx, r29.xyzx - div r27.w, r27.w, r25.w - add r26.w, r26.w, r27.w - mul_sat r30.x, r26.w, l(0.500000) - dp3 r26.w, r28.xyzx, r29.xyzx - mad r24.z, r24.z, r25.w, r26.w - mad r24.z, r24.z, l(0.500000), l(1.000000) - div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r24.z - dp3_sat r20.x, r6.xyzx, r26.xyzx - movc r21.xy, r23.wwww, r30.xyxx, r20.xyxx - lt r20.x, cb5[r24.w + 6].w, l(0.000000) - if_nz r20.x - mul r20.x, cb5[r24.x + 6].w, cb5[r24.x + 6].w - mul r20.x, r20.x, r20.z - mad r20.x, -r20.x, r20.x, l(1.000000) - max r20.x, r20.x, l(0.000000) - add r20.z, r20.z, l(1.000000) - div r20.z, l(1.000000, 1.000000, 1.000000, 1.000000), r20.z - and r24.z, r23.w, l(0x3f800000) - add r25.w, -r20.z, r21.y - mad r20.z, r24.z, r25.w, r20.z - mul r20.x, r20.x, r20.x - mul r20.x, r20.x, r20.z - else - mul r29.xyz, r25.xyzx, cb5[r24.x + 6].wwww - dp3 r20.z, r29.xyzx, r29.xyzx - min r20.z, r20.z, l(1.000000) - add r20.z, -r20.z, l(1.000000) - log r20.z, r20.z - mul r20.z, r20.z, cb5[r24.w + 6].w - exp r20.z, r20.z - mul r20.x, r20.z, r21.y - endif - dp3 r19.x, r26.xyzx, -r19.xyzx - add r19.x, r19.x, -cb5[r14.w + 6].z - mul_sat r19.x, r19.x, cb5[r14.w + 6].w - mul r19.x, r19.x, r19.x - movc r19.x, r22.w, l(1.000000), r19.x - mul r19.x, r19.x, r20.x - not r19.y, r23.w - ige r19.z, r21.w, l(0) - and r19.y, r19.z, r19.y - if_nz r19.y - if_z r22.w - ishl r19.y, r21.w, l(2) - mul r29.xyz, r1.yyyy, cb7[r19.y + 33].xywx - mad r29.xyz, cb7[r19.y + 32].xywx, r1.xxxx, r29.xyzx - mad r29.xyz, cb7[r19.y + 34].xywx, r1.zzzz, r29.xyzx - add r29.xyz, r29.xyzx, cb7[r19.y + 35].xywx - div_sat r19.yz, r29.xxyx, r29.zzzz - mad r19.yz, r19.yyzy, cb7[r21.w + 0].zzwz, cb7[r21.w + 0].xxyx - else - ishl r20.x, r21.w, l(2) - dp3 r29.x, -r25.xyzx, cb7[r20.x + 32].xyzx - dp3 r29.y, -r25.xyzx, cb7[r20.x + 33].xyzx - dp3 r29.z, -r25.xyzx, cb7[r20.x + 34].xyzx - lt r20.x, |r29.x|, |r29.y| - and r20.x, r20.x, l(1) - dp2 r20.z, |r29.xyxx|, icb[r20.x + 0].xyxx - lt r20.z, r20.z, |r29.z| - movc r20.x, r20.z, l(2), r20.x - dp3 r20.z, r29.xyzx, icb[r20.x + 0].xyzx - lt r20.z, r20.z, l(0.000000) - bfi r20.x, l(31), l(1), r20.x, r20.z - ushr r20.z, r20.x, l(1) - dp3 r20.z, r29.xyzx, icb[r20.z + 0].xyzx - div r21.y, l(0.000244140625), cb7[r21.w + 0].w - add r21.y, -r21.y, l(0.500000) - utof r24.z, r20.x - ult r25.x, r20.x, l(2) - and r25.x, r25.x, l(2) - dp2 r25.x, r29.xzxx, icb[r25.x + 0].xzxx - mul r25.x, r25.x, icb[r20.x + 4].z - div r25.x, r25.x, |r20.z| - mad r24.z, r25.x, r21.y, r24.z - add r24.z, r24.z, l(0.500000) - mul_sat r25.x, r24.z, l(0.166666672) - iadd r24.z, l(-1), icb[r20.x + 4].y - dp2 r24.z, r29.yzyy, icb[r24.z + 0].xyxx - mul r20.x, r24.z, icb[r20.x + 4].w - div r20.x, r20.x, |r20.z| - mad_sat r25.y, -r20.x, r21.y, l(0.500000) - mad r19.yz, r25.xxyx, cb7[r21.w + 0].zzwz, cb7[r21.w + 0].xxyx - endif - sample_l_indexable(texture2d)(float,float,float,float) r19.y, r19.yzyy, t21.yxzw, s1, l(0.000000) - mul r19.x, r19.y, r19.x - endif - lt r19.y, l(0.000000), r19.x - if_nz r19.y - if_z r22.w - ftoi r19.z, cb5[r24.y + 6].x - else - add r25.xyz, r1.xyzx, -cb5[r24.x + 6].xyzx - lt r29.xyz, |r25.yzzy|, |r25.xxyx| - and r20.x, r29.y, r29.x - lt r25.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx - ushr r20.z, cb5[r14.w + 6].w, l(24) - ubfe r21.yw, l(0, 8, 0, 8), l(0, 16, 0, 8), cb5[r14.w + 6].wwww - movc r20.z, r25.x, r20.z, r21.y - and r21.y, l(255), cb5[r14.w + 6].w - movc r21.y, r25.y, r21.w, r21.y - ubfe r21.w, l(8), l(8), cb5[r24.y + 6].x - and r22.w, l(255), cb5[r24.y + 6].x - movc r21.w, r25.z, r21.w, r22.w - movc r21.y, r29.z, r21.y, r21.w - movc r20.x, r20.x, r20.z, r21.y - ilt r20.z, r20.x, l(80) - movc r19.z, r20.z, r20.x, l(-1) - endif - mad r25.xyz, r26.xyzx, cb6[r19.z + 288].xxxx, r1.xyzx - mul r20.x, l(5.000000), cb6[r19.z + 288].y - mad r25.xyz, r6.xyzx, r20.xxxx, r25.xyzx - ishl r20.x, r19.z, l(2) - mul r29.xyzw, r25.yyyy, cb6[r20.x + 65].xyzw - mad r29.xyzw, cb6[r20.x + 64].xyzw, r25.xxxx, r29.xyzw - mad r25.xyzw, cb6[r20.x + 66].xyzw, r25.zzzz, r29.xyzw - add r25.xyzw, r25.xyzw, cb6[r20.x + 67].xyzw - div r25.xyz, r25.xyzx, r25.wwww - ge r29.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.xyzx - ge r30.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r20.xz, -cb6[r19.z + 344].xxyx, cb6[r19.z + 344].zzwz - mad r20.xz, r25.xxyx, r20.xxzx, cb6[r19.z + 344].xxyx - mad r21.yw, r20.xxxz, cb6[400].zzzw, l(0.000000, 0.500000, 0.000000, 0.500000) - round_ni r21.yw, r21.yyyw - mad r20.xz, r20.xxzx, cb6[400].zzwz, -r21.yywy - add r31.xyzw, r20.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r32.xyzw, r31.xxzz, r31.xxzz - add r25.xy, -r20.xzxx, l(1.000000, 1.000000, 0.000000, 0.000000) - min r31.xz, r20.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r33.xy, r20.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r34.xy, r25.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r33.xy, -r33.xyxx, r33.xyxx, r31.ywyy - add r33.xy, r33.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r33.xy, r33.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r32.xz, r32.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r20.xz, r32.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r20.xxzx - mul r35.xy, r20.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r20.xz, -r31.xxzx, r31.xxzx, r25.xxyx - add r20.xz, r20.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) - mul r36.xy, r20.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r20.xz, r31.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) - mov r35.z, r36.x - mov r35.w, r20.x - mov r34.z, r33.x - mov r34.w, r32.x - add r31.xyzw, r34.zwxz, r35.zwxz - mov r36.z, r35.y - mov r36.w, r20.z - mov r33.z, r34.y - mov r33.w, r32.z - add r25.xyw, r33.zyzw, r36.zyzw - div r32.xyz, r34.xzwx, r31.zwyz - add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r32.xyz, r32.xyzx, cb6[400].xxxx - div r33.xyz, r33.zywz, r25.xywx - add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r33.xyw, r33.xyxz, cb6[400].yyyy - mul r34.xyzw, r25.xxxy, r31.zwyz - mov r32.w, r33.x - mad r35.xyzw, r21.ywyw, cb6[400].xyxy, r32.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r35.xyxx, t9.xxxx, s4, r25.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r35.zwzz, t9.xxxx, s4, r25.z - mul r20.z, r20.z, r34.y - mad r20.x, r34.x, r20.x, r20.z - mad r34.xy, r21.ywyy, cb6[400].xyxx, r32.zwzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r34.xyxx, t9.xxxx, s4, r25.z - mad r20.x, r34.z, r20.z, r20.x - mov r33.z, r32.x - mad r35.xyzw, r21.ywyw, cb6[400].xyxy, r33.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r35.xyxx, t9.xxxx, s4, r25.z - mad r20.x, r34.w, r20.z, r20.x - mul r34.xyzw, r25.yyww, r31.xyzw - mov r33.xz, r32.yyzy - mad r32.xyzw, r21.ywyw, cb6[400].xyxy, r33.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r32.xyxx, t9.xxxx, s4, r25.z - mad r20.x, r34.x, r20.z, r20.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r32.zwzz, t9.xxxx, s4, r25.z - mad r20.x, r34.y, r20.z, r20.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.z, r35.zwzz, t9.xxxx, s4, r25.z - mad r20.x, r34.z, r20.z, r20.x - ige r20.z, r19.z, l(0) - or r29.xyz, r29.xyzx, r30.xyzx - or r22.w, r29.y, r29.x - or r22.w, r29.z, r22.w - and r24.z, r25.z, l(0x7fffffff) - ult r24.z, l(0x7f800000), r24.z - or r22.w, r22.w, r24.z - mad r29.xyzw, r21.ywyw, cb6[400].xyxy, r33.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.y, r29.xyxx, t9.xxxx, s4, r25.z - mad r20.x, r34.w, r21.y, r20.x - mul r21.y, r25.w, r31.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r29.zwzz, t9.xxxx, s4, r25.z - mad r20.x, r21.y, r21.w, r20.x - add r20.x, r20.x, l(-1.000000) - mad r19.z, cb6[r19.z + 288].w, r20.x, l(1.000000) - movc r19.z, r22.w, l(1.000000), r19.z - movc r19.z, r20.z, r19.z, l(1.000000) - else - mov r19.z, l(1.000000) - endif - if_nz r23.w - dp3 r20.x, r14.xyzx, r27.xyzx - mul_sat r20.z, r20.w, cb5[r14.w + 6].z - mad r20.z, r20.z, l(0.500000), r0.z - min r20.z, r20.z, l(1.000000) - div r20.z, r0.z, r20.z - mad r25.xyz, r14.xyzx, r20.xxxx, -r27.xyzx - dp3 r21.y, r28.xyzx, r25.xyzx - mul r20.x, r20.x, r20.x - mad r20.x, cb5[r14.w + 6].z, cb5[r14.w + 6].z, -r20.x - div_sat r20.x, r21.y, r20.x - mad r25.xyz, r27.xyzx, r20.xxxx, r28.xyzx - dp3 r20.x, r25.xyzx, r25.xyzx - rsq r20.x, r20.x - mul r26.xyz, r20.xxxx, r25.xyzx - else - mov r20.z, l(1.000000) - endif - if_nz r19.y - mul_sat r19.y, r20.w, cb5[r15.w + 6].y - mad r25.xyz, r3.xyzx, r3.wwww, r26.xyzx - dp3 r20.x, r25.xyzx, r25.xyzx - max r20.x, r20.x, l(0.0000610351562) - rsq r20.x, r20.x - mul r25.xyz, r20.xxxx, r25.xyzx - dp3_sat r20.x, r6.xyzx, r25.xyzx - dp3_sat r20.w, r5.xyzx, r25.xyzx - lt r21.y, l(0.000000), r19.y - mul r19.y, r19.y, r19.y - mad r21.w, r20.w, l(3.600000), l(0.400000) - div r19.y, r19.y, r21.w - mad r19.y, r11.w, r11.w, r19.y - min r19.y, r19.y, l(1.000000) - movc r19.y, r21.y, r19.y, r0.z - mul r19.y, r19.y, r19.y - mad r21.y, r20.x, r19.y, -r20.x - mad r20.x, r21.y, r20.x, l(1.000000) - add r20.w, -r20.w, l(1.000000) - mul r21.y, r20.w, r20.w - mul r21.y, r21.y, r21.y - mul r21.w, r20.w, r21.y - mad r20.w, -r21.y, r20.w, l(1.000000) - mad r25.xyz, r7.xyzx, r20.wwww, r21.wwww - mul r20.x, r20.x, r20.x - div r20.x, r19.y, r20.x - mul r20.x, r20.z, r20.x - mad r20.z, -r11.x, r19.y, r11.x - mad r20.z, r20.z, r11.x, r19.y - sqrt r20.z, r20.z - mad r20.w, -r21.x, r19.y, r21.x - mad r19.y, r20.w, r21.x, r19.y - sqrt r19.y, r19.y - mul r19.y, r11.x, r19.y - mad r19.y, r21.x, r20.z, r19.y - add r19.y, r19.y, l(0.000100) - div r19.y, l(0.500000), r19.y - mul r19.y, r19.y, r20.x - mul r20.xzw, r19.yyyy, r25.xxyz - min r20.xzw, r20.xxzw, l(2048.000000, 0.000000, 2048.000000, 2048.000000) - mad r21.yw, r21.xxxz, l(0.000000, 0.968750, 0.000000, 0.968750), l(0.000000, 0.015625, 0.000000, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r19.y, r21.ywyy, t13.yxzw, s1, l(0.000000) - mul r19.y, r6.w, r19.y - mul r19.y, r4.w, r19.y - div r19.y, r19.y, r5.w - mul r25.xyz, r17.xyzx, r19.yyyy - div r25.xyz, r25.xyzx, r18.xyzx - add r20.xzw, r20.xxzw, r25.xxyz - mul r20.xzw, r20.xxzw, cb5[r15.w + 6].zzzz - max r20.xzw, r20.xxzw, l(0.000000, 0.000000, 0.000000, 0.000000) - min r20.xzw, r20.xxzw, l(1000.000000, 0.000000, 1000.000000, 1000.000000) - mul r25.xyz, r9.xywx, r21.xxxx - mad r20.xzw, r20.xxzw, r21.xxxx, r25.xxyz - mul r21.xyw, r19.xxxx, cb5[r18.w + 6].xyxz - mul r19.xyz, r19.zzzz, r21.xywx - mul r19.xyz, r16.wwww, r19.xyzx - mul r19.xyz, r19.xyzx, r20.xzwx - else - mov r19.xyz, l(0,0,0,0) - endif - else - if_z r17.w - mad r16.w, cb5[r14.w + 6].y, l(0.500000), l(0.500000) - add r25.x, r16.w, -|cb5[r14.w + 6].x| - add r25.y, -r25.x, cb5[r14.w + 6].y - add r16.w, -|r25.x|, l(1.000000) - add r16.w, -|r25.y|, r16.w - max r16.w, r16.w, l(0.000488281250) - ge r17.w, cb5[r14.w + 6].x, l(0.000000) - movc r25.z, r17.w, r16.w, -r16.w - dp3 r16.w, r25.xyzx, r25.xyzx - rsq r16.w, r16.w - mul r20.xzw, r16.wwww, r25.xxyz - add r21.xyw, -r1.xyxz, cb5[r24.x + 6].xyxz - dp3 r16.w, r21.xywx, r21.xywx - rsq r17.w, r16.w - mul r25.xyz, r17.wwww, r21.xywx - ftoi r15.w, cb5[r15.w + 6].w - mul r26.xyz, r20.xzwx, cb5[r14.w + 6].zzzz - mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r21.xywx - mad r26.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r21.xywx - ftou r17.w, cb5[r18.w + 6].w - and r17.w, r17.w, l(1) - ieq r18.w, r17.w, l(0) - not r18.w, r18.w - lt r22.w, l(0.000000), cb5[r14.w + 6].z - and r18.w, r18.w, r22.w - dp3 r22.w, r27.xyzx, r27.xyzx - sqrt r22.w, r22.w - dp3 r23.w, r26.xyzx, r26.xyzx - sqrt r23.w, r23.w - dp3 r24.z, r27.xyzx, r26.xyzx - mad r22.w, r22.w, r23.w, r24.z - mad r22.w, r22.w, l(0.500000), l(1.000000) - div r22.w, l(1.000000, 1.000000, 1.000000, 1.000000), r22.w - movc r22.w, r18.w, r22.w, l(1.000000) - lt r23.w, cb5[r24.w + 6].w, l(0.000000) - if_nz r23.w - mul r23.w, cb5[r24.x + 6].w, cb5[r24.x + 6].w - mul r23.w, r16.w, r23.w - mad r23.w, -r23.w, r23.w, l(1.000000) - max r23.w, r23.w, l(0.000000) - add r16.w, r16.w, l(1.000000) - div r16.w, l(1.000000, 1.000000, 1.000000, 1.000000), r16.w - and r24.z, r18.w, l(0x3f800000) - add r25.w, -r16.w, r22.w - mad r16.w, r24.z, r25.w, r16.w - mul r23.w, r23.w, r23.w - mul r16.w, r16.w, r23.w - else - mul r26.xyz, r21.xywx, cb5[r24.x + 6].wwww - dp3 r23.w, r26.xyzx, r26.xyzx - min r23.w, r23.w, l(1.000000) - add r23.w, -r23.w, l(1.000000) - log r23.w, r23.w - mul r23.w, r23.w, cb5[r24.w + 6].w - exp r23.w, r23.w - mul r16.w, r22.w, r23.w - endif - dp3 r20.x, r25.xyzx, -r20.xzwx - add r20.x, r20.x, -cb5[r14.w + 6].z - mul_sat r20.x, r20.x, cb5[r14.w + 6].w - mul r20.x, r20.x, r20.x - movc r20.x, r17.w, l(1.000000), r20.x - mul r16.w, r16.w, r20.x - not r18.w, r18.w - ige r20.x, r15.w, l(0) - and r18.w, r18.w, r20.x - if_nz r18.w - if_z r17.w - ishl r18.w, r15.w, l(2) - mul r20.xzw, r1.yyyy, cb7[r18.w + 33].xxyw - mad r20.xzw, cb7[r18.w + 32].xxyw, r1.xxxx, r20.xxzw - mad r20.xzw, cb7[r18.w + 34].xxyw, r1.zzzz, r20.xxzw - add r20.xzw, r20.xxzw, cb7[r18.w + 35].xxyw - div_sat r20.xz, r20.xxzx, r20.wwww - mad r20.xz, r20.xxzx, cb7[r15.w + 0].zzwz, cb7[r15.w + 0].xxyx - else - ishl r18.w, r15.w, l(2) - dp3 r26.x, -r21.xywx, cb7[r18.w + 32].xyzx - dp3 r26.y, -r21.xywx, cb7[r18.w + 33].xyzx - dp3 r26.z, -r21.xywx, cb7[r18.w + 34].xyzx - lt r18.w, |r26.x|, |r26.y| - and r18.w, r18.w, l(1) - dp2 r20.w, |r26.xyxx|, icb[r18.w + 0].xyxx - lt r20.w, r20.w, |r26.z| - movc r18.w, r20.w, l(2), r18.w - dp3 r20.w, r26.xyzx, icb[r18.w + 0].xyzx - lt r20.w, r20.w, l(0.000000) - bfi r18.w, l(31), l(1), r18.w, r20.w - ushr r20.w, r18.w, l(1) - dp3 r20.w, r26.xyzx, icb[r20.w + 0].xyzx - div r21.x, l(0.000244140625), cb7[r15.w + 0].w - add r21.x, -r21.x, l(0.500000) - utof r21.y, r18.w - ult r21.w, r18.w, l(2) - and r21.w, r21.w, l(2) - dp2 r21.w, r26.xzxx, icb[r21.w + 0].xzxx - mul r21.w, r21.w, icb[r18.w + 4].z - div r21.w, r21.w, |r20.w| - mad r21.y, r21.w, r21.x, r21.y - add r21.y, r21.y, l(0.500000) - mul_sat r27.x, r21.y, l(0.166666672) - iadd r21.y, l(-1), icb[r18.w + 4].y - dp2 r21.y, r26.yzyy, icb[r21.y + 0].xyxx - mul r18.w, r21.y, icb[r18.w + 4].w - div r18.w, r18.w, |r20.w| - mad_sat r27.y, -r18.w, r21.x, l(0.500000) - mad r20.xz, r27.xxyx, cb7[r15.w + 0].zzwz, cb7[r15.w + 0].xxyx - endif - sample_l_indexable(texture2d)(float,float,float,float) r15.w, r20.xzxx, t21.yzwx, s1, l(0.000000) - mul r16.w, r15.w, r16.w - endif - lt r15.w, l(0.000000), r16.w - if_nz r15.w - if_z r17.w - ftoi r15.w, cb5[r24.y + 6].x - else - add r20.xzw, r1.xxyz, -cb5[r24.x + 6].xxyz - lt r21.xyw, |r20.zwzw|, |r20.xxxz| - and r16.w, r21.y, r21.x - lt r20.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xxzw - ushr r17.w, cb5[r14.w + 6].w, l(24) - ubfe r21.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb5[r14.w + 6].wwww - movc r17.w, r20.x, r17.w, r21.x - and r14.w, l(255), cb5[r14.w + 6].w - movc r14.w, r20.z, r21.y, r14.w - ubfe r18.w, l(8), l(8), cb5[r24.y + 6].x - and r20.x, l(255), cb5[r24.y + 6].x - movc r18.w, r20.w, r18.w, r20.x - movc r14.w, r21.w, r14.w, r18.w - movc r14.w, r16.w, r17.w, r14.w - ilt r16.w, r14.w, l(80) - movc r15.w, r16.w, r14.w, l(-1) - endif - mad r20.xzw, r25.xxyz, cb6[r15.w + 288].xxxx, r1.xxyz - mul r14.w, l(5.000000), cb6[r15.w + 288].y - mad r20.xzw, r6.xxyz, r14.wwww, r20.xxzw - ishl r14.w, r15.w, l(2) - mul r24.xyzw, r20.zzzz, cb6[r14.w + 65].xyzw - mad r24.xyzw, cb6[r14.w + 64].xyzw, r20.xxxx, r24.xyzw - mad r24.xyzw, cb6[r14.w + 66].xyzw, r20.wwww, r24.xyzw - add r24.xyzw, r24.xyzw, cb6[r14.w + 67].xyzw - div r20.xzw, r24.xxyz, r24.wwww - ge r21.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xzxw - ge r24.xyz, r20.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r25.xy, -cb6[r15.w + 344].xyxx, cb6[r15.w + 344].zwzz - mad r20.xz, r20.xxzx, r25.xxyx, cb6[r15.w + 344].xxyx - mad r25.xy, r20.xzxx, cb6[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r25.xy, r25.xyxx - mad r20.xz, r20.xxzx, cb6[400].zzwz, -r25.xxyx - add r26.xyzw, r20.xxzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r27.xyzw, r26.xxzz, r26.xxzz - add r25.zw, -r20.xxxz, l(0.000000, 0.000000, 1.000000, 1.000000) - min r26.xz, r20.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r28.xy, r20.xzxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r29.xy, r25.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy - add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r20.xz, r27.yywy, l(0.500000, 0.000000, 0.500000, 0.000000), -r20.xxzx - mul r30.xy, r20.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r20.xz, -r26.xxzx, r26.xxzx, r25.zzwz - add r20.xz, r20.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) - mul r31.xy, r20.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r20.xz, r26.yywy, l(0.160000, 0.000000, 0.160000, 0.000000) - mov r30.z, r31.x - mov r30.w, r20.x - mov r29.z, r28.x - mov r29.w, r27.x - add r26.xyzw, r29.zwxz, r30.zwxz - mov r31.z, r30.y - mov r31.w, r20.z - mov r28.z, r29.y - mov r28.w, r27.z - add r27.xyz, r28.zywz, r31.zywz - div r29.xyz, r29.xzwx, r26.zwyz - add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r29.xyz, r29.xyzx, cb6[400].xxxx - div r28.xyz, r28.zywz, r27.xyzx - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyw, r28.xyxz, cb6[400].yyyy - mul r30.xyzw, r26.zwyz, r27.xxxy - mov r29.w, r28.x - mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r29.xwyw - sample_c_lz_indexable(texture2d)(float,float,float,float) r14.w, r31.xyxx, t9.xxxx, s4, r20.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r31.zwzz, t9.xxxx, s4, r20.w - mul r16.w, r16.w, r30.y - mad r14.w, r30.x, r14.w, r16.w - mad r20.xz, r25.xxyx, cb6[400].xxyx, r29.zzwz - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r20.xzxx, t9.xxxx, s4, r20.w - mad r14.w, r30.z, r16.w, r14.w - mov r28.z, r29.x - mad r31.xyzw, r25.xyxy, cb6[400].xyxy, r28.zyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r31.xyxx, t9.xxxx, s4, r20.w - mad r14.w, r30.w, r16.w, r14.w - mul r30.xyzw, r26.xyzw, r27.yyzz - mov r28.xz, r29.yyzy - mad r29.xyzw, r25.xyxy, cb6[400].xyxy, r28.xyzy - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r29.xyxx, t9.xxxx, s4, r20.w - mad r14.w, r30.x, r16.w, r14.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r29.zwzz, t9.xxxx, s4, r20.w - mad r14.w, r30.y, r16.w, r14.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r31.zwzz, t9.xxxx, s4, r20.w - mad r14.w, r30.z, r16.w, r14.w - ige r16.w, r15.w, l(0) - or r21.xyw, r21.xyxw, r24.xyxz - or r17.w, r21.y, r21.x - or r17.w, r21.w, r17.w - and r18.w, r20.w, l(0x7fffffff) - ult r18.w, l(0x7f800000), r18.w - or r17.w, r17.w, r18.w - mad r24.xyzw, r25.xyxy, cb6[400].xyxy, r28.xwzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r24.xyxx, t9.xxxx, s4, r20.w - mad r14.w, r30.w, r18.w, r14.w - mul r18.w, r26.y, r27.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r24.zwzz, t9.xxxx, s4, r20.w - mad r14.w, r18.w, r20.x, r14.w - add r14.w, r14.w, l(-1.000000) - mad r14.w, cb6[r15.w + 288].w, r14.w, l(1.000000) - movc r14.w, r17.w, l(1.000000), r14.w - movc r14.w, r16.w, r14.w, l(1.000000) - else - mov r14.w, l(1.000000) - endif - else - mov r14.w, l(1.000000) - endif - mul r11.z, r11.z, r14.w - mov r19.xyz, l(0,0,0,0) - endif - add r23.xyz, r19.xyzx, r23.xyzx - mov r12.w, r15.z - endloop - mov r7.w, r11.z - add r22.xyz, r22.xyzx, r23.xyzx - iadd r8.w, r8.w, l(1) -endloop -// === Glass Fix: Reduce clustered lights and overall brightness === -lt r37.x, l(0.500000), cb13[13].z -if_nz r37.x - mul r22.xyz, r22.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - mul r2.xyz, r2.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) -endif -dp3 r0.x, r2.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -add r1.xzw, -r0.xxxx, r2.xxyz -mad r0.xzw, cb0[184].wwww, r1.xxzw, r0.xxxx -mad r1.xzw, r22.xxyz, r7.wwww, r16.xxyz -mul r2.xyz, cb2[20].zzzz, cb2[21].xyzx -add r3.x, -r10.w, l(1.000000) -add r3.y, l(1.000000), -cb2[20].y -max r3.y, r3.y, l(0.010000) -div_sat r3.x, r3.x, r3.y -mad r2.xyz, r8.xyzx, r2.xyzx, -r1.xzwx -mad r1.xzw, r3.xxxx, r2.xxyz, r1.xxzw -mad r0.xzw, r0.xxzw, cb0[184].xxyz, r1.xxzw -mad r1.x, r1.y, cb0[156].w, cb0[157].w -mad r1.z, r2.w, cb0[154].w, -cb0[153].w -max r1.xz, r1.xxzx, l(0.010000, 0.000000, 0.000000, 0.000000) -mul r1.w, r1.x, l(-1.442695) -exp r1.w, r1.w -add r1.w, -r1.w, l(1.000000) -div r1.x, r1.w, r1.x -mad r1.w, r1.y, cb0[156].w, cb0[158].w -mul r1.w, r1.w, l(1.442695) -exp r1.w, r1.w -mul r1.x, r1.w, r1.x -mul r1.x, r1.x, -r1.z -mul r1.xzw, r1.xxxx, cb0[155].xxyz -mul r1.xzw, r1.xxzw, l(1.442695, 0.000000, 1.442695, 1.442695) -exp r1.xzw, r1.xxzw -dp3 r2.x, -r5.xyzx, cb0[154].xyzx -mad r2.y, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.z, r2.xxxx, cb0[155].wwww -add r2.y, -r2.z, r2.y -lt r2.z, l(0.000000), cb0[163].z -if_nz r2.z - and r13.w, l(7), cb0[108].w - imad r3.xyz, r13.xywx, l(0x0019660d, 0x0019660d, 0x0019660d, 0), l(0x3c6ef35f, 0x3c6ef35f, 0x3c6ef35f, 0) - imad r2.z, r3.y, r3.z, r3.x - imad r3.x, r3.z, r2.z, r3.y - imad r3.y, r2.z, r3.x, r3.z - imad r6.x, r3.x, r3.y, r2.z - dp3 r2.z, -r5.xyzx, -r4.xyzx - add r3.z, r1.y, -cb0[44].y - lt r3.w, l(5.960464478E-08), r2.z - div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z - and r2.z, r2.z, r3.w - mul r2.z, r2.z, cb0[163].w - div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r2.w - mul r4.x, r2.z, r3.w - mad r4.y, r4.x, r3.z, cb0[44].y - mad r3.z, -r4.x, r3.z, r3.z - mul r4.x, r3.z, cb0[159].z - mul r3.z, r3.z, cb0[162].x - max r3.z, r3.z, l(-127.000000) - add r4.z, r4.y, -cb0[159].x - mul r4.z, r4.z, cb0[159].z - max r4.xz, r4.xxzx, l(-127.000000, 0.000000, -127.000000, 0.000000) - exp r4.z, -r4.z - mul r4.z, r4.z, cb0[159].y - lt r4.w, l(5.960464478E-08), |r4.x| - exp r5.x, -r4.x - add r5.x, -r5.x, l(1.000000) - div r5.x, r5.x, r4.x - mad r4.x, -r4.x, l(0.240226507), l(0.693147182) - movc r4.x, r4.w, r5.x, r4.x - add r4.y, r4.y, -cb0[162].z - mul r4.y, r4.y, cb0[162].x - max r4.y, r4.y, l(-127.000000) - exp r4.y, -r4.y - mul r4.y, r4.y, cb0[162].y - lt r4.w, l(5.960464478E-08), |r3.z| - exp r5.x, -r3.z - add r5.x, -r5.x, l(1.000000) - div r5.x, r5.x, r3.z - mad r3.z, -r3.z, l(0.240226507), l(0.693147182) - movc r3.z, r4.w, r5.x, r3.z - mul r3.z, r3.z, r4.y - mad r3.z, r4.z, r4.x, r3.z - mad r2.z, -r2.z, r3.w, l(1.000000) - mul r2.z, r2.w, r2.z - mul r2.z, r2.z, r3.z - exp r2.z, -r2.z - min r2.z, r2.z, l(1.000000) - max r2.z, r2.z, cb0[161].w - mad_sat r3.zw, r2.wwww, cb0[160].yyyw, cb0[160].xxxz - add r2.z, r2.z, r3.z - add r2.z, r3.w, r2.z - min r2.z, r2.z, l(1.000000) - imad r6.y, r3.y, r6.x, r3.x - ushr r3.xy, r6.xyxx, l(16, 16, 0, 0) - utof r3.xy, r3.xyxx - mad r3.xy, r3.xyxx, l(0.0000305180438, 0.0000305180438, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mad r3.xy, r3.xyxx, cb0[167].wwww, r15.xyxx - mul r3.xy, r3.xyxx, cb0[165].xyxx - mad r3.w, r13.z, cb0[164].x, cb0[164].y - log r3.w, r3.w - mul r3.w, r3.w, cb0[164].z - div r3.z, r3.w, cb0[163].z - sample_l_indexable(texture3d)(float,float,float,float) r3.xyzw, r3.xyzx, t20.xyzw, s1, l(0.000000) - add r4.x, r13.z, -cb0[166].z - mul_sat r4.x, r4.x, l(1000000.000000) - add r3.xyzw, r3.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r3.xyzw, r4.xxxx, r3.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r4.x, -r2.z, l(1.000000) - mul r4.xyz, r4.xxxx, cb0[161].xyzx - mad r3.xyz, r4.xyzx, r3.wwww, r3.xyzx - mul r2.z, r2.z, r3.w -else - add r1.y, r1.y, -cb0[44].y - mul r3.w, r1.y, cb0[159].z - max r3.w, r3.w, l(-127.000000) - mul r1.y, r1.y, cb0[162].x - max r1.y, r1.y, l(-127.000000) - add r4.x, cb0[44].y, -cb0[159].x - mul r4.x, r4.x, cb0[159].z - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[159].y - lt r4.y, l(5.960464478E-08), |r3.w| - exp r4.z, -r3.w - add r4.z, -r4.z, l(1.000000) - div r4.z, r4.z, r3.w - mad r3.w, -r3.w, l(0.240226507), l(0.693147182) - movc r3.w, r4.y, r4.z, r3.w - add r4.y, cb0[44].y, -cb0[162].z - mul r4.y, r4.y, cb0[162].x - max r4.y, r4.y, l(-127.000000) - exp r4.y, -r4.y - mul r4.y, r4.y, cb0[162].y - lt r4.z, l(5.960464478E-08), |r1.y| - exp r4.w, -r1.y - add r4.w, -r4.w, l(1.000000) - div r4.w, r4.w, r1.y - mad r1.y, -r1.y, l(0.240226507), l(0.693147182) - movc r1.y, r4.z, r4.w, r1.y - mul r1.y, r1.y, r4.y - mad r1.y, r4.x, r3.w, r1.y - mul r1.y, r2.w, r1.y - exp r1.y, -r1.y - min r1.y, r1.y, l(1.000000) - max r1.y, r1.y, cb0[161].w - mad_sat r4.xy, r2.wwww, cb0[160].ywyy, cb0[160].xzxx - add r1.y, r1.y, r4.x - add r1.y, r4.y, r1.y - min r2.z, r1.y, l(1.000000) - add r1.y, -r2.z, l(1.000000) - mul r3.xyz, r1.yyyy, cb0[161].xyzx -endif -mul r4.xyz, r1.xzwx, r2.zzzz -mad r1.y, r2.x, r2.x, l(1.000000) -mul r1.y, r1.y, l(0.0596831031) -mad r5.xyz, cb0[156].xyzx, r1.yyyy, cb0[158].xyzx -mad r1.y, -cb0[155].w, cb0[155].w, l(1.000000) -mul r2.x, r2.y, l(12.566371) -sqrt r2.y, r2.y -mul r2.x, r2.y, r2.x -max r2.x, r2.x, l(0.001000) -div r1.y, r1.y, r2.x -mad_sat r2.xyw, cb0[157].xyxz, r1.yyyy, r5.xyxz -mul r2.xyw, r2.xyxw, l(255.000000, 255.000000, 0.000000, 255.000000) -add r1.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r1.xyz, r1.xyzx, r2.xywx -mad r1.xyz, r1.xyzx, r2.zzzz, r3.xyzx -// === Glass Transparency Fix === -lt r37.x, l(0.500000), cb13[13].z -if_nz r37.x - add r37.xyz, -r4.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r37.xyz, r37.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r4.xyzx - mul r38.xyz, r1.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000) - mad r10.xyz, r0.xzwx, r37.xyzx, r38.xyzx -else - mad r10.xyz, r0.xzwx, r4.xyzx, r1.xyzx -endif -mul r0.xz, r12.xxyx, l(0.500000, 0.000000, -0.500000, 0.000000) -sqrt r0.xz, |r0.xxzx| -sqrt r0.xz, r0.xxzx -mov r12.z, -r12.y -lt r1.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r12.xzxx -lt r1.zw, r12.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000) -iadd r1.xy, -r1.xyxx, r1.zwzz -itof r1.xy, r1.xyxx -mul r0.xz, r0.xxzx, r1.xxyx -mad r0.xz, r0.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000) -add r0.y, r0.y, l(-0.100000024) -lt r0.w, l(0.000000), r0.y -lt r0.y, r0.y, l(0.000000) -iadd r0.y, -r0.w, r0.y -itof r0.y, r0.y -mov_sat r0.y, r0.y -add r1.xy, -r0.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mad r0.xy, r0.yyyy, r1.xyxx, r0.xzxx -min o1.xy, r0.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) -dp3 r0.x, r10.xyzx, l(0.212672904, 0.715152204, 0.072175, 0.000000) -mul r0.x, r10.w, r0.x -max r0.x, r10.w, r0.x -mul_sat r0.x, r0.x, l(10.000000) -lt r0.x, l(0.500000), r0.x -and o1.z, r0.x, l(0x3f800000) -// === Glass Highlight Compression === -lt r37.x, l(0.500000), cb13[13].z -if_nz r37.x - dp3 r37.y, r10.xyzx, l(0.212600, 0.715200, 0.072200, 0.000000) - lt r37.z, l(0.500000), r37.y - if_nz r37.z - add r37.w, r37.y, l(-0.500000) - mul r37.w, r37.w, l(-0.666667) - exp r37.w, r37.w - add r37.w, -r37.w, l(1.000000) - mad r37.w, r37.w, l(1.500000), l(0.500000) - max r38.x, r37.y, l(0.001000) - div r38.x, r37.w, r38.x - mul r10.xyz, r10.xyzx, r38.xxxx - endif -endif -mov o0.xyzw, r10.xyzw -mov o1.w, l(0) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/glass/0xB317E9E1.cso b/src/games/endfield/glass/0xD37F588D.cso similarity index 95% rename from src/games/endfield/glass/0xB317E9E1.cso rename to src/games/endfield/glass/0xD37F588D.cso index dd604e7a66e85182d225dd0e0cf109f5f1ae7c22..bb6c9a468820cca13eb92aad20db3620dc7949ff 100644 GIT binary patch delta 442 zcmZXP!7GDd9LJyEUewCl7TaEIwYRjrhtaHETuA2NqLc&gOR*vc#K}#pq+O)^A~mUz z;h?>*=dz*1d+`^H*@dIxgdvIFd!Xd-e4g*~{e8c`dXhUraz}7=4Rpr7?#AzZh4s;` z>h{ZLA$x1MdTsE=$86Igyx^xpf@gemC{RYXGYqeo))YSJ?68T~jIpJJOk}Kp`I;vv z;9>2=KR?8KT}=R2IOmQM4fi}T;_(vCXKVS0XH)pw;r51pDL3_IX;qsMtzyH1Y|WXDb6O+l zJgrFp2G0-T5FBGqt`ClRI+wD+E^j+I1G+v>OO+Rx{wo#UgU~lvn7FhAkqtovLW4aG%Am=jrkbRL5+Ne!5Ja|^ zR+G=<4k-m;Z)?<2q`j%2GKz?x`-X&QxWD_|?|k2Zo62faS*>|=Y9tWb#6)^4@4Q)s zxr2w~c+nixz#E;{EOGFH-v%2zdq~Yk9cq5hkyi80cHX(KWyUA( zVRQ*R-D&JBT)kODjJJAx|7IW9^($ha*2-r8SVHLl;-TuJ6lx9h_qGT7+W+h39gt{<|iJ{fZxQ7*%-4 NVnPYQ32iC`?gwfMm$Co= diff --git a/src/games/endfield/glass/0xB8941FB1.cso b/src/games/endfield/glass/0xE32D090A.cso similarity index 95% rename from src/games/endfield/glass/0xB8941FB1.cso rename to src/games/endfield/glass/0xE32D090A.cso index 4f1d23e68d2294542a301fb82fa75388e7a63872..23b0f3d14923403a1db6474c560500b3bf5b62c9 100644 GIT binary patch delta 448 zcmZ9Gy-Px26o=n)waDOx#FcAT$}1Uym#_~A8luSdYBI==h9bgh4}xro8Y1FMQ4I}Q zE_HA3WE5geih(VfUK;!Z8iKO6ItC53Jm+`L`<%mD)GbBbB2CPU2iF54%cq9YJC3-f zTzvTrX-a@kz94Ar@Q(YE3~!i{d{DKS#9HEJq0UN(C`O|)BYG#e{z*_0KHltnAB^S(41iM1I_I3xTN0?FxGm< z?5v$~^R`N4>eOD2~Rm325^>uVMmF&Gt%`8RRZ=Rgy zM}0Xe^$76EhXt(^-f&ft;T3l!2fX98VT>)zt3<|NoszqZL1{QO&t6s-JkTl8Z*Gm76MO4HSKLjd*0w zDbIEXF=i`AWwMyJRbS-6Ekl$~hT>L5+MhPq~fG+)y)^=13?`v%5} z&X|dnQZ86jiHt?i=XOE}Pu#K?rv7V1&5hXsX5BWLgQp+DL>b4s3(+)?hq`A-43VMe zYEEP!eDhR6h?~7KK$zDK;s6}-*m0{s1x_;p1o%Vj6sT;RXYyeOr{fOT!p*o%4ATDZ YogiMu8zG30ut5MT6E4{1(}}eB4djxUoB#j- diff --git a/src/games/endfield/glass/0x859412D4.cso b/src/games/endfield/glass/0xF52EED7A.cso similarity index 95% rename from src/games/endfield/glass/0x859412D4.cso rename to src/games/endfield/glass/0xF52EED7A.cso index 7a1aab74a1fabc5fe3bc0936dfd2bd05dc74f2c0..0f12212f521e5b931a1118ae75d7e60a2a6acb4d 100644 GIT binary patch delta 480 zcmZ9HO(;ZB6vyxJe2kBW$>h~|dGlgCdTM6gY!Ia(krb;@N(nPcYL+ZCMzNE0vJzG^ z$ih5#W2UggYHS$H#$slp6#3jJ_q{BzxW9A$_x#SSn@w`rBxma$_H{kjpB8(!+D@F- zqjB)P5ZyMI2cL8@Z@UN*IL1q~zNDRl1RdiyjPg}kS_*II5e0ZfSybR1`$QLf&^hrG z_!~mVa>T(%$TjMcilN$bxW-m#`tOYDk{=+Ax+-C#Y-3%A9A-S0YamT;d1jBA<;XFYDXGxMF9Ma>Nv zGiT_U7WTpcS_1+cVpG87jI&>~5K^p>N>ax9o&^UZAv!zns}7?j37ii|5Xa5H29px)l%6%^jEbi}||2@BR>)!8j_q&|ErMs#5@y7XT?2?^}yC0d?U&q0Fr^C6>rT!b;iBx(0cgaZfIRb9ybuxqtpr zh3P*zJ1zKKxn+BKIp*1rGH5X3QxZ%poS7sJ9 zH>Av*qCsui16x?&6JQ&we6ETZ`$a7wHjU(y9M-qaI2Z|uv-7dwFj|tpDW3!}T=Dfl zoUsJQyjB$b1H7?a{Ie0md4CzisO}elX^>ZljYW3)JoMfN5&Cer53EFwZ_;5M14#v< vxRI3j)n6~H;$_lfGj4JTu{PmLQh*3noqA!722R5nu!C}{9d_tw>NEWt1 0.5f) ? 5.0f : 1.0f; r3.x = cb1[10].x * sunSizeMultiplier * r3.x; // Apply sun size exponent - + r3.x = exp2(r3.x); r3.y = r3.x * r3.x + 1; r3.x = -r3.x * 1.98000002 + 1.98010004; @@ -134,81 +134,81 @@ void main( r5.y = 1.57079637 + -r3.y; r3.yz = r5.xy * float2(0.159099996,0.318300009) + float2(0.5,0.5); r3.y = -cb1[8].w * 0.00277777785 + r3.y; - + // ============================================================================ // CLOUD/ATMOSPHERE TEXTURE SAMPLING // ============================================================================ r4.x = 1 + r3.y; r4.y = r3.z * 2 + -1; - r5.xyzw = t2.SampleBias(s1_s, r4.xy, cb0[108].x).xyzw; - r3.yzw = float3(-0.5,-0.5,-0.5) + r5.xyz; - r5.xyz = r3.yzw * cb1[7].yyy + float3(0.5,0.5,0.5); - r6.xyzw = cb1[5].xyzw * r5.xyzw; - r3.y = max(r6.x, r6.y); + r5.xyzw = t2.SampleBias(s1_s, r4.xy, cb0[108].x).xyzw; + r3.yzw = float3(-0.5,-0.5,-0.5) + r5.xyz; + r5.xyz = r3.yzw * cb1[7].yyy + float3(0.5,0.5,0.5); + r6.xyzw = cb1[5].xyzw * r5.xyzw; + r3.y = max(r6.x, r6.y); r5.xyzw = -r5.xyzw * cb1[5].xyzw + r3.yyyy; - r5.xyzw = cb1[7].xxxx * r5.xyzw + r6.xyzw; - r5.xyzw = cb1[6].xyzw * r5.xyzw; - r3.y = r4.w ? 1.000000 : 0; - r4.x = r5.w * r3.y; + r5.xyzw = cb1[7].xxxx * r5.xyzw + r6.xyzw; + r5.xyzw = cb1[6].xyzw * r5.xyzw; + r3.y = r4.w ? 1.000000 : 0; + r4.x = r5.w * r3.y; r4.x = saturate(r4.x); - + // ============================================================================ // SUN SPECULAR HIGHLIGHT WITH SMOOTHSTEP // ============================================================================ - r3.z = -0.5 + r3.x; - r3.z = saturate(r3.z + r3.z); - r3.w = r3.z * -2 + 3; + r3.z = -0.5 + r3.x; + r3.z = saturate(r3.z + r3.z); + r3.w = r3.z * -2 + 3; r3.z = r3.z * r3.z; - r3.z = r3.w * r3.z; - r3.w = r3.z * r3.x; - r3.x = -r3.z * r3.x + r3.x; - r3.x = cb1[10].y * r3.x + r3.w; - r3.xzw = cb1[9].xyz * r3.xxx; - r3.xzw = cb1[10].www * r3.xzw; - r3.xzw = cb1[11].www * r3.xzw; - r3.xzw = max(float3(0,0,0), r3.xzw); - + r3.z = r3.w * r3.z; + r3.w = r3.z * r3.x; + r3.x = -r3.z * r3.x + r3.x; + r3.x = cb1[10].y * r3.x + r3.w; + r3.xzw = cb1[9].xyz * r3.xxx; + r3.xzw = cb1[10].www * r3.xzw; + r3.xzw = cb1[11].www * r3.xzw; + r3.xzw = max(float3(0,0,0), r3.xzw); + // HDR Sun toggle if (SUN_INTENSITY > 0.5f) { // Calculate sun-view alignment (1 = looking directly at sun center) - float sunDot = saturate(dot(-cb1[11].xyz, -r1.yzw)); - + float sunDot = saturate(dot(-cb1[11].xyz, -r1.yzw)); + // === HORIZON REDDENING === // Sun direction Y component indicates height (-1 = below, 0 = horizon, 1 = zenith) float sunHeight = saturate(cb1[11].y + 0.1f); // Shift so effect starts slightly above horizon - + // Warm shift when sun is low (more red/orange near horizon) float3 horizonTint = lerp(float3(1.0f, 0.6f, 0.3f), // Low sun: warm orange float3(1.0f, 0.95f, 0.9f), // High sun: nearly white sunHeight); - + // === LIMB DARKENING === // Real stars appear darker at edges due to optical depth through atmosphere // Use a soft power curve - center is brightest, edges darken float limbDarkening = pow(sunDot, 0.4f); // Subtle darkening toward edges - + // === CHROMATIC SUN EDGE === // Core is white-hot, edges transition to yellow/orange float3 sunCoreColor = float3(1.0f, 1.0f, 1.0f); // White-hot center float3 sunEdgeColor = float3(1.0f, 0.85f, 0.6f); // Warm yellow edge - + // Blend from edge color to core color based on how centered we are float coreFactor = pow(sunDot, 3.0f); // Sharp transition to white core float3 chromaticColor = lerp(sunEdgeColor, sunCoreColor, coreFactor); - + // === COMBINE SUN DISK === // Apply limb darkening and chromatic color to base sun r3.xzw = r3.xzw * limbDarkening * chromaticColor * horizonTint; - + // Boost the sun intensity for HDR r3.xzw = r3.xzw * 5.0f; - + // === CORONA GLOW === // Inner corona (tight glow) float coronaInner = pow(sunDot, 64.0f); // Outer corona (wide soft glow) float coronaOuter = pow(sunDot, 8.0f); - + // Corona colors - also affected by horizon float3 coronaColorInner = lerp(float3(1.0f, 0.5f, 0.2f), // Warm inner at horizon float3(1.0f, 0.7f, 0.3f), // Normal inner @@ -216,55 +216,55 @@ void main( float3 coronaColorOuter = lerp(float3(1.0f, 0.3f, 0.1f), // Deep orange at horizon float3(1.0f, 0.5f, 0.2f), // Normal outer sunHeight); - - float3 corona = coronaInner * coronaColorInner * 2.0f + + float3 corona = coronaInner * coronaColorInner * 2.0f + coronaOuter * coronaColorOuter * 0.5f; - + // Modulate corona by sun color/intensity from game corona *= cb1[9].xyz * cb1[9].w; corona *= cb1[11].w; // Sun shadow/occlusion - + // Add corona to sun r3.xzw += corona; - + // === DESATURATE SUN (50%) === float sunLuma = dot(r3.xzw, float3(0.2126f, 0.7152f, 0.0722f)); r3.xzw = lerp(r3.xzw, float3(sunLuma, sunLuma, sunLuma), 0.5f); - + // === BLOOM BOOST === r3.xzw *= 10.0f; - + } else { // Vanilla clamp r3.xzw = min(float3(3,3,3), r3.xzw); } - + // Combine skybox, sun specular, and clouds - r2.xyz = r2.xyz * r2.www + r3.xzw; - r3.xzw = r5.xyz * r3.yyy + -r2.xyz; - r2.xyz = r4.xxx * r3.xzw + r2.xyz; - + r2.xyz = r2.xyz * r2.www + r3.xzw; + r3.xzw = r5.xyz * r3.yyy + -r2.xyz; + r2.xyz = r4.xxx * r3.xzw + r2.xyz; + // ============================================================================ // VOLUMETRIC LIGHT SHAFT SYSTEM 1 (conditional) // ============================================================================ - r3.xz = cmp(float2(0.5,0.5) < cb1[20].xy); - if (r3.x != 0) { - r2.w = 1 / cb1[46].x; - r3.x = cb1[46].w + cb1[46].x; + r3.xz = cmp(float2(0.5,0.5) < cb1[20].xy); + if (r3.x != 0) { + r2.w = 1 / cb1[46].x; + r3.x = cb1[46].w + cb1[46].x; r3.w = rsqrt(r0.w); - r4.yzw = r3.www * r0.xyz; - + r4.yzw = r3.www * r0.xyz; + // ============================================================================ // SPHERICAL LIGHT SOURCE INTERSECTION (cb1[23] = light position) // ============================================================================ r3.w = dot(r4.yzw, cb1[23].xyz); - r5.w = cb1[27].x * cb1[27].x + -1; + r5.w = cb1[27].x * cb1[27].x + -1; r5.w = r3.w * r3.w + r5.w; r6.x = max(0, r5.w); r6.x = sqrt(r6.x); - r3.w = -r6.x + r3.w; - r6.xyz = r4.yzw * r3.www + -cb1[23].xyz; - r6.xyz = r6.xyz / cb1[27].xxx; + r3.w = -r6.x + r3.w; + r6.xyz = r4.yzw * r3.www + -cb1[23].xyz; + r6.xyz = r6.xyz / cb1[27].xxx; r3.w = dot(cb1[23].xyz, cb1[23].xyz); r3.w = rsqrt(r3.w); r7.xyz = cb1[23].xyz * r3.www; @@ -529,8 +529,8 @@ void main( r4.yzw = r6.yzw * r3.www + r4.yzw; r2.w = dot(r4.yzw, float3(0.212672904,0.715152204,0.0721750036)); r4.yzw = r4.yzw + -r2.www; - r4.yzw = cb0[184].www * r4.yzw + r2.www; - r2.xyz = r4.yzw * cb0[184].xyz + r2.xyz; + r4.yzw = cb0[186].www * r4.yzw + r2.www; + r2.xyz = r4.yzw * cb0[186].xyz + r2.xyz; } if (r3.z != 0) { r2.w = 1 / cb1[49].x; @@ -884,8 +884,8 @@ void main( } r0.y = dot(r0.xzw, float3(0.212672904,0.715152204,0.0721750036)); r0.xzw = r0.xzw + -r0.yyy; - r0.xyz = cb0[184].www * r0.xzw + r0.yyy; - r0.xyz = cb0[184].xyz * r0.xyz; + r0.xyz = cb0[186].www * r0.xzw + r0.yyy; + r0.xyz = cb0[186].xyz * r0.xyz; r1.xzw = r2.xyz * r1.yyy; r0.w = r2.w * r2.w + 1; r0.w = 0.0596831031 * r0.w; @@ -902,15 +902,15 @@ void main( r2.xyz = r4.xyz * r2.xyz; r2.xyz = r2.xyz * r1.yyy + r3.yzw; o0.xyz = r0.xyz * r1.xzw + r2.xyz; - + // ========================================================================== - // SKYBOX DESATURATION (50%) — Tech Test Look + // SKYBOX DESATURATION (50%) ??? Tech Test Look // ========================================================================== if (TECH_TEST_LOOK > 0.5f) { float skyboxLuma = dot(o0.xyz, float3(0.2126f, 0.7152f, 0.0722f)); o0.xyz = lerp(o0.xyz, float3(skyboxLuma, skyboxLuma, skyboxLuma), 0.5f); } - + r0.x = max(9.99999994e-09, v3.z); r0.xy = v3.xy / r0.xx; r0.z = max(9.99999994e-09, v4.z); @@ -929,4 +929,4 @@ void main( o0.w = 1; o1.zw = float2(0,0); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/others/skybox_0x9E0DE464.ps_5_0.hlsl b/src/games/endfield/others/skybox_0x3710A6A1.ps_5_0.hlsl similarity index 93% rename from src/games/endfield/others/skybox_0x9E0DE464.ps_5_0.hlsl rename to src/games/endfield/others/skybox_0x3710A6A1.ps_5_0.hlsl index 6f51cf4b3c..d9db139dc7 100644 --- a/src/games/endfield/others/skybox_0x9E0DE464.ps_5_0.hlsl +++ b/src/games/endfield/others/skybox_0x3710A6A1.ps_5_0.hlsl @@ -10,7 +10,7 @@ // t1: Environment/fallback sky cubemap lookup // t2: Main skybox texture (4096x2048 equirectangular) // t3: Reflection probe 1 texture -// t4: Reflection probe 2 texture +// t4: Reflection probe 2 texture // t5: Reflection probe 1 detail/tint // t6: Reflection probe 2 detail/tint // ============================================================================ @@ -48,7 +48,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[185]; + float4 cb0[187]; } @@ -79,8 +79,8 @@ void main( r0.w = dot(r0.xyz, r0.xyz); r1.x = max(9.99999994e-09, r0.w); r1.x = rsqrt(r1.x); - r1.yzw = r1.xxx * r0.xyz; - r1.x = r1.x * r0.w; + r1.yzw = r1.xxx * r0.xyz; + r1.x = r1.x * r0.w; // ========================================================================== // OCTAHEDRAL / CUBEMAP UV MAPPING FOR t1 (fallback environment) @@ -92,7 +92,7 @@ void main( r2.x = r1.y * r2.x + -r2.z; r3.xy = float2(1,1) + r2.yx; r2.xy = float2(0.5,0.5) * r3.xy; - r2.xyz = t1.SampleLevel(s0_s, r2.xy, 0).xyz; + r2.xyz = t1.SampleLevel(s0_s, r2.xy, 0).xyz; r2.w = saturate(r1.z * 10 + 1); // ========================================================================== // PROCEDURAL SUN DISK CALCULATION @@ -102,11 +102,11 @@ void main( // cb1[9].xyz = sun color, cb1[9].w = sun intensity r3.x = saturate(dot(-cb1[11].xyz, -r1.yzw)); // Sun-view alignment (1 = looking at sun) r3.x = log2(r3.x); - + // Sun size adjustment: multiply exponent to shrink disk (5.0 = ~80% smaller) float sunSizeMultiplier = (SUN_INTENSITY > 0.5f) ? 5.0f : 1.0f; r3.x = cb1[10].x * sunSizeMultiplier * r3.x; // Apply sun size exponent - + r3.x = exp2(r3.x); r3.y = r3.x * r3.x + 1; // Soft falloff numerator r3.x = -r3.x * 1.98000002 + 1.98010004; // Soft falloff denominator @@ -123,7 +123,7 @@ void main( // ========================================================================== // EQUIRECTANGULAR SKYBOX UV CALCULATION (for t2: 4096x2048) // ========================================================================== - r3.y = r1.y / r1.w; + r3.y = r1.y / r1.w; r3.z = cmp(abs(r3.y) < 1); r3.w = 1 / abs(r3.y); r3.w = r3.z ? abs(r3.y) : r3.w; @@ -147,7 +147,7 @@ void main( r5.x = r3.z * r4.z + r3.y; r3.y = -r3.w * r4.x + 3.14159274; r3.y = r4.w ? r4.y : r3.y; - r5.y = 1.57079637 + -r3.y; + r5.y = 1.57079637 + -r3.y; r3.yz = r5.xy * float2(0.159099996,0.318300009) + float2(0.5,0.5); r3.y = -cb1[8].w * 0.00277777785 + r3.y; r4.x = 1 + r3.y; @@ -162,9 +162,9 @@ void main( r6.xyzw = cb1[5].xyzw * r5.xyzw; r3.y = max(r6.x, r6.y); r5.xyzw = -r5.xyzw * cb1[5].xyzw + r3.yyyy; - r5.xyzw = cb1[7].xxxx * r5.xyzw + r6.xyzw; - r5.xyzw = cb1[6].xyzw * r5.xyzw; - r3.y = r4.w ? 1.000000 : 0; + r5.xyzw = cb1[7].xxxx * r5.xyzw + r6.xyzw; + r5.xyzw = cb1[6].xyzw * r5.xyzw; + r3.y = r4.w ? 1.000000 : 0; r4.x = r5.w * r3.y; r4.x = saturate(r4.x); @@ -184,48 +184,48 @@ void main( r3.xzw = cb1[10].www * r3.xzw; // Sun intensity multiplier r3.xzw = cb1[11].www * r3.xzw; // Sun shadow/occlusion r3.xzw = max(float3(0,0,0), r3.xzw); - + // HDR Sun toggle if (SUN_INTENSITY > 0.5f) { // Calculate sun-view alignment (1 = looking directly at sun center) - float sunDot = saturate(dot(-cb1[11].xyz, -r1.yzw)); - + float sunDot = saturate(dot(-cb1[11].xyz, -r1.yzw)); + // === HORIZON REDDENING === // Sun direction Y component indicates height (-1 = below, 0 = horizon, 1 = zenith) float sunHeight = saturate(cb1[11].y + 0.1f); // Shift so effect starts slightly above horizon - + // Warm shift when sun is low (more red/orange near horizon) float3 horizonTint = lerp(float3(1.0f, 0.6f, 0.3f), // Low sun: warm orange float3(1.0f, 0.95f, 0.9f), // High sun: nearly white sunHeight); - + // === LIMB DARKENING === // Real stars appear darker at edges due to optical depth through atmosphere // Use a soft power curve - center is brightest, edges darken float limbDarkening = pow(sunDot, 0.4f); // Subtle darkening toward edges - + // === CHROMATIC SUN EDGE === // Core is white-hot, edges transition to yellow/orange float3 sunCoreColor = float3(1.0f, 1.0f, 1.0f); // White-hot center float3 sunEdgeColor = float3(1.0f, 0.85f, 0.6f); // Warm yellow edge - + // Blend from edge color to core color based on how centered we are float coreFactor = pow(sunDot, 3.0f); // Sharp transition to white core float3 chromaticColor = lerp(sunEdgeColor, sunCoreColor, coreFactor); - + // === COMBINE SUN DISK === // Apply limb darkening and chromatic color to base sun r3.xzw = r3.xzw * limbDarkening * chromaticColor * horizonTint; - + // Boost the sun intensity for HDR r3.xzw = r3.xzw * 5.0f; - + // === CORONA GLOW === // Inner corona (tight glow) float coronaInner = pow(sunDot, 64.0f); // Outer corona (wide soft glow) float coronaOuter = pow(sunDot, 8.0f); - + // Corona colors - also affected by horizon float3 coronaColorInner = lerp(float3(1.0f, 0.5f, 0.2f), // Warm inner at horizon float3(1.0f, 0.7f, 0.3f), // Normal inner @@ -233,29 +233,29 @@ void main( float3 coronaColorOuter = lerp(float3(1.0f, 0.3f, 0.1f), // Deep orange at horizon float3(1.0f, 0.5f, 0.2f), // Normal outer sunHeight); - - float3 corona = coronaInner * coronaColorInner * 2.0f + + float3 corona = coronaInner * coronaColorInner * 2.0f + coronaOuter * coronaColorOuter * 0.5f; - + // Modulate corona by sun color/intensity from game corona *= cb1[9].xyz * cb1[9].w; corona *= cb1[11].w; // Sun shadow/occlusion - + // Add corona to sun r3.xzw += corona; - + // === DESATURATE SUN (50%) === float sunLuma = dot(r3.xzw, float3(0.2126f, 0.7152f, 0.0722f)); r3.xzw = lerp(r3.xzw, float3(sunLuma, sunLuma, sunLuma), 0.5f); - + // === BLOOM BOOST === r3.xzw *= 10.0f; - + } else { // Vanilla clamp r3.xzw = min(float3(3,3,3), r3.xzw); } - + // Blend environment + sun + skybox r2.xyz = r2.xyz * r2.www + r3.xzw; r3.xzw = r5.xyz * r3.yyy + -r2.xyz; @@ -268,8 +268,8 @@ void main( if (r3.x != 0) { r2.w = rsqrt(r0.w); r4.yzw = r2.www * r0.yxz; - r2.w = dot(r4.zyw, cb1[23].xyz); - r3.x = cb1[27].x * cb1[27].x + -1; + r2.w = dot(r4.zyw, cb1[23].xyz); + r3.x = cb1[27].x * cb1[27].x + -1; r3.x = r2.w * r2.w + r3.x; r3.w = max(0, r3.x); r3.w = sqrt(r3.w); @@ -307,7 +307,7 @@ void main( r2.w = saturate(dot(cb1[25].xyz, r6.xyz)); r2.w = saturate(r2.w * cb1[45].x + cb1[45].z); r6.xyz = t5.SampleBias(s4_s, r7.xy, cb0[108].x).xyz; - r6.xyz = cb1[41].xyz * r6.xyz; + r6.xyz = cb1[41].xyz * r6.xyz; r6.xyz = r8.xyz * r2.www + r6.xyz; r2.w = dot(cb1[23].xyz, cb1[23].xyz); r2.w = rsqrt(r2.w); @@ -319,15 +319,15 @@ void main( r2.w = r2.w ? 1.000000 : 0; r6.xyz = r6.xyz * r2.www; r6.xyz = r6.xyz * r8.www; - r6.xyz = cb1[37].xyz * r6.xyz; + r6.xyz = cb1[37].xyz * r6.xyz; r4.y = saturate(r4.y); r2.w = -1 + r4.y; r2.w = cb1[48].w * r2.w + 1; r4.yzw = r6.xyz * r2.www; r3.x = dot(r4.yzw, float3(0.212672904,0.715152204,0.0721750036)); r4.yzw = r6.xyz * r2.www + -r3.xxx; - r4.yzw = cb0[184].www * r4.yzw + r3.xxx; - r2.xyz = r4.yzw * cb0[184].xyz + r2.xyz; + r4.yzw = cb0[186].www * r4.yzw + r3.xxx; + r2.xyz = r4.yzw * cb0[186].xyz + r2.xyz; } // ========================================================================== @@ -336,8 +336,8 @@ void main( if (r3.z != 0) { r0.w = rsqrt(r0.w); r0.xzw = r0.yxz * r0.www; - r2.w = dot(r0.zxw, cb1[24].xyz); - r3.x = cb1[28].x * cb1[28].x + -1; + r2.w = dot(r0.zxw, cb1[24].xyz); + r3.x = cb1[28].x * cb1[28].x + -1; r3.x = r2.w * r2.w + r3.x; r3.z = max(0, r3.x); r3.z = sqrt(r3.z); @@ -391,9 +391,9 @@ void main( r0.x = saturate(r0.x); r0.x = -1 + r0.x; r0.x = cb1[51].w * r0.x + 1; - r2.xyz = r3.xzw * r0.xxx + r2.xyz; + r2.xyz = r3.xzw * r0.xxx + r2.xyz; } - + // Final skybox blend r0.xzw = r5.xyz * r3.yyy + -r2.xyz; r0.xzw = r4.xxx * r0.xzw + r2.xyz; @@ -416,7 +416,7 @@ void main( r2.xyz = cb0[155].xyz * r2.xxx; r2.xyz = float3(1.44269502,1.44269502,1.44269502) * r2.xyz; r2.xyz = exp2(r2.xyz); - + r2.w = dot(r1.yzw, cb0[154].xyz); r3.x = cb0[155].w * cb0[155].w + 1; r3.y = dot(r2.ww, cb0[155].ww); @@ -425,7 +425,7 @@ void main( // ========================================================================== // VOLUMETRIC FOG SAMPLING (t0: 3D fog volume) // ========================================================================== - r3.y = cmp(0 < cb0[163].z); + r3.y = cmp(0 < cb0[163].z); if (r3.y != 0) { r4.xy = (uint2)v0.xy; r4.z = 7 & asint(cb0[108].w); @@ -540,7 +540,7 @@ void main( r0.y = r0.y + r1.z; r1.y = min(1, r0.y); r0.y = 1 + -r1.y; - r3.yzw = cb0[161].xyz * r0.yyy; + r3.yzw = cb0[161].xyz * r0.yyy; } // ========================================================================== @@ -549,9 +549,9 @@ void main( // Desaturation based on luminance r0.y = dot(r0.xzw, float3(0.212672904,0.715152204,0.0721750036)); // Luminance r0.xzw = r0.xzw + -r0.yyy; - r0.xyz = cb0[184].www * r0.xzw + r0.yyy; // Saturation control - r0.xyz = cb0[184].xyz * r0.xyz; // Color tint/exposure - r1.xzw = r2.xyz * r1.yyy; + r0.xyz = cb0[186].www * r0.xzw + r0.yyy; // Saturation control + r0.xyz = cb0[186].xyz * r0.xyz; // Color tint/exposure + r1.xzw = r2.xyz * r1.yyy; r0.w = r2.w * r2.w + 1; r0.w = 0.0596831031 * r0.w; r4.xyz = cb0[156].xyz * r0.www + cb0[158].xyz; @@ -562,14 +562,14 @@ void main( r2.w = max(0.00100000005, r2.w); r0.w = r0.w / r2.w; r4.xyz = saturate(cb0[157].xyz * r0.www + r4.xyz); - r4.xyz = float3(255,255,255) * r4.xyz; + r4.xyz = float3(255,255,255) * r4.xyz; r2.xyz = float3(1,1,1) + -r2.xyz; r2.xyz = r4.xyz * r2.xyz; - r2.xyz = r2.xyz * r1.yyy + r3.yzw; + r2.xyz = r2.xyz * r1.yyy + r3.yzw; o0.xyz = r0.xyz * r1.xzw + r2.xyz; - + // ========================================================================== - // SKYBOX DESATURATION (50%) — Tech Test Look + // SKYBOX DESATURATION (50%) - Tech Test Look // ========================================================================== if (TECH_TEST_LOOK > 0.5f) { float skyboxLuma = dot(o0.xyz, float3(0.2126f, 0.7152f, 0.0722f)); @@ -583,18 +583,18 @@ void main( r0.xy = v3.xy / r0.xx; r0.z = max(9.99999994e-09, v4.z); r0.zw = v4.xy / r0.zz; - r0.xy = r0.xy + -r0.zw; + r0.xy = r0.xy + -r0.zw; r1.xy = float2(0.5,-0.5) * r0.xy; r1.xy = sqrt(abs(r1.xy)); - r1.xy = sqrt(r1.xy); + r1.xy = sqrt(r1.xy); r0.z = -r0.y; r0.yw = cmp(float2(0,0) < r0.xz); r0.xz = cmp(r0.xz < float2(0,0)); r0.xy = (int2)-r0.yw + (int2)r0.xz; r0.xy = (int2)r0.xy; r0.xy = r1.xy * r0.xy; - o1.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); - o0.w = 1; + o1.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); + o0.w = 1; o1.zw = float2(0,0); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/shadows/0xA4516CE4.ps_5_0.hlsl b/src/games/endfield/shadows/0xCAB28784.ps_5_0.hlsl similarity index 99% rename from src/games/endfield/shadows/0xA4516CE4.ps_5_0.hlsl rename to src/games/endfield/shadows/0xCAB28784.ps_5_0.hlsl index ec17592999..6d3e42fbd1 100644 --- a/src/games/endfield/shadows/0xA4516CE4.ps_5_0.hlsl +++ b/src/games/endfield/shadows/0xCAB28784.ps_5_0.hlsl @@ -318,4 +318,4 @@ void main( o0.x = r2.z; } return; -} \ No newline at end of file +} diff --git a/src/games/endfield/shadows/character-capsule-ao_0xD91A8DD3.ps_5_0.hlsl b/src/games/endfield/shadows/character-capsule-ao_0xB4E7E6D9.ps_5_0.hlsl similarity index 98% rename from src/games/endfield/shadows/character-capsule-ao_0xD91A8DD3.ps_5_0.hlsl rename to src/games/endfield/shadows/character-capsule-ao_0xB4E7E6D9.ps_5_0.hlsl index e5057a3c57..282da5d75a 100644 --- a/src/games/endfield/shadows/character-capsule-ao_0xD91A8DD3.ps_5_0.hlsl +++ b/src/games/endfield/shadows/character-capsule-ao_0xB4E7E6D9.ps_5_0.hlsl @@ -68,34 +68,34 @@ void main( // ========================================================================== r0.xy = cb1[4].zw * v0.xy; // Convert screen position to UV (0-1) r0.zw = r0.xy * float2(2,2) + float2(-1,-1); // Convert to NDC (-1 to 1) - + // ========================================================================== // DEPTH BUFFER SAMPLING & WORLD POSITION RECONSTRUCTION // ========================================================================== r1.x = t0.SampleLevel(s0_s, r0.xy, 0).x; // Sample depth buffer - + // Reconstruct view/world position from depth using inverse projection r2.xyzw = cb0[25].xyzw * -r0.wwww; // Inverse projection row 2 * -NDC.y r2.xyzw = cb0[24].xyzw * r0.zzzz + r2.xyzw; // + Inverse projection row 1 * NDC.x r1.xyzw = cb0[26].xyzw * r1.xxxx + r2.xyzw; // + Inverse projection row 3 * depth r1.xyzw = cb0[27].xyzw + r1.xyzw; // + Inverse projection row 4 (translation) r1.xyz = r1.xyz / r1.www; // Perspective divide -> world position - + // ========================================================================== // CAPSULE LIGHT SETUP // ========================================================================== r0.z = cb1[4].y * 0.5; // Half screen height r0.w = (int)v3.x * 3; // Light data offset (3 float4s per light) r0.z = cb2[r0.w+2].w * r0.z; // Influence radius scaled by screen - + // Calculate capsule center (midpoint between endpoints) r2.xyz = cb2[r0.w+2].xyz + cb2[r0.w+1].xyz; // endpoint1 + endpoint2 r2.xyz = r2.xyz * float3(0.5,0.5,0.5) + -r1.xyz; // Center - worldPos - + // Distance from pixel to capsule center r1.w = dot(r2.xyz, r2.xyz); r1.w = sqrt(r1.w); - + // ========================================================================== // EARLY OUT: CHECK IF PIXEL IS WITHIN INFLUENCE RADIUS // ========================================================================== @@ -106,7 +106,7 @@ void main( // ======================================================================== r0.xy = t2.SampleLevel(s1_s, r0.xy, 0).xy; // Sample encoded normal r0.xy = r0.xy * float2(2,2) + float2(-1,-1); // Decode from 0-1 to -1 to 1 - + // Octahedral normal decoding r2.x = dot(float2(1,1), abs(r0.xy)); // Sum of absolute values r2.y = 1 + -r2.x; // Z component estimation @@ -116,12 +116,12 @@ void main( r3.xy = r3.xy ? float2(1,1) : float2(-1,-1); r3.xy = r3.zw * r3.xy; // Apply sign r2.xz = r2.ww ? r3.xy : r0.xy; // Choose based on hemisphere - + // Normalize the decoded normal r0.x = dot(r2.xyz, r2.xyz); r0.x = rsqrt(r0.x); r2.xyz = r2.xyz * r0.xxx; // Final world normal - + // ======================================================================== // RAY MARCH SETUP ALONG CAPSULE // ======================================================================== @@ -131,12 +131,12 @@ void main( r2.w = ceil(r2.w); r2.w = (uint)r2.w; r2.w = (int)r2.w + -1; // Loop iteration count - + // Calculate step offset along capsule axis r0.x = r0.x * cb2[r0.w+1].w + -cb2[r0.w+1].w; r3.xyz = cb2[r0.w+3].xyz * r0.xxx + cb2[r0.w+1].xyz; // Start position r0.x = cb2[r0.w+1].w + 9.99999975e-06; // Radius + epsilon - + // ======================================================================== // RAY MARCH LOOP - ACCUMULATE SPHERICAL HARMONICS // ======================================================================== @@ -144,11 +144,11 @@ void main( r5.xyzw = float4(0,0,0,0); // Accumulated SH coefficients r6.xyz = r3.xyz; // Current sample position r3.w = 0; // Loop counter - + while (true) { r4.z = cmp((uint)r3.w >= (uint)r2.w); if (r4.z != 0) break; - + // -------------------------------------------------------------------- // Calculate vector from world position to current sample point // -------------------------------------------------------------------- @@ -156,7 +156,7 @@ void main( r4.z = dot(r7.xyz, r7.xyz); r4.z = sqrt(r4.z); // Distance to sample r4.w = dot(r7.xyz, r2.xyz); // Project onto normal direction - + // Check capsule bounds r6.w = cb2[r0.w+1].w + r4.w; // Distance + radius r7.w = cmp(0 >= r4.w); // Behind surface? @@ -164,7 +164,7 @@ void main( r8.y = cmp(r4.z < r0.x); // Within radius? r8.y = r7.w ? r8.y : 0; r8.x = (int)r8.y | (int)r8.x; - + if (r8.x == 0) { // ------------------------------------------------------------------ // CAPSULE INTERSECTION & ATTENUATION CALCULATION @@ -176,7 +176,7 @@ void main( r9.xyz = r2.xyz * cb2[r0.w+1].www + r6.xyz; // Clamp to capsule end r9.xyz = r9.xyz + r8.xyz; r7.xyz = r9.xyz * float3(0.5,0.5,0.5) + -r1.xyz; // Midpoint - worldPos - + // Soft falloff calculation if (r7.w != 0) { r4.w = abs(r4.w) * abs(r4.w); @@ -198,14 +198,14 @@ void main( } else { r4.w = cb2[r0.w+1].w; // Use full radius } - + // ------------------------------------------------------------------ // DIRECTION TO LIGHT SAMPLE (for SH projection) // ------------------------------------------------------------------ r6.w = dot(r7.xyz, r7.xyz); r6.w = rsqrt(r6.w); r7.xyz = r7.yzx * r6.www; // Normalized direction (YZX swizzle for SH) - + // Calculate attenuation based on distance r4.w = r4.w * r4.w; r4.w = r4.z * r4.z + -r4.w; @@ -213,14 +213,14 @@ void main( r4.z = r4.w / r4.z; r4.z = r4.z * 255 + 0.5; // Scale to LUT range r4.x = 0.00390625 * r4.z; // U coordinate (0-1) - + // ------------------------------------------------------------------ // SAMPLE ATTENUATION LUT & COMPUTE SPHERICAL HARMONICS // ------------------------------------------------------------------ r4.xz = t1.SampleLevel(s1_s, r4.xy, 0).zw; // Sample attenuation LUT r8.xy = r4.xz * cb1[1].xy + cb1[1].zw; // Scale and bias r8.yzw = r8.yyy * r7.xyz; // Directional component * intensity - + // Spherical Harmonics basis coefficients: // L0 (constant): Y_0^0 = 0.282094806 (1/(2*sqrt(pi))) // L1 (linear): Y_1^-1, Y_1^0, Y_1^1 = ±0.488602489 (sqrt(3/(4*pi))) @@ -228,15 +228,15 @@ void main( } else { r7.xyzw = float4(0,0,0,0); // No contribution from this sample } - + // Accumulate SH coefficients r5.xyzw = r7.xyzw + r5.xyzw; - + // Move to next sample along capsule r6.xyz = cb2[r0.w+3].xyz * r0.yyy + r6.xyz; r3.w = (int)r3.w + 1; } - + // ======================================================================== // DISTANCE FALLOFF & FINAL OUTPUT // ======================================================================== @@ -246,7 +246,7 @@ void main( r0.x = max(0, r0.x); r0.x = 1 + -r0.x; // Invert (1 at center, 0 at edge) r0.x = cb2[r0.w+3].w * r0.x; // Apply light intensity - + // Output accumulated SH coefficients scaled by intensity o0.xyzw = r5.xyzw * r0.xxxx; } else { @@ -254,4 +254,4 @@ void main( o0.xyzw = float4(0,0,0,0); } return; -} \ No newline at end of file +} diff --git a/src/games/endfield/shadows/character-shadows_0xB8580FF6.ps_5_0.hlsl b/src/games/endfield/shadows/character-shadows_0x68D7EB8E.ps_5_0.hlsl similarity index 97% rename from src/games/endfield/shadows/character-shadows_0xB8580FF6.ps_5_0.hlsl rename to src/games/endfield/shadows/character-shadows_0x68D7EB8E.ps_5_0.hlsl index a4f5568475..d32fb15d68 100644 --- a/src/games/endfield/shadows/character-shadows_0xB8580FF6.ps_5_0.hlsl +++ b/src/games/endfield/shadows/character-shadows_0x68D7EB8E.ps_5_0.hlsl @@ -34,7 +34,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[184]; + float4 cb0[186]; } @@ -315,18 +315,18 @@ void main( if (FAKE_CLOUD_SHADOWS >= 1.f) { r0.w = cmp(0.00100000005 < r0.z); if (r0.w != 0) { - r4.xyz = -cb0[173].xyz + r2.xyz; - r4.yw = cb0[176].xz * r4.yy + r4.xz; - r5.xy = cb0[174].zz * r4.yw; - r5.zw = cb0[183].ww * cb0[175].xy; - r4.yw = r4.yw * cb0[174].zz + r5.zw; + r4.xyz = -cb0[175].xyz + r2.xyz; + r4.yw = cb0[178].xz * r4.yy + r4.xz; + r5.xy = cb0[176].zz * r4.yw; + r5.zw = cb0[185].ww * cb0[177].xy; + r4.yw = r4.yw * cb0[176].zz + r5.zw; r0.w = t3.SampleLevel(s2_s, r4.yw, 0).x; - r4.yw = r5.xy * cb0[175].ww + r5.zw; + r4.yw = r5.xy * cb0[177].ww + r5.zw; r2.w = t3.SampleLevel(s2_s, r4.yw, 0).x; r3.w = dot(r4.xz, r4.xz); r3.w = sqrt(r3.w); - r4.x = cb0[174].y + -cb0[174].x; - r3.w = -cb0[174].x + r3.w; + r4.x = cb0[176].y + -cb0[176].x; + r3.w = -cb0[176].x + r3.w; r4.x = 1 / r4.x; r3.w = saturate(r4.x * r3.w); r4.x = r3.w * -2 + 3; @@ -335,7 +335,7 @@ void main( r2.w = r2.w + -r0.w; r0.w = r3.w * r2.w + r0.w; r0.w = -1 + r0.w; - r0.w = cb0[175].z * r0.w + 1; + r0.w = cb0[177].z * r0.w + 1; r0.z = r0.z * r0.w; } } @@ -427,14 +427,14 @@ void main( } o0.y = r1.w ? r0.y : r0.x; r0.x = min(1, r0.z); - + // Shadow compositing contrast curve: S-curve deepens shadow cores if (SHADOW_HARDENING >= 1.f) { r0.x = r0.x * r0.x * (3.0 - 2.0 * r0.x); // smoothstep(0, 1, r0.x) } - + r0.x = -1 + r0.x; o0.x = cb2[34].x * r0.x + 1; o0.z = 0; return; -} \ No newline at end of file +} diff --git a/src/games/endfield/shadows/shadowcompositing-shadowmap_0x61FA72DD.ps_5_0.hlsl b/src/games/endfield/shadows/shadowcompositing-shadowmap_0xBD36930C.ps_5_0.hlsl similarity index 96% rename from src/games/endfield/shadows/shadowcompositing-shadowmap_0x61FA72DD.ps_5_0.hlsl rename to src/games/endfield/shadows/shadowcompositing-shadowmap_0xBD36930C.ps_5_0.hlsl index 8f5dfc7867..bb8f0c46fd 100644 --- a/src/games/endfield/shadows/shadowcompositing-shadowmap_0x61FA72DD.ps_5_0.hlsl +++ b/src/games/endfield/shadows/shadowcompositing-shadowmap_0xBD36930C.ps_5_0.hlsl @@ -33,7 +33,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[184]; + float4 cb0[186]; } @@ -194,7 +194,7 @@ void main( if (SHADOW_HARDENING >= 1.f) { r0.y *= lerp(0.75, 1.5, saturate((float)r0.z / 3.0)); } - + r0.zw = icb[r0.x+4].xy * float2(1,-1); r4.xy = float2(0,0); r1.z = 0; @@ -359,18 +359,18 @@ void main( if (FAKE_CLOUD_SHADOWS >= 1.f) { r0.y = cmp(0.00100000005 < r0.x); if (r0.y != 0) { - r0.yzw = -cb0[173].xyz + r2.xyz; - r1.xy = cb0[176].xz * r0.zz + r0.yw; - r1.zw = cb0[174].zz * r1.xy; - r2.xy = cb0[183].ww * cb0[175].xy; - r1.xy = r1.xy * cb0[174].zz + r2.xy; + r0.yzw = -cb0[175].xyz + r2.xyz; + r1.xy = cb0[178].xz * r0.zz + r0.yw; + r1.zw = cb0[176].zz * r1.xy; + r2.xy = cb0[185].ww * cb0[177].xy; + r1.xy = r1.xy * cb0[176].zz + r2.xy; r0.z = t2.SampleLevel(s2_s, r1.xy, 0).x; - r1.xy = r1.zw * cb0[175].ww + r2.xy; + r1.xy = r1.zw * cb0[177].ww + r2.xy; r1.x = t2.SampleLevel(s2_s, r1.xy, 0).x; r0.y = dot(r0.yw, r0.yw); r0.y = sqrt(r0.y); - r0.w = cb0[174].y + -cb0[174].x; - r0.y = -cb0[174].x + r0.y; + r0.w = cb0[176].y + -cb0[176].x; + r0.y = -cb0[176].x + r0.y; r0.w = 1 / r0.w; r0.y = saturate(r0.y * r0.w); r0.w = r0.y * -2 + 3; @@ -379,7 +379,7 @@ void main( r0.w = r1.x + -r0.z; r0.y = r0.y * r0.w + r0.z; r0.y = -1 + r0.y; - r0.y = cb0[175].z * r0.y + 1; + r0.y = cb0[177].z * r0.y + 1; r0.x = r0.x * r0.y; } } @@ -389,14 +389,14 @@ void main( r0.x = cb2[35].z; } r0.x = min(1, r0.x); - + // Shadow compositing contrast curve: S-curve deepens shadow cores if (SHADOW_HARDENING >= 1.f) { - r0.x = r0.x * r0.x * (3.0 - 2.0 * r0.x); + r0.x = r0.x * r0.x * (3.0 - 2.0 * r0.x); } - + r0.x = -1 + r0.x; o0.x = cb2[34].x * r0.x + 1; o0.yz = float2(1,0); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/ssr/ssr-denoiser_0xF99BCA96.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-denoiser_0x0C2070DE.cs_5_0.hlsl similarity index 97% rename from src/games/endfield/ssr/ssr-denoiser_0xF99BCA96.cs_5_0.hlsl rename to src/games/endfield/ssr/ssr-denoiser_0x0C2070DE.cs_5_0.hlsl index 35be5fc904..98152c6722 100644 --- a/src/games/endfield/ssr/ssr-denoiser_0xF99BCA96.cs_5_0.hlsl +++ b/src/games/endfield/ssr/ssr-denoiser_0x0C2070DE.cs_5_0.hlsl @@ -1,10 +1,10 @@ #include "../shared.h" -Texture2D t3 : register(t3); -Texture2D t2 : register(t2); -Texture2D t1 : register(t1); -Texture2D t0 : register(t0); +Texture2D t3 : register(t3); +Texture2D t2 : register(t2); +Texture2D t1 : register(t1); +Texture2D t0 : register(t0); SamplerState s0_s : register(s0); @@ -200,4 +200,4 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.xyzw = max(float4(0.00100000005,0.00100000005,0.00100000005,0.00100000005), r0.xyzw); u0[vThreadID.xy] = r0.xyzw; return; -} \ No newline at end of file +} diff --git a/src/games/endfield/ssr/ssr-temporal2_0x953D811E.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-temporal2_0x953D811E.cs_5_0.hlsl new file mode 100644 index 0000000000..dcf04f2110 --- /dev/null +++ b/src/games/endfield/ssr/ssr-temporal2_0x953D811E.cs_5_0.hlsl @@ -0,0 +1,395 @@ +#include "../shared.h" + +float cmp(bool value) { return value ? -1.0f : 0.0f; } +float2 cmp(bool2 value) { return float2(cmp(value.x), cmp(value.y)); } +float3 cmp(bool3 value) { return float3(cmp(value.x), cmp(value.y), cmp(value.z)); } +float4 cmp(bool4 value) { return float4(cmp(value.x), cmp(value.y), cmp(value.z), cmp(value.w)); } + +float select_nonzero(float condition, float when_true, float when_false) { + return condition != 0.0f ? when_true : when_false; +} +float2 select_nonzero(float2 condition, float2 when_true, float2 when_false) { + return float2(select_nonzero(condition.x, when_true.x, when_false.x), + select_nonzero(condition.y, when_true.y, when_false.y)); +} +float3 select_nonzero(float3 condition, float3 when_true, float3 when_false) { + return float3(select_nonzero(condition.x, when_true.x, when_false.x), + select_nonzero(condition.y, when_true.y, when_false.y), + select_nonzero(condition.z, when_true.z, when_false.z)); +} +float4 select_nonzero(float4 condition, float4 when_true, float4 when_false) { + return float4(select_nonzero(condition.x, when_true.x, when_false.x), + select_nonzero(condition.y, when_true.y, when_false.y), + select_nonzero(condition.z, when_true.z, when_false.z), + select_nonzero(condition.w, when_true.w, when_false.w)); +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[85]; +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[6]; +} + +SamplerState s0_s : register(s0); + +Texture2D t0 : register(t0); + +Texture2D t1 : register(t1); + +Texture2D t2 : register(t2); + +Texture2D t3 : register(t3); + +Texture2D t4 : register(t4); + +Texture2D t5 : register(t5); + +RWTexture2D u0 : register(u0); + +RWTexture2D u1 : register(u1); + +RWTexture2D u2 : register(u2); + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) +{ + float4 r0 = 0; + float4 r1 = 0; + float4 r2 = 0; + float4 r3 = 0; + float4 r4 = 0; + float4 r5 = 0; + float4 r6 = 0; + float4 r7 = 0; + float4 r8 = 0; + float4 r9 = 0; + float4 r10 = 0; + float4 r11 = 0; + float4 r12 = 0; + float4 r13 = 0; + r0.xy = float2(vThreadID.xy); + r0.xy = r0.xy + float2(0.500000, 0.500000); + r0.zw = r0.xy * cb1[0].zw; + r1.xy = r0.zw * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); + r2.x = t0.SampleLevel(s0_s, r0.zw, 0.000000).x; + r3.xyzw = r1.xxxx * cb0[24].xyzw; + r4.xyzw = cb0[25].xyzw * -r1.yyyy + r3.xyzw; + r2.xyzw = cb0[26].xyzw * r2.xxxx + r4.xyzw; + r2.xyzw = r2.xyzw + cb0[27].xyzw; + r1.z = t1.SampleLevel(s0_s, r0.zw, 0.000000).x; + r5.x = cb0[84].z * r1.z + cb0[84].w; + r4.xyzw = cb0[26].xyzw * r1.zzzz + r4.xyzw; + r4.xyzw = r4.xyzw + cb0[27].xyzw; + r6.xyzw = r1.yyyy * cb0[13].xyzw; + r6.xyzw = cb0[12].xyzw * r1.xxxx + r6.xyzw; + r6.xyzw = cb0[14].xyzw * r1.zzzz + r6.xyzw; + r6.xyzw = r6.xyzw + cb0[15].xyzw; + r6.xyz = r6.xyz / r6.www; + r5.yzw = t2.SampleLevel(s0_s, r0.zw, 0.000000).xyz; + r7.xyz = t3.SampleLevel(s0_s, r0.zw, 0.000000).xyz; + r2.xyz = r2.xyz / r2.www; + r4.xyz = r4.xyz / r4.www; + r2.xyz = r2.xyz + -r4.xyz; + r2.x = dot(r2.xyz, r2.xyz); + r2.x = sqrt(r2.x); + r2.x = r2.x * 10.000000; + r2.x = min(r2.x, 1.000000); + r2.yzw = -r5.yzw + r7.xyz; + r2.xyz = r2.xxx * r2.yzw + r5.yzw; + r2.xy = r2.xy * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); + r2.w = dot(float2(1.000000, 1.000000), abs(r2.xy)); + r4.y = -r2.w + 1.000000; + r2.w = cmp(r4.y < 0.000000); + r5.yzw = cmp(r2.xyz >= float3(0.000000, 0.000000, 0.300000)); + r7.xy = -abs(r2.yx) + float2(1.000000, 1.000000); + r5.yz = select_nonzero(r5.yz, float2(1.000000, 1.000000), float2(-1.000000, -1.000000)); + r5.yz = r5.yz * r7.xy; + r4.xz = select_nonzero(r2.ww, r5.yz, r2.xy); + r2.x = dot(r4.xyz, r4.xyz); + r2.x = rsqrt(r2.x); + r2.xyw = r2.xxx * r4.xyz; + r4.x = r2.z * r2.z; + r4.x = r4.x * r4.x; + r4.yzw = r2.yyy * cb0[1].xyz; + r4.yzw = cb0[0].xyz * r2.xxx + r4.yzw; + r4.yzw = cb0[2].xyz * r2.www + r4.yzw; + r5.yz = float2(-0.070000, 0.020000) / r5.xx; + r5.y = r5.y * 1.442695; + r5.y = exp2(r5.y); + r5.y = r5.y + r5.y; + r5.y = max(r5.y, 0.125000); + r5.y = min(r5.y, 1.000000); + r5.y = r5.y * cb1[3].x; + r5.y = ceil(r5.y); + r5.y = max(r5.y, (shader_injection.improved_ssr >= 0.5f) ? 256.0f : 32.0f); + r7.x = r5.y * 0.125000; + r5.y = select_nonzero(r5.w, r7.x, r5.y); + r6.w = -r6.y; + r5.w = dot(r6.xzw, r6.xzw); + r5.w = rsqrt(r5.w); + r6.xyz = r5.www * r6.xwz; + r5.w = dot(r6.xyz, r4.yzw); + r6.w = r5.w + r5.w; + r4.yzw = r4.yzw * -r6.www + r6.xyz; + r6.xyzw = r4.zzzz * cb0[9].xyzw; + r6.xyzw = cb0[8].xyzw * r4.yyyy + r6.xyzw; + r6.xyzw = cb0[10].xyzw * r4.wwww + r6.xyzw; + r1.w = 1.000000; + r6.xyzw = r6.xyzw * float4(1.000000, -1.000000, 1.000000, 1.000000) + r1.xyzw; + r4.yzw = r6.xyz / r6.www; + r4.yzw = -r1.xyz + r4.yzw; + r1.w = dot(r4.yz, r4.yz); + r1.w = sqrt(r1.w); + r6.x = r1.w * 0.500000; + r6.yz = r1.xy * r6.xx + r4.yz; + r6.yz = -r1.ww * float2(0.500000, 0.500000) + abs(r6.yz); + r6.yz = max(r6.yz, float2(0.000000, 0.000000)); + r6.yz = r6.yz / abs(r4.yz); + r6.yz = -r6.yz + float2(1.000000, 1.000000); + r1.w = min(r6.z, r6.y); + r1.w = r1.w / r6.x; + r4.yzw = r1.www * r4.yzw; + r1.w = abs(r4.w) / r5.y; + r1.w = max(r1.w, 0.000100); + r6.x = 1.000000 / r5.y; + r4.yzw = r4.yzw * float3(0.500000, 0.500000, 1.000000); + r4.yzw = r6.xxx * r4.yzw; + r6.xy = r4.yz * cb1[0].xy; + r6.x = max(abs(r6.y), abs(r6.x)); + r6.y = cmp(r6.x < 1.000000); + r6.x = r6.x + 0.001000; + r6.x = 1.000000 / r6.x; + r6.z = trunc(cb1[1].x); + r0.xy = r6.zz * float2(2.083000, 4.867000) + r0.xy; + r0.x = dot(r0.xy, float2(0.067111, 0.005837)); + r0.x = frac(r0.x); + r0.x = r0.x * 52.982918; + r0.x = frac(r0.x); + r0.x = select_nonzero(r6.y, r6.x, r0.x); + r6.xyz = r1.xyz * float3(0.500000, 0.500000, 1.000000) + float3(0.500000, 0.500000, 0.000000); + r6.xyz = r4.yzw * r0.xxx + r6.xyz; + r0.x = t1.SampleLevel(s0_s, r6.xy, 0.000000).x; + r0.x = -r0.x + r6.z; + r7.xyz = float3(0, 0, 0); + r8.xyz = float3(0, 0, 0); + r9.xyz = r6.xyz; + r0.y = 0; + r1.x = 0; + r6.w = r0.x; + while (true) { + r7.w = cmp(r1.x < r5.y); + if (r7.w != 0) { + r10.xyzw = r4.yzyz * float4(1.000000, 1.000000, 2.000000, 2.000000) + r9.xyxy; + r11.xyzw = r4.yzyz * float4(3.000000, 3.000000, 4.000000, 4.000000) + r9.xyxy; + r12.xyzw = r4.wwww * float4(1.000000, 2.000000, 3.000000, 4.000000) + r9.zzzz; + r13.x = t1.SampleLevel(s0_s, r10.xy, 0.000000).x; + r13.y = t1.SampleLevel(s0_s, r10.zw, 0.000000).x; + r13.z = t1.SampleLevel(s0_s, r11.xy, 0.000000).x; + r13.w = t1.SampleLevel(s0_s, r11.zw, 0.000000).x; + r10.xyzw = r12.xyzw + -r13.xyzw; + r11.xyzw = r1.wwww + r10.xyzw; + r11.xyzw = cmp(abs(r11.xyzw) < r1.wwww); + r12.xy = asfloat(asuint(r11.zw) | asuint(r11.xy)); + r7.w = asfloat(asuint(r12.y) | asuint(r12.x)); + if (r7.w != 0) { + r12.xy = select_nonzero(r11.zz, r10.zy, r10.wz); + r10.yz = select_nonzero(r11.yy, r10.yx, r12.xy); + r7.w = select_nonzero(r11.x, r10.x, r10.y); + r8.w = select_nonzero(r11.x, r6.w, r10.z); + r9.w = select_nonzero(r11.z, 2.000000, 3.000000); + r9.w = select_nonzero(r11.y, 1.000000, r9.w); + r9.w = select_nonzero(r11.x, 0, r9.w); + r7.w = -r7.w + r8.w; + r7.w = saturate(r8.w / r7.w); + r7.w = r7.w + r9.w; + r10.xyz = r4.yzw * r7.www + r9.xyz; + r0.y = -1; + r8.xyz = r10.xyz; + break; + } + r9.xyz = r4.yzw * float3(4.000000, 4.000000, 4.000000) + r9.xyz; + r1.x = r1.x + 4.000000; + r7.xyz = r9.xyz; + r0.y = 0; + r6.w = r10.w; + continue; + } else { + r8.xyz = r7.xyz; + r0.y = 0; + break; + } + r0.y = 0; + } + if (r0.y != 0) { + r0.x = max(r8.y, r8.x); + r0.x = -r0.x + 1.000000; + r0.y = min(r8.y, r8.x); + r0.x = min(r0.y, r0.x); + r1.xw = t4.SampleLevel(s0_s, r8.xy, 0.000000).xy; + r4.yz = abs(r1.xw) * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); + r4.yz = r4.yz * r4.yz; + r4.yz = r4.yz * r4.yz; + r1.xw = r1.xw + float2(-0.500000, -0.500000); + r6.xy = cmp(float2(0.000000, 0.000000) < r1.xw); + r1.xw = cmp(r1.xw < float2(0.000000, 0.000000)); + r1.xw = int2(-r6.xy) + int2(r1.xw); + r1.xw = float2(r1.xw); + r1.xw = r1.xw * r4.yz; + r0.y = 1.000000 + -cb1[2].z; + r4.yz = r0.yy * r1.xw; + r4.w = cmp(cb1[1].y < r0.x); + r0.x = saturate(r0.x / cb1[1].y); + r0.x = select_nonzero(r4.w, 1.000000, r0.x); + r4.w = saturate(abs(r5.w) * cb1[1].z + cb1[1].w); + r4.w = -r4.w + 1.000000; + r0.x = r0.x * r4.w; + r2.z = cmp(r2.z < 0.100000); + r4.w = 1.000000 / r5.x; + r4.w = -r4.w + 100.000000; + r4.w = saturate(r4.w * 0.100000); + r2.z = select_nonzero(r2.z, 1.000000, r4.w); + r0.x = r0.x * r2.z; + r1.xw = -r1.xw * r0.yy + r8.xy; + } else { + r4.yz = float2(0, 0); + r1.xw = r0.zw; + r0.x = 0; + } + r5.xy = t4.SampleLevel(s0_s, r1.xw, 0.000000).xy; + r6.xy = abs(r5.xy) * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); + r6.xy = r6.xy * r6.xy; + r0.y = 2.000000 / r4.x; + r0.y = r0.y + -1.000000; + r0.y = 1.000000 / r0.y; + r0.y = r0.y * -2.035047; + r0.y = exp2(r0.y); + r2.z = -r0.y + 1.000000; + r2.z = sqrt(r2.z); + r4.w = r0.y * -0.018729 + 0.074261; + r4.w = r4.w * r0.y + -0.212114; + r0.y = r4.w * r0.y + 1.570729; + r0.y = r2.z * r0.y; + r3.xyzw = cb0[25].xyzw * r1.yyyy + r3.xyzw; + r3.xyzw = cb0[26].xyzw * r1.zzzz + r3.xyzw; + r3.xyzw = r3.xyzw + cb0[27].xyzw; + r3.xyzw = r3.xyzw / r3.wwww; + r1.yz = r8.xy * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); + r7.xyzw = r1.zzzz * cb0[25].xyzw; + r7.xyzw = cb0[24].xyzw * r1.yyyy + r7.xyzw; + r7.xyzw = cb0[26].xyzw * r8.zzzz + r7.xyzw; + r7.xyzw = r7.xyzw + cb0[27].xyzw; + r8.xyz = -r3.xyz + cb0[44].xyz; + r1.y = dot(r8.xyz, r8.xyz); + r1.z = rsqrt(r1.y); + r9.xyz = r1.zzz * r8.xyz; + r1.y = sqrt(r1.y); + r2.z = cmp(abs(r2.w) < 0.999000); + r10.z = select_nonzero(r2.z, 0, 1.000000); + r10.y = asfloat(asuint(r2.z) & 0x3f800000u); + r10.x = 0; + r11.xyz = r2.xyw * r10.xyz; + r10.xyz = r10.zxy * r2.ywx + -r11.xyz; + r2.z = dot(r10.xyz, r10.xyz); + r2.z = rsqrt(r2.z); + r10.xyz = r2.zzz * r10.xyz; + r7.xyzw = r7.xyzw / r7.wwww; + r3.xyzw = -r3.xyzw + r7.xyzw; + r2.z = dot(r3.xyzw, r3.xyzw); + r2.z = sqrt(r2.z); + r3.xyz = r9.xyz * r10.zxy; + r3.xyz = r10.yzx * r9.yzx + -r3.xyz; + r7.x = sin(r0.y); +r11.x = cos(r0.y); + r7.yzw = -r9.xyz * r1.yyy + cb0[44].xyz; + r11.yzw = r2.xyw * r10.xyz; + r2.xyw = r2.wxy * r10.yzx + -r11.yzw; + r10.xyz = r9.xyz * r2.xyw; + r2.xyw = r2.wxy * r9.yzx + -r10.xyz; + r0.y = r1.y + r2.z; + r10.xyz = r0.yyy * r9.xyz; + r11.yzw = -r10.yyy * cb0[21].xyw; + r10.xyw = cb0[20].xyw * -r10.xxx + r11.yzw; + r10.xyz = cb0[22].xyw * -r10.zzz + r10.xyw; + r10.xyz = r10.xyz + cb0[23].xyw; + r6.zw = r10.xy / r10.zz; + r6.zw = r6.zw * float2(0.500000, 0.500000) + float2(0.500000, 0.500000); + r6.zw = r6.zw * cb1[0].xy; + r0.y = dot(r3.yzx, -r9.xyz); + r10.xyz = r0.yyy * r3.yzx; + r11.yzw = -r8.xyz * r1.zzz + -r10.xyz; + r10.xyz = r11.xxx * r11.yzw + r10.xyz; + r11.yzw = -r9.yzx * r3.xyz; + r3.xyz = r3.zxy * -r9.zxy + -r11.yzw; + r3.xyz = r3.xyz * r7.xxx + r10.xyz; + r3.xyz = r3.xyz * r2.zzz + r7.yzw; + r3.xyz = r3.xyz + -cb0[44].xyz; + r10.xyz = r3.yyy * cb0[21].xyw; + r3.xyw = cb0[20].xyw * r3.xxx + r10.xyz; + r3.xyz = cb0[22].xyw * r3.zzz + r3.xyw; + r3.xyz = r3.xyz + cb0[23].xyw; + r0.y = dot(r2.ywx, -r9.xyz); + r10.xyz = r0.yyy * r2.ywx; + r8.xyz = -r8.xyz * r1.zzz + -r10.xyz; + r8.xyz = r11.xxx * r8.xyz + r10.xyz; + r10.xyz = -r9.yzx * r2.xyw; + r2.xyw = r2.wxy * -r9.zxy + -r10.xyz; + r2.xyw = r2.xyw * r7.xxx + r8.xyz; + r2.xyz = r2.xyw * r2.zzz + r7.yzw; + r2.xyz = r2.xyz + -cb0[44].xyz; + r7.xyz = r2.yyy * cb0[21].xyw; + r2.xyw = cb0[20].xyw * r2.xxx + r7.xyz; + r2.xyz = cb0[22].xyw * r2.zzz + r2.xyw; + r2.xyz = r2.xyz + cb0[23].xyw; + u0[vThreadID.xy] = r1.xwxx; + r1.xy = r6.xy * r6.xy; + r1.zw = r5.xy + float2(-0.500000, -0.500000); + r5.xy = cmp(float2(0.000000, 0.000000) < r1.zw); + r1.zw = cmp(r1.zw < float2(0.000000, 0.000000)); + r1.zw = int2(-r5.xy) + int2(r1.zw); + r1.zw = float2(r1.zw); + r1.xy = r1.xy * r1.zw + r4.yz; + r1.xy = r1.xy * cb0[82].xy; + r0.y = dot(r1.xy, r1.xy); + r0.y = sqrt(r0.y); + r1.x = log2(r5.z); + r1.x = saturate(r1.x * 0.693147 + 0.010000); + r0.y = -r0.y * r1.x; + r0.y = r0.y * 1.442695; + r1.xzw = exp2(r0.yyy); + r0.y = cmp(0.000100 >= r4.x); + r3.xy = r3.xy / r3.zz; + r3.xy = r3.xy * float2(0.500000, 0.500000) + float2(0.500000, 0.500000); + r3.xy = -r3.xy * cb1[0].xy + r6.zw; + r2.w = dot(r3.xy, r3.xy); + r2.xy = r2.xy / r2.zz; + r2.xy = r2.xy * float2(0.500000, 0.500000) + float2(0.500000, 0.500000); + r2.xy = -r2.xy * cb1[0].xy + r6.zw; + r2.x = dot(r2.xy, r2.xy); + r2.x = r2.x + r2.w; + r2.x = sqrt(r2.x); + r2.x = r2.x * 0.500000; + r2.x = log2(r2.x); + r2.x = max(r2.x, 0.000000); + r2.x = min(r2.x, cb1[5].y); + r2.x = r2.x / cb1[5].y; + r1.y = select_nonzero(r0.y, 0, r2.x); + if (shader_injection.improved_ssr >= 0.5f) { + float mip_threshold = 0.25f; + float adjusted_mip = saturate((r1.y - mip_threshold) / (1.0f - mip_threshold)); + u1[vThreadID.xy] = float4(r1.x, adjusted_mip, r1.z, r1.x); + } else { + u1[vThreadID.xy] = r1.xyzw; + } + r0.yz = r0.zw * cb0[82].xy; + r1.xy = float2(r0.yz); + uint ssr_mask = t5.Load(int3(int2(r1.xy), 0)).y & 4u; + r0.x = (ssr_mask != 0u) ? 1.000000 : r0.x; + u2[vThreadID.xy] = r0.xxxx; + return; + // Approximately 0 instruction slots used + +} diff --git a/src/games/endfield/ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl deleted file mode 100644 index c8ac01dc2b..0000000000 --- a/src/games/endfield/ssr/ssr-temporal2_0x9C372EA1.cs_5_0.hlsl +++ /dev/null @@ -1,343 +0,0 @@ - -#include "../shared.h" - -Texture2D t2 : register(t2); -Texture2D t1 : register(t1); -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[6]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[85]; -} - -RWTexture2D u0 : register(u0); -RWTexture2D u1 : register(u1); -RWTexture2D u2 : register(u2); - -#define cmp - - -[numthreads(8, 8, 1)] -void main(uint3 vThreadID : SV_DispatchThreadID) -{ - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12; - uint4 bitmask, uiDest; - float4 fDest; - r0.xy = (int2)vThreadID.xy; - r0.xy = float2(0.5,0.5) + r0.xy; - r0.zw = cb1[0].zw * r0.xy; - r1.z = t0.SampleLevel(s0_s, r0.zw, 0).x; - r2.x = cb0[84].z * r1.z + cb0[84].w; - r1.xy = r0.zw * float2(2,2) + float2(-1,-1); - r3.xyzw = cb0[13].xyzw * r1.yyyy; - r3.xyzw = cb0[12].xyzw * r1.xxxx + r3.xyzw; - r3.xyzw = cb0[14].xyzw * r1.zzzz + r3.xyzw; - r3.xyzw = cb0[15].xyzw + r3.xyzw; - r3.xyz = r3.xyz / r3.www; - r2.yzw = t1.SampleLevel(s0_s, r0.zw, 0).xyz; - r2.yz = r2.yz * float2(2,2) + float2(-1,-1); - r4.x = dot(float2(1,1), abs(r2.yz)); - r4.y = 1 + -r4.x; - r4.w = cmp(r4.y < 0); - r5.xy = cmp(r2.yz >= float2(0,0)); - r5.zw = float2(1,1) + -abs(r2.zy); - r5.xy = r5.xy ? float2(1,1) : float2(-1,-1); - r5.xy = r5.zw * r5.xy; - r4.xz = r4.ww ? r5.xy : r2.yz; - r2.y = dot(r4.xyz, r4.xyz); - r2.y = rsqrt(r2.y); - r4.xyz = r4.xyz * r2.yyy; - r2.y = r2.w * r2.w; - r2.y = r2.y * r2.y; - r5.xyz = cb0[1].xyz * r4.yyy; - r5.xyz = cb0[0].xyz * r4.xxx + r5.xyz; - r5.xyz = cb0[2].xyz * r4.zzz + r5.xyz; - r6.xy = float2(-0.0700000003,0.0199999996) / r2.xx; - r2.z = 1.44269502 * r6.x; - r2.z = exp2(r2.z); - r2.z = r2.z + r2.z; - r2.z = max(0.125, r2.z); - r2.z = min(1, r2.z); - r2.z = cb1[3].x * r2.z; - r2.z = ceil(r2.z); - r2.z = max((shader_injection.improved_ssr >= 0.5f) ? 256 : 32, r2.z); - r4.w = cmp(r2.w >= 0.300000012); - r5.w = 0.125 * r2.z; - r2.z = r4.w ? r5.w : r2.z; - r3.w = -r3.y; - r3.y = dot(r3.xzw, r3.xzw); - r3.y = rsqrt(r3.y); - r3.xyz = r3.xwz * r3.yyy; - r3.w = dot(r3.xyz, r5.xyz); - r4.w = r3.w + r3.w; - r3.xyz = r5.xyz * -r4.www + r3.xyz; - r5.xyzw = cb0[9].xyzw * r3.yyyy; - r5.xyzw = cb0[8].xyzw * r3.xxxx + r5.xyzw; - r5.xyzw = cb0[10].xyzw * r3.zzzz + r5.xyzw; - r1.w = 1; - r5.xyzw = r5.xyzw * float4(1,-1,1,1) + r1.xyzw; - r3.xyz = r5.xyz / r5.www; - r3.xyz = r3.xyz + -r1.xyz; - r1.w = dot(r3.xy, r3.xy); - r1.w = sqrt(r1.w); - r4.w = 0.5 * r1.w; - r5.xy = r1.xy * r4.ww + r3.xy; - r5.xy = -r1.ww * float2(0.5,0.5) + abs(r5.xy); - r5.xy = max(float2(0,0), r5.xy); - r5.xy = r5.xy / abs(r3.xy); - r5.xy = float2(1,1) + -r5.xy; - r1.w = min(r5.x, r5.y); - r1.w = r1.w / r4.w; - r3.xyz = r3.xyz * r1.www; - r1.w = abs(r3.z) / r2.z; - r1.w = max(9.99999975e-05, r1.w); - r4.w = 1 / r2.z; - r3.xyz = float3(0.5,0.5,1) * r3.xyz; - r3.xyz = r3.xyz * r4.www; - r5.xy = cb1[0].xy * r3.xy; - r4.w = max(abs(r5.x), abs(r5.y)); - r5.x = cmp(r4.w < 1); - r4.w = 0.00100000005 + r4.w; - r4.w = 1 / r4.w; - r5.y = trunc(cb1[1].x); - r0.xy = r5.yy * float2(2.08299994,4.8670001) + r0.xy; - r0.x = dot(r0.xy, float2(0.0671105608,0.00583714992)); - r0.x = frac(r0.x); - r0.x = 52.9829178 * r0.x; - r0.x = frac(r0.x); - r0.x = r5.x ? r4.w : r0.x; - r5.xyz = r1.xyz * float3(0.5,0.5,1) + float3(0.5,0.5,0); - r5.xyz = r3.xyz * r0.xxx + r5.xyz; - r0.x = t0.SampleLevel(s0_s, r5.xy, 0).x; - r0.x = r5.z + -r0.x; - r6.xzw = float3(0,0,0); - r7.xyz = float3(0,0,0); - r8.xyz = r5.xyz; - r0.y = 0; - r4.w = 0; - r5.w = r0.x; - while (true) { - r7.w = cmp(r4.w < r2.z); - if (r7.w != 0) { - r9.xyzw = r3.xyxy * float4(1,1,2,2) + r8.xyxy; - r10.xyzw = r3.xyxy * float4(3,3,4,4) + r8.xyxy; - r11.xyzw = r3.zzzz * float4(1,2,3,4) + r8.zzzz; - r12.x = t0.SampleLevel(s0_s, r9.xy, 0).x; - r12.y = t0.SampleLevel(s0_s, r9.zw, 0).x; - r12.z = t0.SampleLevel(s0_s, r10.xy, 0).x; - r12.w = t0.SampleLevel(s0_s, r10.zw, 0).x; - r9.xyzw = -r12.xyzw + r11.xyzw; - r10.xyzw = r9.xyzw + r1.wwww; - r10.xyzw = cmp(abs(r10.xyzw) < r1.wwww); - r11.xy = (int2)r10.zw | (int2)r10.xy; - r7.w = (int)r11.y | (int)r11.x; - if (r7.w != 0) { - r11.xy = r10.zz ? r9.zy : r9.wz; - r9.yz = r10.yy ? r9.yx : r11.xy; - r7.w = r10.x ? r9.x : r9.y; - r8.w = r10.x ? r5.w : r9.z; - r9.x = r10.z ? 2 : 3; - r9.x = r10.y ? 1 : r9.x; - r9.x = r10.x ? 0 : r9.x; - r7.w = r8.w + -r7.w; - r7.w = saturate(r8.w / r7.w); - r7.w = r9.x + r7.w; - r9.xyz = r3.xyz * r7.www + r8.xyz; - r0.y = -1; - r7.xyz = r9.xyz; - break; - } - r8.xyz = r3.xyz * float3(4,4,4) + r8.xyz; - r4.w = 4 + r4.w; - r6.xzw = r8.xyz; - r0.y = 0; - r5.w = r9.w; - continue; - } else { - r7.xyz = r6.xzw; - r0.y = 0; - break; - } - r0.y = 0; - } - if (r0.y != 0) { - r0.x = max(r7.x, r7.y); - r0.x = 1 + -r0.x; - r0.y = min(r7.x, r7.y); - r0.x = min(r0.x, r0.y); - r3.xy = t2.SampleLevel(s0_s, r7.xy, 0).xy; - r5.xy = abs(r3.xy) * float2(2,2) + float2(-1,-1); - r5.xy = r5.xy * r5.xy; - r5.xy = r5.xy * r5.xy; - r3.xy = float2(-0.5,-0.5) + r3.xy; - r5.zw = cmp(float2(0,0) < r3.xy); - r3.xy = cmp(r3.xy < float2(0,0)); - r3.xy = (int2)-r5.zw + (int2)r3.xy; - r3.xy = (int2)r3.xy; - r3.xy = r5.xy * r3.xy; - r0.y = -cb1[2].z + 1; - r5.xy = r3.xy * r0.yy; - r1.w = cmp(cb1[1].y < r0.x); - r0.x = saturate(r0.x / cb1[1].y); - r0.x = r1.w ? 1 : r0.x; - r1.w = saturate(abs(r3.w) * cb1[1].z + cb1[1].w); - r1.w = 1 + -r1.w; - r0.x = r1.w * r0.x; - r1.w = cmp(r2.w < 0.100000001); - r2.x = 1 / r2.x; - r2.x = 100 + -r2.x; - r2.x = saturate(0.100000001 * r2.x); - r1.w = r1.w ? 1 : r2.x; - r0.x = r1.w * r0.x; - r0.zw = -r3.xy * r0.yy + r7.xy; - } else { - r5.xy = float2(0,0); - r0.x = 0; - } - r2.xz = t2.SampleLevel(s0_s, r0.zw, 0).xy; - r3.xy = abs(r2.xz) * float2(2,2) + float2(-1,-1); - r3.xy = r3.xy * r3.xy; - r0.y = 2 / r2.y; - r0.y = -1 + r0.y; - r0.y = 1 / r0.y; - r0.y = -2.03504682 * r0.y; - r0.y = exp2(r0.y); - r1.w = 1 + -r0.y; - r1.w = sqrt(r1.w); - r2.w = r0.y * -0.0187292993 + 0.0742610022; - r2.w = r2.w * r0.y + -0.212114394; - r0.y = r2.w * r0.y + 1.57072878; - r0.y = r0.y * r1.w; - r8.xyzw = cb0[25].xyzw * r1.yyyy; - r8.xyzw = cb0[24].xyzw * r1.xxxx + r8.xyzw; - r1.xyzw = cb0[26].xyzw * r1.zzzz + r8.xyzw; - r1.xyzw = cb0[27].xyzw + r1.xyzw; - r1.xyzw = r1.xyzw / r1.wwww; - r3.zw = r7.xy * float2(2,2) + float2(-1,-1); - r8.xyzw = cb0[25].xyzw * r3.wwww; - r8.xyzw = cb0[24].xyzw * r3.zzzz + r8.xyzw; - r7.xyzw = cb0[26].xyzw * r7.zzzz + r8.xyzw; - r7.xyzw = cb0[27].xyzw + r7.xyzw; - r6.xzw = cb0[44].xyz + -r1.xyz; - r2.w = dot(r6.xzw, r6.xzw); - r3.z = rsqrt(r2.w); - r8.xyz = r6.xzw * r3.zzz; - r2.w = sqrt(r2.w); - r3.w = cmp(abs(r4.z) < 0.999000013); - r9.z = r3.w ? 0 : 1; - r9.y = r3.w ? 1.000000 : 0; - r9.x = 0; - r10.xyz = r9.xyz * r4.xyz; - r9.xyz = r9.zxy * r4.yzx + -r10.xyz; - r3.w = dot(r9.xyz, r9.xyz); - r3.w = rsqrt(r3.w); - r9.xyz = r9.xyz * r3.www; - r7.xyzw = r7.xyzw / r7.wwww; - r1.xyzw = r7.xyzw + -r1.xyzw; - r1.x = dot(r1.xyzw, r1.xyzw); - r1.x = sqrt(r1.x); - r1.yzw = r9.zxy * r8.xyz; - r1.yzw = r9.yzx * r8.yzx + -r1.yzw; - sincos(r0.y, r7.x, r10.x); - r7.yzw = -r8.xyz * r2.www + cb0[44].xyz; - r10.yzw = r9.xyz * r4.xyz; - r4.xyz = r4.zxy * r9.yzx + -r10.yzw; - r9.xyz = r4.xyz * r8.xyz; - r4.xyz = r4.zxy * r8.yzx + -r9.xyz; - r0.y = r1.x + r2.w; - r9.xyz = r8.xyz * r0.yyy; - r10.yzw = cb0[21].xyw * -r9.yyy; - r9.xyw = cb0[20].xyw * -r9.xxx + r10.yzw; - r9.xyz = cb0[22].xyw * -r9.zzz + r9.xyw; - r9.xyz = cb0[23].xyw + r9.xyz; - r5.zw = r9.xy / r9.zz; - r5.zw = r5.zw * float2(0.5,0.5) + float2(0.5,0.5); - r5.zw = cb1[0].xy * r5.zw; - r0.y = dot(r1.zwy, -r8.xyz); - r9.xyz = r1.zwy * r0.yyy; - r10.yzw = -r6.xzw * r3.zzz + -r9.xyz; - r9.xyz = r10.xxx * r10.yzw + r9.xyz; - r10.yzw = r1.yzw * -r8.yzx; - r1.yzw = r1.wyz * -r8.zxy + -r10.yzw; - r1.yzw = r1.yzw * r7.xxx + r9.xyz; - r1.yzw = r1.yzw * r1.xxx + r7.yzw; - r1.yzw = -cb0[44].xyz + r1.yzw; - r9.xyz = cb0[21].xyw * r1.zzz; - r9.xyz = cb0[20].xyw * r1.yyy + r9.xyz; - r1.yzw = cb0[22].xyw * r1.www + r9.xyz; - r1.yzw = cb0[23].xyw + r1.yzw; - r0.y = dot(r4.yzx, -r8.xyz); - r9.xyz = r4.yzx * r0.yyy; - r6.xzw = -r6.xzw * r3.zzz + -r9.xyz; - r6.xzw = r10.xxx * r6.xzw + r9.xyz; - r9.xyz = r4.xyz * -r8.yzx; - r4.xyz = r4.zxy * -r8.zxy + -r9.xyz; - r4.xyz = r4.xyz * r7.xxx + r6.xzw; - r4.xyz = r4.xyz * r1.xxx + r7.yzw; - r4.xyz = -cb0[44].xyz + r4.xyz; - r6.xzw = cb0[21].xyw * r4.yyy; - r4.xyw = cb0[20].xyw * r4.xxx + r6.xzw; - r4.xyz = cb0[22].xyw * r4.zzz + r4.xyw; - r4.xyz = cb0[23].xyw + r4.xyz; - // Write UV coords to u0 - u0[vThreadID.xy] = r0.zwzz; - - r0.yz = r3.xy * r3.xy; - r2.xz = float2(-0.5,-0.5) + r2.xz; - r3.xy = cmp(float2(0,0) < r2.xz); - r2.xz = cmp(r2.xz < float2(0,0)); - r2.xz = (int2)-r3.xy + (int2)r2.xz; - r2.xz = (int2)r2.xz; - r0.yz = r0.yz * r2.xz + r5.xy; - r0.yz = cb0[82].xy * r0.yz; - r0.y = dot(r0.yz, r0.yz); - r0.y = sqrt(r0.y); - r0.z = log2(r6.y); - r0.z = saturate(r0.z * 0.693147182 + 0.00999999978); - r0.y = -r0.y * r0.z; - r0.y = 1.44269502 * r0.y; - r3.xzw = exp2(r0.yyy); - r0.y = cmp(9.99999975e-05 >= r2.y); - r0.zw = r1.yz / r1.ww; - r0.zw = r0.zw * float2(0.5,0.5) + float2(0.5,0.5); - r0.zw = -r0.zw * cb1[0].xy + r5.zw; - r0.z = dot(r0.zw, r0.zw); - r1.xy = r4.xy / r4.zz; - r1.xy = r1.xy * float2(0.5,0.5) + float2(0.5,0.5); - r1.xy = -r1.xy * cb1[0].xy + r5.zw; - r0.w = dot(r1.xy, r1.xy); - r0.z = r0.z + r0.w; - r0.z = sqrt(r0.z); - r0.z = 0.5 * r0.z; - r0.z = log2(r0.z); - r0.z = max(0, r0.z); - r0.z = min(cb1[5].y, r0.z); - r0.z = r0.z / cb1[5].y; - r3.y = r0.y ? 0 : r0.z; - - // Write blend weights to u1 - // r3.x, r3.z = temporal confidence (how much history to blend in) - // r3.y = mip/blur level (controls spatial denoiser blur radius) - // r3.w = same as r3.x - // - // Vanilla: unchanged - // Improved: keep temporal confidence for anti-firefly, disable spatial blur - // on smooth surfaces but retain it for rough ones (wood, stone) - - if (shader_injection.improved_ssr >= 0.5f) { - float mip_threshold = 0.25f; - float adjusted_mip = saturate((r3.y - mip_threshold) / (1.0f - mip_threshold)); - u1[vThreadID.xy] = float4(r3.x, adjusted_mip, r3.z, r3.x); - } else { - u1[vThreadID.xy] = r3.xyzw; - } - - u2[vThreadID.xy] = r0.xxxx; - return; -} \ No newline at end of file diff --git a/src/games/endfield/ssr/ssr-temporal_0x0A58A512.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-temporal_0x0A58A512.cs_5_0.hlsl new file mode 100644 index 0000000000..c4451113da --- /dev/null +++ b/src/games/endfield/ssr/ssr-temporal_0x0A58A512.cs_5_0.hlsl @@ -0,0 +1,684 @@ +#include "../shared.h" + +float cmp(bool value) { return value ? -1.0f : 0.0f; } +float2 cmp(bool2 value) { return float2(cmp(value.x), cmp(value.y)); } +float3 cmp(bool3 value) { return float3(cmp(value.x), cmp(value.y), cmp(value.z)); } +float4 cmp(bool4 value) { return float4(cmp(value.x), cmp(value.y), cmp(value.z), cmp(value.w)); } + +float select_nonzero(float condition, float when_true, float when_false) { + return condition != 0.0f ? when_true : when_false; +} +float2 select_nonzero(float2 condition, float2 when_true, float2 when_false) { + return float2(select_nonzero(condition.x, when_true.x, when_false.x), + select_nonzero(condition.y, when_true.y, when_false.y)); +} +float3 select_nonzero(float3 condition, float3 when_true, float3 when_false) { + return float3(select_nonzero(condition.x, when_true.x, when_false.x), + select_nonzero(condition.y, when_true.y, when_false.y), + select_nonzero(condition.z, when_true.z, when_false.z)); +} +float4 select_nonzero(float4 condition, float4 when_true, float4 when_false) { + return float4(select_nonzero(condition.x, when_true.x, when_false.x), + select_nonzero(condition.y, when_true.y, when_false.y), + select_nonzero(condition.z, when_true.z, when_false.z), + select_nonzero(condition.w, when_true.w, when_false.w)); +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[238]; +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[6]; +} + +cbuffer cb2 : register(b2) +{ + float4 cb2[5]; +} + +SamplerState s0_s : register(s0); + +SamplerState s1_s : register(s1); + +SamplerState s2_s : register(s2); + +SamplerComparisonState s3_s : register(s3); + +Texture2D t0 : register(t0); + +Texture2D t1 : register(t1); + +Texture2D t2 : register(t2); + +Texture2D t3 : register(t3); + +Texture2D t4 : register(t4); + +Texture2D t5 : register(t5); + +Texture2D t6 : register(t6); + +Texture3D t7 : register(t7); + +Texture2D t8 : register(t8); + +Texture2D t9 : register(t9); + +RWTexture2D u0 : register(u0); + +RWTexture2D u1 : register(u1); + +RWTexture2D u2 : register(u2); + +[numthreads(8, 8, 1)] +void main(uint3 vThreadID : SV_DispatchThreadID) +{ + float4 r0 = 0; + float4 r1 = 0; + float4 r2 = 0; + float4 r3 = 0; + float4 r4 = 0; + float4 r5 = 0; + float4 r6 = 0; + float4 r7 = 0; + float4 r8 = 0; + float4 r9 = 0; + float4 r10 = 0; + float4 r11 = 0; + float4 r12 = 0; + float4 r13 = 0; + r0.xy = float2(vThreadID.xy); + r0.xy = r0.xy + float2(0.500000, 0.500000); + r0.zw = r0.xy * cb1[0].zw; + r1.xy = r0.zw * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); + r2.x = t0.SampleLevel(s0_s, r0.zw, 0.000000).x; + r3.xyzw = r1.xxxx * cb0[24].xyzw; + r4.xyzw = cb0[25].xyzw * -r1.yyyy + r3.xyzw; + r2.xyzw = cb0[26].xyzw * r2.xxxx + r4.xyzw; + r2.xyzw = r2.xyzw + cb0[27].xyzw; + r1.z = t1.SampleLevel(s0_s, r0.zw, 0.000000).x; + r5.x = cb0[84].z * r1.z + cb0[84].w; + r4.xyzw = cb0[26].xyzw * r1.zzzz + r4.xyzw; + r4.xyzw = r4.xyzw + cb0[27].xyzw; + r6.xyzw = r1.yyyy * cb0[13].xyzw; + r6.xyzw = cb0[12].xyzw * r1.xxxx + r6.xyzw; + r6.xyzw = cb0[14].xyzw * r1.zzzz + r6.xyzw; + r6.xyzw = r6.xyzw + cb0[15].xyzw; + r6.xyz = r6.xyz / r6.www; + r5.yzw = t2.SampleLevel(s0_s, r0.zw, 0.000000).xyz; + r7.xyz = t3.SampleLevel(s0_s, r0.zw, 0.000000).xyz; + r2.xyz = r2.xyz / r2.www; + r4.xyz = r4.xyz / r4.www; + r2.xyz = r2.xyz + -r4.xyz; + r2.x = dot(r2.xyz, r2.xyz); + r2.x = sqrt(r2.x); + r2.x = r2.x * 10.000000; + r2.x = min(r2.x, 1.000000); + r2.yzw = -r5.yzw + r7.xyz; + r2.xyz = r2.xxx * r2.yzw + r5.yzw; + r2.xy = r2.xy * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); + r2.w = dot(float2(1.000000, 1.000000), abs(r2.xy)); + r4.y = -r2.w + 1.000000; + r2.w = cmp(r4.y < 0.000000); + r5.yz = cmp(r2.xy >= float2(0.000000, 0.000000)); + r7.xy = -abs(r2.yx) + float2(1.000000, 1.000000); + r5.yz = select_nonzero(r5.yz, float2(1.000000, 1.000000), float2(-1.000000, -1.000000)); + r5.yz = r5.yz * r7.xy; + r4.xz = select_nonzero(r2.ww, r5.yz, r2.xy); + r2.x = dot(r4.xyz, r4.xyz); + r2.x = rsqrt(r2.x); + r4.xzw = r2.xxx * r4.xyz; + r2.yw = t9.SampleLevel(s1_s, r0.zw, 0.000000).xy; + r5.yzw = -r6.yyy * cb0[5].xyz; + r5.yzw = cb0[4].xyz * r6.xxx + r5.yzw; + r5.yzw = cb0[6].xyz * r6.zzz + r5.yzw; + r5.yzw = r5.yzw + cb0[7].xyz; + r7.xy = cmp(float2(0.500000, 0.500000) < cb0[230].xy); + if (r7.x != 0) { + r7.x = abs(r4.z) + abs(r4.x); + r7.x = abs(r4.w) + r7.x; + r7.x = 1.000000 / r7.x; + r7.xzw = abs(r4.xzw) * r7.xxx; + r8.xyz = r5.yzw * cb0[233].xxx; + r8.x = t7.SampleLevel(s2_s, r8.xyz, 0.000000).x; + r9.xyzw = r7.xxzz * float4(0.000000, 1.000000, 0.707106, 0.000000); + r8.yzw = r9.zwz + r9.xxy; + r7.xzw = r7.www * float3(1.000000, 0.000000, 0.000000) + r8.yzw; + r8.y = r8.x * 2.000000 + -1.000000; + r7.xzw = r7.xzw * r8.yyy; + r8.y = abs(r4.z); + r8.y = r8.y + -0.700000; + r8.y = saturate(r8.y * 4.000000); + r8.z = r8.y * -2.000000 + 3.000000; + r8.y = r8.y * r8.y; + r8.y = r8.y * r8.z; + r8.z = -cb0[233].z + cb0[233].y; + r8.y = r8.y * r8.z + cb0[233].z; + r7.xzw = r7.xzw * r8.yyy; + } else { + r7.xzw = float3(0, 0, 0); + r8.x = 0; + } + if (r7.y != 0) { + r8.yzw = r4.xzw * cb0[237].zzz; + r9.xyz = float3(0.000000, 1.000000, 0.000000) * cb0[229].yyy; + r8.yzw = r8.yzw * cb0[229].xxx + r9.xyz; + r7.y = max(-r4.z, 0.000000); + r7.y = min(r7.y, 0.900000); + r7.y = -r7.y + 1.000000; + r2.x = -r4.y * r2.x + -0.200000; + r2.x = saturate(r2.x * -10.000000); + r4.y = r2.x * -2.000000 + 3.000000; + r2.x = r2.x * r2.x; + r2.x = r2.x * r4.y; + r2.x = max(r2.x, 0.100000); + r2.x = min(r2.x, 1.000000); + r2.x = r2.x * r7.y; + r8.yzw = r8.yzw * r2.xxx + r5.yzw; + r7.xyz = r7.xzw + r8.yzw; + r8.yzw = r7.yyy * cb2[1].xyz; + r7.xyw = cb2[0].xyz * r7.xxx + r8.yzw; + r7.xyz = cb2[2].xyz * r7.zzz + r7.xyw; + r7.xyz = r7.xyz + cb2[3].xyz; + r9.x = r7.x * 0.500000 + cb2[4].x; + r2.x = r7.y * 0.500000 + 0.500000; + r9.z = -r2.x + cb2[4].y; + r7.xy = r9.xz + float2(0.500000, 1.000000); + r2.x = max(r7.z, 0.000488); + r2.x = t6.SampleCmpLevelZero(s3_s, r7.xy, r2.x).x; + } else { + r2.x = 1.000000; + } + r4.y = saturate(r4.z); + r7.xy = r5.yw + -cb0[44].xz; + r7.z = 1.000000 + -cb0[234].w; + r7.z = r4.y * r7.z + cb0[234].w; + r7.w = r2.x * r7.z; + r8.y = 0.050000 * cb0[226].w; + r7.x = max(abs(r7.y), abs(r7.x)); + r7.x = -cb0[226].w * 0.700000 + r7.x; + r7.y = 1.000000 / r8.y; + r7.x = saturate(r7.y * r7.x); + r7.y = r7.x * -2.000000 + 3.000000; + r7.x = r7.x * r7.x; + r7.x = r7.x * r7.y; + r2.x = -r7.z * r2.x + 1.000000; + r2.x = r7.x * r2.x + r7.w; + r7.x = -r2.x + 1.000000; + r7.y = r2.y * r7.x; + r7.z = cmp(0.000488 < cb0[235].y); + if (r7.z != 0) { + r8.yzw = r5.yzw + -cb0[44].xyz; + r5.z = dot(r8.yzw, r8.yzw); + r5.z = sqrt(r5.z); + r5.z = r5.z + -15.000000; + r5.z = saturate(r5.z * 0.015000); + r5.z = -r5.z + 1.000000; + r7.z = min(0.990000, cb0[232].w); + r7.w = cb0[227].z * 0.300000 + 0.686000; + r7.w = max(r7.w, 0.970000); + r8.y = -r7.w + 0.990000; + r7.w = r4.y + -r7.w; + r8.y = 1.000000 / r8.y; + r7.w = saturate(r7.w * r8.y); + r8.y = r7.w * -2.000000 + 3.000000; + r7.w = r7.w * r7.w; + r4.y = r4.y + -0.991000; + r4.y = r4.y * 111.111069; + r4.y = max(r4.y, 0.000000); + r8.z = r4.y * -2.000000 + 3.000000; + r4.y = r4.y * r4.y; + r4.y = r4.y * r8.z; + r8.z = r8.x * 0.200000 + 0.800000; + r8.z = cmp(r8.z >= 0.618000); + r8.z = asfloat(asuint(r8.z) & 0x3f800000u); + r4.y = r4.y * r8.z; + r4.y = r8.y * r7.w + r4.y; + r4.y = min(r4.y, 1.000000); + r7.w = -r7.z + cb0[232].w; + r4.y = -r7.z + r4.y; + r7.z = 1.000000 / r7.w; + r4.y = saturate(r4.y * r7.z); + r7.z = r4.y * -2.000000 + 3.000000; + r4.y = r4.y * r4.y; + r4.y = r4.y * r7.z; + r7.z = cmp(0.000488 < r4.y); + if (r7.z != 0) { + r7.zw = -r5.yw * cb0[232].xy; + r8.yz = frac(r7.zw); + r9.xy = cmp(float2(0.000488, 0.000488) < cb0[231].yw); + if (r9.x != 0) { + r7.zw = floor(r7.zw); + r7.zw = r7.zw * float2(0.000977, 0.000977); + r9.xz = cmp(r7.zw >= -r7.zw); + r7.zw = frac(abs(r7.zw)); + r7.zw = select_nonzero(r9.xz, r7.zw, -r7.zw); + r7.zw = r7.zw * float2(1024.000000, 1024.000000); + r7.z = dot(r7.zw, float2(12.989800, 78.233002)); + r7.z = sin(r7.z); + r7.z = r7.z * 43758.546875; + r7.z = frac(r7.z); + r7.w = r7.z + cb0[231].x; + r7.w = frac(r7.w); + r8.w = cb0[232].z * cb0[232].z; + r7.w = r7.w * r8.w; + r7.w = floor(r7.w); + r8.w = 1.000000 / cb0[232].z; + r7.z = cmp(0.500000 >= r7.z); + r7.z = asfloat(asuint(r7.z) & 0x3f800000u); + r9.xz = -r8.yz + r8.zy; + r8.yz = r7.zz * r9.xz + r8.yz; + r7.z = r7.w / cb0[232].z; + r9.x = cmp(r7.z >= -r7.z); + r7.z = frac(abs(r7.z)); + r7.z = select_nonzero(r9.x, r7.z, -r7.z); + r7.z = r7.z * cb0[232].z; + r10.x = r7.z * r8.w; + r7.z = -1.000000 + cb0[232].z; + r7.w = r7.w * r8.w; + r7.w = floor(r7.w); + r7.z = -r7.w + r7.z; + r10.y = r7.z * r8.w; + r7.zw = r8.yz * r8.ww + r10.xy; + r7.zw = frac(r7.zw); + r7.zw = t8.SampleLevel(s1_s, r7.zw, 0.000000).xy; + r7.zw = r7.zw * cb0[231].yy; + r10.xy = r7.zw * float2(2.000000, 2.000000) + -cb0[231].yy; + } else { + r10.xy = float2(0, 0); + } + if (r9.y != 0) { + r9.xw = float2(0, 0.500000); + r9.y = cb0[231].z; + r7.zw = -r5.yw * cb0[232].xy + r9.xy; + r9.z = r8.x * 0.500000; + r7.zw = r7.zw + r9.zw; + r7.zw = r7.zw + float2(-0.500000, -0.500000); + r9.xy = t8.SampleLevel(s2_s, r7.zw, 0.000000).zw; + r11.xz = cb0[231].zw; + r11.y = 0; + r5.yw = -r5.yw * cb0[232].xy + -r11.xy; + r11.y = -r8.x + 1.000000; + r11.x = 0.500000; + r7.zw = float2(1.000000, 0.500000) * r11.xy + float2(-0.500000, -0.500000); + r5.yw = r5.yw + -r7.zw; + r9.zw = t8.SampleLevel(s2_s, r5.yw, 0.000000).zw; + r9.xyzw = r9.xyzw * cb0[231].wwww; + r9.xyzw = r9.xyzw * float4(2.000000, 2.000000, 2.000000, 2.000000) + -r11.zzzz; + r9.xyzw = r8.xxxx * r9.xyzw; + r5.yw = r9.zw + r9.xy; + r10.xy = r5.yw + r10.xy; + } + r5.y = r2.z * 0.300000; + r5.y = r8.x * 0.700000 + r5.y; + r5.w = r2.z + -0.100000; + r5.w = saturate(r5.w * 100.000000); + r5.y = r5.w * r5.y; + r5.w = r5.y * 0.618000; + r5.w = min(r5.w, 0.990000); + r5.y = saturate(r5.y * 0.618000 + 0.600000); + r5.y = -r5.w + r5.y; + r5.w = -r5.w + cb0[232].w; + r5.y = 1.000000 / r5.y; + r5.y = saturate(r5.y * r5.w); + r5.w = r5.y * -2.000000 + 3.000000; + r5.y = r5.y * r5.y; + r5.y = r5.y * r5.w; + r4.y = r4.y * cb0[226].x; + r5.w = dot(r10.xy, r10.xy); + r5.w = min(r5.w, 1.000000); + r5.w = -r5.w + 1.000000; + r5.w = sqrt(r5.w); + r10.z = max(r5.w, 0.000488); + r5.w = dot(r10.xyz, r10.xyz); + r5.w = rsqrt(r5.w); + r8.yzw = r5.www * r10.yzx; + r5.w = r8.z * 1.000000; + r7.z = r5.y * r4.y; + r7.z = r2.x * r7.z; + r7.z = r5.z * r7.z; + r8.yzw = r8.yzw * float3(1.000000, 1.000000, -1.000000) + -r4.xzw; + r4.xzw = r7.zzz * r8.yzw + r4.xzw; + r7.z = -r8.x + 1.000000; + r7.z = r7.z * cb0[232].w; + r7.w = r7.z * 0.500000; + r7.z = -r7.z * 0.500000 + 1.000000; + r5.y = r5.y * r7.z + r7.w; + r7.z = -0.600000 + cb0[232].w; + r7.z = saturate(r7.z * 2.500000); + r7.w = r7.z * -2.000000 + 3.000000; + r7.z = r7.z * r7.z; + r7.z = r7.z * r7.w; + r5.y = saturate(r7.z * 0.600000 + r5.y); + r4.y = r4.y * r5.y; + r4.y = r5.w * r4.y; + r4.y = saturate(r4.y * 8.090615); + r5.y = r4.y * -2.000000 + 3.000000; + r4.y = r4.y * r4.y; + r4.y = r4.y * r5.y; + r2.x = r2.x * r4.y; + r2.x = r5.z * r2.x; + r2.x = max(r2.x, 0.000000); + } else { + r2.x = 0; + } + } else { + r2.x = 0; + } + r4.y = -r2.z + 1.000000; + r5.y = saturate(r4.y * cb0[226].z + cb0[226].y); + r5.z = r2.z * r2.x; + r5.y = saturate(r5.z * 0.100000 + r5.y); + r5.y = r5.y * -0.300000 + 0.900000; + r5.z = sqrt(r4.y); + r5.y = r5.z + r5.y; + r5.y = r5.y + -0.600000; + r5.y = min(r5.y, 1.000000); + r5.y = max(r4.y, r5.y); + r5.y = min(r5.y, 0.990000); + r5.z = saturate(2.000000 + -cb0[226].x); + r5.z = r5.z * cb0[226].x; + r5.w = -r4.z + -0.200000; + r5.w = saturate(r5.w * 3.333333); + r7.z = r5.w * -2.000000 + 3.000000; + r5.w = r5.w * r5.w; + r5.w = -r7.z * r5.w + 1.000000; + r5.z = r5.w * r5.z; + r5.w = -r2.y * r7.x + 1.000000; + r5.z = r5.w * r5.z; + r5.y = -r4.y + r5.y; + r4.y = r5.z * r5.y + r4.y; + r4.y = -r4.y + 1.000000; + r2.x = r2.x * -0.900000 + 1.000000; + r5.y = r2.x * r4.y; + r5.y = min(r5.y, 1.000000); + r2.y = min(r2.w, r2.y); + r2.x = r4.y * r2.x + -r5.y; + r2.x = r2.y * r2.x + r5.y; + r2.y = -r2.x + r2.z; + r2.x = r7.y * r2.y + r2.x; + r2.y = r2.x * r2.x; + r2.y = r2.y * r2.y; + r5.yzw = r4.zzz * cb0[1].xyz; + r5.yzw = cb0[0].xyz * r4.xxx + r5.yzw; + r5.yzw = cb0[2].xyz * r4.www + r5.yzw; + r7.xy = float2(-0.070000, 0.020000) / r5.xx; + r2.w = r7.x * 1.442695; + r2.w = exp2(r2.w); + r2.w = r2.w + r2.w; + r2.w = max(r2.w, 0.125000); + r2.w = min(r2.w, 1.000000); + r2.w = r2.w * cb1[3].x; + r2.w = ceil(r2.w); + r2.w = max(r2.w, (shader_injection.improved_ssr >= 0.5f) ? 256.0f : 32.0f); + r2.z = cmp(r2.z >= 0.300000); + r4.y = r2.w * 0.125000; + r2.z = select_nonzero(r2.z, r4.y, r2.w); + r6.w = -r6.y; + r2.w = dot(r6.xzw, r6.xzw); + r2.w = rsqrt(r2.w); + r6.xyz = r2.www * r6.xwz; + r2.w = dot(r6.xyz, r5.yzw); + r4.y = r2.w + r2.w; + r5.yzw = r5.yzw * -r4.yyy + r6.xyz; + r6.xyzw = r5.zzzz * cb0[9].xyzw; + r6.xyzw = cb0[8].xyzw * r5.yyyy + r6.xyzw; + r6.xyzw = cb0[10].xyzw * r5.wwww + r6.xyzw; + r1.w = 1.000000; + r6.xyzw = r6.xyzw * float4(1.000000, -1.000000, 1.000000, 1.000000) + r1.xyzw; + r5.yzw = r6.xyz / r6.www; + r5.yzw = -r1.xyz + r5.yzw; + r1.w = dot(r5.yz, r5.yz); + r1.w = sqrt(r1.w); + r4.y = r1.w * 0.500000; + r6.xy = r1.xy * r4.yy + r5.yz; + r6.xy = -r1.ww * float2(0.500000, 0.500000) + abs(r6.xy); + r6.xy = max(r6.xy, float2(0.000000, 0.000000)); + r6.xy = r6.xy / abs(r5.yz); + r6.xy = -r6.xy + float2(1.000000, 1.000000); + r1.w = min(r6.y, r6.x); + r1.w = r1.w / r4.y; + r5.yzw = r1.www * r5.yzw; + r1.w = abs(r5.w) / r2.z; + r1.w = max(r1.w, 0.000100); + r4.y = 1.000000 / r2.z; + r5.yzw = r5.yzw * float3(0.500000, 0.500000, 1.000000); + r5.yzw = r4.yyy * r5.yzw; + r6.xy = r5.yz * cb1[0].xy; + r4.y = max(abs(r6.y), abs(r6.x)); + r6.x = cmp(r4.y < 1.000000); + r4.y = r4.y + 0.001000; + r4.y = 1.000000 / r4.y; + r6.y = trunc(cb1[1].x); + r0.xy = r6.yy * float2(2.083000, 4.867000) + r0.xy; + r0.x = dot(r0.xy, float2(0.067111, 0.005837)); + r0.x = frac(r0.x); + r0.x = r0.x * 52.982918; + r0.x = frac(r0.x); + r0.x = select_nonzero(r6.x, r4.y, r0.x); + r6.xyz = r1.xyz * float3(0.500000, 0.500000, 1.000000) + float3(0.500000, 0.500000, 0.000000); + r6.xyz = r5.yzw * r0.xxx + r6.xyz; + r0.x = t1.SampleLevel(s0_s, r6.xy, 0.000000).x; + r0.x = -r0.x + r6.z; + r7.xzw = float3(0, 0, 0); + r8.xyz = float3(0, 0, 0); + r9.xyz = r6.xyz; + r0.y = 0; + r1.x = 0; + r4.y = r0.x; + while (true) { + r6.w = cmp(r1.x < r2.z); + if (r6.w != 0) { + r10.xyzw = r5.yzyz * float4(1.000000, 1.000000, 2.000000, 2.000000) + r9.xyxy; + r11.xyzw = r5.yzyz * float4(3.000000, 3.000000, 4.000000, 4.000000) + r9.xyxy; + r12.xyzw = r5.wwww * float4(1.000000, 2.000000, 3.000000, 4.000000) + r9.zzzz; + r13.x = t1.SampleLevel(s0_s, r10.xy, 0.000000).x; + r13.y = t1.SampleLevel(s0_s, r10.zw, 0.000000).x; + r13.z = t1.SampleLevel(s0_s, r11.xy, 0.000000).x; + r13.w = t1.SampleLevel(s0_s, r11.zw, 0.000000).x; + r10.xyzw = r12.xyzw + -r13.xyzw; + r11.xyzw = r1.wwww + r10.xyzw; + r11.xyzw = cmp(abs(r11.xyzw) < r1.wwww); + r12.xy = asfloat(asuint(r11.zw) | asuint(r11.xy)); + r6.w = asfloat(asuint(r12.y) | asuint(r12.x)); + if (r6.w != 0) { + r12.xy = select_nonzero(r11.zz, r10.zy, r10.wz); + r10.yz = select_nonzero(r11.yy, r10.yx, r12.xy); + r6.w = select_nonzero(r11.x, r10.x, r10.y); + r8.w = select_nonzero(r11.x, r4.y, r10.z); + r9.w = select_nonzero(r11.z, 2.000000, 3.000000); + r9.w = select_nonzero(r11.y, 1.000000, r9.w); + r9.w = select_nonzero(r11.x, 0, r9.w); + r6.w = -r6.w + r8.w; + r6.w = saturate(r8.w / r6.w); + r6.w = r6.w + r9.w; + r10.xyz = r5.yzw * r6.www + r9.xyz; + r0.y = -1; + r8.xyz = r10.xyz; + break; + } + r9.xyz = r5.yzw * float3(4.000000, 4.000000, 4.000000) + r9.xyz; + r1.x = r1.x + 4.000000; + r7.xzw = r9.xyz; + r0.y = 0; + r4.y = r10.w; + continue; + } else { + r8.xyz = r7.xzw; + r0.y = 0; + break; + } + r0.y = 0; + } + if (r0.y != 0) { + r0.x = max(r8.y, r8.x); + r0.x = -r0.x + 1.000000; + r0.y = min(r8.y, r8.x); + r0.x = min(r0.y, r0.x); + r1.xw = t4.SampleLevel(s0_s, r8.xy, 0.000000).xy; + r5.yz = abs(r1.xw) * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); + r5.yz = r5.yz * r5.yz; + r5.yz = r5.yz * r5.yz; + r1.xw = r1.xw + float2(-0.500000, -0.500000); + r6.xy = cmp(float2(0.000000, 0.000000) < r1.xw); + r1.xw = cmp(r1.xw < float2(0.000000, 0.000000)); + r1.xw = int2(-r6.xy) + int2(r1.xw); + r1.xw = float2(r1.xw); + r1.xw = r1.xw * r5.yz; + r0.y = 1.000000 + -cb1[2].z; + r5.yz = r0.yy * r1.xw; + r2.z = cmp(cb1[1].y < r0.x); + r0.x = saturate(r0.x / cb1[1].y); + r0.x = select_nonzero(r2.z, 1.000000, r0.x); + r2.z = saturate(abs(r2.w) * cb1[1].z + cb1[1].w); + r2.z = -r2.z + 1.000000; + r0.x = r0.x * r2.z; + r2.x = cmp(r2.x < 0.100000); + r2.z = 1.000000 / r5.x; + r2.z = -r2.z + 100.000000; + r2.z = saturate(r2.z * 0.100000); + r2.x = select_nonzero(r2.x, 1.000000, r2.z); + r0.x = r0.x * r2.x; + r1.xw = -r1.xw * r0.yy + r8.xy; + } else { + r5.yz = float2(0, 0); + r1.xw = r0.zw; + r0.x = 0; + } + r2.xz = t4.SampleLevel(s0_s, r1.xw, 0.000000).xy; + r5.xw = abs(r2.xz) * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); + r5.xw = r5.xw * r5.xw; + r0.y = 2.000000 / r2.y; + r0.y = r0.y + -1.000000; + r0.y = 1.000000 / r0.y; + r0.y = r0.y * -2.035047; + r0.y = exp2(r0.y); + r2.w = -r0.y + 1.000000; + r2.w = sqrt(r2.w); + r4.y = r0.y * -0.018729 + 0.074261; + r4.y = r4.y * r0.y + -0.212114; + r0.y = r4.y * r0.y + 1.570729; + r0.y = r2.w * r0.y; + r3.xyzw = cb0[25].xyzw * r1.yyyy + r3.xyzw; + r3.xyzw = cb0[26].xyzw * r1.zzzz + r3.xyzw; + r3.xyzw = r3.xyzw + cb0[27].xyzw; + r3.xyzw = r3.xyzw / r3.wwww; + r1.yz = r8.xy * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); + r6.xyzw = r1.zzzz * cb0[25].xyzw; + r6.xyzw = cb0[24].xyzw * r1.yyyy + r6.xyzw; + r6.xyzw = cb0[26].xyzw * r8.zzzz + r6.xyzw; + r6.xyzw = r6.xyzw + cb0[27].xyzw; + r7.xzw = -r3.xyz + cb0[44].xyz; + r1.y = dot(r7.xzw, r7.xzw); + r1.z = rsqrt(r1.y); + r8.xyz = r1.zzz * r7.xzw; + r1.y = sqrt(r1.y); + r2.w = cmp(abs(r4.w) < 0.999000); + r9.z = select_nonzero(r2.w, 0, 1.000000); + r9.y = asfloat(asuint(r2.w) & 0x3f800000u); + r9.x = 0; + r10.xyz = r4.xzw * r9.xyz; + r9.xyz = r9.zxy * r4.zwx + -r10.xyz; + r2.w = dot(r9.xyz, r9.xyz); + r2.w = rsqrt(r2.w); + r9.xyz = r2.www * r9.xyz; + r6.xyzw = r6.xyzw / r6.wwww; + r3.xyzw = -r3.xyzw + r6.xyzw; + r2.w = dot(r3.xyzw, r3.xyzw); + r2.w = sqrt(r2.w); + r3.xyz = r8.xyz * r9.zxy; + r3.xyz = r9.yzx * r8.yzx + -r3.xyz; + r6.x = sin(r0.y); +r10.x = cos(r0.y); + r6.yzw = -r8.xyz * r1.yyy + cb0[44].xyz; + r10.yzw = r4.xzw * r9.xyz; + r4.xyz = r4.wxz * r9.yzx + -r10.yzw; + r9.xyz = r8.xyz * r4.xyz; + r4.xyz = r4.zxy * r8.yzx + -r9.xyz; + r0.y = r1.y + r2.w; + r9.xyz = r0.yyy * r8.xyz; + r10.yzw = -r9.yyy * cb0[21].xyw; + r9.xyw = cb0[20].xyw * -r9.xxx + r10.yzw; + r9.xyz = cb0[22].xyw * -r9.zzz + r9.xyw; + r9.xyz = r9.xyz + cb0[23].xyw; + r9.xy = r9.xy / r9.zz; + r9.xy = r9.xy * float2(0.500000, 0.500000) + float2(0.500000, 0.500000); + r9.xy = r9.xy * cb1[0].xy; + r0.y = dot(r3.yzx, -r8.xyz); + r10.yzw = r0.yyy * r3.yzx; + r11.xyz = -r7.xzw * r1.zzz + -r10.yzw; + r10.yzw = r10.xxx * r11.xyz + r10.yzw; + r11.xyz = -r8.yzx * r3.xyz; + r3.xyz = r3.zxy * -r8.zxy + -r11.xyz; + r3.xyz = r3.xyz * r6.xxx + r10.yzw; + r3.xyz = r3.xyz * r2.www + r6.yzw; + r3.xyz = r3.xyz + -cb0[44].xyz; + r10.yzw = r3.yyy * cb0[21].xyw; + r3.xyw = cb0[20].xyw * r3.xxx + r10.yzw; + r3.xyz = cb0[22].xyw * r3.zzz + r3.xyw; + r3.xyz = r3.xyz + cb0[23].xyw; + r0.y = dot(r4.yzx, -r8.xyz); + r10.yzw = r0.yyy * r4.yzx; + r7.xzw = -r7.xzw * r1.zzz + -r10.yzw; + r7.xzw = r10.xxx * r7.xzw + r10.yzw; + r10.xyz = -r8.yzx * r4.xyz; + r4.xyz = r4.zxy * -r8.zxy + -r10.xyz; + r4.xyz = r4.xyz * r6.xxx + r7.xzw; + r4.xyz = r4.xyz * r2.www + r6.yzw; + r4.xyz = r4.xyz + -cb0[44].xyz; + r6.xyz = r4.yyy * cb0[21].xyw; + r4.xyw = cb0[20].xyw * r4.xxx + r6.xyz; + r4.xyz = cb0[22].xyw * r4.zzz + r4.xyw; + r4.xyz = r4.xyz + cb0[23].xyw; + u0[vThreadID.xy] = r1.xwxx; + r1.xy = r5.xw * r5.xw; + r1.zw = r2.xz + float2(-0.500000, -0.500000); + r2.xz = cmp(float2(0.000000, 0.000000) < r1.zw); + r1.zw = cmp(r1.zw < float2(0.000000, 0.000000)); + r1.zw = int2(-r2.xz) + int2(r1.zw); + r1.zw = float2(r1.zw); + r1.xy = r1.xy * r1.zw + r5.yz; + r1.xy = r1.xy * cb0[82].xy; + r0.y = dot(r1.xy, r1.xy); + r0.y = sqrt(r0.y); + r1.x = log2(r7.y); + r1.x = saturate(r1.x * 0.693147 + 0.010000); + r0.y = -r0.y * r1.x; + r0.y = r0.y * 1.442695; + r1.xzw = exp2(r0.yyy); + r0.y = cmp(0.000100 >= r2.y); + r2.xy = r3.xy / r3.zz; + r2.xy = r2.xy * float2(0.500000, 0.500000) + float2(0.500000, 0.500000); + r2.xy = -r2.xy * cb1[0].xy + r9.xy; + r2.x = dot(r2.xy, r2.xy); + r2.yz = r4.xy / r4.zz; + r2.yz = r2.yz * float2(0.500000, 0.500000) + float2(0.500000, 0.500000); + r2.yz = -r2.yz * cb1[0].xy + r9.xy; + r2.y = dot(r2.yz, r2.yz); + r2.x = r2.y + r2.x; + r2.x = sqrt(r2.x); + r2.x = r2.x * 0.500000; + r2.x = log2(r2.x); + r2.x = max(r2.x, 0.000000); + r2.x = min(r2.x, cb1[5].y); + r2.x = r2.x / cb1[5].y; + r1.y = select_nonzero(r0.y, 0, r2.x); + if (shader_injection.improved_ssr >= 0.5f) { + float mip_threshold = 0.25f; + float adjusted_mip = saturate((r1.y - mip_threshold) / (1.0f - mip_threshold)); + u1[vThreadID.xy] = float4(r1.x, adjusted_mip, r1.z, r1.x); + } else { + u1[vThreadID.xy] = r1.xyzw; + } + r0.yz = r0.zw * cb0[82].xy; + r1.xy = float2(r0.yz); + uint ssr_mask = t5.Load(int3(int2(r1.xy), 0)).y & 4u; + r0.x = (ssr_mask != 0u) ? 1.000000 : r0.x; + u2[vThreadID.xy] = r0.xxxx; + return; + // Approximately 0 instruction slots used + +} diff --git a/src/games/endfield/ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl deleted file mode 100644 index 01f5f25125..0000000000 --- a/src/games/endfield/ssr/ssr-temporal_0xE92EE541.cs_5_0.hlsl +++ /dev/null @@ -1,468 +0,0 @@ - -#include "../shared.h" - -RWTexture2D u0 : register(u0); -RWTexture2D u1 : register(u1); -RWTexture2D u2 : register(u2); - -Texture2D t5 : register(t5); - -Texture3D t4 : register(t4); - -Texture2D t3 : register(t3); - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerComparisonState s3_s : register(s3); - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb2 : register(b2) -{ - float4 cb2[5]; -} - -cbuffer cb1 : register(b1) -{ - float4 cb1[6]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[234]; -} - -// 3Dmigoto declarations -#define cmp - - -[numthreads(8, 8, 1)] -void main(uint3 vThreadID : SV_DispatchThreadID) -{ - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = (int2)vThreadID.xy; - r0.xy = float2(0.5,0.5) + r0.xy; - r0.zw = cb1[0].zw * r0.xy; - r1.z = t0.SampleLevel(s0_s, r0.zw, 0).x; - r2.x = cb0[84].z * r1.z + cb0[84].w; - r1.xy = r0.zw * float2(2,2) + float2(-1,-1); - r3.xyzw = cb0[13].xyzw * r1.yyyy; - r3.xyzw = cb0[12].xyzw * r1.xxxx + r3.xyzw; - r3.xyzw = cb0[14].xyzw * r1.zzzz + r3.xyzw; - r3.xyzw = cb0[15].xyzw + r3.xyzw; - r3.xyz = r3.xyz / r3.www; - r2.yzw = t1.SampleLevel(s0_s, r0.zw, 0).xyz; - r2.yz = r2.yz * float2(2,2) + float2(-1,-1); - r4.x = dot(float2(1,1), abs(r2.yz)); - r4.y = 1 + -r4.x; - r4.w = cmp(r4.y < 0); - r5.xy = cmp(r2.yz >= float2(0,0)); - r5.zw = float2(1,1) + -abs(r2.zy); - r5.xy = r5.xy ? float2(1,1) : float2(-1,-1); - r5.xy = r5.zw * r5.xy; - r4.xz = r4.ww ? r5.xy : r2.yz; - r2.y = dot(r4.xyz, r4.xyz); - r2.y = rsqrt(r2.y); - r4.xzw = r4.xyz * r2.yyy; - r5.xy = t5.SampleLevel(s1_s, r0.zw, 0).xy; - r6.xyz = cb0[5].xyz * -r3.yyy; - r6.xyz = cb0[4].xyz * r3.xxx + r6.xyz; - r6.xyz = cb0[6].xyz * r3.zzz + r6.xyz; - r6.xyz = cb0[7].xyz + r6.xyz; - r5.zw = cmp(float2(0.5,0.5) < cb0[226].xy); - if (r5.z != 0) { - r2.z = abs(r4.x) + abs(r4.z); - r2.z = r2.z + abs(r4.w); - r2.z = 1 / r2.z; - r7.xyz = abs(r4.xzw) * r2.zzz; - r8.xyzw = float4(0,1,0.707105994,0) * r7.xxyy; - r7.xyw = r8.xxy + r8.zwz; - r7.xyz = r7.zzz * float3(1,0,0) + r7.xyw; - r8.xyz = cb0[229].xxx * r6.xyz; - r2.z = t4.SampleLevel(s2_s, r8.xyz, 0).x; - r2.z = r2.z * 2 + -1; - r7.xyz = r7.xyz * r2.zzz; - r2.z = abs(r4.z); - r2.z = -0.699999988 + r2.z; - r2.z = saturate(4 * r2.z); - r5.z = r2.z * -2 + 3; - r2.z = r2.z * r2.z; - r2.z = r5.z * r2.z; - r5.z = cb0[229].y + -cb0[229].z; - r2.z = r2.z * r5.z + cb0[229].z; - r7.xyz = r7.xyz * r2.zzz; - } else { - r7.xyz = float3(0,0,0); - } - r2.y = -r4.y * r2.y + -0.200000003; - if (r5.w != 0) { - r8.xyz = cb0[233].zzz * r4.xzw; - r9.xyz = cb0[225].yyy * float3(0,1,0); - r8.xyz = r8.xyz * cb0[225].xxx + r9.xyz; - r2.z = max(0, -r4.z); - r2.z = min(0.899999976, r2.z); - r2.z = 1 + -r2.z; - r4.y = saturate(-10 * r2.y); - r5.z = r4.y * -2 + 3; - r4.y = r4.y * r4.y; - r4.y = r5.z * r4.y; - r4.y = max(0.100000001, r4.y); - r4.y = min(1, r4.y); - r2.z = r4.y * r2.z; - r8.xyz = r8.xyz * r2.zzz + r6.xyz; - r7.xyz = r8.xyz + r7.xyz; - r8.xyz = cb2[1].xyz * r7.yyy; - r7.xyw = cb2[0].xyz * r7.xxx + r8.xyz; - r7.xyz = cb2[2].xyz * r7.zzz + r7.xyw; - r7.xyz = cb2[3].xyz + r7.xyz; - r8.x = r7.x * 0.5 + cb2[4].x; - r2.z = r7.y * 0.5 + 0.5; - r8.z = cb2[4].y + -r2.z; - r5.zw = float2(0.5,1) + r8.xz; - r2.z = max(0.00048828125, r7.z); - r2.z = t3.SampleCmpLevelZero(s3_s, r5.zw, r2.z).x; - } else { - r2.z = 1; - } - r5.zw = -cb0[44].xz + r6.xz; - r4.y = saturate(r4.z); - r6.x = -cb0[230].w + 1; - r4.y = r4.y * r6.x + cb0[230].w; - r6.x = r4.y * r2.z; - r6.y = cb0[222].w * 0.0500000119; - r5.z = max(abs(r5.z), abs(r5.w)); - r5.z = -cb0[222].w * 0.699999988 + r5.z; - r5.w = 1 / r6.y; - r5.z = saturate(r5.z * r5.w); - r5.w = r5.z * -2 + 3; - r5.z = r5.z * r5.z; - r5.z = r5.w * r5.z; - r2.z = -r4.y * r2.z + 1; - r2.z = r5.z * r2.z + r6.x; - r2.z = 1 + -r2.z; - r4.y = r5.x * r2.z; - r5.z = 1 + -r2.w; - r5.w = saturate(r5.z * cb0[222].z + cb0[222].y); - r5.w = r5.w * -0.299999952 + 0.899999976; - r6.x = sqrt(r5.z); - r5.w = r6.x + r5.w; - r5.w = -0.600000024 + r5.w; - r5.w = min(1, r5.w); - r5.w = max(r5.w, r5.z); - r5.w = min(0.99000001, r5.w); - r6.x = saturate(-cb0[222].x + 2); - r6.x = cb0[222].x * r6.x; - r2.y = saturate(3.33333325 * r2.y); - r6.y = r2.y * -2 + 3; - r2.y = r2.y * r2.y; - r2.y = -r6.y * r2.y + 1; - r2.y = r6.x * r2.y; - r2.z = -r5.x * r2.z + 1; - r2.y = r2.y * r2.z; - r2.z = r5.w + -r5.z; - r2.y = r2.y * r2.z + r5.z; - r2.y = 1 + -r2.y; - r2.z = min(1, r2.y); - r5.x = min(r5.x, r5.y); - r2.y = r2.y + -r2.z; - r2.y = r5.x * r2.y + r2.z; - r2.z = r2.w + -r2.y; - r2.y = r4.y * r2.z + r2.y; - r2.z = r2.y * r2.y; - r2.z = r2.z * r2.z; - r5.xyz = cb0[1].xyz * r4.zzz; - r5.xyz = cb0[0].xyz * r4.xxx + r5.xyz; - r5.xyz = cb0[2].xyz * r4.www + r5.xyz; - r6.xy = float2(-0.0700000003,0.0199999996) / r2.xx; - r4.y = 1.44269502 * r6.x; - r4.y = exp2(r4.y); - r4.y = r4.y + r4.y; - r4.y = max(0.125, r4.y); - r4.y = min(1, r4.y); - r4.y = cb1[3].x * r4.y; - r4.y = ceil(r4.y); - r4.y = max((shader_injection.improved_ssr >= 0.5f) ? 256 : 32, r4.y); - r2.w = cmp(r2.w >= 0.300000012); - r5.w = 0.125 * r4.y; - r2.w = r2.w ? r5.w : r4.y; - r3.w = -r3.y; - r3.y = dot(r3.xzw, r3.xzw); - r3.y = rsqrt(r3.y); - r3.xyz = r3.xwz * r3.yyy; - r3.w = dot(r3.xyz, r5.xyz); - r4.y = r3.w + r3.w; - r3.xyz = r5.xyz * -r4.yyy + r3.xyz; - r5.xyzw = cb0[9].xyzw * r3.yyyy; - r5.xyzw = cb0[8].xyzw * r3.xxxx + r5.xyzw; - r5.xyzw = cb0[10].xyzw * r3.zzzz + r5.xyzw; - r1.w = 1; - r5.xyzw = r5.xyzw * float4(1,-1,1,1) + r1.xyzw; - r3.xyz = r5.xyz / r5.www; - r3.xyz = r3.xyz + -r1.xyz; - r1.w = dot(r3.xy, r3.xy); - r1.w = sqrt(r1.w); - r4.y = 0.5 * r1.w; - r5.xy = r1.xy * r4.yy + r3.xy; - r5.xy = -r1.ww * float2(0.5,0.5) + abs(r5.xy); - r5.xy = max(float2(0,0), r5.xy); - r5.xy = r5.xy / abs(r3.xy); - r5.xy = float2(1,1) + -r5.xy; - r1.w = min(r5.x, r5.y); - r1.w = r1.w / r4.y; - r3.xyz = r3.xyz * r1.www; - r1.w = abs(r3.z) / r2.w; - r1.w = max(9.99999975e-05, r1.w); - r4.y = 1 / r2.w; - r3.xyz = float3(0.5,0.5,1) * r3.xyz; - r3.xyz = r3.xyz * r4.yyy; - r5.xy = cb1[0].xy * r3.xy; - r4.y = max(abs(r5.x), abs(r5.y)); - r5.x = cmp(r4.y < 1); - r4.y = 0.00100000005 + r4.y; - r4.y = 1 / r4.y; - r5.y = trunc(cb1[1].x); - r0.xy = r5.yy * float2(2.08299994,4.8670001) + r0.xy; - r0.x = dot(r0.xy, float2(0.0671105608,0.00583714992)); - r0.x = frac(r0.x); - r0.x = 52.9829178 * r0.x; - r0.x = frac(r0.x); - r0.x = r5.x ? r4.y : r0.x; - r5.xyz = r1.xyz * float3(0.5,0.5,1) + float3(0.5,0.5,0); - r5.xyz = r3.xyz * r0.xxx + r5.xyz; - r0.x = t0.SampleLevel(s0_s, r5.xy, 0).x; - r0.x = r5.z + -r0.x; - r6.xzw = float3(0,0,0); - r7.xyz = float3(0,0,0); - r8.xyz = r5.xyz; - r0.y = 0; - r4.y = 0; - r5.w = r0.x; - while (true) { - r7.w = cmp(r4.y < r2.w); - if (r7.w != 0) { - r9.xyzw = r3.xyxy * float4(1,1,2,2) + r8.xyxy; - r10.xyzw = r3.xyxy * float4(3,3,4,4) + r8.xyxy; - r11.xyzw = r3.zzzz * float4(1,2,3,4) + r8.zzzz; - r12.x = t0.SampleLevel(s0_s, r9.xy, 0).x; - r12.y = t0.SampleLevel(s0_s, r9.zw, 0).x; - r12.z = t0.SampleLevel(s0_s, r10.xy, 0).x; - r12.w = t0.SampleLevel(s0_s, r10.zw, 0).x; - r9.xyzw = -r12.xyzw + r11.xyzw; - r10.xyzw = r9.xyzw + r1.wwww; - r10.xyzw = cmp(abs(r10.xyzw) < r1.wwww); - r11.xy = (int2)r10.zw | (int2)r10.xy; - r7.w = (int)r11.y | (int)r11.x; - if (r7.w != 0) { - r11.xy = r10.zz ? r9.zy : r9.wz; - r9.yz = r10.yy ? r9.yx : r11.xy; - r7.w = r10.x ? r9.x : r9.y; - r8.w = r10.x ? r5.w : r9.z; - r9.x = r10.z ? 2 : 3; - r9.x = r10.y ? 1 : r9.x; - r9.x = r10.x ? 0 : r9.x; - r7.w = r8.w + -r7.w; - r7.w = saturate(r8.w / r7.w); - r7.w = r9.x + r7.w; - r9.xyz = r3.xyz * r7.www + r8.xyz; - r0.y = -1; - r7.xyz = r9.xyz; - break; - } - r8.xyz = r3.xyz * float3(4,4,4) + r8.xyz; - r4.y = 4 + r4.y; - r6.xzw = r8.xyz; - r0.y = 0; - r5.w = r9.w; - continue; - } else { - r7.xyz = r6.xzw; - r0.y = 0; - break; - } - r0.y = 0; - } - if (r0.y != 0) { - r0.x = max(r7.x, r7.y); - r0.x = 1 + -r0.x; - r0.y = min(r7.x, r7.y); - r0.x = min(r0.x, r0.y); - r3.xy = t2.SampleLevel(s0_s, r7.xy, 0).xy; - r5.xy = abs(r3.xy) * float2(2,2) + float2(-1,-1); - r5.xy = r5.xy * r5.xy; - r5.xy = r5.xy * r5.xy; - r3.xy = float2(-0.5,-0.5) + r3.xy; - r5.zw = cmp(float2(0,0) < r3.xy); - r3.xy = cmp(r3.xy < float2(0,0)); - r3.xy = (int2)-r5.zw + (int2)r3.xy; - r3.xy = (int2)r3.xy; - r3.xy = r5.xy * r3.xy; - r0.y = -cb1[2].z + 1; - r5.xy = r3.xy * r0.yy; - r1.w = cmp(cb1[1].y < r0.x); - r0.x = saturate(r0.x / cb1[1].y); - r0.x = r1.w ? 1 : r0.x; - r1.w = saturate(abs(r3.w) * cb1[1].z + cb1[1].w); - r1.w = 1 + -r1.w; - r0.x = r1.w * r0.x; - r1.w = cmp(r2.y < 0.100000001); - r2.x = 1 / r2.x; - r2.x = 100 + -r2.x; - r2.x = saturate(0.100000001 * r2.x); - r1.w = r1.w ? 1 : r2.x; - r0.x = r1.w * r0.x; - r0.zw = -r3.xy * r0.yy + r7.xy; - } else { - r5.xy = float2(0,0); - r0.x = 0; - } - r2.xy = t2.SampleLevel(s0_s, r0.zw, 0).xy; - r3.xy = abs(r2.xy) * float2(2,2) + float2(-1,-1); - r3.xy = r3.xy * r3.xy; - r0.y = 2 / r2.z; - r0.y = -1 + r0.y; - r0.y = 1 / r0.y; - r0.y = -2.03504682 * r0.y; - r0.y = exp2(r0.y); - r1.w = 1 + -r0.y; - r1.w = sqrt(r1.w); - r2.w = r0.y * -0.0187292993 + 0.0742610022; - r2.w = r2.w * r0.y + -0.212114394; - r0.y = r2.w * r0.y + 1.57072878; - r0.y = r0.y * r1.w; - r8.xyzw = cb0[25].xyzw * r1.yyyy; - r8.xyzw = cb0[24].xyzw * r1.xxxx + r8.xyzw; - r1.xyzw = cb0[26].xyzw * r1.zzzz + r8.xyzw; - r1.xyzw = cb0[27].xyzw + r1.xyzw; - r1.xyzw = r1.xyzw / r1.wwww; - r3.zw = r7.xy * float2(2,2) + float2(-1,-1); - r8.xyzw = cb0[25].xyzw * r3.wwww; - r8.xyzw = cb0[24].xyzw * r3.zzzz + r8.xyzw; - r7.xyzw = cb0[26].xyzw * r7.zzzz + r8.xyzw; - r7.xyzw = cb0[27].xyzw + r7.xyzw; - r6.xzw = cb0[44].xyz + -r1.xyz; - r2.w = dot(r6.xzw, r6.xzw); - r3.z = rsqrt(r2.w); - r8.xyz = r6.xzw * r3.zzz; - r2.w = sqrt(r2.w); - r3.w = cmp(abs(r4.w) < 0.999000013); - r9.z = r3.w ? 0 : 1; - r9.y = r3.w ? 1.000000 : 0; - r9.x = 0; - r10.xyz = r9.xyz * r4.xzw; - r9.xyz = r9.zxy * r4.zwx + -r10.xyz; - r3.w = dot(r9.xyz, r9.xyz); - r3.w = rsqrt(r3.w); - r9.xyz = r9.xyz * r3.www; - r7.xyzw = r7.xyzw / r7.wwww; - r1.xyzw = r7.xyzw + -r1.xyzw; - r1.x = dot(r1.xyzw, r1.xyzw); - r1.x = sqrt(r1.x); - r1.yzw = r9.zxy * r8.xyz; - r1.yzw = r9.yzx * r8.yzx + -r1.yzw; - sincos(r0.y, r7.x, r10.x); - r7.yzw = -r8.xyz * r2.www + cb0[44].xyz; - r10.yzw = r9.xyz * r4.xzw; - r4.xyz = r4.wxz * r9.yzx + -r10.yzw; - r9.xyz = r4.xyz * r8.xyz; - r4.xyz = r4.zxy * r8.yzx + -r9.xyz; - r0.y = r1.x + r2.w; - r9.xyz = r8.xyz * r0.yyy; - r10.yzw = cb0[21].xyw * -r9.yyy; - r9.xyw = cb0[20].xyw * -r9.xxx + r10.yzw; - r9.xyz = cb0[22].xyw * -r9.zzz + r9.xyw; - r9.xyz = cb0[23].xyw + r9.xyz; - r5.zw = r9.xy / r9.zz; - r5.zw = r5.zw * float2(0.5,0.5) + float2(0.5,0.5); - r5.zw = cb1[0].xy * r5.zw; - r0.y = dot(r1.zwy, -r8.xyz); - r9.xyz = r1.zwy * r0.yyy; - r10.yzw = -r6.xzw * r3.zzz + -r9.xyz; - r9.xyz = r10.xxx * r10.yzw + r9.xyz; - r10.yzw = r1.yzw * -r8.yzx; - r1.yzw = r1.wyz * -r8.zxy + -r10.yzw; - r1.yzw = r1.yzw * r7.xxx + r9.xyz; - r1.yzw = r1.yzw * r1.xxx + r7.yzw; - r1.yzw = -cb0[44].xyz + r1.yzw; - r9.xyz = cb0[21].xyw * r1.zzz; - r9.xyz = cb0[20].xyw * r1.yyy + r9.xyz; - r1.yzw = cb0[22].xyw * r1.www + r9.xyz; - r1.yzw = cb0[23].xyw + r1.yzw; - r0.y = dot(r4.yzx, -r8.xyz); - r9.xyz = r4.yzx * r0.yyy; - r6.xzw = -r6.xzw * r3.zzz + -r9.xyz; - r6.xzw = r10.xxx * r6.xzw + r9.xyz; - r9.xyz = r4.xyz * -r8.yzx; - r4.xyz = r4.zxy * -r8.zxy + -r9.xyz; - r4.xyz = r4.xyz * r7.xxx + r6.xzw; - r4.xyz = r4.xyz * r1.xxx + r7.yzw; - r4.xyz = -cb0[44].xyz + r4.xyz; - r6.xzw = cb0[21].xyw * r4.yyy; - r4.xyw = cb0[20].xyw * r4.xxx + r6.xzw; - r4.xyz = cb0[22].xyw * r4.zzz + r4.xyw; - r4.xyz = cb0[23].xyw + r4.xyz; - - // Write UV coords to u0 - u0[vThreadID.xy] = r0.zwzz; - - r0.yz = r3.xy * r3.xy; - r2.xy = float2(-0.5,-0.5) + r2.xy; - r3.xy = cmp(float2(0,0) < r2.xy); - r2.xy = cmp(r2.xy < float2(0,0)); - r2.xy = (int2)-r3.xy + (int2)r2.xy; - r2.xy = (int2)r2.xy; - r0.yz = r0.yz * r2.xy + r5.xy; - r0.yz = cb0[82].xy * r0.yz; - r0.y = dot(r0.yz, r0.yz); - r0.y = sqrt(r0.y); - r0.z = log2(r6.y); - r0.z = saturate(r0.z * 0.693147182 + 0.00999999978); - r0.y = -r0.y * r0.z; - r0.y = 1.44269502 * r0.y; - r3.xzw = exp2(r0.yyy); - r0.y = cmp(9.99999975e-05 >= r2.z); - r0.zw = r1.yz / r1.ww; - r0.zw = r0.zw * float2(0.5,0.5) + float2(0.5,0.5); - r0.zw = -r0.zw * cb1[0].xy + r5.zw; - r0.z = dot(r0.zw, r0.zw); - r1.xy = r4.xy / r4.zz; - r1.xy = r1.xy * float2(0.5,0.5) + float2(0.5,0.5); - r1.xy = -r1.xy * cb1[0].xy + r5.zw; - r0.w = dot(r1.xy, r1.xy); - r0.z = r0.z + r0.w; - r0.z = sqrt(r0.z); - r0.z = 0.5 * r0.z; - r0.z = log2(r0.z); - r0.z = max(0, r0.z); - r0.z = min(cb1[5].y, r0.z); - r0.z = r0.z / cb1[5].y; - r3.y = r0.y ? 0 : r0.z; - - // Write blend weights to u1 - // r3.x, r3.z = temporal confidence (how much history to blend in) - // r3.y = mip/blur level (controls spatial denoiser blur radius) - // r3.w = same as r3.x - // - // Vanilla: unchanged - // Improved: keep temporal confidence for anti-firefly, disable spatial blur - // on smooth surfaces but retain it for rough ones (wood, stone) - - if (shader_injection.improved_ssr >= 0.5f) { - float mip_threshold = 0.25f; - float adjusted_mip = saturate((r3.y - mip_threshold) / (1.0f - mip_threshold)); - u1[vThreadID.xy] = float4(r3.x, adjusted_mip, r3.z, r3.x); - } else { - u1[vThreadID.xy] = r3.xyzw; - } - - u2[vThreadID.xy] = r0.xxxx; -} \ No newline at end of file From 03d2a2ef34aaea097ef8fa4969fdbdcf06876bc6 Mon Sep 17 00:00:00 2001 From: spiwar <92001312+spiwar@users.noreply.github.com> Date: Thu, 14 May 2026 15:49:28 -0600 Subject: [PATCH 20/40] fix(endfield): mix mb functions used in common.hlsl --- src/games/endfield/common.hlsl | 179 +++++++++++++-------------------- 1 file changed, 68 insertions(+), 111 deletions(-) diff --git a/src/games/endfield/common.hlsl b/src/games/endfield/common.hlsl index 28bcd42571..cb2774f566 100644 --- a/src/games/endfield/common.hlsl +++ b/src/games/endfield/common.hlsl @@ -58,6 +58,7 @@ float3 CorrectHueAndPurityMBGated( float curve_gamma = 1.f, float2 mb_white_override = float2(-1.f, -1.f), float t_min = 1e-6f) { + static const float kNearWhiteEpsilon = 1e-14f; if (purity_strength <= 0.f && hue_strength <= 0.f) { return target_color_bt709; } @@ -65,100 +66,61 @@ float3 CorrectHueAndPurityMBGated( float3 target_color_bt2020 = renodx::color::bt2020::from::BT709(target_color_bt709); float3 reference_color_bt2020 = renodx::color::bt2020::from::BT709(reference_color_bt709); - if (hue_strength <= 0.f) { - float target_purity01 = renodx::color::macleod_boynton::ApplyBT2020( - target_color_bt2020, 1.f, 1.f, mb_white_override, t_min) - .purityCur01; - float reference_purity01 = renodx::color::macleod_boynton::ApplyBT2020( - reference_color_bt2020, 1.f, 1.f, mb_white_override, t_min) - .purityCur01; - float applied_purity01 = lerp(target_purity01, reference_purity01, saturate(purity_strength)); - return renodx::color::bt709::from::BT2020( - renodx::color::macleod_boynton::ApplyBT2020( - target_color_bt2020, applied_purity01, curve_gamma, mb_white_override, t_min) - .rgbOut); - } + float3 target_mb = renodx::color::macleod_boynton::from::BT2020(target_color_bt2020); + float3 reference_mb = renodx::color::macleod_boynton::from::BT2020(reference_color_bt2020); - float3 target_lms = mul(renodx::color::macleod_boynton::XYZ_TO_LMS_2006, - mul(renodx::color::BT2020_TO_XYZ_MAT, target_color_bt2020)); - float target_t = target_lms.x + target_lms.y; - if (target_t <= t_min) { + if (target_mb.z <= t_min) { return target_color_bt709; } float hue_blend = saturate(hue_strength) * - saturate(renodx::math::DivideSafe(target_t - hue_t_ramp_start, + saturate(renodx::math::DivideSafe(target_mb.z - hue_t_ramp_start, hue_t_ramp_end - hue_t_ramp_start, 0.f)); - float target_purity01 = renodx::color::macleod_boynton::ApplyBT2020( - target_color_bt2020, 1.f, 1.f, mb_white_override, t_min) - .purityCur01; - float reference_purity01 = renodx::color::macleod_boynton::ApplyBT2020( - reference_color_bt2020, 1.f, 1.f, mb_white_override, t_min) - .purityCur01; - float applied_purity01 = lerp(target_purity01, reference_purity01, saturate(purity_strength)); - - if (hue_blend <= 0.f) { - return renodx::color::bt709::from::BT2020( - renodx::color::macleod_boynton::ApplyBT2020( - target_color_bt2020, applied_purity01, curve_gamma, mb_white_override, t_min) - .rgbOut); - } - - float3 reference_lms = mul(renodx::color::macleod_boynton::XYZ_TO_LMS_2006, - mul(renodx::color::BT2020_TO_XYZ_MAT, reference_color_bt2020)); - float2 white = (mb_white_override.x >= 0.f && mb_white_override.y >= 0.f) ? mb_white_override - : renodx::color::macleod_boynton::MB_White_D65(); + : renodx::color::macleod_boynton::from::D65XY(); - float2 target_direction = renodx::color::macleod_boynton::MB_From_LMS(target_lms) - white; - float2 reference_direction = renodx::color::macleod_boynton::MB_From_LMS(reference_lms) - white; + float2 target_direction = target_mb.xy - white; + float2 reference_direction = reference_mb.xy - white; float target_len_sq = dot(target_direction, target_direction); float reference_len_sq = dot(reference_direction, reference_direction); - if (target_len_sq < renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON && - reference_len_sq < renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON) { - return renodx::color::bt709::from::BT2020( - renodx::color::macleod_boynton::ApplyBT2020( - target_color_bt2020, applied_purity01, curve_gamma, mb_white_override, t_min) - .rgbOut); + if (target_len_sq < kNearWhiteEpsilon && reference_len_sq < kNearWhiteEpsilon) { + return target_color_bt709; } - float2 target_unit = (target_len_sq > renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON) + float target_len = sqrt(max(target_len_sq, 0.f)); + float reference_len = sqrt(max(reference_len_sq, 0.f)); + + float purity_blend = pow(saturate(purity_strength), max(curve_gamma, 1e-6f)); + float applied_purity = lerp(target_len, reference_len, purity_blend); + + float2 target_unit = (target_len_sq > kNearWhiteEpsilon) ? target_direction * rsqrt(target_len_sq) : float2(0.f, 0.f); - float2 reference_unit = (reference_len_sq > renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON) + float2 reference_unit = (reference_len_sq > kNearWhiteEpsilon) ? reference_direction * rsqrt(reference_len_sq) : target_unit; - if (target_len_sq <= renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON) { + if (target_len_sq <= kNearWhiteEpsilon) { target_unit = reference_unit; } - float2 blended_unit = lerp(target_unit, reference_unit, hue_blend); - float blended_len_sq = dot(blended_unit, blended_unit); - if (blended_len_sq <= renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON) { - blended_unit = (hue_blend >= 0.5f) ? reference_unit : target_unit; - blended_len_sq = dot(blended_unit, blended_unit); - } - blended_unit *= rsqrt(max(blended_len_sq, 1e-20f)); - - float seed_len = sqrt(max(target_len_sq, 0.f)); - if (seed_len <= 1e-6f) { - seed_len = sqrt(max(reference_len_sq, 0.f)); + float2 blended_unit = target_unit; + if (hue_blend > 0.f) { + blended_unit = lerp(target_unit, reference_unit, hue_blend); + float blended_len_sq = dot(blended_unit, blended_unit); + if (blended_len_sq <= kNearWhiteEpsilon) { + blended_unit = (hue_blend >= 0.5f) ? reference_unit : target_unit; + blended_len_sq = dot(blended_unit, blended_unit); + } + blended_unit *= rsqrt(max(blended_len_sq, 1e-20f)); } - seed_len = max(seed_len, 1e-6f); - - float3 seed_bt2020 = mul( - renodx::color::XYZ_TO_BT2020_MAT, - mul(renodx::color::macleod_boynton::LMS_TO_XYZ_2006, - renodx::color::macleod_boynton::LMS_From_MB_T(white + blended_unit * seed_len, target_t))); - return renodx::color::bt709::from::BT2020( - renodx::color::macleod_boynton::ApplyBT2020( - seed_bt2020, applied_purity01, curve_gamma, mb_white_override, t_min) - .rgbOut); + float2 final_mb_xy = white + blended_unit * max(applied_purity, 0.f); + float3 final_bt2020 = renodx::color::bt2020::from::MacLeodBoynton(final_mb_xy, target_mb.z); + return renodx::color::bt709::from::BT2020(final_bt2020); } float3 ApplyMBLowHueThenHighHueAndPurity( @@ -171,35 +133,27 @@ float3 ApplyMBLowHueThenHighHueAndPurity( float curve_gamma = 1.f, float2 mb_white_override = float2(-1.f, -1.f), float t_min = 1e-6f) { - const float kNearWhiteEpsilon = renodx::color::macleod_boynton::MB_NEAR_WHITE_EPSILON; + const float kNearWhiteEpsilon = 1e-14f; float3 target_bt2020 = renodx::color::bt2020::from::BT709(target_bt709); float3 low_reference_bt2020 = renodx::color::bt2020::from::BT709(low_hue_reference_bt709); float3 high_reference_bt2020 = renodx::color::bt2020::from::BT709(high_reference_bt709); - float high_purity01 = renodx::color::macleod_boynton::ApplyBT2020( - high_reference_bt2020, 1.f, 1.f, mb_white_override, t_min) - .purityCur01; - - float3 target_lms = mul(renodx::color::macleod_boynton::XYZ_TO_LMS_2006, - mul(renodx::color::BT2020_TO_XYZ_MAT, target_bt2020)); - float3 low_reference_lms = mul(renodx::color::macleod_boynton::XYZ_TO_LMS_2006, - mul(renodx::color::BT2020_TO_XYZ_MAT, low_reference_bt2020)); - float3 high_reference_lms = mul(renodx::color::macleod_boynton::XYZ_TO_LMS_2006, - mul(renodx::color::BT2020_TO_XYZ_MAT, high_reference_bt2020)); + float3 target_mb = renodx::color::macleod_boynton::from::BT2020(target_bt2020); + float3 low_reference_mb = renodx::color::macleod_boynton::from::BT2020(low_reference_bt2020); + float3 high_reference_mb = renodx::color::macleod_boynton::from::BT2020(high_reference_bt2020); - float target_t = target_lms.x + target_lms.y; - if (target_t <= t_min) { + if (target_mb.z <= t_min) { return target_bt709; } float2 white = (mb_white_override.x >= 0.f && mb_white_override.y >= 0.f) ? mb_white_override - : renodx::color::macleod_boynton::MB_White_D65(); + : renodx::color::macleod_boynton::from::D65XY(); - float2 target_direction = renodx::color::macleod_boynton::MB_From_LMS(target_lms) - white; - float2 low_reference_direction = renodx::color::macleod_boynton::MB_From_LMS(low_reference_lms) - white; - float2 high_reference_direction = renodx::color::macleod_boynton::MB_From_LMS(high_reference_lms) - white; + float2 target_direction = target_mb.xy - white; + float2 low_reference_direction = low_reference_mb.xy - white; + float2 high_reference_direction = high_reference_mb.xy - white; float target_len_sq = dot(target_direction, target_direction); float low_len_sq = dot(low_reference_direction, low_reference_direction); @@ -219,36 +173,31 @@ float3 ApplyMBLowHueThenHighHueAndPurity( : low_unit; float hue_blend = saturate(high_hue_strength) * - saturate(renodx::math::DivideSafe(target_t - hue_t_ramp_start, + saturate(renodx::math::DivideSafe(target_mb.z - hue_t_ramp_start, hue_t_ramp_end - hue_t_ramp_start, 0.f)); float2 hue_unit = lerp(low_unit, high_unit, hue_blend); float hue_len_sq = dot(hue_unit, hue_unit); if (hue_len_sq <= kNearWhiteEpsilon) { - return renodx::color::bt709::from::BT2020( - renodx::color::macleod_boynton::ApplyBT2020( - target_bt2020, high_purity01, curve_gamma, mb_white_override, t_min) - .rgbOut); + if (target_len_sq <= kNearWhiteEpsilon) { + return target_bt709; + } + float target_len = sqrt(max(target_len_sq, 0.f)); + float high_len = sqrt(max(high_len_sq, 0.f)); + float applied_purity = pow(max(high_len, 0.f), max(curve_gamma, 1e-6f)); + float2 target_unit = target_direction * rsqrt(target_len_sq); + float2 final_mb_xy = white + target_unit * max(applied_purity, 0.f); + float3 final_bt2020 = renodx::color::bt2020::from::MacLeodBoynton(final_mb_xy, target_mb.z); + return renodx::color::bt709::from::BT2020(final_bt2020); } hue_unit *= rsqrt(hue_len_sq); - - float seed_len = sqrt(max(target_len_sq, 0.f)); - if (seed_len <= 1e-6f) { - seed_len = sqrt(max(lerp(low_len_sq, high_len_sq, hue_blend), 0.f)); - } - seed_len = max(seed_len, 1e-6f); - - float3 seed_bt2020 = mul( - renodx::color::XYZ_TO_BT2020_MAT, - mul(renodx::color::macleod_boynton::LMS_TO_XYZ_2006, - renodx::color::macleod_boynton::LMS_From_MB_T(white + hue_unit * seed_len, target_t))); - - return renodx::color::bt709::from::BT2020( - renodx::color::macleod_boynton::ApplyBT2020( - seed_bt2020, high_purity01, curve_gamma, mb_white_override, t_min) - .rgbOut); + float high_len = sqrt(max(high_len_sq, 0.f)); + float applied_purity = pow(max(high_len, 0.f), max(curve_gamma, 1e-6f)); + float2 final_mb_xy = white + hue_unit * max(applied_purity, 0.f); + float3 final_bt2020 = renodx::color::bt2020::from::MacLeodBoynton(final_mb_xy, target_mb.z); + return renodx::color::bt709::from::BT2020(final_bt2020); } float3 ApplyHermiteSplineByMaxChannel(float3 input, float peak_ratio, float white_clip = 100.f) { @@ -386,14 +335,22 @@ float3 ApplySaturationBlowoutHueCorrectionHighlightSaturation(float3 tonemapped, if (abs(mb_scale - 1.f) > 1e-6f) { float3 color_bt2020 = renodx::color::bt2020::from::BT709(color); - color = renodx::color::bt709::from::BT2020( - renodx::color::macleod_boynton::ApplyScaleBT2020(color_bt2020, mb_scale) - .rgbOut); + float3 color_mb = renodx::color::macleod_boynton::from::BT2020(color_bt2020); + float2 white = renodx::color::macleod_boynton::from::D65XY(); + float2 direction = color_mb.xy - white; + float len_sq = dot(direction, direction); + if (len_sq > 1e-14f) { + float len = sqrt(len_sq); + float scaled_len = len * mb_scale; + float2 scaled_xy = white + direction * (scaled_len / len); + color_bt2020 = renodx::color::bt2020::from::MacLeodBoynton(scaled_xy, color_mb.z); + } + color = renodx::color::bt709::from::BT2020(color_bt2020); } color = renodx::color::bt709::clamp::AP1(color); - /* Disabled OKLab path (kept for reference) + /* Old OKlab stuff float3 perceptual_new = renodx::color::oklab::from::BT709(color); From b6b913716b1cd0a6da5638ffebe6c68f5ddb8455 Mon Sep 17 00:00:00 2001 From: spiwar <92001312+spiwar@users.noreply.github.com> Date: Thu, 14 May 2026 15:54:01 -0600 Subject: [PATCH 21/40] fix(endfield): run sdr code if vanilla, fix imgui compilation issues --- src/games/endfield/addon.cpp | 4 +- .../others/lutbuilder_0x88BD6DCA.ps_5_0.hlsl | 66 +++++++++---------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 189e4a28dd..c1a97a8ffd 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -790,11 +790,11 @@ renodx::utils::settings::Settings settings = { .value_type = renodx::utils::settings::SettingValueType::CUSTOM, .label = std::string("Reshade shader bypass, applies on_drawn after game's deferred lighting pass. Only properly works with DLAA/TAAU 100 scaling atm"), .on_draw = []() { - ImGui::SetWindowFontScale(2.0f); + ImGui::PushFont(nullptr, ImGui::GetStyle().FontSizeBase * 2.0f); ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.0f, 0.0f, 0.0f, 1.0f)); ImGui::TextWrapped("Reshade shader bypass, applies on_drawn after game's deferred lighting pass. Only properly works with DLAA/TAAU 100 scaling atm"); ImGui::PopStyleColor(); - ImGui::SetWindowFontScale(1.0f); + ImGui::PopFont(); return false; }, }, diff --git a/src/games/endfield/others/lutbuilder_0x88BD6DCA.ps_5_0.hlsl b/src/games/endfield/others/lutbuilder_0x88BD6DCA.ps_5_0.hlsl index 822cc07a0e..d2bfc2174a 100644 --- a/src/games/endfield/others/lutbuilder_0x88BD6DCA.ps_5_0.hlsl +++ b/src/games/endfield/others/lutbuilder_0x88BD6DCA.ps_5_0.hlsl @@ -246,34 +246,34 @@ void main( r0.xyz = r1.xyz * r0.xxx; // ACES approximation (color * (a*color + b)) / (color * (c*color + d) + e) -#if 0 - r1.xyz = r0.xyz * float3(2.93604493, 2.93604493, 2.93604493) + float3(0.887121975, 0.887121975, 0.887121975); - r1.xyz = r0.xyz * r1.xyz + float3(0.806888998, 0.806888998, 0.806888998); - r1.xyz = float3(1, 1, 1) / r1.xyz; - r1.xyz = max(float3(9.99999975e-005, 9.99999975e-005, 9.99999975e-005), r1.xyz); - r2.xyz = r0.xyz * float3(2.78508496, 2.78508496, 2.78508496) + float3(0.107772, 0.107772, 0.107772); - r2.xyz = r2.xyz * r0.xyz; - r0.yzw = r2.xyz * r1.xyz; - r0.yzw = min(float3(1, 1, 1), r0.yzw); -#else - float3 untonemapped = r0.rgb; - float3 per_channel_tonemapped = float3( - ACESLikeScalar(untonemapped.x), - ACESLikeScalar(untonemapped.y), - ACESLikeScalar(untonemapped.z)); + if (RENODX_TONE_MAP_TYPE == 0.f) { + r1.xyz = r0.xyz * float3(2.93604493, 2.93604493, 2.93604493) + float3(0.887121975, 0.887121975, 0.887121975); + r1.xyz = r0.xyz * r1.xyz + float3(0.806888998, 0.806888998, 0.806888998); + r1.xyz = float3(1, 1, 1) / r1.xyz; + r1.xyz = max(float3(9.99999975e-005, 9.99999975e-005, 9.99999975e-005), r1.xyz); + r2.xyz = r0.xyz * float3(2.78508496, 2.78508496, 2.78508496) + float3(0.107772, 0.107772, 0.107772); + r2.xyz = r2.xyz * r0.xyz; + r0.yzw = r2.xyz * r1.xyz; + r0.yzw = min(float3(1, 1, 1), r0.yzw); + } else { + float3 untonemapped = r0.rgb; + float3 per_channel_tonemapped = float3( + ACESLikeScalar(untonemapped.x), + ACESLikeScalar(untonemapped.y), + ACESLikeScalar(untonemapped.z)); - float luminance_in = renodx::color::y::from::BT709(untonemapped); - float luminance_tonemapped = ACESLikeScalar(luminance_in); - float3 luminance_tonemapped_color = renodx::color::correct::Luminance( - untonemapped, - luminance_in, - luminance_tonemapped); + float luminance_in = renodx::color::y::from::BT709(untonemapped); + float luminance_tonemapped = ACESLikeScalar(luminance_in); + float3 luminance_tonemapped_color = renodx::color::correct::Luminance( + untonemapped, + luminance_in, + luminance_tonemapped); r0.yzw = ApplyMBLowHueThenHighHueAndPurity( - luminance_tonemapped_color, - untonemapped, - per_channel_tonemapped); -#endif + luminance_tonemapped_color, + untonemapped, + per_channel_tonemapped); + } r0.x = dot(r0.xyz, float3(0.272228986, 0.674081981, 0.0536894985)); r0.x = -0.5 + r0.x; @@ -285,14 +285,14 @@ void main( r1.x = dot(float3(1.70505154, -0.621790707, -0.083258681), r0.yzw); r1.y = dot(float3(-0.130257145, 1.14080286, -0.0105481902), r0.yzw); r1.z = dot(float3(-0.0240032692, -0.128968775, 1.15297163), r0.yzw); -#if 0 - r0.y = max(r1.x, r1.y); - r0.y = max(r0.y, r1.z); - r0.y = max(9.99999975e-006, r0.y); - r0.yzw = saturate(r1.xyz / r0.yyy); -#else - r0.yzw = r1.xyz; -#endif + if (RENODX_TONE_MAP_TYPE == 0.f) { + r0.y = max(r1.x, r1.y); + r0.y = max(r0.y, r1.z); + r0.y = max(9.99999975e-006, r0.y); + r0.yzw = saturate(r1.xyz / r0.yyy); + } else { + r0.yzw = r1.xyz; + } r0.yzw = r0.yzw + -r1.xyz; o0.xyz = (r0.xxx * r0.yzw + r1.xyz); o0.w = 1; From 4344d12e0e337f901e3fb6054afb550aefc37fc1 Mon Sep 17 00:00:00 2001 From: spiwar <92001312+spiwar@users.noreply.github.com> Date: Fri, 15 May 2026 21:44:28 -0600 Subject: [PATCH 22/40] fix(endfield): fix up vanilla/sdr mode --- src/games/endfield/addon.cpp | 6 +----- src/games/endfield/common.hlsl | 21 +-------------------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index c1a97a8ffd..baaf1e0834 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -351,7 +351,7 @@ renodx::utils::settings::Settings settings = { .can_reset = false, .label = "Tone Mapper", .section = "Tone Mapping", - .tooltip = "Sets the tone mapper type", + .tooltip = "Sets the tone mapper type. True Vanilla requires going back to the LOGIN MENU for all the changes to have an effect.", .labels = {"Vanilla", "RenoDRT"}, .is_visible = []() { return current_settings_mode >= 1; }, }, @@ -464,7 +464,6 @@ renodx::utils::settings::Settings settings = { .tooltip = "Hue retention strength.", .min = 0.f, .max = 100.f, - .is_enabled = []() { return shader_injection.tone_map_type >= 1; }, .parse = [](float value) { return value * 0.01f; }, .is_visible = []() { return false;}, }, @@ -477,7 +476,6 @@ renodx::utils::settings::Settings settings = { .tooltip = "Hue-shift emulation strength.", .min = 0.f, .max = 100.f, - .is_enabled = []() { return shader_injection.tone_map_type >= 1; }, .parse = [](float value) { return value * 0.01f; }, .is_visible = []() { return false; }, }, @@ -490,7 +488,6 @@ renodx::utils::settings::Settings settings = { .tooltip = "Per Channel Blowout strength.", .min = 0.f, .max = 100.f, - .is_enabled = []() { return shader_injection.tone_map_type >= 1; }, .parse = [](float value) { return value * 0.01f; }, .is_visible = []() { return false; }, }, @@ -943,7 +940,6 @@ renodx::utils::settings::Settings settings = { .label = "Encoding", .section = "Display Output", .labels = {"None", "SRGB", "2.2", "2.4", "HDR10", "scRGB"}, - .is_enabled = []() { return shader_injection.tone_map_type >= 1; }, .on_change_value = [](float previous, float current) { bool is_hdr10 = current == 4; shader_injection.swap_chain_encoding_color_space = (is_hdr10 ? 1.f : 0.f); diff --git a/src/games/endfield/common.hlsl b/src/games/endfield/common.hlsl index cb2774f566..a3e63da2cf 100644 --- a/src/games/endfield/common.hlsl +++ b/src/games/endfield/common.hlsl @@ -442,26 +442,7 @@ LUTSampleResult LUTSAMPLE( } float3 SDRGRADE(LUTSampleResult lut_sample) { - float3 graded = lut_sample.graded; - float3 graded_ap1 = lut_sample.graded_ap1; - float y = lut_sample.y; - - float3 hue_chrominance_reference_color = - renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 1.0f)); - - UserGradingConfig cg_config; - cg_config.saturation = 1.f; - cg_config.dechroma = .1f; - cg_config.hue_emulation_strength = 1.f; - cg_config.chrominance_emulation_strength = .5f; - cg_config.highlight_saturation = 0.f; - - float3 output = ApplySaturationBlowoutHueCorrectionHighlightSaturation( - graded, hue_chrominance_reference_color, y, cg_config); - output = renodx::color::bt2020::from::BT709(output); - output = renodx::tonemap::neutwo::MaxChannel(output, 1.0f, 2.0f); - output = renodx::color::bt709::from::BT2020(output); - return output; + return lut_sample.graded; } float3 HDRGRADE(LUTSampleResult lut_sample) { From d5ccda55a710fd2d5a9f694b1e6250a15ccf4924 Mon Sep 17 00:00:00 2001 From: spiwar <92001312+spiwar@users.noreply.github.com> Date: Sun, 17 May 2026 16:43:53 -0600 Subject: [PATCH 23/40] fix(endfield): retuned hue correction, change defaults --- src/games/endfield/addon.cpp | 8 ++++---- src/games/endfield/common.hlsl | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index baaf1e0834..eadd26eada 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -470,26 +470,26 @@ renodx::utils::settings::Settings settings = { new renodx::utils::settings::Setting{ .key = "ToneMapHueShift", .binding = &shader_injection.tone_map_hue_shift, - .default_value = 100.f, + .default_value = 85.f, .label = "Hue Shift", .section = "Tone Mapping", .tooltip = "Hue-shift emulation strength.", .min = 0.f, .max = 100.f, .parse = [](float value) { return value * 0.01f; }, - .is_visible = []() { return false; }, + .is_visible = []() { return current_settings_mode >= 1; }, }, new renodx::utils::settings::Setting{ .key = "ToneMapPerChannelBlowout", .binding = &shader_injection.tone_map_blowout, - .default_value = 25.f, + .default_value = 75.f, .label = "Per Channel Blowout", .section = "Tone Mapping", .tooltip = "Per Channel Blowout strength.", .min = 0.f, .max = 100.f, .parse = [](float value) { return value * 0.01f; }, - .is_visible = []() { return false; }, + .is_visible = []() { return current_settings_mode >= 1; }, }, new renodx::utils::settings::Setting{ .key = "ToneMapClampColorSpace", diff --git a/src/games/endfield/common.hlsl b/src/games/endfield/common.hlsl index a3e63da2cf..2579b55401 100644 --- a/src/games/endfield/common.hlsl +++ b/src/games/endfield/common.hlsl @@ -451,7 +451,7 @@ float3 HDRGRADE(LUTSampleResult lut_sample) { float y = lut_sample.y; float3 hue_chrominance_reference_color = - renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.5f)); + renodx::color::bt709::from::AP1(renodx::tonemap::ReinhardPiecewise(graded_ap1, 2.f, 0.18f)); UserGradingConfig cg_config = CreateColorGradeConfig(); From 380bd49a400c1c5af41292eed066f9f04e351318 Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Sun, 7 Jun 2026 02:32:05 +0200 Subject: [PATCH 24/40] fix(endfield): update shaders for 1.3.3 --- src/games/endfield/addon.cpp | 22 +- .../ao/ao-blur_0x3E137F65.cs_5_0.hlsl | 4 +- ....hlsl => gtao-main_0x9D8219CC.cs_5_0.hlsl} | 0 .../ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl | 4 +- .../gtao-vertical-blur_0x0995A677.cs_5_0.hlsl | 9 +- src/games/endfield/bloom/0x2CF2F67B.cso | Bin 0 -> 6456 bytes src/games/endfield/bloom/0x948BF835.cso | Bin 0 -> 5864 bytes src/games/endfield/bloom/0xC58C5FBA.cso | Bin 0 -> 10108 bytes ...loom-downsample-lut_0xC58C5FBA.cs_5_0.hlsl | 328 --- .../bloom-downsample_0x2CF2F67B.cs_5_0.hlsl | 224 -- .../bloom-downsample_0x948BF835.cs_5_0.hlsl | 204 -- .../deferred-lighting/0x0A8C4B9A.ps_5_0.asm | 1360 ----------- .../endfield/deferred-lighting/0x1B08FD76.cso | Bin 61996 -> 0 bytes .../endfield/deferred-lighting/0x1BA367EC.cso | Bin 0 -> 64076 bytes .../endfield/deferred-lighting/0x20CB4A05.cso | Bin 0 -> 62096 bytes .../deferred-lighting/0x355D50B7.ps_5_0.asm | 896 -------- .../{0xEA6F34B7.cso => 0x3826B75E.cso} | Bin 30552 -> 30524 bytes .../{0x5F55ACC9.cso => 0x46368E6B.cso} | Bin 27616 -> 27608 bytes .../deferred-lighting/0x4A42FD4A.ps_5_0.asm | 1559 ------------- .../{0x89E4F419.cso => 0x51B20E29.cso} | Bin 31080 -> 31052 bytes .../{0xD9882F6B.cso => 0x60D37BB1.cso} | Bin 52748 -> 52696 bytes .../deferred-lighting/0x69D13BAF.ps_5_0.asm | 1342 ----------- .../{0xDC895E4A.cso => 0x6B2D0D3F.cso} | Bin 49444 -> 49392 bytes .../deferred-lighting/0x7B4BA49D.ps_5_0.asm | 2040 ----------------- .../deferred-lighting/0x7C0172E6.ps_5_0.asm | 1545 ------------- .../endfield/deferred-lighting/0x8A27350D.cso | Bin 62296 -> 0 bytes .../deferred-lighting/0xA1716606.ps_5_0.asm | 2022 ---------------- .../{0xF314003E.cso => 0xBB9276D0.cso} | Bin 27224 -> 27216 bytes .../endfield/deferred-lighting/0xC70BDAA5.cso | Bin 62180 -> 0 bytes .../{0xB9D5AA7B.cso => 0xC75E6D72.cso} | Bin 48768 -> 48716 bytes .../endfield/deferred-lighting/0xE312F9FE.cso | Bin 0 -> 62180 bytes .../deferred-lighting/0xE9FA7952.ps_5_0.asm | 882 ------- .../endfield/deferred-lighting/0xEBD4CAC5.cso | Bin 0 -> 62296 bytes .../endfield/deferred-lighting/0xF45699A5.cso | Bin 62796 -> 0 bytes .../{0x32F53924.cso => 0xF50042EC.cso} | Bin 52244 -> 52192 bytes src/games/endfield/glass/0x048D5332.cso | Bin 57100 -> 52780 bytes src/games/endfield/glass/0x3FC1A55D.cso | Bin 0 -> 53204 bytes src/games/endfield/glass/0x6EC3380B.cso | Bin 0 -> 54656 bytes src/games/endfield/glass/0x91CF3135.cso | Bin 56364 -> 0 bytes src/games/endfield/glass/0xF52EED7A.cso | Bin 56676 -> 53252 bytes src/games/endfield/others/0x83D34AC2.cso | Bin 0 -> 13160 bytes .../sun-lens-dirt_0xC3217979.ps_5_0.hlsl | 4 +- .../others/taa_0xD6EB7D42.ps_5_0.hlsl | 448 ---- src/games/endfield/shadows/0x2F236158.cso | Bin 0 -> 1704 bytes .../endfield/shadows/0x2F236158.ps_5_0.hlsl | 72 - src/games/endfield/shadows/0xB295C5C4.cso | Bin 0 -> 1704 bytes .../endfield/shadows/0xB295C5C4.ps_5_0.hlsl | 72 - src/games/endfield/shadows/0xB4E7E6D9.cso | Bin 0 -> 3836 bytes src/games/endfield/shadows/0xCAB28784.cso | Bin 0 -> 7420 bytes .../endfield/shadows/0xCAB28784.ps_5_0.hlsl | 321 --- src/games/endfield/shadows/0xE9345161.cso | Bin 0 -> 360 bytes .../endfield/shadows/0xE9345161.ps_5_0.hlsl | 26 - ...haracter-capsule-ao_0xB4E7E6D9.ps_5_0.hlsl | 257 --- ...screenspace-shadows_0x0C02AB31.cs_5_0.hlsl | 2 +- .../ui/latencybar_0x9BDC181F.vs_5_0.hlsl | 3 +- .../endfield/ui/ui10_0x65EB732F.ps_5_0.hlsl | 109 - .../endfield/ui/ui13_0xFB212B37.ps_5_0.hlsl | 142 -- .../endfield/ui/ui14_0xB084133A.ps_5_0.hlsl | 95 - .../endfield/ui/ui15_0x25054A9A.ps_5_0.hlsl | 97 - .../endfield/ui/ui4_0xB75B5932.ps_5_0.hlsl | 110 - .../endfield/ui/ui7_0xEC4B4DDC.ps_5_0.hlsl | 87 - .../endfield/ui/uid_0x6B8E9049.ps_5_0.hlsl | 86 - src/games/endfield/waterfalls/0x8C038DD0.cso | Bin 0 -> 53632 bytes src/games/endfield/waterfalls/0xF5AB0A61.cso | Bin 59728 -> 0 bytes .../endfield/waterfalls/0xF5AB0A61.ps_5_0.asm | 1934 ---------------- 65 files changed, 20 insertions(+), 16286 deletions(-) rename src/games/endfield/ao/{gtao-main_0x522F7BB8.cs_5_0.hlsl => gtao-main_0x9D8219CC.cs_5_0.hlsl} (100%) create mode 100644 src/games/endfield/bloom/0x2CF2F67B.cso create mode 100644 src/games/endfield/bloom/0x948BF835.cso create mode 100644 src/games/endfield/bloom/0xC58C5FBA.cso delete mode 100644 src/games/endfield/bloom/bloom-downsample-lut_0xC58C5FBA.cs_5_0.hlsl delete mode 100644 src/games/endfield/bloom/bloom-downsample_0x2CF2F67B.cs_5_0.hlsl delete mode 100644 src/games/endfield/bloom/bloom-downsample_0x948BF835.cs_5_0.hlsl delete mode 100644 src/games/endfield/deferred-lighting/0x0A8C4B9A.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0x1B08FD76.cso create mode 100644 src/games/endfield/deferred-lighting/0x1BA367EC.cso create mode 100644 src/games/endfield/deferred-lighting/0x20CB4A05.cso delete mode 100644 src/games/endfield/deferred-lighting/0x355D50B7.ps_5_0.asm rename src/games/endfield/deferred-lighting/{0xEA6F34B7.cso => 0x3826B75E.cso} (97%) rename src/games/endfield/deferred-lighting/{0x5F55ACC9.cso => 0x46368E6B.cso} (96%) delete mode 100644 src/games/endfield/deferred-lighting/0x4A42FD4A.ps_5_0.asm rename src/games/endfield/deferred-lighting/{0x89E4F419.cso => 0x51B20E29.cso} (96%) rename src/games/endfield/deferred-lighting/{0xD9882F6B.cso => 0x60D37BB1.cso} (95%) delete mode 100644 src/games/endfield/deferred-lighting/0x69D13BAF.ps_5_0.asm rename src/games/endfield/deferred-lighting/{0xDC895E4A.cso => 0x6B2D0D3F.cso} (96%) delete mode 100644 src/games/endfield/deferred-lighting/0x7B4BA49D.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0x7C0172E6.ps_5_0.asm delete mode 100644 src/games/endfield/deferred-lighting/0x8A27350D.cso delete mode 100644 src/games/endfield/deferred-lighting/0xA1716606.ps_5_0.asm rename src/games/endfield/deferred-lighting/{0xF314003E.cso => 0xBB9276D0.cso} (95%) delete mode 100644 src/games/endfield/deferred-lighting/0xC70BDAA5.cso rename src/games/endfield/deferred-lighting/{0xB9D5AA7B.cso => 0xC75E6D72.cso} (95%) create mode 100644 src/games/endfield/deferred-lighting/0xE312F9FE.cso delete mode 100644 src/games/endfield/deferred-lighting/0xE9FA7952.ps_5_0.asm create mode 100644 src/games/endfield/deferred-lighting/0xEBD4CAC5.cso delete mode 100644 src/games/endfield/deferred-lighting/0xF45699A5.cso rename src/games/endfield/deferred-lighting/{0x32F53924.cso => 0xF50042EC.cso} (96%) create mode 100644 src/games/endfield/glass/0x3FC1A55D.cso create mode 100644 src/games/endfield/glass/0x6EC3380B.cso delete mode 100644 src/games/endfield/glass/0x91CF3135.cso create mode 100644 src/games/endfield/others/0x83D34AC2.cso delete mode 100644 src/games/endfield/others/taa_0xD6EB7D42.ps_5_0.hlsl create mode 100644 src/games/endfield/shadows/0x2F236158.cso delete mode 100644 src/games/endfield/shadows/0x2F236158.ps_5_0.hlsl create mode 100644 src/games/endfield/shadows/0xB295C5C4.cso delete mode 100644 src/games/endfield/shadows/0xB295C5C4.ps_5_0.hlsl create mode 100644 src/games/endfield/shadows/0xB4E7E6D9.cso create mode 100644 src/games/endfield/shadows/0xCAB28784.cso delete mode 100644 src/games/endfield/shadows/0xCAB28784.ps_5_0.hlsl create mode 100644 src/games/endfield/shadows/0xE9345161.cso delete mode 100644 src/games/endfield/shadows/0xE9345161.ps_5_0.hlsl delete mode 100644 src/games/endfield/shadows/character-capsule-ao_0xB4E7E6D9.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui10_0x65EB732F.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui13_0xFB212B37.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui14_0xB084133A.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui15_0x25054A9A.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui4_0xB75B5932.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui7_0xEC4B4DDC.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/uid_0x6B8E9049.ps_5_0.hlsl create mode 100644 src/games/endfield/waterfalls/0x8C038DD0.cso delete mode 100644 src/games/endfield/waterfalls/0xF5AB0A61.cso delete mode 100644 src/games/endfield/waterfalls/0xF5AB0A61.ps_5_0.asm diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index eadd26eada..e73075a2aa 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -787,11 +787,9 @@ renodx::utils::settings::Settings settings = { .value_type = renodx::utils::settings::SettingValueType::CUSTOM, .label = std::string("Reshade shader bypass, applies on_drawn after game's deferred lighting pass. Only properly works with DLAA/TAAU 100 scaling atm"), .on_draw = []() { - ImGui::PushFont(nullptr, ImGui::GetStyle().FontSizeBase * 2.0f); ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.0f, 0.0f, 0.0f, 1.0f)); ImGui::TextWrapped("Reshade shader bypass, applies on_drawn after game's deferred lighting pass. Only properly works with DLAA/TAAU 100 scaling atm"); ImGui::PopStyleColor(); - ImGui::PopFont(); return false; }, }, @@ -1027,7 +1025,7 @@ renodx::utils::settings::Settings settings = { }, new renodx::utils::settings::Setting{ .value_type = renodx::utils::settings::SettingValueType::TEXT, - .label = "- Fixed by Rat for Arknights: Endfield 1.2.4", + .label = "- Fixed by Rat for Arknights: Endfield 1.3.3", .section = "About", }, new renodx::utils::settings::Setting{ @@ -1168,7 +1166,7 @@ void OnPresent(reshade::api::command_queue* queue, if (pending_tech_test_preset == 1) { renodx::utils::settings::UpdateSetting("GammaCorrection", 2.f); renodx::utils::settings::UpdateSetting("SwapChainGammaCorrection", 2.f); - renodx::utils::settings::UpdateSetting("ToneMapPerChannelBlowout", 35.f); + renodx::utils::settings::UpdateSetting("ToneMapPerChannelBlowout", 75.f); renodx::utils::settings::UpdateSetting("ColorGradeExposure", 0.75f); renodx::utils::settings::UpdateSetting("ColorGradeHighlights", 50.f); renodx::utils::settings::UpdateSetting("ColorGradeShadows", 80.f); @@ -1396,14 +1394,14 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { */ // grass/foliage deferred (grass, plants, trees will be included in AO) - 0xF314003Eu, - 0xDC895E4Au, - 0x5F55ACC9u, - 0xB9D5AA7Bu, - 0x32F53924u, - 0xEA6F34B7u, - 0xD9882F6Bu, - 0x89E4F419u, + 0xBB9276D0u, + 0x6B2D0D3Fu, + 0x46368E6Bu, + 0xC75E6D72u, + 0xF50042ECu, + 0x3826B75Eu, + 0x60D37BB1u, + 0x51B20E29u, }; // Uberpost diff --git a/src/games/endfield/ao/ao-blur_0x3E137F65.cs_5_0.hlsl b/src/games/endfield/ao/ao-blur_0x3E137F65.cs_5_0.hlsl index ae13c55829..e4124349fd 100644 --- a/src/games/endfield/ao/ao-blur_0x3E137F65.cs_5_0.hlsl +++ b/src/games/endfield/ao/ao-blur_0x3E137F65.cs_5_0.hlsl @@ -31,11 +31,11 @@ void main(uint3 vThreadID : SV_DispatchThreadID) { float inv_width = cb0[4].z; float2 offset = 0.0; - float3 accum = float3(-1.0, 0.0, 0.0); + float3 accum = float3(-3.0, 0.0, 0.0); [loop] while (true) { - if (1.0 < accum.x) break; + if (3.0 < accum.x) break; float step_offset = accum.x * inv_width; offset.x = step_offset * radius_scale; diff --git a/src/games/endfield/ao/gtao-main_0x522F7BB8.cs_5_0.hlsl b/src/games/endfield/ao/gtao-main_0x9D8219CC.cs_5_0.hlsl similarity index 100% rename from src/games/endfield/ao/gtao-main_0x522F7BB8.cs_5_0.hlsl rename to src/games/endfield/ao/gtao-main_0x9D8219CC.cs_5_0.hlsl diff --git a/src/games/endfield/ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl b/src/games/endfield/ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl index 67f191b0d7..29d6ed6f57 100644 --- a/src/games/endfield/ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl +++ b/src/games/endfield/ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl @@ -74,7 +74,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r1.x = exp2(r1.x); r1.x = 0.970000029 * r1.x; r1.y = r3.y + -r2.y; - r1.y = -721.347534 * abs(r1.y); + r1.y = -1442.69507 * abs(r1.y); r1.y = exp2(r1.y); r3.z = r1.x * r1.y; } @@ -116,4 +116,4 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r3.w = 0; u0[vThreadID.xy] = r3.xyzw; return; -} \ No newline at end of file +} diff --git a/src/games/endfield/ao/gtao-vertical-blur_0x0995A677.cs_5_0.hlsl b/src/games/endfield/ao/gtao-vertical-blur_0x0995A677.cs_5_0.hlsl index de4609a3fc..5a739f3fb1 100644 --- a/src/games/endfield/ao/gtao-vertical-blur_0x0995A677.cs_5_0.hlsl +++ b/src/games/endfield/ao/gtao-vertical-blur_0x0995A677.cs_5_0.hlsl @@ -15,11 +15,6 @@ RWTexture2D u0 : register(u0); [numthreads(8, 8, 1)] void main(uint3 vThreadID : SV_DispatchThreadID) { - if (shader_injection.disable_game_ao >= 0.5f) { - u0[vThreadID.xy] = 1.0; - return; - } - float2 pixel = float2(vThreadID.xy) + 0.5; float2 uv = pixel * cb0[4].zw; @@ -31,11 +26,11 @@ void main(uint3 vThreadID : SV_DispatchThreadID) { float2 texel_size = cb0[4].zw; float2 offset = 0.0; - float3 accum = float3(0.0, 0.0, -1.0); + float3 accum = float3(0.0, 0.0, -3.0); [loop] while (true) { - if (1.0 < accum.z) break; + if (3.0 < accum.z) break; float2 step_offset = float2(0.0, accum.z * texel_size.y * radius_scale); diff --git a/src/games/endfield/bloom/0x2CF2F67B.cso b/src/games/endfield/bloom/0x2CF2F67B.cso new file mode 100644 index 0000000000000000000000000000000000000000..c48a392a35babb9805f9718af54ed5cc9e06aa04 GIT binary patch literal 6456 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 t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[3]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[110]; -} - -RWTexture2D u0 : register(u0); - -// 3Dmigoto declarations -#define cmp - - -[numthreads(8, 8, 1)] -void main(uint3 vThreadID : SV_DispatchThreadID, uint3 vThreadGroupID : SV_GroupID, uint3 vThreadIDInGroup : SV_GroupThreadID) -{ - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10; - uint4 bitmask, uiDest; - float4 fDest; - r0.xyzw = (uint4)vThreadGroupID.xyxy << int4(3,3,3,3); - r1.xyzw = (uint4)vThreadIDInGroup.xyxy << int4(1,1,1,1); - r0.xyzw = (int4)r0.xyzw + (int4)r1.xyzw; - r1.x = mad((int)vThreadIDInGroup.y, 16, (int)r1.z); - r0.xyzw = (int4)r0.xyzw + int4(-4,-4,-4,-4); - r0.xyzw = (int4)r0.xyzw; - r2.xyzw = float4(0.5,0.5,1.5,0.5) + r0.zwzw; - r0.xyzw = float4(0.5,1.5,1.5,1.5) + r0.xyzw; - r0.xyzw = cb1[0].zwzw * r0.xyzw; - r2.xyzw = cb1[0].zwzw * r2.xyzw; - r1.yzw = t0.SampleLevel(s0_s, r2.xy, 0).xyz; - r2.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; - r2.xyz = cb0[109].xxx * r2.zxy; - r2.xyz = cb1[2].www * r2.xyz; - r2.xyz = r2.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); - r2.xyz = max(float3(0,0,0), r2.xyz); - r2.xyz = log2(r2.xyz); - r2.xyz = saturate(r2.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); - r1.yzw = cb0[109].xxx * r1.wyz; - r1.yzw = cb1[2].www * r1.yzw; - r1.yzw = r1.yzw * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); - r1.yzw = max(float3(0,0,0), r1.yzw); - r1.yzw = log2(r1.yzw); - r1.yzw = saturate(r1.yzw * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); - r3.xyz = cb1[2].zzz * r1.yzw; - r1.z = floor(r3.x); - r1.y = r1.y * cb1[2].z + -r1.z; - r3.xw = cb1[2].xy * float2(0.5,0.5); - r4.yz = r3.yz * cb1[2].xy + r3.xw; - r4.x = r1.z * cb1[2].y + r4.y; - r5.xyz = t1.SampleLevel(s1_s, r4.xz, 0).xyz; - r6.x = cb1[2].y; - r6.y = 0; - r1.zw = r6.xy + r4.xz; - r4.xyz = t1.SampleLevel(s1_s, r1.zw, 0).xyz; - r4.xyz = r4.xyz + -r5.xyz; - r1.yzw = r1.yyy * r4.xyz + r5.xyz; - r4.xyz = log2(abs(r1.yzw)); - r4.xyz = float3(0.416666657,0.416666657,0.416666657) * r4.xyz; - r4.xyz = exp2(r4.xyz); - r4.xyz = r4.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); - r5.xyz = float3(12.9200001,12.9200001,12.9200001) * r1.yzw; - r1.yzw = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r1.yzw); - r1.yzw = r1.yzw ? r5.xyz : r4.xyz; - r2.w = max(r1.y, r1.z); - r2.w = max(r2.w, r1.w); - r2.w = max(cb1[1].x, r2.w); - r2.w = r2.w / cb1[1].x; - r1.yzw = r1.yzw / r2.www; - r1.yzw = f32tof16(r1.yzw); - r2.yzw = cb1[2].zzz * r2.xyz; - r2.y = floor(r2.y); - r4.yz = r2.zw * cb1[2].xy + r3.xw; - r2.x = r2.x * cb1[2].z + -r2.y; - r4.x = r2.y * cb1[2].y + r4.y; - r2.yzw = t1.SampleLevel(s1_s, r4.xz, 0).xyz; - r3.yz = r4.xz + r6.xy; - r4.xyz = t1.SampleLevel(s1_s, r3.yz, 0).xyz; - r4.xyz = r4.xyz + -r2.yzw; - r2.xyz = r2.xxx * r4.xyz + r2.yzw; - r4.xyz = log2(abs(r2.xyz)); - r4.xyz = float3(0.416666657,0.416666657,0.416666657) * r4.xyz; - r4.xyz = exp2(r4.xyz); - r4.xyz = r4.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); - r5.xyz = float3(12.9200001,12.9200001,12.9200001) * r2.xyz; - r2.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r2.xyz); - r2.xyz = r2.xyz ? r5.xyz : r4.xyz; - r2.w = max(r2.x, r2.y); - r2.w = max(r2.w, r2.z); - r2.w = max(cb1[1].x, r2.w); - r2.w = r2.w / cb1[1].x; - r2.xyz = r2.xyz / r2.www; - r2.xyz = f32tof16(r2.xyz); - r1.yzw = mad((int3)r2.xyz, int3(0x10000,0x10000,0x10000), (int3)r1.yzw); - r2.xy = mad((int2)vThreadIDInGroup.yy, int2(16,8), (int2)vThreadIDInGroup.xx); - g0[r2.x].val[0/4] = r1.y; - g1[r2.x].val[0/4] = r1.z; - g2[r2.x].val[0/4] = r1.w; - r1.yzw = t0.SampleLevel(s0_s, r0.xy, 0).xyz; - r0.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; - r0.xyz = cb0[109].xxx * r0.zxy; - r0.xyz = cb1[2].www * r0.xyz; - r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); - r0.xyz = max(float3(0,0,0), r0.xyz); - r0.xyz = log2(r0.xyz); - r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); - r1.yzw = cb0[109].xxx * r1.wyz; - r1.yzw = cb1[2].www * r1.yzw; - r1.yzw = r1.yzw * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); - r1.yzw = max(float3(0,0,0), r1.yzw); - r1.yzw = log2(r1.yzw); - r1.yzw = saturate(r1.yzw * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); - r4.xyz = cb1[2].zzz * r1.yzw; - r5.yz = r4.yz * cb1[2].xy + r3.xw; - r0.w = floor(r4.x); - r5.x = r0.w * cb1[2].y + r5.y; - r0.w = r1.y * cb1[2].z + -r0.w; - r1.yz = r5.xz + r6.xy; - r4.xyz = t1.SampleLevel(s1_s, r5.xz, 0).xyz; - r1.yzw = t1.SampleLevel(s1_s, r1.yz, 0).xyz; - r1.yzw = r1.yzw + -r4.xyz; - r1.yzw = r0.www * r1.yzw + r4.xyz; - r4.xyz = log2(abs(r1.yzw)); - r4.xyz = float3(0.416666657,0.416666657,0.416666657) * r4.xyz; - r4.xyz = exp2(r4.xyz); - r4.xyz = r4.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); - r5.xyz = float3(12.9200001,12.9200001,12.9200001) * r1.yzw; - r1.yzw = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r1.yzw); - r1.yzw = r1.yzw ? r5.xyz : r4.xyz; - r0.w = max(r1.y, r1.z); - r0.w = max(r0.w, r1.w); - r0.w = max(cb1[1].x, r0.w); - r0.w = r0.w / cb1[1].x; - r1.yzw = r1.yzw / r0.www; - r1.yzw = f32tof16(r1.yzw); - r0.yzw = cb1[2].zzz * r0.xyz; - r3.yz = r0.zw * cb1[2].xy + r3.xw; - r0.y = floor(r0.y); - r3.x = r0.y * cb1[2].y + r3.y; - r0.x = r0.x * cb1[2].z + -r0.y; - r0.yz = r3.xz + r6.xy; - r3.xyz = t1.SampleLevel(s1_s, r3.xz, 0).xyz; - r0.yzw = t1.SampleLevel(s1_s, r0.yz, 0).xyz; - r0.yzw = r0.yzw + -r3.xyz; - r0.xyz = r0.xxx * r0.yzw + r3.xyz; - r3.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; - r4.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); - r0.xyz = log2(abs(r0.xyz)); - r0.xyz = float3(0.416666657,0.416666657,0.416666657) * r0.xyz; - r0.xyz = exp2(r0.xyz); - r0.xyz = r0.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); - r0.xyz = r4.xyz ? r3.xyz : r0.xyz; - r0.w = max(r0.x, r0.y); - r0.w = max(r0.w, r0.z); - r0.w = max(cb1[1].x, r0.w); - r0.w = r0.w / cb1[1].x; - r0.xyz = r0.xyz / r0.www; - r0.xyz = f32tof16(r0.xyz); - r0.xyz = mad((int3)r0.xyz, int3(0x10000,0x10000,0x10000), (int3)r1.yzw); - r0.w = (int)r2.x + 8; - g0[r0.w].val[0/4] = r0.x; - g1[r0.w].val[0/4] = r0.y; - g2[r0.w].val[0/4] = r0.z; - GroupMemoryBarrierWithGroupSync(); - r0.x = (int)vThreadIDInGroup.x & 4; - r0.x = (int)r0.x + (int)r2.x; - r0.y = g0[r0.x].val[0/4]; - r0.z = g1[r0.x].val[0/4]; - r0.w = g2[r0.x].val[0/4]; - r3.xyzw = (int4)r0.xxxx + int4(1,2,3,4); - r0.x = g0[r3.x].val[0/4]; - r1.y = g1[r3.x].val[0/4]; - r1.z = g2[r3.x].val[0/4]; - r1.w = g0[r3.y].val[0/4]; - r2.x = g1[r3.y].val[0/4]; - r2.z = g2[r3.y].val[0/4]; - r2.w = g0[r3.z].val[0/4]; - r3.x = g0[r3.w].val[0/4]; - r3.y = g1[r3.z].val[0/4]; - r4.x = g1[r3.w].val[0/4]; - r3.z = g2[r3.z].val[0/4]; - r3.w = g2[r3.w].val[0/4]; - r4.y = (int)r1.w & 0x0000ffff; - r1.w = (uint)r1.w >> 16; - r5.x = f16tof32((uint)(uint)r1.w); - r6.x = f16tof32((uint)(uint)r4.y); - r1.w = (int)r2.x & 0x0000ffff; - r2.x = (uint)r2.x >> 16; - r5.y = f16tof32((uint)(uint)r2.x); - r6.y = f16tof32((uint)(uint)r1.w); - r1.w = (int)r2.z & 0x0000ffff; - r2.x = (uint)r2.z >> 16; - r5.z = f16tof32((uint)(uint)r2.x); - r6.z = f16tof32((uint)(uint)r1.w); - r1.w = (uint)r0.x >> 16; - r0.x = (int)r0.x & 0x0000ffff; - r7.x = f16tof32((uint)(uint)r0.x); - r8.x = f16tof32((uint)(uint)r1.w); - r0.x = (uint)r1.y >> 16; - r1.y = (int)r1.y & 0x0000ffff; - r7.y = f16tof32((uint)(uint)r1.y); - r8.y = f16tof32((uint)(uint)r0.x); - r0.x = (uint)r1.z >> 16; - r1.y = (int)r1.z & 0x0000ffff; - r7.z = f16tof32((uint)(uint)r1.y); - r8.z = f16tof32((uint)(uint)r0.x); - r1.yzw = r8.xyz + r5.xyz; - r1.yzw = float3(0.21875,0.21875,0.21875) * r1.yzw; - r1.yzw = r6.xyz * float3(0.2734375,0.2734375,0.2734375) + r1.yzw; - r0.x = (int)r2.w & 0x0000ffff; - r2.x = (uint)r2.w >> 16; - r9.x = f16tof32((uint)(uint)r2.x); - r10.x = f16tof32((uint)(uint)r0.x); - r0.x = (int)r3.y & 0x0000ffff; - r2.x = (uint)r3.y >> 16; - r9.y = f16tof32((uint)(uint)r2.x); - r10.y = f16tof32((uint)(uint)r0.x); - r0.x = (int)r3.z & 0x0000ffff; - r2.x = (uint)r3.z >> 16; - r9.z = f16tof32((uint)(uint)r2.x); - r10.z = f16tof32((uint)(uint)r0.x); - r2.xzw = r10.xyz + r7.xyz; - r4.yzw = r10.xyz + r6.xyz; - r4.yzw = float3(0.21875,0.21875,0.21875) * r4.yzw; - r4.yzw = r5.xyz * float3(0.2734375,0.2734375,0.2734375) + r4.yzw; - r1.yzw = r2.xzw * float3(0.109375,0.109375,0.109375) + r1.yzw; - r0.x = (uint)r0.y >> 16; - r0.y = (int)r0.y & 0x0000ffff; - r5.x = f16tof32((uint)(uint)r0.y); - r6.x = f16tof32((uint)(uint)r0.x); - r0.x = (uint)r0.z >> 16; - r0.y = (int)r0.z & 0x0000ffff; - r5.y = f16tof32((uint)(uint)r0.y); - r6.y = f16tof32((uint)(uint)r0.x); - r0.x = (uint)r0.w >> 16; - r0.y = (int)r0.w & 0x0000ffff; - r5.z = f16tof32((uint)(uint)r0.y); - r6.z = f16tof32((uint)(uint)r0.x); - r0.xyz = r6.xyz + r9.xyz; - r2.xzw = r9.xyz + r8.xyz; - r2.xzw = r2.xzw * float3(0.109375,0.109375,0.109375) + r4.yzw; - r0.xyz = r0.xyz * float3(0.03125,0.03125,0.03125) + r1.yzw; - r0.w = (int)r3.x & 0x0000ffff; - r1.y = (uint)r3.x >> 16; - r3.x = f16tof32((uint)(uint)r1.y); - r8.x = f16tof32((uint)(uint)r0.w); - r0.w = (int)r4.x & 0x0000ffff; - r1.y = (uint)r4.x >> 16; - r3.y = f16tof32((uint)(uint)r1.y); - r8.y = f16tof32((uint)(uint)r0.w); - r0.w = (int)r3.w & 0x0000ffff; - r1.y = (uint)r3.w >> 16; - r3.z = f16tof32((uint)(uint)r1.y); - r1.yzw = r6.xyz + r3.xyz; - r8.z = f16tof32((uint)(uint)r0.w); - r3.xyz = r8.xyz + r5.xyz; - r4.xyz = r8.xyz + r7.xyz; - r2.xzw = r4.xyz * float3(0.03125,0.03125,0.03125) + r2.xzw; - r1.yzw = r1.yzw * float3(0.00390625,0.00390625,0.00390625) + r2.xzw; - r0.xyz = r3.xyz * float3(0.00390625,0.00390625,0.00390625) + r0.xyz; - g0[r1.x].val[0/4] = r0.x; - g1[r1.x].val[0/4] = r0.y; - g2[r1.x].val[0/4] = r0.z; - r0.x = (int)r1.x + 1; - g0[r0.x].val[0/4] = r1.y; - g1[r0.x].val[0/4] = r1.z; - g2[r0.x].val[0/4] = r1.w; - GroupMemoryBarrierWithGroupSync(); - r0.xyzw = (int4)r2.yyyy + int4(8,16,24,32); - r1.x = g0[r0.w].val[0/4]; - r1.y = g1[r0.w].val[0/4]; - r1.z = g2[r0.w].val[0/4]; - r2.xzw = (int3)r2.yyy + int3(40,48,56); - r3.x = g0[r2.x].val[0/4]; - r3.y = g1[r2.x].val[0/4]; - r3.z = g2[r2.x].val[0/4]; - r4.x = g0[r0.z].val[0/4]; - r4.y = g1[r0.z].val[0/4]; - r4.z = g2[r0.z].val[0/4]; - r3.xyzw = r4.xyzx + r3.xyzx; - r3.xyzw = float4(0.21875,0.21875,0.21875,0.21875) * r3.xyzw; - r1.xyzw = r1.xyzx * float4(0.2734375,0.2734375,0.2734375,0.2734375) + r3.xyzw; - r3.x = g0[r0.y].val[0/4]; - r3.y = g1[r0.y].val[0/4]; - r3.z = g2[r0.y].val[0/4]; - r4.x = g0[r2.z].val[0/4]; - r4.y = g1[r2.z].val[0/4]; - r4.z = g2[r2.z].val[0/4]; - r3.xyzw = r4.xyzx + r3.xyzx; - r1.xyzw = r3.xyzw * float4(0.109375,0.109375,0.109375,0.109375) + r1.xyzw; - r3.x = g0[r0.x].val[0/4]; - r3.y = g1[r0.x].val[0/4]; - r3.z = g2[r0.x].val[0/4]; - r0.x = g0[r2.w].val[0/4]; - r0.y = g1[r2.w].val[0/4]; - r0.z = g2[r2.w].val[0/4]; - r0.xyzw = r3.xyzx + r0.xyzx; - r0.xyzw = r0.xyzw * float4(0.03125,0.03125,0.03125,0.03125) + r1.xyzw; - r1.x = g0[r2.y].val[0/4]; - r1.y = g1[r2.y].val[0/4]; - r1.z = g2[r2.y].val[0/4]; - r1.w = (int)r2.y + 64; - r2.x = g0[r1.w].val[0/4]; - r2.y = g1[r1.w].val[0/4]; - r2.z = g2[r1.w].val[0/4]; - r1.xyzw = r2.xyzx + r1.xyzx; - r0.xyzw = r1.xyzw * float4(0.00390625,0.00390625,0.00390625,0.00390625) + r0.xyzw; - r1.xy = (uint2)cb1[0].xy; - r1.xy = cmp((uint2)vThreadID.xy < (uint2)r1.xy); - r1.x = r1.y ? r1.x : 0; - r1.x = r1.x ? 1.000000 : 0; - r0.xyzw = r1.xxxx * r0.xyzw; - u0[vThreadID.xy] = r0; - return; -} \ No newline at end of file diff --git a/src/games/endfield/bloom/bloom-downsample_0x2CF2F67B.cs_5_0.hlsl b/src/games/endfield/bloom/bloom-downsample_0x2CF2F67B.cs_5_0.hlsl deleted file mode 100644 index 1837879113..0000000000 --- a/src/games/endfield/bloom/bloom-downsample_0x2CF2F67B.cs_5_0.hlsl +++ /dev/null @@ -1,224 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Tue Feb 10 11:18:06 2026 -groupshared struct { float val[1]; } g2[128]; -groupshared struct { float val[1]; } g1[128]; -groupshared struct { float val[1]; } g0[128]; -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - -cbuffer cb0 : register(b0) -{ - float4 cb0[2]; -} - -RWTexture2D u0 : register(u0); - -// 3Dmigoto declarations -#define cmp - - -[numthreads(8, 8, 1)] -void main(uint3 vThreadID : SV_DispatchThreadID, uint3 vThreadGroupID : SV_GroupID, uint3 vThreadIDInGroup : SV_GroupThreadID) -{ - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10; - uint4 bitmask, uiDest; - float4 fDest; - r0.xyzw = (uint4)vThreadGroupID.xyxy << int4(3,3,3,3); - r1.xyzw = (uint4)vThreadIDInGroup.xyxy << int4(1,1,1,1); - r0.xyzw = (int4)r0.xyzw + (int4)r1.xyzw; - r1.x = mad((int)vThreadIDInGroup.y, 16, (int)r1.z); - r0.xyzw = (int4)r0.xyzw + int4(-4,-4,-4,-4); - r0.xyzw = (int4)r0.xyzw; - r2.xyzw = float4(0.5,0.5,1.5,0.5) + r0.zwzw; - r0.xyzw = float4(0.5,1.5,1.5,1.5) + r0.xyzw; - r0.xyzw = cb0[0].zwzw * r0.xyzw; - r2.xyzw = cb0[0].zwzw * r2.xyzw; - r1.yzw = t0.SampleLevel(s0_s, r2.xy, 0).xyz; - r2.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; - r2.w = max(r1.y, r1.z); - r2.w = max(r2.w, r1.w); - r2.w = max(cb0[1].x, r2.w); - r2.w = r2.w / cb0[1].x; - r1.yzw = r1.yzw / r2.www; - r1.yzw = f32tof16(r1.yzw); - r2.w = max(r2.x, r2.y); - r2.w = max(r2.w, r2.z); - r2.w = max(cb0[1].x, r2.w); - r2.w = r2.w / cb0[1].x; - r2.xyz = r2.xyz / r2.www; - r2.xyz = f32tof16(r2.xyz); - r1.yzw = mad((int3)r2.xyz, int3(0x10000,0x10000,0x10000), (int3)r1.yzw); - r2.xy = mad((int2)vThreadIDInGroup.yy, int2(16,8), (int2)vThreadIDInGroup.xx); - g0[r2.x].val[0/4] = r1.y; - g1[r2.x].val[0/4] = r1.z; - g2[r2.x].val[0/4] = r1.w; - r1.yzw = t0.SampleLevel(s0_s, r0.xy, 0).xyz; - r0.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; - r0.w = max(r1.y, r1.z); - r0.w = max(r0.w, r1.w); - r0.w = max(cb0[1].x, r0.w); - r0.w = r0.w / cb0[1].x; - r1.yzw = r1.yzw / r0.www; - r1.yzw = f32tof16(r1.yzw); - r0.w = max(r0.x, r0.y); - r0.w = max(r0.w, r0.z); - r0.w = max(cb0[1].x, r0.w); - r0.w = r0.w / cb0[1].x; - r0.xyz = r0.xyz / r0.www; - r0.xyz = f32tof16(r0.xyz); - r0.xyz = mad((int3)r0.xyz, int3(0x10000,0x10000,0x10000), (int3)r1.yzw); - r0.w = (int)r2.x + 8; - g0[r0.w].val[0/4] = r0.x; - g1[r0.w].val[0/4] = r0.y; - g2[r0.w].val[0/4] = r0.z; - GroupMemoryBarrierWithGroupSync(); - r0.x = (int)vThreadIDInGroup.x & 4; - r0.x = (int)r0.x + (int)r2.x; - r0.y = g0[r0.x].val[0/4]; - r0.z = g1[r0.x].val[0/4]; - r0.w = g2[r0.x].val[0/4]; - r3.xyzw = (int4)r0.xxxx + int4(1,2,3,4); - r0.x = g0[r3.x].val[0/4]; - r1.y = g1[r3.x].val[0/4]; - r1.z = g2[r3.x].val[0/4]; - r1.w = g0[r3.y].val[0/4]; - r2.x = g1[r3.y].val[0/4]; - r2.z = g2[r3.y].val[0/4]; - r2.w = g0[r3.z].val[0/4]; - r3.x = g0[r3.w].val[0/4]; - r3.y = g1[r3.z].val[0/4]; - r4.x = g1[r3.w].val[0/4]; - r3.z = g2[r3.z].val[0/4]; - r3.w = g2[r3.w].val[0/4]; - r4.y = (int)r1.w & 0x0000ffff; - r1.w = (uint)r1.w >> 16; - r5.x = f16tof32((uint)(uint)r1.w); - r6.x = f16tof32((uint)(uint)r4.y); - r1.w = (int)r2.x & 0x0000ffff; - r2.x = (uint)r2.x >> 16; - r5.y = f16tof32((uint)(uint)r2.x); - r6.y = f16tof32((uint)(uint)r1.w); - r1.w = (int)r2.z & 0x0000ffff; - r2.x = (uint)r2.z >> 16; - r5.z = f16tof32((uint)(uint)r2.x); - r6.z = f16tof32((uint)(uint)r1.w); - r1.w = (uint)r0.x >> 16; - r0.x = (int)r0.x & 0x0000ffff; - r7.x = f16tof32((uint)(uint)r0.x); - r8.x = f16tof32((uint)(uint)r1.w); - r0.x = (uint)r1.y >> 16; - r1.y = (int)r1.y & 0x0000ffff; - r7.y = f16tof32((uint)(uint)r1.y); - r8.y = f16tof32((uint)(uint)r0.x); - r0.x = (uint)r1.z >> 16; - r1.y = (int)r1.z & 0x0000ffff; - r7.z = f16tof32((uint)(uint)r1.y); - r8.z = f16tof32((uint)(uint)r0.x); - r1.yzw = r8.xyz + r5.xyz; - r1.yzw = float3(0.21875,0.21875,0.21875) * r1.yzw; - r1.yzw = r6.xyz * float3(0.2734375,0.2734375,0.2734375) + r1.yzw; - r0.x = (int)r2.w & 0x0000ffff; - r2.x = (uint)r2.w >> 16; - r9.x = f16tof32((uint)(uint)r2.x); - r10.x = f16tof32((uint)(uint)r0.x); - r0.x = (int)r3.y & 0x0000ffff; - r2.x = (uint)r3.y >> 16; - r9.y = f16tof32((uint)(uint)r2.x); - r10.y = f16tof32((uint)(uint)r0.x); - r0.x = (int)r3.z & 0x0000ffff; - r2.x = (uint)r3.z >> 16; - r9.z = f16tof32((uint)(uint)r2.x); - r10.z = f16tof32((uint)(uint)r0.x); - r2.xzw = r10.xyz + r7.xyz; - r4.yzw = r10.xyz + r6.xyz; - r4.yzw = float3(0.21875,0.21875,0.21875) * r4.yzw; - r4.yzw = r5.xyz * float3(0.2734375,0.2734375,0.2734375) + r4.yzw; - r1.yzw = r2.xzw * float3(0.109375,0.109375,0.109375) + r1.yzw; - r0.x = (uint)r0.y >> 16; - r0.y = (int)r0.y & 0x0000ffff; - r5.x = f16tof32((uint)(uint)r0.y); - r6.x = f16tof32((uint)(uint)r0.x); - r0.x = (uint)r0.z >> 16; - r0.y = (int)r0.z & 0x0000ffff; - r5.y = f16tof32((uint)(uint)r0.y); - r6.y = f16tof32((uint)(uint)r0.x); - r0.x = (uint)r0.w >> 16; - r0.y = (int)r0.w & 0x0000ffff; - r5.z = f16tof32((uint)(uint)r0.y); - r6.z = f16tof32((uint)(uint)r0.x); - r0.xyz = r6.xyz + r9.xyz; - r2.xzw = r9.xyz + r8.xyz; - r2.xzw = r2.xzw * float3(0.109375,0.109375,0.109375) + r4.yzw; - r0.xyz = r0.xyz * float3(0.03125,0.03125,0.03125) + r1.yzw; - r0.w = (int)r3.x & 0x0000ffff; - r1.y = (uint)r3.x >> 16; - r3.x = f16tof32((uint)(uint)r1.y); - r8.x = f16tof32((uint)(uint)r0.w); - r0.w = (int)r4.x & 0x0000ffff; - r1.y = (uint)r4.x >> 16; - r3.y = f16tof32((uint)(uint)r1.y); - r8.y = f16tof32((uint)(uint)r0.w); - r0.w = (int)r3.w & 0x0000ffff; - r1.y = (uint)r3.w >> 16; - r3.z = f16tof32((uint)(uint)r1.y); - r1.yzw = r6.xyz + r3.xyz; - r8.z = f16tof32((uint)(uint)r0.w); - r3.xyz = r8.xyz + r5.xyz; - r4.xyz = r8.xyz + r7.xyz; - r2.xzw = r4.xyz * float3(0.03125,0.03125,0.03125) + r2.xzw; - r1.yzw = r1.yzw * float3(0.00390625,0.00390625,0.00390625) + r2.xzw; - r0.xyz = r3.xyz * float3(0.00390625,0.00390625,0.00390625) + r0.xyz; - g0[r1.x].val[0/4] = r0.x; - g1[r1.x].val[0/4] = r0.y; - g2[r1.x].val[0/4] = r0.z; - r0.x = (int)r1.x + 1; - g0[r0.x].val[0/4] = r1.y; - g1[r0.x].val[0/4] = r1.z; - g2[r0.x].val[0/4] = r1.w; - GroupMemoryBarrierWithGroupSync(); - r0.xyzw = (int4)r2.yyyy + int4(8,16,24,32); - r1.x = g0[r0.w].val[0/4]; - r1.y = g1[r0.w].val[0/4]; - r1.z = g2[r0.w].val[0/4]; - r2.xzw = (int3)r2.yyy + int3(40,48,56); - r3.x = g0[r2.x].val[0/4]; - r3.y = g1[r2.x].val[0/4]; - r3.z = g2[r2.x].val[0/4]; - r4.x = g0[r0.z].val[0/4]; - r4.y = g1[r0.z].val[0/4]; - r4.z = g2[r0.z].val[0/4]; - r3.xyzw = r4.xyzx + r3.xyzx; - r3.xyzw = float4(0.21875,0.21875,0.21875,0.21875) * r3.xyzw; - r1.xyzw = r1.xyzx * float4(0.2734375,0.2734375,0.2734375,0.2734375) + r3.xyzw; - r3.x = g0[r0.y].val[0/4]; - r3.y = g1[r0.y].val[0/4]; - r3.z = g2[r0.y].val[0/4]; - r4.x = g0[r2.z].val[0/4]; - r4.y = g1[r2.z].val[0/4]; - r4.z = g2[r2.z].val[0/4]; - r3.xyzw = r4.xyzx + r3.xyzx; - r1.xyzw = r3.xyzw * float4(0.109375,0.109375,0.109375,0.109375) + r1.xyzw; - r3.x = g0[r0.x].val[0/4]; - r3.y = g1[r0.x].val[0/4]; - r3.z = g2[r0.x].val[0/4]; - r0.x = g0[r2.w].val[0/4]; - r0.y = g1[r2.w].val[0/4]; - r0.z = g2[r2.w].val[0/4]; - r0.xyzw = r3.xyzx + r0.xyzx; - r0.xyzw = r0.xyzw * float4(0.03125,0.03125,0.03125,0.03125) + r1.xyzw; - r1.x = g0[r2.y].val[0/4]; - r1.y = g1[r2.y].val[0/4]; - r1.z = g2[r2.y].val[0/4]; - r1.w = (int)r2.y + 64; - r2.x = g0[r1.w].val[0/4]; - r2.y = g1[r1.w].val[0/4]; - r2.z = g2[r1.w].val[0/4]; - r1.xyzw = r2.xyzx + r1.xyzx; - r0.xyzw = r1.xyzw * float4(0.00390625,0.00390625,0.00390625,0.00390625) + r0.xyzw; - r1.xy = (uint2)cb0[0].xy; - r1.xy = cmp((uint2)vThreadID.xy < (uint2)r1.xy); - r1.x = r1.y ? r1.x : 0; - r1.x = r1.x ? 1.000000 : 0; - r0.xyzw = r1.xxxx * r0.xyzw; - u0[vThreadID.xy] = r0; - return; -} \ No newline at end of file diff --git a/src/games/endfield/bloom/bloom-downsample_0x948BF835.cs_5_0.hlsl b/src/games/endfield/bloom/bloom-downsample_0x948BF835.cs_5_0.hlsl deleted file mode 100644 index 0627951493..0000000000 --- a/src/games/endfield/bloom/bloom-downsample_0x948BF835.cs_5_0.hlsl +++ /dev/null @@ -1,204 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Tue Feb 10 11:18:06 2026 -groupshared struct { float val[1]; } g2[128]; -groupshared struct { float val[1]; } g1[128]; -groupshared struct { float val[1]; } g0[128]; -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - -RWTexture2D u0 : register(u0); - -// 3Dmigoto declarations -#define cmp - - -[numthreads(8, 8, 1)] -void main(uint3 vThreadID : SV_DispatchThreadID, uint3 vThreadGroupID : SV_GroupID, uint3 vThreadIDInGroup : SV_GroupThreadID) -{ - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10; - uint4 bitmask, uiDest; - float4 fDest; - r0.xyzw = (uint4)vThreadGroupID.xyxy << int4(3,3,3,3); - r1.xyzw = (uint4)vThreadIDInGroup.xyxy << int4(1,1,1,1); - r0.xyzw = (int4)r0.xyzw + (int4)r1.xyzw; - r1.x = mad((int)vThreadIDInGroup.y, 16, (int)r1.z); - r0.xyzw = (int4)r0.xyzw + int4(-4,-4,-4,-4); - r0.xyzw = (int4)r0.xyzw; - r2.xyzw = float4(0.5,0.5,1.5,0.5) + r0.zwzw; - r0.xyzw = float4(0.5,1.5,1.5,1.5) + r0.xyzw; - r0.xyzw = cb0[0].zwzw * r0.xyzw; - r2.xyzw = cb0[0].zwzw * r2.xyzw; - r1.yzw = t0.SampleLevel(s0_s, r2.xy, 0).xyz; - r2.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; - r2.xyz = f32tof16(r2.xyz); - r1.yzw = f32tof16(r1.yzw); - r1.yzw = mad((int3)r2.xyz, int3(0x10000,0x10000,0x10000), (int3)r1.yzw); - r2.xy = mad((int2)vThreadIDInGroup.yy, int2(16,8), (int2)vThreadIDInGroup.xx); - g0[r2.x].val[0/4] = r1.y; - g1[r2.x].val[0/4] = r1.z; - g2[r2.x].val[0/4] = r1.w; - r1.yzw = t0.SampleLevel(s0_s, r0.xy, 0).xyz; - r0.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; - r0.xyz = f32tof16(r0.xyz); - r1.yzw = f32tof16(r1.yzw); - r0.xyz = mad((int3)r0.xyz, int3(0x10000,0x10000,0x10000), (int3)r1.yzw); - r0.w = (int)r2.x + 8; - g0[r0.w].val[0/4] = r0.x; - g1[r0.w].val[0/4] = r0.y; - g2[r0.w].val[0/4] = r0.z; - GroupMemoryBarrierWithGroupSync(); - r0.x = (int)vThreadIDInGroup.x & 4; - r0.x = (int)r0.x + (int)r2.x; - r0.y = g0[r0.x].val[0/4]; - r0.z = g1[r0.x].val[0/4]; - r0.w = g2[r0.x].val[0/4]; - r3.xyzw = (int4)r0.xxxx + int4(1,2,3,4); - r0.x = g0[r3.x].val[0/4]; - r1.y = g1[r3.x].val[0/4]; - r1.z = g2[r3.x].val[0/4]; - r1.w = g0[r3.y].val[0/4]; - r2.x = g1[r3.y].val[0/4]; - r2.z = g2[r3.y].val[0/4]; - r2.w = g0[r3.z].val[0/4]; - r3.x = g0[r3.w].val[0/4]; - r3.y = g1[r3.z].val[0/4]; - r4.x = g1[r3.w].val[0/4]; - r3.z = g2[r3.z].val[0/4]; - r3.w = g2[r3.w].val[0/4]; - r4.y = (int)r1.w & 0x0000ffff; - r1.w = (uint)r1.w >> 16; - r5.x = f16tof32((uint)(uint)r1.w); - r6.x = f16tof32((uint)(uint)r4.y); - r1.w = (int)r2.x & 0x0000ffff; - r2.x = (uint)r2.x >> 16; - r5.y = f16tof32((uint)(uint)r2.x); - r6.y = f16tof32((uint)(uint)r1.w); - r1.w = (int)r2.z & 0x0000ffff; - r2.x = (uint)r2.z >> 16; - r5.z = f16tof32((uint)(uint)r2.x); - r6.z = f16tof32((uint)(uint)r1.w); - r1.w = (uint)r0.x >> 16; - r0.x = (int)r0.x & 0x0000ffff; - r7.x = f16tof32((uint)(uint)r0.x); - r8.x = f16tof32((uint)(uint)r1.w); - r0.x = (uint)r1.y >> 16; - r1.y = (int)r1.y & 0x0000ffff; - r7.y = f16tof32((uint)(uint)r1.y); - r8.y = f16tof32((uint)(uint)r0.x); - r0.x = (uint)r1.z >> 16; - r1.y = (int)r1.z & 0x0000ffff; - r7.z = f16tof32((uint)(uint)r1.y); - r8.z = f16tof32((uint)(uint)r0.x); - r1.yzw = r8.xyz + r5.xyz; - r1.yzw = float3(0.21875,0.21875,0.21875) * r1.yzw; - r1.yzw = r6.xyz * float3(0.2734375,0.2734375,0.2734375) + r1.yzw; - r0.x = (int)r2.w & 0x0000ffff; - r2.x = (uint)r2.w >> 16; - r9.x = f16tof32((uint)(uint)r2.x); - r10.x = f16tof32((uint)(uint)r0.x); - r0.x = (int)r3.y & 0x0000ffff; - r2.x = (uint)r3.y >> 16; - r9.y = f16tof32((uint)(uint)r2.x); - r10.y = f16tof32((uint)(uint)r0.x); - r0.x = (int)r3.z & 0x0000ffff; - r2.x = (uint)r3.z >> 16; - r9.z = f16tof32((uint)(uint)r2.x); - r10.z = f16tof32((uint)(uint)r0.x); - r2.xzw = r10.xyz + r7.xyz; - r4.yzw = r10.xyz + r6.xyz; - r4.yzw = float3(0.21875,0.21875,0.21875) * r4.yzw; - r4.yzw = r5.xyz * float3(0.2734375,0.2734375,0.2734375) + r4.yzw; - r1.yzw = r2.xzw * float3(0.109375,0.109375,0.109375) + r1.yzw; - r0.x = (uint)r0.y >> 16; - r0.y = (int)r0.y & 0x0000ffff; - r5.x = f16tof32((uint)(uint)r0.y); - r6.x = f16tof32((uint)(uint)r0.x); - r0.x = (uint)r0.z >> 16; - r0.y = (int)r0.z & 0x0000ffff; - r5.y = f16tof32((uint)(uint)r0.y); - r6.y = f16tof32((uint)(uint)r0.x); - r0.x = (uint)r0.w >> 16; - r0.y = (int)r0.w & 0x0000ffff; - r5.z = f16tof32((uint)(uint)r0.y); - r6.z = f16tof32((uint)(uint)r0.x); - r0.xyz = r6.xyz + r9.xyz; - r2.xzw = r9.xyz + r8.xyz; - r2.xzw = r2.xzw * float3(0.109375,0.109375,0.109375) + r4.yzw; - r0.xyz = r0.xyz * float3(0.03125,0.03125,0.03125) + r1.yzw; - r0.w = (int)r3.x & 0x0000ffff; - r1.y = (uint)r3.x >> 16; - r3.x = f16tof32((uint)(uint)r1.y); - r8.x = f16tof32((uint)(uint)r0.w); - r0.w = (int)r4.x & 0x0000ffff; - r1.y = (uint)r4.x >> 16; - r3.y = f16tof32((uint)(uint)r1.y); - r8.y = f16tof32((uint)(uint)r0.w); - r0.w = (int)r3.w & 0x0000ffff; - r1.y = (uint)r3.w >> 16; - r3.z = f16tof32((uint)(uint)r1.y); - r1.yzw = r6.xyz + r3.xyz; - r8.z = f16tof32((uint)(uint)r0.w); - r3.xyz = r8.xyz + r5.xyz; - r4.xyz = r8.xyz + r7.xyz; - r2.xzw = r4.xyz * float3(0.03125,0.03125,0.03125) + r2.xzw; - r1.yzw = r1.yzw * float3(0.00390625,0.00390625,0.00390625) + r2.xzw; - r0.xyz = r3.xyz * float3(0.00390625,0.00390625,0.00390625) + r0.xyz; - g0[r1.x].val[0/4] = r0.x; - g1[r1.x].val[0/4] = r0.y; - g2[r1.x].val[0/4] = r0.z; - r0.x = (int)r1.x + 1; - g0[r0.x].val[0/4] = r1.y; - g1[r0.x].val[0/4] = r1.z; - g2[r0.x].val[0/4] = r1.w; - GroupMemoryBarrierWithGroupSync(); - r0.xyzw = (int4)r2.yyyy + int4(8,16,24,32); - r1.x = g0[r0.w].val[0/4]; - r1.y = g1[r0.w].val[0/4]; - r1.z = g2[r0.w].val[0/4]; - r2.xzw = (int3)r2.yyy + int3(40,48,56); - r3.x = g0[r2.x].val[0/4]; - r3.y = g1[r2.x].val[0/4]; - r3.z = g2[r2.x].val[0/4]; - r4.x = g0[r0.z].val[0/4]; - r4.y = g1[r0.z].val[0/4]; - r4.z = g2[r0.z].val[0/4]; - r3.xyzw = r4.xyzx + r3.xyzx; - r3.xyzw = float4(0.21875,0.21875,0.21875,0.21875) * r3.xyzw; - r1.xyzw = r1.xyzx * float4(0.2734375,0.2734375,0.2734375,0.2734375) + r3.xyzw; - r3.x = g0[r0.y].val[0/4]; - r3.y = g1[r0.y].val[0/4]; - r3.z = g2[r0.y].val[0/4]; - r4.x = g0[r2.z].val[0/4]; - r4.y = g1[r2.z].val[0/4]; - r4.z = g2[r2.z].val[0/4]; - r3.xyzw = r4.xyzx + r3.xyzx; - r1.xyzw = r3.xyzw * float4(0.109375,0.109375,0.109375,0.109375) + r1.xyzw; - r3.x = g0[r0.x].val[0/4]; - r3.y = g1[r0.x].val[0/4]; - r3.z = g2[r0.x].val[0/4]; - r0.x = g0[r2.w].val[0/4]; - r0.y = g1[r2.w].val[0/4]; - r0.z = g2[r2.w].val[0/4]; - r0.xyzw = r3.xyzx + r0.xyzx; - r0.xyzw = r0.xyzw * float4(0.03125,0.03125,0.03125,0.03125) + r1.xyzw; - r1.x = g0[r2.y].val[0/4]; - r1.y = g1[r2.y].val[0/4]; - r1.z = g2[r2.y].val[0/4]; - r1.w = (int)r2.y + 64; - r2.x = g0[r1.w].val[0/4]; - r2.y = g1[r1.w].val[0/4]; - r2.z = g2[r1.w].val[0/4]; - r1.xyzw = r2.xyzx + r1.xyzx; - r0.xyzw = r1.xyzw * float4(0.00390625,0.00390625,0.00390625,0.00390625) + r0.xyzw; - r1.xy = (uint2)cb0[0].xy; - r1.xy = cmp((uint2)vThreadID.xy < (uint2)r1.xy); - r1.x = r1.y ? r1.x : 0; - r1.x = r1.x ? 1.000000 : 0; - r0.xyzw = r1.xxxx * r0.xyzw; - u0[vThreadID.xy] = r0; - return; -} \ No newline at end of file diff --git a/src/games/endfield/deferred-lighting/0x0A8C4B9A.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x0A8C4B9A.ps_5_0.asm deleted file mode 100644 index 1a81262cca..0000000000 --- a/src/games/endfield/deferred-lighting/0x0A8C4B9A.ps_5_0.asm +++ /dev/null @@ -1,1360 +0,0 @@ -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_constantbuffer CB0[239], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[5], immediateIndexed -dcl_constantbuffer CB3[5], immediateIndexed -dcl_constantbuffer CB4[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture3d (float,float,float,float) t21 -dcl_resource_texture3d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_resource_texture2d (float,float,float,float) t25 -dcl_resource_texture2d (float,float,float,float) t26 -dcl_resource_texture3d (float,float,float,float) t27 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 28 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t24.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t25.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r2.xyw, r1.wwww, r3.xyxz -utof r4.xy, r0.xyxx -mul r4.zw, v0.xxxy, cb0[82].zzzw -mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) -mul r5.zw, r5.zzzw, cb0[82].zzzw -sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) -mul r6.xyzw, -r5.yyyy, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw -mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r3.w, r5.y, cb0[1].z -mad r3.w, cb0[0].z, r5.x, r3.w -mad r3.w, cb0[2].z, r5.z, r3.w -add r3.w, r3.w, cb0[3].z -eq r6.x, l(0.000000), cb0[86].w -add r6.yzw, -r5.xxyz, cb0[44].xxyz -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r8.xyz, r6.xxxx, r6.yzwy, r7.xyzx -dp3 r6.x, r8.xyzx, r8.xyzx -max r7.w, r6.x, l(0.000000) -rsq r7.w, r7.w -mul r9.xyz, r7.wwww, r8.xyzx -mul r8.w, r6.x, r7.w -lt r9.w, l(0.000488), cb0[238].x -if_nz r9.w - sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t23.xyzw, s1, cb0[108].x -else - mov r10.xy, l(1.000000,1.000000,0,0) -endif -lt r10.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[230].xxxy -if_nz r10.z - add r10.z, |r2.y|, |r2.x| - add r10.z, |r2.w|, r10.z - div r10.z, l(1.000000, 1.000000, 1.000000, 1.000000), r10.z - mul r11.xyz, |r2.xywx|, r10.zzzz - mul r12.xyz, r5.xyzx, cb0[233].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r10.z, r12.xyzx, t9.yzxw, s2, l(0.000000) - mul r12.xyzw, r11.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) - add r11.xyw, r12.zwzz, r12.xxxy - mad r11.xyz, r11.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r11.xywx - mad r11.w, r10.z, l(2.000000), l(-1.000000) - mul r11.xyz, r11.wwww, r11.xyzx - mov r11.w, |r2.y| - add r11.w, r11.w, l(-0.700000) - mul_sat r11.w, r11.w, l(4.000000) - mad r12.x, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r12.x - add r12.x, -cb0[233].z, cb0[233].y - mad r11.w, r11.w, r12.x, cb0[233].z - mul r11.xyz, r11.wwww, r11.xyzx -else - mov r11.xyz, l(0,0,0,0) - mov r10.z, l(0) -endif -mad r11.w, -r3.y, r1.w, l(-0.200000) -if_nz r10.w - mul r12.xyz, r2.xywx, cb0[237].zzzz - mul r13.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[229].yyyy - mad r12.xyz, r12.xyzx, cb0[229].xxxx, r13.xyzx - max r10.w, -r2.y, l(0.000000) - min r10.w, r10.w, l(0.900000) - add r10.w, -r10.w, l(1.000000) - mul_sat r12.w, r11.w, l(-10.000000) - mad r13.x, r12.w, l(-2.000000), l(3.000000) - mul r12.w, r12.w, r12.w - mul r12.w, r12.w, r13.x - max r12.w, r12.w, l(0.100000) - min r12.w, r12.w, l(1.000000) - mul r10.w, r10.w, r12.w - mad r12.xyz, r12.xyzx, r10.wwww, r5.xyzx - add r11.xyz, r11.xyzx, r12.xyzx - mul r12.xyz, r11.yyyy, cb3[1].xyzx - mad r12.xyz, cb3[0].xyzx, r11.xxxx, r12.xyzx - mad r11.xyz, cb3[2].xyzx, r11.zzzz, r12.xyzx - add r11.xyz, r11.xyzx, cb3[3].xyzx - mad r12.x, r11.x, l(0.500000), cb3[4].x - mad r10.w, r11.y, l(0.500000), l(0.500000) - add r12.z, -r10.w, cb3[4].y - add r11.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r10.w, r11.z, l(0.000488) - sample_c_lz_indexable(texture2d)(float,float,float,float) r10.w, r11.xyxx, t8.xxxx, s4, r10.w -else - mov r10.w, l(1.000000) -endif -mov_sat r11.x, r2.y -add r11.y, l(1.000000), -cb0[234].w -mad r11.y, r11.x, r11.y, cb0[234].w -add r12.xy, r5.xzxx, -cb0[44].xzxx -max r11.z, |r12.y|, |r12.x| -mul r12.x, r10.w, r11.y -mul r12.y, l(0.050000), cb0[226].w -mad r12.z, -cb0[226].w, l(0.700000), r11.z -div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), r12.y -mul_sat r12.y, r12.y, r12.z -mad r12.z, r12.y, l(-2.000000), l(3.000000) -mul r12.y, r12.y, r12.y -mul r12.y, r12.y, r12.z -mad r10.w, -r11.y, r10.w, l(1.000000) -mad r10.w, r12.y, r10.w, r12.x -deriv_rty_fine r12.xyz, r5.zxyz -deriv_rtx_fine r13.xyz, r5.yzxy -mul r14.xyz, r12.xyzx, r13.xyzx -mad r12.xyz, r12.zxyz, r13.yzxy, -r14.xyzx -dp3 r12.x, r12.xyzx, r12.xyzx -max r12.x, r12.x, l(0.000000) -rsq r12.x, r12.x -mul_sat r12.x, r12.x, r12.y -mad r12.yz, cb0[227].zzzz, l(0.000000, 0.300000, 0.300000, 0.000000), l(0.000000, 0.686000, 0.687000, 0.000000) -add r12.w, |r3.w|, l(-15.000000) -mul_sat r12.w, r12.w, l(0.015000) -add r12.w, -r12.w, l(1.000000) -min r13.x, l(0.990000), cb0[232].w -max r12.y, r12.y, l(0.970000) -add r13.y, -r12.y, l(0.990000) -add r11.x, r11.x, -r12.y -div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), r13.y -mul_sat r11.x, r11.x, r12.y -mad r12.y, r11.x, l(-2.000000), l(3.000000) -mul r11.x, r11.x, r11.x -add r13.y, r12.x, l(-0.991000) -mul r13.y, r13.y, l(111.111069) -max r13.y, r13.y, l(0.000000) -mad r13.z, r13.y, l(-2.000000), l(3.000000) -mul r13.y, r13.y, r13.y -mul r13.y, r13.y, r13.z -mad r13.z, r10.z, l(0.200000), l(0.800000) -ge r13.z, r13.z, r1.y -and r13.z, r13.z, l(0x3f800000) -mul r13.y, r13.z, r13.y -mad r11.x, r12.y, r11.x, r13.y -min r11.x, r11.x, l(1.000000) -add r12.y, -r13.x, cb0[232].w -add r11.x, -r13.x, r11.x -div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), r12.y -mul_sat r11.x, r11.x, r12.y -mad r12.y, r11.x, l(-2.000000), l(3.000000) -mul r11.x, r11.x, r11.x -mul r11.x, r11.x, r12.y -lt r12.y, l(0.000488), cb0[227].y -add r12.x, -r12.z, r12.x -mul_sat r12.x, r12.x, l(-1000.012878) -mad r12.z, r12.x, l(-2.000000), l(3.000000) -mul r12.x, r12.x, r12.x -mul r12.x, r12.x, r12.z -mad r12.z, r3.y, r1.w, l(0.500000) -mul_sat r12.z, r12.z, l(2.500000) -mad r13.x, r12.z, l(-2.000000), l(3.000000) -mul r12.z, r12.z, r12.z -mul r12.z, r12.z, r13.x -mul r12.x, r12.z, r12.x -lt r12.x, l(0.000488), r12.x -and r12.x, r12.x, r12.y -if_nz r12.x - mul r12.xy, |r2.xwxx|, |r2.xwxx| - add r12.z, r12.y, r12.x - div r12.z, l(1.000000, 1.000000, 1.000000, 1.000000), r12.z - mul r12.xy, r12.zzzz, r12.xyxx - mul r13.xyz, r2.ywxy, l(0.000000, 1.000000, 0.000000, 0.000000) - mad r13.xyz, r2.xywx, l(1.000000, 0.000000, 0.000000, 0.000000), -r13.xyzx - dp2 r12.z, r13.xyxx, r13.xyxx - rsq r12.z, r12.z - mul r13.xyz, r12.zzzz, r13.xyzx - mul r14.xyz, r2.ywxy, r13.xyzx - mad r14.xyz, r13.zxyz, r2.wxyw, -r14.xyzx - dp3 r12.z, r14.xyzx, r14.xyzx - rsq r12.z, r12.z - mul r14.xyz, r12.zzzz, r14.xzyx - mad r15.xyz, r5.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.314159, 0.314159, 0.314159, 0.000000) - round_ni r15.xyz, r15.xyzx - add r15.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - add r13.zw, r15.yyyy, r15.xxxz - mul r13.zw, r13.zzzw, l(0.000000, 0.000000, 0.000977, 0.000977) - ge r15.xy, r13.zwzz, -r13.zwzz - frc r13.zw, |r13.zzzw| - movc r13.zw, r15.xxxy, r13.zzzw, -r13.zzzw - mul r13.zw, r13.zzzw, l(0.000000, 0.000000, 1024.000000, 1024.000000) - dp2 r12.z, r13.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r12.z, null, r12.z - mul r12.z, r12.z, l(43758.546875) - frc r12.z, r12.z - ge r13.zw, r2.wwwx, l(0.000000, 0.000000, 0.000000, 0.000000) - movc r13.zw, r13.zzzw, l(0,0,1.000000,-1.000000), l(0,0,-1.000000,1.000000) - mul r15.xy, r5.xzxx, r13.zwzz - mul r13.z, r10.z, r12.z - add r13.w, -r12.z, l(1.000000) - mad r13.w, r13.w, l(0.700000), l(0.300000) - mul r16.xy, r13.zzzz, l(3.000000, 6.000000, 0.000000, 0.000000) - mad r13.z, -cb0[227].x, r13.w, r16.x - frc r17.x, r13.z - mad r13.z, cb0[227].x, l(-0.300000), r16.y - frc r17.y, r13.z - mul r12.z, r12.z, l(5.000000) - round_ni r12.z, r12.z - add r16.x, r12.z, l(1.000000) - mul r16.y, r5.y, r16.x - mov r5.w, l(0.100000) - mul r13.zw, r5.yyyw, r16.xxxy - frc r13.zw, r13.zzzw - add r16.xy, r17.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - add r16.xy, r13.zwzz, -r16.xyxx - add r16.xy, r16.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) - mul_sat r16.xy, r16.xyxx, l(5.000000, 5.000000, 0.000000, 0.000000) - mad r16.zw, r16.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) - mul r16.xy, r16.xyxx, r16.xyxx - mul r16.xy, r16.xyxx, r16.zwzz - add r16.zw, -r13.zzzw, r17.xxxy - max r16.xy, r16.zwzz, r16.xyxx - add r17.zw, -r17.xxxy, r13.zzzw - add r17.zw, r17.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) - mul r17.zw, r17.zzzw, l(0.000000, 0.000000, 5.000000, 5.000000) - max r17.zw, r17.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r18.xy, r17.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) - mul r17.zw, r17.zzzw, r17.zzzw - mul r17.zw, r17.zzzw, r18.xxxy - add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - max r16.zw, r16.zzzw, r17.zzzw - ge r13.zw, r13.zzzw, r17.xxxy - and r13.zw, r13.zzzw, l(0, 0, 0x3f800000, 0x3f800000) - add r16.zw, -r16.xxxy, r16.zzzw - mad r13.zw, r13.zzzw, r16.zzzw, r16.xxxy - mad r12.z, r13.z, r13.z, l(-0.400000) - mul_sat r12.z, r12.z, l(1.666667) - mad r13.z, r12.z, l(-2.000000), l(3.000000) - mul r12.z, r12.z, r12.z - mul r12.z, r12.z, r13.z - mad r13.z, r13.w, l(2.000000), l(-1.000000) - mul r15.w, r12.z, l(0.010000) - mul r16.x, r13.z, r15.w - mad r16.x, r10.z, l(0.100000), r16.x - mul r15.w, r12.z, r15.w - mad r15.w, r15.w, r13.z, r10.z - mul r16.y, r10.z, r15.w - mov r15.z, r5.y - mad r15.xyzw, r15.yzxz, cb0[228].xyxy, r16.xyxy - sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r15.xyxx, t10.xyzw, s2, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r15.xyzw, r15.zwzz, t10.xyzw, s2, cb0[108].x - mul r15.xyzw, r12.yyyy, r15.xyzw - mad r15.xyzw, r16.xyzw, r12.xxxx, r15.xyzw - mad r12.xy, r15.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mad r15.x, r12.z, l(2.000000), l(-1.000000) - mad_sat r13.w, r15.x, l(0.800000), r13.w - mad r15.x, -r15.w, l(0.500000), l(1.000000) - mad r13.w, r13.w, r15.x, l(-0.700000) - mul_sat r13.w, r13.w, l(3.333333) - mad r15.x, r13.w, l(-2.000000), l(3.000000) - mul r13.w, r13.w, r13.w - mul r13.w, r13.w, r15.x - mul r13.z, r13.z, r15.w - mad_sat r12.z, r13.z, l(0.500000), r12.z - mad r12.z, r12.z, l(0.500000), l(0.100000) - max r12.z, r12.z, r13.w - add r13.z, -r12.z, l(1.000000) - max r13.z, r13.z, l(0.000000) - mul r13.w, r13.z, r13.z - mul r13.w, r13.w, r13.w - mul r13.z, r13.w, r13.z - ge r13.z, r15.z, r13.z - and r13.z, r13.z, l(0x3f800000) - mad r12.z, r12.z, l(0.700000), l(0.200000) - mad r12.z, r13.z, r12.z, l(0.100000) - mul r12.z, r15.z, r12.z - mul r12.z, r12.z, cb0[227].y - mul r12.z, r12.z, l(0.330000) - ge r13.z, r1.z, l(0.045000) - and r13.z, r13.z, l(0x3f800000) - mul r13.z, r10.w, r13.z - mul r13.z, r13.z, cb0[226].x - mul r13.z, r12.w, r13.z - mul r12.z, r12.z, r13.z - dp2 r13.z, r12.xyxx, r12.xyxx - min r13.z, r13.z, l(1.000000) - add r13.z, -r13.z, l(1.000000) - sqrt r13.z, r13.z - max r13.z, r13.z, l(0.000488) - mul_sat r13.w, r12.z, l(10.000000) - mad r15.x, r13.w, l(-2.000000), l(3.000000) - mul r13.w, r13.w, r13.w - mul r13.w, r13.w, r15.x - mul r13.w, r13.w, cb0[227].y - mul r15.xy, r12.xyxx, r13.wwww - add r12.x, l(-1.500000), cb0[227].y - mul_sat r12.x, r12.x, l(0.666667) - mad r12.y, r12.x, l(-2.000000), l(3.000000) - mul r12.x, r12.x, r12.x - mul r12.x, r12.x, r12.y - mul r12.y, r12.x, l(-0.200000) - mad r12.x, -r12.x, l(-0.200000), r13.z - mad r15.z, r12.z, r12.x, r12.y - dp3 r12.x, r15.xyzx, r15.xyzx - max r12.x, r12.x, l(0.000000) - rsq r12.x, r12.x - mul r15.xyz, r12.xxxx, r15.xyzx - mov r16.x, r13.y - mov r16.y, r14.x - mov r16.z, r2.x - dp3 r16.x, r16.xyzx, r15.xyzx - mov r14.w, r2.y - dp2 r16.y, r14.zwzz, r15.yzyy - mov r14.x, r13.x - mov r14.z, r2.w - dp3 r16.z, r14.xyzx, r15.xyzx - mad r3.xyz, -r3.xyzx, r1.wwww, r16.xyzx - mad r13.xyz, r12.zzzz, r3.xyzx, r2.xywx - mul r1.w, r12.z, cb0[227].y - mul r1.w, r1.w, l(0.330000) -else - mov r13.xyz, r2.xywx - mov r1.w, l(0) -endif -lt r3.x, l(0.000488), r11.x -if_nz r3.x - mul r3.xy, -r5.xzxx, cb0[232].xyxx - frc r12.xy, r3.xyxx - lt r14.xy, l(0.000488, 0.000488, 0.000000, 0.000000), cb0[231].ywyy - if_nz r14.x - round_ni r3.xy, r3.xyxx - mul r3.xy, r3.xyxx, l(0.000977, 0.000977, 0.000000, 0.000000) - ge r14.xz, r3.xxyx, -r3.xxyx - frc r3.xy, |r3.xyxx| - movc r3.xy, r14.xzxx, r3.xyxx, -r3.xyxx - mul r3.xy, r3.xyxx, l(1024.000000, 1024.000000, 0.000000, 0.000000) - dp2 r3.x, r3.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r3.x, null, r3.x - mul r3.x, r3.x, l(43758.546875) - frc r3.x, r3.x - add r3.y, r3.x, cb0[231].x - frc r3.y, r3.y - mul r3.z, cb0[232].z, cb0[232].z - mul r3.y, r3.z, r3.y - round_ni r3.y, r3.y - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[232].z - ge r3.x, l(0.500000), r3.x - and r3.x, r3.x, l(0x3f800000) - add r14.xz, -r12.xxyx, r12.yyxy - mad r12.xy, r3.xxxx, r14.xzxx, r12.xyxx - div r3.x, r3.y, cb0[232].z - ge r12.z, r3.x, -r3.x - frc r3.x, |r3.x| - movc r3.x, r12.z, r3.x, -r3.x - mul r3.x, r3.x, cb0[232].z - mul r15.x, r3.x, r3.z - add r3.x, l(-1.000000), cb0[232].z - mul r3.y, r3.z, r3.y - round_ni r3.y, r3.y - add r3.x, -r3.y, r3.x - mul r15.y, r3.x, r3.z - mad r3.xy, r12.xyxx, r3.zzzz, r15.xyxx - frc r3.xy, r3.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r3.xy, r3.xyxx, t11.xyzw, s1, cb0[108].x - mul r3.xy, r3.xyxx, cb0[231].yyyy - mad r3.xy, r3.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[231].yyyy - else - mov r3.xy, l(0,0,0,0) - endif - if_nz r14.y - mov r14.xw, l(0,0,0,0.500000) - mov r14.y, cb0[231].z - mad r12.xy, -r5.xzxx, cb0[232].xyxx, r14.xyxx - mul r14.z, r10.z, l(0.500000) - add r12.xy, r12.xyxx, r14.zwzz - add r12.xy, r12.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - sample_b_indexable(texture2d)(float,float,float,float) r14.xy, r12.xyxx, t11.zwxy, s2, cb0[108].x - mov r12.xz, cb0[231].zzwz - mov r12.y, l(0) - mad r12.xy, -r5.xzxx, cb0[232].xyxx, -r12.xyxx - add r15.y, -r10.z, l(1.000000) - mov r15.x, l(0.500000) - mad r15.xy, l(1.000000, 0.500000, 0.000000, 0.000000), r15.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - add r12.xy, r12.xyxx, -r15.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r14.zw, r12.xyxx, t11.xyzw, s2, cb0[108].x - mul r14.xyzw, r14.xyzw, cb0[231].wwww - mad r14.xyzw, r14.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -r12.zzzz - mul r14.xyzw, r10.zzzz, r14.xyzw - add r12.xy, r14.zwzz, r14.xyxx - add r3.xy, r3.xyxx, r12.xyxx - endif - mul r12.x, r2.z, l(0.300000) - mad r12.x, r10.z, l(0.700000), r12.x - add r12.y, r2.z, l(-0.100000) - mul_sat r12.y, r12.y, l(100.000000) - mul r12.x, r12.y, r12.x - mul r12.y, r1.y, r12.x - min r12.y, r12.y, l(0.990000) - mad_sat r12.x, r12.x, r1.y, l(0.600000) - add r12.x, -r12.y, r12.x - add r12.y, -r12.y, cb0[232].w - div r12.x, l(1.000000, 1.000000, 1.000000, 1.000000), r12.x - mul_sat r12.x, r12.x, r12.y - mad r12.y, r12.x, l(-2.000000), l(3.000000) - mul r12.x, r12.x, r12.x - mul r12.x, r12.x, r12.y - mul r11.x, r11.x, cb0[226].x - dp2 r12.y, r3.xyxx, r3.xyxx - min r12.y, r12.y, l(1.000000) - add r12.y, -r12.y, l(1.000000) - sqrt r12.y, r12.y - max r3.z, r12.y, l(0.000488) - dp3 r12.y, r3.xyzx, r3.xyzx - rsq r12.y, r12.y - mul r3.xyz, r3.yzxy, r12.yyyy - mul r12.y, r3.y, l(1.000000) - mul r12.z, r12.x, r11.x - mul r12.z, r10.w, r12.z - mul r12.z, r12.w, r12.z - mad r3.xyz, r3.xyzx, l(1.000000, 1.000000, -1.000000, 0.000000), -r2.xywx - mad r13.xyz, r12.zzzz, r3.xyzx, r2.xywx - mul r3.x, r1.y, l(0.200000) - add r3.y, -r10.z, l(1.000000) - mul r3.y, r3.y, cb0[232].w - mul r3.z, r3.y, l(0.500000) - mad r3.y, -r3.y, l(0.500000), l(1.000000) - mad r3.y, r12.x, r3.y, r3.z - add r3.z, l(-0.600000), cb0[232].w - mul_sat r3.z, r3.z, l(2.500000) - mad r10.z, r3.z, l(-2.000000), l(3.000000) - mul r3.z, r3.z, r3.z - mul r3.z, r3.z, r10.z - mad_sat r3.y, r3.z, l(0.600000), r3.y - mul r3.y, r3.y, r11.x - mul r3.y, r12.y, r3.y - div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.x - mul_sat r3.x, r3.x, r3.y - mad r3.y, r3.x, l(-2.000000), l(3.000000) - mul r3.x, r3.x, r3.x - mul r3.x, r3.x, r3.y - mul r3.x, r10.w, r3.x - mul r3.x, r12.w, r3.x - max r3.x, r3.x, l(0.000000) -else - mov r3.x, l(0) -endif -min r3.y, r10.y, r10.x -mul r3.z, r11.y, cb0[234].z -mad r10.z, -cb0[234].z, r11.y, l(1.000000) -mad r3.z, r10.w, r10.z, r3.z -mad r10.z, cb0[234].x, cb0[226].w, -cb0[226].w -add r10.w, r11.z, -cb0[226].w -div r10.z, l(1.000000, 1.000000, 1.000000, 1.000000), r10.z -mul_sat r10.z, r10.z, r10.w -mad r10.w, r10.z, l(-2.000000), l(3.000000) -mul r10.z, r10.z, r10.z -mul r10.z, r10.z, r10.w -add r10.w, -r3.z, cb0[234].y -mad r3.z, r10.z, r10.w, r3.z -add r3.z, -r3.z, l(1.000000) -mul r10.z, r3.z, r10.x -add r1.z, r1.z, l(-0.050000) -add r10.w, -r2.z, l(1.000000) -mad_sat r11.x, r10.w, cb0[226].z, cb0[226].y -mad r11.x, r1.w, cb0[228].z, r11.x -mul r11.y, r2.z, r3.x -mad_sat r11.x, r11.y, l(0.100000), r11.x -add r11.y, -r11.x, l(1.000000) -mad r11.x, r1.x, r11.y, r11.x -mul_sat r11.y, r11.w, l(3.333333) -mad r11.z, r11.y, l(-2.000000), l(3.000000) -mul r11.y, r11.y, r11.y -mad r11.y, -r11.z, r11.y, l(1.000000) -mul r11.z, r11.x, cb0[226].x -add r11.w, -r1.x, l(1.000000) -mul r11.z, r11.w, r11.z -mul r11.z, r11.y, r11.z -mad r11.z, r11.z, l(-0.750000), l(1.000000) -mad r11.x, r11.x, l(-0.300000), l(0.900000) -sqrt r11.w, r10.w -add r11.x, r11.w, r11.x -add_sat r11.x, r11.x, l(-0.600000) -max r11.x, r10.w, r11.x -min r11.x, r11.x, l(0.990000) -add_sat r11.w, l(2.000000), -cb0[226].x -mul r11.w, r11.w, cb0[226].x -mul r11.y, r11.y, r11.w -mad r3.z, -r10.x, r3.z, l(1.000000) -mul r3.z, r3.z, r11.y -add r10.x, -r10.w, r11.x -mad r3.z, r3.z, r10.x, r10.w -add r3.z, -r3.z, l(1.000000) -mul_sat r1.zw, r1.zzzw, l(0.000000, 0.000000, 1.052600, 20.000000) -mad r10.x, r1.w, l(-2.000000), l(3.000000) -mul r1.w, r1.w, r1.w -mul r1.w, r1.w, r10.x -max r1.w, r1.w, r3.x -mad r1.w, r1.w, l(-0.900000), l(1.000000) -mul r3.x, r1.w, r3.z -add r10.x, r10.y, l(-1.000000) -mad r10.x, r1.z, r10.x, l(1.000000) -add r10.y, -r1.z, l(1.000000) -movc r10.xy, r9.wwww, r10.xyxx, l(1.000000,1.000000,0,0) -min r1.z, r3.x, r10.x -mad r1.w, r3.z, r1.w, -r1.z -mad r1.z, r3.y, r1.w, r1.z -add r1.w, -r1.z, r2.z -mad r12.z, r10.z, r1.w, r1.z -ld_indexable(texture2d)(float,float,float,float) r11.xyw, r0.xyzz, t26.xywz -min r1.z, r11.z, r10.y -add r1.w, -r1.z, r11.z -mad r1.z, r3.y, r1.w, r1.z -add r1.w, -r1.z, l(1.000000) -mad r1.z, r10.z, r1.w, r1.z -mul r3.xyz, r1.zzzz, r11.xywx -mul r10.xyz, r1.xxxx, r3.xyzx -mad r10.xyz, r11.xywx, r1.zzzz, -r10.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz -dp3 r2.z, r13.xyzx, r9.xyzx -max r11.x, r2.z, l(0.000000) -mul r3.y, r12.z, r12.z -mul r14.x, r11.x, r11.x -mul r14.z, r11.x, r14.x -mul r2.z, r3.y, r3.y -mul r3.z, r3.y, r2.z -mov r11.yzw, l(0,0.036546,9.063200,0.990440) -dp2 r15.x, l(3.327070, 1.000000, 0.000000, 0.000000), r11.xyxx -dp2 r15.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r11.xzxx -mov r3.x, l(1.000000) -dp2 r9.w, r15.xyxx, r3.xyxx -mov r14.yw, l(0,9.044010,0,1.000000) -dp3 r15.x, l(3.596850, -1.367720, 1.000000, 0.000000), r14.xzwx -dp3 r15.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r14.xyzx -mov r16.x, l(5.565890) -mov r16.yz, r14.xxzx -dp3 r15.z, l(1.000000, 19.788601, -20.212299, 0.000000), r16.xyzx -dp3 r10.w, r15.xyzx, r3.xyzx -div r9.w, r9.w, r10.w -dp2 r15.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r11.xwxx -mov r14.x, l(1.296780) -mov r14.y, r11.x -dp2 r15.y, l(1.000000, -0.755907, 0.000000, 0.000000), r14.xyxx -dp2 r10.w, r15.xyxx, r3.xyxx -dp3 r15.x, l(2.923380, 59.418800, 1.000000, 0.000000), r14.yzwy -mov r14.xw, l(20.322500,0,0,121.563004) -dp3 r15.y, l(1.000000, -27.030199, 222.591995, 0.000000), r14.xyzx -dp3 r15.z, l(626.130005, 316.627014, 1.000000, 0.000000), r14.yzwy -dp3 r3.x, r15.xyzx, r3.xyzx -div r3.x, r10.w, r3.x -mad r11.yzw, r1.xxzw, r9.wwww, r3.xxxx -add r3.x, r3.x, r9.w -ld_indexable(texture2d)(float,float,float,float) r3.y, r0.xyzz, t6.zxyw -lt r0.z, l(0.001000), r3.y -if_nz r0.z - dp3 r0.z, -r9.xyzx, r13.xyzx - add r0.z, r0.z, r0.z - mad r14.xyz, r13.xyzx, -r0.zzzz, -r9.xyzx - dp3 r0.z, -cb2[0].xyzx, r14.xyzx - mad r15.xyz, cb2[0].xyzx, r0.zzzz, r14.xyzx - lt r0.z, r0.z, cb2[4].z - dp3 r9.w, r15.xyzx, r15.xyzx - max r9.w, r9.w, l(0.000061) - rsq r9.w, r9.w - mul r15.xyz, r9.wwww, r15.xyzx - mul r15.xyz, r15.xyzx, cb2[4].yyyy - mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx - dp3 r9.w, r15.xyzx, r15.xyzx - rsq r9.w, r9.w - mul r15.xyz, r9.wwww, r15.xyzx - movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx - mad r8.xyz, r8.xyzx, r7.wwww, r14.xyzx - dp3 r0.z, r8.xyzx, r8.xyzx - max r0.z, r0.z, l(0.000061) - rsq r0.z, r0.z - mul r8.xyz, r0.zzzz, r8.xyzx - dp3_sat r12.x, r14.xyzx, r13.xyzx - dp3_sat r0.z, r13.xyzx, r8.xyzx - min r12.y, r11.x, l(1.000000) - mad r9.w, r0.z, r2.z, -r0.z - mad r0.z, r9.w, r0.z, l(1.000000) - dp3_sat r8.x, r9.xyzx, r8.xyzx - add r8.x, -r8.x, l(1.000000) - mul r8.y, r8.x, r8.x - mul r8.y, r8.y, r8.y - mul r8.z, r8.x, r8.y - add r9.w, -r12.z, l(1.000000) - mad r10.w, -r9.w, l(0.383026), l(-0.076195) - mad r10.w, r9.w, r10.w, l(1.049970) - mad r9.w, r9.w, r10.w, l(0.409255) - min r9.w, r9.w, l(0.999000) - add r10.w, -r9.w, l(1.000000) - add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r1.xzwx - mad r8.x, -r8.y, r8.x, l(1.000000) - mad r8.xyz, r1.xzwx, r8.xxxx, r8.zzzz - mul r0.z, r0.z, r0.z - div r0.z, r2.z, r0.z - mad r16.xy, -r12.yxyy, r2.zzzz, r12.yxyy - mad r16.xy, r16.xyxx, r12.yxyy, r2.zzzz - sqrt r16.xy, r16.xyxx - mul r16.xy, r12.xyxx, r16.xyxx - add r2.z, r16.y, r16.x - add r2.z, r2.z, l(0.000100) - div r2.z, l(0.500000), r2.z - mul r0.z, r0.z, r2.z - mul r8.xyz, r0.zzzz, r8.xyzx - min r8.xyz, r8.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r16.xyzw, r12.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r16.xyxx, t12.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r2.z, r16.zwzz, t12.yzxw, s1, l(0.000000) - mul r0.z, r0.z, r2.z - mul r0.z, r9.w, r0.z - div r0.z, r0.z, r10.w - mul r16.xyz, r15.xyzx, r15.xyzx - mul r16.xyz, r0.zzzz, r16.xyzx - mad r15.xyz, -r15.xyzx, r10.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r15.xyz, r16.xyzx, r15.xyzx - add r8.xyz, r8.xyzx, r15.xyzx - mul r8.xyz, r8.xyzx, cb2[4].xxxx - max r8.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r8.xyz, r8.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - dp3_sat r0.z, r14.xyzx, r2.xywx - mul r14.xyz, r0.zzzz, r10.xyzx - mad r8.xyz, r8.xyzx, r12.xxxx, r14.xyzx - mul r8.xyz, r8.xyzx, cb2[1].xyzx - mov r3.z, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r12.xyw, r3.yzyy, t7.xywz, s1, cb0[108].x - add r0.z, -r3.y, l(1.000000) - mad r12.xyw, r8.xyxz, r12.xyxw, -r8.xyxz - mad r8.xyz, r0.zzzz, r12.xywx, r8.xyzx - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t13.yzxw, s1, l(0.000000) - min r0.z, r0.z, l(1.000000) - mul r8.xyz, r0.zzzz, r8.xyzx -else - mov r8.xyz, l(0,0,0,0) -endif -ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -if_nz r3.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - dp3 r2.z, r2.xywx, r9.xyzx - max r2.z, r2.z, l(0.000000) - add r2.z, r0.z, r2.z - mad r3.y, r12.z, l(-16.000000), l(-1.000000) - exp r3.y, r3.y - log r2.z, |r2.z| - mul r2.z, r2.z, r3.y - exp r2.z, r2.z - add r2.z, r0.z, r2.z - add r2.z, r2.z, l(-1.000000) - mov_sat r12.xyw, r2.zzzz - mad r14.xyz, r10.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r10.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r10.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - max r14.xyz, r0.zzzz, r14.xyzx -else - mov r12.xyw, r1.yyyy - mov r14.xyz, r1.yyyy -endif -mad r15.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[216].x -mad r16.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx -dp2 r0.z, r16.xyxx, l(0.067111, 0.005837, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx -mad r16.xyz, cb0[6].xzyx, -cb0[216].wwww, cb0[214].xzyx -add r16.xyz, r15.xzyx, -r16.xyzx -max r0.z, |r16.y|, |r16.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.y, |r16.z|, l(-208.000000) -mul_sat r1.y, r1.y, l(0.031250) -max r0.z, r0.z, r1.y -ne r1.y, l(0.000000), cb0[214].w -lt r2.z, r0.z, l(1.000000) -and r1.y, r1.y, r2.z -if_nz r1.y - mad r16.xyz, cb0[6].xzyx, -cb0[216].yyyy, cb0[214].xzyx - add r16.xyz, r15.xzyx, -r16.xyzx - max r1.y, |r16.y|, |r16.x| - add r1.y, r1.y, l(-29.000000) - mul_sat r1.y, r1.y, l(0.500000) - add r2.z, |r16.z|, l(-13.000000) - mul_sat r2.z, r2.z, l(0.500000) - max r1.y, r1.y, r2.z - lt r2.z, r1.y, l(1.000000) - if_nz r2.z - mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r16.xyzx, cb0[215].xyzx - round_ni r17.xyz, r17.xyzx - mad r16.xyz, r16.xyzx, cb0[215].xyzx, -r17.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) - add r2.z, -r1.y, l(1.000000) - mul r3.y, l(0.500000), cb0[215].y - mad r9.w, -cb0[215].y, l(0.500000), l(1.000000) - max r3.y, r3.y, r16.y - min r3.y, r9.w, r3.y - mul r16.w, r3.y, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) - mad r3.y, r18.w, r2.z, r0.z - add r19.xyz, r16.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r17.yyyy, r19.xyzx - mov r19.w, r17.y - mul r19.xyzw, r2.zzzz, r19.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r17.xxxx, r16.xyzx - mov r16.w, r17.x - mul r16.xyzw, r2.zzzz, r16.xyzw - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r17.wwww, r18.xyzx - mul r17.xyzw, r2.zzzz, r17.xyzw - else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r3.y, r0.z - endif - mad r18.xyz, cb0[6].xzyx, -cb0[216].zzzz, cb0[214].xzyx - add r18.xyz, r15.xzyx, -r18.xyzx - max r2.z, |r18.y|, |r18.x| - add r2.z, r2.z, l(-116.000000) - mul_sat r2.z, r2.z, l(0.125000) - add r9.w, |r18.z|, l(-52.000000) - mul_sat r9.w, r9.w, l(0.125000) - max r2.z, r2.z, r9.w - lt r9.w, r2.z, l(1.000000) - if_nz r9.w - mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r20.xyz, r18.xyzx, cb0[215].xyzx - round_ni r20.xyz, r20.xyzx - mad r18.xyz, r18.xyzx, cb0[215].xyzx, -r20.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t19.yzwx, s2, l(0.000000) - add r9.w, -r2.z, l(1.000000) - mul r1.y, r1.y, r9.w - mul r9.w, l(0.500000), cb0[215].y - mad r10.w, -cb0[215].y, l(0.500000), l(1.000000) - max r9.w, r9.w, r18.y - min r9.w, r10.w, r9.w - mul r18.w, r9.w, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t20.xyzw, s1, l(0.000000) - mad r3.y, r21.w, r1.y, r3.y - add r22.xyz, r18.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t20.xyzw, s1, l(0.000000) - mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r20.yyyy, r22.xyzx - mov r22.w, r20.y - mad r19.xyzw, r22.xyzw, r1.yyyy, r19.xyzw - add r18.xyz, r18.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t20.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r20.xxxx, r18.xyzx - mov r18.w, r20.x - mad r16.xyzw, r18.xyzw, r1.yyyy, r16.xyzw - mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r18.xyzx - mad r17.xyzw, r20.xyzw, r1.yyyy, r17.xyzw - endif - lt r1.y, l(0.000000), r2.z - if_nz r1.y - mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r15.xyzx, cb0[215].xyzx - mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[215].xyzx - round_ni r18.xyz, r18.xyzx - mad r15.xyz, r15.xyzx, cb0[215].xyzx, -r18.xyzx - mad r18.xyz, -cb0[215].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r15.xyz, r20.xyzx, r15.xyzx - min r15.xyz, r18.xyzx, r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t21.yzwx, s2, l(0.000000) - add r1.y, -r0.z, l(1.000000) - mul r1.y, r1.y, r2.z - max r2.z, r20.y, r15.y - min r2.z, r18.y, r2.z - mul r15.w, r2.z, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t22.xyzw, s1, l(0.000000) - add r20.xyz, r15.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t22.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r21.yyyy, r20.xyzx - mov r20.w, r21.y - mad r19.xyzw, r20.xyzw, r1.yyyy, r19.xyzw - add r15.xyz, r15.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t22.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r21.xxxx, r15.xyzx - mov r15.w, r21.x - mad r16.xyzw, r15.xyzw, r1.yyyy, r16.xyzw - mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r15.xyzx - mad r17.xyzw, r21.xyzw, r1.yyyy, r17.xyzw - mad r3.y, r18.w, r1.y, r3.y - endif - mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) - add r15.x, -r0.z, r1.y - add r0.z, r0.z, r1.y - mul r15.y, r0.z, l(0.500000) -else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r15.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r15.yxyy, cb0[217].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r15.zw, r15.yyyx, cb0[217].wwwy -mad r18.x, r15.w, l(0.375000), r15.z -add r17.xyzw, r17.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[218].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r15.zw, r15.yyyx, cb0[218].wwwy -mad r18.x, r15.w, l(0.375000), r15.z -add r16.xyzw, r16.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[219].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r15.xy, r15.yxyy, cb0[219].wyww -mad r18.x, r15.y, l(0.375000), r15.x -add r15.xyzw, r18.wyzx, r19.xyzw -ge r18.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r18.y, r18.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.zwzz, t16.xyzw, s1, l(0.000000) - lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| - or r4.zw, r19.zzzw, r19.xxxy - or r0.z, r4.w, r4.z - if_nz r0.z - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mov r4.z, l(1.000000) - mov r4.w, r0.z - mov r1.y, l(0) - loop - ge r2.z, l(4.600000), r4.w - breakc_nz r2.z - iadd r2.z, r1.y, l(1) - mul r19.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - mov r4.zw, r19.xxxy - mov r1.y, r2.z - continue - endloop - mul r18.xyzw, r4.zzzz, r18.xyzw - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb4[3].x, cb4[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r19.x, r0.z, l(0.003906) - mov r19.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r19.xyxx, t15.zwxy, s1, l(0.000000) - mad r4.zw, r4.zzzw, cb4[2].xxxy, cb4[2].zzzw - mul r19.x, r4.z, l(3.544908) - mul r19.yzw, r4.wwww, r18.yyzw - mul r0.z, r18.x, l(0.406977) - exp r0.z, r0.z - mul r18.xyzw, r0.zzzz, r19.xyzw - mov r19.xyzw, r18.xyzw - mov r0.z, l(0) - loop - uge r2.z, r0.z, r1.y - breakc_nz r2.z - mul r20.xyzw, r19.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - dp4 r2.z, r20.xyzw, r19.xyzw - dp2 r3.y, r20.yxyy, r19.xyxx - dp2 r4.z, r20.zxzz, r19.xzxx - dp2 r4.w, r20.wxww, r19.xwxx - iadd r9.w, r0.z, l(1) - mov r19.x, r2.z - mov r19.y, r3.y - mov r19.zw, r4.zzzw - mov r0.z, r9.w - continue - endloop - mul r18.xyzw, r19.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - mul r19.xyzw, r17.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r18.xyzw, r19.xyzw - dp2 r1.y, r18.yxyy, r19.xyxx - dp2 r2.z, r18.zxzz, r19.xzxx - dp2 r3.y, r18.wxww, r19.xwxx - mul r19.xyzw, r16.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r4.z, r18.xyzw, r19.xyzw - dp2 r4.w, r18.yxyy, r19.xyxx - dp2 r9.w, r18.zxzz, r19.xzxx - dp2 r10.w, r18.wxww, r19.xwxx - mul r19.xyzw, r15.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r11.x, r18.xyzw, r19.xyzw - dp2 r14.w, r18.yxyy, r19.xyxx - dp2 r18.y, r18.zxzz, r19.xzxx - dp2 r18.x, r18.wxww, r19.xwxx - mul r17.w, r0.z, l(0.886227) - mul r17.x, r3.y, l(-1.023327) - mul r17.y, r1.y, l(-1.023327) - mul r17.z, r2.z, l(1.023327) - mul r16.x, r10.w, l(-1.023327) - mul r16.yw, r4.wwwz, l(0.000000, -1.023327, 0.000000, 0.886227) - mul r16.z, r9.w, l(1.023327) - mul r15.w, r11.x, l(0.886227) - mul r15.y, r14.w, l(-1.023327) - mul r15.xz, r18.xxyx, l(-1.023327, 0.000000, 1.023327, 0.000000) - endif -endif -dp3 r0.z, r17.xyzx, r2.xywx -add r0.z, r17.w, r0.z -max r17.x, r0.z, l(0.000000) -dp3 r0.z, r16.xyzx, r2.xywx -add r0.z, r16.w, r0.z -max r17.y, r0.z, l(0.000000) -dp3 r0.z, r15.xyzx, r2.xywx -add r0.z, r15.w, r0.z -max r17.z, r0.z, l(0.000000) -dp3 r0.z, -r9.xyzx, r13.xyzx -add r0.z, r0.z, r0.z -mad r2.xyz, r13.xyzx, -r0.zzzz, -r9.xyzx -add r0.z, l(-1.000000), cb0[113].x -max r1.y, r12.z, l(0.001000) -log r1.y, r1.y -mad r1.y, -r1.y, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.y -mul r4.zw, r4.xxxy, cb1[0].wwww -round_ni r4.zw, r4.zzzw -add r1.y, |r3.w|, -cb1[2].y -round_ni r1.y, r1.y -add r2.w, l(-1.000000), cb1[1].x -max r3.y, r1.y, l(0.000000) -min r2.w, r2.w, r3.y -ge r1.y, r2.w, r1.y -mad r3.y, r4.w, cb1[0].x, r4.z -ftoi r3.y, r3.y -iadd r3.y, r3.y, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.y, r3.y, l(0), t0.xxxx -ftoi r2.w, r2.w -iadd r2.w, r2.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.w, r2.w, l(0), t0.xxxx -and r2.w, r2.w, r3.y -and r1.y, r1.y, r2.w -mul r15.xyz, r17.xyzx, cb0[111].xxxx -dp3 r2.w, r15.xyzx, l(0.212673, 0.715152, 0.072175, 0.000000) -mov r27.x, r2.w // Store ambient luminance for cubemap modulation -mov r5.w, l(1.000000) -mov r13.w, l(1.000000) -mov r15.xyz, l(0,0,0,0) -mov r3.y, l(1.000000) -mov r4.z, r1.y -mov r4.w, l(0) -loop - lt r9.w, l(0.010000), r3.y - ine r10.w, r4.z, l(0) - and r10.w, r9.w, r10.w - if_nz r10.w - firstbit_lo r10.w, r4.z - ishl r11.x, l(1), r10.w - xor r4.z, r4.z, r11.x - ishl r10.w, r10.w, l(3) - dp4 r16.x, cb1[r10.w + 6].xyzw, r5.xyzw - dp4 r16.y, cb1[r10.w + 7].xyzw, r5.xyzw - dp4 r16.z, cb1[r10.w + 8].xyzw, r5.xyzw - ge r18.xyz, cb1[r10.w + 5].xyzx, |r16.xyzx| - and r11.x, r18.y, r18.x - and r11.x, r18.z, r11.x - if_nz r11.x - mul r11.x, l(0.100000), cb1[r10.w + 5].x - mul r18.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r18.xy, r18.xyxx, r18.xyxx - add r19.xyz, -|r16.xyzx|, cb1[r10.w + 5].xyzx - mul r19.xyz, r19.xyzx, cb1[r10.w + 9].xyzx - eq r12.z, l(1.000000), cb1[r10.w + 10].x - if_nz r12.z - dp3 r20.x, cb1[r10.w + 6].xyzx, r2.xyzx - dp3 r20.y, cb1[r10.w + 7].xyzx, r2.xyzx - dp3 r20.z, cb1[r10.w + 8].xyzx, r2.xyzx - add r21.xyz, -r16.xyzx, cb1[r10.w + 5].xyzx - div r21.xyz, r21.xyzx, r20.xyzx - add r22.xyz, -r16.xyzx, -cb1[r10.w + 5].xyzx - div r22.xyz, r22.xyzx, r20.xyzx - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx - movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx - min r12.z, r21.y, r21.x - min r12.z, r21.z, r12.z - mad r16.xyz, r20.xyzx, r12.zzzz, r16.xyzx - else - mov r16.xyz, r2.xyzx - endif - dp3 r12.z, r16.xyzx, r16.xyzx - rsq r12.z, r12.z - mul r16.xyz, r12.zzzz, r16.xyzx - lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r20.xyz, -r20.xyzx, r21.xyzx - itof r20.xyz, r20.xyzx - dp3 r12.z, r16.xyzx, r20.xyzx - div r16.xyz, r16.xyzx, r12.zzzz - lt r12.z, r16.z, l(0.000000) - add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r16.zw, r16.zzzw, r20.xxxy - movc r16.xy, r12.zzzz, r16.zwzz, r16.xyxx - dp4 r12.z, cb1[r10.w + 4].xyzw, r13.xyzw - max r12.z, r12.z, l(0.000000) - max r12.z, r12.z, l(0.000100) - min r14.w, r19.z, r19.y - min r14.w, r14.w, r19.x - add r15.w, r18.y, r18.x - mad r15.w, r18.z, r18.z, r15.w - mad r11.x, r11.x, r11.x, -r15.w - mul r11.x, r11.x, cb1[r10.w + 9].x - mul r11.x, r11.x, cb1[r10.w + 9].x - add r15.w, l(1.000000), -cb1[r10.w + 10].y - mul r11.x, r11.x, r15.w - mul r11.x, r11.x, l(100.000000) - mad_sat r11.x, r14.w, cb1[r10.w + 10].y, r11.x - mul r14.w, r11.x, cb1[r10.w + 10].w - mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww - mov r16.z, cb1[r10.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z - mul r16.xyz, r16.xyzx, cb1[r10.w + 9].wwww - div r15.w, r2.w, r12.z - min r15.w, |r15.w|, l(1.000000) - mad r15.w, r15.w, l(2.000000), r2.w - add r12.z, r12.z, l(2.000000) - div r12.z, r15.w, r12.z - add r12.z, r12.z, l(-1.000000) - mad r12.z, r12.z, cb0[112].w, l(1.000000) - mul r16.xyz, r12.zzzz, r16.xyzx - mul r16.xyz, r14.wwww, r16.xyzx - mad r15.xyz, r16.xyzx, r3.yyyy, r15.xyzx - mad r10.w, -r11.x, cb1[r10.w + 10].w, l(1.000000) - mul r3.y, r3.y, r10.w - endif - mov r4.w, l(-1) - continue - else - mov r4.w, r9.w - break - endif - mov r4.w, r9.w -endloop -if_nz r4.w - dp3 r1.y, r2.xyzx, r2.xyzx - rsq r1.y, r1.y - mul r2.xyz, r1.yyyy, r2.xyzx - lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r2.xyzx - lt r18.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r16.xyz, -r16.xyzx, r18.xyzx - itof r16.xyz, r16.xyzx - dp3 r1.y, r2.xyzx, r16.xyzx - div r2.xyz, r2.xyzx, r1.yyyy - lt r1.y, r2.z, l(0.000000) - add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r4.zw, r4.zzzw, r16.xxxy - movc r2.xy, r1.yyyy, r4.zwzz, r2.xyxx - mov r13.w, l(1.000000) - dp4 r1.y, cb1[3].xyzw, r13.xyzw - max r1.y, r1.y, l(0.000000) - max r1.y, r1.y, l(0.000100) - mad r2.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r2.xy, r2.xyxx, cb1[1].wwww, cb1[2].wwww - mov r2.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r2.xyz, r2.xyzx, t5.xyzw, s3, r0.z - div r0.z, r2.w, r1.y - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r2.w - add r1.y, r1.y, l(2.000000) - div r0.z, r0.z, r1.y - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r2.xyz, r0.zzzz, r2.xyzx - mad r15.xyz, r2.xyzx, r3.yyyy, r15.xyzx -endif -mul r2.xyz, r15.xyzx, cb0[112].zzzz -mul r2.xyz, r2.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].y) -if_nz cb13[13].y - max r27.x, r27.x, l(0.000000) - min r27.x, r27.x, l(1.000000) - mad r27.x, r27.x, l(0.750000), l(0.250000) - mul r2.xyz, r2.xyzx, r27.xxxx -endif -if_nz r3.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r13.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x - add r1.y, -r0.z, l(1.000000) - mul r15.xyz, r1.yyyy, r2.xyzx - mad r2.xyz, r13.xyzx, r0.zzzz, r15.xyzx -endif -mul r10.xyz, r10.xyzx, r17.xyzx -mul r10.xyz, r10.xyzx, cb0[111].xxxx -add r0.z, -r3.x, l(1.000000) -div r0.z, r0.z, r3.x -mul r1.xyz, r0.zzzz, r1.xzwx -mad r1.xyz, r1.xyzx, r11.yzwy, r11.yzwy -mul r1.xyz, r1.xyzx, r2.xyzx -mul r1.xyz, r12.xywx, r1.xyzx -mad r1.xyz, r10.xyzx, r14.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r8.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r8.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r5.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xyz, r0.zzzz, cb0[155].xyzx -mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r2.xyz, r2.xyzx -dp3 r0.z, -r9.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.w, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.w -lt r2.w, l(0.000000), cb0[165].z -if_nz r2.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r9.xyzx, -r7.xyzx - add r2.w, r5.y, -cb0[44].y - lt r3.z, l(0.000000), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.z - mul r0.x, r0.x, cb0[165].w - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w - mul r4.z, r0.x, r3.z - mad r4.w, r4.z, r2.w, cb0[44].y - mad r2.w, -r4.z, r2.w, r2.w - mad r0.x, -r0.x, r3.z, l(1.000000) - mul r3.z, r8.w, r0.x - mul r4.z, r2.w, cb0[159].z - max r4.z, r4.z, l(-127.000000) - mul r2.w, r2.w, cb0[162].x - max r2.w, r2.w, l(-127.000000) - add r5.w, r4.w, -cb0[159].x - mul r5.w, r5.w, cb0[159].z - max r5.w, r5.w, l(-127.000000) - exp r5.w, -r5.w - mul r5.w, r5.w, cb0[159].y - lt r7.x, l(0.000000), |r4.z| - exp r7.y, -r4.z - add r7.y, -r7.y, l(1.000000) - div r7.y, r7.y, r4.z - mad r4.z, -r4.z, l(0.240227), l(0.693147) - movc r4.z, r7.x, r7.y, r4.z - add r4.w, r4.w, -cb0[162].z - mul r4.w, r4.w, cb0[162].x - max r4.w, r4.w, l(-127.000000) - exp r4.w, -r4.w - mul r4.w, r4.w, cb0[162].y - lt r7.x, l(0.000000), |r2.w| - exp r7.y, -r2.w - add r7.y, -r7.y, l(1.000000) - div r7.y, r7.y, r2.w - mad r2.w, -r2.w, l(0.240227), l(0.693147) - movc r2.w, r7.x, r7.y, r2.w - mul r2.w, r2.w, r4.w - mad r2.w, r5.w, r4.z, r2.w - mad_sat r4.zw, r8.wwww, cb0[160].wwwy, cb0[160].zzzx - mul r3.z, r3.z, r2.w - exp r3.z, -r3.z - min r3.z, r3.z, l(1.000000) - max r3.z, r3.z, cb0[161].w - add r3.z, r4.w, r3.z - add r3.z, r4.z, r3.z - min r3.z, r3.z, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.000031, 0.000000, 0.000031), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[169].wwww, r4.xxxy - mul r7.xy, r0.ywyy, cb0[167].xyxx - mad r0.y, |r3.w|, cb0[166].x, cb0[166].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[166].z - div r7.z, r0.y, cb0[165].z - sample_l_indexable(texture3d)(float,float,float,float) r10.xyzw, r7.xyzx, t14.xyzw, s1, l(0.000000) - add r0.y, |r3.w|, -cb0[168].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r10.xyzw, r10.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r10.xyzw, r0.yyyy, r10.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r3.z, l(1.000000) - dp3_sat r0.w, r9.xyzx, cb0[163].xyzx - log r0.w, r0.w - mul r0.w, r0.w, cb0[164].w - exp r0.w, r0.w - mul r3.xyw, r0.wwww, cb0[164].xyxz - mad r0.x, r0.x, r8.w, -cb0[163].w - max r0.x, r0.x, l(0.000000) - mul r0.x, r0.x, r2.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - add r0.x, -r0.x, l(1.000000) - mul r3.xyw, r0.xxxx, r3.xyxw - add r0.x, -r4.z, l(1.000000) - mul r3.xyw, r0.xxxx, r3.xyxw - mad r0.xyw, cb0[161].xyxz, r0.yyyy, r3.xyxw - mad r0.xyw, r0.xyxw, r10.wwww, r10.xyxz - mul r2.w, r3.z, r10.w -else - add r3.x, r5.y, -cb0[44].y - mul r3.y, r3.x, cb0[159].z - mul r3.x, r3.x, cb0[162].x - add r3.z, cb0[44].y, -cb0[159].x - mul r3.z, r3.z, cb0[159].z - max r3.xyz, r3.xyzx, l(-127.000000, -127.000000, -127.000000, 0.000000) - exp r3.z, -r3.z - mul r3.z, r3.z, cb0[159].y - lt r3.w, l(0.000000), |r3.y| - exp r4.x, -r3.y - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r3.y - mad r3.y, -r3.y, l(0.240227), l(0.693147) - movc r3.y, r3.w, r4.x, r3.y - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(0.000000), |r3.x| - exp r4.y, -r3.x - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r3.x - mad r3.x, -r3.x, l(0.240227), l(0.693147) - movc r3.x, r4.x, r4.y, r3.x - mul r3.x, r3.x, r3.w - mad r3.x, r3.z, r3.y, r3.x - mad_sat r3.yz, r8.wwww, cb0[160].wwyw, cb0[160].zzxz - mul r3.w, r8.w, r3.x - exp r3.w, -r3.w - min r3.w, r3.w, l(1.000000) - max r3.w, r3.w, cb0[161].w - add r3.z, r3.z, r3.w - add r3.z, r3.y, r3.z - min r2.w, r3.z, l(1.000000) - add r3.z, -r2.w, l(1.000000) - dp3_sat r3.w, r9.xyzx, cb0[163].xyzx - log r3.w, r3.w - mul r3.w, r3.w, cb0[164].w - exp r3.w, r3.w - mul r4.xyz, r3.wwww, cb0[164].xyzx - mad r3.w, r6.x, r7.w, -cb0[163].w - max r3.w, r3.w, l(0.000000) - mul r3.x, r3.w, r3.x - exp r3.x, -r3.x - min r3.x, r3.x, l(1.000000) - add r3.x, -r3.x, l(1.000000) - mul r4.xyz, r3.xxxx, r4.xyzx - add r3.x, -r3.y, l(1.000000) - mul r3.xyw, r3.xxxx, r4.xyxz - mad r0.xyw, cb0[161].xyxz, r3.zzzz, r3.xyxw -endif -mul r3.xyz, r2.wwww, r2.xyzx -mad r0.z, r0.z, r0.z, l(1.000000) -mul r0.z, r0.z, l(0.059683) -mad r4.xyz, cb0[156].xyzx, r0.zzzz, cb0[158].xyzx -mad r0.z, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r0.z, r0.z, r1.w -mad_sat r4.xyz, cb0[157].xyzx, r0.zzzz, r4.xyzx -mul r4.xyz, r4.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r2.xyz, r2.xyzx, r4.xyzx -mad r0.xyz, r2.xyzx, r2.wwww, r0.xywx -lt r26.x, l(0.500000), cb13[12].y -if_nz r26.x - mul r24.xyz, r3.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r24.xyz, r24.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r24.xyz, r24.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r3.xyzx - mul r25.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - mad r0.xyz, r1.xyzx, r24.xyzx, r25.xyzx -else - mad r0.xyz, r1.xyzx, r3.xyzx, r0.xyzx -endif -dp3 r0.w, r3.xyzx, l(0.333333, 0.333333, 0.333333, 0.000000) -dp3 r1.w, r6.yzwy, r6.yzwy -sqrt r1.w, r1.w -mad_sat r1.w, -r1.w, cb0[171].z, l(1.000000) -mul r2.x, r1.w, cb0[171].x -mad r1.w, -cb0[171].x, r1.w, l(1.000000) -mul r2.yzw, cb0[170].xxyz, cb0[185].wwww -mad r2.yzw, r5.xxyz, cb0[171].yyyy, r2.yyzw -sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t27.xwyz, s2, l(0.000000) -dp2 r2.x, r2.yyyy, r2.xxxx -add r1.w, r1.w, r2.x -add r2.x, r0.w, l(1.000000) -min r1.w, r1.w, r2.x -add r0.xyz, -r1.xyzx, r0.xyzx -mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx -mov o0.w, r0.w -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x1B08FD76.cso b/src/games/endfield/deferred-lighting/0x1B08FD76.cso deleted file mode 100644 index db467d59c02e1479bcb7c0f8ba34bcc8ac7bb144..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61996 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 diff --git a/src/games/endfield/deferred-lighting/0x1BA367EC.cso b/src/games/endfield/deferred-lighting/0x1BA367EC.cso new file mode 100644 index 0000000000000000000000000000000000000000..07fe74b2c0870288273e9529e3237ed9c88bfc62 GIT binary patch literal 64076 zcmeI5ZLnR}S>N~FvajVUIg&4lBVS&8kf{Md2YltqiW2K?T^r#LhGYy@6Fw9$#k>qj z7$u}Hl;-*x)WkG#niRKATQCX;nlR8BW}qL4t_7Henhr3XgqOC{y2ZnXw$l-vOsCT( z{r{fz{MT7$-*Y56arnSw-`Quay`J}%^{ln`dAaw!ar55CfAQaa;P-y{yTA8_|F!yW ze&zdK`P5R^b>H}Zx^9o!uh#iJ8u(?Mul?q)|E9at?$g*_od-eGK?5$w0Rg`#$GK)a z;Oa1L5aYeh8*V7$^f?&k^f-ME+Us;4I8gBEb1;6rPUF+(V0>Ap$LVu0E|GPdJ_qC2 zWPJJ@=zAlrI)5pZk86#szU}nc zx4z}=r@!MnzpHz_e0QJlu@m0Mb^1UyhfIs{)<^Ui7rSryjk1rBX{jhyxxS?x8s+g_7b?KOEC*D0TTZLgWf?e+fAH9l+MFB@Is&lZlYas9Q$ zo|}E0@>hMG_I^QL|Mf|C-O~q)|M1yE2fID%x_1Ap`uL7<`uL6hW%coy$MKi@_{x3! z%<^7g-FR?hEgAl_2Z#$;T&vx-&X~ zCrymWnj5yohXYvK-jy))IFUF@L)ZO{=e}zFK9yGJ45L-ux}nhtR^2BL6r8V2UdUca z|H6wHiFO5_5Ie@u;>6Zu8J@tA4c%?sb$eD4?@L63zf2Q+lZIHE=4ZR^$NERRtw*1{ zwL=E{)*3qUdie*6j>3Jfap4W_${e2P*wQI?mlUVH>q&FRV?}p#vmUPy&NqnvrLNn$ z_rX_mmxYU-r{xRmJpFeMcFZB_Ps-)0`+l8cI`X%rW3E95Kk3U=(5cyLA4!kMM`+Ps zYHTQ8d#fHVOMTuu2|nNfKPx?%Bjg7BFFaP@=%_fYZ0Z#|frHl%UH9LgebdRiUw-$- z5C855?$J=ET-O( zatXR4*-G|-OX{P?@^uB)54xBhgStb{YdvBuyr>x5fG^PXh1AjQ(FTSra2x}5_nJJuYPnhM~kE!zB2U3SK*G=Uuua-HcJih+$td7U! z%aG?dBae8{-k16T!!}xcOiX|~UdA_!dV0sL1^U@iX?#8k0(4r^)XKYRLjT~hTFAaK8ew23W z;@y&GJZc`a3EQx*@a=Z;!WMAcy8a@EIzpTD;dj#+*4j?p1>d|3V_k1!g1i|W-Iqp=xnt!pa+wgq-Ey3l(n+&&|_?!c{>oYuo zvkoX0;Zx#j8hC$N*IEOwUlks;78p2>Y2Kq3b+jL(kXlY3{ZOup#%0uY!|$Qwx4cw% zXd72!+R8s9Qt+|I^6|BNwsJY;pH>|P)(>6x$kx`Y+f&2)t1lWK$RFoU2`Ib6xAueb zG<=t9qoBoS)=6}+#I7pt!nPKUZ-3{xZ#;Q?G9UKlKRz}vud42{ z75a?#PHBgM+ySTMZ55EX&nBHIak4zj^Vq&9l_r$xO1Jg%{ly0_0ta<>~G);oYE5~c8aw9ry3*PwwCTGI`?}?8pNxG8 zPNCbXxd|`%>p;yj)qUnvKj@|Fc=g%!^t#X&ojGHUKzpXKRuH3#M{c8Wv`6R&L?#vchg@nZ(7?uuczyGx8eDV&ge&t zV2#sw(5u@4v)}DU`yXETomTmwzpi7S2p_}XXB_DeFz`GE&yRfg!zWvtFN=OvIM3Qo zy02h=g3X!_)(4%V7FZTE@O92G7j?uvB=_Rx*AKeT@sST7iFnd)t z59GtwdcebeHOzkHTJX3hw%_|fgQG)s#Qi5a_JdwVhvD$+2fd6A`@uO(&T^lqgfcYCJIN7BL>ze0;Xs*2OhHe4M`FdEEkEf7Z1YIn;dH%C&8!Pt9*_rG8=?u-4Xj zwV&AcgI->Q?~w)HR-bk4AMi7^8QI3MpBbkXy9P0y^QqRq(H?y2x7iv*ee~J&gRWj= z4bq&BdNZ|sc2D|J)+_nt=Ch97_H?~rFW3)y8R^~+3~i~t`s}*9R2$$yJegbQP0KZP zqlL9Gxqr0xCHGB7tt1AEY9%n$gs7F|b%|9xBc59;si){k9i`9wLr+@k*}~9M`~%nZ z7d($Gs&CMFjxy(vHQvi=Bx)D(joS~p&~c@Gs{I=60^aMnHnzC^0OxDp!$C{!ay+>9 ze5Q}jfJxR&?E==$=XSq}?{?dI?X_#3A8jkVoj3iUix*)lwA3!!%C&8!Pwi@LeKEC* zT<8bAya;`eg%4YO)^4EJy=WouF7*~9j)+Yt89nU&9@0sYT>&%0A zfU7-n;1wP_C*c8|jvLU!Ym!^@U!>z7iSV=4(LAnIN9VoUtLga1FM*EcajiN=95o-v zEwAy)r+9wN`v{re8}f6!r)E6+9UNeX6%)g3uVI@F%<_QUl{G!+wD!^VgI-1l^W&^| z;6LU$&t9or;0spQ1;#uF-t@}5H+;fQvEL65>MeNa-w$2)yTA0NlRh;RFmT5B=-m%p z_mBU>2k!Byp^7iLb$-L&a%g2|g?a9$U+a53t_QTX7h3FP%sdsF_zVFs&55{2rSF*0 zAIHqGatn@Q<}t_2Fk)tyV+PDI3;f290?iy>+}P~-&zvTPerDU+Y@M-VJ!LqTlrtHfuicj6|R=?+-+iON^ zm-pzj`08qQk$=cOy{F(iW{jB^V^1f)cL)!dj;OsEkFY2BH0#*qq-phT<9Bov4`AdX zt&X@K&Unbe-1ltqt;tdvINcPk@VmeHMg_ zhaZ07qkh(tdIcX~OWov|u|L28remkH)AzwzdUWKP`QO-V+e3fzZt388^yn{rw6sSz zj!nw@pTyR_na9(xHa8qU>mnA_4;rhvk@gI2Ts>x5#jZZ*f8vIc%hEsY0V6kO>c@_( z@adQgJ9?`jPiZnK_jpMgF`?fNdWp{>md|N$r6bmb-ExdWJFWBJ)wwgHm+#rie#o`i z_{72MNn7XF6iaF(KBjG9M{*25k)w`H`<|j|o)DvoQKj>w2Q0stGKl?#1 z_1?4CA^0-z@Xz)H1SUXTN2c=X^VZlaV=p$b7bD)hca5%lbnQGE=Vp;TyN3=w`92Eo zU2xvnl#~OZcz(}8#w*2`}0g1 zuJr{Sz=uEc%yXZy7ADy{o}a#_Fr83$ihk3%-_o0pbAkPl$7tavSk$ht>rh*}B1fZs zVgKE^j)BL0+8(v6UtFKlXKwJPc*UBs+Q9hS7sqeugvUdoU@bL|3;LW6d2!~J(vq92 ziNj}Kfa!?mFt?~9|Hd4JM?b{p2R^FL5X7mW$a`||mFg3Vq>0usY{$R>S92-mb_?qV z0lF=b`7EDZBi1}`HUECl#b_>2!_cGUN4`M!4WrNV9nu*4lJJ|JClD7uZ}H~@zJCtg ztr~mb8tAb5vUCBT&(?%aiXGSF7BF-mp0xFuL*k6}h3@0p6J1ST^KRwUd;F9oR{O{a z=Dz$B^A7xe(2EYmc0+3;YbUXd7=@0y*CU_%p?ro!T^*$ktxrl_z}M6jKC?l-M}0_J zH5Bt5oVA?q=l~vL$0ud3()Sp1?ZF2h9I)%K@LK#b4|mVUmfn11N7R89CLMyG<@PDp zExPLnof%WT4_{da#^%wY*EjvQ-(WvmYb|tIkW^Q?(X5c8xu| zYH>@CUR+zRF${i=QOg@T*KKU^dT1Ql^jZCk#vYA9N9+6-?*pD^eBP{`V?rD9?0R}} zcuzB(cg!R2x%vU5r?hSNS@52gTzEfmQ>hRA&~<7%fZBMgu3dlKj$y{3 zHO#f$EikP^@mcU#$FipPg8&QavT13lNzlod>s=>rxv|s@$&B?;`_8D3$m$1uFXR_K zx%r>h{_DMN*_T3VJX#$=`-SRITN&#Iy*DXew5R+U&pPn$Y4cDEosJvMtIv8zT?U8G z7{d#HP=^>J-r%fdt8P47!LBh(wAY&seCQe5R$rgBjGTdvE;i}@bjJ3ty5UbY+tWTW z9&JA?_EC!`)R6Hd>fj^Ow*H|n9jiU~D0rxaPDk~TV~LNz!AGmYo974Uu$lepJRd=a zpP56@+i#444;^#X{OwET<8#kFcarvlPu?1PN6RrUV9L#tqQ40rlUEPR{#CX8pqDzY z%KVaVwzx+IkGXtaG{oDv&=0yO$KbYiFTYbIc|4EUZ`w1Oqwr|(Vx2`V_##Wk%3}Q3 z-h*?|euf4=z_-}=)CPO-!#QR@7g*U78aAdYI79dkoR+uw$e#E<2RZD$(!*8uFu>FK z4Uf_jz!LQJxDh|BhZ6 zZzJ(H&>tTo|A<=jY4tbEIu?Hw{i`0iURWRd+cr_hk}hf$^B()xQ=aDpdwuM3K0(iY z2lTXy)~O4*=3OaA#iGXPMEcJ$biGBM?PP3Qc*u6npqKLieW?4ii`EA8dMVZh=96`> zu8d*FOSCr3)OmRKgI>xpxb5Bh4C*|-fUk}#OAv1>2}q5XrK#fmYrx zK8Mt?j{Q*XgESO}_xQvF-qz*Wq|;DcdoQTAgJWK-FQ#+7@Z5mTYr`0ZuBJPZav9rJ zAD=lN=$_XY^J{E7_dy!&Xj>myw|)Tn()!5uT**hv(w9Ap^}t7_8~Z_MSG^Bn4%i>~ z=&-mm2Cwm2XJ3+YFXldIUA!FoRq^gcKfMp4A9XGEmf&ekm{}juryulEj=^p3-e`Sn z#kk)?+W6X<#Ql#h<2XK)>8-j*)6^u!#oG<_tv-eqsHo98eaI%t=GqvZf38s;64a^ z?t@%E`auI%xesE_KsSv=xt2UV94mdtv&3!oS*PiZ;}+Y;Fw2mwyI}CXmh}alsDqYc zf3iNdaloJL`q;v-w;%KpbIr(e2Vv-@;;~|R<*Wclh-oqZ@<~z;2|G;$Q#q+@5`doTnbn`OU!#6cpIi?HgVr}M)yziaNrFN?Xvi_IIO|u zbBoqdo~cUi+~wb1FPaYx@42cI|= z<9vb6JjXDvCA0IQtij}!bB-=HaZiW-_`V;?x;yV#r15CMvv1tmM=hREL&k0DAj7na zo<-XJ;33_h({aNC=^Oiq=k4I&BmBU+?0jwPt3DdT&=opj0Y3Eho5#?F+yjrk{Y+ku z*I>uVvYq>)k7tqi7W-G#_QUk~y`SR?7HcqgqWP@W;PcX#wb%O;t6yuEFp&j`_$J3-3|C;=qp$j)`b@J%5K? z^+i6n=?9JK_>1x^(z#Dv!GCU9gAKD!@uhQFV|CBxTs0nRuxa~2Oh;?*k%sp8WLk%y zXP%gkO2oOpdM>O8#d z*App&+H_cbd^vs=`T06u<`8+vT*rTIKVRpkYYw^7)=6q%yO(qQ8P|FIc_E*FeXi@g zYqHlVbVP60zgGWit@G54MRgu|w$1BA`z-QV$@hJb>&f_e9Q%8*x#F`(bcK(f9rVNW zK1joH$j*8{V?1<%PRF0?vq;x*=9G?F8^^Z4l+Pls)kmxH33^@0N6U%hJ-hcx(7C3% zerxEe&mxI|YqES3duhht^|^c&>H8mvibMHO_oZ4BX4Xga=?A@(V{qHMH(DP(f9%JC z_tHFz^cps;In(Q{pNY+Q!4`NsG5+9NF z1$hIHe)x;~EONX)dSB7{(qoE6sciFwEEj`wzv4} z#XXCpZY15V`yk|v*GK$)S-$Yv>1T*s6HCK*p2L0AndVt!i(@)uFz^!e{R-zej%ZnN(u1M{PgoC64mh>|gl$M|ie7HxGX2x#xauUXBp+*xN6l zbB?SEk9slA5qJVqu0%bf#mDPMZy%Nxz*?Ryo%8O_q;qW~hk=2s_hUuwn3GzdMG( zU$GLI&)uH|hDSf>W#-vX`8?Np%CZm1ef-vb=K-0>C+Any@_Q2d)L!j78qk5yntnAp z+YKH%*lw=Zl{4n$&q*_nTb#RvL(Y+Z(36*EmZvS_;&T9dft^+h?|#rr^Z9Qs`av(F zXGP@0s%WP5Dfq?na{Tpz?$c@8@B5tA=LEoSeM$aUKKQ5go6FbYOJs)}#enwM-&#!P zyatcF#!t>~d}$rXU377MX>qDAHE+Rj-NmQ)(lrGbe6aIG%5qHs22a{DhqmG~`q%;w zU~a+D5x@74JfoHpBhyOv_@3DwjUmh50pMD^>Ry!feOqwj(Jl@8UkIPR?G*L{YiWV$ z*eUJwyJXNIr)}}=n74JI{)}O^QF3o`?me8p+fCg2K`${cY0L41a{G|F@6z*$W? zYy&6hW6h%fgz6zMTCRl?wnC?4FFe|D%Sb+<2lCO;dL(}6qkha6e20AF(0Wd!kE`F2 z+2S!bl0I}pU;6+&@9SFr;JjGb_L+IMIvd7!Kaod1A&+axi5h5pzK7cni@$5z+Dq(@ z9z9yWcQ%IUd-glnI-V<;Gdrc7*2k9KIp=vYhPCsgg(dHe(oW~u_!AO#ZY!28a2A53DD$m7`0HxA{WcJq90Sz`LbS`|22VmodJF zZ9MoJPv1RXa&3nfjw@74Cj(A^?5ujTBg7tvw2@yS#C$h|D|>x!#&U<_TTjV;btU+A>|xT?Nm z-q4Xd=8Y^JasNa3X)J&l$8GCxk6ABZ=6yuGS;yS6Z`@3IXCceyAvL#Zo^bC254T4fnC-BwLaXr>top?8dGm;UGI79$mLLBE zNJFunhFwh#6g{W<%GUVZGw`U1&ZCjdg68irBtH9Va;x2E_k#xOQSg5%&O__Hy?F{2_C`EYPCp2-KKm&8Xdv)jsSdR4L;684^(c7e z=RE{%Kj@{~(yLFs*QnoHy`%yDpBK6v62>{TL8rBl|Et0p%290FO~bQ9a_>qswjJEM zc1nM)$@k|)zp6g_2z2n;$u&4*J(1O}o%8gBFE)iiQ+Ln!nCbw|c(5D@W(y!}I9Tw_PNLbXu*Nb_uE77$u>$Eb`%|1Y1%W+FQwuSHeK-UrGExJ4{7-RK5W^cL1Kc+(m zaIpR7fAh=lW{*pr1~2WkTYAO#rV7h@^l5E#9V~O6{DpR`qicnA^qi$2)_weSiOaZg;7v>-7Q$&| zNUwSyg^a+-mU&t2nAN+!mj*B5Mr(b;mK-xrf$QFKY0#C{AN?*wQb$#(jMCuk5Y$1^DBaelYeZv~9k+W}yRi1H%W@qqS_IR}H>LzKFFk z=VRsHCmbA3k%mq1BVPCg8hi#{WO42F%=)x76dbOB9d7i&Ui6}6p0+S}qpObB%&e`7 z2R;PG{~>1mUl$MZmj5XU%({%}%+qw2l5SbQdkD;Q>h3kq7xF!>;Gg)iV+A<5b2`WR zK^NtJJH+0T3(djh2Cx23EOWCN4?fh}&EzGYL_CnGXQ=TxLHhlmm(j7TJ(BSrNcv^@ zdl9}q$6jsw`1Mmc=aTlTQa9*r8*xM5b_^KyD<=-DPx5~lCr&>IF#SIlanTRas77?0 zaqxV2TQtO;AP){+|atIHX^! ziRey^<@l&hax(16|IuN5*9~AxgI@IPm3eMGdEN@lt>2G<-g z@%(>BE|q?*0pLsTSSP^K{~^?C*L_SUdYcwJP91eWxHND%U6+glKii-+3#8y@of$K( z^}j_p*57jR4|&QxW0BQ$f4S@4EgRxKm^@+cds=HXI6M=EuZ~)asNdcni;Um0iuZz; zgRDcW|A%#=o98SxX(;xU)EmKS%_@47nu(3jP-{7eHGGmLV2&qa*yX(sah2_Re?Rr( z{yFN{V-rET?$>k*9`QS*J~@CL{lI?n4(->7}JYy_&dghM=mmF!9OeKVZrt}{t8KQAtgmwuos0uL~TEWIApA5bRN^24?2%w&I8+H z-sJL{Y@mMlew;jm*F2bPu5pHEo0Hr#SO?3)N2|gkPw`Q->7!rQnC4N1uOyyx>Nf-? z?@VvF<|33GaMxG*vMrupdrqLMajCyLVlCq{snR8C06O=BUTTer`W|_6R{DU;eWLYG zTHj;EvjJesjg8uD2k@YrW~{Z|{hqm%Gr-{t)Q@it%UW_=w$TH;E)-!xQp5Np)wbAyYC$^0DE4Ck5 z_9uPE2^!NTPTk)CBeunm}gZt$6L)%BQT#H82QY+Z}r(u{Z=&$ZTb z+bwkF?=ka-n`_o?*beJf#0C zm+{C&c)8xv;%6O!gKee0Zf$7Y2%Z3$pOyzsOV72}81Qt|wRKJWS^o;pj{Apro=iT# z16@2{5@+M!q&zEPj^iWNVOpNq98*d>AUf!mw??}_cix>_9?bl zr>pU@pWz7|Il~w+#0IzI!D`xRIoJYjn}^tATUSQ->Hl~pW*qZ!D|R;maHSR%%@k$*25$HY>#Z3iC5YfIdOMmAHKnF*4_Hz1N#wO$Z5wL z8vLrG`r2~AY5(66a+8kV`VC*V{^VJ07$2`6 zjP=9r^+UrmaYx7W|HaSDryaQ-^8s5{a(}LF?LVtNIOKebvor^Xd~I>473OI^#Fp<=>T&uQHC7n$H4&pe^;Jh(&eA#g0~6rcEfD16RrPxM;GFXS_# zRwng!TlO>m%**Y4vcWLVJISuTp!P#&{aRk+G=8LIpQK~oLy|+TiY}g`K-&*`iDPSn z-wmN_K5B!0HQVG9&)rzlrBnD0n~RU*zAfN<_H!-adkSuR9+WwRP3VSAZWF%)7aI=? zhTIkhTwpbSg+sk_-2=9%u|v%mFs^|i*K*)3{p$S`bnO^&!BrmZeO`U!^n+e>eBfWc z;-3H5-+bzCzvqYf?p~}_zUTXu|M4wD+3y8vJZFOzyu;#SynlP?;4>}Wxs*ZPVjsHL zr=qR8^V|*|wBVrMdG)ceAM~Q*zF$6gs`R!t6vNPuxzZ1+W9ttOZ@c*yFIqOa1}%8# zXS^F9+YbFc^^q?KUapbW?~6r)e!uyJPY;YeBwEInvzEedv*Cxlm%aWcPW|@NKPA2; zufP{x*oH00Kt3(k%Fk-I<3S5-?DxO<&Y!L}39K4WVrG4@5qo_j$;A+AKvo^&%Ea!{k3~V9{z#P*vAjN>x=H&e8W!&C+1;%HY@RB&Mfk=^Uc1+ zC*ZDYu0EfAY9DJXHHUezoa5^5icw2X4z$lZkK{G6NImPCOI^Yd?Rt$4XGOz0>iq%v z!8N*oE1ZMt!ogO*ufrP958OB2dQo*PA3c>ZeJ(#fPazZ^QM2GB-RpX=mOM3FpD{9~ z9GJmVp4R)Meh@JHPYlY5U*UaxQhY_AsE%pfMOFxHd@7b~G<-%7!Mccyg1+dm$%kx;qzCKrP<7)q2bKa#tk?A>uJzUE_ z@x0&*)MtzqoIT|_=0f7dJT#nG8sEH}CrMlXx3T@!+Q>5+Yz5c3@BAR9#YXS<%lm?x z!cUyg3q0qQ@v#Rv@D=~S%YHl$GyeLd>_ZH*Y+vJV$J#anv(4z-$ccJ{J?6vy2zuj? z2jrV=z7lWO3FM(K^=4_%**!H_uJZvLU^;e6JN+&jFw1k>>f|xntJyo&7oF@2b*r85 zBHrl2Z$GrQSRSwkAN0B&E$yv zK|7u^j2#j_Ew#hA>PD?&J!8x*I-Suz<&yM6XMPuobyRU!VGRFYPz?jt4|OzsVbi(9OGFIF!COm?Bn3Y8pgHOl-MiKCm#bx_H(>hC$^ck!o>sG&R<12 z-cN+D#==L$AGr8)%+(Ei@t=7Q2Yl%mJjVQ-6OmieA@X=A&)~l%bF77-J9*cREeW6Z zTWCAg*ZcK7j_sxC_c-vS?c(z*)OEhcK~Capcgd*s4X_dS`rtz2lqaV%Ve zz(F2+ZTosP$G{;@T)Q>>jGm$gN3g2b5y|6Tg*nCXYdWEA{o!Y5=+N>dhpiWKte11d zvhfYNGp>8P8Qz|g)QB%>@&i9G?^HMR+I4Ty3IDb}z&CyQ(b5jQ&k^qvSvHl0`-44d z`#~?$|KZ?!xY)x3U(0-=cEXR(p`$PJg)!!dVY=Ko{-nqfg%2A;UQ4DU@#c z2hecJhgjG8v4D^BfwtH-<%3Vgvd|}RM=)~7c6?>R%p3jTP3^=-_>J5pkMN)U<{FJn z_)YeQZy0}9`j%Wk4r7+%c_@7Y2F_ni9e^31mTUXjysRhJe_ua2e_43U!+wYyk7pjr zooE>&F74_14-6f!lib2?J?p6Vm715!&;eUZ855yxs^8u}FAaqc-drl~TMyItf5?w%ZaFulK_}#B?GHKZ zb>{Kxhq$j4c4^gAnnUW(G^-nQRYkJ(;xsf zGF$a4Kl4x*A36mX(TV?U}Mpze0R9I~m)8GVLz zYeRlrx-;Y3`U0N3zwfyR%rSI*qK0U0FTsNvWLvR~8Ul|!YQ;bH;_ztaKK3zI^xxS) z7PO41{>11145#jx-S2s_?|a zAF65HB;ymlX<+bvb>;;yc+om$H>+RbGwUbYDBcnGmKJ|QH_5o02e!xJ9<6!Wnj$Ay13`SDpaco<*Zn<{?e7v$o@HYOfhWGmlyAaAx))(N%F z5k1S)v*a>Qkq<9g<;_g}l<#Alnr*${)B2*#HRHn@8(B}Ze+XaY9-`I&{GI-b`c9wU zyb7AU$3xDYO}sLOe9ouxu^;ByYF)=L_&S$}N9!Zc4{&66*uh$PN4~GiIQIqUtGI=2 z=q%j0kEPEZ4LsrsEiL2Z%4XW_F}LK3^{^kEEAVJ}!pmz0c_F-b=6Xnd=^3*1Y`Xdg zUxOzdV-Lk%L~=uSX!=1fn%B))br#Ls&(Afu&{ceFv>n)%vZ8%mW20kZd~5ig?W#0!1Y{lp6i)G)IDJRpqDxCDFL%C z&Re(W8FQ-2)?6`OTjN}}=8ah=czX_;A9+>zb#rq1SX zI^t_sKY&`^D|B1&lRti9OmVBVP~F)35Ff!}zThA9AjagGWiSR0+QbiEwmz`_Zh@KJ z`WQyc1g~|Bxr7h&{_9K~Lm%fFaMudAM;H39>>IX4oxZKL+dll7%$e5r=zLf-$X(0U zI%`hMUEghEi;w@rSHJo*-P??76F53z|J=&cdN;E!uSgH#ruh+jloofKm*5e%u?^NO zZI92n;v2;wVoE#0iO)WcaU4h0#JVSIb--8XH*f#@rA}P#{1a8ZZy@zuPAD?+eKGS$~vdkV;dQ=(mRjha5olf|qfiLSlhuF*H+A|OTaD#tg zZ5Cgk$noIs^(*Dv-q5{lQoa`(c(RX{eFv>%-o!mm3wzc+@iDQ^zv)8b5f)Uqqii`1%OJBo1cI17(+i^c@IkKtps5lur zY}UMpy%IJw@Q!P01g(x;`-b8lecp94)!+EQKJwusC-oe+@@DMQI@U(|VI%bsIZx=` zF6M`9G%sv)>^*j3!~+|RW4qNxeuj-%^V9zkGja)B>Sm4W zh?-&=_BhJzbEgE@qtkT|xXy?-x-eIHo<_@_rBl4ExAkfKSJ%uDY^UH%KNkUSMpIsQ=em0){&9#oWmnBDB-@_-W@Aet;l*2KP z&Z-YCYYz1IENN?8z4j6l;nX;S%kxY7`Pih~+ak|4DYnb4&G-S?=E-`_o&q1zZ|ya% z_)#{)F7o?o?^P(*;vW5waGzK%a|$~B7GumW`qZ$)l1ZHKE4VA!iayqE@cKb7qXT<^ zJ(%%=M{6T|@Fn>J-^X;TvYxzqjqzR-r;mOJzs`(}_rvh>nuR=MpaXvPHL_&a%=6n% zYiyow@S+aG7yIGW`hjujy`Q+a-k>u!(awvLWy1?RWY5Dxw)vtz_{17HwyV_-9LEQ} zjN9U%JAP>W0j~BPHO}y64Bg(K)_Rb4rf+em{nBmeOU1*!LN@sD;GlMyMwgMJ=yA0i zWe+=#C+n+ptZNs!7W}fktAW`MMVGDmyYBeWu;ao%D~>G>KVw?Y=R^sMHHQAOp1ZLg zPZUtwYkS16K36SrpBmQY;EQ+6LCd8cTdr+_*JbHO{OdE)_ZHcwG-khw*M8%jPWaHk z^*N7XpWgR^*F5~q2ERVnOMF0;e~wwsy$zk#>=|Do3!7+p-i)8=_k&(Whix_<`RuWN z0J*)7=em2@y7=kdli$pUHIJCQv5AS+`G`|HhV9UW-xFENwZTjrW5tLQdSjZ{QDd_pe`BK6XL8U^tGn z54+`}U$sMZ1OI`?vGR!z={LDPbPs*$7qKT-KCU=4c=CV88HZyBo^1!0{UT%iuv-Ug zM_1tIGWOW2e%NfkX{h40{93z(Q{~>Kev3Eux%IP6$n1yR`tjUwQ@UUWbq2nSZ8u}^ zFdnf658oS)u{Dhm2OW{C$a_KW^~0AI9P>a1_`uA=W34P?fM;5CV(dsG>-p?o(EnNj zMhh?3C}i*%ba=dw&%D)*8U>8nL)#B}(f_*8%f&8!b0U1b_pJB>zeTx9ySz2636=rx zhx30{^SQG0L&yMz4BCFs%K{lK9>2Ljjic_^Kgh=K;E_|8)yH1`pH$SWADPm8e1Flk z%{_7@@EZNeJ@{G%yxX{(PutJPZ>?PXJ5TQE^pW)oo95{E4*9C(7kbUXdsb@@`YD%d z{c{Y_2|s^*bN{v~ec9JwE56|~TkIpaf7_#mydl3@8ghz#0=~Es4LTV2MAFz-vbXLb ziIHQ4F2-$Tq9=NI{w~t9<%{m-3oUZszlbmXy%xUcH;-@Yb3UKLe7>MHexA>53wd!Z zGFu;A%@*Qvt$ZC1_+Ja(YxU8K^*#A~Eq++!``0Mfs5|VTs2y$(=^B{x2YZ2GFKr7$ zXT$J?N=e=S1BsdI4w_)ArBZiaya|I$dMCj$2qc@I9}_n#W$8^ zU6Dz?>!|k&9!s5hrXTld+?Q~#H{QFC@Hg7~9$@wfYc6)cXH~9~+$xiJz?b%wYP(6P z3*e6V%l}KzyS{>xy2fXul-F~g3CORpcA(D%Bh4I9s6AK%vbjy zbDs-wztrXpylry}gLexf#-_t3*glWWW7b1!W88nks~_}I_itq%XMAF28$8B+lx-ys zh&wRa);G&JHqSTUnQ!WJvb_g4U&oI%;7IZ-_#K~-z6l;Nj~4jVyt9R-t_AoDzUc0` zm^Re=r)q=p315*bXA_?syQLXBq<%X#vaf!Y8kuQBmsWJf%!iCWg++Hd{v;=UW2_SbtK_`q97JoCa%#?V9ls(9p)b?*lOM|p(q@IIdN zkiN%g;Y&>5LEo_S&rWHl&o;;O!CP~{I+)(PnIA1IYL9giY*T$dm!vhl=wfe)5AM)j zhFZdRU^s}0bdF~z0e|;|;TU(_QCodvUesUUW15!N6WS+oAcOZ~!8I@Fsdcu;yxiWG z_XVwwu%CQ|kDmb;|KOy=cD2Y*T&J?YmtF^)>)P|yd|VSh<_Uc8XFup=dhfl##j*6? zA@%z~FQY^7_zW?8N{px9HMrXR&{}!b`5}~RdPaTMWcr+Vw!Um##CP}_|Bx5hY8=60 z4ZuG9aD&=;KKe}T^g6`e_)2vEJRQ|e{K)_5oLff~4{{xU6TdxbWlQ8JW5*ZzVe*Xf zpw3U*Ut%`wGFMa31kp;C}dc^(#+!fKsT05uqnKyD>gRP5U zis{n4*l6x7DZlEoL-6tQyfshsQ6tEKe$dP4NM190MZO>5c?jG*SX<_;li+-L>f^j1 zc2~;_#|#>5@cIeuTKWzg=6BRKi(w_}o0%8?|&} zURpaUPw2Ljhkfo=dafK63=J&@SjvqYrjI?=2OC>_=N58|V_t4wCDLW1nh4w=88Bp{i=U1CK08T&XWppqHEDM^t=N4bC zb;LXrUdYNe^5T%j@Q>FqbeGH)FW$2;fAfg>DE?d<*4lzi;Iy!oH@KE-I(XqH&k4qL z#C)+%#^qZ0OKPJ|5j)=3%$x}rd52x#A{#h*G1qC$13uI`c(BIfd*0``CCA}mT4?l~ zCGwCp4P08}QWv1PQ~qAnI7jNUp*1JI`?W`7ey<6*uwtK2ADxiX4|9JnEMf?~d=#-$ zx6-U$JPS0f zc*bY7L<65{LyN;65`5m9Y;Cd*jGH$tI_Ze@m;J!fz~vVH4*u}sp6{605?^X6F{9NH zae{}&0-tg70Df4wExeTh9G9vjhx`8S4{cN;I}2l)0sb{>KA{b*CkM#%EqtTax$3D!i-Tm6~U_`7%dk*FNSa_N?XS1GQfO zrTeEk-T!Cm3wQtF#I1TI?gtBQ&EqF^eV1asp7^J;?FS9&JH`UngSc!a-0{H9SAY0d zFW%afeFOR(NgQ=!f0|<&L{BSU&^%+m{e`_lN9 zD_EUh9$U+Kf}X(7rhU|X#(WR?PYOJ0RgC9c?}wrb`fv)3d$)Mz(BdhRq9){6_{;eX z4Y6|`kjsuaa@+pWpaJ<;Yf{t#aG5Lcr6zGeqa$nuZX4-iH!ZnK9?>s672C|CpV1g= zg6IldxZCP;zYT7zGl~2C8oOQhozExkvfeKOuOIZH@nzOKW-`av(FI&3__BbUMR7m69kzl8j~LJSBB{BrKldQDfiLpJ=k;Vh+oR8ZR!zoJA5Ua^jYvkN#cSJ zHVw;m9JevN^=kv0@oO_4a_v`SUdgZI$2`9>uH!TEE4212eaDLaBEJHg=U2w%vzQ0T zE9M{b4F5__tzXVl$%{DALbE>U_FYPR@5Mg(_a=gL-BUU*Y)|xB`pCkU&>^FhiJux+ z_#gPuIW#3^Tl~gc#JlC^+V)cjZD_5(<+d=}YuJ@!-kv_eKk#(UMn2~CgL3yn+2?aS z!1_TiI@l?e-J%?aU!*{dzLiNFWZc|?dh)%43W87j-=(Y<+jN!{1Z|JHom~YK^;MzYTi*+mYsx*en7x6!rv5UPpc&GI_ z9Ika#TKk^ymiDY@W@z=9C9dUnp$TU?GqhyknK;;8Sg0$CvU@7wkE=^dzPq4&{Jz@`#~>peCm?^ zi?_}=V(*1*p6Be{#H;3jGH- z;`#{JI^nx%U7EQjP|O$T=H-FvQLIY|FSdveJjnxi(l;%A4;fc!@0bzrbu4 zzLnpqZ_n!*KiE$58pSf!?BJ8KTHiLbGrn!cLqF?)O!hJ84^R76vS)m|op8oafu~bP zyO*uc94ZEamO zzT+agh&OtQuEx`F)+Od5wz2j`yFJlW*L_GQ>yqKf1@8Gv-(x4XCb}wXjC?bf=4{ea zzgsz8m$o&|fv?@7w|Ix%jG+@XXN+6yDKQ(v+L$%4$`k)JE=pSSF7g%dU ziz86LzV01w=YKEnvyR@c@C>rrx;+8Cm^U;+*gpExhvoUG0jm>DMP+Ji`Ou_VHY`+Lv=evZr`C){B4Fz4PAb z$#wA;di!}1{eIBP%rlo_PxYv`U`U#H*4 znW%65=|fMh^n+fs*PWhR7dt2FkjJ$BpqG*E#2Wo3g0y%?^}h>!LS2ol?qSNE_IT)A7Hcp>|acnX^ zeGc?JM61qMRORDZW2<%iTh4y_8{Yc%?|sMjzV$8Lw|?UrU-kOe-*<1P!PmTf=iFQ0 z@{XPF{I2irUN7I>D}3yP_eq^Tkj;T@j8`$C6Me?T?pwd}+~4@_cXXfl#J9Zq8{hcv z|E%lYpz&{bW!HV*!EWgrj&=z~*iDzE~t z^bJ4rdy_)9^MMIu-G9*eri0}goX^To!;yhs45z;$$N8H0{{s;jpSTkb!-@AJTvvHV z)yI$D2HWqrS-oi=*&avkw;e1v$n-e!9wqJGR%r7z^o+joSb@Xi{`;rb@QLfMDsX7? zHM-|(bkEo1Xuc+Y@-_Jw*Hu1#$k)u*e0^kejc+pi1-}0JqAz~SaBPk1YR@h8`mayA z8y>s4_y?anaC5i3scZMosgG|Mr;lIU#|Q3Xzx&wkK6XE#*sO^bo4-rBLmzv&{%*zg z%B0A5AKBld6x~p(aUb$2Pv)`SDy@!bi-aWK9y8V85* z?a??qbsR)i@b8N(26y_xdsFFZT|V={383z*PT-X$#$?TbJ@MfHmfJfk3_VU&oTZ`b z{^pZkvw5$|B6Nn)sD;@%uNO7t1B;LuU7xUi(D1$Dn21zjG@J;-N_0(fg>Bb zmvlEQuU5P-6%GC}P4KNW#M(4J+jZ~j-`(xL`y;n^$bjE^q9a#V-d1!J?gxwuZ*W)V z@I=Q%nFQ^?= zE?3?6$7^>e+bR}Y(kt={9vt%h!N&6imAC33aPl4aImx6?oEg9H-U3ISe7?G^S9Asr zUO#l*e}Cdlr|-V??yVpE-5*zszUa}&7bq6gPAyd*PxP}{5VqINW1 z6(5@|dwsXqOni&p-B9(vc(-bW@t6r7p0a-=hIzgRYIN^|NGImB^?{J2-` zt@6l|fc>UkCG)7^PPGD^&rb7SBbTb(22QT zbePsCfN#|)y$_=kIH#)5e~W${vtPlL9^t#d9l_r$xO1Jk;2i#>`bBoP#aaPh;Kc5n z`qb?64^8x1YNBdV)KIQ}U#DT8W8+uhQ9IAEE?931n-*X}R!_1PbOZoal`$!Y!=`#Rx-ens~`eO#&@++OU@#}$j! z2P*vR%Cu&Pjzjkuad!CDGR8j0zOygvJN#pO`RAsVS9N{s2T9PRO=s70HIO0CFt?Gl$u^)rasY>Jca?QNa5&LiMZOpG9bfM!D zA3q-Pq@U#zC-8}Fw2S3O4rSba5Mj5gSD$6w)8M6aMt!%Ovo}t230`+8fA*>l_=%jr zclZT3dl2S5>nhhe!bbeM-^P!h4h+4FZH&CVwvVUtq~i7i9Bm)%)on!1O0@%@a%~&w zua0bFEZfMn=PP*u588gv%d^k}KeET6H4pohu`HA8HKnKYjQu=*?gzb$4#Uy0AM`Rh z42NGo=w)=^2hU6AEcYm~H`Yq*Jpa%ns91w_uh8b^@9WyIPX|U>E31zJFX+=+$sDh1 zM$~WM@_*~=vaLOyOJ%1EbR)6c>>axCgko%fAjp?yQ6t?)MYMR%HdGUf|^a9z($ zhwg>vZtN|LHt&ZqSnfNwSG-Bw}|F?YCW;B|7nqj?$mn2Rx7`x zL+rW0^BB6!tM%ydM4i*ze@ET^j;q)D&|NZXE{A?%6LnDYw(;u+UFf)4tp}gDN4r>l z)WM9~4$v9QU;C~fbfE(um)>mdofCKP zu{GLj*qU+s0gl&S^P#2Y+g7e^D}C}M+e-b!HemS3w$7{l#J(T&@+|a07PUX?v#I?9 zevb7(vVmpUj8lv6P@ZoHicWPtMNV@)+H*&aV1u4J#{R4ybfFrT&aNMH^(;?NlFC*Rifg#=#@Y%&4J?9&GJMX9) z8D>54+qhPe`=+B-9@O=`TIu*`4UM{+@0nQR4bQcb_~o?+7<$s8i|ZSBjG-sBjB9u@ zZ^84}qWT7%=P31!XGPesq{jKAZqzR18@C^Hq2p?`%YKb^0dK`K@-pN01DvmaK10jg za6Gv7e5Q|ofJxR&?J^xcd%kPeJU`mjn1i3=J`q}Kmu=# zzGp0kdHz+}Sl=uEE$RJ**kd2uth)DuG>wB=RStY09b=!5kIw3uC%XFm%Rf-xz637& z_1EU^7ItzCj|bGlk9vL{JU;XOiLScNJg6Dq=974zP^` zv%Q9GCz#~{)7la>J$R}XExLzfew-5zbYq@#Kfsy?zF=)#U<}#)p!d69eD{`54H5ez z@Sxs;hyMN0b-(+IZ#wN$LjeP4jE~;^&~^X#KmOP~J~hPu> z3N&+kNwV4VpE*qowXQGn#};;MR@o2gIZn;TgO}@AKV&hx7g_rit5s;w^I@&Q$3!z0_pI){F=z^-K%`4_yF3%+Bo!4<78*oM*%X7`aHRBi_TP`PtSk+hsU&mYmc6d4?YO8{$P> zhvziEFU9)!;$QxECuK*-hX**7SI}r^AMAM5ZC&|}-jy!$ojx>{X+6pNEUVfR`bclf ziuc{{D=~&wKj@|FF0wx-pX&W#_yoB4&pfYr@WH1)$+MoMSMWjpQa5>g><@U9Il2FR zFJShETju|mxAlkj7zXbXCw}phr9H8A*QC7PNo?(#c{~lvxq%M$8@lOeeh{qXMzv?i zarKz(Q0&@s{)Z2gT$cW^*N)trsUMdHt@HJCOomH(yP=+4*GEXfA%IIFahSst9#&-ci6;S zC*HhQjn2H+>O9IhU2-C1?#o-fj~e;Jdl#H{q`Zf2_4i)-N_fN1?~~S?Y`o0>c;Y4W zxc|gHuT${%e3wt+Gdb8m?7-=V{huMxaH}!v$!6vn^WXI+!{p~n%+c+NKMR|k|6_XN zk`KWAED=4)8Ct=jeuZ7fa{Y=tjT%O*@0Jc%L<1i8YRhU_FStH`YoQabSXZcphVfY& zj^ES?j|W7{dTJgQZZGxW>}{nbKi4V_pAR8Vb;PrjHFf0Qn5W*`=`#bL^a&!i5~mjy z+;$HKtznfN zN%&3A6o`wTx%jgI-#>>=_fg%`*FlHf#14FP2%Qu=t~YC3(SexJw&xBNXRI%DpVq$U zTKbxIme=m{t1PiP{Ai80=2OgH@cTh8IuzS2TCI_%Wk=ND&{6k$%-wznocjE=)S}Hv znJ@U7+CqCuE%;nRucJM)*E|Wi5WS~#<11O&-(!87dpGGbt=}*I@WYH-aK0L`R4!j>+ES;jWa$l9Wy%bC7G5@i_Y_4 z=ym5Dm~9oft@l;lMb*~w{xW>!XZXSgy=V*GZur@LnuYDxInx{0I%inYD{3mSM&6V9 z>``7nG`uhembyoxCV#$iU|xQ$%QrcXSsN|ixl{eN<#_n>O0?iWFWxsjs(#d9&7n1o z^@Co@F}UsBtDi+zeY?o~drY*@Jbbjw|AP03w(y)BkDLMTobad<-lz3L*Zs+N9@_RP zP^-tcsZT9+&88)G@Gva5hGl%{!C@`NFW73H{h*5l^*QsPHbEytZoE=u-zGb;7n>M+ zvHH|WWc5SW-TDik+5Ru`^lw_&S32m^#oh)(?92E`Q`xF^QOl?v|w%Ivoc- ztUk5Ndafvb@WLN!fZ?ulUgE2>k_{vHfcf{K$GOL_p9`$)4T*taw5BWV5dOpO@P^*F7v%EDPHo~a`)q)=s2fgSstL3C$^0etvWvtW|-|mAcKFG1(=hXnu8T_>)eej># z*VXxMU((`BVnKe&&yjCASM7V{Xnd{}ntssBOpV>$GA;AN>wM*D-VsB|i@9SRrn2_0 z^J99hu|4TK!`si-G9CH!*0pz^TAD*waxFf;7kf17pz{Q~;Ul}Jaj5fydV`&J=3GiS zGM;}Y7URW!SFCjGZlV90I1|_7YSAa_Zyj^Q(@jbPv1aM`_d!(;e8jp5-MD^02aGjq4D(tC zfBVC0oyVT1weF~M&d(V8K|`^6bZcfOJ>)L7e5l zx5&~FIZWSU{h*7oKDIRyKa<1qQPdUi%iNn?AJ;420(*A%LGUIP)O+)hFP_u-XkV;| zFLSFO%6$;`Ke~*A`yk_GA8;SU{ZB>P7Z-fc4|=KVV)WGS2YRfHKFagcu?)+?w`157 z(wBN-zoWZ-Ld`_B=Zx1!{0C3k*VX-`??GtsWtuDhU*88&2fg-?bJP#+gK`}3V_qLK zY#MvsC*>>$_dyHrwuGm%9OL^S^kL3i&-!ToE7F_1a2_eXGxtH%jYaDt^2YS!+7MB7p4r5G8}F;k!+|$AmXUE-gU#nQ?E!hFD!Fr?C;AzrTg4-2u?zmR zI)aw_NRRcybbaw!%v@PZ{t6zthE7L|d-e%9CllRx{z2#YG=`z8h{%ptpYw9?LKfa(E2$eMhbV_KE%Px`I!c5BSe5Yw+0b_;OEpb-%iA z4Yu#a@33k6K}?_JvqqQ^lWkP z`$2gP9>=I3#3T-{!Mhh(gRg>D*WmrnBGCt*T+bS8{?2LVk^SvCuvU4p_b&dPK8r-2 z>A5!m*ZBm!pFz?tTBnSYbJV$sZ{ew9VST3Fj^`|6E#?B!>kwjTL;EAs!h(pP31SblC#bw{QTsTv+q+`j(Is2qW`?t`3qWep3gduy}qZ# zKgE{my_R9L1@_2RX=m#^zA!F)b!kVoi}Yih;UTrmD52>{nmYIo5#?*PFHy`4;;_uqt08$=UV5fBc7YqdtRNV7Gmd} zLVvXS-F3Ae1c>9g*Ln0|K766-Jo3hMK0k{*FI#;d^kMbc+vGhbdwUJVajoZU@Oh&0 z=!fZjP!Q`SuP?^isqzJG&)HTq#ynWG2SP_;N~>cgFEh+_9A3@=uP^B8d;mPp_Rq(& zNNTZd?}zz5^4v8ZKB_gm`N;P{*+-_suIvYijQdaWdknLW;BS9;tz!(oL8qGXT-Um} z&mw*QBN1`P)~GquKgql)#|3@*K`;LoJd0#cgm2K(>)ahR7pa5mGq7j3KEj(=WIpo6 zb6Ouat3E4gnGgN&|K77m{KZ_se{TO`eVne<({*|JnGEWnYoq5s>!b6Gd4IZ#+Yl*?>zbBujc2yj`i`%e<{%!R(%zp5nB^pUO&NElQ8q-^Yx6; zLbrM1rGt5nVeBvQEj%;Ka;cw|=NvF^v7gDw@TK_RFY%nNO}i6~l+Q8n*=P>FFM-?* z;X~&c3L;@LuJ$>AM=1NzPMO_-zUD>{{Q|fDU}WpLsPpVqtvdIB`XH z=$WI2*&gP4#<^QKkJ=Ws=;ysL_XgmK&rO?Er=8mNg8*fZQhK`Rqep$5)=2VUO*G_W z$;IFo&&!F`(~`lw&)@sm(eq&NvoGP{`Ul-zfBX7;xgk3E69ed;xC));5BSVUY^Tm} zjW4Z(=dyD+<2+FD`CV3GKupm4tiFE;Ki3q-pr_6-hr&OK2IlKdgJ0-=2nK; zkFGys7`968(GQCboiD7Eb%O6_^n+f~`+Z#TnWtOT%FnI-K2d4ij_a>@oJ0>~-CJ`t z`xw0~pI8Fpegu7#+ba!rWV(hir?!Pl{B0vGG&Lp{SwG0ljDxShIg#{V*VuBUQ!Ttl z-4<)XB6h%S!@M|I2lFBykc}X{(O0jv4P%)x$XOz{bpj90E=|kB4Lhe&W%- zx9zb)*Imr?dr3CDPt|L5Fid037tqRAr)@X>w5}dA4!O5c`I)cvbnPNWRWI@}))Mqk zO%0iR=a9O(toCKfLGXnawHG|z$0e@R;7S+YTOzj}lWbrw)9w9yU6Gv zUqrkZbG*RAxA4GMna(~2-@Y}@nq0x0aeNqu2V>}lE>-UsTho~94d1oa`n=@l3+M(e zdu{9i&)>lYCOu*vqT6}>ekOAIK`+ziyV{48XA&tJzK_^}ZKV=-vUvTq& zgnIsf;LJVqSoA$)aJ&~*_b_~e?$Go%9QtAU-mLex_A7gY^YwQ(+yZNS>ig>}(i2?v zwqqFlS=V?iZTugAc(#K5=GzatnEH$RD|Fp2tNQJ=X>WT)W61Zq${rQJU2AU(o$@5^ zJ;1*j9d;X^e8i93k3vtbS_j6^h5D9p#`;3{uf^wDa>u-(BktynEFH1Oz@O`a!EHmd@I^H{|9=3>vd$u(iN)A&@CKJy%!9#?{T(p+?*E#xpmlm9USiH`GXI~Ku|F(p6&oJq7iMg>+WzWL) z`z-S|uIM9IfUT#!r{U;;&5QCJx(tJkd~i;p-#C{G&*`30=rhk*px>!{M1Ru*)jsaw zfc1l3$}y$db<6LI$4 zkN^17U#_9mr)-1r1Dt-)OB~j>e2&U^-b(5 z^@Cp8QSi)ow zdsm~ucKCza))kZW+pdLrvV-wSBno~I{#kr{eP7OmGne2hH% zDb_{d^cw32y~Ouh`Hm~+^#3gwZyqgU{lI(1%dhaMA?%CaYsz|nr$et1FSVBI=T4=~ z`PcS*(i2(OH_ovdqq?W=*blY*bsoCq{lhW+JbZYbIPvz2#Bhuc?6c4Ov}N{b~U;Tvrh2Ja-~AlK<1X^xFsHIDW_aVn78PX z^9>mJM%?iabc~?`Ew=ysZ+zw5ie=E5m-Ccs#rP;Z=__ZWu1;%PtAnxcbv+yFxF%X) zV;!vSGY7UaNd84+`M07nM*aIz=%2jHR`c4Z#mqW@EsFMb4QxqVE@vN_lLYE1V4^7g~s>fo+H!}jjfnZ#^)YfGUC}D zyjMqg^1;hL5cQEZ`^!GX@5mOc?aP;j$c=mWe>T=jGG0JDB1ZLp9vRkGeC5+UoMIPq z5V+{tx@6zGwmY8aHI6kn#2(mQ^`CRvt>*)>vbW2?fajLvTfg(P{Rk% zXf8x9(=R-C+wWUcc<=`HvA6wT`%Rvx`}$ooYzM~wl%(cuN*C5K{-+%IlhRwj~4x)m+5cu$3?y`R8F***S*Z)7N7e69q0G}{!yzp zC*?Ql9Ye*f_aC(F{a%$UP^-<p^ztJoIuV6W@!rrJ+;P`)} z^2Gw?RHbWc2_$~r2aMd4ZSj97J%9ZC$u0YR!>p(0F#g6q=ExIOp1RY0eAW4~2BmY; z1Kky;cyD=4ef?iGy>=b{M-ROjvyIixxbM#M^Hja>25x>$Pt`IG|6jhC!x}TL^=ChB z{Vf;&Y%50mKK|067af18>wZ)=#JvQ$b*sj96i;w?Mh0IU?fz1AIdBSn+{?B5>Q(7+ zgOE3L;!kQp#UpoO4**}m!e1FKpEW+L3mn9nHN4UUKkuzWKl#&Z3o)1N2R~Ky^SbWm zslQs_5kKCKB?qvzA6VC4rnR%28WM-13wsE!(fzRhS%z{XV#iu?zUoYE%YEkJy_ez4*309kqg7WWIxc*QER|aOD?%q_5+MdG-UB+@qBHO0ITlPSO7@o$`0+ z&OMlYTyw(D_Ad%2KEqsbLY8AO9uu43H=TO}|66GHaRE5+OE)QYfrBq{YkjcQu&U3c z(oWy!&2+{k@0lZG82rYt>btRc}jbom0 z5C`M3ej3+fMOJ+8Wf6>dwFve}Y@5eZzw;dH{5%+XITkg>xn9h~VoYzn=gGBiG`C`J z0&nV4%-_8UVoQ!J^m%!{y;tL4e)tG`th3{vVl|`lnBIJx2he$p7Jl5@Ku3RFEp?;D zX3H@0%=VkkJY{pEGjIFh7QyfXwb1{o=hxKNTnRq`hlbX9^Xux9Tj-SG>~lGQyN1%2 z9>Hr(eR!d(ajCI7V!e8?I?^TPIezE|y|g+~Y6*TmCm!HZyWolbl{V%Gc4r*h2oCgF zZ|@WDJn@V1yq-F2pJv;Nzb}!uQNxc_`Ox=+Ub;t^3mnmkN5exu@cTh8-G3JRQa!mY zzJZT?6Sjx1Wg|4wH`XQK_CG$ukCi53V4L}TEPerIzX)~^e*j}Fa6UNERoAgDdA%{s z3pLgc`_~(Efe&!_;Crv}YD0H;;A7(fC*I&gXWgu?<3`K-sVgt;))Q$BFn8(~=8?_dD8KZ^XwF?>@ zO;6ij?HMskANKDVG~D8jZ_%;(|KjK7(~f7=QDf1|`$u(K z{|WWMA>J8hX$}taFXK=v%+q|xY4%Cp->cjD#z9ubL6-52gRG2$tc;_}xit|Q*K7J` ze`umtKCe}t&zW!aE1-xkb`h`IMm>RE@oj6T)Iu@7bZ z;WYlRKJy=A^?f?%skfegNvFW0-Wuk4C)v#xE24Jp!FS9HKf;syULA)Yu+F;ocw7U} z_JdyH*xlmy4(P&XJMs3OzVbPUPK+sU!*{GdwH|Ok6!7|fTELezi2jUuZr`9jc~5KD zx~{>+M#s)LZh;}6?`uIvy>kl;y~i-FO;`0Q`6gWAZaVttKx>_pUlD8M^n+e>{Mf&G z(LMjEzvax|dH)acougIsIi~S`=(=D2AK$9i-MBC8bnq+nhD%?iO3k7sY- zNnXSp9qd!lhRx^>KX}lBgMN>ykB$AH7ajNh(#>Z|Z+DA&gns_Lrr+LtaCrMI|Kg%$ zvqnJ+9{L&Y(0lhnzt4W+g~5wF0?+#Kn;q!)8(;L;z}N$#Wo)J5!EZb9L*5Hs{}X3^ z`>~%A-;$T$lWWK&pO6v17o`^4l%LIR$AkEQi$Am9|JJ)c)@%|uKC_wqiSFq8U;o$7 z#Q(oTCS%SW_%Y`ApzllGeMUUXfxp2Q-c;X;?^uj|{d31&G5q1rzj@ofW}T@%Jow?t zuOGVZ@BYI_YrMK{d-CVo<5)od2lxE`sZLL zPF1#iapW=KGZ*=;$c<|K+@T+Iq0b+ev-E|3)cC&de?lO>9|Dhl(96tkm+qeC9x&U4 zE!e~wXWbZU`$yGDczJJz&#_6qi5fziVay@Mvb~n)u^Qj@K6s9+eR$ouRsD&~rnBtf zTKdo_H+-oy4+ zTe)|SdBi*uPUr<5Jf<}x-WLu$_zD(ywIA^_{^q2}G|bNeeC>I|+_25Su!n2wY<$0$ z10U6as6pfkHiN?$^}seekLK}qEr1SxK!+dnf0PExbv}SoeRZj{)Ay&WTW+&X)`j+3 z_Kx+%_x6Rl%}#i6FOM#KFFo60dBE>cQ*0p|! zHRH7YH%*)xYW09P+8?ygp@aD|Mm?i-J%L6?-0QMtdF^6-19nz>r_1W$Yrd0Qp9`*T zY7DqP@6Zpr=(>CA85i0#+-N-ZAmB@%HaFJm823_!+~zbCnn^cj#x*j3q{uMMbj>6%=Odr6q>42dtb~o#VxqD z#dK5tU9-h7T4@-1)aOyHeh@dtbVRPxNB7*y4{>jYmB#nJWz5g^)~LTocH3)(mj4n_7szxCTa#hQVxmd!PK;iE4}yz!IsiJbe=suz7=RosJVU_z8a1m!B-{ zz9<`jL`B#SX*8m7xF#d-m3H|}-tVbU?i zh+Fo{T{R!E6`34gukMC;ZwnLOGj2bDx7^*Z?6}Bh4G*8WCWH60UH88JrQPnkKXQ9# zUZ%6GmA9cy_`cmwz$eEb^T8M7C%%~GvTA7MgHOh?8g7CigM6|+UoDt<1G7JfA3nlw z&UZAn-xWn;1T8IgK=YJnsB356v!7=_2%rO8pYN_Y<9z|G z$IzGBKYf+5#6IDJqxCV~e*vZ( zj?dAeulvXlPCQQpM>@36+M+jO)Y*;N*YoL?qvBEWX%G@MvbO3se&P{zw(>T=qlw>4 zjxOT)g2~iI`~*Mim*t^9IS;((GyM)=*1+ zI^qpZ#688&JOw@s9=X8#ZXCa*Q~efe)3i_h1L8j@+!_tWHR``sG*zc zF(>+AT03p2exFr?d!Yi+@+R6n{_L)<2%!-CALL+~){O}w>W{n}=J#RAYn|Zc6Ze!S# z*YxuSjKM40D7z0or7_m=3-!AX&|_!@q)C-!Qr<@PZ&{h$}k>vXm~jcDS& z2t4xiTKL##JHW59qJ3Sm(Xj!4L;BsC_*)M6h7lWZPS*Luz6dxP60Cyzjp->cmW&pV9f6Wn+J5ZGt-)fV+jm9X_1*@$r#U+;6LVNpW$oi6VDjT zi#XaB<~_y%*K@`5UC#`n?g8ruz07&f1DJI|w*87-=;Y@P=zwf+Xt{=t`aY)P8al_3 zTx85PsN3?zybL=z*$=Z_C+E;Xj}2=w-}@+ZvkwGo`!I5ec_v)@D(-=rY|RzxthzWe zm!O$9hEAsO95z42DAp6?YAkZG_9L&YK1*7=y>E+KL}I*$39&EilttAH(F+CBa)Ab6wQ? zgZq3>uG!DzCi2~$NHFuZkA!y6bb_@Q82)t&>J2&*b9AOPU(JbF-!p7%Bd}AV!++$T zbdU9p@o{a!pE_b)&OEi=&8*A#9DbS~5%Y{Y&dVIPjAvV_?d@}z;9y_IwSTY;|BZ2w zp_`1AI^UpC4I@QN(8g6)Zx{DcRsb0)8Sz87FW>t{5^H9z(q&Mka=_C@uX z#=9pg>`|phld)OXJMeZYe3IZRdR`7c@(rAM_!|lT!ul+}K#}9Yzw)r0mnOOwOu7S? zWi`I#eFpH^cT|~24ZEPd1vnQzFu4I+9M_c}n!T1U;{MS-H6H%P9{H^8&o%dAZp2<} zulQ&p9LE9N4N;)WJlyP0aJR35n|-CdUaWP*Z&ma2A+^X*KDPe6yub#HbDtj1C#b7> zf2GmveCR_>cge^#paWOFXt>(2lk1NA3v?6dMMSf96n zH@RnC*y#D^u~Q=+*k~NvJ!7M4{)TKhCfBOIorfQvaW>9uoxdTT z`P?E}9W!%?y^eDG{22k3b^4h%I?Fe0&0?~*kd1iMsl%6s}_ zdgEgA7NhanS7zy0#vXcU6AIq4tyi zUzTzOJ;8?u2er#Ix{Mq}mY#=QHAmUQ;(v6`JnJ5<@N;`-(#3L%F6BE-&S}F= z3jb5pHujasBY)w!skOr}jl~)hx+|A?zC2Mtt()x;zsPy`6uFNK>vQnMJD!sTKRy2- zXU6j3bw#=nTVUYse4xlaqyB33k9Zw1p5a4+^V!#+m0j?fhrgZh{fup=;sa{@>zL)d zD$!}pZocH14zl1y%kyS@d9|8>j^LfEHan*MAi&IhJlEX|?yL5%JXGo&F?nN($%Xe7 zU*$1uZ*;29;eWMjq7|Qr>j?iS_!&=pV?XvG$?69YmS={oRcvm|G|)=!;Vc( zn1ZV#{H^=yZl&gAKjd&`HV5_|OJcTJ;}UbemA)jaJ7A&z2bxzOeqj^)~R+mvGi zSI6hB`b-Bqs59_oY)^fU!NYjO8a#Y&JdfdD9S5!mjy&Gq07eTh^FRjco5zsFm}|B1 zkO3Y%EQ>MlEbCnDKX|zCpaq8-1uXoewIlRUt+KBTWA6q|Kj=ljA+MKb?S`#b--j)l$s$0}IV2siBgI*TM$awrF05y)fW4n=!-@)5d_lo-1d0xJy zmhAk{l;+d=TsipQ-6uTar`#>I?V%~&h3YfQfH(ezma#``pa1ERLtSC86q*{9uGf%Q@Vd!lfK~#wfKh5TCtDd{%u(eYdG*s zvt7riBUhtA2jh}|@WEH;Bzq58HZfw1798Vdncxx=&)-FQnlHHUF<-9DKl4RDU^{B@ z@AdG-C-8;8`O@0w_+&?Mz~^V>qp{DkO!DG-WTHEK$1>;HLR_wwFY$Obe6QC>=y|<- z@jdx`J$}IV^Z33}x%Mf+ZiA0}A8p-d0khB13mE>S%`kW~W*@7RwEaIYa+7_lw)XFO zeS(#}?C!hZ2~Or|UWSn)&U<`Mj({^SN8shP`g(k08SsOaYw}V@yI=5F)tP7dai7M0 z3HN&Az557%E8q7Z2mY1U7CwTH#&{2-$)uLU*Z2C}q&x@ky;J7FJrneI)%A3GzqGqm zpC`qzBIl@@EO~HDfvsyOvmQ-Gj_L3jh~B5wv+Y_N+x<~Lh$!|kW&cLs{5KUd+u$+oqn1UHpKGm3HvGrFVQijnz%$?Ko74Fo z+|g!H8$beU;S|X-&wS5#V+o7;0YgE9r3J7^B~5sH{+2%rtb#MeC?Op|$yzvmCGc|lK&v#sXk_FmWN9n~%18-h4EFM}`rk@oC?I+z*@no)Y?! z8{m*Dv^mz^4>{I?#a?(#cpl52^+Z2lI@=uJx*zm1I+z2y*Z^m_mUA#Am zJmYeW-I5h`ir6z&b0%Qq9dJOKVQ7{mZ)GJtcCSL$9mGg+HVHF!y(>B8Jc_zA>lO4V|Eo zFJql$jNf8lp8+mBD-9ryh6jwJAM`T)PUJ-{#4kQ$OrPKO$ov@V2fdU%%vNoQb<@$j zdFE$Y@r=(PLnwH&A>*)T1RtMfo2&!l=1q%jI%550Kd>}#xr@JpKfJiFy-RHIGr5KD zX>~-L;Gwa=XWTr1Q@4OC&H>LdfRlHz4@q$NLnB@hTl)Q=mpOZVVBT9)KEcmCnA;|PqfUxG0ePkyqF)zxBm~RZ~v1e_O)Y$PaOy5k8F+DYdFTCSy9e& zyjkb5iDQ;7d*7fJR5y3fwl*CkC|SE_p=1@Ql5=uDb4L zbh0LhuE2%6r#^EKT<$Zi)Ay_YQr%}hRdHAJ9wT`DpcfrSAH2Pt{lG}qefyuk<&{1~ z8+$SIAilKB8CuH+hkTg_GYvTCnCT2NKXAwm=I|J1S;Pq(=B4V%G)}e8xQ@`7zVmlI z{T9a8YFz$}`2^0=pqFm<#A@a1It;8I^fIc$#uGep89a}nH`mVP40B9~A2RS6@P5$C zNCrNkrZHbO)W>h;ZCT34;DNvFA6j_IUcGi5wt@$b7_almaj0Vf1JAydjPNaR%dLKj z|FvY@t*3RuZtH7ZbWbTRUH6kZRqvWT*17Qg>}Atto!AF)JgU>Q8E#sEBfp$Gv|iKI z4cYMDlOKSgci@h68^g_CHDe{g!Z*;*<7wYxulII5$Ef~0A-m&qXT$)$_zO7WXVfyT zBm9`h6OZ^UkVI$tpmn@!j2lnn|Jnckf%r}RW9ROO=l<{jkN8ztt*v^*+zww&eHJ`X zlDOc5ZNq9ij@uZX{hDAieof;MEBh6hSMw|RG0(4z>-e1f3a$N0-?5^<$gjZW`IT|` zEapMw74wgIhMy&;)i39%@){{ufUho;1Am)}8)cxQgDZ9j$3L~H#mH^XeNVONv+(&`iZ15f9y^OEcPj%B)V5eAii@Imk`ft3mdaoW@`TVBwSU(7$V^`tgq~8yEiNpW1vE;>=)@%Jg z7cQSKP`!_NvMDW?XAkSX6}daR6TQZ7ub@MGzk=~o+Glcj9$ir1`A`4rWWz?a)w#hu z9FHBZ{GpK!5jW(U#_*rf*sJv!g6;a7MOUhx?AgKR|32NKcKjJ|jYO_yoy9Zq2=t%R zd2+I#=70G+UL$aPh9hL?c^+*)=q22a>p9E+2ewY!^COS<;}gC{eDMC-)ECOHmeK8c zi9dF+7YC2uapYP@qqXlD&$Q>pw0aH%j{LFulwkNt?`P_@>wZe7W6ra(iWkpX!Q*)t zEp?E50EZSGZ67g2M|=xxP3ov=b#~D{(J=?v{`8z-eFx5*%kb6Ri6Cvy5;X}pwT8AI z^b*HsFYCYV>Wm}yUfAY&&fZPDS`JtqHi1XJ&}My{BN<-&{@KgUg9;12^s!;g(>iz$ zgN@+U7@i=m4{@y%zRU~YjyK~vV!q_@#3S}FiO%%FlRN+hpUe~a<2{V=h)ECVh}oxdC6z{_A%laxQbz$U#oQtK2>hf zMf;e|3iCeZogbV?o349A=gahLlH(Db$l9*-=+SEoS@3fX($D#FwLQhN*~i!>>n|}) zm$7ZRt{UHQ5naR^Jw+FBqi;Ct5_1vTSbL-0o9L?Rep)B%lHte&?)gjKW2bf}x+-go zd^4BkT&1UeXE|P%$R7@T?G|0dyUiPPqUMZoi#;V~V_1$^f;FD_FO7%n!mq6B3D#%~ zCr4}-`NUyAsvC2LG5bEvyST4iM7wBRVok>#7k1_lU zEZdNA1Pa(UzVjXTi2ks3^nQhBkj>V;3FsZq=7f8s@kudT^vnvq!FL|9rlQjy-SnC> zuTu^ILr-!HSjNW&=xmE~!eg}Xs{eOsUwlo!IVtZqfN%SFuG;LYb3(G?SzqAQv0nVU z?p?2%o?I7yp|_tG(eDSn%sg``_B7vm?x_WzxQ$`n_wb%8{-Bnx$qy6tmj=D){SIn9 zzvXpAr{Bk!sBiu0Lr<>sgI=`Pot|75J16Rp$F%*Rmyzzo8vQ1MWV{plA9_BavMkI0 zvWkx%`(gk8Jq^1j(|IJc#veJ*ugTnbc$Nho{Fxiz^4{6G5l>)@Z)xW#|FTc_3i EKlQ^fkpKVy literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x355D50B7.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x355D50B7.ps_5_0.asm deleted file mode 100644 index e57ad9f010..0000000000 --- a/src/games/endfield/deferred-lighting/0x355D50B7.ps_5_0.asm +++ /dev/null @@ -1,896 +0,0 @@ -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_constantbuffer CB0[239], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[5], immediateIndexed -dcl_constantbuffer CB3[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture3d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture3d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture2d (float,float,float,float) t19 -dcl_resource_texture2d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_resource_texture2d (float,float,float,float) t22 -dcl_resource_texture3d (float,float,float,float) t23 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 29 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t20.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t21.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r3.xyz, r1.wwww, r3.xyzx -utof r2.xy, r0.xyxx -mul r4.xy, v0.xyxx, cb0[82].zwzz -mad r4.zw, r4.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -add r5.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mul r5.xy, r5.xyxx, cb0[82].zwzz -sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xyxx, t1.yzwx, s0, l(0.000000) -mul r5.xyzw, -r4.wwww, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r4.zzzz, r5.xyzw -mad r5.xyzw, cb0[26].xyzw, r1.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r1.w, r5.y, cb0[1].z -mad r1.w, cb0[0].z, r5.x, r1.w -mad r1.w, cb0[2].z, r5.z, r1.w -add r1.w, r1.w, cb0[3].z -eq r2.w, l(0.000000), cb0[86].w -add r6.xyz, -r5.xyzx, cb0[44].xyzx -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r8.xyz, r2.wwww, r6.xyzx, r7.xyzx -dp3 r2.w, r8.xyzx, r8.xyzx -max r4.z, r2.w, l(0.000000) -rsq r4.z, r4.z -mul r9.xyz, r4.zzzz, r8.xyzx -mul r4.w, r2.w, r4.z -lt r6.w, l(0.000488), cb0[238].x -if_nz r6.w - sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t19.xyzw, s1, cb0[108].x -else - mov r10.xy, l(1.000000,1.000000,0,0) -endif -min r7.w, r10.y, r10.x -add r1.z, r1.z, l(-0.050000) -mul_sat r1.z, r1.z, l(1.052600) -add r8.w, r10.y, l(-1.000000) -mad r11.x, r1.z, r8.w, l(1.000000) -add r11.y, -r1.z, l(1.000000) -movc r10.yz, r6.wwww, r11.xxyx, l(0,1.000000,1.000000,0) -min r1.z, r2.z, r10.y -add r6.w, -r1.z, r2.z -mad r1.z, r7.w, r6.w, r1.z -add r2.z, -r1.z, r2.z -mad r11.z, r10.x, r2.z, r1.z -ld_indexable(texture2d)(float,float,float,float) r12.xyz, r0.xyzz, t22.xyzw -add r1.z, -r10.z, l(1.000000) -mad r1.z, r7.w, r1.z, r10.z -add r2.z, -r1.z, l(1.000000) -mad r1.z, r10.x, r2.z, r1.z -mul r10.xyz, r1.zzzz, r12.xyzx -mul r13.xyz, r1.xxxx, r10.xyzx -mad r12.xyz, r12.xyzx, r1.zzzz, -r13.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r10.xyz, r10.xyzx, r1.xxxx, r1.zzzz -dp3 r1.x, r3.xyzx, r9.xyzx -max r13.x, r1.x, l(0.000000) -mul r14.y, r11.z, r11.z -mul r15.x, r13.x, r13.x -mul r15.z, r13.x, r15.x -mul r1.x, r14.y, r14.y -mul r14.z, r14.y, r1.x -mov r13.yzw, l(0,0.036546,9.063200,0.990440) -dp2 r16.x, l(3.327070, 1.000000, 0.000000, 0.000000), r13.xyxx -dp2 r16.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r13.xzxx -mov r14.x, l(1.000000) -dp2 r1.z, r16.xyxx, r14.xyxx -mov r15.yw, l(0,9.044010,0,1.000000) -dp3 r16.x, l(3.596850, -1.367720, 1.000000, 0.000000), r15.xzwx -dp3 r16.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r15.xyzx -mov r17.x, l(5.565890) -mov r17.yz, r15.xxzx -dp3 r16.z, l(1.000000, 19.788601, -20.212299, 0.000000), r17.xyzx -dp3 r2.z, r16.xyzx, r14.xyzx -div r1.z, r1.z, r2.z -dp2 r16.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r13.xwxx -mov r15.x, l(1.296780) -mov r15.y, r13.x -dp2 r16.y, l(1.000000, -0.755907, 0.000000, 0.000000), r15.xyxx -dp2 r2.z, r16.xyxx, r14.xyxx -dp3 r16.x, l(2.923380, 59.418800, 1.000000, 0.000000), r15.yzwy -mov r15.xw, l(20.322500,0,0,121.563004) -dp3 r16.y, l(1.000000, -27.030199, 222.591995, 0.000000), r15.xyzx -dp3 r16.z, l(626.130005, 316.627014, 1.000000, 0.000000), r15.yzwy -dp3 r6.w, r16.xyzx, r14.xyzx -div r2.z, r2.z, r6.w -mad r13.yzw, r10.xxyz, r1.zzzz, r2.zzzz -add r1.z, r1.z, r2.z -ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t6.xyzw -lt r0.z, l(0.001000), r14.x -if_nz r0.z - dp3 r0.z, -r9.xyzx, r3.xyzx - add r0.z, r0.z, r0.z - mad r15.xyz, r3.xyzx, -r0.zzzz, -r9.xyzx - dp3 r0.z, -cb2[0].xyzx, r15.xyzx - mad r16.xyz, cb2[0].xyzx, r0.zzzz, r15.xyzx - lt r0.z, r0.z, cb2[4].z - dp3 r2.z, r16.xyzx, r16.xyzx - max r2.z, r2.z, l(0.000061) - rsq r2.z, r2.z - mul r16.xyz, r2.zzzz, r16.xyzx - mul r16.xyz, r16.xyzx, cb2[4].yyyy - mad r16.xyz, -cb2[0].xyzx, cb2[4].zzzz, r16.xyzx - dp3 r2.z, r16.xyzx, r16.xyzx - rsq r2.z, r2.z - mul r16.xyz, r2.zzzz, r16.xyzx - movc r15.xyz, r0.zzzz, r16.xyzx, r15.xyzx - mad r8.xyz, r8.xyzx, r4.zzzz, r15.xyzx - dp3 r0.z, r8.xyzx, r8.xyzx - max r0.z, r0.z, l(0.000061) - rsq r0.z, r0.z - mul r8.xyz, r0.zzzz, r8.xyzx - dp3_sat r11.x, r15.xyzx, r3.xyzx - dp3_sat r0.z, r3.xyzx, r8.xyzx - min r11.y, r13.x, l(1.000000) - mad r2.z, r0.z, r1.x, -r0.z - mad r0.z, r2.z, r0.z, l(1.000000) - dp3_sat r2.z, r9.xyzx, r8.xyzx - add r2.z, -r2.z, l(1.000000) - mul r6.w, r2.z, r2.z - mul r6.w, r6.w, r6.w - mul r7.w, r2.z, r6.w - add r8.x, -r11.z, l(1.000000) - mad r8.y, -r8.x, l(0.383026), l(-0.076195) - mad r8.y, r8.x, r8.y, l(1.049970) - mad r8.x, r8.x, r8.y, l(0.409255) - min r8.x, r8.x, l(0.999000) - add r8.y, -r8.x, l(1.000000) - add r15.xyz, -r10.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r10.xyzx - mad r2.z, -r6.w, r2.z, l(1.000000) - mad r16.xyz, r10.xyzx, r2.zzzz, r7.wwww - mul r0.z, r0.z, r0.z - div r0.z, r1.x, r0.z - mad r8.zw, -r11.yyyx, r1.xxxx, r11.yyyx - mad r8.zw, r8.zzzw, r11.yyyx, r1.xxxx - sqrt r8.zw, r8.zzzw - mul r8.zw, r8.zzzw, r11.xxxy - add r1.x, r8.w, r8.z - add r1.x, r1.x, l(0.000100) - div r1.x, l(0.500000), r1.x - mul r0.z, r0.z, r1.x - mul r16.xyz, r0.zzzz, r16.xyzx - min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r17.xyzw, r11.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r17.xyxx, t8.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r1.x, r17.zwzz, t8.xyzw, s1, l(0.000000) - mul r0.z, r0.z, r1.x - mul r0.z, r8.x, r0.z - div r0.z, r0.z, r8.y - mul r8.xzw, r15.xxyz, r15.xxyz - mul r8.xzw, r0.zzzz, r8.xxzw - mad r15.xyz, -r15.xyzx, r8.yyyy, l(1.000000, 1.000000, 1.000000, 0.000000) - div r8.xyz, r8.xzwx, r15.xyzx - add r8.xyz, r8.xyzx, r16.xyzx - mul r8.xyz, r8.xyzx, cb2[4].xxxx - max r8.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r8.xyz, r8.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r15.xyz, r11.xxxx, r12.xyzx - mad r8.xyz, r8.xyzx, r11.xxxx, r15.xyzx - mul r8.xyz, r8.xyzx, cb2[1].xyzx - mov r14.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r11.xyw, r14.xyxx, t7.xywz, s1, cb0[108].x - add r0.z, -r14.x, l(1.000000) - mad r11.xyw, r8.xyxz, r11.xyxw, -r8.xyxz - mad r8.xyz, r0.zzzz, r11.xywx, r8.xyzx - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t9.yzxw, s1, l(0.000000) - min r0.z, r0.z, l(1.000000) - mul r8.xyz, r0.zzzz, r8.xyzx -else - mov r8.xyz, l(0,0,0,0) -endif -ne r11.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx -if_nz r11.x - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - add r1.x, r0.z, r13.x - mad r2.z, r11.z, l(-16.000000), l(-1.000000) - exp r2.z, r2.z - log r1.x, |r1.x| - mul r1.x, r1.x, r2.z - exp r1.x, r1.x - add r1.x, r0.z, r1.x - add r1.x, r1.x, l(-1.000000) - mov_sat r14.xyz, r1.xxxx - mad r15.xyz, r12.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r15.xyz, r0.zzzz, r15.xyzx - mad r15.xyz, r12.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r15.xyzx - add r15.xyz, r15.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r15.xyz, r0.zzzz, r15.xyzx - mad r15.xyz, r12.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r15.xyzx - add r15.xyz, r15.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r15.xyz, r0.zzzz, r15.xyzx - max r15.xyz, r0.zzzz, r15.xyzx -else - mov r14.xyz, r1.yyyy - mov r15.xyz, r1.yyyy -endif -mad r16.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[216].x -mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx -dp2 r0.z, r1.xyxx, l(0.067111, 0.005837, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r16.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r16.xyzx -mad r17.xyz, cb0[6].xzyx, -cb0[216].wwww, cb0[214].xzyx -add r17.xyz, r16.xzyx, -r17.xyzx -max r0.z, |r17.y|, |r17.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.x, |r17.z|, l(-208.000000) -mul_sat r1.x, r1.x, l(0.031250) -max r0.z, r0.z, r1.x -ne r1.x, l(0.000000), cb0[214].w -lt r1.y, r0.z, l(1.000000) -and r1.x, r1.y, r1.x -if_nz r1.x - mad r17.xyz, cb0[6].xzyx, -cb0[216].yyyy, cb0[214].xzyx - add r17.xyz, r16.xzyx, -r17.xyzx - max r1.x, |r17.y|, |r17.x| - add r1.x, r1.x, l(-29.000000) - add r1.y, |r17.z|, l(-13.000000) - mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) - max r1.x, r1.y, r1.x - lt r1.y, r1.x, l(1.000000) - if_nz r1.y - mad r17.xyz, r16.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r17.xyzx, cb0[215].xyzx - round_ni r18.xyz, r18.xyzx - mad r17.xyz, r17.xyzx, cb0[215].xyzx, -r18.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t13.yzwx, s2, l(0.000000) - add r1.y, -r1.x, l(1.000000) - mul r2.z, l(0.500000), cb0[215].y - mad r6.w, -cb0[215].y, l(0.500000), l(1.000000) - max r2.z, r2.z, r17.y - min r2.z, r6.w, r2.z - mul r17.w, r2.z, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t14.xyzw, s1, l(0.000000) - mad r2.z, r19.w, r1.y, r0.z - add r20.xyz, r17.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t14.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r18.yyyy, r20.xyzx - mov r20.w, r18.y - mul r20.xyzw, r1.yyyy, r20.xyzw - add r17.xyz, r17.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t14.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r18.xxxx, r17.xyzx - mov r17.w, r18.x - mul r17.xyzw, r1.yyyy, r17.xyzw - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r19.xyzx - mul r18.xyzw, r1.yyyy, r18.xyzw - else - mov r20.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r2.z, r0.z - endif - mad r19.xyz, cb0[6].xzyx, -cb0[216].zzzz, cb0[214].xzyx - add r19.xyz, r16.xzyx, -r19.xyzx - max r1.y, |r19.y|, |r19.x| - add r1.y, r1.y, l(-116.000000) - mul_sat r1.y, r1.y, l(0.125000) - add r6.w, |r19.z|, l(-52.000000) - mul_sat r6.w, r6.w, l(0.125000) - max r1.y, r1.y, r6.w - lt r6.w, r1.y, l(1.000000) - if_nz r6.w - mad r19.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r21.xyz, r19.xyzx, cb0[215].xyzx - round_ni r21.xyz, r21.xyzx - mad r19.xyz, r19.xyzx, cb0[215].xyzx, -r21.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r19.xyzx, t15.yzwx, s2, l(0.000000) - add r6.w, -r1.y, l(1.000000) - mul r1.x, r1.x, r6.w - mul r6.w, l(0.500000), cb0[215].y - mad r7.w, -cb0[215].y, l(0.500000), l(1.000000) - max r6.w, r6.w, r19.y - min r6.w, r7.w, r6.w - mul r19.w, r6.w, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyzw, r19.xwzx, t16.xyzw, s1, l(0.000000) - mad r2.z, r22.w, r1.x, r2.z - add r23.xyz, r19.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r23.xyz, r23.xyzx, t16.xyzw, s1, l(0.000000) - mad r23.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r23.xyz, r21.yyyy, r23.xyzx - mov r23.w, r21.y - mad r20.xyzw, r23.xyzw, r1.xxxx, r20.xyzw - add r19.xyz, r19.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t16.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r21.xxxx, r19.xyzx - mov r19.w, r21.x - mad r17.xyzw, r19.xyzw, r1.xxxx, r17.xyzw - mad r19.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r19.xyzx - mad r18.xyzw, r21.xyzw, r1.xxxx, r18.xyzw - endif - lt r1.x, l(0.000000), r1.y - if_nz r1.x - mad r16.xyz, r16.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r19.xyz, r16.xyzx, cb0[215].xyzx - mul r21.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[215].xyzx - round_ni r19.xyz, r19.xyzx - mad r16.xyz, r16.xyzx, cb0[215].xyzx, -r19.xyzx - mad r19.xyz, -cb0[215].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r16.xyz, r21.xyzx, r16.xyzx - min r16.xyz, r19.xyzx, r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r16.xyzx, t17.yzwx, s2, l(0.000000) - add r1.x, -r0.z, l(1.000000) - mul r1.x, r1.x, r1.y - max r1.y, r21.y, r16.y - min r1.y, r19.y, r1.y - mul r16.w, r1.y, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t18.xyzw, s1, l(0.000000) - add r21.xyz, r16.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t18.xyzw, s1, l(0.000000) - mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r22.yyyy, r21.xyzx - mov r21.w, r22.y - mad r20.xyzw, r21.xyzw, r1.xxxx, r20.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t18.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r22.xxxx, r16.xyzx - mov r16.w, r22.x - mad r17.xyzw, r16.xyzw, r1.xxxx, r17.xyzw - mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r22.wwww, r16.xyzx - mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw - mad r2.z, r19.w, r1.x, r2.z - endif - mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) - add r16.x, -r0.z, r1.x - add r0.z, r0.z, r1.x - mul r16.y, r0.z, l(0.500000) -else - mov r20.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r16.xy, l(0,1.000000,0,0) -endif -mul r19.xyzw, r16.yxyy, cb0[217].ywzx -mad r19.y, r19.y, l(0.500000), r19.x -mul r1.xy, r16.yxyy, cb0[217].wyww -mad r19.x, r1.y, l(0.375000), r1.x -add r18.xyzw, r18.xyzw, r19.wyzx -mul r19.xyzw, r16.yxyy, cb0[218].ywzx -mad r19.y, r19.y, l(0.500000), r19.x -mul r1.xy, r16.yxyy, cb0[218].wyww -mad r19.x, r1.y, l(0.375000), r1.x -add r17.xyzw, r17.xyzw, r19.wyzx -mul r19.xyzw, r16.yxyy, cb0[219].ywzx -mad r19.y, r19.y, l(0.500000), r19.x -mul r1.xy, r16.yxyy, cb0[219].wyww -mad r19.x, r1.y, l(0.375000), r1.x -add r16.xyzw, r19.wyzx, r20.xyzw -ge r1.xy, r4.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r1.y, r1.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r19.xyzw, r4.xyxx, t12.xyzw, s1, l(0.000000) - lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r19.xyzw| - or r1.xy, r20.zwzz, r20.xyxx - or r0.z, r1.y, r1.x - if_nz r0.z - dp3 r0.z, r19.yzwy, r19.yzwy - sqrt r0.z, r0.z - mov r1.x, l(1.000000) - mov r1.y, r0.z - mov r2.z, l(0) - loop - ge r4.x, l(4.600000), r1.y - breakc_nz r4.x - iadd r4.x, r2.z, l(1) - mul r11.xw, r1.xxxy, l(0.500000, 0.000000, 0.000000, 0.500000) - mov r1.xy, r11.xwxx - mov r2.z, r4.x - continue - endloop - mul r19.xyzw, r1.xxxx, r19.xyzw - dp3 r0.z, r19.yzwy, r19.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb3[3].x, cb3[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r1.x, r0.z, l(0.003906) - mov r1.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t11.xyzw, s1, l(0.000000) - mad r1.xy, r1.xyxx, cb3[2].xyxx, cb3[2].zwzz - mul r20.x, r1.x, l(3.544908) - mul r20.yzw, r1.yyyy, r19.yyzw - mul r0.z, r19.x, l(0.406977) - exp r0.z, r0.z - mul r19.xyzw, r0.zzzz, r20.xyzw - mov r20.xyzw, r19.xyzw - mov r0.z, l(0) - loop - uge r1.x, r0.z, r2.z - breakc_nz r1.x - mul r21.xyzw, r20.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - dp4 r1.x, r21.xyzw, r20.xyzw - dp2 r1.y, r21.yxyy, r20.xyxx - dp2 r4.x, r21.zxzz, r20.xzxx - dp2 r4.y, r21.wxww, r20.xwxx - iadd r6.w, r0.z, l(1) - mov r20.xy, r1.xyxx - mov r20.zw, r4.xxxy - mov r0.z, r6.w - continue - endloop - mul r19.xyzw, r20.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - mul r20.xyzw, r18.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r19.xyzw, r20.xyzw - dp2 r1.x, r19.yxyy, r20.xyxx - dp2 r1.y, r19.zxzz, r20.xzxx - dp2 r2.z, r19.wxww, r20.xwxx - mul r20.xyzw, r17.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r4.x, r19.xyzw, r20.xyzw - dp2 r4.y, r19.yxyy, r20.xyxx - dp2 r6.w, r19.zxzz, r20.xzxx - dp2 r7.w, r19.wxww, r20.xwxx - mul r20.xyzw, r16.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r8.w, r19.xyzw, r20.xyzw - dp2 r9.w, r19.yxyy, r20.xyxx - dp2 r10.w, r19.zxzz, r20.xzxx - dp2 r11.x, r19.wxww, r20.xwxx - mul r18.w, r0.z, l(0.886227) - mul r18.x, r2.z, l(-1.023327) - mul r18.yz, r1.xxyx, l(0.000000, -1.023327, 1.023327, 0.000000) - mul r17.x, r7.w, l(-1.023327) - mul r17.yw, r4.yyyx, l(0.000000, -1.023327, 0.000000, 0.886227) - mul r17.z, r6.w, l(1.023327) - mul r16.w, r8.w, l(0.886227) - mul r16.x, r11.x, l(-1.023327) - mul r16.y, r9.w, l(-1.023327) - mul r16.z, r10.w, l(1.023327) - endif -endif -dp3 r0.z, r18.xyzx, r3.xyzx -add r0.z, r18.w, r0.z -max r18.x, r0.z, l(0.000000) -dp3 r0.z, r17.xyzx, r3.xyzx -add r0.z, r17.w, r0.z -max r18.y, r0.z, l(0.000000) -dp3 r0.z, r16.xyzx, r3.xyzx -add r0.z, r16.w, r0.z -max r18.z, r0.z, l(0.000000) -dp3 r0.z, -r9.xyzx, r3.xyzx -add r0.z, r0.z, r0.z -mad r16.xyz, r3.xyzx, -r0.zzzz, -r9.xyzx -add r0.z, l(-1.000000), cb0[113].x -max r1.x, r11.z, l(0.001000) -log r1.x, r1.x -mad r1.x, -r1.x, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.x -mul r1.xy, r2.xyxx, cb1[0].wwww -round_ni r1.xy, r1.xyxx -add r2.z, |r1.w|, -cb1[2].y -round_ni r2.z, r2.z -add r4.x, l(-1.000000), cb1[1].x -max r4.y, r2.z, l(0.000000) -min r4.x, r4.x, r4.y -ge r2.z, r4.x, r2.z -mad r1.x, r1.y, cb1[0].x, r1.x -ftoi r1.x, r1.x -iadd r1.x, r1.x, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx -ftoi r1.y, r4.x -iadd r1.y, r1.y, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx -and r1.x, r1.y, r1.x -and r1.x, r1.x, r2.z -mul r11.xzw, r18.xxyz, cb0[111].xxxx -dp3 r1.y, r11.xzwx, l(0.212673, 0.715152, 0.072175, 0.000000) -mov r28.x, r1.y // Store ambient luminance for cubemap modulation -mov r5.w, l(1.000000) -mov r3.w, l(1.000000) -mov r11.xzw, l(0,0,0,0) -mov r2.z, l(1.000000) -mov r4.x, r1.x -mov r4.y, l(0) -loop - lt r6.w, l(0.010000), r2.z - ine r7.w, r4.x, l(0) - and r7.w, r6.w, r7.w - if_nz r7.w - firstbit_lo r7.w, r4.x - ishl r8.w, l(1), r7.w - xor r4.x, r4.x, r8.w - ishl r7.w, r7.w, l(3) - dp4 r17.x, cb1[r7.w + 6].xyzw, r5.xyzw - dp4 r17.y, cb1[r7.w + 7].xyzw, r5.xyzw - dp4 r17.z, cb1[r7.w + 8].xyzw, r5.xyzw - ge r19.xyz, cb1[r7.w + 5].xyzx, |r17.xyzx| - and r8.w, r19.y, r19.x - and r8.w, r19.z, r8.w - if_nz r8.w - mul r8.w, l(0.100000), cb1[r7.w + 5].x - mul r19.xyz, |r17.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r19.xy, r19.xyxx, r19.xyxx - add r20.xyz, -|r17.xyzx|, cb1[r7.w + 5].xyzx - mul r20.xyz, r20.xyzx, cb1[r7.w + 9].xyzx - eq r9.w, l(1.000000), cb1[r7.w + 10].x - if_nz r9.w - dp3 r21.x, cb1[r7.w + 6].xyzx, r16.xyzx - dp3 r21.y, cb1[r7.w + 7].xyzx, r16.xyzx - dp3 r21.z, cb1[r7.w + 8].xyzx, r16.xyzx - add r22.xyz, -r17.xyzx, cb1[r7.w + 5].xyzx - div r22.xyz, r22.xyzx, r21.xyzx - add r23.xyz, -r17.xyzx, -cb1[r7.w + 5].xyzx - div r23.xyz, r23.xyzx, r21.xyzx - lt r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r21.xyzx - movc r22.xyz, r24.xyzx, r22.xyzx, r23.xyzx - min r9.w, r22.y, r22.x - min r9.w, r22.z, r9.w - mad r17.xyz, r21.xyzx, r9.wwww, r17.xyzx - else - mov r17.xyz, r16.xyzx - endif - dp3 r9.w, r17.xyzx, r17.xyzx - rsq r9.w, r9.w - mul r17.xyz, r9.wwww, r17.xyzx - lt r21.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.xyzx - lt r22.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r21.xyz, -r21.xyzx, r22.xyzx - itof r21.xyz, r21.xyzx - dp3 r9.w, r17.xyzx, r21.xyzx - div r17.xyz, r17.xyzx, r9.wwww - lt r9.w, r17.z, l(0.000000) - add r17.zw, -|r17.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r17.zw, r17.zzzw, r21.xxxy - movc r17.xy, r9.wwww, r17.zwzz, r17.xyxx - dp4 r9.w, cb1[r7.w + 4].xyzw, r3.xyzw - max r9.w, r9.w, l(0.000000) - max r9.w, r9.w, l(0.000100) - min r10.w, r20.z, r20.y - min r10.w, r10.w, r20.x - add r12.w, r19.y, r19.x - mad r12.w, r19.z, r19.z, r12.w - mad r8.w, r8.w, r8.w, -r12.w - mul r8.w, r8.w, cb1[r7.w + 9].x - mul r8.w, r8.w, cb1[r7.w + 9].x - add r12.w, l(1.000000), -cb1[r7.w + 10].y - mul r8.w, r8.w, r12.w - mul r8.w, r8.w, l(100.000000) - mad_sat r8.w, r10.w, cb1[r7.w + 10].y, r8.w - mul r10.w, r8.w, cb1[r7.w + 10].w - mad r17.xy, r17.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r17.xy, r17.xyxx, cb1[1].wwww, cb1[2].wwww - mov r17.z, cb1[r7.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r17.xyz, r17.xyzx, t5.xyzw, s3, r0.z - mul r17.xyz, r17.xyzx, cb1[r7.w + 9].wwww - div r12.w, r1.y, r9.w - min r12.w, |r12.w|, l(1.000000) - mad r12.w, r12.w, l(2.000000), r1.y - add r9.w, r9.w, l(2.000000) - div r9.w, r12.w, r9.w - add r9.w, r9.w, l(-1.000000) - mad r9.w, r9.w, cb0[112].w, l(1.000000) - mul r17.xyz, r9.wwww, r17.xyzx - mul r17.xyz, r10.wwww, r17.xyzx - mad r11.xzw, r17.xxyz, r2.zzzz, r11.xxzw - mad r7.w, -r8.w, cb1[r7.w + 10].w, l(1.000000) - mul r2.z, r2.z, r7.w - endif - mov r4.y, l(-1) - continue - else - mov r4.y, r6.w - break - endif - mov r4.y, r6.w -endloop -if_nz r4.y - dp3 r1.x, r16.xyzx, r16.xyzx - rsq r1.x, r1.x - mul r16.xyz, r1.xxxx, r16.xyzx - lt r17.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - lt r19.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r17.xyz, -r17.xyzx, r19.xyzx - itof r17.xyz, r17.xyzx - dp3 r1.x, r16.xyzx, r17.xyzx - div r16.xyz, r16.xyzx, r1.xxxx - lt r1.x, r16.z, l(0.000000) - add r4.xy, -|r16.yxyy|, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r4.xy, r4.xyxx, r17.xyxx - movc r4.xy, r1.xxxx, r4.xyxx, r16.xyxx - mov r3.w, l(1.000000) - dp4 r1.x, cb1[3].xyzw, r3.xyzw - max r1.x, r1.x, l(0.000000) - max r1.x, r1.x, l(0.000100) - mad r3.xy, r4.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r3.xy, r3.xyxx, cb1[1].wwww, cb1[2].wwww - mov r3.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s3, r0.z - div r0.z, r1.y, r1.x - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r1.y - add r1.x, r1.x, l(2.000000) - div r0.z, r0.z, r1.x - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r3.xyz, r0.zzzz, r3.xyzx - mad r11.xzw, r3.xxyz, r2.zzzz, r11.xxzw -endif -mul r3.xyz, r11.xzwx, cb0[112].zzzz -mul r3.xyz, r3.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].y) -if_nz cb13[13].y - max r28.x, r28.x, l(0.000000) - min r28.x, r28.x, l(1.000000) - mad r28.x, r28.x, l(0.750000), l(0.250000) - mul r3.xyz, r3.xyzx, r28.xxxx -endif -if_nz r11.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r11.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x - add r1.x, -r0.z, l(1.000000) - mul r16.xyz, r1.xxxx, r3.xyzx - mad r3.xyz, r11.xyzx, r0.zzzz, r16.xyzx -endif -mul r11.xyz, r12.xyzx, r18.xyzx -mul r11.xyz, r11.xyzx, cb0[111].xxxx -add r0.z, -r1.z, l(1.000000) -div r0.z, r0.z, r1.z -mul r1.xyz, r0.zzzz, r10.xyzx -mad r1.xyz, r1.xyzx, r13.yzwy, r13.yzwy -mul r1.xyz, r1.xyzx, r3.xyzx -mul r1.xyz, r14.xyzx, r1.xyzx -mad r1.xyz, r11.xyzx, r15.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r8.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r2.z, r4.w, cb0[154].w, -cb0[153].w -max r2.z, r2.z, l(0.000000) -mul r3.x, r0.z, l(-1.442695) -exp r3.x, r3.x -add r3.x, -r3.x, l(1.000000) -div r0.z, r3.x, r0.z -mad r3.x, r5.y, cb0[156].w, cb0[158].w -mul r3.x, r3.x, l(1.442695) -exp r3.x, r3.x -mul r0.z, r0.z, r3.x -mul r0.z, r0.z, -r2.z -mul r3.xyz, r0.zzzz, cb0[155].xyzx -mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r3.xyz, r3.xyzx -dp3 r0.z, -r9.xyzx, cb0[154].xyzx -mad r2.z, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r3.w, r0.zzzz, cb0[155].wwww -add r2.z, r2.z, -r3.w -lt r3.w, l(0.000000), cb0[165].z -if_nz r3.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r4.x, r0.y, r0.w, r0.x - dp3 r0.x, -r9.xyzx, -r7.xyzx - add r3.w, r5.y, -cb0[44].y - lt r5.w, l(0.000000), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r5.w - mul r0.x, r0.x, cb0[165].w - div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w - mul r6.w, r0.x, r5.w - mad r7.x, r6.w, r3.w, cb0[44].y - mad r3.w, -r6.w, r3.w, r3.w - mad r0.x, -r0.x, r5.w, l(1.000000) - mul r5.w, r4.w, r0.x - mul r6.w, r3.w, cb0[159].z - max r6.w, r6.w, l(-127.000000) - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - add r7.y, r7.x, -cb0[159].x - mul r7.y, r7.y, cb0[159].z - max r7.y, r7.y, l(-127.000000) - exp r7.y, -r7.y - mul r7.y, r7.y, cb0[159].y - lt r7.z, l(0.000000), |r6.w| - exp r7.w, -r6.w - add r7.w, -r7.w, l(1.000000) - div r7.w, r7.w, r6.w - mad r6.w, -r6.w, l(0.240227), l(0.693147) - movc r6.w, r7.z, r7.w, r6.w - add r7.x, r7.x, -cb0[162].z - mul r7.x, r7.x, cb0[162].x - max r7.x, r7.x, l(-127.000000) - exp r7.x, -r7.x - mul r7.x, r7.x, cb0[162].y - lt r7.z, l(0.000000), |r3.w| - exp r7.w, -r3.w - add r7.w, -r7.w, l(1.000000) - div r7.w, r7.w, r3.w - mad r3.w, -r3.w, l(0.240227), l(0.693147) - movc r3.w, r7.z, r7.w, r3.w - mul r3.w, r3.w, r7.x - mad r3.w, r7.y, r6.w, r3.w - mad_sat r7.xy, r4.wwww, cb0[160].wyww, cb0[160].zxzz - mul r5.w, r5.w, r3.w - exp r5.w, -r5.w - min r5.w, r5.w, l(1.000000) - max r5.w, r5.w, cb0[161].w - add r5.w, r7.y, r5.w - add r5.w, r7.x, r5.w - min r5.w, r5.w, l(1.000000) - imad r4.y, r0.w, r4.x, r0.y - ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.000031, 0.000000, 0.000031), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[169].wwww, r2.xxxy - mul r8.xy, r0.ywyy, cb0[167].xyxx - mad r0.y, |r1.w|, cb0[166].x, cb0[166].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[166].z - div r8.z, r0.y, cb0[165].z - sample_l_indexable(texture3d)(float,float,float,float) r8.xyzw, r8.xyzx, t10.xyzw, s1, l(0.000000) - add r0.y, |r1.w|, -cb0[168].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r8.xyzw, r8.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r8.xyzw, r0.yyyy, r8.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r5.w, l(1.000000) - dp3_sat r0.w, r9.xyzx, cb0[163].xyzx - log r0.w, r0.w - mul r0.w, r0.w, cb0[164].w - exp r0.w, r0.w - mul r7.yzw, r0.wwww, cb0[164].xxyz - mad r0.x, r0.x, r4.w, -cb0[163].w - max r0.x, r0.x, l(0.000000) - mul r0.x, r0.x, r3.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - add r0.x, -r0.x, l(1.000000) - mul r7.yzw, r0.xxxx, r7.yyzw - add r0.x, -r7.x, l(1.000000) - mul r7.xyz, r0.xxxx, r7.yzwy - mad r0.xyw, cb0[161].xyxz, r0.yyyy, r7.xyxz - mad r0.xyw, r0.xyxw, r8.wwww, r8.xyxz - mul r1.w, r5.w, r8.w -else - add r2.x, r5.y, -cb0[44].y - mul r2.y, r2.x, cb0[159].z - mul r2.x, r2.x, cb0[162].x - max r2.xy, r2.xyxx, l(-127.000000, -127.000000, 0.000000, 0.000000) - add r3.w, cb0[44].y, -cb0[159].x - mul r3.w, r3.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[159].y - lt r4.x, l(0.000000), |r2.y| - exp r4.y, -r2.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r2.y - mad r2.y, -r2.y, l(0.240227), l(0.693147) - movc r2.y, r4.x, r4.y, r2.y - add r4.x, cb0[44].y, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.y, l(0.000000), |r2.x| - exp r5.w, -r2.x - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r2.x - mad r2.x, -r2.x, l(0.240227), l(0.693147) - movc r2.x, r4.y, r5.w, r2.x - mul r2.x, r2.x, r4.x - mad r2.x, r3.w, r2.y, r2.x - mad_sat r4.xy, r4.wwww, cb0[160].wyww, cb0[160].zxzz - mul r2.y, r4.w, r2.x - exp r2.y, -r2.y - min r2.y, r2.y, l(1.000000) - max r2.y, r2.y, cb0[161].w - add r2.y, r4.y, r2.y - add r2.y, r4.x, r2.y - min r1.w, r2.y, l(1.000000) - add r2.y, -r1.w, l(1.000000) - dp3_sat r3.w, r9.xyzx, cb0[163].xyzx - log r3.w, r3.w - mul r3.w, r3.w, cb0[164].w - exp r3.w, r3.w - mul r7.xyz, r3.wwww, cb0[164].xyzx - mad r2.w, r2.w, r4.z, -cb0[163].w - max r2.w, r2.w, l(0.000000) - mul r2.x, r2.w, r2.x - exp r2.x, -r2.x - min r2.x, r2.x, l(1.000000) - add r2.x, -r2.x, l(1.000000) - mul r4.yzw, r2.xxxx, r7.xxyz - add r2.x, -r4.x, l(1.000000) - mul r4.xyz, r2.xxxx, r4.yzwy - mad r0.xyw, cb0[161].xyxz, r2.yyyy, r4.xyxz -endif -mul r2.xyw, r1.wwww, r3.xyxz -mad r0.z, r0.z, r0.z, l(1.000000) -mul r0.z, r0.z, l(0.059683) -mad r4.xyz, cb0[156].xyzx, r0.zzzz, cb0[158].xyzx -mad r0.z, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r2.z, l(12.566371) -sqrt r2.z, r2.z -mul r2.z, r2.z, r3.w -max r2.z, r2.z, l(0.001000) -div r0.z, r0.z, r2.z -mad_sat r4.xyz, cb0[157].xyzx, r0.zzzz, r4.xyzx -mul r4.xyz, r4.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r3.xyz, r3.xyzx, r4.xyzx -mad r0.xyz, r3.xyzx, r1.wwww, r0.xywx -lt r27.x, l(0.500000), cb13[12].y -if_nz r27.x - mul r25.xyz, r2.xywx, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r25.xyz, r25.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r25.xyz, r25.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r2.xywx - mul r26.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - mad r0.xyz, r1.xyzx, r25.xyzx, r26.xyzx -else - mad r0.xyz, r1.xyzx, r2.xywx, r0.xyzx -endif -dp3 r0.w, r2.xywx, l(0.333333, 0.333333, 0.333333, 0.000000) -dp3 r1.w, r6.xyzx, r6.xyzx -sqrt r1.w, r1.w -mad_sat r1.w, -r1.w, cb0[171].z, l(1.000000) -mul r2.x, r1.w, cb0[171].x -mad r1.w, -cb0[171].x, r1.w, l(1.000000) -mul r2.yzw, cb0[170].xxyz, cb0[185].wwww -mad r2.yzw, r5.xxyz, cb0[171].yyyy, r2.yyzw -sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t23.xwyz, s2, l(0.000000) -dp2 r2.x, r2.yyyy, r2.xxxx -add r1.w, r1.w, r2.x -add r2.x, r0.w, l(1.000000) -min r1.w, r1.w, r2.x -add r0.xyz, -r1.xyzx, r0.xyzx -mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx -mov o0.w, r0.w -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xEA6F34B7.cso b/src/games/endfield/deferred-lighting/0x3826B75E.cso similarity index 97% rename from src/games/endfield/deferred-lighting/0xEA6F34B7.cso rename to src/games/endfield/deferred-lighting/0x3826B75E.cso index 65117ade8288bd4a9650e727d36c08e7f12f3dd2..d14eadd66134faafd3f367a1847d98e9e1048304 100644 GIT binary patch delta 141 zcmccdj&aXBMoE_lC+B{>oF0+M2U|Zk^_{xhIdu&q0|SH2M9IaRHDwG80YJ|DjYs2| z7^OF>GIKM^STHcK3o!^VumB~vpfsZc0|N^aqs?XmmJr3s6^1;FESuM=wp&boq9HIj hA#MvVOraJ~1H)#;`1fLrl9L6?8n9TnekV8Kd81_p+RiIR&sXOuB81OPe9HXe;< zVwBme%FNBk=rB2vMR;=pi-Y219uR7u7#P@#7z7x2fnsbx znrZV|)piS2kgyYw3j$m~8li>J#uzBq1QcVQY#Xc56vhb$7Ggw+86`nnt*c5lNe) znKtiLoo=BD5_SS|L4XTLBeXEu7z5>+fMU#(W8-#DwkhFYwF2=rtH!?bczz_iBxotdJ z%*?1c*^=eEU>E}fs}O?#0}D``3q()WW&LlV1Qn5j(iT8TBPiPqN;5eyFt9K&+JG=n zGZ<`+U=vZ`-2_x20OYfQRBoQCrq0e=1Y`=qg`Vn0w+dPTg_wXsj1EA8!NEah^2BMv zx;+dG+)iNK5E+CD1_mvtIEV(hH*7NFO!3JQ+XN<0Xk?juW3zxL*atuv5X}pu!8$ho W-F#h)QGN2&Q}T@Jo4=kCX9fTex;Bjf delta 295 zcmcaHo4IEWvy@AOlQY*J^KFiT_TN2p>VA5yUi5&Gfq{YN+(fBGoIYn67y^L2;EhL% znHjYvTe5tg?85p-$cRCJfdwe;2Bj?+Cg1B2V_{)pwAoz2CZeF(1e5?7!v$5q=)l0h z!qjMO!N9=22`DB2l>5dHRI_=enmW6t5>S8_hw>tzoDfhhj1{P6^I6^K*2!Bo3rtQ? z72st83WH2$U~q7dnH;Dptl7iBzzwq-B!f`Fz+eS52;?R$Ak8w_S5<%V5}-M6rt@%u b+zpo9d~)-3F-FbF3s1>2YHmJwN}L%0K_)tJ diff --git a/src/games/endfield/deferred-lighting/0x69D13BAF.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x69D13BAF.ps_5_0.asm deleted file mode 100644 index 74bbd28b5f..0000000000 --- a/src/games/endfield/deferred-lighting/0x69D13BAF.ps_5_0.asm +++ /dev/null @@ -1,1342 +0,0 @@ -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_constantbuffer CB0[239], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[5], immediateIndexed -dcl_constantbuffer CB3[5], immediateIndexed -dcl_constantbuffer CB4[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture3d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture2d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture3d (float,float,float,float) t21 -dcl_resource_texture3d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_resource_texture2d (float,float,float,float) t25 -dcl_resource_texture2d (float,float,float,float) t26 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 27 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t24.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t25.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r2.xyw, r1.wwww, r3.xyxz -utof r4.xy, r0.xyxx -mul r4.zw, v0.xxxy, cb0[82].zzzw -mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) -mul r5.zw, r5.zzzw, cb0[82].zzzw -sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) -mul r6.xyzw, -r5.yyyy, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw -mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r3.w, r5.y, cb0[1].z -mad r3.w, cb0[0].z, r5.x, r3.w -mad r3.w, cb0[2].z, r5.z, r3.w -add r3.w, r3.w, cb0[3].z -eq r6.x, l(0.000000), cb0[86].w -add r6.yzw, -r5.xxyz, cb0[44].xxyz -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r6.xyz, r6.xxxx, r6.yzwy, r7.xyzx -dp3 r6.w, r6.xyzx, r6.xyzx -max r7.w, r6.w, l(0.000000) -rsq r7.w, r7.w -mul r8.xyzw, r6.xyzw, r7.wwww -lt r9.x, l(0.000488), cb0[238].x -if_nz r9.x - sample_b_indexable(texture2d)(float,float,float,float) r9.yz, v1.xyxx, t23.zxyw, s1, cb0[108].x -else - mov r9.yz, l(0,1.000000,1.000000,0) -endif -lt r10.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[230].xyxx -if_nz r10.x - add r9.w, |r2.y|, |r2.x| - add r9.w, |r2.w|, r9.w - div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w - mul r10.xzw, |r2.xxyw|, r9.wwww - mul r11.xyz, r5.xyzx, cb0[233].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r9.w, r11.xyzx, t9.yzwx, s2, l(0.000000) - mul r11.xyzw, r10.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) - add r11.xyz, r11.zwzz, r11.xxyx - mad r10.xzw, r10.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r11.xxyz - mad r11.x, r9.w, l(2.000000), l(-1.000000) - mul r10.xzw, r10.xxzw, r11.xxxx - mov r11.x, |r2.y| - add r11.x, r11.x, l(-0.700000) - mul_sat r11.x, r11.x, l(4.000000) - mad r11.y, r11.x, l(-2.000000), l(3.000000) - mul r11.x, r11.x, r11.x - mul r11.x, r11.x, r11.y - add r11.y, -cb0[233].z, cb0[233].y - mad r11.x, r11.x, r11.y, cb0[233].z - mul r10.xzw, r10.xxzw, r11.xxxx -else - mov r10.xzw, l(0,0,0,0) - mov r9.w, l(0) -endif -mad r11.x, -r3.y, r1.w, l(-0.200000) -if_nz r10.y - mul r11.yzw, r2.xxyw, cb0[237].zzzz - mul r12.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[229].yyyy - mad r11.yzw, r11.yyzw, cb0[229].xxxx, r12.xxyz - max r10.y, -r2.y, l(0.000000) - min r10.y, r10.y, l(0.900000) - add r10.y, -r10.y, l(1.000000) - mul_sat r12.x, r11.x, l(-10.000000) - mad r12.y, r12.x, l(-2.000000), l(3.000000) - mul r12.x, r12.x, r12.x - mul r12.x, r12.x, r12.y - max r12.x, r12.x, l(0.100000) - min r12.x, r12.x, l(1.000000) - mul r10.y, r10.y, r12.x - mad r11.yzw, r11.yyzw, r10.yyyy, r5.xxyz - add r10.xyz, r10.xzwx, r11.yzwy - mul r11.yzw, r10.yyyy, cb3[1].xxyz - mad r10.xyw, cb3[0].xyxz, r10.xxxx, r11.yzyw - mad r10.xyz, cb3[2].xyzx, r10.zzzz, r10.xywx - add r10.xyz, r10.xyzx, cb3[3].xyzx - mad r12.x, r10.x, l(0.500000), cb3[4].x - mad r10.x, r10.y, l(0.500000), l(0.500000) - add r12.z, -r10.x, cb3[4].y - add r10.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r10.z, r10.z, l(0.000488) - sample_c_lz_indexable(texture2d)(float,float,float,float) r10.x, r10.xyxx, t8.xxxx, s4, r10.z -else - mov r10.x, l(1.000000) -endif -mov_sat r10.y, r2.y -add r10.z, l(1.000000), -cb0[234].w -mad r10.z, r10.y, r10.z, cb0[234].w -add r11.yz, r5.xxzx, -cb0[44].xxzx -max r10.w, |r11.z|, |r11.y| -mul r11.y, r10.x, r10.z -mul r11.z, l(0.050000), cb0[226].w -mad r11.w, -cb0[226].w, l(0.700000), r10.w -div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z -mul_sat r11.z, r11.z, r11.w -mad r11.w, r11.z, l(-2.000000), l(3.000000) -mul r11.z, r11.z, r11.z -mul r11.z, r11.z, r11.w -mad r10.x, -r10.z, r10.x, l(1.000000) -mad r10.x, r11.z, r10.x, r11.y -deriv_rty_fine r11.yzw, r5.zzxy -deriv_rtx_fine r12.xyz, r5.yzxy -mul r13.xyz, r11.yzwy, r12.xyzx -mad r11.yzw, r11.wwyz, r12.yyzx, -r13.xxyz -dp3 r11.y, r11.yzwy, r11.yzwy -max r11.y, r11.y, l(0.000000) -rsq r11.y, r11.y -mul_sat r11.y, r11.y, r11.z -mad r11.zw, cb0[227].zzzz, l(0.000000, 0.000000, 0.300000, 0.300000), l(0.000000, 0.000000, 0.686000, 0.687000) -add r12.x, |r3.w|, l(-15.000000) -mul_sat r12.x, r12.x, l(0.015000) -add r12.x, -r12.x, l(1.000000) -min r12.y, l(0.990000), cb0[232].w -max r11.z, r11.z, l(0.970000) -add r12.z, -r11.z, l(0.990000) -add r10.y, r10.y, -r11.z -div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r12.z -mul_sat r10.y, r10.y, r11.z -mad r11.z, r10.y, l(-2.000000), l(3.000000) -mul r10.y, r10.y, r10.y -add r12.z, r11.y, l(-0.991000) -mul r12.z, r12.z, l(111.111069) -max r12.z, r12.z, l(0.000000) -mad r12.w, r12.z, l(-2.000000), l(3.000000) -mul r12.z, r12.z, r12.z -mul r12.z, r12.z, r12.w -mad r12.w, r9.w, l(0.200000), l(0.800000) -ge r12.w, r12.w, r1.y -and r12.w, r12.w, l(0x3f800000) -mul r12.z, r12.w, r12.z -mad r10.y, r11.z, r10.y, r12.z -min r10.y, r10.y, l(1.000000) -add r11.z, -r12.y, cb0[232].w -add r10.y, -r12.y, r10.y -div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z -mul_sat r10.y, r10.y, r11.z -mad r11.z, r10.y, l(-2.000000), l(3.000000) -mul r10.y, r10.y, r10.y -mul r10.y, r10.y, r11.z -lt r11.z, l(0.000488), cb0[227].y -add r11.y, -r11.w, r11.y -mul_sat r11.y, r11.y, l(-1000.012878) -mad r11.w, r11.y, l(-2.000000), l(3.000000) -mul r11.y, r11.y, r11.y -mul r11.y, r11.y, r11.w -mad r11.w, r3.y, r1.w, l(0.500000) -mul_sat r11.w, r11.w, l(2.500000) -mad r12.y, r11.w, l(-2.000000), l(3.000000) -mul r11.w, r11.w, r11.w -mul r11.w, r11.w, r12.y -mul r11.y, r11.w, r11.y -lt r11.y, l(0.000488), r11.y -and r11.y, r11.y, r11.z -if_nz r11.y - mul r11.yz, |r2.xxwx|, |r2.xxwx| - add r11.w, r11.z, r11.y - div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w - mul r11.yz, r11.wwww, r11.yyzy - mul r12.yzw, r2.yywx, l(0.000000, 0.000000, 1.000000, 0.000000) - mad r12.yzw, r2.xxyw, l(0.000000, 1.000000, 0.000000, 0.000000), -r12.yyzw - dp2 r11.w, r12.yzyy, r12.yzyy - rsq r11.w, r11.w - mul r12.yzw, r11.wwww, r12.yyzw - mul r13.xyz, r2.ywxy, r12.yzwy - mad r13.xyz, r12.wyzw, r2.wxyw, -r13.xyzx - dp3 r11.w, r13.xyzx, r13.xyzx - rsq r11.w, r11.w - mul r13.xyz, r11.wwww, r13.xzyx - mad r14.xyz, r5.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.314159, 0.314159, 0.314159, 0.000000) - round_ni r14.xyz, r14.xyzx - add r14.xyz, r14.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - add r14.xy, r14.yyyy, r14.xzxx - mul r14.xy, r14.xyxx, l(0.000977, 0.000977, 0.000000, 0.000000) - ge r14.zw, r14.xxxy, -r14.xxxy - frc r14.xy, |r14.xyxx| - movc r14.xy, r14.zwzz, r14.xyxx, -r14.xyxx - mul r14.xy, r14.xyxx, l(1024.000000, 1024.000000, 0.000000, 0.000000) - dp2 r11.w, r14.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r11.w, null, r11.w - mul r11.w, r11.w, l(43758.546875) - frc r11.w, r11.w - ge r14.xy, r2.wxww, l(0.000000, 0.000000, 0.000000, 0.000000) - movc r14.xy, r14.xyxx, l(1.000000,-1.000000,0,0), l(-1.000000,1.000000,0,0) - mul r14.xy, r5.xzxx, r14.xyxx - mul r12.w, r9.w, r11.w - add r14.w, -r11.w, l(1.000000) - mad r14.w, r14.w, l(0.700000), l(0.300000) - mul r15.xy, r12.wwww, l(3.000000, 6.000000, 0.000000, 0.000000) - mad r12.w, -cb0[227].x, r14.w, r15.x - frc r16.x, r12.w - mad r12.w, cb0[227].x, l(-0.300000), r15.y - frc r16.y, r12.w - mul r11.w, r11.w, l(5.000000) - round_ni r11.w, r11.w - add r15.x, r11.w, l(1.000000) - mul r15.y, r5.y, r15.x - mov r5.w, l(0.100000) - mul r15.xy, r5.ywyy, r15.xyxx - frc r15.xy, r15.xyxx - add r15.zw, r16.xxxy, l(0.000000, 0.000000, -1.000000, -1.000000) - add r15.zw, -r15.zzzw, r15.xxxy - add r15.zw, r15.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) - mul_sat r15.zw, r15.zzzw, l(0.000000, 0.000000, 5.000000, 5.000000) - mad r16.zw, r15.zzzw, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) - mul r15.zw, r15.zzzw, r15.zzzw - mul r15.zw, r15.zzzw, r16.zzzw - add r16.zw, -r15.xxxy, r16.xxxy - max r15.zw, r15.zzzw, r16.zzzw - add r17.xy, -r16.xyxx, r15.xyxx - add r17.xy, r17.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) - mul r17.xy, r17.xyxx, l(5.000000, 5.000000, 0.000000, 0.000000) - max r17.xy, r17.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r17.zw, r17.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) - mul r17.xy, r17.xyxx, r17.xyxx - mul r17.xy, r17.xyxx, r17.zwzz - add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - max r16.zw, r16.zzzw, r17.xxxy - ge r15.xy, r15.xyxx, r16.xyxx - and r15.xy, r15.xyxx, l(0x3f800000, 0x3f800000, 0, 0) - add r16.xy, -r15.zwzz, r16.zwzz - mad r15.xy, r15.xyxx, r16.xyxx, r15.zwzz - mad r11.w, r15.x, r15.x, l(-0.400000) - mul_sat r11.w, r11.w, l(1.666667) - mad r12.w, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r12.w - mad r12.w, r15.y, l(2.000000), l(-1.000000) - mul r14.w, r11.w, l(0.010000) - mul r15.x, r12.w, r14.w - mad r16.x, r9.w, l(0.100000), r15.x - mul r14.w, r11.w, r14.w - mad r14.w, r14.w, r12.w, r9.w - mul r16.y, r9.w, r14.w - mov r14.z, r5.y - mad r14.xyzw, r14.yzxz, cb0[228].xyxy, r16.xyxy - sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r14.xyxx, t10.xyzw, s2, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r14.xyzw, r14.zwzz, t10.xyzw, s2, cb0[108].x - mul r14.xyzw, r11.zzzz, r14.xyzw - mad r14.xyzw, r16.xyzw, r11.yyyy, r14.xyzw - mad r11.yz, r14.xxyx, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) - mad r14.x, r11.w, l(2.000000), l(-1.000000) - mad_sat r14.x, r14.x, l(0.800000), r15.y - mad r14.y, -r14.w, l(0.500000), l(1.000000) - mad r14.x, r14.x, r14.y, l(-0.700000) - mul_sat r14.x, r14.x, l(3.333333) - mad r14.y, r14.x, l(-2.000000), l(3.000000) - mul r14.x, r14.x, r14.x - mul r14.x, r14.x, r14.y - mul r12.w, r12.w, r14.w - mad_sat r11.w, r12.w, l(0.500000), r11.w - mad r11.w, r11.w, l(0.500000), l(0.100000) - max r11.w, r11.w, r14.x - add r12.w, -r11.w, l(1.000000) - max r12.w, r12.w, l(0.000000) - mul r14.x, r12.w, r12.w - mul r14.x, r14.x, r14.x - mul r12.w, r12.w, r14.x - ge r12.w, r14.z, r12.w - and r12.w, r12.w, l(0x3f800000) - mad r11.w, r11.w, l(0.700000), l(0.200000) - mad r11.w, r12.w, r11.w, l(0.100000) - mul r11.w, r14.z, r11.w - mul r11.w, r11.w, cb0[227].y - mul r11.w, r11.w, l(0.330000) - ge r12.w, r1.z, l(0.045000) - and r12.w, r12.w, l(0x3f800000) - mul r12.w, r10.x, r12.w - mul r12.w, r12.w, cb0[226].x - mul r12.w, r12.x, r12.w - mul r11.w, r11.w, r12.w - dp2 r12.w, r11.yzyy, r11.yzyy - min r12.w, r12.w, l(1.000000) - add r12.w, -r12.w, l(1.000000) - sqrt r12.w, r12.w - max r12.w, r12.w, l(0.000488) - mul_sat r14.x, r11.w, l(10.000000) - mad r14.y, r14.x, l(-2.000000), l(3.000000) - mul r14.x, r14.x, r14.x - mul r14.x, r14.x, r14.y - mul r14.x, r14.x, cb0[227].y - mul r14.xy, r11.yzyy, r14.xxxx - add r11.y, l(-1.500000), cb0[227].y - mul_sat r11.y, r11.y, l(0.666667) - mad r11.z, r11.y, l(-2.000000), l(3.000000) - mul r11.y, r11.y, r11.y - mul r11.y, r11.y, r11.z - mul r11.z, r11.y, l(-0.200000) - mad r11.y, -r11.y, l(-0.200000), r12.w - mad r14.z, r11.w, r11.y, r11.z - dp3 r11.y, r14.xyzx, r14.xyzx - max r11.y, r11.y, l(0.000000) - rsq r11.y, r11.y - mul r14.xyz, r11.yyyy, r14.xyzx - mov r15.x, r12.z - mov r15.y, r13.x - mov r15.z, r2.x - dp3 r15.x, r15.xyzx, r14.xyzx - mov r13.w, r2.y - dp2 r15.y, r13.zwzz, r14.yzyy - mov r13.x, r12.y - mov r13.z, r2.w - dp3 r15.z, r13.xyzx, r14.xyzx - mad r3.xyz, -r3.xyzx, r1.wwww, r15.xyzx - mad r13.xyz, r11.wwww, r3.xyzx, r2.xywx - mul r1.w, r11.w, cb0[227].y - mul r1.w, r1.w, l(0.330000) -else - mov r13.xyz, r2.xywx - mov r1.w, l(0) -endif -lt r3.x, l(0.000488), r10.y -if_nz r3.x - mul r3.xy, -r5.xzxx, cb0[232].xyxx - frc r11.yz, r3.xxyx - lt r12.yz, l(0.000000, 0.000488, 0.000488, 0.000000), cb0[231].yywy - if_nz r12.y - round_ni r3.xy, r3.xyxx - mul r3.xy, r3.xyxx, l(0.000977, 0.000977, 0.000000, 0.000000) - ge r12.yw, r3.xxxy, -r3.xxxy - frc r3.xy, |r3.xyxx| - movc r3.xy, r12.ywyy, r3.xyxx, -r3.xyxx - mul r3.xy, r3.xyxx, l(1024.000000, 1024.000000, 0.000000, 0.000000) - dp2 r3.x, r3.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r3.x, null, r3.x - mul r3.x, r3.x, l(43758.546875) - frc r3.x, r3.x - add r3.y, r3.x, cb0[231].x - frc r3.y, r3.y - mul r3.z, cb0[232].z, cb0[232].z - mul r3.y, r3.z, r3.y - round_ni r3.y, r3.y - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[232].z - ge r3.x, l(0.500000), r3.x - and r3.x, r3.x, l(0x3f800000) - add r12.yw, -r11.yyyz, r11.zzzy - mad r11.yz, r3.xxxx, r12.yywy, r11.yyzy - div r3.x, r3.y, cb0[232].z - ge r11.w, r3.x, -r3.x - frc r3.x, |r3.x| - movc r3.x, r11.w, r3.x, -r3.x - mul r3.x, r3.x, cb0[232].z - mul r14.x, r3.x, r3.z - add r3.x, l(-1.000000), cb0[232].z - mul r3.y, r3.z, r3.y - round_ni r3.y, r3.y - add r3.x, -r3.y, r3.x - mul r14.y, r3.x, r3.z - mad r3.xy, r11.yzyy, r3.zzzz, r14.xyxx - frc r3.xy, r3.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r3.xy, r3.xyxx, t11.xyzw, s1, cb0[108].x - mul r3.xy, r3.xyxx, cb0[231].yyyy - mad r3.xy, r3.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[231].yyyy - else - mov r3.xy, l(0,0,0,0) - endif - if_nz r12.z - mov r14.xw, l(0,0,0,0.500000) - mov r14.y, cb0[231].z - mad r11.yz, -r5.xxzx, cb0[232].xxyx, r14.xxyx - mul r14.z, r9.w, l(0.500000) - add r11.yz, r11.yyzy, r14.zzwz - add r11.yz, r11.yyzy, l(0.000000, -0.500000, -0.500000, 0.000000) - sample_b_indexable(texture2d)(float,float,float,float) r14.xy, r11.yzyy, t11.zwxy, s2, cb0[108].x - mov r15.xz, cb0[231].zzwz - mov r15.y, l(0) - mad r11.yz, -r5.xxzx, cb0[232].xxyx, -r15.xxyx - add r15.y, -r9.w, l(1.000000) - mov r15.x, l(0.500000) - mad r12.yz, l(0.000000, 1.000000, 0.500000, 0.000000), r15.xxyx, l(0.000000, -0.500000, -0.500000, 0.000000) - add r11.yz, r11.yyzy, -r12.yyzy - sample_b_indexable(texture2d)(float,float,float,float) r14.zw, r11.yzyy, t11.xyzw, s2, cb0[108].x - mul r14.xyzw, r14.xyzw, cb0[231].wwww - mad r14.xyzw, r14.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -r15.zzzz - mul r14.xyzw, r9.wwww, r14.xyzw - add r11.yz, r14.zzwz, r14.xxyx - add r3.xy, r3.xyxx, r11.yzyy - endif - mul r11.y, r2.z, l(0.300000) - mad r11.y, r9.w, l(0.700000), r11.y - add r11.z, r2.z, l(-0.100000) - mul_sat r11.z, r11.z, l(100.000000) - mul r11.y, r11.z, r11.y - mul r11.z, r1.y, r11.y - min r11.z, r11.z, l(0.990000) - mad_sat r11.y, r11.y, r1.y, l(0.600000) - add r11.y, -r11.z, r11.y - add r11.z, -r11.z, cb0[232].w - div r11.y, l(1.000000, 1.000000, 1.000000, 1.000000), r11.y - mul_sat r11.y, r11.y, r11.z - mad r11.z, r11.y, l(-2.000000), l(3.000000) - mul r11.y, r11.y, r11.y - mul r11.y, r11.y, r11.z - mul r10.y, r10.y, cb0[226].x - dp2 r11.z, r3.xyxx, r3.xyxx - min r11.z, r11.z, l(1.000000) - add r11.z, -r11.z, l(1.000000) - sqrt r11.z, r11.z - max r3.z, r11.z, l(0.000488) - dp3 r11.z, r3.xyzx, r3.xyzx - rsq r11.z, r11.z - mul r3.xyz, r3.yzxy, r11.zzzz - mul r11.z, r3.y, l(1.000000) - mul r11.w, r11.y, r10.y - mul r11.w, r10.x, r11.w - mul r11.w, r12.x, r11.w - mad r3.xyz, r3.xyzx, l(1.000000, 1.000000, -1.000000, 0.000000), -r2.xywx - mad r13.xyz, r11.wwww, r3.xyzx, r2.xywx - mul r3.x, r1.y, l(0.200000) - add r3.y, -r9.w, l(1.000000) - mul r3.y, r3.y, cb0[232].w - mul r3.z, r3.y, l(0.500000) - mad r3.y, -r3.y, l(0.500000), l(1.000000) - mad r3.y, r11.y, r3.y, r3.z - add r3.z, l(-0.600000), cb0[232].w - mul_sat r3.z, r3.z, l(2.500000) - mad r9.w, r3.z, l(-2.000000), l(3.000000) - mul r3.z, r3.z, r3.z - mul r3.z, r3.z, r9.w - mad_sat r3.y, r3.z, l(0.600000), r3.y - mul r3.y, r3.y, r10.y - mul r3.y, r11.z, r3.y - div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.x - mul_sat r3.x, r3.x, r3.y - mad r3.y, r3.x, l(-2.000000), l(3.000000) - mul r3.x, r3.x, r3.x - mul r3.x, r3.x, r3.y - mul r3.x, r10.x, r3.x - mul r3.x, r12.x, r3.x - max r3.x, r3.x, l(0.000000) -else - mov r3.x, l(0) -endif -min r3.y, r9.z, r9.y -mul r3.z, r10.z, cb0[234].z -mad r9.w, -cb0[234].z, r10.z, l(1.000000) -mad r3.z, r10.x, r9.w, r3.z -mad r9.w, cb0[234].x, cb0[226].w, -cb0[226].w -add r10.x, r10.w, -cb0[226].w -div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w -mul_sat r9.w, r9.w, r10.x -mad r10.x, r9.w, l(-2.000000), l(3.000000) -mul r9.w, r9.w, r9.w -mul r9.w, r9.w, r10.x -add r10.x, -r3.z, cb0[234].y -mad r3.z, r9.w, r10.x, r3.z -add r3.z, -r3.z, l(1.000000) -mul r9.w, r3.z, r9.y -add r1.z, r1.z, l(-0.050000) -add r10.x, -r2.z, l(1.000000) -mad_sat r10.y, r10.x, cb0[226].z, cb0[226].y -mad r10.y, r1.w, cb0[228].z, r10.y -mul r10.z, r2.z, r3.x -mad_sat r10.y, r10.z, l(0.100000), r10.y -add r10.z, -r10.y, l(1.000000) -mad r10.y, r1.x, r10.z, r10.y -mul_sat r10.z, r11.x, l(3.333333) -mad r10.w, r10.z, l(-2.000000), l(3.000000) -mul r10.z, r10.z, r10.z -mad r10.z, -r10.w, r10.z, l(1.000000) -mul r10.w, r10.y, cb0[226].x -add r11.x, -r1.x, l(1.000000) -mul r10.w, r10.w, r11.x -mul r10.w, r10.z, r10.w -mad r10.w, r10.w, l(-0.750000), l(1.000000) -mad r10.y, r10.y, l(-0.300000), l(0.900000) -sqrt r11.x, r10.x -add r10.y, r10.y, r11.x -add_sat r10.y, r10.y, l(-0.600000) -max r10.y, r10.x, r10.y -min r10.y, r10.y, l(0.990000) -add_sat r11.x, l(2.000000), -cb0[226].x -mul r11.x, r11.x, cb0[226].x -mul r10.z, r10.z, r11.x -mad r3.z, -r9.y, r3.z, l(1.000000) -mul r3.z, r3.z, r10.z -add r9.y, -r10.x, r10.y -mad r3.z, r3.z, r9.y, r10.x -add r3.z, -r3.z, l(1.000000) -mul_sat r1.zw, r1.zzzw, l(0.000000, 0.000000, 1.052600, 20.000000) -mad r9.y, r1.w, l(-2.000000), l(3.000000) -mul r1.w, r1.w, r1.w -mul r1.w, r1.w, r9.y -max r1.w, r1.w, r3.x -mad r1.w, r1.w, l(-0.900000), l(1.000000) -mul r3.x, r1.w, r3.z -add r9.y, r9.z, l(-1.000000) -mad r10.x, r1.z, r9.y, l(1.000000) -add r10.y, -r1.z, l(1.000000) -movc r9.xy, r9.xxxx, r10.xyxx, l(1.000000,1.000000,0,0) -min r1.z, r3.x, r9.x -mad r1.w, r3.z, r1.w, -r1.z -mad r1.z, r3.y, r1.w, r1.z -add r1.w, -r1.z, r2.z -mad r10.z, r9.w, r1.w, r1.z -ld_indexable(texture2d)(float,float,float,float) r11.xyz, r0.xyzz, t26.xyzw -min r1.z, r10.w, r9.y -add r1.w, -r1.z, r10.w -mad r1.z, r3.y, r1.w, r1.z -add r1.w, -r1.z, l(1.000000) -mad r1.z, r9.w, r1.w, r1.z -mul r3.xyz, r1.zzzz, r11.xyzx -mul r9.xyz, r1.xxxx, r3.xyzx -mad r9.xyz, r11.xyzx, r1.zzzz, -r9.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz -dp3 r2.z, r13.xyzx, r8.xyzx -max r11.x, r2.z, l(0.000000) -mul r3.y, r10.z, r10.z -mul r12.x, r11.x, r11.x -mul r12.z, r11.x, r12.x -mul r2.z, r3.y, r3.y -mul r3.z, r3.y, r2.z -mov r11.yzw, l(0,0.036546,9.063200,0.990440) -dp2 r14.x, l(3.327070, 1.000000, 0.000000, 0.000000), r11.xyxx -dp2 r14.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r11.xzxx -mov r3.x, l(1.000000) -dp2 r9.w, r14.xyxx, r3.xyxx -mov r12.yw, l(0,9.044010,0,1.000000) -dp3 r14.x, l(3.596850, -1.367720, 1.000000, 0.000000), r12.xzwx -dp3 r14.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r12.xyzx -mov r15.x, l(5.565890) -mov r15.yz, r12.xxzx -dp3 r14.z, l(1.000000, 19.788601, -20.212299, 0.000000), r15.xyzx -dp3 r10.w, r14.xyzx, r3.xyzx -div r9.w, r9.w, r10.w -dp2 r14.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r11.xwxx -mov r12.x, l(1.296780) -mov r12.y, r11.x -dp2 r14.y, l(1.000000, -0.755907, 0.000000, 0.000000), r12.xyxx -dp2 r10.w, r14.xyxx, r3.xyxx -dp3 r14.x, l(2.923380, 59.418800, 1.000000, 0.000000), r12.yzwy -mov r12.xw, l(20.322500,0,0,121.563004) -dp3 r14.y, l(1.000000, -27.030199, 222.591995, 0.000000), r12.xyzx -dp3 r14.z, l(626.130005, 316.627014, 1.000000, 0.000000), r12.yzwy -dp3 r3.x, r14.xyzx, r3.xyzx -div r3.x, r10.w, r3.x -mad r11.yzw, r1.xxzw, r9.wwww, r3.xxxx -add r3.x, r3.x, r9.w -ld_indexable(texture2d)(float,float,float,float) r3.y, r0.xyzz, t6.zxyw -lt r0.z, l(0.001000), r3.y -if_nz r0.z - dp3 r0.z, -r8.xyzx, r13.xyzx - add r0.z, r0.z, r0.z - mad r12.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx - dp3 r0.z, -cb2[0].xyzx, r12.xyzx - mad r14.xyz, cb2[0].xyzx, r0.zzzz, r12.xyzx - lt r0.z, r0.z, cb2[4].z - dp3 r9.w, r14.xyzx, r14.xyzx - max r9.w, r9.w, l(0.000061) - rsq r9.w, r9.w - mul r14.xyz, r9.wwww, r14.xyzx - mul r14.xyz, r14.xyzx, cb2[4].yyyy - mad r14.xyz, -cb2[0].xyzx, cb2[4].zzzz, r14.xyzx - dp3 r9.w, r14.xyzx, r14.xyzx - rsq r9.w, r9.w - mul r14.xyz, r9.wwww, r14.xyzx - movc r12.xyz, r0.zzzz, r14.xyzx, r12.xyzx - mad r6.xyz, r6.xyzx, r7.wwww, r12.xyzx - dp3 r0.z, r6.xyzx, r6.xyzx - max r0.z, r0.z, l(0.000061) - rsq r0.z, r0.z - mul r6.xyz, r0.zzzz, r6.xyzx - dp3_sat r10.x, r12.xyzx, r13.xyzx - dp3_sat r0.z, r13.xyzx, r6.xyzx - min r10.y, r11.x, l(1.000000) - mad r9.w, r0.z, r2.z, -r0.z - mad r0.z, r9.w, r0.z, l(1.000000) - dp3_sat r6.x, r8.xyzx, r6.xyzx - add r6.x, -r6.x, l(1.000000) - mul r6.y, r6.x, r6.x - mul r6.y, r6.y, r6.y - mul r6.z, r6.x, r6.y - add r9.w, -r10.z, l(1.000000) - mad r10.w, -r9.w, l(0.383026), l(-0.076195) - mad r10.w, r9.w, r10.w, l(1.049970) - mad r9.w, r9.w, r10.w, l(0.409255) - min r9.w, r9.w, l(0.999000) - add r10.w, -r9.w, l(1.000000) - add r14.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r14.xyz, r14.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r1.xzwx - mad r6.x, -r6.y, r6.x, l(1.000000) - mad r6.xyz, r1.xzwx, r6.xxxx, r6.zzzz - mul r0.z, r0.z, r0.z - div r0.z, r2.z, r0.z - mad r15.xy, -r10.yxyy, r2.zzzz, r10.yxyy - mad r15.xy, r15.xyxx, r10.yxyy, r2.zzzz - sqrt r15.xy, r15.xyxx - mul r15.xy, r10.xyxx, r15.xyxx - add r2.z, r15.y, r15.x - add r2.z, r2.z, l(0.000100) - div r2.z, l(0.500000), r2.z - mul r0.z, r0.z, r2.z - mul r6.xyz, r0.zzzz, r6.xyzx - min r6.xyz, r6.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r15.xyzw, r10.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r15.xyxx, t12.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r2.z, r15.zwzz, t12.yzxw, s1, l(0.000000) - mul r0.z, r0.z, r2.z - mul r0.z, r9.w, r0.z - div r0.z, r0.z, r10.w - mul r15.xyz, r14.xyzx, r14.xyzx - mul r15.xyz, r0.zzzz, r15.xyzx - mad r14.xyz, -r14.xyzx, r10.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r14.xyz, r15.xyzx, r14.xyzx - add r6.xyz, r6.xyzx, r14.xyzx - mul r6.xyz, r6.xyzx, cb2[4].xxxx - max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r6.xyz, r6.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - dp3_sat r0.z, r12.xyzx, r2.xywx - mul r12.xyz, r0.zzzz, r9.xyzx - mad r6.xyz, r6.xyzx, r10.xxxx, r12.xyzx - mul r6.xyz, r6.xyzx, cb2[1].xyzx - mov r3.z, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r10.xyw, r3.yzyy, t7.xywz, s1, cb0[108].x - add r0.z, -r3.y, l(1.000000) - mad r10.xyw, r6.xyxz, r10.xyxw, -r6.xyxz - mad r6.xyz, r0.zzzz, r10.xywx, r6.xyzx - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t13.yzxw, s1, l(0.000000) - min r0.z, r0.z, l(1.000000) - mul r6.xyz, r0.zzzz, r6.xyzx -else - mov r6.xyz, l(0,0,0,0) -endif -ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -if_nz r3.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - dp3 r2.z, r2.xywx, r8.xyzx - max r2.z, r2.z, l(0.000000) - add r2.z, r0.z, r2.z - mad r3.y, r10.z, l(-16.000000), l(-1.000000) - exp r3.y, r3.y - log r2.z, |r2.z| - mul r2.z, r2.z, r3.y - exp r2.z, r2.z - add r2.z, r0.z, r2.z - add r2.z, r2.z, l(-1.000000) - mov_sat r10.xyw, r2.zzzz - mad r12.xyz, r9.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - mad r12.xyz, r9.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx - add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - mad r12.xyz, r9.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx - add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - max r12.xyz, r0.zzzz, r12.xyzx -else - mov r10.xyw, r1.yyyy - mov r12.xyz, r1.yyyy -endif -mad r14.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[216].x -mad r15.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx -dp2 r0.z, r15.xyxx, l(0.067111, 0.005837, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r14.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r14.xyzx -mad r15.xyz, cb0[6].xzyx, -cb0[216].wwww, cb0[214].xzyx -add r15.xyz, r14.xzyx, -r15.xyzx -max r0.z, |r15.y|, |r15.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.y, |r15.z|, l(-208.000000) -mul_sat r1.y, r1.y, l(0.031250) -max r0.z, r0.z, r1.y -ne r1.y, l(0.000000), cb0[214].w -lt r2.z, r0.z, l(1.000000) -and r1.y, r1.y, r2.z -if_nz r1.y - mad r15.xyz, cb0[6].xzyx, -cb0[216].yyyy, cb0[214].xzyx - add r15.xyz, r14.xzyx, -r15.xyzx - max r1.y, |r15.y|, |r15.x| - add r1.y, r1.y, l(-29.000000) - mul_sat r1.y, r1.y, l(0.500000) - add r2.z, |r15.z|, l(-13.000000) - mul_sat r2.z, r2.z, l(0.500000) - max r1.y, r1.y, r2.z - lt r2.z, r1.y, l(1.000000) - if_nz r2.z - mad r15.xyz, r14.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r16.xyz, r15.xyzx, cb0[215].xyzx - round_ni r16.xyz, r16.xyzx - mad r15.xyz, r15.xyzx, cb0[215].xyzx, -r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r16.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) - add r2.z, -r1.y, l(1.000000) - mul r3.y, l(0.500000), cb0[215].y - mad r9.w, -cb0[215].y, l(0.500000), l(1.000000) - max r3.y, r3.y, r15.y - min r3.y, r9.w, r3.y - mul r15.w, r3.y, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) - mad r3.y, r17.w, r2.z, r0.z - add r18.xyz, r15.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t18.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r16.yyyy, r18.xyzx - mov r18.w, r16.y - mul r18.xyzw, r2.zzzz, r18.xyzw - add r15.xyz, r15.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r16.xxxx, r15.xyzx - mov r15.w, r16.x - mul r15.xyzw, r2.zzzz, r15.xyzw - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r16.wwww, r17.xyzx - mul r16.xyzw, r2.zzzz, r16.xyzw - else - mov r18.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r3.y, r0.z - endif - mad r17.xyz, cb0[6].xzyx, -cb0[216].zzzz, cb0[214].xzyx - add r17.xyz, r14.xzyx, -r17.xyzx - max r2.z, |r17.y|, |r17.x| - add r2.z, r2.z, l(-116.000000) - mul_sat r2.z, r2.z, l(0.125000) - add r9.w, |r17.z|, l(-52.000000) - mul_sat r9.w, r9.w, l(0.125000) - max r2.z, r2.z, r9.w - lt r9.w, r2.z, l(1.000000) - if_nz r9.w - mad r17.xyz, r14.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r19.xyz, r17.xyzx, cb0[215].xyzx - round_ni r19.xyz, r19.xyzx - mad r17.xyz, r17.xyzx, cb0[215].xyzx, -r19.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r19.xyw, r17.xyzx, t19.yzwx, s2, l(0.000000) - add r9.w, -r2.z, l(1.000000) - mul r1.y, r1.y, r9.w - mul r9.w, l(0.500000), cb0[215].y - mad r11.x, -cb0[215].y, l(0.500000), l(1.000000) - max r9.w, r9.w, r17.y - min r9.w, r11.x, r9.w - mul r17.w, r9.w, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyzw, r17.xwzx, t20.xyzw, s1, l(0.000000) - mad r3.y, r20.w, r1.y, r3.y - add r21.xyz, r17.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t20.xyzw, s1, l(0.000000) - mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r19.yyyy, r21.xyzx - mov r21.w, r19.y - mad r18.xyzw, r21.xyzw, r1.yyyy, r18.xyzw - add r17.xyz, r17.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t20.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r19.xxxx, r17.xyzx - mov r17.w, r19.x - mad r15.xyzw, r17.xyzw, r1.yyyy, r15.xyzw - mad r17.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r19.wwww, r17.xyzx - mad r16.xyzw, r19.xyzw, r1.yyyy, r16.xyzw - endif - lt r1.y, l(0.000000), r2.z - if_nz r1.y - mad r14.xyz, r14.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r14.xyzx, cb0[215].xyzx - mul r19.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[215].xyzx - round_ni r17.xyz, r17.xyzx - mad r14.xyz, r14.xyzx, cb0[215].xyzx, -r17.xyzx - mad r17.xyz, -cb0[215].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r14.xyz, r19.xyzx, r14.xyzx - min r14.xyz, r17.xyzx, r14.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r14.xyzx, t21.yzwx, s2, l(0.000000) - add r1.y, -r0.z, l(1.000000) - mul r1.y, r1.y, r2.z - max r2.z, r19.y, r14.y - min r2.z, r17.y, r2.z - mul r14.w, r2.z, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyzw, r14.xwzx, t22.xyzw, s1, l(0.000000) - add r19.xyz, r14.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r20.yyyy, r19.xyzx - mov r19.w, r20.y - mad r18.xyzw, r19.xyzw, r1.yyyy, r18.xyzw - add r14.xyz, r14.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r14.xyz, r14.xyzx, t22.xyzw, s1, l(0.000000) - mad r14.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r14.xyz, r20.xxxx, r14.xyzx - mov r14.w, r20.x - mad r15.xyzw, r14.xyzw, r1.yyyy, r15.xyzw - mad r14.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r14.xyzx - mad r16.xyzw, r20.xyzw, r1.yyyy, r16.xyzw - mad r3.y, r17.w, r1.y, r3.y - endif - mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) - add r14.x, -r0.z, r1.y - add r0.z, r0.z, r1.y - mul r14.y, r0.z, l(0.500000) -else - mov r18.xyzw, l(0,0,0,0) - mov r15.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r14.xy, l(0,1.000000,0,0) -endif -mul r17.xyzw, r14.yxyy, cb0[217].ywzx -mad r17.y, r17.y, l(0.500000), r17.x -mul r14.zw, r14.yyyx, cb0[217].wwwy -mad r17.x, r14.w, l(0.375000), r14.z -add r16.xyzw, r16.xyzw, r17.wyzx -mul r17.xyzw, r14.yxyy, cb0[218].ywzx -mad r17.y, r17.y, l(0.500000), r17.x -mul r14.zw, r14.yyyx, cb0[218].wwwy -mad r17.x, r14.w, l(0.375000), r14.z -add r15.xyzw, r15.xyzw, r17.wyzx -mul r17.xyzw, r14.yxyy, cb0[219].ywzx -mad r17.y, r17.y, l(0.500000), r17.x -mul r14.xy, r14.yxyy, cb0[219].wyww -mad r17.x, r14.y, l(0.375000), r14.x -add r14.xyzw, r17.wyzx, r18.xyzw -ge r17.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r17.y, r17.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r17.xyzw, r4.zwzz, t16.xyzw, s1, l(0.000000) - lt r18.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r17.xyzw| - or r4.zw, r18.zzzw, r18.xxxy - or r0.z, r4.w, r4.z - if_nz r0.z - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mov r4.z, l(1.000000) - mov r4.w, r0.z - mov r1.y, l(0) - loop - ge r2.z, l(4.600000), r4.w - breakc_nz r2.z - iadd r2.z, r1.y, l(1) - mul r18.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - mov r4.zw, r18.xxxy - mov r1.y, r2.z - continue - endloop - mul r17.xyzw, r4.zzzz, r17.xyzw - dp3 r0.z, r17.yzwy, r17.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb4[3].x, cb4[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r18.x, r0.z, l(0.003906) - mov r18.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r18.xyxx, t15.zwxy, s1, l(0.000000) - mad r4.zw, r4.zzzw, cb4[2].xxxy, cb4[2].zzzw - mul r18.x, r4.z, l(3.544908) - mul r18.yzw, r4.wwww, r17.yyzw - mul r0.z, r17.x, l(0.406977) - exp r0.z, r0.z - mul r17.xyzw, r0.zzzz, r18.xyzw - mov r18.xyzw, r17.xyzw - mov r0.z, l(0) - loop - uge r2.z, r0.z, r1.y - breakc_nz r2.z - mul r19.xyzw, r18.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - dp4 r2.z, r19.xyzw, r18.xyzw - dp2 r3.y, r19.yxyy, r18.xyxx - dp2 r4.z, r19.zxzz, r18.xzxx - dp2 r4.w, r19.wxww, r18.xwxx - iadd r9.w, r0.z, l(1) - mov r18.x, r2.z - mov r18.y, r3.y - mov r18.zw, r4.zzzw - mov r0.z, r9.w - continue - endloop - mul r17.xyzw, r18.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - mul r18.xyzw, r16.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r17.xyzw, r18.xyzw - dp2 r1.y, r17.yxyy, r18.xyxx - dp2 r2.z, r17.zxzz, r18.xzxx - dp2 r3.y, r17.wxww, r18.xwxx - mul r18.xyzw, r15.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r4.z, r17.xyzw, r18.xyzw - dp2 r4.w, r17.yxyy, r18.xyxx - dp2 r9.w, r17.zxzz, r18.xzxx - dp2 r11.x, r17.wxww, r18.xwxx - mul r18.xyzw, r14.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r12.w, r17.xyzw, r18.xyzw - dp2 r17.y, r17.yxyy, r18.xyxx - dp2 r17.z, r17.zxzz, r18.xzxx - dp2 r17.x, r17.wxww, r18.xwxx - mul r16.w, r0.z, l(0.886227) - mul r16.x, r3.y, l(-1.023327) - mul r16.y, r1.y, l(-1.023327) - mul r16.z, r2.z, l(1.023327) - mul r15.x, r11.x, l(-1.023327) - mul r15.yw, r4.wwwz, l(0.000000, -1.023327, 0.000000, 0.886227) - mul r15.z, r9.w, l(1.023327) - mul r14.w, r12.w, l(0.886227) - mul r14.xyz, r17.xyzx, l(-1.023327, -1.023327, 1.023327, 0.000000) - endif -endif -dp3 r0.z, r16.xyzx, r2.xywx -add r0.z, r16.w, r0.z -max r16.x, r0.z, l(0.000000) -dp3 r0.z, r15.xyzx, r2.xywx -add r0.z, r15.w, r0.z -max r16.y, r0.z, l(0.000000) -dp3 r0.z, r14.xyzx, r2.xywx -add r0.z, r14.w, r0.z -max r16.z, r0.z, l(0.000000) -dp3 r0.z, -r8.xyzx, r13.xyzx -add r0.z, r0.z, r0.z -mad r2.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx -add r0.z, l(-1.000000), cb0[113].x -max r1.y, r10.z, l(0.001000) -log r1.y, r1.y -mad r1.y, -r1.y, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.y -mul r4.zw, r4.xxxy, cb1[0].wwww -round_ni r4.zw, r4.zzzw -add r1.y, |r3.w|, -cb1[2].y -round_ni r1.y, r1.y -add r2.w, l(-1.000000), cb1[1].x -max r3.y, r1.y, l(0.000000) -min r2.w, r2.w, r3.y -ge r1.y, r2.w, r1.y -mad r3.y, r4.w, cb1[0].x, r4.z -ftoi r3.y, r3.y -iadd r3.y, r3.y, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r3.y, r3.y, l(0), t0.xxxx -ftoi r2.w, r2.w -iadd r2.w, r2.w, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.w, r2.w, l(0), t0.xxxx -and r2.w, r2.w, r3.y -and r1.y, r1.y, r2.w -mul r14.xyz, r16.xyzx, cb0[111].xxxx -dp3 r2.w, r14.xyzx, l(0.212673, 0.715152, 0.072175, 0.000000) -mov r26.x, r2.w // Store ambient luminance for cubemap modulation -mov r5.w, l(1.000000) -mov r13.w, l(1.000000) -mov r14.xyz, l(0,0,0,0) -mov r3.y, l(1.000000) -mov r4.z, r1.y -mov r4.w, l(0) -loop - lt r9.w, l(0.010000), r3.y - ine r10.z, r4.z, l(0) - and r10.z, r9.w, r10.z - if_nz r10.z - firstbit_lo r10.z, r4.z - ishl r11.x, l(1), r10.z - xor r4.z, r4.z, r11.x - ishl r10.z, r10.z, l(3) - dp4 r15.x, cb1[r10.z + 6].xyzw, r5.xyzw - dp4 r15.y, cb1[r10.z + 7].xyzw, r5.xyzw - dp4 r15.z, cb1[r10.z + 8].xyzw, r5.xyzw - ge r17.xyz, cb1[r10.z + 5].xyzx, |r15.xyzx| - and r11.x, r17.y, r17.x - and r11.x, r17.z, r11.x - if_nz r11.x - mul r11.x, l(0.100000), cb1[r10.z + 5].x - mul r17.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r17.xy, r17.xyxx, r17.xyxx - add r18.xyz, -|r15.xyzx|, cb1[r10.z + 5].xyzx - mul r18.xyz, r18.xyzx, cb1[r10.z + 9].xyzx - eq r12.w, l(1.000000), cb1[r10.z + 10].x - if_nz r12.w - dp3 r19.x, cb1[r10.z + 6].xyzx, r2.xyzx - dp3 r19.y, cb1[r10.z + 7].xyzx, r2.xyzx - dp3 r19.z, cb1[r10.z + 8].xyzx, r2.xyzx - add r20.xyz, -r15.xyzx, cb1[r10.z + 5].xyzx - div r20.xyz, r20.xyzx, r19.xyzx - add r21.xyz, -r15.xyzx, -cb1[r10.z + 5].xyzx - div r21.xyz, r21.xyzx, r19.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx - min r12.w, r20.y, r20.x - min r12.w, r20.z, r12.w - mad r15.xyz, r19.xyzx, r12.wwww, r15.xyzx - else - mov r15.xyz, r2.xyzx - endif - dp3 r12.w, r15.xyzx, r15.xyzx - rsq r12.w, r12.w - mul r15.xyz, r12.wwww, r15.xyzx - lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx - lt r20.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r19.xyz, -r19.xyzx, r20.xyzx - itof r19.xyz, r19.xyzx - dp3 r12.w, r15.xyzx, r19.xyzx - div r15.xyz, r15.xyzx, r12.wwww - lt r12.w, r15.z, l(0.000000) - add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r15.zw, r15.zzzw, r19.xxxy - movc r15.xy, r12.wwww, r15.zwzz, r15.xyxx - dp4 r12.w, cb1[r10.z + 4].xyzw, r13.xyzw - max r12.w, r12.w, l(0.000000) - max r12.w, r12.w, l(0.000100) - min r14.w, r18.z, r18.y - min r14.w, r14.w, r18.x - add r15.z, r17.y, r17.x - mad r15.z, r17.z, r17.z, r15.z - mad r11.x, r11.x, r11.x, -r15.z - mul r11.x, r11.x, cb1[r10.z + 9].x - mul r11.x, r11.x, cb1[r10.z + 9].x - add r15.z, l(1.000000), -cb1[r10.z + 10].y - mul r11.x, r11.x, r15.z - mul r11.x, r11.x, l(100.000000) - mad_sat r11.x, r14.w, cb1[r10.z + 10].y, r11.x - mul r14.w, r11.x, cb1[r10.z + 10].w - mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r15.xy, r15.xyxx, cb1[1].wwww, cb1[2].wwww - mov r15.z, cb1[r10.z + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z - mul r15.xyz, r15.xyzx, cb1[r10.z + 9].wwww - div r15.w, r2.w, r12.w - min r15.w, |r15.w|, l(1.000000) - mad r15.w, r15.w, l(2.000000), r2.w - add r12.w, r12.w, l(2.000000) - div r12.w, r15.w, r12.w - add r12.w, r12.w, l(-1.000000) - mad r12.w, r12.w, cb0[112].w, l(1.000000) - mul r15.xyz, r12.wwww, r15.xyzx - mul r15.xyz, r14.wwww, r15.xyzx - mad r14.xyz, r15.xyzx, r3.yyyy, r14.xyzx - mad r10.z, -r11.x, cb1[r10.z + 10].w, l(1.000000) - mul r3.y, r3.y, r10.z - endif - mov r4.w, l(-1) - continue - else - mov r4.w, r9.w - break - endif - mov r4.w, r9.w -endloop -if_nz r4.w - dp3 r1.y, r2.xyzx, r2.xyzx - rsq r1.y, r1.y - mul r2.xyz, r1.yyyy, r2.xyzx - lt r5.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r2.xxyz - lt r15.xyz, r2.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r5.xzw, -r5.xxzw, r15.xxyz - itof r5.xzw, r5.xxzw - dp3 r1.y, r2.xyzx, r5.xzwx - div r2.xyz, r2.xyzx, r1.yyyy - lt r1.y, r2.z, l(0.000000) - add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r4.zw, r4.zzzw, r5.xxxz - movc r2.xy, r1.yyyy, r4.zwzz, r2.xyxx - mov r13.w, l(1.000000) - dp4 r1.y, cb1[3].xyzw, r13.xyzw - max r1.y, r1.y, l(0.000000) - max r1.y, r1.y, l(0.000100) - mad r2.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r2.xy, r2.xyxx, cb1[1].wwww, cb1[2].wwww - mov r2.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r2.xyz, r2.xyzx, t5.xyzw, s3, r0.z - div r0.z, r2.w, r1.y - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r2.w - add r1.y, r1.y, l(2.000000) - div r0.z, r0.z, r1.y - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r2.xyz, r0.zzzz, r2.xyzx - mad r14.xyz, r2.xyzx, r3.yyyy, r14.xyzx -endif -mul r2.xyz, r14.xyzx, cb0[112].zzzz -mul r2.xyz, r2.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].y) -if_nz cb13[13].y - max r26.x, r26.x, l(0.000000) - min r26.x, r26.x, l(1.000000) - mad r26.x, r26.x, l(0.750000), l(0.250000) - mul r2.xyz, r2.xyzx, r26.xxxx -endif -if_nz r3.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x - add r1.y, -r0.z, l(1.000000) - mul r13.xyz, r1.yyyy, r2.xyzx - mad r2.xyz, r5.xzwx, r0.zzzz, r13.xyzx -endif -mul r5.xzw, r9.xxyz, r16.xxyz -mul r5.xzw, r5.xxzw, cb0[111].xxxx -add r0.z, -r3.x, l(1.000000) -div r0.z, r0.z, r3.x -mul r1.xyz, r0.zzzz, r1.xzwx -mad r1.xyz, r1.xyzx, r11.yzwy, r11.yzwy -mul r1.xyz, r1.xyzx, r2.xyzx -mul r1.xyz, r10.xywx, r1.xyzx -mad r1.xyz, r5.xzwx, r12.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r6.xyzx -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r8.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r5.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xyz, r0.zzzz, cb0[155].xyzx -mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r2.xyz, r2.xyzx -dp3 r0.z, -r8.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.w, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.w -lt r2.w, l(0.000000), cb0[165].z -if_nz r2.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r8.xyzx, -r7.xyzx - add r2.w, r5.y, -cb0[44].y - lt r3.z, l(0.000000), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.z - mul r0.x, r0.x, cb0[165].w - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w - mul r4.z, r0.x, r3.z - mad r4.w, r4.z, r2.w, cb0[44].y - mad r2.w, -r4.z, r2.w, r2.w - mad r0.x, -r0.x, r3.z, l(1.000000) - mul r3.z, r8.w, r0.x - mul r4.z, r2.w, cb0[159].z - max r4.z, r4.z, l(-127.000000) - mul r2.w, r2.w, cb0[162].x - max r2.w, r2.w, l(-127.000000) - add r5.x, r4.w, -cb0[159].x - mul r5.x, r5.x, cb0[159].z - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[159].y - lt r5.z, l(0.000000), |r4.z| - exp r5.w, -r4.z - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r4.z - mad r4.z, -r4.z, l(0.240227), l(0.693147) - movc r4.z, r5.z, r5.w, r4.z - add r4.w, r4.w, -cb0[162].z - mul r4.w, r4.w, cb0[162].x - max r4.w, r4.w, l(-127.000000) - exp r4.w, -r4.w - mul r4.w, r4.w, cb0[162].y - lt r5.z, l(0.000000), |r2.w| - exp r5.w, -r2.w - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r2.w - mad r2.w, -r2.w, l(0.240227), l(0.693147) - movc r2.w, r5.z, r5.w, r2.w - mul r2.w, r2.w, r4.w - mad r2.w, r5.x, r4.z, r2.w - mad_sat r4.zw, r8.wwww, cb0[160].wwwy, cb0[160].zzzx - mul r3.z, r3.z, r2.w - exp r3.z, -r3.z - min r3.z, r3.z, l(1.000000) - max r3.z, r3.z, cb0[161].w - add r3.z, r4.w, r3.z - add r3.z, r4.z, r3.z - min r3.z, r3.z, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.000031, 0.000000, 0.000031), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[169].wwww, r4.xxxy - mul r6.xy, r0.ywyy, cb0[167].xyxx - mad r0.y, |r3.w|, cb0[166].x, cb0[166].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[166].z - div r6.z, r0.y, cb0[165].z - sample_l_indexable(texture3d)(float,float,float,float) r9.xyzw, r6.xyzx, t14.xyzw, s1, l(0.000000) - add r0.y, |r3.w|, -cb0[168].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r9.xyzw, r9.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r9.xyzw, r0.yyyy, r9.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r3.z, l(1.000000) - dp3_sat r0.w, r8.xyzx, cb0[163].xyzx - log r0.w, r0.w - mul r0.w, r0.w, cb0[164].w - exp r0.w, r0.w - mul r3.xyw, r0.wwww, cb0[164].xyxz - mad r0.x, r0.x, r8.w, -cb0[163].w - max r0.x, r0.x, l(0.000000) - mul r0.x, r0.x, r2.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - add r0.x, -r0.x, l(1.000000) - mul r3.xyw, r0.xxxx, r3.xyxw - add r0.x, -r4.z, l(1.000000) - mul r3.xyw, r0.xxxx, r3.xyxw - mad r0.xyw, cb0[161].xyxz, r0.yyyy, r3.xyxw - mad r0.xyw, r0.xyxw, r9.wwww, r9.xyxz - mul r2.w, r3.z, r9.w -else - add r3.x, r5.y, -cb0[44].y - mul r3.y, r3.x, cb0[159].z - mul r3.x, r3.x, cb0[162].x - add r3.z, cb0[44].y, -cb0[159].x - mul r3.z, r3.z, cb0[159].z - max r3.xyz, r3.xyzx, l(-127.000000, -127.000000, -127.000000, 0.000000) - exp r3.z, -r3.z - mul r3.z, r3.z, cb0[159].y - lt r3.w, l(0.000000), |r3.y| - exp r4.x, -r3.y - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r3.y - mad r3.y, -r3.y, l(0.240227), l(0.693147) - movc r3.y, r3.w, r4.x, r3.y - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(0.000000), |r3.x| - exp r4.y, -r3.x - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r3.x - mad r3.x, -r3.x, l(0.240227), l(0.693147) - movc r3.x, r4.x, r4.y, r3.x - mul r3.x, r3.x, r3.w - mad r3.x, r3.z, r3.y, r3.x - mad_sat r3.yz, r8.wwww, cb0[160].wwyw, cb0[160].zzxz - mul r3.w, r8.w, r3.x - exp r3.w, -r3.w - min r3.w, r3.w, l(1.000000) - max r3.w, r3.w, cb0[161].w - add r3.z, r3.z, r3.w - add r3.z, r3.y, r3.z - min r2.w, r3.z, l(1.000000) - add r3.z, -r2.w, l(1.000000) - dp3_sat r3.w, r8.xyzx, cb0[163].xyzx - log r3.w, r3.w - mul r3.w, r3.w, cb0[164].w - exp r3.w, r3.w - mul r4.xyz, r3.wwww, cb0[164].xyzx - mad r3.w, r6.w, r7.w, -cb0[163].w - max r3.w, r3.w, l(0.000000) - mul r3.x, r3.w, r3.x - exp r3.x, -r3.x - min r3.x, r3.x, l(1.000000) - add r3.x, -r3.x, l(1.000000) - mul r4.xyz, r3.xxxx, r4.xyzx - add r3.x, -r3.y, l(1.000000) - mul r3.xyw, r3.xxxx, r4.xyxz - mad r0.xyw, cb0[161].xyxz, r3.zzzz, r3.xyxw -endif -mul r3.xyz, r2.wwww, r2.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r0.z, r0.z, l(1.000000) -mul r0.z, r0.z, l(0.059683) -mad r4.xyz, cb0[156].xyzx, r0.zzzz, cb0[158].xyzx -mad r0.z, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r0.z, r0.z, r1.w -mad_sat r4.xyz, cb0[157].xyzx, r0.zzzz, r4.xyzx -mul r4.xyz, r4.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r2.xyz, r2.xyzx, r4.xyzx -mad r0.xyz, r2.xyzx, r2.wwww, r0.xywx -lt r25.x, l(0.500000), cb13[12].y -if_nz r25.x - mul r23.xyz, r3.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r23.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r23.xyz, r23.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r3.xyzx - mul r24.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - mad o0.xyz, r1.xyzx, r23.xyzx, r24.xyzx -else - mad o0.xyz, r1.xyzx, r3.xyzx, r0.xyzx -endif -dp3 o0.w, r3.xyzx, l(0.333333, 0.333333, 0.333333, 0.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xDC895E4A.cso b/src/games/endfield/deferred-lighting/0x6B2D0D3F.cso similarity index 96% rename from src/games/endfield/deferred-lighting/0xDC895E4A.cso rename to src/games/endfield/deferred-lighting/0x6B2D0D3F.cso index afbd58b03049e54073d4d6be11983bbfb19c15bb..28405dbec70e812ec5a7ffa1738a68cc304df396 100644 GIT binary patch delta 327 zcmZ3|#QdR=S;{5C$@zX>deNp*H?8jq?ao3omu_cdU|{%gV4~C_PJ;ss3;{qM&&H$b z%#50o-!gv}3}awm6=D!zU;&DAf#}H(S^irnK}DpXv;|Po2+DSY(o7Bv3@l8HHXsbt z3=f4RVPN2P0?L2@NCu&Tfk6u@4x&Ns4x2o&TYU106#|nLN?0amEE5m~`vfQh sQUP)aSjXnxWzWSJ)h3tjm1k7jJasQKBakz5pEi&*TrR%(&OQ$&02N9*fdBvi delta 322 zcmey+$h@S9S;{5C$$9=?)wBmDFHUL+y;~Kf`s*$u0|SG~!HH6fI8zQVFa!X3k{gez zGc#&We#`uQ@(-3jLPiV%3@ku#Hz;kvFgdSUjD>}X(Ppy_+X*4fCZGh!7%r#+Mh6B4 z7N$mP3kC-EBA^&QQ0^N)P|apW$!K;%A)t^T9_1jpY3u?(RSXPlAhnwd72I1VyDSrs z1(^u5%?c>R1XKdDje)_zL1wbzL}At*1_th?$-b=Of*^U2tF(YL$oXL)`N?O*B_^9J z6PR4n#ls2m0a(@Kz$Ma~OO~AxW7L}LxL2N0YjfgWW=2NM$*KFa88tUg+!xOT0C+M% Avj6}9 diff --git a/src/games/endfield/deferred-lighting/0x7B4BA49D.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x7B4BA49D.ps_5_0.asm deleted file mode 100644 index d3a6434595..0000000000 --- a/src/games/endfield/deferred-lighting/0x7B4BA49D.ps_5_0.asm +++ /dev/null @@ -1,2040 +0,0 @@ -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[239], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[5], immediateIndexed -dcl_constantbuffer CB6[160], dynamicIndexed -dcl_constantbuffer CB7[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_sampler s5, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture3d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture2d (float,float,float,float) t17 -dcl_resource_texture2d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture3d (float,float,float,float) t21 -dcl_resource_texture3d (float,float,float,float) t22 -dcl_resource_texture3d (float,float,float,float) t23 -dcl_resource_texture3d (float,float,float,float) t24 -dcl_resource_texture2d (float,float,float,float) t25 -dcl_resource_texture2d (float,float,float,float) t26 -dcl_resource_texture2d (float,float,float,float) t27 -dcl_resource_texture2d (float,float,float,float) t28 -dcl_resource_texture3d (float,float,float,float) t29 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 43 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t26.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t27.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r2.xyw, r1.wwww, r3.xyxz -utof r4.xy, r0.xyxx -mul r4.zw, v0.xxxy, cb0[82].zzzw -mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) -mul r5.zw, r5.zzzw, cb0[82].zzzw -sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) -mul r6.xyzw, -r5.yyyy, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw -mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r3.w, r5.y, cb0[1].z -mad r3.w, cb0[0].z, r5.x, r3.w -mad r3.w, cb0[2].z, r5.z, r3.w -add r3.w, r3.w, cb0[3].z -eq r6.x, l(0.000000), cb0[86].w -add r6.yzw, -r5.xxyz, cb0[44].xxyz -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r8.xyz, r6.xxxx, r6.yzwy, r7.xyzx -dp3 r6.x, r8.xyzx, r8.xyzx -max r7.w, r6.x, l(0.000000) -rsq r7.w, r7.w -mul r9.xyz, r7.wwww, r8.xyzx -mul r8.w, r6.x, r7.w -lt r9.w, l(0.000488), cb0[238].x -if_nz r9.w - sample_b_indexable(texture2d)(float,float,float,float) r10.xy, v1.xyxx, t25.xyzw, s1, cb0[108].x -else - mov r10.xy, l(1.000000,1.000000,0,0) -endif -lt r10.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[230].xxxy -if_nz r10.z - add r10.z, |r2.y|, |r2.x| - add r10.z, |r2.w|, r10.z - div r10.z, l(1.000000, 1.000000, 1.000000, 1.000000), r10.z - mul r11.xyz, |r2.xywx|, r10.zzzz - mul r12.xyz, r5.xyzx, cb0[233].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r10.z, r12.xyzx, t10.yzxw, s2, l(0.000000) - mul r12.xyzw, r11.xxyy, l(0.000000, 1.000000, 0.707106, 0.000000) - add r11.xyw, r12.zwzz, r12.xxxy - mad r11.xyz, r11.zzzz, l(1.000000, 0.000000, 0.000000, 0.000000), r11.xywx - mad r11.w, r10.z, l(2.000000), l(-1.000000) - mul r11.xyz, r11.wwww, r11.xyzx - mov r11.w, |r2.y| - add r11.w, r11.w, l(-0.700000) - mul_sat r11.w, r11.w, l(4.000000) - mad r12.x, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r12.x - add r12.x, -cb0[233].z, cb0[233].y - mad r11.w, r11.w, r12.x, cb0[233].z - mul r11.xyz, r11.wwww, r11.xyzx -else - mov r11.xyz, l(0,0,0,0) - mov r10.z, l(0) -endif -mad r11.w, -r3.y, r1.w, l(-0.200000) -if_nz r10.w - mul r12.xyz, r2.xywx, cb0[237].zzzz - mul r13.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[229].yyyy - mad r12.xyz, r12.xyzx, cb0[229].xxxx, r13.xyzx - max r10.w, -r2.y, l(0.000000) - min r10.w, r10.w, l(0.900000) - add r10.w, -r10.w, l(1.000000) - mul_sat r12.w, r11.w, l(-10.000000) - mad r13.x, r12.w, l(-2.000000), l(3.000000) - mul r12.w, r12.w, r12.w - mul r12.w, r12.w, r13.x - max r12.w, r12.w, l(0.100000) - min r12.w, r12.w, l(1.000000) - mul r10.w, r10.w, r12.w - mad r12.xyz, r12.xyzx, r10.wwww, r5.xyzx - add r11.xyz, r11.xyzx, r12.xyzx - mul r12.xyz, r11.yyyy, cb5[1].xyzx - mad r12.xyz, cb5[0].xyzx, r11.xxxx, r12.xyzx - mad r11.xyz, cb5[2].xyzx, r11.zzzz, r12.xyzx - add r11.xyz, r11.xyzx, cb5[3].xyzx - mad r12.x, r11.x, l(0.500000), cb5[4].x - mad r10.w, r11.y, l(0.500000), l(0.500000) - add r12.z, -r10.w, cb5[4].y - add r11.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r10.w, r11.z, l(0.000488) - sample_c_lz_indexable(texture2d)(float,float,float,float) r10.w, r11.xyxx, t9.xxxx, s5, r10.w -else - mov r10.w, l(1.000000) -endif -mov_sat r11.x, r2.y -add r11.y, l(1.000000), -cb0[234].w -mad r11.y, r11.x, r11.y, cb0[234].w -add r12.xy, r5.xzxx, -cb0[44].xzxx -max r11.z, |r12.y|, |r12.x| -mul r12.x, r10.w, r11.y -mul r12.y, l(0.050000), cb0[226].w -mad r12.z, -cb0[226].w, l(0.700000), r11.z -div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), r12.y -mul_sat r12.y, r12.y, r12.z -mad r12.z, r12.y, l(-2.000000), l(3.000000) -mul r12.y, r12.y, r12.y -mul r12.y, r12.y, r12.z -mad r10.w, -r11.y, r10.w, l(1.000000) -mad r10.w, r12.y, r10.w, r12.x -deriv_rty_fine r12.xyz, r5.zxyz -deriv_rtx_fine r13.xyz, r5.yzxy -mul r14.xyz, r12.xyzx, r13.xyzx -mad r12.xyz, r12.zxyz, r13.yzxy, -r14.xyzx -dp3 r12.x, r12.xyzx, r12.xyzx -max r12.x, r12.x, l(0.000000) -rsq r12.x, r12.x -mul_sat r12.x, r12.x, r12.y -mad r12.yz, cb0[227].zzzz, l(0.000000, 0.300000, 0.300000, 0.000000), l(0.000000, 0.686000, 0.687000, 0.000000) -add r12.w, |r3.w|, l(-15.000000) -mul_sat r12.w, r12.w, l(0.015000) -add r12.w, -r12.w, l(1.000000) -min r13.x, l(0.990000), cb0[232].w -max r12.y, r12.y, l(0.970000) -add r13.y, -r12.y, l(0.990000) -add r11.x, r11.x, -r12.y -div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), r13.y -mul_sat r11.x, r11.x, r12.y -mad r12.y, r11.x, l(-2.000000), l(3.000000) -mul r11.x, r11.x, r11.x -add r13.y, r12.x, l(-0.991000) -mul r13.y, r13.y, l(111.111069) -max r13.y, r13.y, l(0.000000) -mad r13.z, r13.y, l(-2.000000), l(3.000000) -mul r13.y, r13.y, r13.y -mul r13.y, r13.y, r13.z -mad r13.z, r10.z, l(0.200000), l(0.800000) -ge r13.z, r13.z, r1.y -and r13.z, r13.z, l(0x3f800000) -mul r13.y, r13.z, r13.y -mad r11.x, r12.y, r11.x, r13.y -min r11.x, r11.x, l(1.000000) -add r12.y, -r13.x, cb0[232].w -add r11.x, -r13.x, r11.x -div r12.y, l(1.000000, 1.000000, 1.000000, 1.000000), r12.y -mul_sat r11.x, r11.x, r12.y -mad r12.y, r11.x, l(-2.000000), l(3.000000) -mul r11.x, r11.x, r11.x -mul r11.x, r11.x, r12.y -lt r12.y, l(0.000488), cb0[227].y -add r12.x, -r12.z, r12.x -mul_sat r12.x, r12.x, l(-1000.012878) -mad r12.z, r12.x, l(-2.000000), l(3.000000) -mul r12.x, r12.x, r12.x -mul r12.x, r12.x, r12.z -mad r12.z, r3.y, r1.w, l(0.500000) -mul_sat r12.z, r12.z, l(2.500000) -mad r13.x, r12.z, l(-2.000000), l(3.000000) -mul r12.z, r12.z, r12.z -mul r12.z, r12.z, r13.x -mul r12.x, r12.z, r12.x -lt r12.x, l(0.000488), r12.x -and r12.x, r12.x, r12.y -if_nz r12.x - mul r12.xy, |r2.xwxx|, |r2.xwxx| - add r12.z, r12.y, r12.x - div r12.z, l(1.000000, 1.000000, 1.000000, 1.000000), r12.z - mul r12.xy, r12.zzzz, r12.xyxx - mul r13.xyz, r2.ywxy, l(0.000000, 1.000000, 0.000000, 0.000000) - mad r13.xyz, r2.xywx, l(1.000000, 0.000000, 0.000000, 0.000000), -r13.xyzx - dp2 r12.z, r13.xyxx, r13.xyxx - rsq r12.z, r12.z - mul r13.xyz, r12.zzzz, r13.xyzx - mul r14.xyz, r2.ywxy, r13.xyzx - mad r14.xyz, r13.zxyz, r2.wxyw, -r14.xyzx - dp3 r12.z, r14.xyzx, r14.xyzx - rsq r12.z, r12.z - mul r14.xyz, r12.zzzz, r14.xzyx - mad r15.xyz, r5.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.314159, 0.314159, 0.314159, 0.000000) - round_ni r15.xyz, r15.xyzx - add r15.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - add r13.zw, r15.yyyy, r15.xxxz - mul r13.zw, r13.zzzw, l(0.000000, 0.000000, 0.000977, 0.000977) - ge r15.xy, r13.zwzz, -r13.zwzz - frc r13.zw, |r13.zzzw| - movc r13.zw, r15.xxxy, r13.zzzw, -r13.zzzw - mul r13.zw, r13.zzzw, l(0.000000, 0.000000, 1024.000000, 1024.000000) - dp2 r12.z, r13.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r12.z, null, r12.z - mul r12.z, r12.z, l(43758.546875) - frc r12.z, r12.z - ge r13.zw, r2.wwwx, l(0.000000, 0.000000, 0.000000, 0.000000) - movc r13.zw, r13.zzzw, l(0,0,1.000000,-1.000000), l(0,0,-1.000000,1.000000) - mul r15.xy, r5.xzxx, r13.zwzz - mul r13.z, r10.z, r12.z - add r13.w, -r12.z, l(1.000000) - mad r13.w, r13.w, l(0.700000), l(0.300000) - mul r16.xy, r13.zzzz, l(3.000000, 6.000000, 0.000000, 0.000000) - mad r13.z, -cb0[227].x, r13.w, r16.x - frc r17.x, r13.z - mad r13.z, cb0[227].x, l(-0.300000), r16.y - frc r17.y, r13.z - mul r12.z, r12.z, l(5.000000) - round_ni r12.z, r12.z - add r16.x, r12.z, l(1.000000) - mul r16.y, r5.y, r16.x - mov r5.w, l(0.100000) - mul r13.zw, r5.yyyw, r16.xxxy - frc r13.zw, r13.zzzw - add r16.xy, r17.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000) - add r16.xy, r13.zwzz, -r16.xyxx - add r16.xy, r16.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) - mul_sat r16.xy, r16.xyxx, l(5.000000, 5.000000, 0.000000, 0.000000) - mad r16.zw, r16.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) - mul r16.xy, r16.xyxx, r16.xyxx - mul r16.xy, r16.xyxx, r16.zwzz - add r16.zw, -r13.zzzw, r17.xxxy - max r16.xy, r16.zwzz, r16.xyxx - add r17.zw, -r17.xxxy, r13.zzzw - add r17.zw, r17.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) - mul r17.zw, r17.zzzw, l(0.000000, 0.000000, 5.000000, 5.000000) - max r17.zw, r17.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r18.xy, r17.zwzz, l(-2.000000, -2.000000, 0.000000, 0.000000), l(3.000000, 3.000000, 0.000000, 0.000000) - mul r17.zw, r17.zzzw, r17.zzzw - mul r17.zw, r17.zzzw, r18.xxxy - add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - max r16.zw, r16.zzzw, r17.zzzw - ge r13.zw, r13.zzzw, r17.xxxy - and r13.zw, r13.zzzw, l(0, 0, 0x3f800000, 0x3f800000) - add r16.zw, -r16.xxxy, r16.zzzw - mad r13.zw, r13.zzzw, r16.zzzw, r16.xxxy - mad r12.z, r13.z, r13.z, l(-0.400000) - mul_sat r12.z, r12.z, l(1.666667) - mad r13.z, r12.z, l(-2.000000), l(3.000000) - mul r12.z, r12.z, r12.z - mul r12.z, r12.z, r13.z - mad r13.z, r13.w, l(2.000000), l(-1.000000) - mul r15.w, r12.z, l(0.010000) - mul r16.x, r13.z, r15.w - mad r16.x, r10.z, l(0.100000), r16.x - mul r15.w, r12.z, r15.w - mad r15.w, r15.w, r13.z, r10.z - mul r16.y, r10.z, r15.w - mov r15.z, r5.y - mad r15.xyzw, r15.yzxz, cb0[228].xyxy, r16.xyxy - sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r15.xyxx, t11.xyzw, s2, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r15.xyzw, r15.zwzz, t11.xyzw, s2, cb0[108].x - mul r15.xyzw, r12.yyyy, r15.xyzw - mad r15.xyzw, r16.xyzw, r12.xxxx, r15.xyzw - mad r12.xy, r15.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) - mad r15.x, r12.z, l(2.000000), l(-1.000000) - mad_sat r13.w, r15.x, l(0.800000), r13.w - mad r15.x, -r15.w, l(0.500000), l(1.000000) - mad r13.w, r13.w, r15.x, l(-0.700000) - mul_sat r13.w, r13.w, l(3.333333) - mad r15.x, r13.w, l(-2.000000), l(3.000000) - mul r13.w, r13.w, r13.w - mul r13.w, r13.w, r15.x - mul r13.z, r13.z, r15.w - mad_sat r12.z, r13.z, l(0.500000), r12.z - mad r12.z, r12.z, l(0.500000), l(0.100000) - max r12.z, r12.z, r13.w - add r13.z, -r12.z, l(1.000000) - max r13.z, r13.z, l(0.000000) - mul r13.w, r13.z, r13.z - mul r13.w, r13.w, r13.w - mul r13.z, r13.w, r13.z - ge r13.z, r15.z, r13.z - and r13.z, r13.z, l(0x3f800000) - mad r12.z, r12.z, l(0.700000), l(0.200000) - mad r12.z, r13.z, r12.z, l(0.100000) - mul r12.z, r15.z, r12.z - mul r12.z, r12.z, cb0[227].y - mul r12.z, r12.z, l(0.330000) - ge r13.z, r1.z, l(0.045000) - and r13.z, r13.z, l(0x3f800000) - mul r13.z, r10.w, r13.z - mul r13.z, r13.z, cb0[226].x - mul r13.z, r12.w, r13.z - mul r12.z, r12.z, r13.z - dp2 r13.z, r12.xyxx, r12.xyxx - min r13.z, r13.z, l(1.000000) - add r13.z, -r13.z, l(1.000000) - sqrt r13.z, r13.z - max r13.z, r13.z, l(0.000488) - mul_sat r13.w, r12.z, l(10.000000) - mad r15.x, r13.w, l(-2.000000), l(3.000000) - mul r13.w, r13.w, r13.w - mul r13.w, r13.w, r15.x - mul r13.w, r13.w, cb0[227].y - mul r15.xy, r12.xyxx, r13.wwww - add r12.x, l(-1.500000), cb0[227].y - mul_sat r12.x, r12.x, l(0.666667) - mad r12.y, r12.x, l(-2.000000), l(3.000000) - mul r12.x, r12.x, r12.x - mul r12.x, r12.x, r12.y - mul r12.y, r12.x, l(-0.200000) - mad r12.x, -r12.x, l(-0.200000), r13.z - mad r15.z, r12.z, r12.x, r12.y - dp3 r12.x, r15.xyzx, r15.xyzx - max r12.x, r12.x, l(0.000000) - rsq r12.x, r12.x - mul r15.xyz, r12.xxxx, r15.xyzx - mov r16.x, r13.y - mov r16.y, r14.x - mov r16.z, r2.x - dp3 r16.x, r16.xyzx, r15.xyzx - mov r14.w, r2.y - dp2 r16.y, r14.zwzz, r15.yzyy - mov r14.x, r13.x - mov r14.z, r2.w - dp3 r16.z, r14.xyzx, r15.xyzx - mad r3.xyz, -r3.xyzx, r1.wwww, r16.xyzx - mad r13.xyz, r12.zzzz, r3.xyzx, r2.xywx - mul r1.w, r12.z, cb0[227].y - mul r1.w, r1.w, l(0.330000) -else - mov r13.xyz, r2.xywx - mov r1.w, l(0) -endif -lt r3.x, l(0.000488), r11.x -if_nz r3.x - mul r3.xy, -r5.xzxx, cb0[232].xyxx - frc r12.xy, r3.xyxx - lt r14.xy, l(0.000488, 0.000488, 0.000000, 0.000000), cb0[231].ywyy - if_nz r14.x - round_ni r3.xy, r3.xyxx - mul r3.xy, r3.xyxx, l(0.000977, 0.000977, 0.000000, 0.000000) - ge r14.xz, r3.xxyx, -r3.xxyx - frc r3.xy, |r3.xyxx| - movc r3.xy, r14.xzxx, r3.xyxx, -r3.xyxx - mul r3.xy, r3.xyxx, l(1024.000000, 1024.000000, 0.000000, 0.000000) - dp2 r3.x, r3.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r3.x, null, r3.x - mul r3.x, r3.x, l(43758.546875) - frc r3.x, r3.x - add r3.y, r3.x, cb0[231].x - frc r3.y, r3.y - mul r3.z, cb0[232].z, cb0[232].z - mul r3.y, r3.z, r3.y - round_ni r3.y, r3.y - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[232].z - ge r3.x, l(0.500000), r3.x - and r3.x, r3.x, l(0x3f800000) - add r14.xz, -r12.xxyx, r12.yyxy - mad r12.xy, r3.xxxx, r14.xzxx, r12.xyxx - div r3.x, r3.y, cb0[232].z - ge r12.z, r3.x, -r3.x - frc r3.x, |r3.x| - movc r3.x, r12.z, r3.x, -r3.x - mul r3.x, r3.x, cb0[232].z - mul r15.x, r3.x, r3.z - add r3.x, l(-1.000000), cb0[232].z - mul r3.y, r3.z, r3.y - round_ni r3.y, r3.y - add r3.x, -r3.y, r3.x - mul r15.y, r3.x, r3.z - mad r3.xy, r12.xyxx, r3.zzzz, r15.xyxx - frc r3.xy, r3.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r3.xy, r3.xyxx, t12.xyzw, s1, cb0[108].x - mul r3.xy, r3.xyxx, cb0[231].yyyy - mad r3.xy, r3.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[231].yyyy - else - mov r3.xy, l(0,0,0,0) - endif - if_nz r14.y - mov r14.xw, l(0,0,0,0.500000) - mov r14.y, cb0[231].z - mad r12.xy, -r5.xzxx, cb0[232].xyxx, r14.xyxx - mul r14.z, r10.z, l(0.500000) - add r12.xy, r12.xyxx, r14.zwzz - add r12.xy, r12.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - sample_b_indexable(texture2d)(float,float,float,float) r14.xy, r12.xyxx, t12.zwxy, s2, cb0[108].x - mov r12.xz, cb0[231].zzwz - mov r12.y, l(0) - mad r12.xy, -r5.xzxx, cb0[232].xyxx, -r12.xyxx - add r15.y, -r10.z, l(1.000000) - mov r15.x, l(0.500000) - mad r15.xy, l(1.000000, 0.500000, 0.000000, 0.000000), r15.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000) - add r12.xy, r12.xyxx, -r15.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r14.zw, r12.xyxx, t12.xyzw, s2, cb0[108].x - mul r14.xyzw, r14.xyzw, cb0[231].wwww - mad r14.xyzw, r14.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -r12.zzzz - mul r14.xyzw, r10.zzzz, r14.xyzw - add r12.xy, r14.zwzz, r14.xyxx - add r3.xy, r3.xyxx, r12.xyxx - endif - mul r12.x, r2.z, l(0.300000) - mad r12.x, r10.z, l(0.700000), r12.x - add r12.y, r2.z, l(-0.100000) - mul_sat r12.y, r12.y, l(100.000000) - mul r12.x, r12.y, r12.x - mul r12.y, r1.y, r12.x - min r12.y, r12.y, l(0.990000) - mad_sat r12.x, r12.x, r1.y, l(0.600000) - add r12.x, -r12.y, r12.x - add r12.y, -r12.y, cb0[232].w - div r12.x, l(1.000000, 1.000000, 1.000000, 1.000000), r12.x - mul_sat r12.x, r12.x, r12.y - mad r12.y, r12.x, l(-2.000000), l(3.000000) - mul r12.x, r12.x, r12.x - mul r12.x, r12.x, r12.y - mul r11.x, r11.x, cb0[226].x - dp2 r12.y, r3.xyxx, r3.xyxx - min r12.y, r12.y, l(1.000000) - add r12.y, -r12.y, l(1.000000) - sqrt r12.y, r12.y - max r3.z, r12.y, l(0.000488) - dp3 r12.y, r3.xyzx, r3.xyzx - rsq r12.y, r12.y - mul r3.xyz, r3.yzxy, r12.yyyy - mul r12.y, r3.y, l(1.000000) - mul r12.z, r12.x, r11.x - mul r12.z, r10.w, r12.z - mul r12.z, r12.w, r12.z - mad r3.xyz, r3.xyzx, l(1.000000, 1.000000, -1.000000, 0.000000), -r2.xywx - mad r13.xyz, r12.zzzz, r3.xyzx, r2.xywx - mul r3.x, r1.y, l(0.200000) - add r3.y, -r10.z, l(1.000000) - mul r3.y, r3.y, cb0[232].w - mul r3.z, r3.y, l(0.500000) - mad r3.y, -r3.y, l(0.500000), l(1.000000) - mad r3.y, r12.x, r3.y, r3.z - add r3.z, l(-0.600000), cb0[232].w - mul_sat r3.z, r3.z, l(2.500000) - mad r10.z, r3.z, l(-2.000000), l(3.000000) - mul r3.z, r3.z, r3.z - mul r3.z, r3.z, r10.z - mad_sat r3.y, r3.z, l(0.600000), r3.y - mul r3.y, r3.y, r11.x - mul r3.y, r12.y, r3.y - div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.x - mul_sat r3.x, r3.x, r3.y - mad r3.y, r3.x, l(-2.000000), l(3.000000) - mul r3.x, r3.x, r3.x - mul r3.x, r3.x, r3.y - mul r3.x, r10.w, r3.x - mul r3.x, r12.w, r3.x - max r3.x, r3.x, l(0.000000) -else - mov r3.x, l(0) -endif -min r3.y, r10.y, r10.x -mul r3.z, r11.y, cb0[234].z -mad r10.z, -cb0[234].z, r11.y, l(1.000000) -mad r3.z, r10.w, r10.z, r3.z -mad r10.z, cb0[234].x, cb0[226].w, -cb0[226].w -add r10.w, r11.z, -cb0[226].w -div r10.z, l(1.000000, 1.000000, 1.000000, 1.000000), r10.z -mul_sat r10.z, r10.z, r10.w -mad r10.w, r10.z, l(-2.000000), l(3.000000) -mul r10.z, r10.z, r10.z -mul r10.z, r10.z, r10.w -add r10.w, -r3.z, cb0[234].y -mad r3.z, r10.z, r10.w, r3.z -add r3.z, -r3.z, l(1.000000) -mul r10.z, r3.z, r10.x -add r1.z, r1.z, l(-0.050000) -add r10.w, -r2.z, l(1.000000) -mad_sat r11.x, r10.w, cb0[226].z, cb0[226].y -mad r11.x, r1.w, cb0[228].z, r11.x -mul r11.y, r2.z, r3.x -mad_sat r11.x, r11.y, l(0.100000), r11.x -add r11.y, -r11.x, l(1.000000) -mad r11.x, r1.x, r11.y, r11.x -mul_sat r11.y, r11.w, l(3.333333) -mad r11.z, r11.y, l(-2.000000), l(3.000000) -mul r11.y, r11.y, r11.y -mad r11.y, -r11.z, r11.y, l(1.000000) -mul r11.z, r11.x, cb0[226].x -add r11.w, -r1.x, l(1.000000) -mul r11.z, r11.w, r11.z -mul r11.z, r11.y, r11.z -mad r11.z, r11.z, l(-0.750000), l(1.000000) -mad r11.x, r11.x, l(-0.300000), l(0.900000) -sqrt r11.w, r10.w -add r11.x, r11.w, r11.x -add_sat r11.x, r11.x, l(-0.600000) -max r11.x, r10.w, r11.x -min r11.x, r11.x, l(0.990000) -add_sat r11.w, l(2.000000), -cb0[226].x -mul r11.w, r11.w, cb0[226].x -mul r11.y, r11.y, r11.w -mad r3.z, -r10.x, r3.z, l(1.000000) -mul r3.z, r3.z, r11.y -add r10.x, -r10.w, r11.x -mad r3.z, r3.z, r10.x, r10.w -add r3.z, -r3.z, l(1.000000) -mul_sat r1.zw, r1.zzzw, l(0.000000, 0.000000, 1.052600, 20.000000) -mad r10.x, r1.w, l(-2.000000), l(3.000000) -mul r1.w, r1.w, r1.w -mul r1.w, r1.w, r10.x -max r1.w, r1.w, r3.x -mad r1.w, r1.w, l(-0.900000), l(1.000000) -mul r3.x, r1.w, r3.z -add r10.x, r10.y, l(-1.000000) -mad r10.x, r1.z, r10.x, l(1.000000) -add r10.y, -r1.z, l(1.000000) -movc r10.xy, r9.wwww, r10.xyxx, l(1.000000,1.000000,0,0) -min r1.z, r3.x, r10.x -mad r1.w, r3.z, r1.w, -r1.z -mad r1.z, r3.y, r1.w, r1.z -add r1.w, -r1.z, r2.z -mad r12.w, r10.z, r1.w, r1.z -ld_indexable(texture2d)(float,float,float,float) r11.xyw, r0.xyzz, t28.xywz -min r1.z, r11.z, r10.y -add r1.w, -r1.z, r11.z -mad r1.z, r3.y, r1.w, r1.z -add r1.w, -r1.z, l(1.000000) -mad r1.z, r10.z, r1.w, r1.z -mul r3.xyz, r1.zzzz, r11.xywx -mul r10.xyz, r1.xxxx, r3.xyzx -mad r10.xyz, r11.xywx, r1.zzzz, -r10.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz -dp3 r2.z, r13.xyzx, r9.xyzx -max r11.x, r2.z, l(0.000000) -mul r3.y, r12.w, r12.w -mul r14.x, r11.x, r11.x -mul r14.z, r11.x, r14.x -mul r2.z, r3.y, r3.y -mul r3.z, r3.y, r2.z -mov r11.yzw, l(0,0.036546,9.063200,0.990440) -dp2 r15.x, l(3.327070, 1.000000, 0.000000, 0.000000), r11.xyxx -dp2 r15.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r11.xzxx -mov r3.x, l(1.000000) -dp2 r9.w, r15.xyxx, r3.xyxx -mov r14.yw, l(0,9.044010,0,1.000000) -dp3 r15.x, l(3.596850, -1.367720, 1.000000, 0.000000), r14.xzwx -dp3 r15.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r14.xyzx -mov r16.x, l(5.565890) -mov r16.yz, r14.xxzx -dp3 r15.z, l(1.000000, 19.788601, -20.212299, 0.000000), r16.xyzx -dp3 r10.w, r15.xyzx, r3.xyzx -div r9.w, r9.w, r10.w -dp2 r15.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r11.xwxx -mov r14.x, l(1.296780) -mov r14.y, r11.x -dp2 r15.y, l(1.000000, -0.755907, 0.000000, 0.000000), r14.xyxx -dp2 r10.w, r15.xyxx, r3.xyxx -dp3 r15.x, l(2.923380, 59.418800, 1.000000, 0.000000), r14.yzwy -mov r14.xw, l(20.322500,0,0,121.563004) -dp3 r15.y, l(1.000000, -27.030199, 222.591995, 0.000000), r14.xyzx -dp3 r15.z, l(626.130005, 316.627014, 1.000000, 0.000000), r14.yzwy -dp3 r3.x, r15.xyzx, r3.xyzx -div r3.x, r10.w, r3.x -mad r11.yzw, r1.xxzw, r9.wwww, r3.xxxx -add r3.x, r3.x, r9.w -ld_indexable(texture2d)(float,float,float,float) r14.x, r0.xyzz, t7.xyzw -lt r0.z, l(0.001000), r14.x -if_nz r0.z - dp3 r0.z, -r9.xyzx, r13.xyzx - add r0.z, r0.z, r0.z - mad r15.xyz, r13.xyzx, -r0.zzzz, -r9.xyzx - dp3 r0.z, -cb3[0].xyzx, r15.xyzx - mad r16.xyz, cb3[0].xyzx, r0.zzzz, r15.xyzx - lt r0.z, r0.z, cb3[4].z - dp3 r3.z, r16.xyzx, r16.xyzx - max r3.z, r3.z, l(0.000061) - rsq r3.z, r3.z - mul r16.xyz, r3.zzzz, r16.xyzx - mul r16.xyz, r16.xyzx, cb3[4].yyyy - mad r16.xyz, -cb3[0].xyzx, cb3[4].zzzz, r16.xyzx - dp3 r3.z, r16.xyzx, r16.xyzx - rsq r3.z, r3.z - mul r16.xyz, r3.zzzz, r16.xyzx - movc r15.xyz, r0.zzzz, r16.xyzx, r15.xyzx - mad r16.xyz, r8.xyzx, r7.wwww, r15.xyzx - dp3 r0.z, r16.xyzx, r16.xyzx - max r0.z, r0.z, l(0.000061) - rsq r0.z, r0.z - mul r16.xyz, r0.zzzz, r16.xyzx - dp3_sat r12.y, r15.xyzx, r13.xyzx - dp3_sat r0.z, r13.xyzx, r16.xyzx - min r12.z, r11.x, l(1.000000) - mad r3.z, r0.z, r2.z, -r0.z - mad r0.z, r3.z, r0.z, l(1.000000) - dp3_sat r3.z, r9.xyzx, r16.xyzx - add r3.z, -r3.z, l(1.000000) - mul r9.w, r3.z, r3.z - mul r9.w, r9.w, r9.w - mul r10.w, r3.z, r9.w - add r14.z, -r12.w, l(1.000000) - mad r14.w, -r14.z, l(0.383026), l(-0.076195) - mad r14.w, r14.z, r14.w, l(1.049970) - mad r14.z, r14.z, r14.w, l(0.409255) - min r14.z, r14.z, l(0.999000) - add r14.w, -r14.z, l(1.000000) - add r16.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r16.xyz, r16.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r1.xzwx - mad r3.z, -r9.w, r3.z, l(1.000000) - mad r17.xyz, r1.xzwx, r3.zzzz, r10.wwww - mul r0.z, r0.z, r0.z - div r0.z, r2.z, r0.z - mad r18.xy, -r12.zyzz, r2.zzzz, r12.zyzz - mad r18.xy, r18.xyxx, r12.zyzz, r2.zzzz - sqrt r18.xy, r18.xyxx - mul r18.xy, r12.yzyy, r18.xyxx - add r2.z, r18.y, r18.x - add r2.z, r2.z, l(0.000100) - div r2.z, l(0.500000), r2.z - mul r0.z, r0.z, r2.z - mul r17.xyz, r0.zzzz, r17.xyzx - min r17.xyz, r17.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r18.xyzw, r12.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r18.xyxx, t13.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r2.z, r18.zwzz, t13.yzxw, s1, l(0.000000) - mul r0.z, r0.z, r2.z - mul r0.z, r14.z, r0.z - div r0.z, r0.z, r14.w - mul r18.xyz, r16.xyzx, r16.xyzx - mul r18.xyz, r0.zzzz, r18.xyzx - mad r16.xyz, -r16.xyzx, r14.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r16.xyz, r18.xyzx, r16.xyzx - add r16.xyz, r16.xyzx, r17.xyzx - mul r16.xyz, r16.xyzx, cb3[4].xxxx - max r16.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r16.xyz, r16.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - dp3_sat r0.z, r15.xyzx, r2.xywx - mul r15.xyz, r0.zzzz, r10.xyzx - mad r15.xyz, r16.xyzx, r12.yyyy, r15.xyzx - mul r15.xyz, r15.xyzx, cb3[1].xyzx - mov r14.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r14.yzw, r14.xyxx, t8.wxyz, s1, cb0[108].x - add r0.z, -r14.x, l(1.000000) - mad r14.xyz, r15.xyzx, r14.yzwy, -r15.xyzx - mad r14.xyz, r0.zzzz, r14.xyzx, r15.xyzx - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t14.yzxw, s1, l(0.000000) - min r0.z, r0.z, l(1.000000) - mul r14.xyz, r0.zzzz, r14.xyzx -else - mov r14.xyz, l(0,0,0,0) -endif -mul r12.yz, r4.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) -round_ni r12.yz, r12.yyzy -mad r0.z, r12.z, cb2[1].y, r12.y -mul r0.z, r0.z, l(8.000000) -ftoi r0.z, r0.z -mad r2.z, -cb0[85].y, cb2[2].w, |r3.w| -round_ni r2.z, r2.z -add r3.z, l(-1.000000), cb2[1].w -max r9.w, r2.z, l(0.000000) -min r3.z, r3.z, r9.w -mul r9.w, r3.z, l(8.000000) -ftoi r9.w, r9.w -ge r2.z, r3.z, r2.z -iadd r3.z, r9.w, cb0[110].y -dp3 r9.w, -r9.xyzx, r13.xyzx -add r9.w, r9.w, r9.w -mad r15.xyz, r13.xyzx, -r9.wwww, -r9.xyzx -min r12.x, r11.x, l(1.000000) -add r9.w, -r12.w, l(1.000000) -mad r10.w, -r9.w, l(0.383026), l(-0.076195) -mad r10.w, r9.w, r10.w, l(1.049970) -mad r9.w, r9.w, r10.w, l(0.409255) -min r9.w, r9.w, l(0.999000) -add r10.w, -r9.w, l(1.000000) -add r16.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r16.xyz, r16.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r1.xzwx -mad r12.yz, r12.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r11.x, r12.yzyy, t13.xyzw, s1, l(0.000000) -mad r17.xyz, -r16.xyzx, r10.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r16.xyz, r16.xyzx, r16.xyzx -mov r18.w, l(1.000000) -mov r19.y, l(1.000000) -mov r20.z, r12.w -mov r21.xyz, l(0,0,0,0) -mov r12.yz, l(0,1.000000,0,0) -loop - ilt r14.w, l(7), r12.z - breakc_nz r14.w - iadd r14.w, r0.z, r12.z - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r14.w, r14.w, l(0), t0.xxxx - iadd r15.w, r3.z, r12.z - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r15.w, r15.w, l(0), t0.xxxx - and r14.w, r14.w, r15.w - and r14.w, r2.z, r14.w - ishl r15.w, r12.z, l(5) - mov r22.xyz, l(0,0,0,0) - mov r16.w, r12.y - mov r17.w, r14.w - loop - breakc_z r17.w - firstbit_lo r19.z, r17.w - ishl r19.w, l(1), r19.z - xor r19.w, r17.w, r19.w - iadd r19.z, r15.w, r19.z - bfi r23.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r19.zzzz, l(1, 3, 5, 6) - bfi r20.w, l(29), l(3), r19.z, l(7) - ftou r21.w, cb3[r23.z + 6].w - ieq r21.w, r21.w, l(1) - if_nz r21.w - add r18.xyz, r5.xyzx, -cb3[r23.x + 6].xyzx - and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.z + 6].xzyx - and r25.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r23.w + 6].yxzy - ushr r26.xyz, cb3[r23.z + 6].xzyx, l(16, 16, 16, 0) - ushr r27.xyz, cb3[r23.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r24.xyz, r24.xyzx - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyz, r26.xyzx - f16tof32 r27.xyw, r27.yxyz - mov r28.xz, r24.xxzx - mov r28.yw, r26.xxxz - dp4 r21.w, r18.xyzw, r28.xyzw - mov r26.x, r24.y - mov r26.z, r25.y - mov r26.w, r27.x - dp4 r22.w, r18.xyzw, r26.xyzw - mov r27.xz, r25.xxzx - dp4 r18.x, r18.xyzw, r27.xyzw - max r18.y, |r21.w|, |r22.w| - max r18.x, |r18.x|, r18.y - mad r18.y, cb3[r20.w + 6].x, l(0.500000), l(0.500000) - add r18.x, -r18.y, r18.x - mad r18.y, -cb3[r20.w + 6].x, l(0.500000), l(0.500000) - div_sat r18.x, r18.x, r18.y - add r18.x, -r18.x, l(1.000000) - mul r18.x, r18.x, r18.x - else - mov r18.x, l(1.000000) - endif - lt r18.y, l(0.500000), cb3[r23.y + 6].z - lt r18.z, r18.x, l(0.001000) - or r18.z, r18.y, r18.z - if_nz r18.z - mov r17.w, r19.w - continue - endif - ishl r18.z, r19.z, l(3) - bfi r19.z, l(29), l(3), r19.z, l(2) - lt r21.w, cb3[r18.z + 6].w, l(1.500000) - if_nz r21.w - mad r21.w, cb3[r19.z + 6].y, l(0.500000), l(0.500000) - add r24.x, r21.w, -|cb3[r19.z + 6].x| - add r24.y, -r24.x, cb3[r19.z + 6].y - add r21.w, -|r24.x|, l(1.000000) - add r21.w, -|r24.y|, r21.w - ge r22.w, cb3[r19.z + 6].x, l(0.000000) - max r23.z, r21.w, l(0.000488) - movc r24.z, r22.w, r23.z, -r23.z - dp3 r23.z, r24.xyzx, r24.xyzx - rsq r23.z, r23.z - mul r25.xyz, r23.zzzz, r24.xyzx - add r26.xyz, -r5.xyzx, cb3[r23.x + 6].xyzx - dp3 r23.z, r26.xyzx, r26.xyzx - rsq r24.z, r23.z - mul r27.xyz, r24.zzzz, r26.xyzx - dp3_sat r19.x, r13.xyzx, r27.xyzx - ftoi r25.w, cb3[r20.w + 6].w - mul r28.xyz, r25.xyzx, cb3[r19.z + 6].zzzz - mad r29.xyz, -r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - mad r30.xyz, r28.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - ftou r26.w, cb3[r18.z + 6].w - and r26.w, r26.w, l(1) - ieq r27.w, r26.w, l(0) - not r27.w, r27.w - lt r28.w, l(0.000000), cb3[r19.z + 6].z - and r27.w, r27.w, r28.w - dp3 r28.w, r29.xyzx, r29.xyzx - sqrt r28.w, r28.w - dp3 r29.w, r30.xyzx, r30.xyzx - sqrt r29.w, r29.w - dp3 r30.w, r13.xyzx, r29.xyzx - div r30.w, r30.w, r28.w - dp3 r31.x, r13.xyzx, r30.xyzx - div r31.x, r31.x, r29.w - add r30.w, r30.w, r31.x - mul_sat r31.x, r30.w, l(0.500000) - dp3 r30.x, r29.xyzx, r30.xyzx - mad r28.w, r28.w, r29.w, r30.x - mad r28.w, r28.w, l(0.500000), l(1.000000) - div r31.y, l(1.000000, 1.000000, 1.000000, 1.000000), r28.w - movc r20.xy, r27.wwww, r31.xyxx, r19.xyxx - lt r28.w, cb3[r23.w + 6].w, l(0.000000) - if_nz r28.w - mul r28.w, cb3[r23.x + 6].w, cb3[r23.x + 6].w - mul r28.w, r23.z, r28.w - mad r28.w, -r28.w, r28.w, l(1.000000) - max r28.w, r28.w, l(0.000000) - add r23.z, r23.z, l(1.000000) - div r23.z, l(1.000000, 1.000000, 1.000000, 1.000000), r23.z - and r29.w, r27.w, l(0x3f800000) - add r30.x, r20.y, -r23.z - mad r23.z, r29.w, r30.x, r23.z - mul r28.w, r28.w, r28.w - mul r23.z, r23.z, r28.w - else - mul r30.xyz, r26.xyzx, cb3[r23.x + 6].wwww - dp3 r28.w, r30.xyzx, r30.xyzx - min r28.w, r28.w, l(1.000000) - add r28.w, -r28.w, l(1.000000) - log r28.w, r28.w - mul r28.w, r28.w, cb3[r23.w + 6].w - exp r28.w, r28.w - mul r23.z, r20.y, r28.w - endif - dp3 r20.y, r27.xyzx, -r25.xyzx - add r20.y, r20.y, -cb3[r19.z + 6].z - mul_sat r20.y, r20.y, cb3[r19.z + 6].w - mul r20.y, r20.y, r20.y - movc r20.y, r26.w, l(1.000000), r20.y - mul r20.y, r20.y, r23.z - not r23.z, r27.w - ige r25.x, r25.w, l(0) - and r23.z, r23.z, r25.x - if_nz r23.z - if_z r26.w - ishl r23.z, r25.w, l(2) - mul r25.xyz, r5.yyyy, cb6[r23.z + 33].xywx - mad r25.xyz, cb6[r23.z + 32].xywx, r5.xxxx, r25.xyzx - mad r25.xyz, cb6[r23.z + 34].xywx, r5.zzzz, r25.xyzx - add r25.xyz, r25.xyzx, cb6[r23.z + 35].xywx - div_sat r25.xy, r25.xyxx, r25.zzzz - mad r25.xy, r25.xyxx, cb6[r25.w + 0].zwzz, cb6[r25.w + 0].xyxx - else - ishl r23.z, r25.w, l(2) - dp3 r30.x, -r26.xyzx, cb6[r23.z + 32].xyzx - dp3 r30.y, -r26.xyzx, cb6[r23.z + 33].xyzx - dp3 r30.z, -r26.xyzx, cb6[r23.z + 34].xyzx - lt r23.z, |r30.x|, |r30.y| - and r23.z, r23.z, l(1) - dp2 r25.z, |r30.xyxx|, icb[r23.z + 0].xyxx - lt r25.z, r25.z, |r30.z| - movc r23.z, r25.z, l(2), r23.z - dp3 r25.z, r30.xyzx, icb[r23.z + 0].xyzx - lt r25.z, r25.z, l(0.000000) - bfi r23.z, l(31), l(1), r23.z, r25.z - ushr r25.z, r23.z, l(1) - dp3 r25.z, r30.xyzx, icb[r25.z + 0].xyzx - div r28.w, l(0.000244), cb6[r25.w + 0].w - add r28.w, -r28.w, l(0.500000) - utof r29.w, r23.z - ult r30.w, r23.z, l(2) - and r30.w, r30.w, l(2) - dp2 r30.x, r30.xzxx, icb[r30.w + 0].xzxx - mul r30.x, r30.x, icb[r23.z + 4].z - div r30.x, r30.x, |r25.z| - mad r29.w, r30.x, r28.w, r29.w - add r29.w, r29.w, l(0.500000) - mul_sat r31.x, r29.w, l(0.166667) - iadd r29.w, l(-1), icb[r23.z + 4].y - dp2 r29.w, r30.yzyy, icb[r29.w + 0].xyxx - mul r23.z, r29.w, icb[r23.z + 4].w - div r23.z, r23.z, |r25.z| - mad_sat r31.y, -r23.z, r28.w, l(0.500000) - mad r25.xy, r31.xyxx, cb6[r25.w + 0].zwzz, cb6[r25.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r23.z, r25.xyxx, t15.yzxw, s1, l(0.000000) - mul r20.y, r20.y, r23.z - endif - lt r23.z, l(0.000000), r20.y - if_nz r23.z - if_z r26.w - ftoi r25.x, cb3[r23.y + 6].x - else - add r25.yzw, r5.xxyz, -cb3[r23.x + 6].xxyz - lt r30.xyz, |r25.zwwz|, |r25.yyzy| - and r26.w, r30.y, r30.x - lt r25.yzw, l(0.000000, 0.000000, 0.000000, 0.000000), r25.yyzw - ushr r28.w, cb3[r19.z + 6].w, l(24) - ubfe r30.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r19.z + 6].wwww - movc r25.y, r25.y, r28.w, r30.x - and r28.w, l(255), cb3[r19.z + 6].w - movc r25.z, r25.z, r30.y, r28.w - ubfe r28.w, l(8), l(8), cb3[r23.y + 6].x - and r29.w, l(255), cb3[r23.y + 6].x - movc r25.w, r25.w, r28.w, r29.w - movc r25.z, r30.z, r25.z, r25.w - movc r25.y, r26.w, r25.y, r25.z - ilt r25.z, r25.y, l(80) - movc r25.x, r25.z, r25.y, l(-1) - endif - ishl r25.y, r25.x, l(2) - mad r30.xyz, r27.xyzx, cb4[r25.x + 288].xxxx, r5.xyzx - mul r25.z, l(5.000000), cb4[r25.x + 288].y - mad r30.xyz, r13.xyzx, r25.zzzz, r30.xyzx - mul r31.xyzw, r30.yyyy, cb4[r25.y + 65].xyzw - mad r31.xyzw, cb4[r25.y + 64].xyzw, r30.xxxx, r31.xyzw - mad r30.xyzw, cb4[r25.y + 66].xyzw, r30.zzzz, r31.xyzw - add r30.xyzw, r30.xyzw, cb4[r25.y + 67].xyzw - div r25.yzw, r30.xxyz, r30.wwww - ge r30.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r25.yzwy - ge r31.xyz, r25.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000) - add r32.xy, -cb4[r25.x + 344].xyxx, cb4[r25.x + 344].zwzz - mad r25.yz, r25.yyzy, r32.xxyx, cb4[r25.x + 344].xxyx - mad r32.xy, r25.yzyy, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r32.xy, r32.xyxx - mad r25.yz, r25.yyzy, cb4[400].zzwz, -r32.xxyx - add r33.xyzw, r25.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r34.xyzw, r33.xxzz, r33.xxzz - add r32.zw, -r25.yyyz, l(0.000000, 0.000000, 1.000000, 1.000000) - min r33.xz, r25.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r35.xy, r25.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r36.xy, r32.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r35.xy, -r35.xyxx, r35.xyxx, r33.ywyy - add r35.xy, r35.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r35.xy, r35.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r34.xz, r34.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r25.yz, r34.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r25.yyzy - mul r37.xy, r25.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r25.yz, -r33.xxzx, r33.xxzx, r32.zzwz - add r25.yz, r25.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r38.xy, r25.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r25.yz, r33.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r37.z, r38.x - mov r37.w, r25.y - mov r36.z, r35.x - mov r36.w, r34.x - add r33.xyzw, r36.zwxz, r37.zwxz - mov r38.z, r37.y - mov r38.w, r25.z - mov r35.z, r36.y - mov r35.w, r34.z - add r34.xyz, r35.zywz, r38.zywz - div r36.xyz, r36.xzwx, r33.zwyz - add r36.xyz, r36.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r36.xyz, r36.yxzy, cb4[400].xxxx - div r35.xyz, r35.zywz, r34.xyzx - add r35.xyz, r35.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r35.xyz, r35.xyzx, cb4[400].yyyy - mov r36.w, r35.x - mad r37.xyzw, r32.xyxy, cb4[400].xyxy, r36.ywxw - mad r25.yz, r32.xxyx, cb4[400].xxyx, r36.zzwz - mov r35.w, r36.y - mov r36.yw, r35.yyyz - mad r38.xyzw, r32.xyxy, cb4[400].xyxy, r36.xyzy - mad r35.xyzw, r32.xyxy, cb4[400].xyxy, r35.wywz - mad r32.xyzw, r32.xyxy, cb4[400].xyxy, r36.xwzw - mul r36.xyzw, r33.zwyz, r34.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r26.w, r37.xyxx, t6.xxxx, s4, r25.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r28.w, r37.zwzz, t6.xxxx, s4, r25.w - mul r28.w, r28.w, r36.y - mad r26.w, r36.x, r26.w, r28.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.y, r25.yzyy, t6.xxxx, s4, r25.w - mad r25.y, r36.z, r25.y, r26.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r35.xyxx, t6.xxxx, s4, r25.w - mad r25.y, r36.w, r25.z, r25.y - mul r36.xyzw, r33.xyzw, r34.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r38.xyxx, t6.xxxx, s4, r25.w - mad r25.y, r36.x, r25.z, r25.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r38.zwzz, t6.xxxx, s4, r25.w - mad r25.y, r36.y, r25.z, r25.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r35.zwzz, t6.xxxx, s4, r25.w - mad r25.y, r36.z, r25.z, r25.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.z, r32.xyxx, t6.xxxx, s4, r25.w - mad r25.y, r36.w, r25.z, r25.y - ige r25.z, r25.x, l(0) - or r30.xyz, r30.xyzx, r31.xyzx - or r26.w, r30.y, r30.x - or r26.w, r30.z, r26.w - and r28.w, r25.w, l(0x7fffffff) - ult r28.w, l(0x7f800000), r28.w - or r26.w, r26.w, r28.w - mul r28.w, r33.y, r34.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r32.zwzz, t6.xxxx, s4, r25.w - mad r25.y, r28.w, r25.w, r25.y - add r25.y, r25.y, l(-1.000000) - mad r25.x, cb4[r25.x + 288].w, r25.y, l(1.000000) - movc r25.x, r26.w, l(1.000000), r25.x - movc r25.x, r25.z, r25.x, l(1.000000) - else - mov r25.x, l(1.000000) - endif - if_nz r27.w - dp3 r25.y, r15.xyzx, r28.xyzx - mul_sat r25.z, r24.z, cb3[r19.z + 6].z - mad r25.z, r25.z, l(0.500000), r3.y - min r25.z, r25.z, l(1.000000) - div r25.z, r3.y, r25.z - mad r30.xyz, r15.xyzx, r25.yyyy, -r28.xyzx - dp3 r25.w, r29.xyzx, r30.xyzx - mul r25.y, r25.y, r25.y - mad r25.y, cb3[r19.z + 6].z, cb3[r19.z + 6].z, -r25.y - div_sat r25.y, r25.w, r25.y - mad r28.xyz, r28.xyzx, r25.yyyy, r29.xyzx - dp3 r25.y, r28.xyzx, r28.xyzx - rsq r25.y, r25.y - mul r27.xyz, r25.yyyy, r28.xyzx - else - mov r25.z, l(1.000000) - endif - if_nz r23.z - mul_sat r23.z, r24.z, cb3[r20.w + 6].y - mad r27.xyz, r8.xyzx, r7.wwww, r27.xyzx - dp3 r24.z, r27.xyzx, r27.xyzx - max r24.z, r24.z, l(0.000061) - rsq r24.z, r24.z - mul r27.xyz, r24.zzzz, r27.xyzx - max r21.w, r21.w, l(0.000000) - movc r24.w, r22.w, r21.w, -r21.w - dp3 r21.w, r24.xywx, r24.xywx - rsq r21.w, r21.w - mul r24.xyz, r21.wwww, r24.xywx - mul r24.xyz, r24.xyzx, cb3[r19.z + 6].zzzz - mad r28.xyz, -r24.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - mad r24.xyz, r24.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - dp3 r21.w, r13.xyzx, r28.xyzx - dp3 r22.w, r28.xyzx, r28.xyzx - sqrt r22.w, r22.w - div r21.w, r21.w, r22.w - dp3 r22.w, r13.xyzx, r24.xyzx - dp3 r24.x, r24.xyzx, r24.xyzx - sqrt r24.x, r24.x - div r22.w, r22.w, r24.x - add r21.w, r21.w, r22.w - mul_sat r21.w, r21.w, l(0.500000) - movc r19.x, r27.w, r21.w, r19.x - dp3_sat r21.w, r13.xyzx, r27.xyzx - dp3_sat r22.w, r9.xyzx, r27.xyzx - lt r24.x, l(0.000000), r23.z - mul r23.z, r23.z, r23.z - mad r24.y, r22.w, l(3.600000), l(0.400000) - div r23.z, r23.z, r24.y - mad r23.z, r12.w, r12.w, r23.z - min r23.z, r23.z, l(1.000000) - movc r23.z, r24.x, r23.z, r3.y - mul r23.z, r23.z, r23.z - mad r24.x, r21.w, r23.z, -r21.w - mad r21.w, r24.x, r21.w, l(1.000000) - add r22.w, -r22.w, l(1.000000) - mul r24.x, r22.w, r22.w - mul r24.x, r24.x, r24.x - mul r24.y, r22.w, r24.x - mad r22.w, -r24.x, r22.w, l(1.000000) - mad r24.xyz, r1.xzwx, r22.wwww, r24.yyyy - mul r21.w, r21.w, r21.w - div r21.w, r23.z, r21.w - mul r21.w, r25.z, r21.w - mad r22.w, -r12.x, r23.z, r12.x - mad r22.w, r22.w, r12.x, r23.z - sqrt r22.w, r22.w - mad r24.w, -r20.x, r23.z, r20.x - mad r23.z, r24.w, r20.x, r23.z - sqrt r23.z, r23.z - mul r23.z, r12.x, r23.z - mad r22.w, r20.x, r22.w, r23.z - add r22.w, r22.w, l(0.000100) - div r22.w, l(0.500000), r22.w - mul r21.w, r21.w, r22.w - mul r24.xyz, r21.wwww, r24.xyzx - min r24.xyz, r24.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r25.yz, r20.xxzx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r21.w, r25.yzyy, t13.yzwx, s1, l(0.000000) - mul r21.w, r11.x, r21.w - mul r21.w, r9.w, r21.w - div r21.w, r21.w, r10.w - mul r25.yzw, r16.xxyz, r21.wwww - div r25.yzw, r25.yyzw, r17.xxyz - add r24.xyz, r24.xyzx, r25.yzwy - mul r24.xyz, r24.xyzx, cb3[r20.w + 6].zzzz - max r24.xyz, r24.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r24.xyz, r24.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r25.yzw, r10.xxyz, r19.xxxx - mad r24.xyz, r24.xyzx, r20.xxxx, r25.yzwy - mul r25.yzw, r20.yyyy, cb3[r18.z + 6].xxyz - mul r25.xyz, r25.xxxx, r25.yzwy - mul r25.xyz, r18.xxxx, r25.xyzx - mul r24.xyz, r24.xyzx, r25.xyzx - else - mov r24.xyz, l(0,0,0,0) - endif - else - if_z r18.y - mad r18.x, cb3[r19.z + 6].y, l(0.500000), l(0.500000) - add r25.x, r18.x, -|cb3[r19.z + 6].x| - add r25.y, -r25.x, cb3[r19.z + 6].y - add r18.x, -|r25.x|, l(1.000000) - add r18.x, -|r25.y|, r18.x - max r18.x, r18.x, l(0.000488) - ge r18.y, cb3[r19.z + 6].x, l(0.000000) - movc r25.z, r18.y, r18.x, -r18.x - dp3 r18.x, r25.xyzx, r25.xyzx - rsq r18.x, r18.x - mul r25.xyz, r18.xxxx, r25.xyzx - add r26.xyz, -r5.xyzx, cb3[r23.x + 6].xyzx - dp3 r18.x, r26.xyzx, r26.xyzx - rsq r18.y, r18.x - mul r27.xyz, r18.yyyy, r26.xyzx - ftoi r18.y, cb3[r20.w + 6].w - mul r20.xyw, r25.xyxz, cb3[r19.z + 6].zzzz - mad r28.xyz, -r20.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r26.xyzx - mad r20.xyw, r20.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r26.xyxz - ftou r18.z, cb3[r18.z + 6].w - and r18.z, r18.z, l(1) - ieq r19.x, r18.z, l(0) - not r19.x, r19.x - lt r21.w, l(0.000000), cb3[r19.z + 6].z - and r19.x, r19.x, r21.w - dp3 r21.w, r28.xyzx, r28.xyzx - sqrt r21.w, r21.w - dp3 r22.w, r20.xywx, r20.xywx - sqrt r22.w, r22.w - dp3 r20.x, r28.xyzx, r20.xywx - mad r20.x, r21.w, r22.w, r20.x - mad r20.x, r20.x, l(0.500000), l(1.000000) - div r20.x, l(1.000000, 1.000000, 1.000000, 1.000000), r20.x - movc r20.x, r19.x, r20.x, l(1.000000) - lt r20.y, cb3[r23.w + 6].w, l(0.000000) - if_nz r20.y - mul r20.y, cb3[r23.x + 6].w, cb3[r23.x + 6].w - mul r20.y, r18.x, r20.y - mad r20.y, -r20.y, r20.y, l(1.000000) - max r20.y, r20.y, l(0.000000) - add r18.x, r18.x, l(1.000000) - div r18.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.x - and r20.w, r19.x, l(0x3f800000) - add r21.w, -r18.x, r20.x - mad r18.x, r20.w, r21.w, r18.x - mul r20.y, r20.y, r20.y - mul r18.x, r18.x, r20.y - else - mul r28.xyz, r26.xyzx, cb3[r23.x + 6].wwww - dp3 r20.y, r28.xyzx, r28.xyzx - min r20.y, r20.y, l(1.000000) - add r20.y, -r20.y, l(1.000000) - log r20.y, r20.y - mul r20.y, r20.y, cb3[r23.w + 6].w - exp r20.y, r20.y - mul r18.x, r20.y, r20.x - endif - dp3 r20.x, r27.xyzx, -r25.xyzx - add r20.x, r20.x, -cb3[r19.z + 6].z - mul_sat r20.x, r20.x, cb3[r19.z + 6].w - mul r20.x, r20.x, r20.x - movc r20.x, r18.z, l(1.000000), r20.x - mul r18.x, r18.x, r20.x - not r19.x, r19.x - ige r20.x, r18.y, l(0) - and r19.x, r19.x, r20.x - if_nz r19.x - if_z r18.z - ishl r19.x, r18.y, l(2) - mul r20.xyw, r5.yyyy, cb6[r19.x + 33].xyxw - mad r20.xyw, cb6[r19.x + 32].xyxw, r5.xxxx, r20.xyxw - mad r20.xyw, cb6[r19.x + 34].xyxw, r5.zzzz, r20.xyxw - add r20.xyw, r20.xyxw, cb6[r19.x + 35].xyxw - div_sat r20.xy, r20.xyxx, r20.wwww - mad r20.xy, r20.xyxx, cb6[r18.y + 0].zwzz, cb6[r18.y + 0].xyxx - else - ishl r19.x, r18.y, l(2) - dp3 r25.x, -r26.xyzx, cb6[r19.x + 32].xyzx - dp3 r25.y, -r26.xyzx, cb6[r19.x + 33].xyzx - dp3 r25.z, -r26.xyzx, cb6[r19.x + 34].xyzx - lt r19.x, |r25.x|, |r25.y| - and r19.x, r19.x, l(1) - dp2 r20.w, |r25.xyxx|, icb[r19.x + 0].xyxx - lt r20.w, r20.w, |r25.z| - movc r19.x, r20.w, l(2), r19.x - dp3 r20.w, r25.xyzx, icb[r19.x + 0].xyzx - lt r20.w, r20.w, l(0.000000) - bfi r19.x, l(31), l(1), r19.x, r20.w - ushr r20.w, r19.x, l(1) - dp3 r20.w, r25.xyzx, icb[r20.w + 0].xyzx - div r21.w, l(0.000244), cb6[r18.y + 0].w - add r21.w, -r21.w, l(0.500000) - utof r22.w, r19.x - ult r23.z, r19.x, l(2) - and r23.z, r23.z, l(2) - dp2 r23.z, r25.xzxx, icb[r23.z + 0].xzxx - mul r23.z, r23.z, icb[r19.x + 4].z - div r23.z, r23.z, |r20.w| - mad r22.w, r23.z, r21.w, r22.w - add r22.w, r22.w, l(0.500000) - mul_sat r26.x, r22.w, l(0.166667) - iadd r22.w, l(-1), icb[r19.x + 4].y - dp2 r22.w, r25.yzyy, icb[r22.w + 0].xyxx - mul r19.x, r22.w, icb[r19.x + 4].w - div r19.x, r19.x, |r20.w| - mad_sat r26.y, -r19.x, r21.w, l(0.500000) - mad r20.xy, r26.xyxx, cb6[r18.y + 0].zwzz, cb6[r18.y + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r18.y, r20.xyxx, t15.yxzw, s1, l(0.000000) - mul r18.x, r18.y, r18.x - endif - lt r18.x, l(0.000000), r18.x - if_nz r18.x - if_z r18.z - ftoi r18.x, cb3[r23.y + 6].x - else - add r20.xyw, r5.xyxz, -cb3[r23.x + 6].xyxz - lt r23.xzw, |r20.yyww|, |r20.xxxy| - and r18.y, r23.z, r23.x - lt r20.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyxw - ushr r18.z, cb3[r19.z + 6].w, l(24) - ubfe r23.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), cb3[r19.z + 6].wwww - movc r18.z, r20.x, r18.z, r23.x - and r19.x, l(255), cb3[r19.z + 6].w - movc r19.x, r20.y, r23.z, r19.x - ubfe r19.z, l(8), l(8), cb3[r23.y + 6].x - and r20.x, l(255), cb3[r23.y + 6].x - movc r19.z, r20.w, r19.z, r20.x - movc r19.x, r23.w, r19.x, r19.z - movc r18.y, r18.y, r18.z, r19.x - ilt r18.z, r18.y, l(80) - movc r18.x, r18.z, r18.y, l(-1) - endif - ishl r18.y, r18.x, l(2) - mad r20.xyw, r27.xyxz, cb4[r18.x + 288].xxxx, r5.xyxz - mul r18.z, l(5.000000), cb4[r18.x + 288].y - mad r20.xyw, r2.xyxw, r18.zzzz, r20.xyxw - mul r23.xyzw, r20.yyyy, cb4[r18.y + 65].xyzw - mad r23.xyzw, cb4[r18.y + 64].xyzw, r20.xxxx, r23.xyzw - mad r23.xyzw, cb4[r18.y + 66].xyzw, r20.wwww, r23.xyzw - add r23.xyzw, r23.xyzw, cb4[r18.y + 67].xyzw - div r20.xyw, r23.xyxz, r23.wwww - ge r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xywx - ge r25.xyz, r20.xywx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r18.yz, -cb4[r18.x + 344].xxyx, cb4[r18.x + 344].zzwz - mad r18.yz, r20.xxyx, r18.yyzy, cb4[r18.x + 344].xxyx - mad r19.xz, r18.yyzy, cb4[400].zzwz, l(0.500000, 0.000000, 0.500000, 0.000000) - round_ni r19.xz, r19.xxzx - mad r18.yz, r18.yyzy, cb4[400].zzwz, -r19.xxzx - add r26.xyzw, r18.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r27.xyzw, r26.xxzz, r26.xxzz - add r20.xy, -r18.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) - min r26.xz, r18.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r28.xy, r18.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r29.xy, r20.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r28.xy, -r28.xyxx, r28.xyxx, r26.ywyy - add r28.xy, r28.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r28.xy, r28.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r27.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r18.yz, r27.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r18.yyzy - mul r30.xy, r18.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r18.yz, -r26.xxzx, r26.xxzx, r20.xxyx - add r18.yz, r18.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r31.xy, r18.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r18.yz, r26.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r30.z, r31.x - mov r30.w, r18.y - mov r29.z, r28.x - mov r29.w, r27.x - add r26.xyzw, r29.zwxz, r30.zwxz - mov r31.z, r30.y - mov r31.w, r18.z - mov r28.z, r29.y - mov r28.w, r27.z - add r27.xyz, r28.zywz, r31.zywz - div r29.xyz, r29.xzwx, r26.zwyz - add r29.xyz, r29.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r29.xyz, r29.yxzy, cb4[400].xxxx - div r28.xyz, r28.zywz, r27.xyzx - add r28.xyz, r28.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r28.xyz, r28.xyzx, cb4[400].yyyy - mov r29.w, r28.x - mad r30.xyzw, r19.xzxz, cb4[400].xyxy, r29.ywxw - mad r18.yz, r19.xxzx, cb4[400].xxyx, r29.zzwz - mov r28.w, r29.y - mov r29.yw, r28.yyyz - mad r31.xyzw, r19.xzxz, cb4[400].xyxy, r29.xyzy - mad r28.xyzw, r19.xzxz, cb4[400].xyxy, r28.wywz - mad r29.xyzw, r19.xzxz, cb4[400].xyxy, r29.xwzw - mul r32.xyzw, r26.zwyz, r27.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r30.xyxx, t6.xxxx, s4, r20.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.z, r30.zwzz, t6.xxxx, s4, r20.w - mul r19.z, r19.z, r32.y - mad r19.x, r32.x, r19.x, r19.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.y, r18.yzyy, t6.xxxx, s4, r20.w - mad r18.y, r32.z, r18.y, r19.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.xyxx, t6.xxxx, s4, r20.w - mad r18.y, r32.w, r18.z, r18.y - mul r30.xyzw, r26.xyzw, r27.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r31.xyxx, t6.xxxx, s4, r20.w - mad r18.y, r30.x, r18.z, r18.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r31.zwzz, t6.xxxx, s4, r20.w - mad r18.y, r30.y, r18.z, r18.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r28.zwzz, t6.xxxx, s4, r20.w - mad r18.y, r30.z, r18.z, r18.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r29.xyxx, t6.xxxx, s4, r20.w - mad r18.y, r30.w, r18.z, r18.y - ige r18.z, r18.x, l(0) - or r23.xyz, r23.xyzx, r25.xyzx - or r19.x, r23.y, r23.x - or r19.x, r23.z, r19.x - and r19.z, r20.w, l(0x7fffffff) - ult r19.z, l(0x7f800000), r19.z - or r19.x, r19.z, r19.x - mul r19.z, r26.y, r27.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r20.x, r29.zwzz, t6.xxxx, s4, r20.w - mad r18.y, r19.z, r20.x, r18.y - add r18.y, r18.y, l(-1.000000) - mad r18.x, cb4[r18.x + 288].w, r18.y, l(1.000000) - movc r18.x, r19.x, l(1.000000), r18.x - movc r18.x, r18.z, r18.x, l(1.000000) - else - mov r18.x, l(1.000000) - endif - else - mov r18.x, l(1.000000) - endif - mul r16.w, r16.w, r18.x - mov r24.xyz, l(0,0,0,0) - endif - add r22.xyz, r22.xyzx, r24.xyzx - mov r17.w, r19.w - endloop - mov r12.y, r16.w - add r21.xyz, r21.xyzx, r22.xyzx - iadd r12.z, r12.z, l(1) -endloop -mad r8.xyz, r21.xyzx, r12.yyyy, r14.xyzx -ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -if_nz r3.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - dp3 r2.z, r2.xywx, r9.xyzx - max r2.z, r2.z, l(0.000000) - add r2.z, r0.z, r2.z - mad r3.y, r12.w, l(-16.000000), l(-1.000000) - exp r3.y, r3.y - log r2.z, |r2.z| - mul r2.z, r2.z, r3.y - exp r2.z, r2.z - add r2.z, r0.z, r2.z - add r2.z, r2.z, l(-1.000000) - mov_sat r12.xyz, r2.zzzz - mad r14.xyz, r10.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r10.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r10.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - max r14.xyz, r0.zzzz, r14.xyzx -else - mov r12.xyz, r1.yyyy - mov r14.xyz, r1.yyyy -endif -mad r16.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[216].x -mad r17.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx -dp2 r0.z, r17.xyxx, l(0.067111, 0.005837, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r16.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r16.xyzx -mad r17.xyz, cb0[6].xzyx, -cb0[216].wwww, cb0[214].xzyx -add r17.xyz, r16.xzyx, -r17.xyzx -max r0.z, |r17.y|, |r17.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.y, |r17.z|, l(-208.000000) -mul_sat r1.y, r1.y, l(0.031250) -max r0.z, r0.z, r1.y -ne r1.y, l(0.000000), cb0[214].w -lt r2.z, r0.z, l(1.000000) -and r1.y, r1.y, r2.z -if_nz r1.y - mad r17.xyz, cb0[6].xzyx, -cb0[216].yyyy, cb0[214].xzyx - add r17.xyz, r16.xzyx, -r17.xyzx - max r1.y, |r17.y|, |r17.x| - add r1.y, r1.y, l(-29.000000) - mul_sat r1.y, r1.y, l(0.500000) - add r2.z, |r17.z|, l(-13.000000) - mul_sat r2.z, r2.z, l(0.500000) - max r1.y, r1.y, r2.z - lt r2.z, r1.y, l(1.000000) - if_nz r2.z - mad r17.xyz, r16.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r17.xyzx, cb0[215].xyzx - round_ni r18.xyz, r18.xyzx - mad r17.xyz, r17.xyzx, cb0[215].xyzx, -r18.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t19.yzwx, s2, l(0.000000) - add r2.z, -r1.y, l(1.000000) - mul r3.y, l(0.500000), cb0[215].y - mad r9.w, -cb0[215].y, l(0.500000), l(1.000000) - max r3.y, r3.y, r17.y - min r3.y, r9.w, r3.y - mul r17.w, r3.y, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t20.xyzw, s1, l(0.000000) - mad r3.y, r19.w, r2.z, r0.z - add r20.xyz, r17.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t20.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r18.yyyy, r20.xyzx - mov r20.w, r18.y - mul r20.xyzw, r2.zzzz, r20.xyzw - add r17.xyz, r17.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t20.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r18.xxxx, r17.xyzx - mov r17.w, r18.x - mul r17.xyzw, r2.zzzz, r17.xyzw - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r19.xyzx - mul r18.xyzw, r2.zzzz, r18.xyzw - else - mov r20.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r3.y, r0.z - endif - mad r19.xyz, cb0[6].xzyx, -cb0[216].zzzz, cb0[214].xzyx - add r19.xyz, r16.xzyx, -r19.xyzx - max r2.z, |r19.y|, |r19.x| - add r2.z, r2.z, l(-116.000000) - mul_sat r2.z, r2.z, l(0.125000) - add r9.w, |r19.z|, l(-52.000000) - mul_sat r9.w, r9.w, l(0.125000) - max r2.z, r2.z, r9.w - lt r9.w, r2.z, l(1.000000) - if_nz r9.w - mad r19.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r21.xyz, r19.xyzx, cb0[215].xyzx - round_ni r21.xyz, r21.xyzx - mad r19.xyz, r19.xyzx, cb0[215].xyzx, -r21.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r19.xyzx, t21.yzwx, s2, l(0.000000) - add r9.w, -r2.z, l(1.000000) - mul r1.y, r1.y, r9.w - mul r9.w, l(0.500000), cb0[215].y - mad r10.w, -cb0[215].y, l(0.500000), l(1.000000) - max r9.w, r9.w, r19.y - min r9.w, r10.w, r9.w - mul r19.w, r9.w, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyzw, r19.xwzx, t22.xyzw, s1, l(0.000000) - mad r3.y, r22.w, r1.y, r3.y - add r23.xyz, r19.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r23.xyz, r23.xyzx, t22.xyzw, s1, l(0.000000) - mad r23.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r23.xyz, r21.yyyy, r23.xyzx - mov r23.w, r21.y - mad r20.xyzw, r23.xyzw, r1.yyyy, r20.xyzw - add r19.xyz, r19.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t22.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r21.xxxx, r19.xyzx - mov r19.w, r21.x - mad r17.xyzw, r19.xyzw, r1.yyyy, r17.xyzw - mad r19.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r19.xyzx - mad r18.xyzw, r21.xyzw, r1.yyyy, r18.xyzw - endif - lt r1.y, l(0.000000), r2.z - if_nz r1.y - mad r16.xyz, r16.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r19.xyz, r16.xyzx, cb0[215].xyzx - mul r21.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[215].xyzx - round_ni r19.xyz, r19.xyzx - mad r16.xyz, r16.xyzx, cb0[215].xyzx, -r19.xyzx - mad r19.xyz, -cb0[215].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r16.xyz, r21.xyzx, r16.xyzx - min r16.xyz, r19.xyzx, r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r16.xyzx, t23.yzwx, s2, l(0.000000) - add r1.y, -r0.z, l(1.000000) - mul r1.y, r1.y, r2.z - max r2.z, r21.y, r16.y - min r2.z, r19.y, r2.z - mul r16.w, r2.z, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t24.xyzw, s1, l(0.000000) - add r21.xyz, r16.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t24.xyzw, s1, l(0.000000) - mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r22.yyyy, r21.xyzx - mov r21.w, r22.y - mad r20.xyzw, r21.xyzw, r1.yyyy, r20.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t24.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r22.xxxx, r16.xyzx - mov r16.w, r22.x - mad r17.xyzw, r16.xyzw, r1.yyyy, r17.xyzw - mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r22.wwww, r16.xyzx - mad r18.xyzw, r22.xyzw, r1.yyyy, r18.xyzw - mad r3.y, r19.w, r1.y, r3.y - endif - mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) - add r16.x, -r0.z, r1.y - add r0.z, r0.z, r1.y - mul r16.y, r0.z, l(0.500000) -else - mov r20.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r16.xy, l(0,1.000000,0,0) -endif -mul r19.xyzw, r16.yxyy, cb0[217].ywzx -mad r19.y, r19.y, l(0.500000), r19.x -mul r16.zw, r16.yyyx, cb0[217].wwwy -mad r19.x, r16.w, l(0.375000), r16.z -add r18.xyzw, r18.xyzw, r19.wyzx -mul r19.xyzw, r16.yxyy, cb0[218].ywzx -mad r19.y, r19.y, l(0.500000), r19.x -mul r16.zw, r16.yyyx, cb0[218].wwwy -mad r19.x, r16.w, l(0.375000), r16.z -add r17.xyzw, r17.xyzw, r19.wyzx -mul r19.xyzw, r16.yxyy, cb0[219].ywzx -mad r19.y, r19.y, l(0.500000), r19.x -mul r16.xy, r16.yxyy, cb0[219].wyww -mad r19.x, r16.y, l(0.375000), r16.x -add r16.xyzw, r19.wyzx, r20.xyzw -ge r19.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r19.y, r19.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r19.xyzw, r4.zwzz, t18.xyzw, s1, l(0.000000) - lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r19.xyzw| - or r4.zw, r20.zzzw, r20.xxxy - or r0.z, r4.w, r4.z - if_nz r0.z - dp3 r0.z, r19.yzwy, r19.yzwy - sqrt r0.z, r0.z - mov r4.z, l(1.000000) - mov r4.w, r0.z - mov r1.y, l(0) - loop - ge r2.z, l(4.600000), r4.w - breakc_nz r2.z - iadd r2.z, r1.y, l(1) - mul r20.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - mov r4.zw, r20.xxxy - mov r1.y, r2.z - continue - endloop - mul r19.xyzw, r4.zzzz, r19.xyzw - dp3 r0.z, r19.yzwy, r19.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb7[3].x, cb7[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r20.x, r0.z, l(0.003906) - mov r20.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r20.xyxx, t17.zwxy, s1, l(0.000000) - mad r4.zw, r4.zzzw, cb7[2].xxxy, cb7[2].zzzw - mul r20.x, r4.z, l(3.544908) - mul r20.yzw, r4.wwww, r19.yyzw - mul r0.z, r19.x, l(0.406977) - exp r0.z, r0.z - mul r19.xyzw, r0.zzzz, r20.xyzw - mov r20.xyzw, r19.xyzw - mov r0.z, l(0) - loop - uge r2.z, r0.z, r1.y - breakc_nz r2.z - mul r21.xyzw, r20.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - dp4 r2.z, r21.xyzw, r20.xyzw - dp2 r3.y, r21.yxyy, r20.xyxx - dp2 r4.z, r21.zxzz, r20.xzxx - dp2 r4.w, r21.wxww, r20.xwxx - iadd r9.w, r0.z, l(1) - mov r20.x, r2.z - mov r20.y, r3.y - mov r20.zw, r4.zzzw - mov r0.z, r9.w - continue - endloop - mul r19.xyzw, r20.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - mul r20.xyzw, r18.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r19.xyzw, r20.xyzw - dp2 r1.y, r19.yxyy, r20.xyxx - dp2 r2.z, r19.zxzz, r20.xzxx - dp2 r3.y, r19.wxww, r20.xwxx - mul r20.xyzw, r17.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r4.z, r19.xyzw, r20.xyzw - dp2 r4.w, r19.yxyy, r20.xyxx - dp2 r9.w, r19.zxzz, r20.xzxx - dp2 r10.w, r19.wxww, r20.xwxx - mul r20.xyzw, r16.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r11.x, r19.xyzw, r20.xyzw - dp2 r14.w, r19.yxyy, r20.xyxx - dp2 r15.w, r19.zxzz, r20.xzxx - dp2 r19.x, r19.wxww, r20.xwxx - mul r18.w, r0.z, l(0.886227) - mul r18.x, r3.y, l(-1.023327) - mul r18.y, r1.y, l(-1.023327) - mul r18.z, r2.z, l(1.023327) - mul r17.x, r10.w, l(-1.023327) - mul r17.yw, r4.wwwz, l(0.000000, -1.023327, 0.000000, 0.886227) - mul r17.z, r9.w, l(1.023327) - mul r16.w, r11.x, l(0.886227) - mul r16.x, r19.x, l(-1.023327) - mul r16.y, r14.w, l(-1.023327) - mul r16.z, r15.w, l(1.023327) - endif -endif -dp3 r0.z, r18.xyzx, r2.xywx -add r0.z, r18.w, r0.z -max r18.x, r0.z, l(0.000000) -dp3 r0.z, r17.xyzx, r2.xywx -add r0.z, r17.w, r0.z -max r18.y, r0.z, l(0.000000) -dp3 r0.z, r16.xyzx, r2.xywx -add r0.z, r16.w, r0.z -max r18.z, r0.z, l(0.000000) -add r0.z, l(-1.000000), cb0[113].x -max r1.y, r12.w, l(0.001000) -log r1.y, r1.y -mad r1.y, -r1.y, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.y -mul r2.xy, r4.xyxx, cb1[0].wwww -round_ni r2.xy, r2.xyxx -add r1.y, |r3.w|, -cb1[2].y -round_ni r1.y, r1.y -add r2.z, l(-1.000000), cb1[1].x -max r2.w, r1.y, l(0.000000) -min r2.z, r2.z, r2.w -ge r1.y, r2.z, r1.y -mad r2.x, r2.y, cb1[0].x, r2.x -ftoi r2.xy, r2.xzxx -iadd r2.xy, r2.xyxx, cb0[110].zwzz -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.x, r2.x, l(0), t0.xxxx -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.y, r2.y, l(0), t0.xxxx -and r2.x, r2.y, r2.x -and r1.y, r1.y, r2.x -mul r2.xyz, r18.xyzx, cb0[111].xxxx -dp3 r2.x, r2.xyzx, l(0.212673, 0.715152, 0.072175, 0.000000) -mov r42.x, r2.x // Store ambient luminance for cubemap modulation -mov r5.w, l(1.000000) -mov r13.w, l(1.000000) -mov r2.yzw, l(0,0,0,0) -mov r3.y, l(1.000000) -mov r4.z, r1.y -mov r4.w, l(0) -loop - lt r9.w, l(0.010000), r3.y - ine r10.w, r4.z, l(0) - and r10.w, r9.w, r10.w - if_nz r10.w - firstbit_lo r10.w, r4.z - ishl r11.x, l(1), r10.w - xor r4.z, r4.z, r11.x - ishl r10.w, r10.w, l(3) - dp4 r16.x, cb1[r10.w + 6].xyzw, r5.xyzw - dp4 r16.y, cb1[r10.w + 7].xyzw, r5.xyzw - dp4 r16.z, cb1[r10.w + 8].xyzw, r5.xyzw - ge r17.xyz, cb1[r10.w + 5].xyzx, |r16.xyzx| - and r11.x, r17.y, r17.x - and r11.x, r17.z, r11.x - if_nz r11.x - mul r11.x, l(0.100000), cb1[r10.w + 5].x - mul r17.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r17.xy, r17.xyxx, r17.xyxx - add r19.xyz, -|r16.xyzx|, cb1[r10.w + 5].xyzx - mul r19.xyz, r19.xyzx, cb1[r10.w + 9].xyzx - eq r12.w, l(1.000000), cb1[r10.w + 10].x - if_nz r12.w - dp3 r20.x, cb1[r10.w + 6].xyzx, r15.xyzx - dp3 r20.y, cb1[r10.w + 7].xyzx, r15.xyzx - dp3 r20.z, cb1[r10.w + 8].xyzx, r15.xyzx - add r21.xyz, -r16.xyzx, cb1[r10.w + 5].xyzx - div r21.xyz, r21.xyzx, r20.xyzx - add r22.xyz, -r16.xyzx, -cb1[r10.w + 5].xyzx - div r22.xyz, r22.xyzx, r20.xyzx - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx - movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx - min r12.w, r21.y, r21.x - min r12.w, r21.z, r12.w - mad r16.xyz, r20.xyzx, r12.wwww, r16.xyzx - else - mov r16.xyz, r15.xyzx - endif - dp3 r12.w, r16.xyzx, r16.xyzx - rsq r12.w, r12.w - mul r16.xyz, r12.wwww, r16.xyzx - lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r20.xyz, -r20.xyzx, r21.xyzx - itof r20.xyz, r20.xyzx - dp3 r12.w, r16.xyzx, r20.xyzx - div r16.xyz, r16.xyzx, r12.wwww - lt r12.w, r16.z, l(0.000000) - add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r16.zw, r16.zzzw, r20.xxxy - movc r16.xy, r12.wwww, r16.zwzz, r16.xyxx - dp4 r12.w, cb1[r10.w + 4].xyzw, r13.xyzw - max r12.w, r12.w, l(0.000000) - max r12.w, r12.w, l(0.000100) - min r14.w, r19.z, r19.y - min r14.w, r14.w, r19.x - add r15.w, r17.y, r17.x - mad r15.w, r17.z, r17.z, r15.w - mad r11.x, r11.x, r11.x, -r15.w - mul r11.x, r11.x, cb1[r10.w + 9].x - mul r11.x, r11.x, cb1[r10.w + 9].x - add r15.w, l(1.000000), -cb1[r10.w + 10].y - mul r11.x, r11.x, r15.w - mul r11.x, r11.x, l(100.000000) - mad_sat r11.x, r14.w, cb1[r10.w + 10].y, r11.x - mul r14.w, r11.x, cb1[r10.w + 10].w - mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww - mov r16.z, cb1[r10.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z - mul r16.xyz, r16.xyzx, cb1[r10.w + 9].wwww - div r15.w, r2.x, r12.w - min r15.w, |r15.w|, l(1.000000) - mad r15.w, r15.w, l(2.000000), r2.x - add r12.w, r12.w, l(2.000000) - div r12.w, r15.w, r12.w - add r12.w, r12.w, l(-1.000000) - mad r12.w, r12.w, cb0[112].w, l(1.000000) - mul r16.xyz, r12.wwww, r16.xyzx - mul r16.xyz, r14.wwww, r16.xyzx - mad r2.yzw, r16.xxyz, r3.yyyy, r2.yyzw - mad r10.w, -r11.x, cb1[r10.w + 10].w, l(1.000000) - mul r3.y, r3.y, r10.w - endif - mov r4.w, l(-1) - continue - else - mov r4.w, r9.w - break - endif - mov r4.w, r9.w -endloop -if_nz r4.w - dp3 r1.y, r15.xyzx, r15.xyzx - rsq r1.y, r1.y - mul r15.xyz, r1.yyyy, r15.xyzx - lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx - lt r17.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r16.xyz, -r16.xyzx, r17.xyzx - itof r16.xyz, r16.xyzx - dp3 r1.y, r15.xyzx, r16.xyzx - div r15.xyz, r15.xyzx, r1.yyyy - lt r1.y, r15.z, l(0.000000) - add r4.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r4.zw, r4.zzzw, r16.xxxy - movc r4.zw, r1.yyyy, r4.zzzw, r15.xxxy - mov r13.w, l(1.000000) - dp4 r1.y, cb1[3].xyzw, r13.xyzw - max r1.y, r1.y, l(0.000000) - max r1.y, r1.y, l(0.000100) - mad r4.zw, r4.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r13.xy, r4.zwzz, cb1[1].wwww, cb1[2].wwww - mov r13.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r13.xyz, r13.xyzx, t5.xyzw, s3, r0.z - div r0.z, r2.x, r1.y - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r2.x - add r1.y, r1.y, l(2.000000) - div r0.z, r0.z, r1.y - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r13.xyz, r0.zzzz, r13.xyzx - mad r2.yzw, r13.xxyz, r3.yyyy, r2.yyzw -endif -mul r2.xyz, r2.yzwy, cb0[112].zzzz -mul r2.xyz, r2.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].y) -if_nz cb13[13].y - max r42.x, r42.x, l(0.000000) - min r42.x, r42.x, l(1.000000) - mad r42.x, r42.x, l(0.750000), l(0.250000) - mul r2.xyz, r2.xyzx, r42.xxxx -endif -if_nz r3.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r13.xyz, v1.xyxx, t2.xyzw, s1, cb0[108].x - add r1.y, -r0.z, l(1.000000) - mul r15.xyz, r1.yyyy, r2.xyzx - mad r2.xyz, r13.xyzx, r0.zzzz, r15.xyzx -endif -mul r10.xyz, r10.xyzx, r18.xyzx -mul r10.xyz, r10.xyzx, cb0[111].xxxx -add r0.z, -r3.x, l(1.000000) -div r0.z, r0.z, r3.x -mul r1.xyz, r0.zzzz, r1.xzwx -mad r1.xyz, r1.xyzx, r11.yzwy, r11.yzwy -mul r1.xyz, r1.xyzx, r2.xyzx -mul r1.xyz, r12.xyzx, r1.xyzx -mad r1.xyz, r10.xyzx, r14.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r8.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r8.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r5.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xyz, r0.zzzz, cb0[155].xyzx -mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r2.xyz, r2.xyzx -dp3 r0.z, -r9.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.w, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.w -lt r2.w, l(0.000000), cb0[165].z -if_nz r2.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r9.xyzx, -r7.xyzx - add r2.w, r5.y, -cb0[44].y - lt r3.z, l(0.000000), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.z - mul r0.x, r0.x, cb0[165].w - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w - mul r4.z, r0.x, r3.z - mad r4.w, r4.z, r2.w, cb0[44].y - mad r2.w, -r4.z, r2.w, r2.w - mad r0.x, -r0.x, r3.z, l(1.000000) - mul r3.z, r8.w, r0.x - mul r4.z, r2.w, cb0[159].z - max r4.z, r4.z, l(-127.000000) - mul r2.w, r2.w, cb0[162].x - max r2.w, r2.w, l(-127.000000) - add r5.w, r4.w, -cb0[159].x - mul r5.w, r5.w, cb0[159].z - max r5.w, r5.w, l(-127.000000) - exp r5.w, -r5.w - mul r5.w, r5.w, cb0[159].y - lt r7.x, l(0.000000), |r4.z| - exp r7.y, -r4.z - add r7.y, -r7.y, l(1.000000) - div r7.y, r7.y, r4.z - mad r4.z, -r4.z, l(0.240227), l(0.693147) - movc r4.z, r7.x, r7.y, r4.z - add r4.w, r4.w, -cb0[162].z - mul r4.w, r4.w, cb0[162].x - max r4.w, r4.w, l(-127.000000) - exp r4.w, -r4.w - mul r4.w, r4.w, cb0[162].y - lt r7.x, l(0.000000), |r2.w| - exp r7.y, -r2.w - add r7.y, -r7.y, l(1.000000) - div r7.y, r7.y, r2.w - mad r2.w, -r2.w, l(0.240227), l(0.693147) - movc r2.w, r7.x, r7.y, r2.w - mul r2.w, r2.w, r4.w - mad r2.w, r5.w, r4.z, r2.w - mad_sat r4.zw, r8.wwww, cb0[160].wwwy, cb0[160].zzzx - mul r3.z, r3.z, r2.w - exp r3.z, -r3.z - min r3.z, r3.z, l(1.000000) - max r3.z, r3.z, cb0[161].w - add r3.z, r4.w, r3.z - add r3.z, r4.z, r3.z - min r3.z, r3.z, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.000031, 0.000000, 0.000031), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[169].wwww, r4.xxxy - mul r7.xy, r0.ywyy, cb0[167].xyxx - mad r0.y, |r3.w|, cb0[166].x, cb0[166].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[166].z - div r7.z, r0.y, cb0[165].z - sample_l_indexable(texture3d)(float,float,float,float) r10.xyzw, r7.xyzx, t16.xyzw, s1, l(0.000000) - add r0.y, |r3.w|, -cb0[168].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r10.xyzw, r10.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r10.xyzw, r0.yyyy, r10.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r3.z, l(1.000000) - dp3_sat r0.w, r9.xyzx, cb0[163].xyzx - log r0.w, r0.w - mul r0.w, r0.w, cb0[164].w - exp r0.w, r0.w - mul r3.xyw, r0.wwww, cb0[164].xyxz - mad r0.x, r0.x, r8.w, -cb0[163].w - max r0.x, r0.x, l(0.000000) - mul r0.x, r0.x, r2.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - add r0.x, -r0.x, l(1.000000) - mul r3.xyw, r0.xxxx, r3.xyxw - add r0.x, -r4.z, l(1.000000) - mul r3.xyw, r0.xxxx, r3.xyxw - mad r0.xyw, cb0[161].xyxz, r0.yyyy, r3.xyxw - mad r0.xyw, r0.xyxw, r10.wwww, r10.xyxz - mul r2.w, r3.z, r10.w -else - add r3.x, r5.y, -cb0[44].y - mul r3.y, r3.x, cb0[159].z - mul r3.x, r3.x, cb0[162].x - add r3.z, cb0[44].y, -cb0[159].x - mul r3.z, r3.z, cb0[159].z - max r3.xyz, r3.xyzx, l(-127.000000, -127.000000, -127.000000, 0.000000) - exp r3.z, -r3.z - mul r3.z, r3.z, cb0[159].y - lt r3.w, l(0.000000), |r3.y| - exp r4.x, -r3.y - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r3.y - mad r3.y, -r3.y, l(0.240227), l(0.693147) - movc r3.y, r3.w, r4.x, r3.y - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(0.000000), |r3.x| - exp r4.y, -r3.x - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r3.x - mad r3.x, -r3.x, l(0.240227), l(0.693147) - movc r3.x, r4.x, r4.y, r3.x - mul r3.x, r3.x, r3.w - mad r3.x, r3.z, r3.y, r3.x - mad_sat r3.yz, r8.wwww, cb0[160].wwyw, cb0[160].zzxz - mul r3.w, r8.w, r3.x - exp r3.w, -r3.w - min r3.w, r3.w, l(1.000000) - max r3.w, r3.w, cb0[161].w - add r3.z, r3.z, r3.w - add r3.z, r3.y, r3.z - min r2.w, r3.z, l(1.000000) - add r3.z, -r2.w, l(1.000000) - dp3_sat r3.w, r9.xyzx, cb0[163].xyzx - log r3.w, r3.w - mul r3.w, r3.w, cb0[164].w - exp r3.w, r3.w - mul r4.xyz, r3.wwww, cb0[164].xyzx - mad r3.w, r6.x, r7.w, -cb0[163].w - max r3.w, r3.w, l(0.000000) - mul r3.x, r3.w, r3.x - exp r3.x, -r3.x - min r3.x, r3.x, l(1.000000) - add r3.x, -r3.x, l(1.000000) - mul r4.xyz, r3.xxxx, r4.xyzx - add r3.x, -r3.y, l(1.000000) - mul r3.xyw, r3.xxxx, r4.xyxz - mad r0.xyw, cb0[161].xyxz, r3.zzzz, r3.xyxw -endif -mul r3.xyz, r2.wwww, r2.xyzx -mad r0.z, r0.z, r0.z, l(1.000000) -mul r0.z, r0.z, l(0.059683) -mad r4.xyz, cb0[156].xyzx, r0.zzzz, cb0[158].xyzx -mad r0.z, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r0.z, r0.z, r1.w -mad_sat r4.xyz, cb0[157].xyzx, r0.zzzz, r4.xyzx -mul r4.xyz, r4.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r2.xyz, r2.xyzx, r4.xyzx -mad r0.xyz, r2.xyzx, r2.wwww, r0.xywx -lt r41.x, l(0.500000), cb13[12].y -if_nz r41.x - mul r39.xyz, r3.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r39.xyz, r39.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r39.xyz, r39.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r3.xyzx - mul r40.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - mad r0.xyz, r1.xyzx, r39.xyzx, r40.xyzx -else - mad r0.xyz, r1.xyzx, r3.xyzx, r0.xyzx -endif -dp3 r0.w, r3.xyzx, l(0.333333, 0.333333, 0.333333, 0.000000) -dp3 r1.w, r6.yzwy, r6.yzwy -sqrt r1.w, r1.w -mad_sat r1.w, -r1.w, cb0[171].z, l(1.000000) -mul r2.x, r1.w, cb0[171].x -mad r1.w, -cb0[171].x, r1.w, l(1.000000) -mul r2.yzw, cb0[170].xxyz, cb0[185].wwww -mad r2.yzw, r5.xxyz, cb0[171].yyyy, r2.yyzw -sample_l_indexable(texture3d)(float,float,float,float) r2.y, r2.yzwy, t29.xwyz, s2, l(0.000000) -dp2 r2.x, r2.yyyy, r2.xxxx -add r1.w, r1.w, r2.x -add r2.x, r0.w, l(1.000000) -min r1.w, r1.w, r2.x -add r0.xyz, -r1.xyzx, r0.xyzx -mad o0.xyz, r1.wwww, r0.xyzx, r1.xyzx -mov o0.w, r0.w -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x7C0172E6.ps_5_0.asm b/src/games/endfield/deferred-lighting/0x7C0172E6.ps_5_0.asm deleted file mode 100644 index 98f6a91408..0000000000 --- a/src/games/endfield/deferred-lighting/0x7C0172E6.ps_5_0.asm +++ /dev/null @@ -1,1545 +0,0 @@ -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[239], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[160], dynamicIndexed -dcl_constantbuffer CB6[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture2d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture3d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_resource_texture2d (float,float,float,float) t22 -dcl_resource_texture2d (float,float,float,float) t23 -dcl_resource_texture2d (float,float,float,float) t24 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 42 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t22.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t23.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r3.xyz, r1.wwww, r3.xyzx -utof r2.xy, r0.xyxx -mul r4.xy, v0.xyxx, cb0[82].zwzz -mad r4.zw, r4.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -add r5.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mul r5.xy, r5.xyxx, cb0[82].zwzz -sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xyxx, t1.yzwx, s0, l(0.000000) -mul r5.xyzw, -r4.wwww, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r4.zzzz, r5.xyzw -mad r5.xyzw, cb0[26].xyzw, r1.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r1.w, r5.y, cb0[1].z -mad r1.w, cb0[0].z, r5.x, r1.w -mad r1.w, cb0[2].z, r5.z, r1.w -add r1.w, r1.w, cb0[3].z -eq r2.w, l(0.000000), cb0[86].w -add r6.xyz, -r5.xyzx, cb0[44].xyzx -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r6.xyz, r2.wwww, r6.xyzx, r7.xyzx -dp3 r2.w, r6.xyzx, r6.xyzx -max r4.z, r2.w, l(0.000000) -rsq r4.z, r4.z -mul r8.xyz, r4.zzzz, r6.xyzx -mul r4.w, r2.w, r4.z -lt r6.w, l(0.000488), cb0[238].x -if_nz r6.w - sample_b_indexable(texture2d)(float,float,float,float) r9.xy, v1.xyxx, t21.xyzw, s1, cb0[108].x -else - mov r9.xy, l(1.000000,1.000000,0,0) -endif -min r7.w, r9.y, r9.x -add r1.z, r1.z, l(-0.050000) -mul_sat r1.z, r1.z, l(1.052600) -add r8.w, r9.y, l(-1.000000) -mad r10.x, r1.z, r8.w, l(1.000000) -add r10.y, -r1.z, l(1.000000) -movc r9.yz, r6.wwww, r10.xxyx, l(0,1.000000,1.000000,0) -min r1.z, r2.z, r9.y -add r6.w, -r1.z, r2.z -mad r1.z, r7.w, r6.w, r1.z -add r2.z, -r1.z, r2.z -mad r10.w, r9.x, r2.z, r1.z -ld_indexable(texture2d)(float,float,float,float) r11.xyz, r0.xyzz, t24.xyzw -add r1.z, -r9.z, l(1.000000) -mad r1.z, r7.w, r1.z, r9.z -add r2.z, -r1.z, l(1.000000) -mad r1.z, r9.x, r2.z, r1.z -mul r9.xyz, r1.zzzz, r11.xyzx -mul r12.xyz, r1.xxxx, r9.xyzx -mad r11.xyz, r11.xyzx, r1.zzzz, -r12.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r9.xyz, r9.xyzx, r1.xxxx, r1.zzzz -dp3 r1.x, r3.xyzx, r8.xyzx -max r12.x, r1.x, l(0.000000) -mul r13.y, r10.w, r10.w -mul r14.x, r12.x, r12.x -mul r14.z, r12.x, r14.x -mul r1.x, r13.y, r13.y -mul r13.z, r13.y, r1.x -mov r12.yzw, l(0,0.036546,9.063200,0.990440) -dp2 r15.x, l(3.327070, 1.000000, 0.000000, 0.000000), r12.xyxx -dp2 r15.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r12.xzxx -mov r13.x, l(1.000000) -dp2 r1.z, r15.xyxx, r13.xyxx -mov r14.yw, l(0,9.044010,0,1.000000) -dp3 r15.x, l(3.596850, -1.367720, 1.000000, 0.000000), r14.xzwx -dp3 r15.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r14.xyzx -mov r16.x, l(5.565890) -mov r16.yz, r14.xxzx -dp3 r15.z, l(1.000000, 19.788601, -20.212299, 0.000000), r16.xyzx -dp3 r2.z, r15.xyzx, r13.xyzx -div r1.z, r1.z, r2.z -dp2 r15.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r12.xwxx -mov r14.x, l(1.296780) -mov r14.y, r12.x -dp2 r15.y, l(1.000000, -0.755907, 0.000000, 0.000000), r14.xyxx -dp2 r2.z, r15.xyxx, r13.xyxx -dp3 r15.x, l(2.923380, 59.418800, 1.000000, 0.000000), r14.yzwy -mov r14.xw, l(20.322500,0,0,121.563004) -dp3 r15.y, l(1.000000, -27.030199, 222.591995, 0.000000), r14.xyzx -dp3 r15.z, l(626.130005, 316.627014, 1.000000, 0.000000), r14.yzwy -dp3 r6.w, r15.xyzx, r13.xyzx -div r2.z, r2.z, r6.w -mad r12.yzw, r9.xxyz, r1.zzzz, r2.zzzz -add r1.z, r1.z, r2.z -ld_indexable(texture2d)(float,float,float,float) r13.x, r0.xyzz, t7.xzyw -lt r0.z, l(0.001000), r13.x -if_nz r0.z - dp3 r0.z, -r8.xyzx, r3.xyzx - add r0.z, r0.z, r0.z - mad r14.xyz, r3.xyzx, -r0.zzzz, -r8.xyzx - dp3 r0.z, -cb3[0].xyzx, r14.xyzx - mad r15.xyz, cb3[0].xyzx, r0.zzzz, r14.xyzx - lt r0.z, r0.z, cb3[4].z - dp3 r2.z, r15.xyzx, r15.xyzx - max r2.z, r2.z, l(0.000061) - rsq r2.z, r2.z - mul r15.xyz, r2.zzzz, r15.xyzx - mul r15.xyz, r15.xyzx, cb3[4].yyyy - mad r15.xyz, -cb3[0].xyzx, cb3[4].zzzz, r15.xyzx - dp3 r2.z, r15.xyzx, r15.xyzx - rsq r2.z, r2.z - mul r15.xyz, r2.zzzz, r15.xyzx - movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx - mad r15.xyz, r6.xyzx, r4.zzzz, r14.xyzx - dp3 r0.z, r15.xyzx, r15.xyzx - max r0.z, r0.z, l(0.000061) - rsq r0.z, r0.z - mul r15.xyz, r0.zzzz, r15.xyzx - dp3_sat r10.y, r14.xyzx, r3.xyzx - dp3_sat r0.z, r3.xyzx, r15.xyzx - min r10.z, r12.x, l(1.000000) - mad r2.z, r0.z, r1.x, -r0.z - mad r0.z, r2.z, r0.z, l(1.000000) - dp3_sat r2.z, r8.xyzx, r15.xyzx - add r2.z, -r2.z, l(1.000000) - mul r6.w, r2.z, r2.z - mul r6.w, r6.w, r6.w - mul r7.w, r2.z, r6.w - add r8.w, -r10.w, l(1.000000) - mad r9.w, -r8.w, l(0.383026), l(-0.076195) - mad r9.w, r8.w, r9.w, l(1.049970) - mad r8.w, r8.w, r9.w, l(0.409255) - min r8.w, r8.w, l(0.999000) - add r9.w, -r8.w, l(1.000000) - add r14.xyz, -r9.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r14.xyz, r14.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r9.xyzx - mad r2.z, -r6.w, r2.z, l(1.000000) - mad r15.xyz, r9.xyzx, r2.zzzz, r7.wwww - mul r0.z, r0.z, r0.z - div r0.z, r1.x, r0.z - mad r16.xy, -r10.zyzz, r1.xxxx, r10.zyzz - mad r16.xy, r16.xyxx, r10.zyzz, r1.xxxx - sqrt r16.xy, r16.xyxx - mul r16.xy, r10.yzyy, r16.xyxx - add r1.x, r16.y, r16.x - add r1.x, r1.x, l(0.000100) - div r1.x, l(0.500000), r1.x - mul r0.z, r0.z, r1.x - mul r15.xyz, r0.zzzz, r15.xyzx - min r15.xyz, r15.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r16.xyzw, r10.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r16.xyxx, t9.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r1.x, r16.zwzz, t9.xyzw, s1, l(0.000000) - mul r0.z, r0.z, r1.x - mul r0.z, r8.w, r0.z - div r0.z, r0.z, r9.w - mul r16.xyz, r14.xyzx, r14.xyzx - mul r16.xyz, r0.zzzz, r16.xyzx - mad r14.xyz, -r14.xyzx, r9.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r14.xyz, r16.xyzx, r14.xyzx - add r14.xyz, r14.xyzx, r15.xyzx - mul r14.xyz, r14.xyzx, cb3[4].xxxx - max r14.xyz, r14.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r14.xyz, r14.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r15.xyz, r10.yyyy, r11.xyzx - mad r14.xyz, r14.xyzx, r10.yyyy, r15.xyzx - mul r14.xyz, r14.xyzx, cb3[1].xyzx - mov r13.z, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r15.xyz, r13.xzxx, t8.xyzw, s1, cb0[108].x - add r0.z, -r13.x, l(1.000000) - mad r13.xzw, r14.xxyz, r15.xxyz, -r14.xxyz - mad r13.xzw, r0.zzzz, r13.xxzw, r14.xxyz - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t10.yzxw, s1, l(0.000000) - min r0.z, r0.z, l(1.000000) - mul r13.xzw, r0.zzzz, r13.xxzw -else - mov r13.xzw, l(0,0,0,0) -endif -mul r10.yz, r2.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) -round_ni r10.yz, r10.yyzy -mad r0.z, r10.z, cb2[1].y, r10.y -mul r0.z, r0.z, l(8.000000) -ftoi r0.z, r0.z -mad r1.x, -cb0[85].y, cb2[2].w, |r1.w| -round_ni r1.x, r1.x -add r2.z, l(-1.000000), cb2[1].w -max r6.w, r1.x, l(0.000000) -min r2.z, r2.z, r6.w -mul r6.w, r2.z, l(8.000000) -ftoi r6.w, r6.w -ge r1.x, r2.z, r1.x -iadd r2.z, r6.w, cb0[110].y -dp3 r6.w, -r8.xyzx, r3.xyzx -add r6.w, r6.w, r6.w -mad r14.xyz, r3.xyzx, -r6.wwww, -r8.xyzx -min r10.x, r12.x, l(1.000000) -add r6.w, -r10.w, l(1.000000) -mad r7.w, -r6.w, l(0.383026), l(-0.076195) -mad r7.w, r6.w, r7.w, l(1.049970) -mad r6.w, r6.w, r7.w, l(0.409255) -min r6.w, r6.w, l(0.999000) -add r7.w, -r6.w, l(1.000000) -add r15.xyz, -r9.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r15.xyz, r15.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r9.xyzx -mad r10.yz, r10.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r8.w, r10.yzyy, t9.yzwx, s1, l(0.000000) -mad r16.xyz, -r15.xyzx, r7.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r15.xyz, r15.xyzx, r15.xyzx -mov r17.w, l(1.000000) -mov r18.y, l(1.000000) -mov r19.z, r10.w -mov r20.xyz, l(0,0,0,0) -mov r9.w, l(1.000000) -mov r10.y, l(0) -loop - ilt r10.z, l(7), r10.y - breakc_nz r10.z - iadd r10.z, r0.z, r10.y - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.z, r10.z, l(0), t0.xxxx - iadd r11.w, r2.z, r10.y - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t0.xxxx - and r10.z, r10.z, r11.w - and r10.z, r1.x, r10.z - ishl r11.w, r10.y, l(5) - mov r21.xyz, l(0,0,0,0) - mov r14.w, r9.w - mov r15.w, r10.z - loop - breakc_z r15.w - firstbit_lo r16.w, r15.w - ishl r18.z, l(1), r16.w - xor r18.z, r15.w, r18.z - iadd r16.w, r11.w, r16.w - bfi r22.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r16.wwww, l(1, 3, 5, 6) - bfi r18.w, l(29), l(3), r16.w, l(7) - ftou r19.w, cb3[r22.z + 6].w - ieq r19.w, r19.w, l(1) - if_nz r19.w - add r17.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx - and r23.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.z + 6].xzyx - and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.w + 6].yxzy - ushr r25.xyz, cb3[r22.z + 6].xzyx, l(16, 16, 16, 0) - ushr r26.xyz, cb3[r22.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r23.xyz, r23.xyzx - f16tof32 r24.xyz, r24.xyzx - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyw, r26.yxyz - mov r27.xz, r23.xxzx - mov r27.yw, r25.xxxz - dp4 r19.w, r17.xyzw, r27.xyzw - mov r25.x, r23.y - mov r25.z, r24.y - mov r25.w, r26.x - dp4 r20.w, r17.xyzw, r25.xyzw - mov r26.xz, r24.xxzx - dp4 r17.x, r17.xyzw, r26.xyzw - max r17.y, |r19.w|, |r20.w| - max r17.x, |r17.x|, r17.y - mad r17.y, cb3[r18.w + 6].x, l(0.500000), l(0.500000) - add r17.x, -r17.y, r17.x - mad r17.y, -cb3[r18.w + 6].x, l(0.500000), l(0.500000) - div_sat r17.x, r17.x, r17.y - add r17.x, -r17.x, l(1.000000) - mul r17.x, r17.x, r17.x - else - mov r17.x, l(1.000000) - endif - lt r17.y, l(0.500000), cb3[r22.y + 6].z - lt r17.z, r17.x, l(0.001000) - or r17.z, r17.y, r17.z - if_nz r17.z - mov r15.w, r18.z - continue - endif - ishl r17.z, r16.w, l(3) - bfi r16.w, l(29), l(3), r16.w, l(2) - lt r19.w, cb3[r17.z + 6].w, l(1.500000) - if_nz r19.w - mad r19.w, cb3[r16.w + 6].y, l(0.500000), l(0.500000) - add r23.x, r19.w, -|cb3[r16.w + 6].x| - add r23.y, -r23.x, cb3[r16.w + 6].y - add r19.w, -|r23.x|, l(1.000000) - add r19.w, -|r23.y|, r19.w - max r19.w, r19.w, l(0.000488) - ge r20.w, cb3[r16.w + 6].x, l(0.000000) - movc r23.z, r20.w, r19.w, -r19.w - dp3 r19.w, r23.xyzx, r23.xyzx - rsq r19.w, r19.w - mul r23.xyz, r19.wwww, r23.xyzx - add r24.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx - dp3 r19.w, r24.xyzx, r24.xyzx - rsq r20.w, r19.w - mul r25.xyz, r20.wwww, r24.xyzx - ftoi r21.w, cb3[r18.w + 6].w - mul r26.xyz, r23.xyzx, cb3[r16.w + 6].zzzz - mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - mad r28.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - ftou r22.z, cb3[r17.z + 6].w - and r22.z, r22.z, l(1) - ieq r23.w, r22.z, l(0) - not r23.w, r23.w - lt r24.w, l(0.000000), cb3[r16.w + 6].z - and r23.w, r23.w, r24.w - dp3 r24.w, r27.xyzx, r27.xyzx - sqrt r24.w, r24.w - dp3 r25.w, r28.xyzx, r28.xyzx - sqrt r25.w, r25.w - dp3 r26.w, r3.xyzx, r27.xyzx - div r26.w, r26.w, r24.w - dp3 r27.w, r3.xyzx, r28.xyzx - div r27.w, r27.w, r25.w - add r26.w, r26.w, r27.w - mul_sat r29.x, r26.w, l(0.500000) - dp3 r26.w, r27.xyzx, r28.xyzx - mad r24.w, r24.w, r25.w, r26.w - mad r24.w, r24.w, l(0.500000), l(1.000000) - div r29.y, l(1.000000, 1.000000, 1.000000, 1.000000), r24.w - dp3_sat r18.x, r3.xyzx, r25.xyzx - movc r19.xy, r23.wwww, r29.xyxx, r18.xyxx - lt r18.x, cb3[r22.w + 6].w, l(0.000000) - if_nz r18.x - mul r18.x, cb3[r22.x + 6].w, cb3[r22.x + 6].w - mul r18.x, r18.x, r19.w - mad r18.x, -r18.x, r18.x, l(1.000000) - max r18.x, r18.x, l(0.000000) - add r19.w, r19.w, l(1.000000) - div r19.w, l(1.000000, 1.000000, 1.000000, 1.000000), r19.w - and r24.w, r23.w, l(0x3f800000) - add r25.w, -r19.w, r19.y - mad r19.w, r24.w, r25.w, r19.w - mul r18.x, r18.x, r18.x - mul r18.x, r18.x, r19.w - else - mul r28.xyz, r24.xyzx, cb3[r22.x + 6].wwww - dp3 r19.w, r28.xyzx, r28.xyzx - min r19.w, r19.w, l(1.000000) - add r19.w, -r19.w, l(1.000000) - log r19.w, r19.w - mul r19.w, r19.w, cb3[r22.w + 6].w - exp r19.w, r19.w - mul r18.x, r19.w, r19.y - endif - dp3 r19.y, r25.xyzx, -r23.xyzx - add r19.y, r19.y, -cb3[r16.w + 6].z - mul_sat r19.y, r19.y, cb3[r16.w + 6].w - mul r19.y, r19.y, r19.y - movc r19.y, r22.z, l(1.000000), r19.y - mul r18.x, r18.x, r19.y - not r19.y, r23.w - ige r19.w, r21.w, l(0) - and r19.y, r19.w, r19.y - if_nz r19.y - if_z r22.z - ishl r19.y, r21.w, l(2) - mul r23.xyz, r5.yyyy, cb5[r19.y + 33].xywx - mad r23.xyz, cb5[r19.y + 32].xywx, r5.xxxx, r23.xyzx - mad r23.xyz, cb5[r19.y + 34].xywx, r5.zzzz, r23.xyzx - add r23.xyz, r23.xyzx, cb5[r19.y + 35].xywx - div_sat r19.yw, r23.xxxy, r23.zzzz - mad r19.yw, r19.yyyw, cb5[r21.w + 0].zzzw, cb5[r21.w + 0].xxxy - else - ishl r23.x, r21.w, l(2) - dp3 r28.x, -r24.xyzx, cb5[r23.x + 32].xyzx - dp3 r28.y, -r24.xyzx, cb5[r23.x + 33].xyzx - dp3 r28.z, -r24.xyzx, cb5[r23.x + 34].xyzx - lt r23.x, |r28.x|, |r28.y| - and r23.x, r23.x, l(1) - dp2 r23.y, |r28.xyxx|, icb[r23.x + 0].xyxx - lt r23.y, r23.y, |r28.z| - movc r23.x, r23.y, l(2), r23.x - dp3 r23.y, r28.xyzx, icb[r23.x + 0].xyzx - lt r23.y, r23.y, l(0.000000) - bfi r23.x, l(31), l(1), r23.x, r23.y - ushr r23.y, r23.x, l(1) - dp3 r23.y, r28.xyzx, icb[r23.y + 0].xyzx - div r23.z, l(0.000244), cb5[r21.w + 0].w - add r23.z, -r23.z, l(0.500000) - utof r24.x, r23.x - ult r24.y, r23.x, l(2) - and r24.y, r24.y, l(2) - dp2 r24.y, r28.xzxx, icb[r24.y + 0].xzxx - mul r24.y, r24.y, icb[r23.x + 4].z - div r24.y, r24.y, |r23.y| - mad r24.x, r24.y, r23.z, r24.x - add r24.x, r24.x, l(0.500000) - mul_sat r24.x, r24.x, l(0.166667) - iadd r24.z, l(-1), icb[r23.x + 4].y - dp2 r24.z, r28.yzyy, icb[r24.z + 0].xyxx - mul r23.x, r24.z, icb[r23.x + 4].w - div r23.x, r23.x, |r23.y| - mad_sat r24.y, -r23.x, r23.z, l(0.500000) - mad r19.yw, r24.xxxy, cb5[r21.w + 0].zzzw, cb5[r21.w + 0].xxxy - endif - sample_l_indexable(texture2d)(float,float,float,float) r19.y, r19.ywyy, t11.yxzw, s1, l(0.000000) - mul r18.x, r18.x, r19.y - endif - lt r19.y, l(0.000000), r18.x - if_nz r19.y - if_z r22.z - ftoi r19.w, cb3[r22.y + 6].x - else - add r23.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx - lt r24.xyz, |r23.yzzy|, |r23.xxyx| - and r21.w, r24.y, r24.x - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx - ushr r22.z, cb3[r16.w + 6].w, l(24) - ubfe r24.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r16.w + 6].wwww - movc r22.z, r23.x, r22.z, r24.x - and r23.x, l(255), cb3[r16.w + 6].w - movc r23.x, r23.y, r24.y, r23.x - ubfe r23.y, l(8), l(8), cb3[r22.y + 6].x - and r24.x, l(255), cb3[r22.y + 6].x - movc r23.y, r23.z, r23.y, r24.x - movc r23.x, r24.z, r23.x, r23.y - movc r21.w, r21.w, r22.z, r23.x - ilt r22.z, r21.w, l(80) - movc r19.w, r22.z, r21.w, l(-1) - endif - ishl r21.w, r19.w, l(2) - mad r23.xyz, r25.xyzx, cb4[r19.w + 288].xxxx, r5.xyzx - mul r22.z, l(5.000000), cb4[r19.w + 288].y - mad r23.xyz, r3.xyzx, r22.zzzz, r23.xyzx - mul r24.xyzw, r23.yyyy, cb4[r21.w + 65].xyzw - mad r24.xyzw, cb4[r21.w + 64].xyzw, r23.xxxx, r24.xyzw - mad r24.xyzw, cb4[r21.w + 66].xyzw, r23.zzzz, r24.xyzw - add r24.xyzw, r24.xyzw, cb4[r21.w + 67].xyzw - div r23.xyz, r24.xyzx, r24.wwww - ge r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzx - ge r28.xyz, r23.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r29.xy, -cb4[r19.w + 344].xyxx, cb4[r19.w + 344].zwzz - mad r23.xy, r23.xyxx, r29.xyxx, cb4[r19.w + 344].xyxx - mad r29.xy, r23.xyxx, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r29.xy, r29.xyxx - mad r23.xy, r23.xyxx, cb4[400].zwzz, -r29.xyxx - add r30.xyzw, r23.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r31.xyzw, r30.xxzz, r30.xxzz - add r29.zw, -r23.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000) - min r30.xz, r23.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000) - max r32.xy, r23.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r33.xy, r29.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r32.xy, -r32.xyxx, r32.xyxx, r30.ywyy - add r32.xy, r32.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r32.xy, r32.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r31.xz, r31.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r23.xy, r31.ywyy, l(0.500000, 0.500000, 0.000000, 0.000000), -r23.xyxx - mul r34.xy, r23.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r23.xy, -r30.xzxx, r30.xzxx, r29.zwzz - add r23.xy, r23.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r35.xy, r23.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r23.xy, r30.ywyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mov r34.z, r35.x - mov r34.w, r23.x - mov r33.z, r32.x - mov r33.w, r31.x - add r30.xyzw, r33.zwxz, r34.zwxz - mov r35.z, r34.y - mov r35.w, r23.y - mov r32.z, r33.y - mov r32.w, r31.z - add r31.xyz, r32.zywz, r35.zywz - div r33.xyz, r33.xzwx, r30.zwyz - add r33.xyz, r33.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r33.xyz, r33.yxzy, cb4[400].xxxx - div r32.xyz, r32.zywz, r31.xyzx - add r32.xyz, r32.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r32.xyz, r32.xyzx, cb4[400].yyyy - mov r33.w, r32.x - mad r34.xyzw, r29.xyxy, cb4[400].xyxy, r33.ywxw - mad r23.xy, r29.xyxx, cb4[400].xyxx, r33.zwzz - mov r32.w, r33.y - mov r33.yw, r32.yyyz - mad r35.xyzw, r29.xyxy, cb4[400].xyxy, r33.xyzy - mad r32.xyzw, r29.xyxy, cb4[400].xyxy, r32.wywz - mad r29.xyzw, r29.xyxy, cb4[400].xyxy, r33.xwzw - mul r33.xyzw, r30.zwyz, r31.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r21.w, r34.xyxx, t6.xxxx, s4, r23.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.z, r34.zwzz, t6.xxxx, s4, r23.z - mul r22.z, r22.z, r33.y - mad r21.w, r33.x, r21.w, r22.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.z, r23.xyxx, t6.xxxx, s4, r23.z - mad r21.w, r33.z, r22.z, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.z, r32.xyxx, t6.xxxx, s4, r23.z - mad r21.w, r33.w, r22.z, r21.w - mul r33.xyzw, r30.xyzw, r31.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.z, r35.xyxx, t6.xxxx, s4, r23.z - mad r21.w, r33.x, r22.z, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.z, r35.zwzz, t6.xxxx, s4, r23.z - mad r21.w, r33.y, r22.z, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.z, r32.zwzz, t6.xxxx, s4, r23.z - mad r21.w, r33.z, r22.z, r21.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r22.z, r29.xyxx, t6.xxxx, s4, r23.z - mad r21.w, r33.w, r22.z, r21.w - ige r22.z, r19.w, l(0) - or r24.xyz, r24.xyzx, r28.xyzx - or r23.x, r24.y, r24.x - or r23.x, r24.z, r23.x - and r23.y, r23.z, l(0x7fffffff) - ult r23.y, l(0x7f800000), r23.y - or r23.x, r23.y, r23.x - mul r23.y, r30.y, r31.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r23.z, r29.zwzz, t6.xxxx, s4, r23.z - mad r21.w, r23.y, r23.z, r21.w - add r21.w, r21.w, l(-1.000000) - mad r19.w, cb4[r19.w + 288].w, r21.w, l(1.000000) - movc r19.w, r23.x, l(1.000000), r19.w - movc r19.w, r22.z, r19.w, l(1.000000) - else - mov r19.w, l(1.000000) - endif - if_nz r23.w - dp3 r21.w, r14.xyzx, r26.xyzx - mul_sat r22.z, r20.w, cb3[r16.w + 6].z - mad r22.z, r22.z, l(0.500000), r13.y - min r22.z, r22.z, l(1.000000) - div r22.z, r13.y, r22.z - mad r23.xyz, r14.xyzx, r21.wwww, -r26.xyzx - dp3 r23.x, r27.xyzx, r23.xyzx - mul r21.w, r21.w, r21.w - mad r21.w, cb3[r16.w + 6].z, cb3[r16.w + 6].z, -r21.w - div_sat r21.w, r23.x, r21.w - mad r23.xyz, r26.xyzx, r21.wwww, r27.xyzx - dp3 r21.w, r23.xyzx, r23.xyzx - rsq r21.w, r21.w - mul r25.xyz, r21.wwww, r23.xyzx - else - mov r22.z, l(1.000000) - endif - if_nz r19.y - mul_sat r19.y, r20.w, cb3[r18.w + 6].y - mad r23.xyz, r6.xyzx, r4.zzzz, r25.xyzx - dp3 r20.w, r23.xyzx, r23.xyzx - max r20.w, r20.w, l(0.000061) - rsq r20.w, r20.w - mul r23.xyz, r20.wwww, r23.xyzx - dp3_sat r20.w, r3.xyzx, r23.xyzx - dp3_sat r21.w, r8.xyzx, r23.xyzx - lt r23.x, l(0.000000), r19.y - mul r19.y, r19.y, r19.y - mad r23.y, r21.w, l(3.600000), l(0.400000) - div r19.y, r19.y, r23.y - mad r19.y, r10.w, r10.w, r19.y - min r19.y, r19.y, l(1.000000) - movc r19.y, r23.x, r19.y, r13.y - mul r19.y, r19.y, r19.y - mad r23.x, r20.w, r19.y, -r20.w - mad r20.w, r23.x, r20.w, l(1.000000) - add r21.w, -r21.w, l(1.000000) - mul r23.x, r21.w, r21.w - mul r23.x, r23.x, r23.x - mul r23.y, r21.w, r23.x - mad r21.w, -r23.x, r21.w, l(1.000000) - mad r23.xyz, r9.xyzx, r21.wwww, r23.yyyy - mul r20.w, r20.w, r20.w - div r20.w, r19.y, r20.w - mul r20.w, r22.z, r20.w - mad r21.w, -r10.x, r19.y, r10.x - mad r21.w, r21.w, r10.x, r19.y - sqrt r21.w, r21.w - mad r22.z, -r19.x, r19.y, r19.x - mad r19.y, r22.z, r19.x, r19.y - sqrt r19.y, r19.y - mul r19.y, r10.x, r19.y - mad r19.y, r19.x, r21.w, r19.y - add r19.y, r19.y, l(0.000100) - div r19.y, l(0.500000), r19.y - mul r19.y, r19.y, r20.w - mul r23.xyz, r19.yyyy, r23.xyzx - min r23.xyz, r23.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r24.xy, r19.xzxx, l(0.968750, 0.968750, 0.000000, 0.000000), l(0.015625, 0.015625, 0.000000, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r19.y, r24.xyxx, t9.yxzw, s1, l(0.000000) - mul r19.y, r8.w, r19.y - mul r19.y, r6.w, r19.y - div r19.y, r19.y, r7.w - mul r24.xyz, r15.xyzx, r19.yyyy - div r24.xyz, r24.xyzx, r16.xyzx - add r23.xyz, r23.xyzx, r24.xyzx - mul r23.xyz, r23.xyzx, cb3[r18.w + 6].zzzz - max r23.xyz, r23.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r23.xyz, r23.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r24.xyz, r11.xyzx, r19.xxxx - mad r23.xyz, r23.xyzx, r19.xxxx, r24.xyzx - mul r24.xyz, r18.xxxx, cb3[r17.z + 6].xyzx - mul r19.xyw, r19.wwww, r24.xyxz - mul r19.xyw, r17.xxxx, r19.xyxw - mul r19.xyw, r19.xyxw, r23.xyxz - else - mov r19.xyw, l(0,0,0,0) - endif - else - if_z r17.y - mad r17.x, cb3[r16.w + 6].y, l(0.500000), l(0.500000) - add r23.x, r17.x, -|cb3[r16.w + 6].x| - add r23.y, -r23.x, cb3[r16.w + 6].y - add r17.x, -|r23.x|, l(1.000000) - add r17.x, -|r23.y|, r17.x - max r17.x, r17.x, l(0.000488) - ge r17.y, cb3[r16.w + 6].x, l(0.000000) - movc r23.z, r17.y, r17.x, -r17.x - dp3 r17.x, r23.xyzx, r23.xyzx - rsq r17.x, r17.x - mul r23.xyz, r17.xxxx, r23.xyzx - add r24.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx - dp3 r17.x, r24.xyzx, r24.xyzx - rsq r17.y, r17.x - mul r25.xyz, r17.yyyy, r24.xyzx - ftoi r17.y, cb3[r18.w + 6].w - mul r26.xyz, r23.xyzx, cb3[r16.w + 6].zzzz - mad r27.xyz, -r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - mad r26.xyz, r26.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r24.xyzx - ftou r17.z, cb3[r17.z + 6].w - and r17.z, r17.z, l(1) - ieq r18.x, r17.z, l(0) - not r18.x, r18.x - lt r18.w, l(0.000000), cb3[r16.w + 6].z - and r18.x, r18.w, r18.x - dp3 r18.w, r27.xyzx, r27.xyzx - sqrt r18.w, r18.w - dp3 r20.w, r26.xyzx, r26.xyzx - sqrt r20.w, r20.w - dp3 r21.w, r27.xyzx, r26.xyzx - mad r18.w, r18.w, r20.w, r21.w - mad r18.w, r18.w, l(0.500000), l(1.000000) - div r18.w, l(1.000000, 1.000000, 1.000000, 1.000000), r18.w - movc r18.w, r18.x, r18.w, l(1.000000) - lt r20.w, cb3[r22.w + 6].w, l(0.000000) - if_nz r20.w - mul r20.w, cb3[r22.x + 6].w, cb3[r22.x + 6].w - mul r20.w, r17.x, r20.w - mad r20.w, -r20.w, r20.w, l(1.000000) - max r20.w, r20.w, l(0.000000) - add r17.x, r17.x, l(1.000000) - div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x - and r21.w, r18.x, l(0x3f800000) - add r22.z, -r17.x, r18.w - mad r17.x, r21.w, r22.z, r17.x - mul r20.w, r20.w, r20.w - mul r17.x, r17.x, r20.w - else - mul r26.xyz, r24.xyzx, cb3[r22.x + 6].wwww - dp3 r20.w, r26.xyzx, r26.xyzx - min r20.w, r20.w, l(1.000000) - add r20.w, -r20.w, l(1.000000) - log r20.w, r20.w - mul r20.w, r20.w, cb3[r22.w + 6].w - exp r20.w, r20.w - mul r17.x, r18.w, r20.w - endif - dp3 r18.w, r25.xyzx, -r23.xyzx - add r18.w, r18.w, -cb3[r16.w + 6].z - mul_sat r18.w, r18.w, cb3[r16.w + 6].w - mul r18.w, r18.w, r18.w - movc r18.w, r17.z, l(1.000000), r18.w - mul r17.x, r17.x, r18.w - not r18.x, r18.x - ige r18.w, r17.y, l(0) - and r18.x, r18.w, r18.x - if_nz r18.x - if_z r17.z - ishl r18.x, r17.y, l(2) - mul r23.xyz, r5.yyyy, cb5[r18.x + 33].xywx - mad r23.xyz, cb5[r18.x + 32].xywx, r5.xxxx, r23.xyzx - mad r23.xyz, cb5[r18.x + 34].xywx, r5.zzzz, r23.xyzx - add r23.xyz, r23.xyzx, cb5[r18.x + 35].xywx - div_sat r18.xw, r23.xxxy, r23.zzzz - mad r18.xw, r18.xxxw, cb5[r17.y + 0].zzzw, cb5[r17.y + 0].xxxy - else - ishl r20.w, r17.y, l(2) - dp3 r23.x, -r24.xyzx, cb5[r20.w + 32].xyzx - dp3 r23.y, -r24.xyzx, cb5[r20.w + 33].xyzx - dp3 r23.z, -r24.xyzx, cb5[r20.w + 34].xyzx - lt r20.w, |r23.x|, |r23.y| - and r20.w, r20.w, l(1) - dp2 r21.w, |r23.xyxx|, icb[r20.w + 0].xyxx - lt r21.w, r21.w, |r23.z| - movc r20.w, r21.w, l(2), r20.w - dp3 r21.w, r23.xyzx, icb[r20.w + 0].xyzx - lt r21.w, r21.w, l(0.000000) - bfi r20.w, l(31), l(1), r20.w, r21.w - ushr r21.w, r20.w, l(1) - dp3 r21.w, r23.xyzx, icb[r21.w + 0].xyzx - div r22.z, l(0.000244), cb5[r17.y + 0].w - add r22.z, -r22.z, l(0.500000) - utof r22.w, r20.w - ult r23.w, r20.w, l(2) - and r23.w, r23.w, l(2) - dp2 r23.x, r23.xzxx, icb[r23.w + 0].xzxx - mul r23.x, r23.x, icb[r20.w + 4].z - div r23.x, r23.x, |r21.w| - mad r22.w, r23.x, r22.z, r22.w - add r22.w, r22.w, l(0.500000) - mul_sat r24.x, r22.w, l(0.166667) - iadd r22.w, l(-1), icb[r20.w + 4].y - dp2 r22.w, r23.yzyy, icb[r22.w + 0].xyxx - mul r20.w, r22.w, icb[r20.w + 4].w - div r20.w, r20.w, |r21.w| - mad_sat r24.y, -r20.w, r22.z, l(0.500000) - mad r18.xw, r24.xxxy, cb5[r17.y + 0].zzzw, cb5[r17.y + 0].xxxy - endif - sample_l_indexable(texture2d)(float,float,float,float) r17.y, r18.xwxx, t11.yxzw, s1, l(0.000000) - mul r17.x, r17.y, r17.x - endif - lt r17.x, l(0.000000), r17.x - if_nz r17.x - if_z r17.z - ftoi r17.x, cb3[r22.y + 6].x - else - add r22.xzw, r5.xxyz, -cb3[r22.x + 6].xxyz - lt r23.xyz, |r22.zwwz|, |r22.xxzx| - and r17.y, r23.y, r23.x - lt r22.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xxzw - ushr r17.z, cb3[r16.w + 6].w, l(24) - ubfe r18.xw, l(8, 0, 0, 8), l(16, 0, 0, 8), cb3[r16.w + 6].wwww - movc r17.z, r22.x, r17.z, r18.x - and r16.w, l(255), cb3[r16.w + 6].w - movc r16.w, r22.z, r18.w, r16.w - ubfe r18.x, l(8), l(8), cb3[r22.y + 6].x - and r18.w, l(255), cb3[r22.y + 6].x - movc r18.x, r22.w, r18.x, r18.w - movc r16.w, r23.z, r16.w, r18.x - movc r16.w, r17.y, r17.z, r16.w - ilt r17.y, r16.w, l(80) - movc r17.x, r17.y, r16.w, l(-1) - endif - ishl r16.w, r17.x, l(2) - mad r22.xyz, r25.xyzx, cb4[r17.x + 288].xxxx, r5.xyzx - mul r17.y, l(5.000000), cb4[r17.x + 288].y - mad r22.xyz, r3.xyzx, r17.yyyy, r22.xyzx - mul r23.xyzw, r22.yyyy, cb4[r16.w + 65].xyzw - mad r23.xyzw, cb4[r16.w + 64].xyzw, r22.xxxx, r23.xyzw - mad r22.xyzw, cb4[r16.w + 66].xyzw, r22.zzzz, r23.xyzw - add r22.xyzw, r22.xyzw, cb4[r16.w + 67].xyzw - div r22.xyz, r22.xyzx, r22.wwww - ge r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx - ge r24.xyz, r22.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r17.yz, -cb4[r17.x + 344].xxyx, cb4[r17.x + 344].zzwz - mad r17.yz, r22.xxyx, r17.yyzy, cb4[r17.x + 344].xxyx - mad r18.xw, r17.yyyz, cb4[400].zzzw, l(0.500000, 0.000000, 0.000000, 0.500000) - round_ni r18.xw, r18.xxxw - mad r17.yz, r17.yyzy, cb4[400].zzwz, -r18.xxwx - add r25.xyzw, r17.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r26.xyzw, r25.xxzz, r25.xxzz - add r22.xy, -r17.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) - min r25.xz, r17.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r27.xy, r17.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r28.xy, r22.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r27.xy, -r27.xyxx, r27.xyxx, r25.ywyy - add r27.xy, r27.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r27.xy, r27.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r26.xz, r26.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r17.yz, r26.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r17.yyzy - mul r29.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r17.yz, -r25.xxzx, r25.xxzx, r22.xxyx - add r17.yz, r17.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r30.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r17.yz, r25.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r29.z, r30.x - mov r29.w, r17.y - mov r28.z, r27.x - mov r28.w, r26.x - add r25.xyzw, r28.zwxz, r29.zwxz - mov r30.z, r29.y - mov r30.w, r17.z - mov r27.z, r28.y - mov r27.w, r26.z - add r22.xyw, r27.zyzw, r30.zyzw - div r26.xyz, r28.xzwx, r25.zwyz - add r26.xyz, r26.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r26.xyz, r26.yxzy, cb4[400].xxxx - div r27.xyz, r27.zywz, r22.xywx - add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r27.xyz, r27.xyzx, cb4[400].yyyy - mov r26.w, r27.x - mad r28.xyzw, r18.xwxw, cb4[400].xyxy, r26.ywxw - mad r17.yz, r18.xxwx, cb4[400].xxyx, r26.zzwz - mov r27.w, r26.y - mov r26.yw, r27.yyyz - mad r29.xyzw, r18.xwxw, cb4[400].xyxy, r26.xyzy - mad r27.xyzw, r18.xwxw, cb4[400].xyxy, r27.wywz - mad r26.xyzw, r18.xwxw, cb4[400].xyxy, r26.xwzw - mul r30.xyzw, r22.xxxy, r25.zwyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r16.w, r28.xyxx, t6.xxxx, s4, r22.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.zwzz, t6.xxxx, s4, r22.z - mul r18.x, r18.x, r30.y - mad r16.w, r30.x, r16.w, r18.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r17.yzyy, t6.xxxx, s4, r22.z - mad r16.w, r30.z, r17.y, r16.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r27.xyxx, t6.xxxx, s4, r22.z - mad r16.w, r30.w, r17.y, r16.w - mul r28.xyzw, r22.yyww, r25.xyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r29.xyxx, t6.xxxx, s4, r22.z - mad r16.w, r28.x, r17.y, r16.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r29.zwzz, t6.xxxx, s4, r22.z - mad r16.w, r28.y, r17.y, r16.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r27.zwzz, t6.xxxx, s4, r22.z - mad r16.w, r28.z, r17.y, r16.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r26.xyxx, t6.xxxx, s4, r22.z - mad r16.w, r28.w, r17.y, r16.w - ige r17.y, r17.x, l(0) - or r23.xyz, r23.xyzx, r24.xyzx - or r17.z, r23.y, r23.x - or r17.z, r23.z, r17.z - and r18.x, r22.z, l(0x7fffffff) - ult r18.x, l(0x7f800000), r18.x - or r17.z, r17.z, r18.x - mul r18.x, r22.w, r25.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r26.zwzz, t6.xxxx, s4, r22.z - mad r16.w, r18.x, r18.w, r16.w - add r16.w, r16.w, l(-1.000000) - mad r16.w, cb4[r17.x + 288].w, r16.w, l(1.000000) - movc r16.w, r17.z, l(1.000000), r16.w - movc r16.w, r17.y, r16.w, l(1.000000) - else - mov r16.w, l(1.000000) - endif - else - mov r16.w, l(1.000000) - endif - mul r14.w, r14.w, r16.w - mov r19.xyw, l(0,0,0,0) - endif - add r21.xyz, r19.xywx, r21.xyzx - mov r15.w, r18.z - endloop - mov r9.w, r14.w - add r20.xyz, r20.xyzx, r21.xyzx - iadd r10.y, r10.y, l(1) -endloop -mad r6.xyz, r20.xyzx, r9.wwww, r13.xzwx -ne r10.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx -if_nz r10.x - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - add r1.x, r0.z, r12.x - mad r2.z, r10.w, l(-16.000000), l(-1.000000) - exp r2.z, r2.z - log r1.x, |r1.x| - mul r1.x, r1.x, r2.z - exp r1.x, r1.x - add r1.x, r0.z, r1.x - add r1.x, r1.x, l(-1.000000) - mov_sat r13.xyz, r1.xxxx - mad r15.xyz, r11.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r15.xyz, r0.zzzz, r15.xyzx - mad r15.xyz, r11.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r15.xyzx - add r15.xyz, r15.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r15.xyz, r0.zzzz, r15.xyzx - mad r15.xyz, r11.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r15.xyzx - add r15.xyz, r15.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r15.xyz, r0.zzzz, r15.xyzx - max r15.xyz, r0.zzzz, r15.xyzx -else - mov r13.xyz, r1.yyyy - mov r15.xyz, r1.yyyy -endif -mad r16.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[216].x -mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx -dp2 r0.z, r1.xyxx, l(0.067111, 0.005837, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r16.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r16.xyzx -mad r17.xyz, cb0[6].xzyx, -cb0[216].wwww, cb0[214].xzyx -add r17.xyz, r16.xzyx, -r17.xyzx -max r0.z, |r17.y|, |r17.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.x, |r17.z|, l(-208.000000) -mul_sat r1.x, r1.x, l(0.031250) -max r0.z, r0.z, r1.x -ne r1.x, l(0.000000), cb0[214].w -lt r1.y, r0.z, l(1.000000) -and r1.x, r1.y, r1.x -if_nz r1.x - mad r17.xyz, cb0[6].xzyx, -cb0[216].yyyy, cb0[214].xzyx - add r17.xyz, r16.xzyx, -r17.xyzx - max r1.x, |r17.y|, |r17.x| - add r1.x, r1.x, l(-29.000000) - add r1.y, |r17.z|, l(-13.000000) - mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) - max r1.x, r1.y, r1.x - lt r1.y, r1.x, l(1.000000) - if_nz r1.y - mad r17.xyz, r16.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r17.xyzx, cb0[215].xyzx - round_ni r18.xyz, r18.xyzx - mad r17.xyz, r17.xyzx, cb0[215].xyzx, -r18.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r18.xyw, r17.xyzx, t15.yzwx, s2, l(0.000000) - add r1.y, -r1.x, l(1.000000) - mul r2.z, l(0.500000), cb0[215].y - mad r6.w, -cb0[215].y, l(0.500000), l(1.000000) - max r2.z, r2.z, r17.y - min r2.z, r6.w, r2.z - mul r17.w, r2.z, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r17.xwzx, t16.xyzw, s1, l(0.000000) - mad r2.z, r19.w, r1.y, r0.z - add r20.xyz, r17.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t16.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r18.yyyy, r20.xyzx - mov r20.w, r18.y - mul r20.xyzw, r1.yyyy, r20.xyzw - add r17.xyz, r17.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r17.xyz, r17.xyzx, t16.xyzw, s1, l(0.000000) - mad r17.xyz, r17.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r18.xxxx, r17.xyzx - mov r17.w, r18.x - mul r17.xyzw, r1.yyyy, r17.xyzw - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r18.wwww, r19.xyzx - mul r18.xyzw, r1.yyyy, r18.xyzw - else - mov r20.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r2.z, r0.z - endif - mad r19.xyz, cb0[6].xzyx, -cb0[216].zzzz, cb0[214].xzyx - add r19.xyz, r16.xzyx, -r19.xyzx - max r1.y, |r19.y|, |r19.x| - add r1.y, r1.y, l(-116.000000) - mul_sat r1.y, r1.y, l(0.125000) - add r6.w, |r19.z|, l(-52.000000) - mul_sat r6.w, r6.w, l(0.125000) - max r1.y, r1.y, r6.w - lt r6.w, r1.y, l(1.000000) - if_nz r6.w - mad r19.xyz, r16.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r21.xyz, r19.xyzx, cb0[215].xyzx - round_ni r21.xyz, r21.xyzx - mad r19.xyz, r19.xyzx, cb0[215].xyzx, -r21.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r19.xyzx, t17.yzwx, s2, l(0.000000) - add r6.w, -r1.y, l(1.000000) - mul r1.x, r1.x, r6.w - mul r6.w, l(0.500000), cb0[215].y - mad r7.w, -cb0[215].y, l(0.500000), l(1.000000) - max r6.w, r6.w, r19.y - min r6.w, r7.w, r6.w - mul r19.w, r6.w, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyzw, r19.xwzx, t18.xyzw, s1, l(0.000000) - mad r2.z, r22.w, r1.x, r2.z - add r23.xyz, r19.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r23.xyz, r23.xyzx, t18.xyzw, s1, l(0.000000) - mad r23.xyz, r23.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r23.xyz, r21.yyyy, r23.xyzx - mov r23.w, r21.y - mad r20.xyzw, r23.xyzw, r1.xxxx, r20.xyzw - add r19.xyz, r19.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t18.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r21.xxxx, r19.xyzx - mov r19.w, r21.x - mad r17.xyzw, r19.xyzw, r1.xxxx, r17.xyzw - mad r19.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r19.xyzx - mad r18.xyzw, r21.xyzw, r1.xxxx, r18.xyzw - endif - lt r1.x, l(0.000000), r1.y - if_nz r1.x - mad r16.xyz, r16.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r19.xyz, r16.xyzx, cb0[215].xyzx - mul r21.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[215].xyzx - round_ni r19.xyz, r19.xyzx - mad r16.xyz, r16.xyzx, cb0[215].xyzx, -r19.xyzx - mad r19.xyz, -cb0[215].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r16.xyz, r21.xyzx, r16.xyzx - min r16.xyz, r19.xyzx, r16.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r22.xyw, r16.xyzx, t19.yzwx, s2, l(0.000000) - add r1.x, -r0.z, l(1.000000) - mul r1.x, r1.x, r1.y - max r1.y, r21.y, r16.y - min r1.y, r19.y, r1.y - mul r16.w, r1.y, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyzw, r16.xwzx, t20.xyzw, s1, l(0.000000) - add r21.xyz, r16.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t20.xyzw, s1, l(0.000000) - mad r21.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r22.yyyy, r21.xyzx - mov r21.w, r22.y - mad r20.xyzw, r21.xyzw, r1.xxxx, r20.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t20.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r22.xxxx, r16.xyzx - mov r16.w, r22.x - mad r17.xyzw, r16.xyzw, r1.xxxx, r17.xyzw - mad r16.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r22.wwww, r16.xyzx - mad r18.xyzw, r22.xyzw, r1.xxxx, r18.xyzw - mad r2.z, r19.w, r1.x, r2.z - endif - mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) - add r16.x, -r0.z, r1.x - add r0.z, r0.z, r1.x - mul r16.y, r0.z, l(0.500000) -else - mov r20.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r18.xyzw, l(0,0,0,0) - mov r16.xy, l(0,1.000000,0,0) -endif -mul r19.xyzw, r16.yxyy, cb0[217].ywzx -mad r19.y, r19.y, l(0.500000), r19.x -mul r1.xy, r16.yxyy, cb0[217].wyww -mad r19.x, r1.y, l(0.375000), r1.x -add r18.xyzw, r18.xyzw, r19.wyzx -mul r19.xyzw, r16.yxyy, cb0[218].ywzx -mad r19.y, r19.y, l(0.500000), r19.x -mul r1.xy, r16.yxyy, cb0[218].wyww -mad r19.x, r1.y, l(0.375000), r1.x -add r17.xyzw, r17.xyzw, r19.wyzx -mul r19.xyzw, r16.yxyy, cb0[219].ywzx -mad r19.y, r19.y, l(0.500000), r19.x -mul r1.xy, r16.yxyy, cb0[219].wyww -mad r19.x, r1.y, l(0.375000), r1.x -add r16.xyzw, r19.wyzx, r20.xyzw -ge r1.xy, r4.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r1.y, r1.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r19.xyzw, r4.xyxx, t14.xyzw, s1, l(0.000000) - lt r20.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r19.xyzw| - or r1.xy, r20.zwzz, r20.xyxx - or r0.z, r1.y, r1.x - if_nz r0.z - dp3 r0.z, r19.yzwy, r19.yzwy - sqrt r0.z, r0.z - mov r1.x, l(1.000000) - mov r1.y, r0.z - mov r2.z, l(0) - loop - ge r4.x, l(4.600000), r1.y - breakc_nz r4.x - iadd r4.x, r2.z, l(1) - mul r10.xz, r1.xxyx, l(0.500000, 0.000000, 0.500000, 0.000000) - mov r1.xy, r10.xzxx - mov r2.z, r4.x - continue - endloop - mul r19.xyzw, r1.xxxx, r19.xyzw - dp3 r0.z, r19.yzwy, r19.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb6[3].x, cb6[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r1.x, r0.z, l(0.003906) - mov r1.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t13.xyzw, s1, l(0.000000) - mad r1.xy, r1.xyxx, cb6[2].xyxx, cb6[2].zwzz - mul r20.x, r1.x, l(3.544908) - mul r20.yzw, r1.yyyy, r19.yyzw - mul r0.z, r19.x, l(0.406977) - exp r0.z, r0.z - mul r19.xyzw, r0.zzzz, r20.xyzw - mov r20.xyzw, r19.xyzw - mov r0.z, l(0) - loop - uge r1.x, r0.z, r2.z - breakc_nz r1.x - mul r21.xyzw, r20.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - dp4 r1.x, r21.xyzw, r20.xyzw - dp2 r1.y, r21.yxyy, r20.xyxx - dp2 r4.x, r21.zxzz, r20.xzxx - dp2 r4.y, r21.wxww, r20.xwxx - iadd r6.w, r0.z, l(1) - mov r20.xy, r1.xyxx - mov r20.zw, r4.xxxy - mov r0.z, r6.w - continue - endloop - mul r19.xyzw, r20.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - mul r20.xyzw, r18.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r19.xyzw, r20.xyzw - dp2 r1.x, r19.yxyy, r20.xyxx - dp2 r1.y, r19.zxzz, r20.xzxx - dp2 r2.z, r19.wxww, r20.xwxx - mul r20.xyzw, r17.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r4.x, r19.xyzw, r20.xyzw - dp2 r4.y, r19.yxyy, r20.xyxx - dp2 r6.w, r19.zxzz, r20.xzxx - dp2 r7.w, r19.wxww, r20.xwxx - mul r20.xyzw, r16.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r8.w, r19.xyzw, r20.xyzw - dp2 r9.w, r19.yxyy, r20.xyxx - dp2 r10.x, r19.zxzz, r20.xzxx - dp2 r10.z, r19.wxww, r20.xwxx - mul r18.w, r0.z, l(0.886227) - mul r18.x, r2.z, l(-1.023327) - mul r18.yz, r1.xxyx, l(0.000000, -1.023327, 1.023327, 0.000000) - mul r17.x, r7.w, l(-1.023327) - mul r17.yw, r4.yyyx, l(0.000000, -1.023327, 0.000000, 0.886227) - mul r17.z, r6.w, l(1.023327) - mul r16.w, r8.w, l(0.886227) - mul r16.y, r9.w, l(-1.023327) - mul r16.xz, r10.zzxz, l(-1.023327, 0.000000, 1.023327, 0.000000) - endif -endif -dp3 r0.z, r18.xyzx, r3.xyzx -add r0.z, r18.w, r0.z -max r18.x, r0.z, l(0.000000) -dp3 r0.z, r17.xyzx, r3.xyzx -add r0.z, r17.w, r0.z -max r18.y, r0.z, l(0.000000) -dp3 r0.z, r16.xyzx, r3.xyzx -add r0.z, r16.w, r0.z -max r18.z, r0.z, l(0.000000) -add r0.z, l(-1.000000), cb0[113].x -max r1.x, r10.w, l(0.001000) -log r1.x, r1.x -mad r1.x, -r1.x, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.x -mul r1.xy, r2.xyxx, cb1[0].wwww -round_ni r1.xy, r1.xyxx -add r2.z, |r1.w|, -cb1[2].y -round_ni r2.z, r2.z -add r4.x, l(-1.000000), cb1[1].x -max r4.y, r2.z, l(0.000000) -min r4.x, r4.x, r4.y -ge r2.z, r4.x, r2.z -mad r1.x, r1.y, cb1[0].x, r1.x -ftoi r1.x, r1.x -iadd r1.x, r1.x, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx -ftoi r1.y, r4.x -iadd r1.y, r1.y, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx -and r1.x, r1.y, r1.x -and r1.x, r1.x, r2.z -mul r10.xzw, r18.xxyz, cb0[111].xxxx -dp3 r1.y, r10.xzwx, l(0.212673, 0.715152, 0.072175, 0.000000) -mov r41.x, r1.y // Store ambient luminance for cubemap modulation -mov r5.w, l(1.000000) -mov r3.w, l(1.000000) -mov r10.xzw, l(0,0,0,0) -mov r2.z, l(1.000000) -mov r4.x, r1.x -mov r4.y, l(0) -loop - lt r6.w, l(0.010000), r2.z - ine r7.w, r4.x, l(0) - and r7.w, r6.w, r7.w - if_nz r7.w - firstbit_lo r7.w, r4.x - ishl r8.w, l(1), r7.w - xor r4.x, r4.x, r8.w - ishl r7.w, r7.w, l(3) - dp4 r16.x, cb1[r7.w + 6].xyzw, r5.xyzw - dp4 r16.y, cb1[r7.w + 7].xyzw, r5.xyzw - dp4 r16.z, cb1[r7.w + 8].xyzw, r5.xyzw - ge r17.xyz, cb1[r7.w + 5].xyzx, |r16.xyzx| - and r8.w, r17.y, r17.x - and r8.w, r17.z, r8.w - if_nz r8.w - mul r8.w, l(0.100000), cb1[r7.w + 5].x - mul r17.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r17.xy, r17.xyxx, r17.xyxx - add r19.xyz, -|r16.xyzx|, cb1[r7.w + 5].xyzx - mul r19.xyz, r19.xyzx, cb1[r7.w + 9].xyzx - eq r9.w, l(1.000000), cb1[r7.w + 10].x - if_nz r9.w - dp3 r20.x, cb1[r7.w + 6].xyzx, r14.xyzx - dp3 r20.y, cb1[r7.w + 7].xyzx, r14.xyzx - dp3 r20.z, cb1[r7.w + 8].xyzx, r14.xyzx - add r21.xyz, -r16.xyzx, cb1[r7.w + 5].xyzx - div r21.xyz, r21.xyzx, r20.xyzx - add r22.xyz, -r16.xyzx, -cb1[r7.w + 5].xyzx - div r22.xyz, r22.xyzx, r20.xyzx - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx - movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx - min r9.w, r21.y, r21.x - min r9.w, r21.z, r9.w - mad r16.xyz, r20.xyzx, r9.wwww, r16.xyzx - else - mov r16.xyz, r14.xyzx - endif - dp3 r9.w, r16.xyzx, r16.xyzx - rsq r9.w, r9.w - mul r16.xyz, r9.wwww, r16.xyzx - lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r20.xyz, -r20.xyzx, r21.xyzx - itof r20.xyz, r20.xyzx - dp3 r9.w, r16.xyzx, r20.xyzx - div r16.xyz, r16.xyzx, r9.wwww - lt r9.w, r16.z, l(0.000000) - add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r16.zw, r16.zzzw, r20.xxxy - movc r16.xy, r9.wwww, r16.zwzz, r16.xyxx - dp4 r9.w, cb1[r7.w + 4].xyzw, r3.xyzw - max r9.w, r9.w, l(0.000000) - max r9.w, r9.w, l(0.000100) - min r11.w, r19.z, r19.y - min r11.w, r11.w, r19.x - add r12.x, r17.y, r17.x - mad r12.x, r17.z, r17.z, r12.x - mad r8.w, r8.w, r8.w, -r12.x - mul r8.w, r8.w, cb1[r7.w + 9].x - mul r8.w, r8.w, cb1[r7.w + 9].x - add r12.x, l(1.000000), -cb1[r7.w + 10].y - mul r8.w, r8.w, r12.x - mul r8.w, r8.w, l(100.000000) - mad_sat r8.w, r11.w, cb1[r7.w + 10].y, r8.w - mul r11.w, r8.w, cb1[r7.w + 10].w - mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww - mov r16.z, cb1[r7.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z - mul r16.xyz, r16.xyzx, cb1[r7.w + 9].wwww - div r12.x, r1.y, r9.w - min r12.x, |r12.x|, l(1.000000) - mad r12.x, r12.x, l(2.000000), r1.y - add r9.w, r9.w, l(2.000000) - div r9.w, r12.x, r9.w - add r9.w, r9.w, l(-1.000000) - mad r9.w, r9.w, cb0[112].w, l(1.000000) - mul r16.xyz, r9.wwww, r16.xyzx - mul r16.xyz, r11.wwww, r16.xyzx - mad r10.xzw, r16.xxyz, r2.zzzz, r10.xxzw - mad r7.w, -r8.w, cb1[r7.w + 10].w, l(1.000000) - mul r2.z, r2.z, r7.w - endif - mov r4.y, l(-1) - continue - else - mov r4.y, r6.w - break - endif - mov r4.y, r6.w -endloop -if_nz r4.y - dp3 r1.x, r14.xyzx, r14.xyzx - rsq r1.x, r1.x - mul r5.xzw, r1.xxxx, r14.xxyz - lt r14.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r5.xzwx - lt r16.xyz, r5.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r14.xyz, -r14.xyzx, r16.xyzx - itof r14.xyz, r14.xyzx - dp3 r1.x, r5.xzwx, r14.xyzx - div r5.xzw, r5.xxzw, r1.xxxx - lt r1.x, r5.w, l(0.000000) - add r4.xy, -|r5.zxzz|, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r4.xy, r4.xyxx, r14.xyxx - movc r4.xy, r1.xxxx, r4.xyxx, r5.xzxx - mov r3.w, l(1.000000) - dp4 r1.x, cb1[3].xyzw, r3.xyzw - max r1.x, r1.x, l(0.000000) - max r1.x, r1.x, l(0.000100) - mad r3.xy, r4.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r3.xy, r3.xyxx, cb1[1].wwww, cb1[2].wwww - mov r3.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s3, r0.z - div r0.z, r1.y, r1.x - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r1.y - add r1.x, r1.x, l(2.000000) - div r0.z, r0.z, r1.x - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r3.xyz, r0.zzzz, r3.xyzx - mad r10.xzw, r3.xxyz, r2.zzzz, r10.xxzw -endif -mul r3.xyz, r10.xzwx, cb0[112].zzzz -mul r3.xyz, r3.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].y) -if_nz cb13[13].y - max r41.x, r41.x, l(0.000000) - min r41.x, r41.x, l(1.000000) - mad r41.x, r41.x, l(0.750000), l(0.250000) - mul r3.xyz, r3.xyzx, r41.xxxx -endif -if_nz r10.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x - add r1.x, -r0.z, l(1.000000) - mul r10.xyz, r1.xxxx, r3.xyzx - mad r3.xyz, r5.xzwx, r0.zzzz, r10.xyzx -endif -mul r5.xzw, r11.xxyz, r18.xxyz -mul r5.xzw, r5.xxzw, cb0[111].xxxx -add r0.z, -r1.z, l(1.000000) -div r0.z, r0.z, r1.z -mul r1.xyz, r0.zzzz, r9.xyzx -mad r1.xyz, r1.xyzx, r12.yzwy, r12.yzwy -mul r1.xyz, r1.xyzx, r3.xyzx -mul r1.xyz, r13.xyzx, r1.xyzx -mad r1.xyz, r5.xzwx, r15.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r6.xyzx -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r2.z, r4.w, cb0[154].w, -cb0[153].w -max r2.z, r2.z, l(0.000000) -mul r3.x, r0.z, l(-1.442695) -exp r3.x, r3.x -add r3.x, -r3.x, l(1.000000) -div r0.z, r3.x, r0.z -mad r3.x, r5.y, cb0[156].w, cb0[158].w -mul r3.x, r3.x, l(1.442695) -exp r3.x, r3.x -mul r0.z, r0.z, r3.x -mul r0.z, r0.z, -r2.z -mul r3.xyz, r0.zzzz, cb0[155].xyzx -mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r3.xyz, r3.xyzx -dp3 r0.z, -r8.xyzx, cb0[154].xyzx -mad r2.z, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r3.w, r0.zzzz, cb0[155].wwww -add r2.z, r2.z, -r3.w -lt r3.w, l(0.000000), cb0[165].z -if_nz r3.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r4.x, r0.y, r0.w, r0.x - dp3 r0.x, -r8.xyzx, -r7.xyzx - add r3.w, r5.y, -cb0[44].y - lt r5.x, l(0.000000), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r5.x - mul r0.x, r0.x, cb0[165].w - div r5.x, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w - mul r5.z, r0.x, r5.x - mad r5.w, r5.z, r3.w, cb0[44].y - mad r3.w, -r5.z, r3.w, r3.w - mad r0.x, -r0.x, r5.x, l(1.000000) - mul r5.x, r4.w, r0.x - mul r5.z, r3.w, cb0[159].z - max r5.z, r5.z, l(-127.000000) - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - add r6.x, r5.w, -cb0[159].x - mul r6.x, r6.x, cb0[159].z - max r6.x, r6.x, l(-127.000000) - exp r6.x, -r6.x - mul r6.x, r6.x, cb0[159].y - lt r6.y, l(0.000000), |r5.z| - exp r6.z, -r5.z - add r6.z, -r6.z, l(1.000000) - div r6.z, r6.z, r5.z - mad r5.z, -r5.z, l(0.240227), l(0.693147) - movc r5.z, r6.y, r6.z, r5.z - add r5.w, r5.w, -cb0[162].z - mul r5.w, r5.w, cb0[162].x - max r5.w, r5.w, l(-127.000000) - exp r5.w, -r5.w - mul r5.w, r5.w, cb0[162].y - lt r6.y, l(0.000000), |r3.w| - exp r6.z, -r3.w - add r6.z, -r6.z, l(1.000000) - div r6.z, r6.z, r3.w - mad r3.w, -r3.w, l(0.240227), l(0.693147) - movc r3.w, r6.y, r6.z, r3.w - mul r3.w, r3.w, r5.w - mad r3.w, r6.x, r5.z, r3.w - mad_sat r5.zw, r4.wwww, cb0[160].wwwy, cb0[160].zzzx - mul r5.x, r5.x, r3.w - exp r5.x, -r5.x - min r5.x, r5.x, l(1.000000) - max r5.x, r5.x, cb0[161].w - add r5.x, r5.w, r5.x - add r5.x, r5.z, r5.x - min r5.x, r5.x, l(1.000000) - imad r4.y, r0.w, r4.x, r0.y - ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.000031, 0.000000, 0.000031), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[169].wwww, r2.xxxy - mul r6.xy, r0.ywyy, cb0[167].xyxx - mad r0.y, |r1.w|, cb0[166].x, cb0[166].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[166].z - div r6.z, r0.y, cb0[165].z - sample_l_indexable(texture3d)(float,float,float,float) r6.xyzw, r6.xyzx, t12.xyzw, s1, l(0.000000) - add r0.y, |r1.w|, -cb0[168].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r6.xyzw, r6.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r6.xyzw, r0.yyyy, r6.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r5.x, l(1.000000) - dp3_sat r0.w, r8.xyzx, cb0[163].xyzx - log r0.w, r0.w - mul r0.w, r0.w, cb0[164].w - exp r0.w, r0.w - mul r7.xyz, r0.wwww, cb0[164].xyzx - mad r0.x, r0.x, r4.w, -cb0[163].w - max r0.x, r0.x, l(0.000000) - mul r0.x, r0.x, r3.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - add r0.x, -r0.x, l(1.000000) - mul r7.xyz, r0.xxxx, r7.xyzx - add r0.x, -r5.z, l(1.000000) - mul r7.xyz, r0.xxxx, r7.xyzx - mad r0.xyw, cb0[161].xyxz, r0.yyyy, r7.xyxz - mad r0.xyw, r0.xyxw, r6.wwww, r6.xyxz - mul r1.w, r5.x, r6.w -else - add r2.x, r5.y, -cb0[44].y - mul r2.y, r2.x, cb0[159].z - mul r2.x, r2.x, cb0[162].x - max r2.xy, r2.xyxx, l(-127.000000, -127.000000, 0.000000, 0.000000) - add r3.w, cb0[44].y, -cb0[159].x - mul r3.w, r3.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[159].y - lt r4.x, l(0.000000), |r2.y| - exp r4.y, -r2.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r2.y - mad r2.y, -r2.y, l(0.240227), l(0.693147) - movc r2.y, r4.x, r4.y, r2.y - add r4.x, cb0[44].y, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.y, l(0.000000), |r2.x| - exp r5.x, -r2.x - add r5.x, -r5.x, l(1.000000) - div r5.x, r5.x, r2.x - mad r2.x, -r2.x, l(0.240227), l(0.693147) - movc r2.x, r4.y, r5.x, r2.x - mul r2.x, r2.x, r4.x - mad r2.x, r3.w, r2.y, r2.x - mad_sat r4.xy, r4.wwww, cb0[160].wyww, cb0[160].zxzz - mul r2.y, r4.w, r2.x - exp r2.y, -r2.y - min r2.y, r2.y, l(1.000000) - max r2.y, r2.y, cb0[161].w - add r2.y, r4.y, r2.y - add r2.y, r4.x, r2.y - min r1.w, r2.y, l(1.000000) - add r2.y, -r1.w, l(1.000000) - dp3_sat r3.w, r8.xyzx, cb0[163].xyzx - log r3.w, r3.w - mul r3.w, r3.w, cb0[164].w - exp r3.w, r3.w - mul r5.xyz, r3.wwww, cb0[164].xyzx - mad r2.w, r2.w, r4.z, -cb0[163].w - max r2.w, r2.w, l(0.000000) - mul r2.x, r2.w, r2.x - exp r2.x, -r2.x - min r2.x, r2.x, l(1.000000) - add r2.x, -r2.x, l(1.000000) - mul r4.yzw, r2.xxxx, r5.xxyz - add r2.x, -r4.x, l(1.000000) - mul r4.xyz, r2.xxxx, r4.yzwy - mad r0.xyw, cb0[161].xyxz, r2.yyyy, r4.xyxz -endif -mul r2.xyw, r1.wwww, r3.xyxz -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r0.z, r0.z, l(1.000000) -mul r0.z, r0.z, l(0.059683) -mad r4.xyz, cb0[156].xyzx, r0.zzzz, cb0[158].xyzx -mad r0.z, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r2.z, l(12.566371) -sqrt r2.z, r2.z -mul r2.z, r2.z, r3.w -max r2.z, r2.z, l(0.001000) -div r0.z, r0.z, r2.z -mad_sat r4.xyz, cb0[157].xyzx, r0.zzzz, r4.xyzx -mul r4.xyz, r4.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r3.xyz, r3.xyzx, r4.xyzx -mad r0.xyz, r3.xyzx, r1.wwww, r0.xywx -lt r40.x, l(0.500000), cb13[12].y -if_nz r40.x - mul r36.xyz, r1.xyzx, l(0.003922, 0.003922, 0.003922, 0.000000) - mul r37.xyz, r0.xyzx, l(0.003922, 0.003922, 0.003922, 0.000000) - mul r38.xyz, r2.xywx, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r38.xyz, r38.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r38.xyz, r38.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r2.xywx - mul r37.xyz, r37.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - mad r39.xyz, r36.xyzx, r38.xyzx, r37.xyzx - mul o0.xyz, r39.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -else - mad o0.xyz, r1.xyzx, r2.xywx, r0.xyzx -endif -dp3 o0.w, r2.xywx, l(0.333333, 0.333333, 0.333333, 0.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0x8A27350D.cso b/src/games/endfield/deferred-lighting/0x8A27350D.cso deleted file mode 100644 index aa5b9fabf7b7818e43ad8825dc601e36c7febb0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62296 zcmeI5YmjBvRo_pamRd7CBhRRjGJmBgu zZV=2dlTj7wx4r_aGSHW{Bj z2m0=%Rp+mz@^P)P)g1q()8G1rx4!**-tj$eeM|SvU;oCtU;q01?&&o6+P9xN^VYY# zX6EC{$I!3H-#!no=30CUpAswj;1rt*tiY4L z;95Ffz9#-ZCL-e#cj93<@qUc!ly|-Q z`0-m{`)vo+oA#0IapZo>o`Qo+k0Z~0WIav_zOC>9=4*H{`o=>A4!`^FpI*Z=uD_zd zp>40>-CkoydriK!*W^-rO>V|@%Eu?|HFLMU-aop=Pc8gqqicK^@UJWSV{40lgRj%R zwY>g2lkS=)4iy3#r@)>$af#v->vk$MXip#XCiW4cWUk6_DKz( e>K1&_ET`9OG9O#a0PZ*Aa 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μ=l3zl6^XcVK-y;2QhZO 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 PG`=L<;=k?96YBmyG7E0^ diff --git a/src/games/endfield/deferred-lighting/0xA1716606.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xA1716606.ps_5_0.asm deleted file mode 100644 index dba3c828e5..0000000000 --- a/src/games/endfield/deferred-lighting/0xA1716606.ps_5_0.asm +++ /dev/null @@ -1,2022 +0,0 @@ -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { 2, 1, -1.000000, 1.000000}, - { 2, 1, 1.000000, 1.000000}, - { 0, 2, 1.000000, -1.000000}, - { 0, 2, 1.000000, 1.000000}, - { 0, 1, 1.000000, 1.000000}, - { 0, 1, -1.000000, 1.000000} } -dcl_constantbuffer CB0[239], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[3], immediateIndexed -dcl_constantbuffer CB3[2054], dynamicIndexed -dcl_constantbuffer CB4[401], dynamicIndexed -dcl_constantbuffer CB5[5], immediateIndexed -dcl_constantbuffer CB6[160], dynamicIndexed -dcl_constantbuffer CB7[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_sampler s4, mode_comparison -dcl_sampler s5, mode_comparison -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture3d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture2d (float,float,float,float) t13 -dcl_resource_texture2d (float,float,float,float) t14 -dcl_resource_texture2d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture2d (float,float,float,float) t17 -dcl_resource_texture2d (float,float,float,float) t18 -dcl_resource_texture3d (float,float,float,float) t19 -dcl_resource_texture3d (float,float,float,float) t20 -dcl_resource_texture3d (float,float,float,float) t21 -dcl_resource_texture3d (float,float,float,float) t22 -dcl_resource_texture3d (float,float,float,float) t23 -dcl_resource_texture3d (float,float,float,float) t24 -dcl_resource_texture2d (float,float,float,float) t25 -dcl_resource_texture2d (float,float,float,float) t26 -dcl_resource_texture2d (float,float,float,float) t27 -dcl_resource_texture2d (float,float,float,float) t28 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 43 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t26.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t27.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r2.xyw, r1.wwww, r3.xyxz -utof r4.xy, r0.xyxx -mul r4.zw, v0.xxxy, cb0[82].zzzw -mad r5.xy, r4.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -add r5.zw, r4.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000) -mul r5.zw, r5.zzzw, cb0[82].zzzw -sample_l_indexable(texture2d)(float,float,float,float) r3.w, r5.zwzz, t1.yzwx, s0, l(0.000000) -mul r6.xyzw, -r5.yyyy, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r5.xxxx, r6.xyzw -mad r5.xyzw, cb0[26].xyzw, r3.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r3.w, r5.y, cb0[1].z -mad r3.w, cb0[0].z, r5.x, r3.w -mad r3.w, cb0[2].z, r5.z, r3.w -add r3.w, r3.w, cb0[3].z -eq r6.x, l(0.000000), cb0[86].w -add r6.yzw, -r5.xxyz, cb0[44].xxyz -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r6.xyz, r6.xxxx, r6.yzwy, r7.xyzx -dp3 r6.w, r6.xyzx, r6.xyzx -max r7.w, r6.w, l(0.000000) -rsq r7.w, r7.w -mul r8.xyzw, r6.xyzw, r7.wwww -lt r9.x, l(0.000488), cb0[238].x -if_nz r9.x - sample_b_indexable(texture2d)(float,float,float,float) r9.yz, v1.xyxx, t25.zxyw, s1, cb0[108].x -else - mov r9.yz, l(0,1.000000,1.000000,0) -endif -lt r10.xy, l(0.500000, 0.500000, 0.000000, 0.000000), cb0[230].xyxx -if_nz r10.x - add r9.w, |r2.y|, |r2.x| - add r9.w, |r2.w|, r9.w - div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w - mul r10.xzw, |r2.xxyw|, r9.wwww - mul r11.xyz, r5.xyzx, cb0[233].xxxx - sample_l_indexable(texture3d)(float,float,float,float) r9.w, r11.xyzx, t10.yzwx, s2, l(0.000000) - mul r11.xyzw, r10.xxzz, l(0.000000, 1.000000, 0.707106, 0.000000) - add r11.xyz, r11.zwzz, r11.xxyx - mad r10.xzw, r10.wwww, l(1.000000, 0.000000, 0.000000, 0.000000), r11.xxyz - mad r11.x, r9.w, l(2.000000), l(-1.000000) - mul r10.xzw, r10.xxzw, r11.xxxx - mov r11.x, |r2.y| - add r11.x, r11.x, l(-0.700000) - mul_sat r11.x, r11.x, l(4.000000) - mad r11.y, r11.x, l(-2.000000), l(3.000000) - mul r11.x, r11.x, r11.x - mul r11.x, r11.x, r11.y - add r11.y, -cb0[233].z, cb0[233].y - mad r11.x, r11.x, r11.y, cb0[233].z - mul r10.xzw, r10.xxzw, r11.xxxx -else - mov r10.xzw, l(0,0,0,0) - mov r9.w, l(0) -endif -mad r11.x, -r3.y, r1.w, l(-0.200000) -if_nz r10.y - mul r11.yzw, r2.xxyw, cb0[237].zzzz - mul r12.xyz, l(0.000000, 1.000000, 0.000000, 0.000000), cb0[229].yyyy - mad r11.yzw, r11.yyzw, cb0[229].xxxx, r12.xxyz - max r10.y, -r2.y, l(0.000000) - min r10.y, r10.y, l(0.900000) - add r10.y, -r10.y, l(1.000000) - mul_sat r12.x, r11.x, l(-10.000000) - mad r12.y, r12.x, l(-2.000000), l(3.000000) - mul r12.x, r12.x, r12.x - mul r12.x, r12.x, r12.y - max r12.x, r12.x, l(0.100000) - min r12.x, r12.x, l(1.000000) - mul r10.y, r10.y, r12.x - mad r11.yzw, r11.yyzw, r10.yyyy, r5.xxyz - add r10.xyz, r10.xzwx, r11.yzwy - mul r11.yzw, r10.yyyy, cb5[1].xxyz - mad r10.xyw, cb5[0].xyxz, r10.xxxx, r11.yzyw - mad r10.xyz, cb5[2].xyzx, r10.zzzz, r10.xywx - add r10.xyz, r10.xyzx, cb5[3].xyzx - mad r12.x, r10.x, l(0.500000), cb5[4].x - mad r10.x, r10.y, l(0.500000), l(0.500000) - add r12.z, -r10.x, cb5[4].y - add r10.xy, r12.xzxx, l(0.500000, 1.000000, 0.000000, 0.000000) - max r10.z, r10.z, l(0.000488) - sample_c_lz_indexable(texture2d)(float,float,float,float) r10.x, r10.xyxx, t9.xxxx, s5, r10.z -else - mov r10.x, l(1.000000) -endif -mov_sat r10.y, r2.y -add r10.z, l(1.000000), -cb0[234].w -mad r10.z, r10.y, r10.z, cb0[234].w -add r11.yz, r5.xxzx, -cb0[44].xxzx -max r10.w, |r11.z|, |r11.y| -mul r11.y, r10.x, r10.z -mul r11.z, l(0.050000), cb0[226].w -mad r11.w, -cb0[226].w, l(0.700000), r10.w -div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z -mul_sat r11.z, r11.z, r11.w -mad r11.w, r11.z, l(-2.000000), l(3.000000) -mul r11.z, r11.z, r11.z -mul r11.z, r11.z, r11.w -mad r10.x, -r10.z, r10.x, l(1.000000) -mad r10.x, r11.z, r10.x, r11.y -deriv_rty_fine r11.yzw, r5.zzxy -deriv_rtx_fine r12.xyz, r5.yzxy -mul r13.xyz, r11.yzwy, r12.xyzx -mad r11.yzw, r11.wwyz, r12.yyzx, -r13.xxyz -dp3 r11.y, r11.yzwy, r11.yzwy -max r11.y, r11.y, l(0.000000) -rsq r11.y, r11.y -mul_sat r11.y, r11.y, r11.z -mad r11.zw, cb0[227].zzzz, l(0.000000, 0.000000, 0.300000, 0.300000), l(0.000000, 0.000000, 0.686000, 0.687000) -add r12.x, |r3.w|, l(-15.000000) -mul_sat r12.x, r12.x, l(0.015000) -add r12.x, -r12.x, l(1.000000) -min r12.y, l(0.990000), cb0[232].w -max r11.z, r11.z, l(0.970000) -add r12.z, -r11.z, l(0.990000) -add r10.y, r10.y, -r11.z -div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r12.z -mul_sat r10.y, r10.y, r11.z -mad r11.z, r10.y, l(-2.000000), l(3.000000) -mul r10.y, r10.y, r10.y -add r12.z, r11.y, l(-0.991000) -mul r12.z, r12.z, l(111.111069) -max r12.z, r12.z, l(0.000000) -mad r12.w, r12.z, l(-2.000000), l(3.000000) -mul r12.z, r12.z, r12.z -mul r12.z, r12.z, r12.w -mad r12.w, r9.w, l(0.200000), l(0.800000) -ge r12.w, r12.w, r1.y -and r12.w, r12.w, l(0x3f800000) -mul r12.z, r12.w, r12.z -mad r10.y, r11.z, r10.y, r12.z -min r10.y, r10.y, l(1.000000) -add r11.z, -r12.y, cb0[232].w -add r10.y, -r12.y, r10.y -div r11.z, l(1.000000, 1.000000, 1.000000, 1.000000), r11.z -mul_sat r10.y, r10.y, r11.z -mad r11.z, r10.y, l(-2.000000), l(3.000000) -mul r10.y, r10.y, r10.y -mul r10.y, r10.y, r11.z -lt r11.z, l(0.000488), cb0[227].y -add r11.y, -r11.w, r11.y -mul_sat r11.y, r11.y, l(-1000.012878) -mad r11.w, r11.y, l(-2.000000), l(3.000000) -mul r11.y, r11.y, r11.y -mul r11.y, r11.y, r11.w -mad r11.w, r3.y, r1.w, l(0.500000) -mul_sat r11.w, r11.w, l(2.500000) -mad r12.y, r11.w, l(-2.000000), l(3.000000) -mul r11.w, r11.w, r11.w -mul r11.w, r11.w, r12.y -mul r11.y, r11.w, r11.y -lt r11.y, l(0.000488), r11.y -and r11.y, r11.y, r11.z -if_nz r11.y - mul r11.yz, |r2.xxwx|, |r2.xxwx| - add r11.w, r11.z, r11.y - div r11.w, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w - mul r11.yz, r11.wwww, r11.yyzy - mul r12.yzw, r2.yywx, l(0.000000, 0.000000, 1.000000, 0.000000) - mad r12.yzw, r2.xxyw, l(0.000000, 1.000000, 0.000000, 0.000000), -r12.yyzw - dp2 r11.w, r12.yzyy, r12.yzyy - rsq r11.w, r11.w - mul r12.yzw, r11.wwww, r12.yyzw - mul r13.xyz, r2.ywxy, r12.yzwy - mad r13.xyz, r12.wyzw, r2.wxyw, -r13.xyzx - dp3 r11.w, r13.xyzx, r13.xyzx - rsq r11.w, r11.w - mul r13.xyz, r11.wwww, r13.xzyx - mad r14.xyz, r5.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.314159, 0.314159, 0.314159, 0.000000) - round_ni r14.xyz, r14.xyzx - add r14.xyz, r14.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000) - add r14.xy, r14.yyyy, r14.xzxx - mul r14.xy, r14.xyxx, l(0.000977, 0.000977, 0.000000, 0.000000) - ge r14.zw, r14.xxxy, -r14.xxxy - frc r14.xy, |r14.xyxx| - movc r14.xy, r14.zwzz, r14.xyxx, -r14.xyxx - mul r14.xy, r14.xyxx, l(1024.000000, 1024.000000, 0.000000, 0.000000) - dp2 r11.w, r14.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r11.w, null, r11.w - mul r11.w, r11.w, l(43758.546875) - frc r11.w, r11.w - ge r14.xy, r2.wxww, l(0.000000, 0.000000, 0.000000, 0.000000) - movc r14.xy, r14.xyxx, l(1.000000,-1.000000,0,0), l(-1.000000,1.000000,0,0) - mul r14.xy, r5.xzxx, r14.xyxx - mul r12.w, r9.w, r11.w - add r14.w, -r11.w, l(1.000000) - mad r14.w, r14.w, l(0.700000), l(0.300000) - mul r15.xy, r12.wwww, l(3.000000, 6.000000, 0.000000, 0.000000) - mad r12.w, -cb0[227].x, r14.w, r15.x - frc r16.x, r12.w - mad r12.w, cb0[227].x, l(-0.300000), r15.y - frc r16.y, r12.w - mul r11.w, r11.w, l(5.000000) - round_ni r11.w, r11.w - add r15.x, r11.w, l(1.000000) - mul r15.y, r5.y, r15.x - mov r5.w, l(0.100000) - mul r15.xy, r5.ywyy, r15.xyxx - frc r15.xy, r15.xyxx - add r15.zw, r16.xxxy, l(0.000000, 0.000000, -1.000000, -1.000000) - add r15.zw, -r15.zzzw, r15.xxxy - add r15.zw, r15.zzzw, l(0.000000, 0.000000, -0.800000, -0.800000) - mul_sat r15.zw, r15.zzzw, l(0.000000, 0.000000, 5.000000, 5.000000) - mad r16.zw, r15.zzzw, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) - mul r15.zw, r15.zzzw, r15.zzzw - mul r15.zw, r15.zzzw, r16.zzzw - add r16.zw, -r15.xxxy, r16.xxxy - max r15.zw, r15.zzzw, r16.zzzw - add r17.xy, -r16.xyxx, r15.xyxx - add r17.xy, r17.xyxx, l(-0.800000, -0.800000, 0.000000, 0.000000) - mul r17.xy, r17.xyxx, l(5.000000, 5.000000, 0.000000, 0.000000) - max r17.xy, r17.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) - mad r17.zw, r17.xxxy, l(0.000000, 0.000000, -2.000000, -2.000000), l(0.000000, 0.000000, 3.000000, 3.000000) - mul r17.xy, r17.xyxx, r17.xyxx - mul r17.xy, r17.xyxx, r17.zwzz - add r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - max r16.zw, r16.zzzw, r17.xxxy - ge r15.xy, r15.xyxx, r16.xyxx - and r15.xy, r15.xyxx, l(0x3f800000, 0x3f800000, 0, 0) - add r16.xy, -r15.zwzz, r16.zwzz - mad r15.xy, r15.xyxx, r16.xyxx, r15.zwzz - mad r11.w, r15.x, r15.x, l(-0.400000) - mul_sat r11.w, r11.w, l(1.666667) - mad r12.w, r11.w, l(-2.000000), l(3.000000) - mul r11.w, r11.w, r11.w - mul r11.w, r11.w, r12.w - mad r12.w, r15.y, l(2.000000), l(-1.000000) - mul r14.w, r11.w, l(0.010000) - mul r15.x, r12.w, r14.w - mad r16.x, r9.w, l(0.100000), r15.x - mul r14.w, r11.w, r14.w - mad r14.w, r14.w, r12.w, r9.w - mul r16.y, r9.w, r14.w - mov r14.z, r5.y - mad r14.xyzw, r14.yzxz, cb0[228].xyxy, r16.xyxy - sample_b_indexable(texture2d)(float,float,float,float) r16.xyzw, r14.xyxx, t11.xyzw, s2, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r14.xyzw, r14.zwzz, t11.xyzw, s2, cb0[108].x - mul r14.xyzw, r11.zzzz, r14.xyzw - mad r14.xyzw, r16.xyzw, r11.yyyy, r14.xyzw - mad r11.yz, r14.xxyx, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000) - mad r14.x, r11.w, l(2.000000), l(-1.000000) - mad_sat r14.x, r14.x, l(0.800000), r15.y - mad r14.y, -r14.w, l(0.500000), l(1.000000) - mad r14.x, r14.x, r14.y, l(-0.700000) - mul_sat r14.x, r14.x, l(3.333333) - mad r14.y, r14.x, l(-2.000000), l(3.000000) - mul r14.x, r14.x, r14.x - mul r14.x, r14.x, r14.y - mul r12.w, r12.w, r14.w - mad_sat r11.w, r12.w, l(0.500000), r11.w - mad r11.w, r11.w, l(0.500000), l(0.100000) - max r11.w, r11.w, r14.x - add r12.w, -r11.w, l(1.000000) - max r12.w, r12.w, l(0.000000) - mul r14.x, r12.w, r12.w - mul r14.x, r14.x, r14.x - mul r12.w, r12.w, r14.x - ge r12.w, r14.z, r12.w - and r12.w, r12.w, l(0x3f800000) - mad r11.w, r11.w, l(0.700000), l(0.200000) - mad r11.w, r12.w, r11.w, l(0.100000) - mul r11.w, r14.z, r11.w - mul r11.w, r11.w, cb0[227].y - mul r11.w, r11.w, l(0.330000) - ge r12.w, r1.z, l(0.045000) - and r12.w, r12.w, l(0x3f800000) - mul r12.w, r10.x, r12.w - mul r12.w, r12.w, cb0[226].x - mul r12.w, r12.x, r12.w - mul r11.w, r11.w, r12.w - dp2 r12.w, r11.yzyy, r11.yzyy - min r12.w, r12.w, l(1.000000) - add r12.w, -r12.w, l(1.000000) - sqrt r12.w, r12.w - max r12.w, r12.w, l(0.000488) - mul_sat r14.x, r11.w, l(10.000000) - mad r14.y, r14.x, l(-2.000000), l(3.000000) - mul r14.x, r14.x, r14.x - mul r14.x, r14.x, r14.y - mul r14.x, r14.x, cb0[227].y - mul r14.xy, r11.yzyy, r14.xxxx - add r11.y, l(-1.500000), cb0[227].y - mul_sat r11.y, r11.y, l(0.666667) - mad r11.z, r11.y, l(-2.000000), l(3.000000) - mul r11.y, r11.y, r11.y - mul r11.y, r11.y, r11.z - mul r11.z, r11.y, l(-0.200000) - mad r11.y, -r11.y, l(-0.200000), r12.w - mad r14.z, r11.w, r11.y, r11.z - dp3 r11.y, r14.xyzx, r14.xyzx - max r11.y, r11.y, l(0.000000) - rsq r11.y, r11.y - mul r14.xyz, r11.yyyy, r14.xyzx - mov r15.x, r12.z - mov r15.y, r13.x - mov r15.z, r2.x - dp3 r15.x, r15.xyzx, r14.xyzx - mov r13.w, r2.y - dp2 r15.y, r13.zwzz, r14.yzyy - mov r13.x, r12.y - mov r13.z, r2.w - dp3 r15.z, r13.xyzx, r14.xyzx - mad r3.xyz, -r3.xyzx, r1.wwww, r15.xyzx - mad r13.xyz, r11.wwww, r3.xyzx, r2.xywx - mul r1.w, r11.w, cb0[227].y - mul r1.w, r1.w, l(0.330000) -else - mov r13.xyz, r2.xywx - mov r1.w, l(0) -endif -lt r3.x, l(0.000488), r10.y -if_nz r3.x - mul r3.xy, -r5.xzxx, cb0[232].xyxx - frc r11.yz, r3.xxyx - lt r12.yz, l(0.000000, 0.000488, 0.000488, 0.000000), cb0[231].yywy - if_nz r12.y - round_ni r3.xy, r3.xyxx - mul r3.xy, r3.xyxx, l(0.000977, 0.000977, 0.000000, 0.000000) - ge r12.yw, r3.xxxy, -r3.xxxy - frc r3.xy, |r3.xyxx| - movc r3.xy, r12.ywyy, r3.xyxx, -r3.xyxx - mul r3.xy, r3.xyxx, l(1024.000000, 1024.000000, 0.000000, 0.000000) - dp2 r3.x, r3.xyxx, l(12.989800, 78.233002, 0.000000, 0.000000) - sincos r3.x, null, r3.x - mul r3.x, r3.x, l(43758.546875) - frc r3.x, r3.x - add r3.y, r3.x, cb0[231].x - frc r3.y, r3.y - mul r3.z, cb0[232].z, cb0[232].z - mul r3.y, r3.z, r3.y - round_ni r3.y, r3.y - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), cb0[232].z - ge r3.x, l(0.500000), r3.x - and r3.x, r3.x, l(0x3f800000) - add r12.yw, -r11.yyyz, r11.zzzy - mad r11.yz, r3.xxxx, r12.yywy, r11.yyzy - div r3.x, r3.y, cb0[232].z - ge r11.w, r3.x, -r3.x - frc r3.x, |r3.x| - movc r3.x, r11.w, r3.x, -r3.x - mul r3.x, r3.x, cb0[232].z - mul r14.x, r3.x, r3.z - add r3.x, l(-1.000000), cb0[232].z - mul r3.y, r3.z, r3.y - round_ni r3.y, r3.y - add r3.x, -r3.y, r3.x - mul r14.y, r3.x, r3.z - mad r3.xy, r11.yzyy, r3.zzzz, r14.xyxx - frc r3.xy, r3.xyxx - sample_b_indexable(texture2d)(float,float,float,float) r3.xy, r3.xyxx, t12.xyzw, s1, cb0[108].x - mul r3.xy, r3.xyxx, cb0[231].yyyy - mad r3.xy, r3.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), -cb0[231].yyyy - else - mov r3.xy, l(0,0,0,0) - endif - if_nz r12.z - mov r14.xw, l(0,0,0,0.500000) - mov r14.y, cb0[231].z - mad r11.yz, -r5.xxzx, cb0[232].xxyx, r14.xxyx - mul r14.z, r9.w, l(0.500000) - add r11.yz, r11.yyzy, r14.zzwz - add r11.yz, r11.yyzy, l(0.000000, -0.500000, -0.500000, 0.000000) - sample_b_indexable(texture2d)(float,float,float,float) r14.xy, r11.yzyy, t12.zwxy, s2, cb0[108].x - mov r15.xz, cb0[231].zzwz - mov r15.y, l(0) - mad r11.yz, -r5.xxzx, cb0[232].xxyx, -r15.xxyx - add r15.y, -r9.w, l(1.000000) - mov r15.x, l(0.500000) - mad r12.yz, l(0.000000, 1.000000, 0.500000, 0.000000), r15.xxyx, l(0.000000, -0.500000, -0.500000, 0.000000) - add r11.yz, r11.yyzy, -r12.yyzy - sample_b_indexable(texture2d)(float,float,float,float) r14.zw, r11.yzyy, t12.xyzw, s2, cb0[108].x - mul r14.xyzw, r14.xyzw, cb0[231].wwww - mad r14.xyzw, r14.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), -r15.zzzz - mul r14.xyzw, r9.wwww, r14.xyzw - add r11.yz, r14.zzwz, r14.xxyx - add r3.xy, r3.xyxx, r11.yzyy - endif - mul r11.y, r2.z, l(0.300000) - mad r11.y, r9.w, l(0.700000), r11.y - add r11.z, r2.z, l(-0.100000) - mul_sat r11.z, r11.z, l(100.000000) - mul r11.y, r11.z, r11.y - mul r11.z, r1.y, r11.y - min r11.z, r11.z, l(0.990000) - mad_sat r11.y, r11.y, r1.y, l(0.600000) - add r11.y, -r11.z, r11.y - add r11.z, -r11.z, cb0[232].w - div r11.y, l(1.000000, 1.000000, 1.000000, 1.000000), r11.y - mul_sat r11.y, r11.y, r11.z - mad r11.z, r11.y, l(-2.000000), l(3.000000) - mul r11.y, r11.y, r11.y - mul r11.y, r11.y, r11.z - mul r10.y, r10.y, cb0[226].x - dp2 r11.z, r3.xyxx, r3.xyxx - min r11.z, r11.z, l(1.000000) - add r11.z, -r11.z, l(1.000000) - sqrt r11.z, r11.z - max r3.z, r11.z, l(0.000488) - dp3 r11.z, r3.xyzx, r3.xyzx - rsq r11.z, r11.z - mul r3.xyz, r3.yzxy, r11.zzzz - mul r11.z, r3.y, l(1.000000) - mul r11.w, r11.y, r10.y - mul r11.w, r10.x, r11.w - mul r11.w, r12.x, r11.w - mad r3.xyz, r3.xyzx, l(1.000000, 1.000000, -1.000000, 0.000000), -r2.xywx - mad r13.xyz, r11.wwww, r3.xyzx, r2.xywx - mul r3.x, r1.y, l(0.200000) - add r3.y, -r9.w, l(1.000000) - mul r3.y, r3.y, cb0[232].w - mul r3.z, r3.y, l(0.500000) - mad r3.y, -r3.y, l(0.500000), l(1.000000) - mad r3.y, r11.y, r3.y, r3.z - add r3.z, l(-0.600000), cb0[232].w - mul_sat r3.z, r3.z, l(2.500000) - mad r9.w, r3.z, l(-2.000000), l(3.000000) - mul r3.z, r3.z, r3.z - mul r3.z, r3.z, r9.w - mad_sat r3.y, r3.z, l(0.600000), r3.y - mul r3.y, r3.y, r10.y - mul r3.y, r11.z, r3.y - div r3.x, l(1.000000, 1.000000, 1.000000, 1.000000), r3.x - mul_sat r3.x, r3.x, r3.y - mad r3.y, r3.x, l(-2.000000), l(3.000000) - mul r3.x, r3.x, r3.x - mul r3.x, r3.x, r3.y - mul r3.x, r10.x, r3.x - mul r3.x, r12.x, r3.x - max r3.x, r3.x, l(0.000000) -else - mov r3.x, l(0) -endif -min r3.y, r9.z, r9.y -mul r3.z, r10.z, cb0[234].z -mad r9.w, -cb0[234].z, r10.z, l(1.000000) -mad r3.z, r10.x, r9.w, r3.z -mad r9.w, cb0[234].x, cb0[226].w, -cb0[226].w -add r10.x, r10.w, -cb0[226].w -div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w -mul_sat r9.w, r9.w, r10.x -mad r10.x, r9.w, l(-2.000000), l(3.000000) -mul r9.w, r9.w, r9.w -mul r9.w, r9.w, r10.x -add r10.x, -r3.z, cb0[234].y -mad r3.z, r9.w, r10.x, r3.z -add r3.z, -r3.z, l(1.000000) -mul r9.w, r3.z, r9.y -add r1.z, r1.z, l(-0.050000) -add r10.x, -r2.z, l(1.000000) -mad_sat r10.y, r10.x, cb0[226].z, cb0[226].y -mad r10.y, r1.w, cb0[228].z, r10.y -mul r10.z, r2.z, r3.x -mad_sat r10.y, r10.z, l(0.100000), r10.y -add r10.z, -r10.y, l(1.000000) -mad r10.y, r1.x, r10.z, r10.y -mul_sat r10.z, r11.x, l(3.333333) -mad r10.w, r10.z, l(-2.000000), l(3.000000) -mul r10.z, r10.z, r10.z -mad r10.z, -r10.w, r10.z, l(1.000000) -mul r10.w, r10.y, cb0[226].x -add r11.x, -r1.x, l(1.000000) -mul r10.w, r10.w, r11.x -mul r10.w, r10.z, r10.w -mad r10.w, r10.w, l(-0.750000), l(1.000000) -mad r10.y, r10.y, l(-0.300000), l(0.900000) -sqrt r11.x, r10.x -add r10.y, r10.y, r11.x -add_sat r10.y, r10.y, l(-0.600000) -max r10.y, r10.x, r10.y -min r10.y, r10.y, l(0.990000) -add_sat r11.x, l(2.000000), -cb0[226].x -mul r11.x, r11.x, cb0[226].x -mul r10.z, r10.z, r11.x -mad r3.z, -r9.y, r3.z, l(1.000000) -mul r3.z, r3.z, r10.z -add r9.y, -r10.x, r10.y -mad r3.z, r3.z, r9.y, r10.x -add r3.z, -r3.z, l(1.000000) -mul_sat r1.zw, r1.zzzw, l(0.000000, 0.000000, 1.052600, 20.000000) -mad r9.y, r1.w, l(-2.000000), l(3.000000) -mul r1.w, r1.w, r1.w -mul r1.w, r1.w, r9.y -max r1.w, r1.w, r3.x -mad r1.w, r1.w, l(-0.900000), l(1.000000) -mul r3.x, r1.w, r3.z -add r9.y, r9.z, l(-1.000000) -mad r10.x, r1.z, r9.y, l(1.000000) -add r10.y, -r1.z, l(1.000000) -movc r9.xy, r9.xxxx, r10.xyxx, l(1.000000,1.000000,0,0) -min r1.z, r3.x, r9.x -mad r1.w, r3.z, r1.w, -r1.z -mad r1.z, r3.y, r1.w, r1.z -add r1.w, -r1.z, r2.z -mad r11.w, r9.w, r1.w, r1.z -ld_indexable(texture2d)(float,float,float,float) r10.xyz, r0.xyzz, t28.xyzw -min r1.z, r10.w, r9.y -add r1.w, -r1.z, r10.w -mad r1.z, r3.y, r1.w, r1.z -add r1.w, -r1.z, l(1.000000) -mad r1.z, r9.w, r1.w, r1.z -mul r3.xyz, r1.zzzz, r10.xyzx -mul r9.xyz, r1.xxxx, r3.xyzx -mad r9.xyz, r10.xyzx, r1.zzzz, -r9.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r1.xzw, r3.xxyz, r1.xxxx, r1.zzzz -dp3 r2.z, r13.xyzx, r8.xyzx -max r10.x, r2.z, l(0.000000) -mul r3.y, r11.w, r11.w -mul r12.x, r10.x, r10.x -mul r12.z, r10.x, r12.x -mul r2.z, r3.y, r3.y -mul r3.z, r3.y, r2.z -mov r10.yzw, l(0,0.036546,9.063200,0.990440) -dp2 r14.x, l(3.327070, 1.000000, 0.000000, 0.000000), r10.xyxx -dp2 r14.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r10.xzxx -mov r3.x, l(1.000000) -dp2 r9.w, r14.xyxx, r3.xyxx -mov r12.yw, l(0,9.044010,0,1.000000) -dp3 r14.x, l(3.596850, -1.367720, 1.000000, 0.000000), r12.xzwx -dp3 r14.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r12.xyzx -mov r15.x, l(5.565890) -mov r15.yz, r12.xxzx -dp3 r14.z, l(1.000000, 19.788601, -20.212299, 0.000000), r15.xyzx -dp3 r10.y, r14.xyzx, r3.xyzx -div r9.w, r9.w, r10.y -dp2 r14.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r10.xwxx -mov r12.x, l(1.296780) -mov r12.y, r10.x -dp2 r14.y, l(1.000000, -0.755907, 0.000000, 0.000000), r12.xyxx -dp2 r10.y, r14.xyxx, r3.xyxx -dp3 r14.x, l(2.923380, 59.418800, 1.000000, 0.000000), r12.yzwy -mov r12.xw, l(20.322500,0,0,121.563004) -dp3 r14.y, l(1.000000, -27.030199, 222.591995, 0.000000), r12.xyzx -dp3 r14.z, l(626.130005, 316.627014, 1.000000, 0.000000), r12.yzwy -dp3 r3.x, r14.xyzx, r3.xyzx -div r3.x, r10.y, r3.x -mad r10.yzw, r1.xxzw, r9.wwww, r3.xxxx -add r3.x, r3.x, r9.w -ld_indexable(texture2d)(float,float,float,float) r12.x, r0.xyzz, t7.xyzw -lt r0.z, l(0.001000), r12.x -if_nz r0.z - dp3 r0.z, -r8.xyzx, r13.xyzx - add r0.z, r0.z, r0.z - mad r14.xyz, r13.xyzx, -r0.zzzz, -r8.xyzx - dp3 r0.z, -cb3[0].xyzx, r14.xyzx - mad r15.xyz, cb3[0].xyzx, r0.zzzz, r14.xyzx - lt r0.z, r0.z, cb3[4].z - dp3 r3.z, r15.xyzx, r15.xyzx - max r3.z, r3.z, l(0.000061) - rsq r3.z, r3.z - mul r15.xyz, r3.zzzz, r15.xyzx - mul r15.xyz, r15.xyzx, cb3[4].yyyy - mad r15.xyz, -cb3[0].xyzx, cb3[4].zzzz, r15.xyzx - dp3 r3.z, r15.xyzx, r15.xyzx - rsq r3.z, r3.z - mul r15.xyz, r3.zzzz, r15.xyzx - movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx - mad r15.xyz, r6.xyzx, r7.wwww, r14.xyzx - dp3 r0.z, r15.xyzx, r15.xyzx - max r0.z, r0.z, l(0.000061) - rsq r0.z, r0.z - mul r15.xyz, r0.zzzz, r15.xyzx - dp3_sat r11.y, r14.xyzx, r13.xyzx - dp3_sat r0.z, r13.xyzx, r15.xyzx - min r11.z, r10.x, l(1.000000) - mad r3.z, r0.z, r2.z, -r0.z - mad r0.z, r3.z, r0.z, l(1.000000) - dp3_sat r3.z, r8.xyzx, r15.xyzx - add r3.z, -r3.z, l(1.000000) - mul r9.w, r3.z, r3.z - mul r9.w, r9.w, r9.w - mul r12.z, r3.z, r9.w - add r12.w, -r11.w, l(1.000000) - mad r14.w, -r12.w, l(0.383026), l(-0.076195) - mad r14.w, r12.w, r14.w, l(1.049970) - mad r12.w, r12.w, r14.w, l(0.409255) - min r12.w, r12.w, l(0.999000) - add r14.w, -r12.w, l(1.000000) - add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r15.xyz, r15.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r1.xzwx - mad r3.z, -r9.w, r3.z, l(1.000000) - mad r16.xyz, r1.xzwx, r3.zzzz, r12.zzzz - mul r0.z, r0.z, r0.z - div r0.z, r2.z, r0.z - mad r17.xy, -r11.zyzz, r2.zzzz, r11.zyzz - mad r17.xy, r17.xyxx, r11.zyzz, r2.zzzz - sqrt r17.xy, r17.xyxx - mul r17.xy, r11.yzyy, r17.xyxx - add r2.z, r17.y, r17.x - add r2.z, r2.z, l(0.000100) - div r2.z, l(0.500000), r2.z - mul r0.z, r0.z, r2.z - mul r16.xyz, r0.zzzz, r16.xyzx - min r16.xyz, r16.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r17.xyzw, r11.zwyw, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r17.xyxx, t13.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r2.z, r17.zwzz, t13.yzxw, s1, l(0.000000) - mul r0.z, r0.z, r2.z - mul r0.z, r12.w, r0.z - div r0.z, r0.z, r14.w - mul r17.xyz, r15.xyzx, r15.xyzx - mul r17.xyz, r0.zzzz, r17.xyzx - mad r15.xyz, -r15.xyzx, r14.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r15.xyz, r17.xyzx, r15.xyzx - add r15.xyz, r15.xyzx, r16.xyzx - mul r15.xyz, r15.xyzx, cb3[4].xxxx - max r15.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r15.xyz, r15.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - dp3_sat r0.z, r14.xyzx, r2.xywx - mul r14.xyz, r0.zzzz, r9.xyzx - mad r14.xyz, r15.xyzx, r11.yyyy, r14.xyzx - mul r14.xyz, r14.xyzx, cb3[1].xyzx - mov r12.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r12.yzw, r12.xyxx, t8.wxyz, s1, cb0[108].x - add r0.z, -r12.x, l(1.000000) - mad r12.xyz, r14.xyzx, r12.yzwy, -r14.xyzx - mad r12.xyz, r0.zzzz, r12.xyzx, r14.xyzx - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.zwzz, t14.yzxw, s1, l(0.000000) - min r0.z, r0.z, l(1.000000) - mul r12.xyz, r0.zzzz, r12.xyzx -else - mov r12.xyz, l(0,0,0,0) -endif -mul r11.yz, r4.xxyx, l(0.000000, 0.031250, 0.031250, 0.000000) -round_ni r11.yz, r11.yyzy -mad r0.z, r11.z, cb2[1].y, r11.y -mul r0.z, r0.z, l(8.000000) -ftoi r0.z, r0.z -mad r2.z, -cb0[85].y, cb2[2].w, |r3.w| -round_ni r2.z, r2.z -add r3.z, l(-1.000000), cb2[1].w -max r9.w, r2.z, l(0.000000) -min r3.z, r3.z, r9.w -mul r9.w, r3.z, l(8.000000) -ftoi r9.w, r9.w -ge r2.z, r3.z, r2.z -iadd r3.z, r9.w, cb0[110].y -dp3 r9.w, -r8.xyzx, r13.xyzx -add r9.w, r9.w, r9.w -mad r14.xyz, r13.xyzx, -r9.wwww, -r8.xyzx -min r11.x, r10.x, l(1.000000) -add r9.w, -r11.w, l(1.000000) -mad r10.x, -r9.w, l(0.383026), l(-0.076195) -mad r10.x, r9.w, r10.x, l(1.049970) -mad r9.w, r9.w, r10.x, l(0.409255) -min r9.w, r9.w, l(0.999000) -add r10.x, -r9.w, l(1.000000) -add r15.xyz, -r1.xzwx, l(1.000000, 1.000000, 1.000000, 0.000000) -mad r15.xyz, r15.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r1.xzwx -mad r11.yz, r11.xxwx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) -sample_l_indexable(texture2d)(float,float,float,float) r11.y, r11.yzyy, t13.yxzw, s1, l(0.000000) -mad r16.xyz, -r15.xyzx, r10.xxxx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r15.xyz, r15.xyzx, r15.xyzx -mov r17.w, l(1.000000) -mov r18.y, l(1.000000) -mov r19.z, r11.w -mov r20.xyz, l(0,0,0,0) -mov r11.z, l(1.000000) -mov r12.w, l(0) -loop - ilt r14.w, l(7), r12.w - breakc_nz r14.w - iadd r14.w, r0.z, r12.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r14.w, r14.w, l(0), t0.xxxx - iadd r15.w, r3.z, r12.w - ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r15.w, r15.w, l(0), t0.xxxx - and r14.w, r14.w, r15.w - and r14.w, r2.z, r14.w - ishl r15.w, r12.w, l(5) - mov r21.xyz, l(0,0,0,0) - mov r16.w, r11.z - mov r18.z, r14.w - loop - breakc_z r18.z - firstbit_lo r18.w, r18.z - ishl r19.w, l(1), r18.w - xor r19.w, r18.z, r19.w - iadd r18.w, r15.w, r18.w - bfi r22.xyzw, l(29, 29, 29, 29), l(3, 3, 3, 3), r18.wwww, l(1, 3, 5, 6) - bfi r20.w, l(29), l(3), r18.w, l(7) - ftou r21.w, cb3[r22.z + 6].w - ieq r21.w, r21.w, l(1) - if_nz r21.w - add r17.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx - and r23.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.z + 6].xzyx - and r24.xyz, l(0x0000ffff, 0x0000ffff, 0x0000ffff, 0), cb3[r22.w + 6].yxzy - ushr r25.xyz, cb3[r22.z + 6].xzyx, l(16, 16, 16, 0) - ushr r26.xyz, cb3[r22.w + 6].yxzy, l(16, 16, 16, 0) - f16tof32 r23.xyz, r23.xyzx - f16tof32 r24.xyz, r24.xyzx - f16tof32 r25.xyz, r25.xyzx - f16tof32 r26.xyw, r26.yxyz - mov r27.xz, r23.xxzx - mov r27.yw, r25.xxxz - dp4 r21.w, r17.xyzw, r27.xyzw - mov r25.x, r23.y - mov r25.z, r24.y - mov r25.w, r26.x - dp4 r22.z, r17.xyzw, r25.xyzw - mov r26.xz, r24.xxzx - dp4 r17.x, r17.xyzw, r26.xyzw - max r17.y, |r21.w|, |r22.z| - max r17.x, |r17.x|, r17.y - mad r17.y, cb3[r20.w + 6].x, l(0.500000), l(0.500000) - add r17.x, -r17.y, r17.x - mad r17.y, -cb3[r20.w + 6].x, l(0.500000), l(0.500000) - div_sat r17.x, r17.x, r17.y - add r17.x, -r17.x, l(1.000000) - mul r17.x, r17.x, r17.x - else - mov r17.x, l(1.000000) - endif - lt r17.y, l(0.500000), cb3[r22.y + 6].z - lt r17.z, r17.x, l(0.001000) - or r17.z, r17.y, r17.z - if_nz r17.z - mov r18.z, r19.w - continue - endif - ishl r17.z, r18.w, l(3) - bfi r18.w, l(29), l(3), r18.w, l(2) - lt r21.w, cb3[r17.z + 6].w, l(1.500000) - if_nz r21.w - mad r21.w, cb3[r18.w + 6].y, l(0.500000), l(0.500000) - add r23.x, r21.w, -|cb3[r18.w + 6].x| - add r23.y, -r23.x, cb3[r18.w + 6].y - add r21.w, -|r23.x|, l(1.000000) - add r21.w, -|r23.y|, r21.w - ge r22.z, cb3[r18.w + 6].x, l(0.000000) - max r24.x, r21.w, l(0.000488) - movc r23.z, r22.z, r24.x, -r24.x - dp3 r24.x, r23.xyzx, r23.xyzx - rsq r24.x, r24.x - mul r24.xyz, r23.xyzx, r24.xxxx - add r25.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx - dp3 r23.z, r25.xyzx, r25.xyzx - rsq r24.w, r23.z - mul r26.xyz, r24.wwww, r25.xyzx - dp3_sat r18.x, r13.xyzx, r26.xyzx - ftoi r25.w, cb3[r20.w + 6].w - mul r27.xyz, r24.xyzx, cb3[r18.w + 6].zzzz - mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - mad r29.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - ftou r26.w, cb3[r17.z + 6].w - and r26.w, r26.w, l(1) - ieq r27.w, r26.w, l(0) - not r27.w, r27.w - lt r28.w, l(0.000000), cb3[r18.w + 6].z - and r27.w, r27.w, r28.w - dp3 r28.w, r28.xyzx, r28.xyzx - sqrt r28.w, r28.w - dp3 r29.w, r29.xyzx, r29.xyzx - sqrt r29.w, r29.w - dp3 r30.x, r13.xyzx, r28.xyzx - div r30.x, r30.x, r28.w - dp3 r30.y, r13.xyzx, r29.xyzx - div r30.y, r30.y, r29.w - add r30.x, r30.y, r30.x - mul_sat r30.x, r30.x, l(0.500000) - dp3 r29.x, r28.xyzx, r29.xyzx - mad r28.w, r28.w, r29.w, r29.x - mad r28.w, r28.w, l(0.500000), l(1.000000) - div r30.y, l(1.000000, 1.000000, 1.000000, 1.000000), r28.w - movc r19.xy, r27.wwww, r30.xyxx, r18.xyxx - lt r28.w, cb3[r22.w + 6].w, l(0.000000) - if_nz r28.w - mul r28.w, cb3[r22.x + 6].w, cb3[r22.x + 6].w - mul r28.w, r23.z, r28.w - mad r28.w, -r28.w, r28.w, l(1.000000) - max r28.w, r28.w, l(0.000000) - add r23.z, r23.z, l(1.000000) - div r23.z, l(1.000000, 1.000000, 1.000000, 1.000000), r23.z - and r29.x, r27.w, l(0x3f800000) - add r29.y, r19.y, -r23.z - mad r23.z, r29.x, r29.y, r23.z - mul r28.w, r28.w, r28.w - mul r23.z, r23.z, r28.w - else - mul r29.xyz, r25.xyzx, cb3[r22.x + 6].wwww - dp3 r28.w, r29.xyzx, r29.xyzx - min r28.w, r28.w, l(1.000000) - add r28.w, -r28.w, l(1.000000) - log r28.w, r28.w - mul r28.w, r28.w, cb3[r22.w + 6].w - exp r28.w, r28.w - mul r23.z, r19.y, r28.w - endif - dp3 r19.y, r26.xyzx, -r24.xyzx - add r19.y, r19.y, -cb3[r18.w + 6].z - mul_sat r19.y, r19.y, cb3[r18.w + 6].w - mul r19.y, r19.y, r19.y - movc r19.y, r26.w, l(1.000000), r19.y - mul r19.y, r19.y, r23.z - not r23.z, r27.w - ige r24.x, r25.w, l(0) - and r23.z, r23.z, r24.x - if_nz r23.z - if_z r26.w - ishl r23.z, r25.w, l(2) - mul r24.xyz, r5.yyyy, cb6[r23.z + 33].xywx - mad r24.xyz, cb6[r23.z + 32].xywx, r5.xxxx, r24.xyzx - mad r24.xyz, cb6[r23.z + 34].xywx, r5.zzzz, r24.xyzx - add r24.xyz, r24.xyzx, cb6[r23.z + 35].xywx - div_sat r24.xy, r24.xyxx, r24.zzzz - mad r24.xy, r24.xyxx, cb6[r25.w + 0].zwzz, cb6[r25.w + 0].xyxx - else - ishl r23.z, r25.w, l(2) - dp3 r29.x, -r25.xyzx, cb6[r23.z + 32].xyzx - dp3 r29.y, -r25.xyzx, cb6[r23.z + 33].xyzx - dp3 r29.z, -r25.xyzx, cb6[r23.z + 34].xyzx - lt r23.z, |r29.x|, |r29.y| - and r23.z, r23.z, l(1) - dp2 r24.z, |r29.xyxx|, icb[r23.z + 0].xyxx - lt r24.z, r24.z, |r29.z| - movc r23.z, r24.z, l(2), r23.z - dp3 r24.z, r29.xyzx, icb[r23.z + 0].xyzx - lt r24.z, r24.z, l(0.000000) - bfi r23.z, l(31), l(1), r23.z, r24.z - ushr r24.z, r23.z, l(1) - dp3 r24.z, r29.xyzx, icb[r24.z + 0].xyzx - div r28.w, l(0.000244), cb6[r25.w + 0].w - add r28.w, -r28.w, l(0.500000) - utof r29.w, r23.z - ult r30.x, r23.z, l(2) - and r30.x, r30.x, l(2) - dp2 r29.x, r29.xzxx, icb[r30.x + 0].xzxx - mul r29.x, r29.x, icb[r23.z + 4].z - div r29.x, r29.x, |r24.z| - mad r29.x, r29.x, r28.w, r29.w - add r29.x, r29.x, l(0.500000) - mul_sat r30.x, r29.x, l(0.166667) - iadd r29.x, l(-1), icb[r23.z + 4].y - dp2 r29.x, r29.yzyy, icb[r29.x + 0].xyxx - mul r23.z, r29.x, icb[r23.z + 4].w - div r23.z, r23.z, |r24.z| - mad_sat r30.y, -r23.z, r28.w, l(0.500000) - mad r24.xy, r30.xyxx, cb6[r25.w + 0].zwzz, cb6[r25.w + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r23.z, r24.xyxx, t15.yzxw, s1, l(0.000000) - mul r19.y, r19.y, r23.z - endif - lt r23.z, l(0.000000), r19.y - if_nz r23.z - if_z r26.w - ftoi r24.x, cb3[r22.y + 6].x - else - add r29.xyz, r5.xyzx, -cb3[r22.x + 6].xyzx - lt r30.xyz, |r29.yzzy|, |r29.xxyx| - and r24.y, r30.y, r30.x - lt r29.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r29.xyzx - ushr r24.z, cb3[r18.w + 6].w, l(24) - ubfe r30.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r18.w + 6].wwww - movc r24.z, r29.x, r24.z, r30.x - and r25.w, l(255), cb3[r18.w + 6].w - movc r25.w, r29.y, r30.y, r25.w - ubfe r26.w, l(8), l(8), cb3[r22.y + 6].x - and r28.w, l(255), cb3[r22.y + 6].x - movc r26.w, r29.z, r26.w, r28.w - movc r25.w, r30.z, r25.w, r26.w - movc r24.y, r24.y, r24.z, r25.w - ilt r24.z, r24.y, l(80) - movc r24.x, r24.z, r24.y, l(-1) - endif - ishl r24.y, r24.x, l(2) - mad r29.xyz, r26.xyzx, cb4[r24.x + 288].xxxx, r5.xyzx - mul r24.z, l(5.000000), cb4[r24.x + 288].y - mad r29.xyz, r13.xyzx, r24.zzzz, r29.xyzx - mul r30.xyzw, r29.yyyy, cb4[r24.y + 65].xyzw - mad r30.xyzw, cb4[r24.y + 64].xyzw, r29.xxxx, r30.xyzw - mad r29.xyzw, cb4[r24.y + 66].xyzw, r29.zzzz, r30.xyzw - add r29.xyzw, r29.xyzw, cb4[r24.y + 67].xyzw - div r29.xyz, r29.xyzx, r29.wwww - ge r30.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r29.xyzx - ge r31.xyz, r29.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r24.yz, -cb4[r24.x + 344].xxyx, cb4[r24.x + 344].zzwz - mad r24.yz, r29.xxyx, r24.yyzy, cb4[r24.x + 344].xxyx - mad r29.xy, r24.yzyy, cb4[400].zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - round_ni r29.xy, r29.xyxx - mad r24.yz, r24.yyzy, cb4[400].zzwz, -r29.xxyx - add r32.xyzw, r24.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r33.xyzw, r32.xxzz, r32.xxzz - add r32.xz, -r24.yyzy, l(1.000000, 0.000000, 1.000000, 0.000000) - min r34.xy, r24.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r34.zw, r24.yyyz, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r35.xy, r32.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r34.zw, -r34.zzzw, r34.zzzw, r32.yyyw - add r34.zw, r34.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r36.xy, r34.zwzz, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r33.xz, r33.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r24.yz, r33.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r24.yyzy - mul r37.xy, r24.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r24.yz, -r34.xxyx, r34.xxyx, r32.xxzx - add r24.yz, r24.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r34.xy, r24.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r24.yz, r32.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r37.z, r34.x - mov r37.w, r24.y - mov r35.z, r36.x - mov r35.w, r33.x - add r32.xyzw, r35.zwxz, r37.zwxz - mov r34.z, r37.y - mov r34.w, r24.z - mov r36.z, r35.y - mov r36.w, r33.z - add r33.xyz, r34.zywz, r36.zywz - div r34.xyz, r35.xzwx, r32.zwyz - add r34.xyz, r34.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r34.xyz, r34.yxzy, cb4[400].xxxx - div r35.xyz, r36.zywz, r33.xyzx - add r35.xyz, r35.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r35.xyz, r35.xyzx, cb4[400].yyyy - mov r34.w, r35.x - mad r36.xyzw, r29.xyxy, cb4[400].xyxy, r34.ywxw - mad r24.yz, r29.xxyx, cb4[400].xxyx, r34.zzwz - mov r35.w, r34.y - mov r34.yw, r35.yyyz - mad r37.xyzw, r29.xyxy, cb4[400].xyxy, r34.xyzy - mad r35.xyzw, r29.xyxy, cb4[400].xyxy, r35.wywz - mad r34.xyzw, r29.xyxy, cb4[400].xyxy, r34.xwzw - mul r38.xyzw, r32.zwyz, r33.xxxy - sample_c_lz_indexable(texture2d)(float,float,float,float) r25.w, r36.xyxx, t6.xxxx, s4, r29.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r26.w, r36.zwzz, t6.xxxx, s4, r29.z - mul r26.w, r26.w, r38.y - mad r25.w, r38.x, r25.w, r26.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.y, r24.yzyy, t6.xxxx, s4, r29.z - mad r24.y, r38.z, r24.y, r25.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r35.xyxx, t6.xxxx, s4, r29.z - mad r24.y, r38.w, r24.z, r24.y - mul r36.xyzw, r32.xyzw, r33.yyzz - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r37.xyxx, t6.xxxx, s4, r29.z - mad r24.y, r36.x, r24.z, r24.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r37.zwzz, t6.xxxx, s4, r29.z - mad r24.y, r36.y, r24.z, r24.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r35.zwzz, t6.xxxx, s4, r29.z - mad r24.y, r36.z, r24.z, r24.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r24.z, r34.xyxx, t6.xxxx, s4, r29.z - mad r24.y, r36.w, r24.z, r24.y - ige r24.z, r24.x, l(0) - or r29.xyw, r30.xyxz, r31.xyxz - or r25.w, r29.y, r29.x - or r25.w, r29.w, r25.w - and r26.w, r29.z, l(0x7fffffff) - ult r26.w, l(0x7f800000), r26.w - or r25.w, r25.w, r26.w - mul r26.w, r32.y, r33.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r28.w, r34.zwzz, t6.xxxx, s4, r29.z - mad r24.y, r26.w, r28.w, r24.y - add r24.y, r24.y, l(-1.000000) - mad r24.x, cb4[r24.x + 288].w, r24.y, l(1.000000) - movc r24.x, r25.w, l(1.000000), r24.x - movc r24.x, r24.z, r24.x, l(1.000000) - else - mov r24.x, l(1.000000) - endif - if_nz r27.w - dp3 r24.y, r14.xyzx, r27.xyzx - mul_sat r24.z, r24.w, cb3[r18.w + 6].z - mad r24.z, r24.z, l(0.500000), r3.y - min r24.z, r24.z, l(1.000000) - div r24.z, r3.y, r24.z - mad r29.xyz, r14.xyzx, r24.yyyy, -r27.xyzx - dp3 r25.w, r28.xyzx, r29.xyzx - mul r24.y, r24.y, r24.y - mad r24.y, cb3[r18.w + 6].z, cb3[r18.w + 6].z, -r24.y - div_sat r24.y, r25.w, r24.y - mad r27.xyz, r27.xyzx, r24.yyyy, r28.xyzx - dp3 r24.y, r27.xyzx, r27.xyzx - rsq r24.y, r24.y - mul r26.xyz, r24.yyyy, r27.xyzx - else - mov r24.z, l(1.000000) - endif - if_nz r23.z - mul_sat r23.z, r24.w, cb3[r20.w + 6].y - mad r26.xyz, r6.xyzx, r7.wwww, r26.xyzx - dp3 r24.y, r26.xyzx, r26.xyzx - max r24.y, r24.y, l(0.000061) - rsq r24.y, r24.y - mul r26.xyz, r24.yyyy, r26.xyzx - max r21.w, r21.w, l(0.000000) - movc r23.w, r22.z, r21.w, -r21.w - dp3 r21.w, r23.xywx, r23.xywx - rsq r21.w, r21.w - mul r23.xyw, r21.wwww, r23.xyxw - mul r23.xyw, r23.xyxw, cb3[r18.w + 6].zzzz - mad r27.xyz, -r23.xywx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - mad r23.xyw, r23.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000), r25.xyxz - dp3 r21.w, r13.xyzx, r27.xyzx - dp3 r22.z, r27.xyzx, r27.xyzx - sqrt r22.z, r22.z - div r21.w, r21.w, r22.z - dp3 r22.z, r13.xyzx, r23.xywx - dp3 r23.x, r23.xywx, r23.xywx - sqrt r23.x, r23.x - div r22.z, r22.z, r23.x - add r21.w, r21.w, r22.z - mul_sat r21.w, r21.w, l(0.500000) - movc r18.x, r27.w, r21.w, r18.x - dp3_sat r21.w, r13.xyzx, r26.xyzx - dp3_sat r22.z, r8.xyzx, r26.xyzx - lt r23.x, l(0.000000), r23.z - mul r23.y, r23.z, r23.z - mad r23.z, r22.z, l(3.600000), l(0.400000) - div r23.y, r23.y, r23.z - mad r23.y, r11.w, r11.w, r23.y - min r23.y, r23.y, l(1.000000) - movc r23.x, r23.x, r23.y, r3.y - mul r23.x, r23.x, r23.x - mad r23.y, r21.w, r23.x, -r21.w - mad r21.w, r23.y, r21.w, l(1.000000) - add r22.z, -r22.z, l(1.000000) - mul r23.y, r22.z, r22.z - mul r23.y, r23.y, r23.y - mul r23.z, r22.z, r23.y - mad r22.z, -r23.y, r22.z, l(1.000000) - mad r23.yzw, r1.xxzw, r22.zzzz, r23.zzzz - mul r21.w, r21.w, r21.w - div r21.w, r23.x, r21.w - mul r21.w, r24.z, r21.w - mad r22.z, -r11.x, r23.x, r11.x - mad r22.z, r22.z, r11.x, r23.x - sqrt r22.z, r22.z - mad r24.y, -r19.x, r23.x, r19.x - mad r23.x, r24.y, r19.x, r23.x - sqrt r23.x, r23.x - mul r23.x, r11.x, r23.x - mad r22.z, r19.x, r22.z, r23.x - add r22.z, r22.z, l(0.000100) - div r22.z, l(0.500000), r22.z - mul r21.w, r21.w, r22.z - mul r23.xyz, r21.wwww, r23.yzwy - min r23.xyz, r23.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r24.yz, r19.xxzx, l(0.000000, 0.968750, 0.968750, 0.000000), l(0.000000, 0.015625, 0.015625, 0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r21.w, r24.yzyy, t13.yzwx, s1, l(0.000000) - mul r21.w, r11.y, r21.w - mul r21.w, r9.w, r21.w - div r21.w, r21.w, r10.x - mul r24.yzw, r15.xxyz, r21.wwww - div r24.yzw, r24.yyzw, r16.xxyz - add r23.xyz, r23.xyzx, r24.yzwy - mul r23.xyz, r23.xyzx, cb3[r20.w + 6].zzzz - max r23.xyz, r23.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r23.xyz, r23.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r24.yzw, r9.xxyz, r18.xxxx - mad r23.xyz, r23.xyzx, r19.xxxx, r24.yzwy - mul r24.yzw, r19.yyyy, cb3[r17.z + 6].xxyz - mul r24.xyz, r24.xxxx, r24.yzwy - mul r24.xyz, r17.xxxx, r24.xyzx - mul r23.xyz, r23.xyzx, r24.xyzx - else - mov r23.xyz, l(0,0,0,0) - endif - else - if_z r17.y - mad r17.x, cb3[r18.w + 6].y, l(0.500000), l(0.500000) - add r24.x, r17.x, -|cb3[r18.w + 6].x| - add r24.y, -r24.x, cb3[r18.w + 6].y - add r17.x, -|r24.x|, l(1.000000) - add r17.x, -|r24.y|, r17.x - max r17.x, r17.x, l(0.000488) - ge r17.y, cb3[r18.w + 6].x, l(0.000000) - movc r24.z, r17.y, r17.x, -r17.x - dp3 r17.x, r24.xyzx, r24.xyzx - rsq r17.x, r17.x - mul r24.xyz, r17.xxxx, r24.xyzx - add r25.xyz, -r5.xyzx, cb3[r22.x + 6].xyzx - dp3 r17.x, r25.xyzx, r25.xyzx - rsq r17.y, r17.x - mul r26.xyz, r17.yyyy, r25.xyzx - ftoi r17.y, cb3[r20.w + 6].w - mul r27.xyz, r24.xyzx, cb3[r18.w + 6].zzzz - mad r28.xyz, -r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - mad r27.xyz, r27.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r25.xyzx - ftou r17.z, cb3[r17.z + 6].w - and r17.z, r17.z, l(1) - ieq r18.x, r17.z, l(0) - not r18.x, r18.x - lt r19.x, l(0.000000), cb3[r18.w + 6].z - and r18.x, r18.x, r19.x - dp3 r19.x, r28.xyzx, r28.xyzx - dp3 r19.y, r27.xyzx, r27.xyzx - sqrt r19.xy, r19.xyxx - dp3 r20.w, r28.xyzx, r27.xyzx - mad r19.x, r19.x, r19.y, r20.w - mad r19.x, r19.x, l(0.500000), l(1.000000) - div r19.x, l(1.000000, 1.000000, 1.000000, 1.000000), r19.x - movc r19.x, r18.x, r19.x, l(1.000000) - lt r19.y, cb3[r22.w + 6].w, l(0.000000) - if_nz r19.y - mul r19.y, cb3[r22.x + 6].w, cb3[r22.x + 6].w - mul r19.y, r17.x, r19.y - mad r19.y, -r19.y, r19.y, l(1.000000) - max r19.y, r19.y, l(0.000000) - add r17.x, r17.x, l(1.000000) - div r17.x, l(1.000000, 1.000000, 1.000000, 1.000000), r17.x - and r20.w, r18.x, l(0x3f800000) - add r21.w, -r17.x, r19.x - mad r17.x, r20.w, r21.w, r17.x - mul r19.y, r19.y, r19.y - mul r17.x, r17.x, r19.y - else - mul r27.xyz, r25.xyzx, cb3[r22.x + 6].wwww - dp3 r19.y, r27.xyzx, r27.xyzx - min r19.y, r19.y, l(1.000000) - add r19.y, -r19.y, l(1.000000) - log r19.y, r19.y - mul r19.y, r19.y, cb3[r22.w + 6].w - exp r19.y, r19.y - mul r17.x, r19.y, r19.x - endif - dp3 r19.x, r26.xyzx, -r24.xyzx - add r19.x, r19.x, -cb3[r18.w + 6].z - mul_sat r19.x, r19.x, cb3[r18.w + 6].w - mul r19.x, r19.x, r19.x - movc r19.x, r17.z, l(1.000000), r19.x - mul r17.x, r17.x, r19.x - not r18.x, r18.x - ige r19.x, r17.y, l(0) - and r18.x, r18.x, r19.x - if_nz r18.x - if_z r17.z - ishl r18.x, r17.y, l(2) - mul r24.xyz, r5.yyyy, cb6[r18.x + 33].xywx - mad r24.xyz, cb6[r18.x + 32].xywx, r5.xxxx, r24.xyzx - mad r24.xyz, cb6[r18.x + 34].xywx, r5.zzzz, r24.xyzx - add r24.xyz, r24.xyzx, cb6[r18.x + 35].xywx - div_sat r19.xy, r24.xyxx, r24.zzzz - mad r19.xy, r19.xyxx, cb6[r17.y + 0].zwzz, cb6[r17.y + 0].xyxx - else - ishl r18.x, r17.y, l(2) - dp3 r24.x, -r25.xyzx, cb6[r18.x + 32].xyzx - dp3 r24.y, -r25.xyzx, cb6[r18.x + 33].xyzx - dp3 r24.z, -r25.xyzx, cb6[r18.x + 34].xyzx - lt r18.x, |r24.x|, |r24.y| - and r18.x, r18.x, l(1) - dp2 r20.w, |r24.xyxx|, icb[r18.x + 0].xyxx - lt r20.w, r20.w, |r24.z| - movc r18.x, r20.w, l(2), r18.x - dp3 r20.w, r24.xyzx, icb[r18.x + 0].xyzx - lt r20.w, r20.w, l(0.000000) - bfi r18.x, l(31), l(1), r18.x, r20.w - ushr r20.w, r18.x, l(1) - dp3 r20.w, r24.xyzx, icb[r20.w + 0].xyzx - div r21.w, l(0.000244), cb6[r17.y + 0].w - add r21.w, -r21.w, l(0.500000) - utof r22.z, r18.x - ult r22.w, r18.x, l(2) - and r22.w, r22.w, l(2) - dp2 r22.w, r24.xzxx, icb[r22.w + 0].xzxx - mul r22.w, r22.w, icb[r18.x + 4].z - div r22.w, r22.w, |r20.w| - mad r22.z, r22.w, r21.w, r22.z - add r22.z, r22.z, l(0.500000) - mul_sat r25.x, r22.z, l(0.166667) - iadd r22.z, l(-1), icb[r18.x + 4].y - dp2 r22.z, r24.yzyy, icb[r22.z + 0].xyxx - mul r18.x, r22.z, icb[r18.x + 4].w - div r18.x, r18.x, |r20.w| - mad_sat r25.y, -r18.x, r21.w, l(0.500000) - mad r19.xy, r25.xyxx, cb6[r17.y + 0].zwzz, cb6[r17.y + 0].xyxx - endif - sample_l_indexable(texture2d)(float,float,float,float) r17.y, r19.xyxx, t15.yxzw, s1, l(0.000000) - mul r17.x, r17.y, r17.x - endif - lt r17.x, l(0.000000), r17.x - if_nz r17.x - if_z r17.z - ftoi r17.x, cb3[r22.y + 6].x - else - add r22.xzw, r5.xxyz, -cb3[r22.x + 6].xxyz - lt r24.xyz, |r22.zwwz|, |r22.xxzx| - and r17.y, r24.y, r24.x - lt r22.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xxzw - ushr r17.z, cb3[r18.w + 6].w, l(24) - ubfe r19.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), cb3[r18.w + 6].wwww - movc r17.z, r22.x, r17.z, r19.x - and r18.x, l(255), cb3[r18.w + 6].w - movc r18.x, r22.z, r19.y, r18.x - ubfe r18.w, l(8), l(8), cb3[r22.y + 6].x - and r19.x, l(255), cb3[r22.y + 6].x - movc r18.w, r22.w, r18.w, r19.x - movc r18.x, r24.z, r18.x, r18.w - movc r17.y, r17.y, r17.z, r18.x - ilt r17.z, r17.y, l(80) - movc r17.x, r17.z, r17.y, l(-1) - endif - ishl r17.y, r17.x, l(2) - mad r22.xyz, r26.xyzx, cb4[r17.x + 288].xxxx, r5.xyzx - mul r17.z, l(5.000000), cb4[r17.x + 288].y - mad r22.xyz, r2.xywx, r17.zzzz, r22.xyzx - mul r24.xyzw, r22.yyyy, cb4[r17.y + 65].xyzw - mad r24.xyzw, cb4[r17.y + 64].xyzw, r22.xxxx, r24.xyzw - mad r22.xyzw, cb4[r17.y + 66].xyzw, r22.zzzz, r24.xyzw - add r22.xyzw, r22.xyzw, cb4[r17.y + 67].xyzw - div r22.xyz, r22.xyzx, r22.wwww - ge r24.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r22.xyzx - ge r25.xyz, r22.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - add r17.yz, -cb4[r17.x + 344].xxyx, cb4[r17.x + 344].zzwz - mad r17.yz, r22.xxyx, r17.yyzy, cb4[r17.x + 344].xxyx - mad r18.xw, r17.yyyz, cb4[400].zzzw, l(0.500000, 0.000000, 0.000000, 0.500000) - round_ni r18.xw, r18.xxxw - mad r17.yz, r17.yyzy, cb4[400].zzwz, -r18.xxwx - add r26.xyzw, r17.yyzz, l(0.500000, 1.000000, 0.500000, 1.000000) - mul r27.xyzw, r26.xxzz, r26.xxzz - add r19.xy, -r17.yzyy, l(1.000000, 1.000000, 0.000000, 0.000000) - min r22.xy, r17.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000) - max r26.xz, r17.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000) - mul r28.xy, r19.xyxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r26.xz, -r26.xxzx, r26.xxzx, r26.yywy - add r26.xz, r26.xxzx, l(1.000000, 0.000000, 1.000000, 0.000000) - mul r29.xy, r26.xzxx, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r26.xz, r27.xxzx, l(0.080000, 0.000000, 0.080000, 0.000000) - mad r17.yz, r27.yywy, l(0.000000, 0.500000, 0.500000, 0.000000), -r17.yyzy - mul r27.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mad r17.yz, -r22.xxyx, r22.xxyx, r19.xxyx - add r17.yz, r17.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000) - mul r30.xy, r17.yzyy, l(0.160000, 0.160000, 0.000000, 0.000000) - mul r17.yz, r26.yywy, l(0.000000, 0.160000, 0.160000, 0.000000) - mov r27.z, r30.x - mov r27.w, r17.y - mov r28.z, r29.x - mov r28.w, r26.x - add r31.xyzw, r27.zwxz, r28.zwxz - mov r30.z, r27.y - mov r30.w, r17.z - mov r29.z, r28.y - mov r29.w, r26.z - add r22.xyw, r29.zyzw, r30.zyzw - div r26.xyz, r28.xzwx, r31.zwyz - add r26.xyz, r26.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r26.xyz, r26.yxzy, cb4[400].xxxx - div r27.xyz, r29.zywz, r22.xywx - add r27.xyz, r27.xyzx, l(-2.500000, -0.500000, 1.500000, 0.000000) - mul r27.xyz, r27.xyzx, cb4[400].yyyy - mov r26.w, r27.x - mad r28.xyzw, r18.xwxw, cb4[400].xyxy, r26.ywxw - mad r17.yz, r18.xxwx, cb4[400].xxyx, r26.zzwz - mov r27.w, r26.y - mov r26.yw, r27.yyyz - mad r29.xyzw, r18.xwxw, cb4[400].xyxy, r26.xyzy - mad r27.xyzw, r18.xwxw, cb4[400].xyxy, r27.wywz - mad r26.xyzw, r18.xwxw, cb4[400].xyxy, r26.xwzw - mul r30.xyzw, r22.xxxy, r31.zwyz - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r28.xyxx, t6.xxxx, s4, r22.z - sample_c_lz_indexable(texture2d)(float,float,float,float) r18.w, r28.zwzz, t6.xxxx, s4, r22.z - mul r18.w, r18.w, r30.y - mad r18.x, r30.x, r18.x, r18.w - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.y, r17.yzyy, t6.xxxx, s4, r22.z - mad r17.y, r30.z, r17.y, r18.x - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r27.xyxx, t6.xxxx, s4, r22.z - mad r17.y, r30.w, r17.z, r17.y - mul r28.xyzw, r22.yyww, r31.xyzw - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r29.xyxx, t6.xxxx, s4, r22.z - mad r17.y, r28.x, r17.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r29.zwzz, t6.xxxx, s4, r22.z - mad r17.y, r28.y, r17.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r27.zwzz, t6.xxxx, s4, r22.z - mad r17.y, r28.z, r17.z, r17.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r17.z, r26.xyxx, t6.xxxx, s4, r22.z - mad r17.y, r28.w, r17.z, r17.y - ige r17.z, r17.x, l(0) - or r24.xyz, r24.xyzx, r25.xyzx - or r18.x, r24.y, r24.x - or r18.x, r24.z, r18.x - and r18.w, r22.z, l(0x7fffffff) - ult r18.w, l(0x7f800000), r18.w - or r18.x, r18.w, r18.x - mul r18.w, r22.w, r31.y - sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r26.zwzz, t6.xxxx, s4, r22.z - mad r17.y, r18.w, r19.x, r17.y - add r17.y, r17.y, l(-1.000000) - mad r17.x, cb4[r17.x + 288].w, r17.y, l(1.000000) - movc r17.x, r18.x, l(1.000000), r17.x - movc r17.x, r17.z, r17.x, l(1.000000) - else - mov r17.x, l(1.000000) - endif - else - mov r17.x, l(1.000000) - endif - mul r16.w, r16.w, r17.x - mov r23.xyz, l(0,0,0,0) - endif - add r21.xyz, r21.xyzx, r23.xyzx - mov r18.z, r19.w - endloop - mov r11.z, r16.w - add r20.xyz, r20.xyzx, r21.xyzx - iadd r12.w, r12.w, l(1) -endloop -mad r6.xyz, r20.xyzx, r11.zzzz, r12.xyzx -ne r3.yz, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xxyx -if_nz r3.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - dp3 r2.z, r2.xywx, r8.xyzx - max r2.z, r2.z, l(0.000000) - add r2.z, r0.z, r2.z - mad r3.y, r11.w, l(-16.000000), l(-1.000000) - exp r3.y, r3.y - log r2.z, |r2.z| - mul r2.z, r2.z, r3.y - exp r2.z, r2.z - add r2.z, r0.z, r2.z - add r2.z, r2.z, l(-1.000000) - mov_sat r11.xyz, r2.zzzz - mad r12.xyz, r9.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - mad r12.xyz, r9.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r12.xyzx - add r12.xyz, r12.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - mad r12.xyz, r9.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r12.xyzx - add r12.xyz, r12.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r12.xyz, r0.zzzz, r12.xyzx - max r12.xyz, r0.zzzz, r12.xyzx -else - mov r11.xyz, r1.yyyy - mov r12.xyz, r1.yyyy -endif -mad r15.xyz, r2.xywx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[216].x -mad r16.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r4.xyxx -dp2 r0.z, r16.xyxx, l(0.067111, 0.005837, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx -mad r16.xyz, cb0[6].xzyx, -cb0[216].wwww, cb0[214].xzyx -add r16.xyz, r15.xzyx, -r16.xyzx -max r0.z, |r16.y|, |r16.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.y, |r16.z|, l(-208.000000) -mul_sat r1.y, r1.y, l(0.031250) -max r0.z, r0.z, r1.y -ne r1.y, l(0.000000), cb0[214].w -lt r2.z, r0.z, l(1.000000) -and r1.y, r1.y, r2.z -if_nz r1.y - mad r16.xyz, cb0[6].xzyx, -cb0[216].yyyy, cb0[214].xzyx - add r16.xyz, r15.xzyx, -r16.xyzx - max r1.y, |r16.y|, |r16.x| - add r1.y, r1.y, l(-29.000000) - mul_sat r1.y, r1.y, l(0.500000) - add r2.z, |r16.z|, l(-13.000000) - mul_sat r2.z, r2.z, l(0.500000) - max r1.y, r1.y, r2.z - lt r2.z, r1.y, l(1.000000) - if_nz r2.z - mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r16.xyzx, cb0[215].xyzx - round_ni r17.xyz, r17.xyzx - mad r16.xyz, r16.xyzx, cb0[215].xyzx, -r17.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t19.yzwx, s2, l(0.000000) - add r2.z, -r1.y, l(1.000000) - mul r3.y, l(0.500000), cb0[215].y - mad r9.w, -cb0[215].y, l(0.500000), l(1.000000) - max r3.y, r3.y, r16.y - min r3.y, r9.w, r3.y - mul r16.w, r3.y, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t20.xyzw, s1, l(0.000000) - mad r3.y, r18.w, r2.z, r0.z - add r19.xyz, r16.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t20.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r17.yyyy, r19.xyzx - mov r19.w, r17.y - mul r19.xyzw, r2.zzzz, r19.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t20.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r17.xxxx, r16.xyzx - mov r16.w, r17.x - mul r16.xyzw, r2.zzzz, r16.xyzw - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r17.wwww, r18.xyzx - mul r17.xyzw, r2.zzzz, r17.xyzw - else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r3.y, r0.z - endif - mad r18.xyz, cb0[6].xzyx, -cb0[216].zzzz, cb0[214].xzyx - add r18.xyz, r15.xzyx, -r18.xyzx - max r2.z, |r18.y|, |r18.x| - add r2.z, r2.z, l(-116.000000) - mul_sat r2.z, r2.z, l(0.125000) - add r9.w, |r18.z|, l(-52.000000) - mul_sat r9.w, r9.w, l(0.125000) - max r2.z, r2.z, r9.w - lt r9.w, r2.z, l(1.000000) - if_nz r9.w - mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r20.xyz, r18.xyzx, cb0[215].xyzx - round_ni r20.xyz, r20.xyzx - mad r18.xyz, r18.xyzx, cb0[215].xyzx, -r20.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t21.yzwx, s2, l(0.000000) - add r9.w, -r2.z, l(1.000000) - mul r1.y, r1.y, r9.w - mul r9.w, l(0.500000), cb0[215].y - mad r10.x, -cb0[215].y, l(0.500000), l(1.000000) - max r9.w, r9.w, r18.y - min r9.w, r10.x, r9.w - mul r18.w, r9.w, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t22.xyzw, s1, l(0.000000) - mad r3.y, r21.w, r1.y, r3.y - add r22.xyz, r18.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t22.xyzw, s1, l(0.000000) - mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r20.yyyy, r22.xyzx - mov r22.w, r20.y - mad r19.xyzw, r22.xyzw, r1.yyyy, r19.xyzw - add r18.xyz, r18.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t22.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r20.xxxx, r18.xyzx - mov r18.w, r20.x - mad r16.xyzw, r18.xyzw, r1.yyyy, r16.xyzw - mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r18.xyzx - mad r17.xyzw, r20.xyzw, r1.yyyy, r17.xyzw - endif - lt r1.y, l(0.000000), r2.z - if_nz r1.y - mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r15.xyzx, cb0[215].xyzx - mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[215].xyzx - round_ni r18.xyz, r18.xyzx - mad r15.xyz, r15.xyzx, cb0[215].xyzx, -r18.xyzx - mad r18.xyz, -cb0[215].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r15.xyz, r20.xyzx, r15.xyzx - min r15.xyz, r18.xyzx, r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t23.yzwx, s2, l(0.000000) - add r1.y, -r0.z, l(1.000000) - mul r1.y, r1.y, r2.z - max r2.z, r20.y, r15.y - min r2.z, r18.y, r2.z - mul r15.w, r2.z, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t24.xyzw, s1, l(0.000000) - add r20.xyz, r15.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t24.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r21.yyyy, r20.xyzx - mov r20.w, r21.y - mad r19.xyzw, r20.xyzw, r1.yyyy, r19.xyzw - add r15.xyz, r15.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t24.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r21.xxxx, r15.xyzx - mov r15.w, r21.x - mad r16.xyzw, r15.xyzw, r1.yyyy, r16.xyzw - mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r15.xyzx - mad r17.xyzw, r21.xyzw, r1.yyyy, r17.xyzw - mad r3.y, r18.w, r1.y, r3.y - endif - mad_sat r1.y, r3.y, l(2.000000), l(-1.000000) - add r15.x, -r0.z, r1.y - add r0.z, r0.z, r1.y - mul r15.y, r0.z, l(0.500000) -else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r15.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r15.yxyy, cb0[217].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r15.zw, r15.yyyx, cb0[217].wwwy -mad r18.x, r15.w, l(0.375000), r15.z -add r17.xyzw, r17.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[218].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r15.zw, r15.yyyx, cb0[218].wwwy -mad r18.x, r15.w, l(0.375000), r15.z -add r16.xyzw, r16.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[219].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r15.xy, r15.yxyy, cb0[219].wyww -mad r18.x, r15.y, l(0.375000), r15.x -add r15.xyzw, r18.wyzx, r19.xyzw -ge r18.xy, r4.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r18.y, r18.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.zwzz, t18.xyzw, s1, l(0.000000) - lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| - or r4.zw, r19.zzzw, r19.xxxy - or r0.z, r4.w, r4.z - if_nz r0.z - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mov r4.z, l(1.000000) - mov r4.w, r0.z - mov r1.y, l(0) - loop - ge r2.z, l(4.600000), r4.w - breakc_nz r2.z - iadd r2.z, r1.y, l(1) - mul r19.xy, r4.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000) - mov r4.zw, r19.xxxy - mov r1.y, r2.z - continue - endloop - mul r18.xyzw, r4.zzzz, r18.xyzw - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb7[3].x, cb7[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r19.x, r0.z, l(0.003906) - mov r19.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r4.zw, r19.xyxx, t17.zwxy, s1, l(0.000000) - mad r4.zw, r4.zzzw, cb7[2].xxxy, cb7[2].zzzw - mul r19.x, r4.z, l(3.544908) - mul r19.yzw, r4.wwww, r18.yyzw - mul r0.z, r18.x, l(0.406977) - exp r0.z, r0.z - mul r18.xyzw, r0.zzzz, r19.xyzw - mov r19.xyzw, r18.xyzw - mov r0.z, l(0) - loop - uge r2.z, r0.z, r1.y - breakc_nz r2.z - mul r20.xyzw, r19.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - dp4 r2.z, r20.xyzw, r19.xyzw - dp2 r3.y, r20.yxyy, r19.xyxx - dp2 r4.z, r20.zxzz, r19.xzxx - dp2 r4.w, r20.wxww, r19.xwxx - iadd r9.w, r0.z, l(1) - mov r19.x, r2.z - mov r19.y, r3.y - mov r19.zw, r4.zzzw - mov r0.z, r9.w - continue - endloop - mul r18.xyzw, r19.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - mul r19.xyzw, r17.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r18.xyzw, r19.xyzw - dp2 r1.y, r18.yxyy, r19.xyxx - dp2 r2.z, r18.zxzz, r19.xzxx - dp2 r3.y, r18.wxww, r19.xwxx - mul r19.xyzw, r16.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r4.z, r18.xyzw, r19.xyzw - dp2 r4.w, r18.yxyy, r19.xyxx - dp2 r9.w, r18.zxzz, r19.xzxx - dp2 r10.x, r18.wxww, r19.xwxx - mul r19.xyzw, r15.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r12.w, r18.xyzw, r19.xyzw - dp2 r14.w, r18.yxyy, r19.xyxx - dp2 r18.y, r18.zxzz, r19.xzxx - dp2 r18.x, r18.wxww, r19.xwxx - mul r17.w, r0.z, l(0.886227) - mul r17.x, r3.y, l(-1.023327) - mul r17.y, r1.y, l(-1.023327) - mul r17.z, r2.z, l(1.023327) - mul r16.x, r10.x, l(-1.023327) - mul r16.yw, r4.wwwz, l(0.000000, -1.023327, 0.000000, 0.886227) - mul r16.z, r9.w, l(1.023327) - mul r15.w, r12.w, l(0.886227) - mul r15.y, r14.w, l(-1.023327) - mul r15.xz, r18.xxyx, l(-1.023327, 0.000000, 1.023327, 0.000000) - endif -endif -dp3 r0.z, r17.xyzx, r2.xywx -add r0.z, r17.w, r0.z -max r17.x, r0.z, l(0.000000) -dp3 r0.z, r16.xyzx, r2.xywx -add r0.z, r16.w, r0.z -max r17.y, r0.z, l(0.000000) -dp3 r0.z, r15.xyzx, r2.xywx -add r0.z, r15.w, r0.z -max r17.z, r0.z, l(0.000000) -add r0.z, l(-1.000000), cb0[113].x -max r1.y, r11.w, l(0.001000) -log r1.y, r1.y -mad r1.y, -r1.y, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.y -mul r2.xy, r4.xyxx, cb1[0].wwww -round_ni r2.xy, r2.xyxx -add r1.y, |r3.w|, -cb1[2].y -round_ni r1.y, r1.y -add r2.z, l(-1.000000), cb1[1].x -max r2.w, r1.y, l(0.000000) -min r2.z, r2.z, r2.w -ge r1.y, r2.z, r1.y -mad r2.x, r2.y, cb1[0].x, r2.x -ftoi r2.xy, r2.xzxx -iadd r2.xy, r2.xyxx, cb0[110].zwzz -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.x, r2.x, l(0), t0.xxxx -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r2.y, r2.y, l(0), t0.xxxx -and r2.x, r2.y, r2.x -and r1.y, r1.y, r2.x -mul r2.xyz, r17.xyzx, cb0[111].xxxx -dp3 r2.x, r2.xyzx, l(0.212673, 0.715152, 0.072175, 0.000000) -mov r42.x, r2.x // Store ambient luminance for cubemap modulation -mov r5.w, l(1.000000) -mov r13.w, l(1.000000) -mov r2.yzw, l(0,0,0,0) -mov r3.y, l(1.000000) -mov r4.z, r1.y -mov r4.w, l(0) -loop - lt r9.w, l(0.010000), r3.y - ine r10.x, r4.z, l(0) - and r10.x, r9.w, r10.x - if_nz r10.x - firstbit_lo r10.x, r4.z - ishl r11.w, l(1), r10.x - xor r4.z, r4.z, r11.w - ishl r10.x, r10.x, l(3) - dp4 r15.x, cb1[r10.x + 6].xyzw, r5.xyzw - dp4 r15.y, cb1[r10.x + 7].xyzw, r5.xyzw - dp4 r15.z, cb1[r10.x + 8].xyzw, r5.xyzw - ge r16.xyz, cb1[r10.x + 5].xyzx, |r15.xyzx| - and r11.w, r16.y, r16.x - and r11.w, r16.z, r11.w - if_nz r11.w - mul r11.w, l(0.100000), cb1[r10.x + 5].x - mul r16.xyz, |r15.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r16.xy, r16.xyxx, r16.xyxx - add r18.xyz, -|r15.xyzx|, cb1[r10.x + 5].xyzx - mul r18.xyz, r18.xyzx, cb1[r10.x + 9].xyzx - eq r12.w, l(1.000000), cb1[r10.x + 10].x - if_nz r12.w - dp3 r19.x, cb1[r10.x + 6].xyzx, r14.xyzx - dp3 r19.y, cb1[r10.x + 7].xyzx, r14.xyzx - dp3 r19.z, cb1[r10.x + 8].xyzx, r14.xyzx - add r20.xyz, -r15.xyzx, cb1[r10.x + 5].xyzx - div r20.xyz, r20.xyzx, r19.xyzx - add r21.xyz, -r15.xyzx, -cb1[r10.x + 5].xyzx - div r21.xyz, r21.xyzx, r19.xyzx - lt r22.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r19.xyzx - movc r20.xyz, r22.xyzx, r20.xyzx, r21.xyzx - min r12.w, r20.y, r20.x - min r12.w, r20.z, r12.w - mad r15.xyz, r19.xyzx, r12.wwww, r15.xyzx - else - mov r15.xyz, r14.xyzx - endif - dp3 r12.w, r15.xyzx, r15.xyzx - rsq r12.w, r12.w - mul r15.xyz, r12.wwww, r15.xyzx - lt r19.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx - lt r20.xyz, r15.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r19.xyz, -r19.xyzx, r20.xyzx - itof r19.xyz, r19.xyzx - dp3 r12.w, r15.xyzx, r19.xyzx - div r15.xyz, r15.xyzx, r12.wwww - lt r12.w, r15.z, l(0.000000) - add r15.zw, -|r15.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r15.zw, r15.zzzw, r19.xxxy - movc r15.xy, r12.wwww, r15.zwzz, r15.xyxx - dp4 r12.w, cb1[r10.x + 4].xyzw, r13.xyzw - max r12.w, r12.w, l(0.000000) - max r12.w, r12.w, l(0.000100) - min r14.w, r18.z, r18.y - min r14.w, r14.w, r18.x - add r15.z, r16.y, r16.x - mad r15.z, r16.z, r16.z, r15.z - mad r11.w, r11.w, r11.w, -r15.z - mul r11.w, r11.w, cb1[r10.x + 9].x - mul r11.w, r11.w, cb1[r10.x + 9].x - add r15.z, l(1.000000), -cb1[r10.x + 10].y - mul r11.w, r11.w, r15.z - mul r11.w, r11.w, l(100.000000) - mad_sat r11.w, r14.w, cb1[r10.x + 10].y, r11.w - mul r14.w, r11.w, cb1[r10.x + 10].w - mad r15.xy, r15.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r15.xy, r15.xyxx, cb1[1].wwww, cb1[2].wwww - mov r15.z, cb1[r10.x + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r15.xyz, r15.xyzx, t5.xyzw, s3, r0.z - mul r15.xyz, r15.xyzx, cb1[r10.x + 9].wwww - div r15.w, r2.x, r12.w - min r15.w, |r15.w|, l(1.000000) - mad r15.w, r15.w, l(2.000000), r2.x - add r12.w, r12.w, l(2.000000) - div r12.w, r15.w, r12.w - add r12.w, r12.w, l(-1.000000) - mad r12.w, r12.w, cb0[112].w, l(1.000000) - mul r15.xyz, r12.wwww, r15.xyzx - mul r15.xyz, r14.wwww, r15.xyzx - mad r2.yzw, r15.xxyz, r3.yyyy, r2.yyzw - mad r10.x, -r11.w, cb1[r10.x + 10].w, l(1.000000) - mul r3.y, r3.y, r10.x - endif - mov r4.w, l(-1) - continue - else - mov r4.w, r9.w - break - endif - mov r4.w, r9.w -endloop -if_nz r4.w - dp3 r1.y, r14.xyzx, r14.xyzx - rsq r1.y, r1.y - mul r5.xzw, r1.yyyy, r14.xxyz - lt r14.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r5.xzwx - lt r15.xyz, r5.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r14.xyz, -r14.xyzx, r15.xyzx - itof r14.xyz, r14.xyzx - dp3 r1.y, r5.xzwx, r14.xyzx - div r5.xzw, r5.xxzw, r1.yyyy - lt r1.y, r5.w, l(0.000000) - add r4.zw, -|r5.zzzx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r4.zw, r4.zzzw, r14.xxxy - movc r4.zw, r1.yyyy, r4.zzzw, r5.xxxz - mov r13.w, l(1.000000) - dp4 r1.y, cb1[3].xyzw, r13.xyzw - max r1.y, r1.y, l(0.000000) - max r1.y, r1.y, l(0.000100) - mad r4.zw, r4.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000) - mad r13.xy, r4.zwzz, cb1[1].wwww, cb1[2].wwww - mov r13.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r5.xzw, r13.xyzx, t5.xwyz, s3, r0.z - div r0.z, r2.x, r1.y - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r2.x - add r1.y, r1.y, l(2.000000) - div r0.z, r0.z, r1.y - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r5.xzw, r0.zzzz, r5.xxzw - mad r2.yzw, r5.xxzw, r3.yyyy, r2.yyzw -endif -mul r2.xyz, r2.yzwy, cb0[112].zzzz -mul r2.xyz, r2.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].y) -if_nz cb13[13].y - max r42.x, r42.x, l(0.000000) - min r42.x, r42.x, l(1.000000) - mad r42.x, r42.x, l(0.750000), l(0.250000) - mul r2.xyz, r2.xyzx, r42.xxxx -endif -if_nz r3.z - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x - add r1.y, -r0.z, l(1.000000) - mul r13.xyz, r1.yyyy, r2.xyzx - mad r2.xyz, r5.xzwx, r0.zzzz, r13.xyzx -endif -mul r5.xzw, r9.xxyz, r17.xxyz -mul r5.xzw, r5.xxzw, cb0[111].xxxx -add r0.z, -r3.x, l(1.000000) -div r0.z, r0.z, r3.x -mul r1.xyz, r0.zzzz, r1.xzwx -mad r1.xyz, r1.xyzx, r10.yzwy, r10.yzwy -mul r1.xyz, r1.xyzx, r2.xyzx -mul r1.xyz, r11.xyzx, r1.xyzx -mad r1.xyz, r5.xzwx, r12.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r6.xyzx -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r1.w, r8.w, cb0[154].w, -cb0[153].w -max r1.w, r1.w, l(0.000000) -mul r2.x, r0.z, l(-1.442695) -exp r2.x, r2.x -add r2.x, -r2.x, l(1.000000) -div r0.z, r2.x, r0.z -mad r2.x, r5.y, cb0[156].w, cb0[158].w -mul r2.x, r2.x, l(1.442695) -exp r2.x, r2.x -mul r0.z, r0.z, r2.x -mul r0.z, r0.z, -r1.w -mul r2.xyz, r0.zzzz, cb0[155].xyzx -mul r2.xyz, r2.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r2.xyz, r2.xyzx -dp3 r0.z, -r8.xyzx, cb0[154].xyzx -mad r1.w, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r2.w, r0.zzzz, cb0[155].wwww -add r1.w, r1.w, -r2.w -lt r2.w, l(0.000000), cb0[165].z -if_nz r2.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r3.x, r0.y, r0.w, r0.x - dp3 r0.x, -r8.xyzx, -r7.xyzx - add r2.w, r5.y, -cb0[44].y - lt r3.z, l(0.000000), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r3.z - mul r0.x, r0.x, cb0[165].w - div r3.z, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w - mul r4.z, r0.x, r3.z - mad r4.w, r4.z, r2.w, cb0[44].y - mad r2.w, -r4.z, r2.w, r2.w - mad r0.x, -r0.x, r3.z, l(1.000000) - mul r3.z, r8.w, r0.x - mul r4.z, r2.w, cb0[159].z - max r4.z, r4.z, l(-127.000000) - mul r2.w, r2.w, cb0[162].x - max r2.w, r2.w, l(-127.000000) - add r5.x, r4.w, -cb0[159].x - mul r5.x, r5.x, cb0[159].z - max r5.x, r5.x, l(-127.000000) - exp r5.x, -r5.x - mul r5.x, r5.x, cb0[159].y - lt r5.z, l(0.000000), |r4.z| - exp r5.w, -r4.z - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r4.z - mad r4.z, -r4.z, l(0.240227), l(0.693147) - movc r4.z, r5.z, r5.w, r4.z - add r4.w, r4.w, -cb0[162].z - mul r4.w, r4.w, cb0[162].x - max r4.w, r4.w, l(-127.000000) - exp r4.w, -r4.w - mul r4.w, r4.w, cb0[162].y - lt r5.z, l(0.000000), |r2.w| - exp r5.w, -r2.w - add r5.w, -r5.w, l(1.000000) - div r5.w, r5.w, r2.w - mad r2.w, -r2.w, l(0.240227), l(0.693147) - movc r2.w, r5.z, r5.w, r2.w - mul r2.w, r2.w, r4.w - mad r2.w, r5.x, r4.z, r2.w - mad_sat r4.zw, r8.wwww, cb0[160].wwwy, cb0[160].zzzx - mul r3.z, r3.z, r2.w - exp r3.z, -r3.z - min r3.z, r3.z, l(1.000000) - max r3.z, r3.z, cb0[161].w - add r3.z, r4.w, r3.z - add r3.z, r4.z, r3.z - min r3.z, r3.z, l(1.000000) - imad r3.y, r0.w, r3.x, r0.y - ushr r0.yw, r3.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.000031, 0.000000, 0.000031), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[169].wwww, r4.xxxy - mul r6.xy, r0.ywyy, cb0[167].xyxx - mad r0.y, |r3.w|, cb0[166].x, cb0[166].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[166].z - div r6.z, r0.y, cb0[165].z - sample_l_indexable(texture3d)(float,float,float,float) r9.xyzw, r6.xyzx, t16.xyzw, s1, l(0.000000) - add r0.y, |r3.w|, -cb0[168].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r9.xyzw, r9.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r9.xyzw, r0.yyyy, r9.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r3.z, l(1.000000) - dp3_sat r0.w, r8.xyzx, cb0[163].xyzx - log r0.w, r0.w - mul r0.w, r0.w, cb0[164].w - exp r0.w, r0.w - mul r3.xyw, r0.wwww, cb0[164].xyxz - mad r0.x, r0.x, r8.w, -cb0[163].w - max r0.x, r0.x, l(0.000000) - mul r0.x, r0.x, r2.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - add r0.x, -r0.x, l(1.000000) - mul r3.xyw, r0.xxxx, r3.xyxw - add r0.x, -r4.z, l(1.000000) - mul r3.xyw, r0.xxxx, r3.xyxw - mad r0.xyw, cb0[161].xyxz, r0.yyyy, r3.xyxw - mad r0.xyw, r0.xyxw, r9.wwww, r9.xyxz - mul r2.w, r3.z, r9.w -else - add r3.x, r5.y, -cb0[44].y - mul r3.y, r3.x, cb0[159].z - mul r3.x, r3.x, cb0[162].x - add r3.z, cb0[44].y, -cb0[159].x - mul r3.z, r3.z, cb0[159].z - max r3.xyz, r3.xyzx, l(-127.000000, -127.000000, -127.000000, 0.000000) - exp r3.z, -r3.z - mul r3.z, r3.z, cb0[159].y - lt r3.w, l(0.000000), |r3.y| - exp r4.x, -r3.y - add r4.x, -r4.x, l(1.000000) - div r4.x, r4.x, r3.y - mad r3.y, -r3.y, l(0.240227), l(0.693147) - movc r3.y, r3.w, r4.x, r3.y - add r3.w, cb0[44].y, -cb0[162].z - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[162].y - lt r4.x, l(0.000000), |r3.x| - exp r4.y, -r3.x - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r3.x - mad r3.x, -r3.x, l(0.240227), l(0.693147) - movc r3.x, r4.x, r4.y, r3.x - mul r3.x, r3.x, r3.w - mad r3.x, r3.z, r3.y, r3.x - mad_sat r3.yz, r8.wwww, cb0[160].wwyw, cb0[160].zzxz - mul r3.w, r8.w, r3.x - exp r3.w, -r3.w - min r3.w, r3.w, l(1.000000) - max r3.w, r3.w, cb0[161].w - add r3.z, r3.z, r3.w - add r3.z, r3.y, r3.z - min r2.w, r3.z, l(1.000000) - add r3.z, -r2.w, l(1.000000) - dp3_sat r3.w, r8.xyzx, cb0[163].xyzx - log r3.w, r3.w - mul r3.w, r3.w, cb0[164].w - exp r3.w, r3.w - mul r4.xyz, r3.wwww, cb0[164].xyzx - mad r3.w, r6.w, r7.w, -cb0[163].w - max r3.w, r3.w, l(0.000000) - mul r3.x, r3.w, r3.x - exp r3.x, -r3.x - min r3.x, r3.x, l(1.000000) - add r3.x, -r3.x, l(1.000000) - mul r4.xyz, r3.xxxx, r4.xyzx - add r3.x, -r3.y, l(1.000000) - mul r3.xyw, r3.xxxx, r4.xyxz - mad r0.xyw, cb0[161].xyxz, r3.zzzz, r3.xyxw -endif -mul r3.xyz, r2.wwww, r2.xyzx -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r0.z, r0.z, l(1.000000) -mul r0.z, r0.z, l(0.059683) -mad r4.xyz, cb0[156].xyzx, r0.zzzz, cb0[158].xyzx -mad r0.z, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r1.w, l(12.566371) -sqrt r1.w, r1.w -mul r1.w, r1.w, r3.w -max r1.w, r1.w, l(0.001000) -div r0.z, r0.z, r1.w -mad_sat r4.xyz, cb0[157].xyzx, r0.zzzz, r4.xyzx -mul r4.xyz, r4.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r2.xyz, r2.xyzx, r4.xyzx -mad r0.xyz, r2.xyzx, r2.wwww, r0.xywx -lt r41.x, l(0.500000), cb13[12].y -if_nz r41.x - mul r39.xyz, r3.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r39.xyz, r39.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r39.xyz, r39.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r3.xyzx - mul r40.xyz, r0.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - mad o0.xyz, r1.xyzx, r39.xyzx, r40.xyzx -else - mad o0.xyz, r1.xyzx, r3.xyzx, r0.xyzx -endif -dp3 o0.w, r3.xyzx, l(0.333333, 0.333333, 0.333333, 0.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xF314003E.cso b/src/games/endfield/deferred-lighting/0xBB9276D0.cso similarity index 95% rename from src/games/endfield/deferred-lighting/0xF314003E.cso rename to src/games/endfield/deferred-lighting/0xBB9276D0.cso index 9b8304f73bcd1f11074c6955112d7ec0e62169a6..fde61279027c69298e85bb29e5e87530327f957b 100644 GIT binary patch delta 188 zcmca{h4I1_MoE_lCue(I`p)~!(>N(;mJ1wj_|@v(gKNYUK#jaj8SUx%nW%(sm(hx Tm>Geby_woTa&DUVq^t-4dm1n6 delta 207 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 b2Do>q9-SWX1jhK5#+QU!{I|1tLf!ud6&z}t diff --git a/src/games/endfield/deferred-lighting/0xB9D5AA7B.cso b/src/games/endfield/deferred-lighting/0xC75E6D72.cso similarity index 95% rename from src/games/endfield/deferred-lighting/0xB9D5AA7B.cso rename to src/games/endfield/deferred-lighting/0xC75E6D72.cso index 6b6441a7eb6e18e8da29a156fe3f18868942223d..f5bc0c229ee6c7cb04d6bd4bfbeeab85471dff30 100644 GIT binary patch delta 300 zcmZqp%XH=slcY<8lXIsXn`|Fv_KAo;J*Q6>Px!~kz`)=$QF1Y7&t3+G03auM<56*D zM)k>enZFB$F)*+SF$gfQ0L8gL^yG^y|1FfDB2rM=0w`$&WxGLXCIZ*4Vf&4{(md9gXI_*7#JERN-pL+u$O@$0LUrWcvPI3 zQDgF5=I@hVu>27;Vh~_p0gAgpX^Y8?Ys6Vtm>6v~%do8x(rf~XgACz<$}>7JFt9K+ zT3awMuonTv_<(ZX_{`j%5O-Ad_IWSOHCB0xAL7 z!oc9*Aj81GiYy0mNe=@9chh8BR&idCYLJK)$ZeB5#q}ruSSm1CXE(>>1H~+yAU}Xr XY?fX2T#QkDGV5M>M)l3Ad({~MP9`}~ diff --git a/src/games/endfield/deferred-lighting/0xE312F9FE.cso b/src/games/endfield/deferred-lighting/0xE312F9FE.cso new file mode 100644 index 0000000000000000000000000000000000000000..e387ac8b43ab97e9d9e680bfb723c1bbfeb873d9 GIT binary patch literal 62180 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 NLAb?#+Z(6V{omt!Qvd(} literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xE9FA7952.ps_5_0.asm b/src/games/endfield/deferred-lighting/0xE9FA7952.ps_5_0.asm deleted file mode 100644 index e8f2ab16b1..0000000000 --- a/src/games/endfield/deferred-lighting/0xE9FA7952.ps_5_0.asm +++ /dev/null @@ -1,882 +0,0 @@ -ps_5_0 -dcl_globalFlags refactoringAllowed -dcl_constantbuffer CB0[239], immediateIndexed -dcl_constantbuffer CB1[259], dynamicIndexed -dcl_constantbuffer CB2[5], immediateIndexed -dcl_constantbuffer CB3[4], immediateIndexed -dcl_constantbuffer CB13[15], immediateIndexed -dcl_sampler s0, mode_default -dcl_sampler s1, mode_default -dcl_sampler s2, mode_default -dcl_sampler s3, mode_default -dcl_resource_structured t0, 4 -dcl_resource_texture2d (float,float,float,float) t1 -dcl_resource_texture2d (float,float,float,float) t2 -dcl_resource_texture2d (float,float,float,float) t3 -dcl_resource_texture2d (float,float,float,float) t4 -dcl_resource_texture2darray (float,float,float,float) t5 -dcl_resource_texture2d (float,float,float,float) t6 -dcl_resource_texture2d (float,float,float,float) t7 -dcl_resource_texture2d (float,float,float,float) t8 -dcl_resource_texture2d (float,float,float,float) t9 -dcl_resource_texture3d (float,float,float,float) t10 -dcl_resource_texture2d (float,float,float,float) t11 -dcl_resource_texture2d (float,float,float,float) t12 -dcl_resource_texture3d (float,float,float,float) t13 -dcl_resource_texture3d (float,float,float,float) t14 -dcl_resource_texture3d (float,float,float,float) t15 -dcl_resource_texture3d (float,float,float,float) t16 -dcl_resource_texture3d (float,float,float,float) t17 -dcl_resource_texture3d (float,float,float,float) t18 -dcl_resource_texture2d (float,float,float,float) t19 -dcl_resource_texture2d (float,float,float,float) t20 -dcl_resource_texture2d (float,float,float,float) t21 -dcl_resource_texture2d (float,float,float,float) t22 -dcl_input_ps_siv linear noperspective v0.xy, position -dcl_input_ps linear v1.xy -dcl_output o0.xyzw -dcl_temps 30 -ftou r0.xy, v0.xyxx -mov r0.z, l(0) -ld_indexable(texture2d)(float,float,float,float) r1.xyz, r0.xyzz, t20.xyzw -ld_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyzz, t21.xyzw -mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) -dp2 r1.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r2.xyxx| -add r3.y, -r1.w, l(1.000000) -lt r1.w, r3.y, l(0.000000) -ge r4.xy, r2.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -add r4.zw, -|r2.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) -movc r4.xy, r4.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0) -mul r4.xy, r4.xyxx, r4.zwzz -movc r3.xz, r1.wwww, r4.xxyx, r2.xxyx -dp3 r1.w, r3.xyzx, r3.xyzx -rsq r1.w, r1.w -mul r3.xyz, r1.wwww, r3.xyzx -utof r2.xy, r0.xyxx -mul r4.xy, v0.xyxx, cb0[82].zwzz -mad r4.zw, r4.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) -add r5.xy, r2.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) -mul r5.xy, r5.xyxx, cb0[82].zwzz -sample_l_indexable(texture2d)(float,float,float,float) r1.w, r5.xyxx, t1.yzwx, s0, l(0.000000) -mul r5.xyzw, -r4.wwww, cb0[25].xyzw -mad r5.xyzw, cb0[24].xyzw, r4.zzzz, r5.xyzw -mad r5.xyzw, cb0[26].xyzw, r1.wwww, r5.xyzw -add r5.xyzw, r5.xyzw, cb0[27].xyzw -div r5.xyz, r5.xyzx, r5.wwww -mul r1.w, r5.y, cb0[1].z -mad r1.w, cb0[0].z, r5.x, r1.w -mad r1.w, cb0[2].z, r5.z, r1.w -add r1.w, r1.w, cb0[3].z -eq r2.w, l(0.000000), cb0[86].w -add r6.xyz, -r5.xyzx, cb0[44].xyzx -mov r7.x, cb0[0].z -mov r7.y, cb0[1].z -mov r7.z, cb0[2].z -movc r6.xyz, r2.wwww, r6.xyzx, r7.xyzx -dp3 r2.w, r6.xyzx, r6.xyzx -max r4.z, r2.w, l(0.000000) -rsq r4.z, r4.z -mul r8.xyz, r4.zzzz, r6.xyzx -mul r4.w, r2.w, r4.z -lt r6.w, l(0.000488), cb0[238].x -if_nz r6.w - sample_b_indexable(texture2d)(float,float,float,float) r9.xy, v1.xyxx, t19.xyzw, s1, cb0[108].x -else - mov r9.xy, l(1.000000,1.000000,0,0) -endif -min r7.w, r9.y, r9.x -add r1.z, r1.z, l(-0.050000) -mul_sat r1.z, r1.z, l(1.052600) -add r8.w, r9.y, l(-1.000000) -mad r10.x, r1.z, r8.w, l(1.000000) -add r10.y, -r1.z, l(1.000000) -movc r9.yz, r6.wwww, r10.xxyx, l(0,1.000000,1.000000,0) -min r1.z, r2.z, r9.y -add r6.w, -r1.z, r2.z -mad r1.z, r7.w, r6.w, r1.z -add r2.z, -r1.z, r2.z -mad r10.z, r9.x, r2.z, r1.z -ld_indexable(texture2d)(float,float,float,float) r11.xyz, r0.xyzz, t22.xyzw -add r1.z, -r9.z, l(1.000000) -mad r1.z, r7.w, r1.z, r9.z -add r2.z, -r1.z, l(1.000000) -mad r1.z, r9.x, r2.z, r1.z -mul r9.xyz, r1.zzzz, r11.xyzx -mul r12.xyz, r1.xxxx, r9.xyzx -mad r11.xyz, r11.xyzx, r1.zzzz, -r12.xyzx -mad r1.z, -r1.x, l(0.040000), l(0.040000) -mad r9.xyz, r9.xyzx, r1.xxxx, r1.zzzz -dp3 r1.x, r3.xyzx, r8.xyzx -max r12.x, r1.x, l(0.000000) -mul r13.y, r10.z, r10.z -mul r14.x, r12.x, r12.x -mul r14.z, r12.x, r14.x -mul r1.x, r13.y, r13.y -mul r13.z, r13.y, r1.x -mov r12.yzw, l(0,0.036546,9.063200,0.990440) -dp2 r15.x, l(3.327070, 1.000000, 0.000000, 0.000000), r12.xyxx -dp2 r15.y, l(-9.047560, 1.000000, 0.000000, 0.000000), r12.xzxx -mov r13.x, l(1.000000) -dp2 r1.z, r15.xyxx, r13.xyxx -mov r14.yw, l(0,9.044010,0,1.000000) -dp3 r15.x, l(3.596850, -1.367720, 1.000000, 0.000000), r14.xzwx -dp3 r15.y, l(-16.317400, 1.000000, 9.229490, 0.000000), r14.xyzx -mov r16.x, l(5.565890) -mov r16.yz, r14.xxzx -dp3 r15.z, l(1.000000, 19.788601, -20.212299, 0.000000), r16.xyzx -dp3 r2.z, r15.xyzx, r13.xyzx -div r1.z, r1.z, r2.z -dp2 r15.x, l(-1.285140, 1.000000, 0.000000, 0.000000), r12.xwxx -mov r14.x, l(1.296780) -mov r14.y, r12.x -dp2 r15.y, l(1.000000, -0.755907, 0.000000, 0.000000), r14.xyxx -dp2 r2.z, r15.xyxx, r13.xyxx -dp3 r15.x, l(2.923380, 59.418800, 1.000000, 0.000000), r14.yzwy -mov r14.xw, l(20.322500,0,0,121.563004) -dp3 r15.y, l(1.000000, -27.030199, 222.591995, 0.000000), r14.xyzx -dp3 r15.z, l(626.130005, 316.627014, 1.000000, 0.000000), r14.yzwy -dp3 r6.w, r15.xyzx, r13.xyzx -div r2.z, r2.z, r6.w -mad r12.yzw, r9.xxyz, r1.zzzz, r2.zzzz -add r1.z, r1.z, r2.z -ld_indexable(texture2d)(float,float,float,float) r13.x, r0.xyzz, t6.xyzw -lt r0.z, l(0.001000), r13.x -if_nz r0.z - dp3 r0.z, -r8.xyzx, r3.xyzx - add r0.z, r0.z, r0.z - mad r14.xyz, r3.xyzx, -r0.zzzz, -r8.xyzx - dp3 r0.z, -cb2[0].xyzx, r14.xyzx - mad r15.xyz, cb2[0].xyzx, r0.zzzz, r14.xyzx - lt r0.z, r0.z, cb2[4].z - dp3 r2.z, r15.xyzx, r15.xyzx - max r2.z, r2.z, l(0.000061) - rsq r2.z, r2.z - mul r15.xyz, r2.zzzz, r15.xyzx - mul r15.xyz, r15.xyzx, cb2[4].yyyy - mad r15.xyz, -cb2[0].xyzx, cb2[4].zzzz, r15.xyzx - dp3 r2.z, r15.xyzx, r15.xyzx - rsq r2.z, r2.z - mul r15.xyz, r2.zzzz, r15.xyzx - movc r14.xyz, r0.zzzz, r15.xyzx, r14.xyzx - mad r6.xyz, r6.xyzx, r4.zzzz, r14.xyzx - dp3 r0.z, r6.xyzx, r6.xyzx - max r0.z, r0.z, l(0.000061) - rsq r0.z, r0.z - mul r6.xyz, r0.zzzz, r6.xyzx - dp3_sat r10.x, r14.xyzx, r3.xyzx - dp3_sat r0.z, r3.xyzx, r6.xyzx - min r10.y, r12.x, l(1.000000) - mad r2.z, r0.z, r1.x, -r0.z - mad r0.z, r2.z, r0.z, l(1.000000) - dp3_sat r2.z, r8.xyzx, r6.xyzx - add r2.z, -r2.z, l(1.000000) - mul r6.x, r2.z, r2.z - mul r6.x, r6.x, r6.x - mul r6.y, r2.z, r6.x - add r6.z, -r10.z, l(1.000000) - mad r6.w, -r6.z, l(0.383026), l(-0.076195) - mad r6.w, r6.z, r6.w, l(1.049970) - mad r6.z, r6.z, r6.w, l(0.409255) - min r6.z, r6.z, l(0.999000) - add r6.w, -r6.z, l(1.000000) - add r14.xyz, -r9.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r14.xyz, r14.xyzx, l(0.047619, 0.047619, 0.047619, 0.000000), r9.xyzx - mad r2.z, -r6.x, r2.z, l(1.000000) - mad r15.xyz, r9.xyzx, r2.zzzz, r6.yyyy - mul r0.z, r0.z, r0.z - div r0.z, r1.x, r0.z - mad r6.xy, -r10.yxyy, r1.xxxx, r10.yxyy - mad r6.xy, r6.xyxx, r10.yxyy, r1.xxxx - sqrt r6.xy, r6.xyxx - mul r6.xy, r6.xyxx, r10.xyxx - add r1.x, r6.y, r6.x - add r1.x, r1.x, l(0.000100) - div r1.x, l(0.500000), r1.x - mul r0.z, r0.z, r1.x - mul r15.xyz, r0.zzzz, r15.xyzx - min r15.xyz, r15.xyzx, l(2048.000000, 2048.000000, 2048.000000, 0.000000) - mad r16.xyzw, r10.yzxz, l(0.968750, 0.968750, 0.968750, 0.968750), l(0.015625, 0.015625, 0.015625, 0.015625) - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r16.xyxx, t8.yzxw, s1, l(0.000000) - sample_l_indexable(texture2d)(float,float,float,float) r1.x, r16.zwzz, t8.xyzw, s1, l(0.000000) - mul r0.z, r0.z, r1.x - mul r0.z, r6.z, r0.z - div r0.z, r0.z, r6.w - mul r6.xyz, r14.xyzx, r14.xyzx - mul r6.xyz, r0.zzzz, r6.xyzx - mad r14.xyz, -r14.xyzx, r6.wwww, l(1.000000, 1.000000, 1.000000, 0.000000) - div r6.xyz, r6.xyzx, r14.xyzx - add r6.xyz, r6.xyzx, r15.xyzx - mul r6.xyz, r6.xyzx, cb2[4].xxxx - max r6.xyz, r6.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - min r6.xyz, r6.xyzx, l(1000.000000, 1000.000000, 1000.000000, 0.000000) - mul r14.xyz, r10.xxxx, r11.xyzx - mad r6.xyz, r6.xyzx, r10.xxxx, r14.xyzx - mul r6.xyz, r6.xyzx, cb2[1].xyzx - mov r13.y, l(0.500000) - sample_b_indexable(texture2d)(float,float,float,float) r10.xyw, r13.xyxx, t7.xywz, s1, cb0[108].x - add r0.z, -r13.x, l(1.000000) - mad r10.xyw, r6.xyxz, r10.xyxw, -r6.xyxz - mad r6.xyz, r0.zzzz, r10.xywx, r6.xyzx - sample_l_indexable(texture2d)(float,float,float,float) r0.z, r4.xyxx, t9.yzxw, s1, l(0.000000) - min r0.z, r0.z, l(1.000000) - mul r6.xyz, r0.zzzz, r6.xyzx -else - mov r6.xyz, l(0,0,0,0) -endif -ne r10.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[112].xyxx -if_nz r10.x - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t4.yzxw, s0, cb0[108].x - min r0.z, r1.y, r0.z - add r1.x, r0.z, r12.x - mad r2.z, r10.z, l(-16.000000), l(-1.000000) - exp r2.z, r2.z - log r1.x, |r1.x| - mul r1.x, r1.x, r2.z - exp r1.x, r1.x - add r1.x, r0.z, r1.x - add r1.x, r1.x, l(-1.000000) - mov_sat r13.xyz, r1.xxxx - mad r14.xyz, r11.xyzx, l(2.040400, 2.040400, 2.040400, 0.000000), l(-0.332400, -0.332400, -0.332400, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r11.xyzx, l(-4.795100, -4.795100, -4.795100, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.641700, 0.641700, 0.641700, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - mad r14.xyz, r11.xyzx, l(2.755200, 2.755200, 2.755200, 0.000000), r14.xyzx - add r14.xyz, r14.xyzx, l(0.690300, 0.690300, 0.690300, 0.000000) - mul r14.xyz, r0.zzzz, r14.xyzx - max r14.xyz, r0.zzzz, r14.xyzx -else - mov r13.xyz, r1.yyyy - mov r14.xyz, r1.yyyy -endif -mad r15.xyz, r3.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000), r5.xyzx -round_z r0.z, cb0[216].x -mad r1.xy, r0.zzzz, l(2.083000, 4.867000, 0.000000, 0.000000), r2.xyxx -dp2 r0.z, r1.xyxx, l(0.067111, 0.005837, 0.000000, 0.000000) -frc r0.z, r0.z -mul r0.z, r0.z, l(52.982918) -frc r0.z, r0.z -mad r0.z, r0.z, l(2.000000), l(-1.000000) -mad r15.xyz, r0.zzzz, l(0.200000, 0.200000, 0.200000, 0.000000), r15.xyzx -mad r16.xyz, cb0[6].xzyx, -cb0[216].wwww, cb0[214].xzyx -add r16.xyz, r15.xzyx, -r16.xyzx -max r0.z, |r16.y|, |r16.x| -add r0.z, r0.z, l(-464.000000) -mul_sat r0.z, r0.z, l(0.031250) -add r1.x, |r16.z|, l(-208.000000) -mul_sat r1.x, r1.x, l(0.031250) -max r0.z, r0.z, r1.x -ne r1.x, l(0.000000), cb0[214].w -lt r1.y, r0.z, l(1.000000) -and r1.x, r1.y, r1.x -if_nz r1.x - mad r16.xyz, cb0[6].xzyx, -cb0[216].yyyy, cb0[214].xzyx - add r16.xyz, r15.xzyx, -r16.xyzx - max r1.x, |r16.y|, |r16.x| - add r1.x, r1.x, l(-29.000000) - add r1.y, |r16.z|, l(-13.000000) - mul_sat r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000) - max r1.x, r1.y, r1.x - lt r1.y, r1.x, l(1.000000) - if_nz r1.y - mad r16.xyz, r15.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r17.xyz, r16.xyzx, cb0[215].xyzx - round_ni r17.xyz, r17.xyzx - mad r16.xyz, r16.xyzx, cb0[215].xyzx, -r17.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r17.xyw, r16.xyzx, t13.yzwx, s2, l(0.000000) - add r1.y, -r1.x, l(1.000000) - mul r2.z, l(0.500000), cb0[215].y - mad r6.w, -cb0[215].y, l(0.500000), l(1.000000) - max r2.z, r2.z, r16.y - min r2.z, r6.w, r2.z - mul r16.w, r2.z, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r16.xwzx, t14.xyzw, s1, l(0.000000) - mad r2.z, r18.w, r1.y, r0.z - add r19.xyz, r16.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r19.xyz, r19.xyzx, t14.xyzw, s1, l(0.000000) - mad r19.xyz, r19.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r19.xyz, r17.yyyy, r19.xyzx - mov r19.w, r17.y - mul r19.xyzw, r1.yyyy, r19.xyzw - add r16.xyz, r16.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r16.xyz, r16.xyzx, t14.xyzw, s1, l(0.000000) - mad r16.xyz, r16.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r16.xyz, r17.xxxx, r16.xyzx - mov r16.w, r17.x - mul r16.xyzw, r1.yyyy, r16.xyzw - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r17.xyz, r17.wwww, r18.xyzx - mul r17.xyzw, r1.yyyy, r17.xyzw - else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r2.z, r0.z - endif - mad r18.xyz, cb0[6].xzyx, -cb0[216].zzzz, cb0[214].xzyx - add r18.xyz, r15.xzyx, -r18.xyzx - max r1.y, |r18.y|, |r18.x| - add r1.y, r1.y, l(-116.000000) - mul_sat r1.y, r1.y, l(0.125000) - add r6.w, |r18.z|, l(-52.000000) - mul_sat r6.w, r6.w, l(0.125000) - max r1.y, r1.y, r6.w - lt r6.w, r1.y, l(1.000000) - if_nz r6.w - mad r18.xyz, r15.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r20.xyz, r18.xyzx, cb0[215].xyzx - round_ni r20.xyz, r20.xyzx - mad r18.xyz, r18.xyzx, cb0[215].xyzx, -r20.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r20.xyw, r18.xyzx, t15.yzwx, s2, l(0.000000) - add r6.w, -r1.y, l(1.000000) - mul r1.x, r1.x, r6.w - mul r6.w, l(0.500000), cb0[215].y - mad r7.w, -cb0[215].y, l(0.500000), l(1.000000) - max r6.w, r6.w, r18.y - min r6.w, r7.w, r6.w - mul r18.w, r6.w, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r18.xwzx, t16.xyzw, s1, l(0.000000) - mad r2.z, r21.w, r1.x, r2.z - add r22.xyz, r18.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r22.xyz, r22.xyzx, t16.xyzw, s1, l(0.000000) - mad r22.xyz, r22.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r22.xyz, r20.yyyy, r22.xyzx - mov r22.w, r20.y - mad r19.xyzw, r22.xyzw, r1.xxxx, r19.xyzw - add r18.xyz, r18.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyz, r18.xyzx, t16.xyzw, s1, l(0.000000) - mad r18.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r18.xyz, r20.xxxx, r18.xyzx - mov r18.w, r20.x - mad r16.xyzw, r18.xyzw, r1.xxxx, r16.xyzw - mad r18.xyz, r21.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r20.wwww, r18.xyzx - mad r17.xyzw, r20.xyzw, r1.xxxx, r17.xyzw - endif - lt r1.x, l(0.000000), r1.y - if_nz r1.x - mad r15.xyz, r15.xyzx, l(0.125000, 0.125000, 0.125000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) - mul r18.xyz, r15.xyzx, cb0[215].xyzx - mul r20.xyz, l(0.500000, 0.500000, 0.500000, 0.000000), cb0[215].xyzx - round_ni r18.xyz, r18.xyzx - mad r15.xyz, r15.xyzx, cb0[215].xyzx, -r18.xyzx - mad r18.xyz, -cb0[215].xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000) - max r15.xyz, r20.xyzx, r15.xyzx - min r15.xyz, r18.xyzx, r15.xyzx - sample_l_indexable(texture3d)(float,float,float,float) r21.xyw, r15.xyzx, t17.yzwx, s2, l(0.000000) - add r1.x, -r0.z, l(1.000000) - mul r1.x, r1.x, r1.y - max r1.y, r20.y, r15.y - min r1.y, r18.y, r1.y - mul r15.w, r1.y, l(0.333333) - sample_l_indexable(texture3d)(float,float,float,float) r18.xyzw, r15.xwzx, t18.xyzw, s1, l(0.000000) - add r20.xyz, r15.xwzx, l(0.000000, 0.666667, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r20.xyz, r20.xyzx, t18.xyzw, s1, l(0.000000) - mad r20.xyz, r20.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r20.xyz, r21.yyyy, r20.xyzx - mov r20.w, r21.y - mad r19.xyzw, r20.xyzw, r1.xxxx, r19.xyzw - add r15.xyz, r15.xwzx, l(0.000000, 0.333333, 0.000000, 0.000000) - sample_l_indexable(texture3d)(float,float,float,float) r15.xyz, r15.xyzx, t18.xyzw, s1, l(0.000000) - mad r15.xyz, r15.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r15.xyz, r21.xxxx, r15.xyzx - mov r15.w, r21.x - mad r16.xyzw, r15.xyzw, r1.xxxx, r16.xyzw - mad r15.xyz, r18.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), l(-2.000000, -2.000000, -2.000000, 0.000000) - mul r21.xyz, r21.wwww, r15.xyzx - mad r17.xyzw, r21.xyzw, r1.xxxx, r17.xyzw - mad r2.z, r18.w, r1.x, r2.z - endif - mad_sat r1.x, r2.z, l(2.000000), l(-1.000000) - add r15.x, -r0.z, r1.x - add r0.z, r0.z, r1.x - mul r15.y, r0.z, l(0.500000) -else - mov r19.xyzw, l(0,0,0,0) - mov r16.xyzw, l(0,0,0,0) - mov r17.xyzw, l(0,0,0,0) - mov r15.xy, l(0,1.000000,0,0) -endif -mul r18.xyzw, r15.yxyy, cb0[217].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r1.xy, r15.yxyy, cb0[217].wyww -mad r18.x, r1.y, l(0.375000), r1.x -add r17.xyzw, r17.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[218].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r1.xy, r15.yxyy, cb0[218].wyww -mad r18.x, r1.y, l(0.375000), r1.x -add r16.xyzw, r16.xyzw, r18.wyzx -mul r18.xyzw, r15.yxyy, cb0[219].ywzx -mad r18.y, r18.y, l(0.500000), r18.x -mul r1.xy, r15.yxyy, cb0[219].wyww -mad r18.x, r1.y, l(0.375000), r1.x -add r15.xyzw, r18.wyzx, r19.xyzw -ge r1.xy, r4.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000) -and r0.z, r1.y, r1.x -if_nz r0.z - sample_l_indexable(texture2d)(float,float,float,float) r18.xyzw, r4.xyxx, t12.xyzw, s1, l(0.000000) - lt r19.xyzw, l(0.000100, 0.000100, 0.000100, 0.000100), |r18.xyzw| - or r1.xy, r19.zwzz, r19.xyxx - or r0.z, r1.y, r1.x - if_nz r0.z - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mov r1.x, l(1.000000) - mov r1.y, r0.z - mov r2.z, l(0) - loop - ge r4.x, l(4.600000), r1.y - breakc_nz r4.x - iadd r4.x, r2.z, l(1) - mul r10.xw, r1.xxxy, l(0.500000, 0.000000, 0.000000, 0.500000) - mov r1.xy, r10.xwxx - mov r2.z, r4.x - continue - endloop - mul r18.xyzw, r1.xxxx, r18.xyzw - dp3 r0.z, r18.yzwy, r18.yzwy - sqrt r0.z, r0.z - mad r0.z, r0.z, cb3[3].x, cb3[3].y - mad r0.z, r0.z, l(255.000000), l(0.500000) - mul r1.x, r0.z, l(0.003906) - mov r1.y, l(0.500000) - sample_l_indexable(texture2d)(float,float,float,float) r1.xy, r1.xyxx, t11.xyzw, s1, l(0.000000) - mad r1.xy, r1.xyxx, cb3[2].xyxx, cb3[2].zwzz - mul r19.x, r1.x, l(3.544908) - mul r19.yzw, r1.yyyy, r18.yyzw - mul r0.z, r18.x, l(0.406977) - exp r0.z, r0.z - mul r18.xyzw, r0.zzzz, r19.xyzw - mov r19.xyzw, r18.xyzw - mov r0.z, l(0) - loop - uge r1.x, r0.z, r2.z - breakc_nz r1.x - mul r20.xyzw, r19.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - dp4 r1.x, r20.xyzw, r19.xyzw - dp2 r1.y, r20.yxyy, r19.xyxx - dp2 r4.x, r20.zxzz, r19.xzxx - dp2 r4.y, r20.wxww, r19.xwxx - iadd r6.w, r0.z, l(1) - mov r19.xy, r1.xyxx - mov r19.zw, r4.xxxy - mov r0.z, r6.w - continue - endloop - mul r18.xyzw, r19.xyzw, l(0.282095, 0.282095, 0.282095, 0.282095) - mul r19.xyzw, r17.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r0.z, r18.xyzw, r19.xyzw - dp2 r1.x, r18.yxyy, r19.xyxx - dp2 r1.y, r18.zxzz, r19.xzxx - dp2 r2.z, r18.wxww, r19.xwxx - mul r19.xyzw, r16.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r4.x, r18.xyzw, r19.xyzw - dp2 r4.y, r18.yxyy, r19.xyxx - dp2 r6.w, r18.zxzz, r19.xzxx - dp2 r7.w, r18.wxww, r19.xwxx - mul r19.xyzw, r15.wyzx, l(1.128379, -0.977205, 0.977205, -0.977205) - dp4 r8.w, r18.xyzw, r19.xyzw - dp2 r9.w, r18.yxyy, r19.xyxx - dp2 r10.x, r18.zxzz, r19.xzxx - dp2 r10.w, r18.wxww, r19.xwxx - mul r17.w, r0.z, l(0.886227) - mul r17.x, r2.z, l(-1.023327) - mul r17.yz, r1.xxyx, l(0.000000, -1.023327, 1.023327, 0.000000) - mul r16.x, r7.w, l(-1.023327) - mul r16.yw, r4.yyyx, l(0.000000, -1.023327, 0.000000, 0.886227) - mul r16.z, r6.w, l(1.023327) - mul r15.w, r8.w, l(0.886227) - mul r15.y, r9.w, l(-1.023327) - mul r15.xz, r10.wwxw, l(-1.023327, 0.000000, 1.023327, 0.000000) - endif -endif -dp3 r0.z, r17.xyzx, r3.xyzx -add r0.z, r17.w, r0.z -max r17.x, r0.z, l(0.000000) -dp3 r0.z, r16.xyzx, r3.xyzx -add r0.z, r16.w, r0.z -max r17.y, r0.z, l(0.000000) -dp3 r0.z, r15.xyzx, r3.xyzx -add r0.z, r15.w, r0.z -max r17.z, r0.z, l(0.000000) -dp3 r0.z, -r8.xyzx, r3.xyzx -add r0.z, r0.z, r0.z -mad r15.xyz, r3.xyzx, -r0.zzzz, -r8.xyzx -add r0.z, l(-1.000000), cb0[113].x -max r1.x, r10.z, l(0.001000) -log r1.x, r1.x -mad r1.x, -r1.x, l(1.200000), l(1.000000) -add r0.z, r0.z, -r1.x -mul r1.xy, r2.xyxx, cb1[0].wwww -round_ni r1.xy, r1.xyxx -add r2.z, |r1.w|, -cb1[2].y -round_ni r2.z, r2.z -add r4.x, l(-1.000000), cb1[1].x -max r4.y, r2.z, l(0.000000) -min r4.x, r4.x, r4.y -ge r2.z, r4.x, r2.z -mad r1.x, r1.y, cb1[0].x, r1.x -ftoi r1.x, r1.x -iadd r1.x, r1.x, cb0[110].z -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.x, r1.x, l(0), t0.xxxx -ftoi r1.y, r4.x -iadd r1.y, r1.y, cb0[110].w -ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r1.y, r1.y, l(0), t0.xxxx -and r1.x, r1.y, r1.x -and r1.x, r1.x, r2.z -mul r10.xzw, r17.xxyz, cb0[111].xxxx -dp3 r1.y, r10.xzwx, l(0.212673, 0.715152, 0.072175, 0.000000) -mov r29.x, r1.y // Store ambient luminance for cubemap modulation -mov r5.w, l(1.000000) -mov r3.w, l(1.000000) -mov r10.xzw, l(0,0,0,0) -mov r2.z, l(1.000000) -mov r4.x, r1.x -mov r4.y, l(0) -loop - lt r6.w, l(0.010000), r2.z - ine r7.w, r4.x, l(0) - and r7.w, r6.w, r7.w - if_nz r7.w - firstbit_lo r7.w, r4.x - ishl r8.w, l(1), r7.w - xor r4.x, r4.x, r8.w - ishl r7.w, r7.w, l(3) - dp4 r16.x, cb1[r7.w + 6].xyzw, r5.xyzw - dp4 r16.y, cb1[r7.w + 7].xyzw, r5.xyzw - dp4 r16.z, cb1[r7.w + 8].xyzw, r5.xyzw - ge r18.xyz, cb1[r7.w + 5].xyzx, |r16.xyzx| - and r8.w, r18.y, r18.x - and r8.w, r18.z, r8.w - if_nz r8.w - mul r8.w, l(0.100000), cb1[r7.w + 5].x - mul r18.xyz, |r16.xyzx|, l(0.100000, 0.100000, 0.100000, 0.000000) - mul r18.xy, r18.xyxx, r18.xyxx - add r19.xyz, -|r16.xyzx|, cb1[r7.w + 5].xyzx - mul r19.xyz, r19.xyzx, cb1[r7.w + 9].xyzx - eq r9.w, l(1.000000), cb1[r7.w + 10].x - if_nz r9.w - dp3 r20.x, cb1[r7.w + 6].xyzx, r15.xyzx - dp3 r20.y, cb1[r7.w + 7].xyzx, r15.xyzx - dp3 r20.z, cb1[r7.w + 8].xyzx, r15.xyzx - add r21.xyz, -r16.xyzx, cb1[r7.w + 5].xyzx - div r21.xyz, r21.xyzx, r20.xyzx - add r22.xyz, -r16.xyzx, -cb1[r7.w + 5].xyzx - div r22.xyz, r22.xyzx, r20.xyzx - lt r23.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r20.xyzx - movc r21.xyz, r23.xyzx, r21.xyzx, r22.xyzx - min r9.w, r21.y, r21.x - min r9.w, r21.z, r9.w - mad r16.xyz, r20.xyzx, r9.wwww, r16.xyzx - else - mov r16.xyz, r15.xyzx - endif - dp3 r9.w, r16.xyzx, r16.xyzx - rsq r9.w, r9.w - mul r16.xyz, r9.wwww, r16.xyzx - lt r20.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.xyzx - lt r21.xyz, r16.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r20.xyz, -r20.xyzx, r21.xyzx - itof r20.xyz, r20.xyzx - dp3 r9.w, r16.xyzx, r20.xyzx - div r16.xyz, r16.xyzx, r9.wwww - lt r9.w, r16.z, l(0.000000) - add r16.zw, -|r16.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000) - mul r16.zw, r16.zzzw, r20.xxxy - movc r16.xy, r9.wwww, r16.zwzz, r16.xyxx - dp4 r9.w, cb1[r7.w + 4].xyzw, r3.xyzw - max r9.w, r9.w, l(0.000000) - max r9.w, r9.w, l(0.000100) - min r11.w, r19.z, r19.y - min r11.w, r11.w, r19.x - add r12.x, r18.y, r18.x - mad r12.x, r18.z, r18.z, r12.x - mad r8.w, r8.w, r8.w, -r12.x - mul r8.w, r8.w, cb1[r7.w + 9].x - mul r8.w, r8.w, cb1[r7.w + 9].x - add r12.x, l(1.000000), -cb1[r7.w + 10].y - mul r8.w, r8.w, r12.x - mul r8.w, r8.w, l(100.000000) - mad_sat r8.w, r11.w, cb1[r7.w + 10].y, r8.w - mul r11.w, r8.w, cb1[r7.w + 10].w - mad r16.xy, r16.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r16.xy, r16.xyxx, cb1[1].wwww, cb1[2].wwww - mov r16.z, cb1[r7.w + 5].w - sample_l_indexable(texture2darray)(float,float,float,float) r16.xyz, r16.xyzx, t5.xyzw, s3, r0.z - mul r16.xyz, r16.xyzx, cb1[r7.w + 9].wwww - div r12.x, r1.y, r9.w - min r12.x, |r12.x|, l(1.000000) - mad r12.x, r12.x, l(2.000000), r1.y - add r9.w, r9.w, l(2.000000) - div r9.w, r12.x, r9.w - add r9.w, r9.w, l(-1.000000) - mad r9.w, r9.w, cb0[112].w, l(1.000000) - mul r16.xyz, r9.wwww, r16.xyzx - mul r16.xyz, r11.wwww, r16.xyzx - mad r10.xzw, r16.xxyz, r2.zzzz, r10.xxzw - mad r7.w, -r8.w, cb1[r7.w + 10].w, l(1.000000) - mul r2.z, r2.z, r7.w - endif - mov r4.y, l(-1) - continue - else - mov r4.y, r6.w - break - endif - mov r4.y, r6.w -endloop -if_nz r4.y - dp3 r1.x, r15.xyzx, r15.xyzx - rsq r1.x, r1.x - mul r5.xzw, r1.xxxx, r15.xxyz - lt r15.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r5.xzwx - lt r16.xyz, r5.xzwx, l(0.000000, 0.000000, 0.000000, 0.000000) - iadd r15.xyz, -r15.xyzx, r16.xyzx - itof r15.xyz, r15.xyzx - dp3 r1.x, r5.xzwx, r15.xyzx - div r5.xzw, r5.xxzw, r1.xxxx - lt r1.x, r5.w, l(0.000000) - add r4.xy, -|r5.zxzz|, l(1.000000, 1.000000, 0.000000, 0.000000) - mul r4.xy, r4.xyxx, r15.xyxx - movc r4.xy, r1.xxxx, r4.xyxx, r5.xzxx - mov r3.w, l(1.000000) - dp4 r1.x, cb1[3].xyzw, r3.xyzw - max r1.x, r1.x, l(0.000000) - max r1.x, r1.x, l(0.000100) - mad r3.xy, r4.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000) - mad r3.xy, r3.xyxx, cb1[1].wwww, cb1[2].wwww - mov r3.z, l(0) - sample_l_indexable(texture2darray)(float,float,float,float) r3.xyz, r3.xyzx, t5.xyzw, s3, r0.z - div r0.z, r1.y, r1.x - min r0.z, |r0.z|, l(1.000000) - mad r0.z, r0.z, l(2.000000), r1.y - add r1.x, r1.x, l(2.000000) - div r0.z, r0.z, r1.x - add r0.z, r0.z, l(-1.000000) - mad r0.z, r0.z, cb0[112].w, l(1.000000) - mul r3.xyz, r0.zzzz, r3.xyzx - mad r10.xzw, r3.xxyz, r2.zzzz, r10.xxzw -endif -mul r3.xyz, r10.xzwx, cb0[112].zzzz -mul r3.xyz, r3.xyzx, cb0[111].yyyy -// Cubemap ambient link modulation (cb13[13].y) -if_nz cb13[13].y - max r29.x, r29.x, l(0.000000) - min r29.x, r29.x, l(1.000000) - mad r29.x, r29.x, l(0.750000), l(0.250000) - mul r3.xyz, r3.xyzx, r29.xxxx -endif -if_nz r10.y - sample_b_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t3.yzxw, s1, cb0[108].x - sample_b_indexable(texture2d)(float,float,float,float) r5.xzw, v1.xyxx, t2.xwyz, s1, cb0[108].x - add r1.x, -r0.z, l(1.000000) - mul r10.xyz, r1.xxxx, r3.xyzx - mad r3.xyz, r5.xzwx, r0.zzzz, r10.xyzx -endif -mul r5.xzw, r11.xxyz, r17.xxyz -mul r5.xzw, r5.xxzw, cb0[111].xxxx -add r0.z, -r1.z, l(1.000000) -div r0.z, r0.z, r1.z -mul r1.xyz, r0.zzzz, r9.xyzx -mad r1.xyz, r1.xyzx, r12.yzwy, r12.yzwy -mul r1.xyz, r1.xyzx, r3.xyzx -mul r1.xyz, r13.xyzx, r1.xyzx -mad r1.xyz, r5.xzwx, r14.xyzx, r1.xyzx -add r1.xyz, r1.xyzx, r6.xyzx -mad r0.z, r5.y, cb0[156].w, cb0[157].w -max r0.z, r0.z, l(0.010000) -mad r2.z, r4.w, cb0[154].w, -cb0[153].w -max r2.z, r2.z, l(0.000000) -mul r3.x, r0.z, l(-1.442695) -exp r3.x, r3.x -add r3.x, -r3.x, l(1.000000) -div r0.z, r3.x, r0.z -mad r3.x, r5.y, cb0[156].w, cb0[158].w -mul r3.x, r3.x, l(1.442695) -exp r3.x, r3.x -mul r0.z, r0.z, r3.x -mul r0.z, r0.z, -r2.z -mul r3.xyz, r0.zzzz, cb0[155].xyzx -mul r3.xyz, r3.xyzx, l(1.442695, 1.442695, 1.442695, 0.000000) -exp r3.xyz, r3.xyzx -dp3 r0.z, -r8.xyzx, cb0[154].xyzx -mad r2.z, cb0[155].w, cb0[155].w, l(1.000000) -dp2 r3.w, r0.zzzz, cb0[155].wwww -add r2.z, r2.z, -r3.w -lt r3.w, l(0.000000), cb0[165].z -if_nz r3.w - and r0.w, l(7), cb0[108].w - imad r0.xyw, r0.xyxw, l(0x0019660d, 0x0019660d, 0, 0x0019660d), l(0x3c6ef35f, 0x3c6ef35f, 0, 0x3c6ef35f) - imad r0.x, r0.y, r0.w, r0.x - imad r0.y, r0.w, r0.x, r0.y - imad r0.w, r0.x, r0.y, r0.w - imad r4.x, r0.y, r0.w, r0.x - dp3 r0.x, -r8.xyzx, -r7.xyzx - add r3.w, r5.y, -cb0[44].y - lt r5.x, l(0.000000), r0.x - div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x - and r0.x, r0.x, r5.x - mul r0.x, r0.x, cb0[165].w - div r5.x, l(1.000000, 1.000000, 1.000000, 1.000000), r4.w - mul r5.z, r0.x, r5.x - mad r5.w, r5.z, r3.w, cb0[44].y - mad r3.w, -r5.z, r3.w, r3.w - mad r0.x, -r0.x, r5.x, l(1.000000) - mul r5.x, r4.w, r0.x - mul r5.z, r3.w, cb0[159].z - max r5.z, r5.z, l(-127.000000) - mul r3.w, r3.w, cb0[162].x - max r3.w, r3.w, l(-127.000000) - add r6.x, r5.w, -cb0[159].x - mul r6.x, r6.x, cb0[159].z - max r6.x, r6.x, l(-127.000000) - exp r6.x, -r6.x - mul r6.x, r6.x, cb0[159].y - lt r6.y, l(0.000000), |r5.z| - exp r6.z, -r5.z - add r6.z, -r6.z, l(1.000000) - div r6.z, r6.z, r5.z - mad r5.z, -r5.z, l(0.240227), l(0.693147) - movc r5.z, r6.y, r6.z, r5.z - add r5.w, r5.w, -cb0[162].z - mul r5.w, r5.w, cb0[162].x - max r5.w, r5.w, l(-127.000000) - exp r5.w, -r5.w - mul r5.w, r5.w, cb0[162].y - lt r6.y, l(0.000000), |r3.w| - exp r6.z, -r3.w - add r6.z, -r6.z, l(1.000000) - div r6.z, r6.z, r3.w - mad r3.w, -r3.w, l(0.240227), l(0.693147) - movc r3.w, r6.y, r6.z, r3.w - mul r3.w, r3.w, r5.w - mad r3.w, r6.x, r5.z, r3.w - mad_sat r5.zw, r4.wwww, cb0[160].wwwy, cb0[160].zzzx - mul r5.x, r5.x, r3.w - exp r5.x, -r5.x - min r5.x, r5.x, l(1.000000) - max r5.x, r5.x, cb0[161].w - add r5.x, r5.w, r5.x - add r5.x, r5.z, r5.x - min r5.x, r5.x, l(1.000000) - imad r4.y, r0.w, r4.x, r0.y - ushr r0.yw, r4.xxxy, l(0, 16, 0, 16) - utof r0.yw, r0.yyyw - mad r0.yw, r0.yyyw, l(0.000000, 0.000031, 0.000000, 0.000031), l(0.000000, -1.000000, 0.000000, -1.000000) - mad r0.yw, r0.yyyw, cb0[169].wwww, r2.xxxy - mul r6.xy, r0.ywyy, cb0[167].xyxx - mad r0.y, |r1.w|, cb0[166].x, cb0[166].y - log r0.y, r0.y - mul r0.y, r0.y, cb0[166].z - div r6.z, r0.y, cb0[165].z - sample_l_indexable(texture3d)(float,float,float,float) r6.xyzw, r6.xyzx, t10.xyzw, s1, l(0.000000) - add r0.y, |r1.w|, -cb0[168].z - mul_sat r0.y, r0.y, l(1000000.000000) - add r6.xyzw, r6.xyzw, l(-0.000000, -0.000000, -0.000000, -1.000000) - mad r6.xyzw, r0.yyyy, r6.xyzw, l(0.000000, 0.000000, 0.000000, 1.000000) - add r0.y, -r5.x, l(1.000000) - dp3_sat r0.w, r8.xyzx, cb0[163].xyzx - log r0.w, r0.w - mul r0.w, r0.w, cb0[164].w - exp r0.w, r0.w - mul r7.xyz, r0.wwww, cb0[164].xyzx - mad r0.x, r0.x, r4.w, -cb0[163].w - max r0.x, r0.x, l(0.000000) - mul r0.x, r0.x, r3.w - exp r0.x, -r0.x - min r0.x, r0.x, l(1.000000) - add r0.x, -r0.x, l(1.000000) - mul r7.xyz, r0.xxxx, r7.xyzx - add r0.x, -r5.z, l(1.000000) - mul r7.xyz, r0.xxxx, r7.xyzx - mad r0.xyw, cb0[161].xyxz, r0.yyyy, r7.xyxz - mad r0.xyw, r0.xyxw, r6.wwww, r6.xyxz - mul r1.w, r5.x, r6.w -else - add r2.x, r5.y, -cb0[44].y - mul r2.y, r2.x, cb0[159].z - mul r2.x, r2.x, cb0[162].x - max r2.xy, r2.xyxx, l(-127.000000, -127.000000, 0.000000, 0.000000) - add r3.w, cb0[44].y, -cb0[159].x - mul r3.w, r3.w, cb0[159].z - max r3.w, r3.w, l(-127.000000) - exp r3.w, -r3.w - mul r3.w, r3.w, cb0[159].y - lt r4.x, l(0.000000), |r2.y| - exp r4.y, -r2.y - add r4.y, -r4.y, l(1.000000) - div r4.y, r4.y, r2.y - mad r2.y, -r2.y, l(0.240227), l(0.693147) - movc r2.y, r4.x, r4.y, r2.y - add r4.x, cb0[44].y, -cb0[162].z - mul r4.x, r4.x, cb0[162].x - max r4.x, r4.x, l(-127.000000) - exp r4.x, -r4.x - mul r4.x, r4.x, cb0[162].y - lt r4.y, l(0.000000), |r2.x| - exp r5.x, -r2.x - add r5.x, -r5.x, l(1.000000) - div r5.x, r5.x, r2.x - mad r2.x, -r2.x, l(0.240227), l(0.693147) - movc r2.x, r4.y, r5.x, r2.x - mul r2.x, r2.x, r4.x - mad r2.x, r3.w, r2.y, r2.x - mad_sat r4.xy, r4.wwww, cb0[160].wyww, cb0[160].zxzz - mul r2.y, r4.w, r2.x - exp r2.y, -r2.y - min r2.y, r2.y, l(1.000000) - max r2.y, r2.y, cb0[161].w - add r2.y, r4.y, r2.y - add r2.y, r4.x, r2.y - min r1.w, r2.y, l(1.000000) - add r2.y, -r1.w, l(1.000000) - dp3_sat r3.w, r8.xyzx, cb0[163].xyzx - log r3.w, r3.w - mul r3.w, r3.w, cb0[164].w - exp r3.w, r3.w - mul r5.xyz, r3.wwww, cb0[164].xyzx - mad r2.w, r2.w, r4.z, -cb0[163].w - max r2.w, r2.w, l(0.000000) - mul r2.x, r2.w, r2.x - exp r2.x, -r2.x - min r2.x, r2.x, l(1.000000) - add r2.x, -r2.x, l(1.000000) - mul r4.yzw, r2.xxxx, r5.xxyz - add r2.x, -r4.x, l(1.000000) - mul r4.xyz, r2.xxxx, r4.yzwy - mad r0.xyw, cb0[161].xyxz, r2.yyyy, r4.xyxz -endif -mul r2.xyw, r1.wwww, r3.xyxz -max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000) -min r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -mad r0.z, r0.z, r0.z, l(1.000000) -mul r0.z, r0.z, l(0.059683) -mad r4.xyz, cb0[156].xyzx, r0.zzzz, cb0[158].xyzx -mad r0.z, -cb0[155].w, cb0[155].w, l(1.000000) -mul r3.w, r2.z, l(12.566371) -sqrt r2.z, r2.z -mul r2.z, r2.z, r3.w -max r2.z, r2.z, l(0.001000) -div r0.z, r0.z, r2.z -mad_sat r4.xyz, cb0[157].xyzx, r0.zzzz, r4.xyzx -mul r4.xyz, r4.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -add r3.xyz, -r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) -mul r3.xyz, r3.xyzx, r4.xyzx -mad r0.xyz, r3.xyzx, r1.wwww, r0.xywx -lt r28.x, l(0.500000), cb13[12].y -if_nz r28.x - mul r24.xyz, r1.xyzx, l(0.003922, 0.003922, 0.003922, 0.000000) - mul r25.xyz, r0.xyzx, l(0.003922, 0.003922, 0.003922, 0.000000) - mul r26.xyz, r2.xywx, l(-1.000000, -1.000000, -1.000000, 0.000000) - add r26.xyz, r26.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000) - mad r26.xyz, r26.xyzx, l(0.350000, 0.350000, 0.350000, 0.000000), r2.xywx - mul r25.xyz, r25.xyzx, l(0.650000, 0.650000, 0.650000, 0.000000) - mad r27.xyz, r24.xyzx, r26.xyzx, r25.xyzx - mul o0.xyz, r27.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) -else - mad o0.xyz, r1.xyzx, r2.xywx, r0.xyzx -endif -dp3 o0.w, r2.xywx, l(0.333333, 0.333333, 0.333333, 0.000000) -ret -// Approximately 0 instruction slots used diff --git a/src/games/endfield/deferred-lighting/0xEBD4CAC5.cso b/src/games/endfield/deferred-lighting/0xEBD4CAC5.cso new file mode 100644 index 0000000000000000000000000000000000000000..62d54682c0236214af08af3aa267695dcddeb6dc GIT binary patch literal 62296 zcmeI5d$3*CUElZJvah5oDRwT2BVQglC^Uee1HLk{qQtse*XEKm9g;CvP57gLDF!;^ zF-k}u49)QkRUv5}4aIFz3dSUYCJb#2Q}~BS7GMZtI@Hq%ueQ^g;^B|B(~6n=)h7LZ ze(U#LXPte|(IX`3W3p%VS!=J~`>}p&?S1yS_x{&y-}k`lzv@H3cIzEK_~H9L`Mhs< z@{j-RO4oI-`?Idwr}k@gey;|8N$0D+<(t0wZncLrc0lLtAnKq2m*X}8za+=GW<22P zFm4dzz0Upn%Q$@w#yLGspM&-mowwhw5$4#p+2j??F09Gi?! zp96gl(yH?pQu(;n*jkQ%%eilV?VH~6eQ*7~H@&g@)^B{>eXn`V1NV0teAQca&cEr6 zZ{7LM@A~fUHS*p4!pBZ{pVH|A*&Nu$c!~*~=rb;M-};^BzvsK(+I{q+-}1_DeBDp{ zkFI;I#=qwkUH8`ybSvL*wCj%Ry6dJ}(ae3^_!#;X`O{1AYOck%@F}sP4^FYEzzRI+ zD}KxG^$Ok2dnS-||4!%Y50q8Pdb2*VJ&xROJ5X?t>2c(_kF3W@!8aE^zf_^E|IZ*+|h1OD|ze{5~>pYQ9m zZ#}R7+N8VXiQ9|6@X4f1p z7(X@|2Z!koSKKb4WpzfSb;7Jo>vS$CT_;3Jg+q)Bn z9;Xv$W$3!U@$}bh-mj7gonf@9JNp}*VAXx{wu1B3$qU(Q>0fw}yP{pgC&Y^}v^YJT ztilsGvY~r%cgw!D#QQSQ;4jkz-=rbdruo^fdsqLCZu*W7+}R-mej5!Pxx4!2qN8x% zV_bNHyS9KQI<|Dm&lSb#z-H3C^qoa_bh92W6wY4~|0`WLz3;&nc2|Xqo;&gdcJBP0 z+dJk7btUC;)qQ__b_ZKq#bQf(MSj79L%u&yc|I?Bt40DR-+`Z(O!~x`@r&;)aOBD7 zYuoxnXW-!VL)ZP+r(S>No)_G+^+Uh=WA|#PQ(hgq7N3i2B^Tl29E2A+h)iUezi>ld z>lb)4CtJTzFYpWWvYRXW<-h~Nhv&Ilid_1u>m^?llUp4}VkW2OQ4cz*oKi6}-Br|-M?X`GOXDYA6$5)oUAsexkyeN8iL+XF&9@QA*F^{NC3ELX$ zOwFotq%(5AL^f_pbLj9f$6d;e-LyC5kzWD(O?^t{5yQ#neHueY4&a_6)P3i>bdS1% zpG*VqPwQHB=+<@dVI2Vm&O5cVq8Ib3AEc04P9ObHu8YQHl-hzW@Ovovt*#UvS}sFA z@K*lO#K#`X2S;&UyPEQMG=G5gL)SeroxZ$1HGH`GqVa+JapA0hvb$^jptx4wwLY~@ zqKi7$(uhTkN5#8+ww?&S(6--s`Y)e3HCYUM!yla-q{~5cAIC)eE)$!s8wT>d+9%xB zf6HL-YhfGdN9*o&q?Jpq5^Eiy6E&jfFsp3<-=tG|A3`T^PN&a5PCv)&S8%0A_%3iq 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 xTQ%&S%;u5MDu3iazbzo#DC!_|2LoBA0hw% literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xF45699A5.cso b/src/games/endfield/deferred-lighting/0xF45699A5.cso deleted file mode 100644 index 2d479374df5643ad6ada177640ca923d72a37478..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62796 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 Hr_>n%V{kK| delta 295 zcmaDboq5U(W+|5lC+8QL-(^$`)SIR@w^}-Ed_0Mffq_Bf%tWb0oFS(f7y^L2s~e9d zGc#&V)@1oU*@X3vpb>)r0}D{x4N6-~&fP7}!otL8vpIuJL_x6$C=N1(3o6g(z`(%5 z)M#zNz`$Mv6yu*fQA2q16g3%kO(!6i2ai%gpxiPppqkBlb(32sUzowd39=bvGSB2d zRpH4hn*}Djs0wKIFfee#>;>7!1XKm0LBI;A8sr`=Ak8w_R#l&aLy^VSh=GA~azdjB dC&=MoC7Ta!zAnb7F?r@Gc}9)RJ5Q-I0sxcgIW+(P diff --git a/src/games/endfield/glass/0x048D5332.cso b/src/games/endfield/glass/0x048D5332.cso index d72947b92f8961735bf543c742d585435ab8229f..c63d7fc096d95cd4c92ef84247b1b08b9844a2b9 100644 GIT binary patch literal 52780 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 literal 57100 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 z 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 q+v)X*{DHG<;>lS5L4Wy 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 z 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x3300FBDA.cso b/src/games/endfield/deferred-lighting/0x3300FBDA.cso new file mode 100644 index 0000000000000000000000000000000000000000..f36836cd0ec97d21859adae836d7228a7b1836c7 GIT binary patch literal 28676 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%0D7d+S=WXBHY5z9NRoop|Q2=?uG6Fz=V( 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 X785^eqw^)>$9;T0opCH%L7(|QcmY?h literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x355D50B7.cso b/src/games/endfield/deferred-lighting/0x3923F97E.cso similarity index 71% rename from src/games/endfield/deferred-lighting/0x355D50B7.cso rename to src/games/endfield/deferred-lighting/0x3923F97E.cso index e96524fcbabeee4f22db156b08d89b249bfafbeb..a210202f25252805337fab61a0e1a2e40533ddec 100644 GIT binary patch delta 2040 zcmZuyTTGl)5I+B2xNpODsSA5y7f8EBKnhzep={~0%6(yB7uXFf6w10tH9}2eO(A6~ z6lknSrle_vM4Ge>O$=#%ebXq3eIUvM@z%zN#+Vv;XtdFIN!rAjbN-(|^x@1uXJ)>c zIdf*t|Izo-C-)@Fi{TnyOn>;^>8x+A-2SC5ZmUcTNsO_oSLZF)BV(r+3*hd7g|Xoj zCPf(2)xPUQ31cO=)IA}VXrChV8sxPoRP|ci>q)QRb+TRx>huI-5Y?X-ocyDHPU5Ui zK9gK3*hN@Lspdk9{3zw?WJwEanFV_C$Y9N8f+v~Te5Zp=qXR08gJ`j2v>Lbt8r{6) zWLo*I@yjGs%xAA6_2x7w9_MphQVFGzi|YtuX?s~FOGp0M2`4k)cMmSJIzuBM6=C0(!&+|aUS@heBW-8j1>4Ht%Q>i zKM7BBf8_>~@YoUmU%g9y&uJ5-nSwicrQCc99_F3PBNtP+${9<)fGH&*Z<%mTc=5}1 zaw7k#_P<``!UI9oW5T6+{MdC>@!fXNtZ<2ZvpjilOsj15#V&;_D^_8#;sQmsS!9NQ zD@ndx{GGV!Y1k+iwVMW`yA=K|E9Ry%+wvJMUo02$*=_l(Y;@n!7<70Lx>h_C)4|>6 zZ*d7V+s{~eo&44d=aRTb2mDh7k_Ik&jv`(6xRE~fyn%G|*imj_gFDB%70y^K8qf|4 z)o#fuuUDUv^yD=O`n`AtZw3ORUKf|8pv(k|-b|Ez=zSCE{u*+8t;U6Pjnl1~A_edD zncaoxiDtCrAt z@=7C6!B`4)GgX;7n7*A;qC4%#JD5&K)u%3}b(pc_e6+VBPvb#fF)oa`cjzp;bQ9Is zqNyqlbsA=cxZs069h?n}aEV=h6zCHZ)QB-FF(*1h z6D0Op;cUBYAMNUeW_tkYU_5SxFWP7L4D7@;Lo_(e9XG&Mu)9!2(U?0`QaPxx_KFs%bP29$aWNZqHnb*ntuoi1*>3lcpd*A7_e zad1!wjp;rK6oUIbVv0jxh>BoAD2aA)N1ZSmUFBRGczT6hJB;?0W)QX=7u5<*bY{Wl zy%~z(X767j3)tv`VlwpOq9&tvmWoPE!@o)r^tZvLN`n#YGjRRHbNhFK=uxANtW>`A zNOL_F(g9ihhj=hQH1z+(xd4<6s6}fVXcaQ~#(-5c&hCnBo>VFZ-od$4a@&Th6bvyl z{5F`y!R?S5Q;+V6iA!#SS7PcZV=up*Lr7|^n`xOyaf~jAB%48sn|aZ9H_)=l1Xb~O zxc?^Dh_6aHFh1mva^$6<*Tv06z&KpMpLhI$Za?o7C~e2{9)XVG0v;fY8hRthA`Y{| Mq6QIpWjI~>7vThW>;M1& delta 1855 zcmZuxZA_b06u!5m(89XVby!DXEnh1tq(bB7BtSn9i)5n}>L{eJ4iE=yK-9QpCbH=? znka$uV_}SykHOp+A>_^Otz%KN%_6VfWkjDIw%`=Ro>+)t?=N1n_hxosbSa zp{fb~5MWbAhfyA>AQZ>A=W zSi$|#c{@@<9>Tia0k>?60`w5h+S~t+Ve59EywNfo&UOmuGMvgjr*QFXi{zLg=aTjb z_HzenReM9eYG0avDT}ADjJueSlnW%4Bq5*PXYccH1+Hbbkq=rW%x47-g_|!>ox}@r z6xo6!6aL-1o4E@YWp`F#u2@!o6@tZ$0`_QI_6TK8$aNJ6`P#O8jmz1h>x{;z#RT}q zgoqZ79K0?hyhp!af3%DqI+rM{d*OU3Pzq^fB}jv1E~FRB-a@)rRw59m;c&Uk;4}=C z%bDqhOt*_>u%Nq>BJ_^Op~JBwNwDCt40?B=$mn$-eZl)K(it!Jm*wM zqgFWq9Nn(i&D2;0*A4e-EHCfD7#SENS@}{o9&ov^CQsJ&mE+tPcIe=lfJ2waJwPbn z6W+UEB;ZoG8-)%C)FccBdt_ktPOw=%iYpiiZ^r|Y5g6EG9jwhrldJG^?Z?9BF!a{RR$qptIRZE$egc3QN$+hG=&EIW$-lx(TFoo za7cD51EWVi9b3WIvkGz&zKk3b?!N$2)2#SoO`zThTTM8=O?!pz8f-Sn7k&*2n`LDt zAl&@7ObkNDL2xmMAD2ZK2V+$JAh8@#i$RSS!-Co1O7wXJzZCsRaENcQz;`Fq>a3nn zt5euwl@l?FX>C^r!mXW3@NZiC1vdeaHZ{qCZSLzfHQn_#HQo3dA9&Ci;R7?3EDKV3 z!OlhGDsG(OUHpad_4ugm9GkiJn20+9p*Lr#6?7+U)XMTscFP`3!%&Cp(KIY{SOjz$ bzVFBp-MWdc`J?7*9!#CGYSXN!Gll*KDR70D diff --git a/src/games/endfield/deferred-lighting/0x470E14EE.cso b/src/games/endfield/deferred-lighting/0x470E14EE.cso new file mode 100644 index 0000000000000000000000000000000000000000..e5d57802b9a60def6c4f10a5cd2b61df231efc73 GIT binary patch literal 67220 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

      Ajacw&IXF9G;htAM3 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 F{{JqSS5p80 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x4A42FD4A.cso b/src/games/endfield/deferred-lighting/0x4A42FD4A.cso deleted file mode 100644 index 7c685915fd9f292aaee4b492e1cf04607578c498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48468 zcmcJYeT-&Tec$igvB$f!>$kxeGtlrbCImK#Y|py(vc@}i$M(cPRa*vcAb*t9DsIzI zUKVOnTI%sYH{cZFhSZgll!AdJwJTM1E0Mmy+S|seB2p1cH6)RWuN%?#t}n{?5(Y_8<7gwU0ddCr^Lt+?)UF_RC-Y z%L`4@yyI(4v#9>3bbLa`@922T+kfUS->tsYu}{Yl9W?O4rCqL*+xye_Wjx?IdHacX z-~Ij%{lbTT;r;Jx-f_n}Z@cTRdv0%@eDcY=#1}c>!FQs=t?<===-=^IPyY4yd{{(p zzw?fF{`!At8ua<`>zd|o?rRqQ;x$ckCpWD~t!|QQaexRr2`kmMG*U;a4@AMiT z^)-CzYiQ%T>*>+GhNF9ZeaYaOJgMRP2iMDk>jS=iLoe^3uTy_~Q}esb*NKnc0-o1+ zpuWCxaJ@3Pe%avqDqpAkmk+M59$dd-aII9Ik^joP{%e!wqV+5K_z;u(u4opy=KMX1 z`}s)^`x{ExH)`zFO>^;j(~oT>-Ax+X%&~<|NNPXbG@m-#G~2h``|{?bVDQ^oPP)H; zMT5RW9CDz>!G?9EAo2p1ecK7pH2iWzYdgA_e=)zfQVb64r0lk1gt<7K*IUgM+Yf0J z-fH{SgiGEX)%bDs=-k`0y>Ua+Tw-3UiDz5?LengxBRMLb!LRLfvAZ2On|LP{uGoG? zaAdcgeoE_gygBVQPx`jg&%lNplg)iy0Yi26l3E{V&&l`n;=BKz)c^aJ_ir{uDX`r(n{5R|TWxb3syj9^jX2#RdzQQkQ&G%ITsxC!r!cN7K z9v<}gz_yXoj2+sZ=(o>(bTHiGz?Ku&@gKt@-iHQw8Y=QkYrf1o`61xY+NVcTALS8k z|4H$r)+@ilzhT$T1X%1nREw5YghTx|Z(xkC4aS+@jBgIckoQ z#4vEdp}$dnhcEHRR@?NEZ~WvsbI34!1dd`6abjI6xsbeo?F@LCPIW1KhF2-~<=264(!7jO^ikInXIEWUoDbfYIud96L>&ab?er6Ex^7@2v9le-)q3f)#6tQMS?C5H`kEF! z@e@5Vtv@`#0e>Ek9l_CWSv|frfAbiwtL$Csbyf3>7IM;#&=p?x+nBEAPoFUz)pd-= z@*G{A_wXa{(T6#N&W5qqS`xis;7Y$`=4aTJ_!WKF108twxpXKoLC589U3;s0?1dk^ zkxy@#=F5C1->k=C;xcEM@4%3Wt>E;2=hyl6Nuu(53gsHZsZ_VoikyJviw1xX!V$?ewE|`@gy3cz?FN zA>0}LesBH$?n77p%QKdJYO$vUuhwt>!#knh51)Kl@FK>@uzu{v(eHO(^;E~$ebRxk zrNo2ZrpC~9?=BrTe3Q@wYbZ>qjpsKHT?f!iHblHO=4s^~b}$jiz^gsD4 zw}InWfLHtYo=?8|_RYILC!9Y2EKhi`CQvu$`8exm_?Ec_E_3_^o#V%){rw#G+@^;{ zZElQyy1J)vPH%~hcIsn&J=c01^o$Xo_pf~XC^5mGti{Berr)TYoXdu&OVknUS!A%{ zV;c9eFMoDV2;Dkmo;qYOJK$J zNplJFlXc0m>51tTf|dNqG1GZ32> zwXP)rXYbRBzK2iuzS1S;6#45sX*<<~gSXx4L!f|pkG47WUGT2sQ2A?SEU*438VQX<v%D#N`@AdP+_m^o` zQ`6YybJ86jaZkz|8q&O&4=kJcO0FLYk4*Ppu=E%>$bcul3%RN>b&l7t+OOcsUzb9c z_>tqBleh3~JN?A|Wjc?DZ$&dBQ^+$g>p|S4N33}sqhG4lUabic;~L&}LK-yHi#d27 z)l%nU>Jwz2aBj;t+;cHsY8#MQKO(6;d3f+$Oq!- ze5jvMXteB0G#?@kQ@-1=9zBgZ!E&b49L^pY|Evc5s+&JbMw3<@=;V)V6$%+ja%-R-JJ)$MfC> zyc0{M_QhHa9NmDeDz9Q4YvZ#_|rpFy_XJXog^zXG+^d7ghRYhCK09N2XxIzw2$!|RG(*252fb2W;9`&I3`@GO$1rLHy!D*F z)Meva-j7u}8Xq6h-ls!(R-O&1{)R8857gpCkSbkF?_Pea*XY1keF+}uRr4dy@Ex^fL}y>CH3+fn1x`<5C9`g-3orb}N> zd!I0WZ9ns_?esIKxANcgUO@hartL1cZ@K(FVd0x4Jx`!-JN-oS8d#5c4QyuCGki(C z^1gug24m|P^W>y(bL|PgqoemeZKsQYP2?^#Y5z=5T}Aeas2p2ABY4?hY*TnwX^hxl zC$$E?JPU3+{S2CUV@J&!dHBB{YntnIx+Wdhk}u=V7w{H!FT9#C&7FeByrQ8GcwcFn zUumyxwm<&ZD;x7NonZ>;27F1&e1 zVZUCj^S0B^pxLjitr5uAKNJ~a{;I6qs#j86|P z{(}xY{DQSK?PBc^cHgTjG`!y% zMr&V4> zPT_yvS%&Y`LkIqf@R6~q9-SB?FFb}$jFFd&5g+86FSV=Y3l8|`1|GV>1AJszzI$-A zf7rj4FvTVIBAH8Zjtt@KGre?(ad@CN{kql|^U%I@CP(45(CJ6-pWW-c@Dq=y`S8KM zbkP7*qcUszG8c=hgjFKKY*{vcW{uUoH_N3di3>v z2piN6;9qd%w}>0(V{$ZH>Lj@E1Gm>Xo}m}`Y6Z6r%JDK+J=W7UN9D8d3v;2)Z}9AE zfp~8o_Y$@ZeDhKt`eUzXiY)33`0jb$YJZyci11IQA6Qr5VSJrNUC%leGP1UpSjZod zheNqZ6E(teYn?5Zx`JF_$c0X|BmBu;X}B(-pJ?Mgn;K(X_3XLmWZx-&Vhx}s3NQ4B zrtS38f3w1KJdPrpoWmdFGQ3|5U%W%ttA#(*l{ureE8-Dw@uesB8gC|oZKnUw*)V~c zTNEq9m?JsYBUgxN<`3Uu?6Mn~Lt6Ml=QweWed(L%-4l8+As9R2L?X9`4d<8 zFJ_M%-Rp-hfPwG6*2^(99db+u3_AD7Qyb+8&XGx9x3&K&^3rd-?<{n+ACRXUh-bsK zA8eoX9>X#3zSnz9<>{LAMSk1qXXajGdjno!d+O=AXWQ|Q=KcP4;W0mWZbBaLOaz|v z&`?{cdz{xf2!HTXuh_FOUvmz{GlU_H=X1@+V@KpO%P}8hz(f8hItW(kk@4)48%KCp zKe36JgiguVbog>7$J$PqBff;r^9{cq68_ZwX`Rk|Ejq3W5C1x*mhbo{zWuh#2e$D- z{#lV~f=Au*9D?une|0*4;e)=;P4pl)jZc600zMMBtV4=RvClrdZoK{%zdDw6>={ER z={mZ0I3G;An!aT3AUlda*pW3M^uo7lv460?=~d5W_GIuCALjCl>KS+={;_U1=e)MO zX}#^|BI9)oP3QRDQu)BS^;*eej*~y&vt~J;or{)7znZx9KIb*soF3CCLe@yQas^a%OTDUV|f18*zglM22hSwX9qfHQ`_R^d~3YJ7nrkAr{mu$*fv zI`+-fuE5J4UMcg^Axz(iUW6R`acg__nmKeK|0w>k|I7IjdBz;mv+?lJq|yys;x-Sr z_9wWT7r?E3rCJU*KtdgPH3U&)AX@4#_B zDIW`No#%$bpB%!s=q8&Ak5XfPZAM1P>zap1%f25z@KydskN)OwntKQH!!+Q|)4{Z= z`SA{$d_j(C{+m>rW^zP>@eCUrd~jU-6u;RxG1$`}|1Rl7-6A)vul*yv3QX|}9K#fw zxVMDvlwid5l;UE%BhuG=J$C4kZ#KNYupHS`co;|aM(pY}2pbGPBw1X;gI+Dx$$G5! zPqU#qS@btPuqU55bWD4Ovaez6M{27B{jiaB7T!Exjroze$JmkNfgjEP=zs?{!oxW9 zGd8N0GxyT}5i@XXr)^PPnyC@szgUf6-KpOrSr7I~VUwN}^Zaf29!YkUbsf9V2mjN< zQ**BDO;W!CpI6JZ2Q71~zPFPvVojxg>+!8i*dO!PJ(MI>!%>F7-JB zoxZD${NbGZ#b(wG(Ov8pg9|J5xj@>sDl~~@3xb% z>N(unF6Q{mSiRrD&+v1-LLR!p8Br)PYVZ^-#?#&rxgxHi54i8uJc*ZKt0>GrsYn=H^^%JCOa2 zL)^nKaM`--ihID^FB6k@RxweX3}4h^*bZITQ1!`Y3_t3x?=_(l-&oHck*v1U!1Osv zTqrgd7u`}v$vrTXTk~O`LrjsQ7XD^Wv6OLdJ6(jFuzv%89Ff1zi~mG`CG9B#KYI-w zIGeKdcTQzb&~}29*8B9ZHnyF92JJ@SVZ&=R?zN=t21vS;UV*3i8Gjpw zO>L*aZ(VzgLzmIylbT=XXx{YC%XV~9tMNj9+cE5%;Cw2#=FxV$<)R<cCa47m$98{3?9ZK*5KiL<9TeNF}285Y&@s;H<26a z;cp(upq_dRSstrpAp<;kSQcZfB@^{(mpr9&Xzo`H14a)o*Qklk`JO-Y(0eE6*~#QV zJp!lg^wUh9*3X%yd3uAZBU&bnceTEAnP^OFLa7Os5poaYe32~lQHweV3>oxor=K}8 zYCOI{zDSslEKKd5=-Pf~KAlg$Z0TjRT~0tslq!gU%|KbE&le{ z<9U8UenUUYjhr8myOlmN9yDY6J&?XK9`eTUo=yD}hsY`7su~ymJ(scknd*B%@`&}F z`9r*Ur_Xy3_P_X(ydgG2nyWR&JiHJMI=~-X)Z(Qk~eeU5%7a&6yIJeWW8WRe$qk%^DsYv0&cV|jCat)ijR~6gl&4N*r*k4gs+_R4Ywjvlg4jnLjO<%*X z$1rdgM7Nf7z+$Y6d*%mueqh*w#)eFSTCd78_1!q} z4reCsz_(rEUGAr?AA5fMuIt#-p(}O}Q)~k7)!92Ib_9dQ{&p|^R~R;C+t`?BLoWO- zn@s&jULe2XJ#!C+o|W#Q zb&dRG%zAQO%i-F(=ro=+W*(N@Hyk}SrITePUihqrnZJ8rLmwN4{@4aDjfKpbzh$F; zouhnr>3Ojv`fGHJ9C+CWb?+E@Ed3L>Lps+kaBKaRQ@=X48jD!lzqL;cbFAJrGSAH) zndV>X2#?fbCeIST*or;oZ`+m(C7#D4?iyzJxD#C!OmT-#5N z40LiVi6Qu&B9_sFAj72=lj5@O9pCZhZPnbZtLi1GcKhMoya!KN#lzO5vy#|Jg_M;E3lg z|DCSB=Q$*v@V{{cuk8dFw8L}p{5LrCyKUhcVdkZCcNkN{hI(TIFm&Wy<6>O*HETuZ z`0T0V%d<@QZ|VL&Z7(o*fWM`CRp*@PJOUEX)5=+ks_Zm6?J~Ek$@X)jGQ_rZkou&nMZHgOp5xOxs8jkm1!LJ$rrmpB& z!L5UGA?kC|hhC|3d{c)WscVUc^-MhWs^y!yRpU?l&>tS`BdklEyV%A)$S~`6q{{UY zQ{_7NYVp1&=SIlLcRoc=_^_S~_aV>F-MQ*_QH&iO*-wdf`8n|+ zhxvOfbgk#0eYc+P1=ug@8B*vEP21^b`fMGrn=} z^$olle^XS%nCEc#!#((hVOyOC;F+)S<=fZ`0yBTpkw=WzI37z|^V`|}TQ%|+{I=6i zdA_`@SZ>GP$pX`ynURMNXL-iI=@#=UbgFU<{jkS=_Pri>%D+podq@LsXzHBx82N4* z#>kCB$wM|59W++*)bL)1?G5UPdCbDZOt9hHHl5bUWy9JI)ZS0-ms20-P1vO|{AC_G zjlCW`GVlF?mAzYd-eNSXq}0ja*y#O3;Vs7m&{9t zu+zWNe`{pBmmZqEmVe4Sba)w$7~&trzwDiyXUwq+eUBDC%ABlm71vS&;L9ADhl{U{ zrkz^f$~~C;SH2UGuH~G(*hzfTVS~owdo*C=)>cI`{2t9X(1UxZ!X?jZ{=n@c%acvz zKAyQ5whg{V8_IwO&3}hN3>Z`XMvwmHZ@unKThYNV+j=1#z*o%=JE*_C?CJMttFl}9 zKr1y}{G+x^@%!)5Hia8&ntF7;D|M>J;7<-YHipp~c6rKT?38%nGrmW|F2;_ezBTRG z_h|UF#zF6gM32py7x4|=03Q1u#W?7MR-UnVtoP6C_h>cD-=ox2iX!x;?-As+pYQp?{u^J&C&U}xyCZ6O8@j~aT^=~g6P(SZ` zG;mjwW;uI!^6YRWuhZ92AHjDm@6V^TTnNjKc?HwIS0YRe)B>{%j0`A zVhIdh=<8nh+U35`aY8ow8UIJZAHzeo`63Ja+8(ZJ{lKa9GH#874)_6EA|C3oO>0hx zGkolqyHf^wfN%O5XZSrDw8#b@KTrqPwLU+mF?7}%zbzlc{%uMA;hFygrz8z~0P+j8u>)iH;*FobM-c@k+Izg-4 zhSwPWW`*zl3GbP~S1WpW%yMoM(0cF;uku&W!V4b$&W!W6)6by!-qLu?EswPw$o0Jr z*Ue@3+4m3iwSt)N?U{Y7I$6Fi^BA@ly4;WPZ>Ow?cIlx}{IW+gp7=J%dPK6?PAB~{ zh|()I7vGaUUrHI0d%$wX_z17utB6tfn_7QDaYwhd(@)5WdmP>8Out9to?=OO;Jer9 z0dxo+`fitenequ98tMDPlD95g?#Wp1rg$2tn(kYd&n6z+r!VVuLHYVY$46KPP{{tL=8n1rOhZ-xMGE9&h*e zXeDO)_c4tpbedui2mkg?@vn8@dxF}RW44<&-%=AF^yS|xj$V4%cH=p3+D?ekdb>Hb zTxc&O7reqxHaRx%sCB$4?{%?*xdUIuc682|YpU^xHF)^mcpk%VYL}cB9C>_?28d@@>@o zPfYdVdo=LDa}KyZsrHqcb~=4#-@+SzL(ACXc}@+e6t z!+SRCgK{}?ihHkf8AHBH!_UKSm{{Mp(l^6zTaIcRU)3}#IYu49pYv$Y!MMZ$KKKfq zFi4F91o?~UQ<9v$-4wPSJMy8MG~}x3mxF@UsVS-&*~fljIQ1|1Spro+I() zxd%=6uhG9(zlWu>@mEEMuEaN6)cAUgT;t#4!xrecU&K~)$XGt(98-?RdjoLbNq?P6 z0rLl*;uX&^IQRU>@uCMb@Tq75rr}ZDps!)*%b0b#Y1022Quul)VY20N;)2!0h1_bp zrupyxxb1vssA)U>z25ateBFnJLT}TaR&A!igER3xXjsknfe$|Rw2vBJ=dnk!9`tS3 zG#}o2-G&bh{h4I0-+O)M10L2n6n(B4rG#BJF4c}M?kCAUX-+TM! z7`}9ixdUyDuglJPTKl2aU;o$4F(1(5BYY+N_#46%ou7JWqF?em-Z92K7T5U2u;&?2 z-6SqSqx-M)dEhgqxE4KC8)B|9t~piCbvbH#(|q?o9+}L8#lPbk&qwjId{FrH_TL?} zD;WpLtLAWXEBQ9`w{hMin@rd9QhnNDKIPBlYwLX>UmM4I^}2ue8L1V2|BQaJYv|8s6pMH^0ldy{U2f!|E@D2{2et2J z_O0GCR+fEnC@9Jn;uBP(QgSiwr$vy_!;IT6S)O<_F@vJ3=(@Wlg zlZvI~4Qa$D;sWlS`nGR#q5nV8o)V4uK*P6v>;YIOsR_;>ofhB9?%;(Voj2%AK2|gv ztJ@P{^g5&8j^NBkjR(D9DWiNF;@pOp;ut*fEBYPIya#qP`5A{AgbeUJ2Ja`Ic;Z-X z^LgQ1C7fsNTfGyBS@82Sa}1x(tnbh`zVOc$YX|!n^J}{vqIXUaPp)eD#0h+28~uFw zkwZ0Z+ljE*)~^q*4b9U6_$X@?w5% ztx0_w+6X>2M*ku<*0^m4KifxtVH=@kA7dN2wvC)G4{T)2>n-=OT(9SRCC2DX-*)q!_A9VjCfAb7zF?pI-gX)sG{e!c?esHfhQqJz^fPGq!Sm8NtC%jx-dHQK z^VCC=pki+78@w_%zpZP-o)3(^E(OhCtz_&*&6hR#n%q%dMg3)5{x9dcENhSFQa}H{ zdzQ7bqOaFGaxC6+qoeF7{Ce8EgO;2Iel+{6E61eQF22U0o||q~pT3?OZ!J=jb|C&nvsf z>UmiMnLotTzEDn=Sfr0fYdzm@@1@pT5A!Du=zh404KVl_hj|4ZcpgKSv0Be_jc0Q{ z@_!F7mxk}ZG-G? zl=ZQXRsSy5aMujx8aZ~ObXm)D&p&$WS;NrNbc#pRH}E_*uf9R|Y~};?jq723(@4}V z{AAp=(}miFYM1>Q{T$w&KQ(UK!Flg{IB2O|jtAE_W$oe|9{}^5VqZEor|SJGzT0i< z{MrS+b77tzZEKC&b|QQUwn9rCu&rF%R?f+x+SV0~VXNuJY8NncC-!ZppO>Hyviz-v z?YEy@yTBRNE^s!bYb)4M^~iSqYo5e->@_FNe$Nk&XPxVE4xJHcJhQ+K;gmUMej1+p zyo0&IJW5)j`o6UB-+ur9-ed1uPx)K^E z08Xycr;p-qA-IMIa)`fqJn*X%T}^r5XY&BB=kfHh+K=aj1WUspOVwA@s1PgzUDzt zux6cALh*mt6FcI&r5?W2DV`}0>-`N{kHJNsw(I{EmA^;zAzjNo6z}ZTg-gDi)AM_1 z;7{-Oc{(lY(3p2 z!Uv2WKK$9vKIH$TK}TReR^h>uS_M8bl<&*;XpHwZe0#%K+v%s@f0Q0w?VnSL&zSYH zEZv_hT&+WVFF7wfd{Ea+u3xI3H0KT=hi0GfjGz15MIAh2^EvZ#h}-+@!Q1*?-$$oE zu+{u}*!C^hv?f`=j9=%TeL!x2L++McyZW#}^*yi^#jX zNBoB$vBi0Zo{|^e<0v1ZhQYh-n&#iV?~!Bmq54tw{^(QV>p5)MJ5uihmU;qP(K$K( zdd*p2d;5e=!hQwIL`2^`Pv8QiGKo?y4nZ8@DH%sKky`G z_y?H%Gt`T2)@OYi={&KdlCpLhZr)ZTy#$Is3p&xr%MhHq*f zk82Fr3Ds}>-FEs>Lk7L|*i1ahH^8}h_2^LPStyx_UEN1oU;k0-F2 zCq5X{Q)uz7NPYOMX|~V!z4Zq*W*eEi*l)k{e+*rx+JpVThzb3=POGt*XPLk8*kk3r zl2D6W>nR=uUpZO!*IVLEzUuEaLWWM8<5?e(37lRn-kF0dU1LwhxSxA+4(xc=OwN%_ zuNL<_kzttWYhQtn9DGkt1D|t!ueQt2 zT027Dph>(#qNTl0$5*QVhOM@OZ#QZ=6faZ+OBE-$FuJ`cJoy?Z+z^VpS@K>v6kY4 zH|X5*SzmWF#y1-o@7VJ)wm3UhbZ9#P1`R%&q9MLDALKb7WMk-nu8i3~*X#5K`39M+ z+l=em?>F22pGX*W7T?sg_zgN>N0XkOYwlNk{>ikn=JCd)b$vxYfX*T1)QtLE%3xx$<3Rq4>tv(nBesF{(Rj8S zJmwmC5&O~PITK&4m)hqA9`UX5X5w4n5#JgQpISES8vNA4e)iPZe_Z`M`*rUf&zcjr z-=m8UGSuQbE}oqY_?&{L;y;r&=9T#6`5?S*NI%PuP21^b(9j*cn{^LJJgg7+z@9;&+`+k1Ai44Y-M+-N}EOam)K9z3Tp-tr)-~H`b zGmv9>%B}Joe<;WPz~;8o&!CyF@oYajwVi$jjkO1z;V0UNd7g(4ell(H82vnZfH{`- z0ljUIPR0ND7#Q<9+kvw=raf($du?Yheg7^5{}}hQY8`yIM?*e&u%3J@_nhv7z+t}A z>xjC7&s{%VdznAfMd~d35a)|yV}0krc+TWpVt!*MHG+JjuVL^6ha3c^7V`K86?|$F zFnV$jU4X%pG57FcTsWm(GUhp+eZ&?#`EM7VYm)O2KkOAxsPT;xynFv_^Ip8n^}5ax zJM0+f7W$9DdVc?TbA8ertm)t>8L<}B{B5^&H!S3h;LB&1J71h1Z71f_cX4sicF}Qf z7WZddiT1#d*865^oX^>>s5ZnNoczu zKkD*|&WSH}vi`VdoiS`VaqJ)PmIib;RJql5LKrmjHJrBEU|L55Qj@OymM%y5riXVspIDLF{l5-aS>se5&Gr-$UKjmFJ=hM9+xYP#s$oD$K znB~?u@FZsB4|CS}A=-V8gVvsi74Uk^G2C&o?yNauFxDL9YSgjdmAbZ_7{7!%W?FjJ zu8}$x_h8^Gbox;n)~?{AxJEyxb`d}3361fm=o~B7S||je(Q_;tr9%^UPXHnuA2AisOe6o|NJ*jtdIC_j83CvzL87E!BgvP z@4sPzAM>@$<0@9bY!~|1@q{L06>AW1>}QRmf0=s6$uRn*w2L^Y&Ez`zEpT-DQ9Y{X ziSv;j9Q&Q~S})c)@(kU9p$k3lCCLT%HNA1@v3CfQ9)-`4w{0WS%}1xX>F&? z=>4yZLzmGr_U=D@-1Y=22i({E%V!Z6|_?Kj-kl58@MgvUe|hQik#|^o)3G%+K_~?v#bC;311~ z@eM!JxX1!#emX5RgLB)Iek$+!u+w^4H|$1M&EI+Z&xB9Ctl{AGe1CY>w5ez4A>8~`%a$rw_z)RmJe6yLGz~JD$D1ju=e2!U zK8rmlw!?QP;fx>G7~^W;$Bb=}mpoz}ujqVF8MKaf#-Q+o_J94KzkQ7Unv*w_zrzRb z&{T&RUIN8@tNkjU1y8{m;(`yz^%`dww;{Z@!zjE$aalX)v`xV%jUm2HuF%LKwuRhn)hmtc>zcL4A=G6M6Ik2AiJg1;mJdo?l z=XL)2hbQ`Nn$PR7EYDZ>$hMzyEd0+odwBB8xbzF1epH(@hr@?8%xmBmK&fa~Q%7tB zzlM398g?O>*XI0=J(PISps&}8do}cU!u*X*+kqL+m`i^``z7P??_<&A^UH^0Z3jda zhYS0@?KBW=`;2??Vo2+?{+|m8U0CPIX=28n^?7|~L)*$)@fDqm&%w3SUp|Q%v7m9! zrPDh19N_#q*7|WsLuxm z`uBpI)Ow3=sT02~*pW&9eFS)x9Xww5;kRfgzIO^adR|7~cKQjo69SHSj(5;{ov;sQ z@rCNfnmzRgx=~;2T)tw`=Q0%7S?~G2s4;xJGmQyo;p5?$^Z!eNYfg>QydXZzW#%hw z=~I*Fp;7E(&&>dNO_RROMf8;)(TO#5C2@@FSTNUzF!(Hrj=5gJN^F>S)wnRHb6uzP zKBmz0^7{K-+r|AZjc*IFQ*9S5<2CI`(J*FO?j^ZqPCb?Uwmv!0NYhYTO3d|db0yyX zf|q++{2O^B9D3J3<`TYe-2%2Eb=1Wg#~fWvxaL{0l|7W_6*%~u-t)$L3w&6^m$xUv z>eoocYx=d56+{Ny_)Ab^2Mv@V|nBtadmuaeZ0@A;l1DcHMgP-zTjbF zH6FaJ12S22v5}nYd2Jt-zoJfIH~F=eaK?{ojB&N7Nzi$`;t_k9iZ1vIFKEdFVDK?5 z=g1%KWsFy^3n|lj#C|!(GB)^Dek;CxT-W%)cAD29mN8%8V|eY`iZ=LyH^$SxMJB$r z5A0jsmZ)^T*khxis}Q6sqnRIH5FfP} zTI88W4a2WB%=?*z3g0p{6!At+*${eyXSmlTe08C93ApIPr(^Tic6>>AUYCY6Cq+*! z#qS|+XQHd7fkv^5cd@Bw#OzSoDc+$sxL?%anp5L0bU-8jOMaj)ILmEP zalvIA-x6Qoi|UyZo5=@%(%jd23~_+n@xX^~B`(&{&!~7d>1RzI;~AZB<2j^GXZ8~F zo?YR)9qELg=!E{r{o~8ua{O)D+n^I;hJimEb54>ILm0gH29??bjAq--Q}tkZXdlm8 zi+$Rw;b+O7;^kP|2~eKr@?1As_zRo-+=%nG)6dMamp)gKow%jX`0ocsV_t$&Vyo{M zXugF}oT$=fK;#v|a!24)AXeZ~zltGnfRS(XtRvM}sjJ=_Jt>?%Cb4%d zb-?sq=fRULg_p)ltpjHKir4-ZqyzEuzWxcF`#$jB_WYI$j%v}x8uL3gc(QMX{?6(i zY%O_Ge}Fyvclv+tk$W(%GrxG>RO%~x?Fq&xkjy{JG%m4S z=mtv|!K2xSWm(jOg=ECx)enAH%s%YH5=qd_WW*RlO#Grmmj%rdXFT`b_lP)s$vyYn zbMEhV&bjxzyMCA6`<9j;NVUIMdV;FW-_Z3b^H=V*v5(3qA>`g-`N#cb#|Vkx;%o&W z$1H^Q6JiQqP|-q2Ee?In0q6PJBK-!`jcC;UMqHb@U&EW2nckt)%{B}RMl(kfn9h4w zYV3aA0u`!>tq>@J4n&MQrjekq$Rbph@ioJjuS%G8B zfd1+7h@h%qH_Dr6Ef3|!(L{*#2~tdWqEBa3qTpPFgSMd{nJ=x}2M;TP8aUttg9|~* z>*#Rd79L9ng$>2T0@+?iWiui9pW+T4CS0V=7Kwm$ms-LdXZgsgV$%#z_pc(x3~ak6 z{?qSc?|b&j1IfWHwN7l$!9(?(Do&Tfv5$~KUQQwE6&W=X!ddtr>vOPcRT<;s%q-wd z&;p$y1g{;m!?l_+js14b#a--Yklprgc9!*lyuKWi`+fgQ_O`!T(y|Zz4@^Qm2b=YN zn5=(NTV?C(z*fIktY&xlW+7WYAnbE!mlra}y!);i6cZ-IFCROyITU$_0wKkx<-1-K}l0b`yQ3>&Yj8+M&0ojo*w*Q4w z6gRB|eP+&{534~3{1&vK?NQK&(%W_l<>fX(72=lXgd7d|QJ)X#xW$kI)-&8{6@ARt z&k|y3$E&iV{(MHwGr(xa0Perh@tr8o4XfjL2%RS|R8?04Mua1gOUf=P_9)_%?dAqo zbV9?;MV&%(!E#jlD_|?yAZ!)j?Y<{fSBf?cd2R&5Y{cTi>{vW-9}W`|hMQ>8rj zPU+cc*bZ2naKd1r4X*c`ehhmE0*P}XP8Zxx4D8Vvc>D7P9-IW6?0q1NQJC&)5?TzF`y?a^ft2IDlu5Ky6!{zBW~&|4RI>&d zO8uZgLjCfzVldi&ShEeKJaD)FPf=AjqHC~6dB)wa`SNkG=P-*86w1@pZ$Owl}$8NFle}sS7EjzupyJG?qS4652*qr!T@yuje^g$py TWrtrTEmqy)nPGoT_Rzlp&H7{! delta 1677 zcmZuxZ%kWN6u-AEf3<|BTb`wqzCy5O#ni%3CUmsLfdpZUe-^MnSrO}SY%yd;M}(=1 zGtpYl$O0WJlmYGoG0Tk~P3DJvTq5Ge%0{xpXhL)`#6&-lc<#NgbH?4|oOkZ;oZorp zo_pTAdz=376Sce&3^dd~U)8hydtt+PJT$lQe#1FR2x*U7mYTneqJf)85g~8q6530M zq45h95kl^x^ybPvC+JaS{5srcalaO?XZz^}r8c&si|M(8biicxhtgs+Cq{+Y!)9_% z7^n`Yu?%&&(VfLJ8NgIvhxd#T#I}uABggn!`Aj7`mQ`TRqdI0$j_c4rX=xFu#@H>( zOET*z@L20LaKZ{Y2$rZO&cBOtep*FM$Q`&)@`nhz1C#dAC;FYNSgnvbH=)(x7U7#P z?f5{mXsIGCW-Gm<|9=j4v%E9Iw>dNXW6nz&|DjXkgRN9y>T_phuQp-P<Fki)egV?6Q;gP3JLtdpDE_x~izV!&-LcCvK_YiZz#maqh$JQ!Wbw)jQgGfO33)aBlHQO|m7MZ`%+d*z!>!lA?R zy2sgfhtJR~J~7!4_9@Wrdm1SrpHpDDh?(KCuMn{{-x;3LFH-uQXn!yCj^Cy6{Q(7D z2ynhPkm36SW;h!tMr=0FLMi(t5Yypf;z$lfY_gH(S#ETpUT+*k?P+qO4mTY)@|w8( z6;la%n-s)%n)*>6dG($+&?zWy{s@y@Yp%kau-%gQFNuBfnl&?Y%dMjt$JAyO);M_D zv_XW4wkm;*!CG5FdRgnydPyE<@%A#^ek_GtMtK=;g0Fd$gRowrz=Mur;hjSSy;FYf z#x)D3&LuH-kMpj;o>hUNVgo$r924(Kz_BiQF>`Re%PbfP5+SZ!GV diff --git a/src/games/endfield/deferred-lighting/0x4C421100.cso b/src/games/endfield/deferred-lighting/0x4C421100.cso new file mode 100644 index 0000000000000000000000000000000000000000..d4f1708991ad715e147a6486dc766977f86533a2 GIT binary patch literal 43180 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%0AdIeEisB|1o@xuAURnLzm;mWr^9CjEQj3&3Rqx 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 KA8=0#_x}K=<;;%& literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x509F5926.cso b/src/games/endfield/deferred-lighting/0x509F5926.cso new file mode 100644 index 0000000000000000000000000000000000000000..5f563010231ef0d68d35c10861d0e64bb1a229b6 GIT binary patch literal 13776 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x523B9E43.cso b/src/games/endfield/deferred-lighting/0x523B9E43.cso new file mode 100644 index 0000000000000000000000000000000000000000..7b1e28b0a94a0649022cb670e33fc27d7d3bf050 GIT binary patch literal 69428 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

    1. iH=x6=UBAefJm3ei#*;tAja6x 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 U^P|)kG~_CN&n`69t)wsfKg2!u(EtDd literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x60D37BB1.cso b/src/games/endfield/deferred-lighting/0x60D37BB1.cso deleted file mode 100644 index 5552bae938d36bb6e4fdda13f19efaea5a96ca55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52696 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x46368E6B.cso b/src/games/endfield/deferred-lighting/0x66F41E33.cso similarity index 73% rename from src/games/endfield/deferred-lighting/0x46368E6B.cso rename to src/games/endfield/deferred-lighting/0x66F41E33.cso index b3f7976da620eb7f272b2f073e89b64f574e3dc6..204e1f0c8e51da2873f896ca1a228399b1d3c2ce 100644 GIT binary patch delta 1889 zcmZuxZ%kWN6uh(n*Vh-++a5q=qU0~&R|0p}*>*W!)TBt4L%YPu^g8B8piz--YQ zLZgy-N#d%J-n2{^B?CxGEy_Bj$;6P1P+sbRY2`H9zE@ldv$1dOnwJ=;snl+j47AcQ zA)|k`vX?_S=~iW{)X1o+akLU*dy141mgqA%FH!JcibD#aAh|DX%m-FirxvWbKz3u0 z@)|naxP)=(K@qu(*x<)uN7Ye6%%9^5MiVL3{uU7dJ8o||bG*&Qn_j+X4$7;4;~aBf z@=X4(-$y_892Ofg58K`*zI-06HLuq&xOp5$2r0gTyv3+HbKYDS|J(=5J_r4xCTBQ^ zOx3!$j`~Txj{0r=dk0WU{)3SPxqbJ76cw;vR+>cTHC>mkv7D zH7!dreR9mqh)fZN(HQY_Ivd>c+2MSo2W@vEO(=IG6Ll;RR@)y-Uf#BB{v08eE1ncJKY?7t&$t%`Vs`j!@aaP={~qBf^k_G% zPP*W1aS4>gFCU2QgO&JI&J%@(M7lvo&^w;Zv2xB6{kIPJglNJjY$w_{LL3eaiDq@u z@R0V##9@2*5qGPwHPXtp7+8}cM1_^41ICg@-c~9Sw7|V~JLHl_wU~|M4_eG>N^DmQ zHdDtn+eXp@EwB8=%j(DIdhAn{azBLAQ+&;Fx}Gi;+cyH6Cq&LeuzSM8gA%xywL1$+ zK;@{orwLF;1z8-uLz V5suwQMm-7ntk{_p-O3hAe*=;PV7dSR delta 1752 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 D5IitX literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x6A7F47F5.cso b/src/games/endfield/deferred-lighting/0x6A7F47F5.cso new file mode 100644 index 0000000000000000000000000000000000000000..aea9cc4532c12dbfc7e820376e528ae0cf49b154 GIT binary patch literal 66084 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 z z9PP(q4Pi`iiM`!zsgDfd#J&d{=@2;d(VKQtYwvpLYoA~9mpD8Bg;t-9s9*VsN38pW zxB1?3M3E^7()?1?_&pX{(cqm7rha$OfOz2^8P`VlVp# z(~dH_Q?C~3cF`9Yyl4w<=ucnuEb0P%>I{0iy}!(N^QXOA_~%5$TxQM5bQ+4fPF%$! zWR%)oV?i#HhppT~6Sc*1S--8byJa@c8T`!{dt_R0WlyYU$js{*e5nWG z8~69rL1?f`-_ulm!NcdutyoiLBVO1BO+V-~{$69Nv{f(i5ntUQ0KA_GU$R42Vvu#M zIbY@$aK>nf_mbLKi6i=Fm@d25q`Hkg;CO!FqmnbcFSpNb@s9k!&(OMs&M~BqeY4cQ zvB(4lUByIt@+Q?hri>>wQ5i3MIU^(S&sRej%(A=ht4hXbWHLDhj;d< zyX)#(Uhy0622{H22k4Xo@xDy z(h+MgaMP=1?c0-4uQgv|zGU21&%l#T>qQsybo=VEABD$aP2G*(5-^TUE&Ztyd)Hm; zWsLYKCQ(ORr}KPUO8zkqVhpb5BD|DmaZgJ9_x&g1=xBcIp`=^n5A-}^kG1%Nv*qKu zCO0fYc^vB$csm6?OK_fz1g&BM&J@1uB6{%rJL7Ap>OowyoEIlKH_gW1xCOk}4X+~e zM(SFIJ^j(yb=YFNcl5j|Uo(de^N;c^_J8<7dPSZ^z1$mpG)uaHOPmkF&He;;`w-mh zE7jsyAMl%E9rrWvT1)+$Z`Eb6( zg|WMf-!tvTqo0p^58E!ADi6lMb?or9=HkNsqQJu@@Ts9X4p;;9Zoq7DUjshA)89Nf zt$yXr7|(#$8vSe|bUb^#L#=a2hixXlEtd$n~&Yxf_@O7IlMlo4$Su%X}^h$w~7WI;p>me1l9#) z^n;958{em?<>-gFk60MXdnogx2Cj+^I-@HsFml+s%dVpqj^g2 zcvb;_c%ie~sW@3S^V_ng@Q_VDA(I@)b|4%2tRFb&wbsyNe?SKx`^C7LUoi(V4BZ|q zGSGt>Wqi|z{;DO+6V=vu*B2g)bF9gyJahh}KIjJz<@EBi8JAyU|7X5YyC(Q5mtxNe z9?vhe#&kPB|7g{j`Ei%l1jlpKas0m*=r4c9-_n7ey@qqhdV|kgrZ#!ru-8yLBe#~N z6VK^q8ZeFLplVD!!?6wW$bb)8eDSVx5?a;d*n@>lWvzzSRar+(WG_g}^*_&o*BSL4 z8}Yiqc!m!N&R#HR@J|OseEYsbW=(Hvr{etkYf%hoD<9?P_d$gz_ z^!q`l=HNXI=!}P+9_t5PEZhrn-QBb)Sua*+r`%8AK*<@OJ6{#Azb(MBVix$N)zFED1dB1%dFhn+1P_gjt?oBh z(Cwufv2OjKi{{XM{R(!0XJ7O~gQQFH7Jga_V-JN6{h+}=c=2gIx{O0Usr=-p&=KDF zjF!J$46Tlg7qEU{*avomKSJ(TXjuNNc&%LY!#CkK%{AJ7K)-)}ue!CBez7;f|4%6n z#?xiQ8C(wetoqlstFA2gveg0G@e#aDZ~xPt7tFRNye5W@#x>1T zdXEwOoO{d@e7lqM_uR1zc;jzq8GEAic?UMjC2mu4cZ!d!A2d^V?^TR4Kjcl}eYVsG z#UXNP1H2ML>Jol_U3x#2JYvsAZNoRb53#J4`-AJ$oYFY!Kuhx?jp2*KXwU)v;KGL% zU!jxit@mQYh%s=`#kf;4(UX`Qq-W+!&YQ1wfd4^!Uv`ar(Qk^ceI7ZZI52O{%12W^ zM;~kT z)cq0t@fq?%;uCu@)tPAZv=+Yilp1)4`qUt|?74tBpYai|!v}P~5Ilh~CS5-O-AujA)4UAx+yZY+_~aULr*aK>u3OLKV{k2l*4NA%9r4~x znWM3;W2c^3@7u#$KhI~{Vqg5uX0`A}XJp_XFuUH*2%YlQ9p zU4Evw4D@Z~S~vE9EsXnQ){dEi3m*4$y2rc$9sKNr*8HdN1+Fsf>*AwJ?fq)x(I5&P z=1HwvFE*n?mRI=1|1(sK7M{tVYw=CoJGVNo6`tm?Ds@$NH;jRgO~$jGMc4R_f_KxWa>P2Zzc4*^fNwtHz4Aqk z5r6K%kat0~5`XAA@)=#R!+u5ona23dEOg`vet-s_=T`i0sjvy#rtB4ukPDxiW^>+- zfo0&AtUG!p-9yLhf9vb^{t~~eFSeYM4a_a`GX83bxqWH>=9u3uI^wz~9`qeo?&)(} zc`u>We??>5{~l9IEYJb{;YDs(54Zl_6qw}{o$7C1GYs48FTY=LR%+c5*wEFv%r|pYOhrZB2pLq*6__&3J z+M00~8+F_bpJbS00M43ZP;2j=ptl{8A9Kre_AT_nsdLME8lLg3i%8;oq!RO>rEj?P zFm1t$`P{;cLkq0+G5Q1JdkE}gy&^}~b#`vD7a-2mF~{jS>Vpr?sMq{mz1OGTqJA;) zf#$A%GUihI9Sybj)ny%kC(k|6g}TP|viRUL{EQ9ovR`du_7Qp_+w0+2vqw63!PEXI zyn;XeKn}T<L;-HitcJu51X_Cs@ug?6)7tdwhhg)Mjj5RZHH216_t0hrNi7fZ-ea zh!!02+~>b`Ery5o5c}}@L4f8sI3E6eDec@A<{Y{lQAC@%vz8%kN8fsUDlQA2iq;)GqL} zcZnJbZ`pOjs^k!_cF)M(+;hUMhE9Nw%$f`Tm)>u-9^yOsezW0g32q(OPa5vAqBH+z zGiovR=I=L|1Ib42!{WO!+ZOo6H|TUm^!SN&$FdxIx9mF&vmTx!@b%mi!)*Yd7%rtbGBQnTJ>Uq^b2x)%GbpU~M z@_W1o>>S6AvKI-xsLMKHT|-CH=~>bFGrG>Tk(zh+Y+fUbn{yQTfmdRXc^W^@CB|}Y z7-uSmhP_5U*e-M%rM)A`LkH@(^ZBrP<#)T#fxUtC(f1d%u4aDh4V^#uj=fH-S?N7s z^H3hopM9kFfDLC|3R=YkUQ_ry_cuQKrHl{goOnP>T%#>=UYzJ|nsrAXDt_YsJb~xu zZIXFog^34#xbQ>cJD#?C`H{tI=8*kUa=iK*|EO-)eUkKwJY$Zrt{+!B(+8WN1$SNN zV#7XM#dQIfxF3XTU%^+kxYldQig)RtTT6ZN!t=uVkTV+RSxUWM+etLMi)mcRh&pB; z&~7B$oaguwIQ;REdC30CqsCD00UItE2i9qR|7ZQ-%UWywO>emmCq9N5_aGfitD0Y* z+d!k5U*7`;hq8 z#3#?amn9w*e-NUMdnRCOMd!?4@rd}KSH7>}768?LOo^;4c(C^__jh z2s*tpQTw(DTWk~hb1lEbS^!Ny=+qp@2llY=m{$?!W`A+3;P{l-e^e$sRBY)r#`h!~ zZu=o>H$!zS@1e*c__+om8(nF$?)XY}#oovA|5{^HdkT0lC%|(|-~|uMlioM17dhC1 zzHX=Dglzi*JY-MdA=`YBi5*!7{F(JbpYXBTtZ&A_AK=i!&o*csTiAQpFApXek#`MU z=%3yLwyzlHSW~=tZuLohkOdFr^ul|<&or(*bA6s*c~g9)bG>if(eq)gG4UR-ZDoGk zRh}1M`>5mMd%*Swdkx!S{lI4}pf-8l@Et0XF7EkdtG^#N4d3%I2UR=cUFNym#rJ@X zFW$!!?|4^>{T_77vWeKi>#D3H2ia3G=J$NhsBas@>jvW)J|sAM!JrjicunDNC;a*y zUcncr>Vd!EVLA6DI;{yuvrXW^iM#oji0jUaY%itRFxg@0rJz>+Ys^ zieLEak@0?lnDEZ8eXMn)zSrw9Y_D{xTgW`C_tXlXDg63771m1d^835}pn>`Gn7B}E zuHTeyu`eyH1+oWE1}F2c2|e9q%gl!Pr4vg)d`!>NB>cmV7eaOnvb1z41JT-*iN-B9HffXQhRg zc_0J69zzym8;vYvfHzZXS&V^aS?5Zh_i%yH!iyROY^FXnhxTdJZs(a{>}i1YgH8v$ zqdODiHq95><=y#QwhYUqgY&GH`$4AzWMsUl_kd@jwBJ=@qHf%wu^qh+8};Wy zbG>*E7<}-Y1KhKNxBSQ)kK6+<`!@UgiQ+%r14ci~#lKT>c@G$V#tWM!^y59?%rEqx zz~en&_$ikor|3I|ya$Y*UzfheBahhUP&@8WJN2I6Z4)%NYmEAJ7!5kWAKX)=wXbAv z-BS{yS;0XU<7PeAg~Ob3-8e|k%$J;pFEXKpFZ`$Yx^`X*U-(S%%|2%@z`S9NYJF~7 zkV#%#i%k3IT5KUM*UA@uQ?^X`2)^Xtwdnh7eIN5|;vIByFURyC-wUnoA-rZl+YdU$ zF<%d~rXPK$>?S9?Zm_n1e^04_v5(W3TlQSQRz(LMegj5aXfq7k4Fh*cblZgv{bOvH zzXxns*^7Swdh23&9zz~5a?Nz;Lau?+=GtDt_g>>#V}}guO3S>_al$e+7VA28>Y4Sv zJ%85Ex)=NE-`mIkz-Y07me{N}W2WcXP751(&ff#hyhhmKd%!Kd<)Uv3vu^AGTNwAr z?R}2!G3)o*E3)A^$*w7Uffw$t@Nw}`ya&7|9*n`uIit&3$Cwx72R2)tV^#Rn_khg{ zIQO5$H~a3LEf1dNv8wJ}Wq*@&4Bm&q>{G4z5no#CCw|8+N|)zrtRHl04$0TF8TTVR zcjFyPaM>$xjXv9=H&5w-kE)(WbWLo5>xg~L?dm}97CxFU5d+>!MK@aPMmYTN@wqZ? zTJGE6&mM_)-@Zok;^V@BrXO@_j%DpLfH61yEQ{+mq`&ozEgUr8 zHWECTZ_E+nVNEamDD*b%1+9e~@PL>2#&=FF-}ip! z<5;#6Tt9w-9=rL^c81tLCK>qS<3><0{HFJz#x5fKrefqy0c>F2tm%-tEvxvYu z7V{Xs)M0c0jy(9|1Fri)r+RP9o?sq3=^uE^nSRiz+dV!1jIg5`y-(@n`R93gUgPAz zrlerA^P?ZS?oS@Let6$!en!3VcuG1kKlEKgJOgEvy&!b`ApYO^k$WF~?WNb~G7io8 zsC8U8|A~=x@ECsE`|~$%PvJ|q_--ciD1IKsc9;JL8GgeLS%3bYw?EM1OK^lA@8J-S z^N-AQW}d}&`mr~_9{d7~{)hC@ag5jmjqb1DBYuI;nDVRYsoaQ~!MNsj?dx*V_OAQW z-?)2r5G?)=Ks*~o7x}F68|{BEXje-dBrkL>KDw8@Z~bkYuPM)5;al)|j$UoPQ?%=a zpX3V5c)MGoskP0u+}vh_q+$`zrtnM7 zZ(TC)V(zJ3SeIHKWZx~y*Z<=y^#lI$Ptm3>9#7FYr@^I;Z7+@Q&0bXe%?CMrAE$jr$2#AuasH@VeJi_b zj7NAp-;7*NG+X*UAaV|!(T{uuuJK9_tjH*TKX!NPRV4?(#m7OT7X3~p*hYaFhZ?k3 z@H__ZPk-uDr?bshg`>LMeb&BJ?Pf36zUMBT7xo#@I3JK*j#$I+nfdj@2+?=EHK($C z;sic%iuPdnkwY1GrKF>wC_IxGA z=uF!WIz0lRoUNb z+&L?~mSk_NmFRf>k(tipTB-M2>)bqOtqhuGtz_&~nlG-uuHTHy|51zS>!@pw=h8U; z|MUuLWunjP9XS^7X%ssuzmfLApmlx0PVh=yIW4{R@ih+h+;ofjjP=}jZGI?rT|em5 z)b4&@sIDgq_1yQ1_(AVL)!OKKZaA&vMLiGPl8>22IT~>SH_y9^vfX^3rJmoecB-By zyKBrxpN-#FkvG%<#V=a>LOESyQGC3w*6)eth-j~+)>{wrCl2U-GR5Xp;b$D?6*9o{ z7`jZ=dhDleg)dcyUZCq|s`b#Uh`;S8pBOr)G3d>&A9SJPuv!m3H6_}Eai6Mg(za_jh2^>5P{^$(cuN4aKPN7#zb_S<@J%?}?xv#-O}jN130g zgFM&De5(75X3rgdqxO(bsRmIW{ptEaR|nJ}>^E($Cz?-DZ_u$HbZY1`uIrU~(Yjt` z-7<}2MvW=Bw=$1{zWfhk;=x|9A9QMD_X9)R8~Zcv(cxiv_B+?qjSRD%z}i|#tnCkK zCC{^_YNg|&S`&7FHpXhYR(dUI*BTsX*&wl(ASg9xjg*n7CG(4w<#<=VE=r*>sqUAs&- zRl9(pJGsygIz0=0kVWmv`fN6}3t09uwF?~P1#9Cewa9MQOpPsV&PF`+1`d9yb3>U! zmoyajkIU-hIc9zuKJarR*eTfkdCp>Cr-C1 z&(Za%y;;otA5i7|j{Y`Z=k89Nt zJ*=DePWtY%K4;>4PGa2;IyHxEuQ`oB@rC2Wy03W<6s%cSlu-Q68QbA!zSJq^U0d(9 zr#JyFuznbS=gn`u{gJM54+Ss2E8Z;f;S0@9p#`?BKF47?3Zvrjdtvyx=)~g49n89_@&$Q5#OWu9v|eI$@R1Klkz#9o1ut(!ZUup7d)a5&)D22 z_gg=Y^Ya7ud7h%1{ce6EZ1*+TWd9pK=U(;!z9RR?|2Fr~c^_`k6MykeCOXr%KE#0d zz!%xS^(XHffPGP8z|N{>0^@H?;74G#6*|VCJM;F>pVs}%zI+4UG4Xc^z8}DDV37xf zKV#-!d=Yu~;DrB>k1gb#ZIHZpzf1X0?>l;K_f6&-U0Uy*-r|Es-A`1ze01ID|K z#IPT9(g9o_KTiw(#KAcUkIWw!d5GT<|CmpP5sM7NR>O!zfrZX{g5h6u#*e^?ytuCd z#{L_B^h4FR>a3iO|KlecrlJiXJ4oeT2x?ud1nk_WzdBX3>U2gy4p7`!fMj+rO^S&%2Y44aY%ewIgU zrsN4No<*vSm}r}H$=`v$NMrU5xrE>N&L7|Ke;Hq)nnex+TPdy9uJ~O`8C!TR`qPg; zUcaLfNtJ6o#iQcO?{%;Kl>APf>vvJns@t8B?9C#R`h+|kAsbxj8v8Tex$!ep#`!>t z-t^I%R!8$pcJu=7 zh<$$6Iu!SNK~rcqM9cM;>GO-}e9Qj%S8v?kCgT+mhE}o4_)`)KKr)QuYT^Ux8DExPuwfCSa0#c z%hk7hufbYlo%dTF(>j;Ost)}iKyyIj_>Oju`|xeaBaXJoyvYgs=auU6>~c@I%uUAi zyM%je|H}%@dky%R7QaCU>{Owr<(hjR_jS)0dyUM)zXNk^Cl1E{M)9@o8{+3&2G?|! zNsB&5)M`%=b1!O={(l2>*krz}oA?^Mb@9!3j8EaAN5(rgfu}r(=dRRqJueNph4!H4xjIUax0D10(uE4ndX3hvkzyyK#`Pi_|;IqP+pXDzlN$JWoz z!IR9OVO_DG7vih+NU;q(;+ydn;+yb@Z^m1QZ^0AGu%A6G_MaJLR2_1xwKm1xpx}=C zaPdKgj(8X9Hgy_4=iy1dPVp-ER6_Tw~RZ-xV@;c4GYom)z#Ev3pkv<$KD7xL zEjb8JVDMzjEqoXkPOX=WQ8!Z?^BFv97rZjuH7VDwYsC}G_#5Z&9{r>LjamK{55CQH zj@Y%bt^X8kZ z{+XrK8Sk^ED2#SBosu z8|PrUc%Qb;QRB;RAx|}{<{3F-A9%jo7a7KPM&yEF*aaPa^%(T{j%&t+b0axd@+;;~ z%$bQi8tt8bzdGjqd`|}t)&kZDcoIiw_&X|EvzJyI7`|f77oWHn&vb^}CYbk2@KYXy zuZamZsLs{a>x^ShoBf0Bna=A6Jo-VW=CIFKsUxmo&O8#4D#D`2H&;ojANGXaYTEJ`4GPT*evpm*tKg8 zaPpqkx_ixOVXQgI)u?00+9@{ogD#qy)ej6!*D=%59#Y5R87nx}tF2wZNBI}+0kw-fpv6-G^;!$x15ZV@*4`O<0E5!X^$p5MU-TU?{i?G4ZHyR9R_@pm-Z zlY~9I=aT6zN=JD4_g*{SH`duHI-$jUqaG_}QFqj>xn$j^;;;}aJ#$268_yD}cy1Xw z>3JnK@OOTx-^8ivtKZ3kv%EXnMVxdjql;xXEO(5X3;mj~c| z;J&W&Cv2_XJCdVu54=12Sb0-_Px40fnFp!1gv6ymg7hp%cEuhOeOO~-4^{Z6#=$4@ z2l(ssf!AJ%1^A4^iv#~r=S$wj7_irT>Q^U!?T z>oEJ@Bz{>h^C^05@m-|(7zTdpuLR4vEAHbS@{C%1A=;>6N7S$Rxi`k;Ye#s*7r1k) zAHqjl@>6^S;+@a9ug-X?s&x$zZTO45ncw3hUihWPXLl~wH5(n42A%XwM)SY=-@38} zVh4CSVxP>lV=X__IBCyO=|`TbH$~=~MdRl?5!1p8rr_p$rPjSzYdJN8gTEWj(GS{; zzUu|?(PgxZz5Oq~{T@Dy(TessG2|c@IMA1axN(59egMog;NUwB(-~%dmPNg3VWts> zs?S24O3avJIsymZzz2V5?F!!l{3?Ce(~*a1PMow1)t$Ik0Jk4>s_$Oz>RxU9d&rC` zb}=XEn|7n{Bv!<;9?4;hx<4;pA>;1g_NzTmeb>YI;cC?A6d{sP}PVYhOH16#rK zJQQB|A>+aq8skByvFb0&TN;3j_axTcdcuPPyR*LVb>4oR`mS-vx6UKqFI}+ zo*O<#t?!G*d|+VwUXV`KTYMv*mNYJ(^LNwZz7Rai4jwOg4_l&mPb%b;_nP`aqv7^$ zcWlSs#a}HxgH8(v>-F3p%Cnl^&gENX<9Y=dcIG|bH)sqW@6BTZTEwv( zbN)XhxaQO(%{lSm9*+6S;k_j^ihb<487HqfRi>(m+5()soZ2snN3D6_1g|o$ytiQ9nFp=s z?StxbNzMdZbR6u>gi~W{KE^}GR*qu7^2IXF`=G%4L8myrbfxRY53x>sLI$|lk;bb& zIKlfB;74>_Vti6QTUb}g6@16|8MW}$5qZM6@-4>cJ5N-1BF75c^g&Ckw{2_U32nPy zF&@4_N6A{?#gO%l|VX9OZ}QM!Ts!%at7GULtoJ4G3)&KI?^&QlZ{Tjh(-C~LO~!HUG(N3mdToKnVQWk1QgoWip{cc{r8y^h zVufEr-rnfThcu?x#B&SNct3eeF!2umk@sF(rhPcp(e>h+wZ=!pB*AL#;-54geq92|CI7bzAM&2VZPug30ruMWzUN+IWc$1?;8~-e9eM0c8WZjf=9A;c zCd#=&Kg->dPUuPA5^G@p>E^FJqi2}0S7FRB&%Hbb40_ka41*W%lv3lZmu)vs&Ha_u zKFOZjSN52aJ;y6!z4*_c&+?o$j_?;cDGws%^!q`lg=Z;a-Xgo;)|UA~+<fE4@pTz;U{`7e+P7d{hPI@XU&5zM?diYXe`J*PR`q>f_pKwpx)<}`)%SO1@bv!d_355!z3{XTKdb*U zI}R@EqgF XgW1TB+L&SBa2?-I7aYr0(3k!$i!!*=$PkWE|3V+7f%#*qgO?=kC~*NDx zK6LNLe(q-;`I(PB-2B8lAGrJd@4xS!=DFvdd%yT12R!&r^mD6xH6Z$*_{(R1`Xi5s z=mYP5=L5IA&@||C=$5AWYs<~TpFh$x>p{4)8Qsj`^2e|bU7BX+f_|InT6}vxjP>W> z^gb!qA-m95{LJrzO>@=uuT3Cp{)>JeT<)*IS=7OBWMIGHoG-~izP?J=e-HdZf3>bZ zr=RJUbPkTMuhseW`u!AaKYWAErsv4^IC6cC%%58B@!|ChEI;1Ua{a)O{u=uG@1I`7 zBVWTOUqc($T~Ckh8IJDx`kKKtd6MA=2G=Wt>w~`j;a=V$Ul;xHP3CuLLHHOq#1UZs_Ad3?96pS>&4Yk0{QU zCOz!0Dn)-pV?Wq5S8p`^*mj}2U1M8iY@rj9+K)HQXD&9)&fWL_Kyyhj_-(Hgy1#Qn zgT6x?VxDoZVTeN>WE|{L9a*uAmk#u@+D?EM9=oS$x-NR1qxpWIG&en1&RgNrpy5YrI~~-pi63ogG3nM1)uZ?wLnI;wvsUmt2L19|t~#kM;sgGA!NC{AERW#}c#QeNbjUW2^}+ueg>Jj_ zt%P3HF5JaWVxw)Se1OMX1uuNl1&CvRrjs_#qIO1Y)DU&&;BMmGL>-;hWbxa1TzK$S zTSiA}zzL0?R&Sf2yH&n2FKhtMzWy_^<)X&mvvgJ8x1BEbwu9J0z8t>#hMgDHL(_IT z40O9g>YL~J>&AFuht`Rpg`U>iPh5wz=!IPIJ#b&q|2x42LS77EiuZxx82DfQ8{a%x{JjYsek2Cu z1Wh_DUo2xwH}zxZ%X)X8;LaoDzM`4}ZQJS4=TLv9i#E1;LRW#UdpPnfCD353dUM}#Z15^Jl zeP$9s_K3I3mGEG_H*bK9uMNhrk@2m;IJz_U&T5=}0^OH<_r9pd)AjRaNXY~ z7`_7!f7zyA_{xuNcwPd-5A=#f#EE?f@nOuofWZs?=9TGyL5IJw3E!=Ji zMO{`8F8Zwr9~eC8?Q_NR`b!#P&vRZmk3ZT@2i2^9@vcAmxBu|r)e8^2<6qrX#x{TH zrayP`%WwMS&6RK5{JZG7mH5H~{`9s3Sx1x1Kl;Q?FKTW?tpbK^^v4n}k6|M)=@_+# zbB|dLypboILl+A^c7WSA4}?o;{}Z?Jj{=M?Y3~x(>VCD@C;n}r0QMu+L;7CbyM;pe@zoS zC5PVg1Q;=<@AGiyxaUcRd7ePaJjpx-TgC^O|CwK&>OnqK_`vS-PfYRf0X+88`$~0l zJ;Arxf7Z45JZg@|nD4n3fP+pcM`mormxehG*_T6D_T^Bgp&Zu^bhv%e@0VTUiNOt% z*%%w&eq=sDi*KFNTrMe9Ic1ox>zokY zfnDLDKm0Skb-*t3%DQ8hTI7AvFZgn9T6BbefzR|AhK`m^4-9`HBkKiBE%v?z7BcaN zW!iS&vN_4mf4{8kk&Ro^&Kt5>y8F(6td4mqm6xuVohYoz*LuB0dX$`J8*Y@=2uZD^%S)BH{4==9f*?dX1X`pfG$I%7ZgG4ML9Jpuc);W|E~!7s09&D@U$yUiba zk(2GtF!IGX_NDRZ@riQ^I^>@yWA68pM@}WWI&aO_c|9iEI!ojpdyq|hn#nX)m&?-pG}7xtsKX%k*u zKg`2&){ERRKO1KVW3Pk^VhHSP;laAIs4?a=I8SIUqn~Rf`%-iQ2i}b9eku0ToO=wO zrt=tdJi`$z)|H$`D?8IYk?$8W99o)Vuow1;d$NuADC1C*vW>)${Z8mFTfz1IkTHCN zjqst*F#OG!?aDBZp|5KDUF0otnIrbC<=XGSxbMT?;Behc`ukUOk-VB0@KxJZs@Fg@tFHlyPM7T zHqEbHR6*uB%*(|V>MuCA|6+e%?fOf;(moo;X{_XvL9F_{2fDz=`f-0>t^*&PZ5QL& z=1iA!4S$j|_`S4v=8M9*zw%*{9Rcnd?=BT7C<^a@}@144R(B zFNnv=Gll=ibFq_!T%LUVeM|_<7*0tyrwQG0a z_Z3|u7kf-+yR$up8DGzqWBw!4_?Gvkq@(fiA?;!PvMl_AeD{iYt<8#i_{sNB+-IrP zx`RAu-OI;&o(uTdBzT!0b)5JyzoGZKtmzkfd16)c3LQ8v{;qp@a!|B0@Zo(2{w{dI z??kzVSHADac4VA<-;r^k_kBl_F{2B%$S0A{#7RC5IOot0?>q2E!HXW8nfngqBeL+B z<0by_9)y|7z7JU2=}`BYoO{fB&3-KJ9pM}GR6V?S?mV{N#2#`HoNQ0_S;TPC=QD9# z5w_#YzKc1sR(L3WQIo-06mEuLBV*toFT*_6`>|hVUoLohUK@0*3DA-6XLZJ&*y}9y zH^Wv1qs}4EYl&-2jtM$(&H91QUZ-<(z-F&0H_eVkz2qHb+vzZ9=7VmT54_Q-A8VRh zbh=jNjQRU{H+YNXc_1*&|Cn2xqc4s4fcM3w`IYwOX6KVnzoFUEm~qS#+@GLUb7P=~w@9oBi<=`d*aD}F~N{`D9%mVsXt z^F?qN|Fq&te!srZF@_#%WsG>>hm~^ulL=-X*a1EM%e=73bf48b-%G+fqOrDX8rAce zA7j#M=11LL;UD zPdu@k=g!y(OfBj?bAY)6Z|$+pomOw2$cCqAuVoJMUaIYy=G9lHKMghK9^b2nX?Pda zc2j(4X@}2EY0wEdTF*lc@1w?ewp~2e6n5XMt2FYJD?$cHa@_%QPY2Yhq`58dDaKC&#|Jvg_Odkn@Dm)K8{FUqetM}~0X9swNb z5aXPqH~og5pRbj3?X_oe6kZFR4!RF=uk*@JJYt}^3b202j1(`-$U6yrgg76#y&b?m1$I~7H*Y0Y`1OGyTxih{=t93i+F`SMK|zy zM|4+$*`MnL$M21xa~>SlIe7S0b9ezgsCndr`P=7T-&$?Qf0ilMIrgCs`F^6{C}+;SsB844wwYF^2k|es8jHAbJ|;)QwN8Qy zKXCiF^!wDRXM$S?<#?T|9_wkF6Y^Q?3yEdUZ|hm`csCq)$X%D-;G38F&>x?uo>f`Y z8SvfTQ|3E(radnFv&9eGYXURAPNS}uIu=%0D0|TGl{Eg>#a=>(75xEHreD{_^EqSwG=w&)^pfd~`!LdA@ z?%`>iL6ImwTx$<+&03)`iX6=UFK^#eCZn7cETL-C36) zW3CeGqtY9nN=~hvjwyVQZyw-VpD`cU7h^Eftx65Sqi#9pnD5{D_1U_0L}Q*q=s`Xh zpZ?fBJ`%XDQ`s)t|Mv0vU;S!bbL<&IC)MJp4fYLvw)g1NpOFvj9b`v5L&DG45xHCH zFtuGR)?nbKS3TQv-w?7U{anhpSx;hMoz{vj=IQ>9vLA)V3E@oZ?M}Q4WE`7@^p5YH z@*zWC}*=y#|e*RIu#s06%mzdZ1RQICcqe;>YT;e`2j(|W=s&#i;=4gTbi^N_i@ zE1N=&Ys}xDkuj$hPxt-QclfdvS%34lT-}FPK86{0o(`r}&5!pKp8{6c$%LF zhP3NXezoBpf@RC5%ENTBH{whzG#4Xw$S_=Xg-!5aTrFyZ^{4Osqi>8SU)KZ@_&@C-Y&&l82Vyp9q7(gTX73iU9I~@ki zwOn&H_HxjSt+CjTKKdqL^_jxE)fjEL@1k$J{zCIS8nEGhhn#o4LN9c6k9^x8yQ)se ze^szC-QdL>ga@?rCyI{tgY-T`Ucet-=;eMaPRNF*@sT}-hwQB))46P!wj=8Yj%`Fw z(`0|3yZw=E(wY->D#NhhUh#o`S9Gt}xqW~h;D+xs@5yPerHms7eBjhN=HAPNhVR}< zRQ5YddJaQ9n`po^yk{YARU2kv)HI*#j*j3{;}Y-k?7H{G89l>9A9!7oeEj1*gZ`!= zWS`cU?Gdj-#xuN2aP~>?<5?!W#_+ciKKED|9}xWWnC0A^=v4FSa}>`b^V0o8%sb?_ zoeqO$eB(vUE&Hmr19^JS$d%f48`6n&cf0JDiOB;gCaRO+t2~D7(1k6jFMP)Eqy7fG z;EQjpXHQC2+ezs3IZ9k8Hdj~OijIL+a~@{ zeq3`&{NEzLlJ=C7)a&%%#UfkZ9RzP|ZaW=n>wT*Gsg?VLJJGo6X!xe>bTMeUZ(YF# z&AYh&-pj8iAaB9DS(mR!FKlW%4SwV1Q~Y!pO+Lx|LPzta|GI3S^r#sxnnrk8$o?L`;k2_*l=546~$o>q@PZ2MdL@#@QY zwnL+RRM)G_cxIn>fvP`$e>nxY`4gD{Wcyl7=wppF}AKT%X(ht z==YFn9x!_NyGDU`PJcHVdZ>0!bgdRO3K;c>zU_2qCNJo4p=n+q?!{<%smEK| znbri$2)X*ZLHcdULLaq|5o3};-*!68k&*HEn~JN1`Q*aXZgjNYnNOFBU$*tlF!OHv zQ&XC+>u+J+k&(ZHp+9ynO zon@{SJCR9VT#ih1hcEuaM`N~_FLAkCzVN#ezL)DGe1Exo@dNpMIex(RV|+zl_q*VD zuPV09U4l`Q$XRNad-hSl$V0~P1wFo{&oJ!Cu!SOzF<``Gq2t?wS0BsI4;a&W^q6^P zo*uJ2&lk@DdT=J{bN*}6gxpav6i!ZsCq8{XZ{Q!US zj&xrE4Br%9@h$^C83)^td!ooN?yAUKU!n0h_auJ*%e{u~8>{ZbRclMc_XpJ#g6Cc%qZ8V_$==*x{Ih z$NL0&{6|jYIteXu=*9mA!^UhI8xw8Fh5ow9l=ph!nRp-gS{dX14Lz+p*XU^fqbK_X zc)Gu*JPQW~Pup@<=fuu<@C4?V+t0(8!-Ho)#}!v>_VXa(%01+wdViZl&JfqE|BA-A z-#P%E^mqQ?cX(JI_u9`#Od@XzPSGj;2Gn%;4V>e`x4iS3my9iGEygE~FJr{@>e7b} zB?kDwFzawbiVrZJOI29W5B`SH!;@!GyOIj5&qXZYVSGyOvkJ=DSH z_rLO$_?v+tJ^2m|^oHRV=8k*IU@jTQW5usgKMbQLAm2Fj@Wao>$uMk_{CHPoI@mHvEVd$uPo0-2C9O5MUm`~YG>&uw!b!-{KXXN6FdafOR^xQ3D_N#mL{f0qDOboM6 z%*!(9b4;ak#DQn3=Ap58#)^LCZ@z{Z_kF5KLmc>%PsQdv{Gmmj?Jv1x{D5Wt!`#F+ zj}7%1@!dXEtk|IMO#_i^giEOg9rO?Onb;L|Y}IKbx5&*q)dH@+bU@1^3G zw$sHGenXDV@Yr@g=WiCRC%E{9_1$`A7Nk`_e(L`c2yt z2lLjvjrYFj2~T>pJvul>_Az+o;dzFBYlR0ezK1uCHiC7ZU^%999v7aG$C)4ui)1 z0eHGUTqH*DmhJH_2VL_%kvO3jaZ=m!jVQW;1KrANd?Q+LBc_~>$cYVOa_cQPyFZ@1=o;{ZNo6d2i?tq{D z0{*J_14A~w`MYkIKXmeK?01oE{-)y^nlYT&dES3}X+7IcMD?8kb8%)dJf_<*<5vyKO#@FPp#{1C71TX@Ijwv=1Xrn?Wux4 zV{NCyz+aNt*Cg@4uf)OrG7k++zjr7)!q5IBZurq-@W6-k=FgnBuNljB7zVxZjk79K zhI5{|I{e;%c z@I0kXx(2fbsKs|{c`m6I?D@6?{~w=B>xN}zJ&_xDCH^x!i*9$Mxdc8q_KkUFo4|1{ zfP1HWuvX}tTW?A77z4lOsa`PSo4@Ipi_`NazI#Rn-#nNm^DECDX7)d^j-~G_%};q8 z^&cPS?<);w-xIWDPc(+VCR*dO56t)iRXwPuSM z4hq}P|4RSuob6tEeD<0-elgrzQX83(2`hY`TmA>*P&&}U(`^b8F zZiXDkaPWQQPzF3`{<|t{WbDnQM}PCT-1}v#`50zf=jmWt)%^OMP%nG>eWhbBk+r6u zkiSlA0Go=g@qH!osjHU%e(AJ37z3XiA~uGJUtK?eDK;SsUgrcOu6$oe zH+W$`Jn%EU^9tVZ^!JsnUzhWJCAkrLbiHidlh=DX#}nCGMJ9S@JCF^1)(^e#qxCe6 zafZ2=ZPJ<(`RFm{<-J9Qa~Ziq9OgYa?Y#!H;F$-tj=6WX(6VQf|ND1vvYTf+69Q6b zoVUjZF&chfX?$v2;$6S5Bp%K|cwG{I{KLI9Hu$^7(>ljz=qp}_jAwY4;Pn}g-i5(y z41X)(vp)%01z(`5$95UBoVybp&wR5@$l}=(z3v-Vz9xN%f7|IWXgqI2CV23G#(ro! zUCi9;aNS(DA-t%~gYPTtV|~9^znAnFwnG>8rM~bP!;f$50$%X*cad#}D)H_Qz7jjp#dx|T)-~Ra z9eB3=%{te3_0doVZ(sc_ zBX%%%ChGk?h{xbzJYo$VJ~y7n@S9rXD)RWgGIB#byv$>wb84E$c8grE4aP$TWALyn z#@01vS!c`nL;7Y982v=OYZSD+#}7Tqw+I@F+QS&NhraD}nDgx;aK5jkU)q^|$7mUr zOAo)ITgdPjecS0UM@GgQ`@Ry{_B%OsNp|BuzDtan^{J^|d|wHE&OLIa)V_u_jc+%} zJ@B$`v%jAa4RF4%L_f=&=zL5r-&a~L`h`s+`tf~b<`;U6;PHJW{FKX)Q=Gq2VyIdd zetuW_zLLEV>m;_~o3U@)$mLA4DqPlLe6b%5IvAHYKx1FYFR>5v-U2;=`5N4zO!V;l zou_B!OU}a=+0dH*Jihq%a`>K@!#De!y#VuB`|v$J$0xRBa+xx*;c{&uE|<&K@wglx z!S`}~bfvzJwRq&)Ui_3}I?wlSDY*tdwvb2M2hi>k>}wihf5kUX(Q8f|DKO>$bm$BW zdV1&#LoQ?Z3tW|gn%mIDSU3H?(s|$Ou=5x^$?43~ybR0p1sM4QZ)#)C*{vdvcwDaE zECYV%3V(d0R__NrR&6ZJ_>wb_6h4T@)^HF^WHoe1IMr;cXL(l zrM?=^Q!7&YMdPaN<;+cnL9{ReI5pN5*Y)ANyAp8Y-lG!%N9_PpjS&9M~U zcosk8`{>U;{epiPU+1w$GCqCVHO(X2Z{74yL*JFmjr(uu{DX&e)aj_qoiE+8=^yyS zXP%w6?E_ma^9Wk|9RD)s%#S(1nC8-ge0J^g!lj;^(;kk-b1*$Siu)w4|4=`}zRrN= zf2Gkr=o$@dAL{S@;3NIw*$jxv-^e+}m0$H-mvtVH&$K>gzWwixPv*gzlR}H$-bP`XD9y6 zH{;1)*E`R)bq`0LwVe)4!;v4YYdalh@0Iz6E7qu}^}7Ee|MYGOyyhGFoi6jiYXQCF z9Xu<0=h0{mN1TB3+y~A~&wCX7vffjGw&FOyq&OqH?Q~GnyOhoTY_HEF zrjG3|&6PjRA>Efk({?&EJ38{C?R0IYu4!H&p$Dpn|~;pD_uKROYSJI zYR#4Z>$zCQ{Sv+>F7(XNrup_o>bdD>VGTJJ-^rEvUitO3_XcgPFX9Vc4{PGz=N|GU z@4>lM`j~E3W?#>Zw=u|%RL_~?p68owr>i;joSfSBoZp>*H&f38u9`$Ic~Q^j(YT%i z&$aD&+2#8TVAOMRXRMwlyQ3aYW6^&{OpVa~AZjVSeW9GLu_!*?Q|s|Jd;iO+_144u z>CyezAU45IFyh9%LO<|Khc08a{;+VU_25$LnJdHhy7G6tlV23*g!n>3Z~GZno2i5F zYdam(uB6t_k^eo{`qxVjYJJ3iQ0sx=Ct%omN$1pdYCJIN7Pii-`LniOe$D@W*@`~Y z(=l6tF_*Kg%mHizmThHR{+Rk+YdEoQI~}f|_9F|vSs(iuA0XQ}_A}!eTc8Gcu9f*z zYvW)KKBH%8I#S65hrG@qj0pkv$VFr|;$Hn#u7m+TwqW$Qs|PwZ>TUS<2! z6G8eKr#*1gn1XxbS>XnK`M)HM*LIxMcSj++?HJn8xqtoNW>k5KS@^xkJtlv`pEz1S z*WF>QB=^Aqms*KVW3|%pS=U;28XUDgR^zqOYsqcWWmURRTRs2ik%yichHTThzJcd4 zw$nlFN@~{_Z^eF^m*3?+mH1J+A|8X<1q`17 zldPHA1uW0!&~IN`FTZwuKW(LU&9jwwXIovnhPIB?E^?vmbhv`rg)DrS^|7B<1shu< z7zc-W!P#+~*(6l{LvNv_kdV zZ2S!Q`@P3r-YD|h4(T*%Rp0P|bPOHv(HVU|fUf#JBoO|Sj`$KA>_htEqxd&nxrPUF zsIiANSK#sJuTOMr8uK6?;4)vp>v_Czik#wF?V3wEcU;|@KQPXRI{s&keXly2$K~qi zym$XvI)3vCb;N%|Kbl9@5xne2uGPYi=;VC`JvBq`#^QSf@OU@FGs(8oVbC-mYEBa` z@QD*W>%QheP_SlQR6_CpxDg*@m@oTTy-RO~``KHy9)nBGXuJOJaQRzY|DndDO$iUU`Os@V&5ILrx6WU5xLEYU zFT^M7Wm(#fEgaU5dgM6qoF99f8&~Ql&AIrdTr8^ZcqaqTMg4fj=5yvJKBYN#dY?UZ zckx~Q`%r9{#o4(No7O}R%=kI??1Sxs^U5Rrdyrx7p|f$xC-mdrrlKb%=T-N7j;~h5 zk6c3^#*zIWzV%=S?BxPueFDb6t4MAE+Y*e1{~3es^oPEB>J25gfZ4`jOn?y+70Avw<*Vfol7uu$6vS0Z@^wEFy_N$ij9mR2R~uwVi|)! zV@K7a19=1BO5xH%4Ox7R=RBYYp#9(PrJ+Xdd{8`nQ^LBHtnqh&dU z=4(G5Ethtuq+Q4bgp+r-pYf8?!3OW!vAfjgBo!CVqHKl_~T#r zn@8pk4F32d>%3OzuoWL?*j9q!W80(rkN?NW^NfF+2bi`6o8&(E5P7W{fPsEM5Gta=||8;tM zsTsiV1^tHP?v`_n#l5y;{+mxfUEdK2waSGrE#oUb%l8#|{7ndP)O+EO0q$wZu5i^A z^irFV{kR60w|<6+9^gTnbTrSw`>&nw12p{b195<#ZSDOv`%VkkqHvBDT=qFx7BJJ} zE8>n$_AS0g9*x`srtgRLd|RP)puW#D-nwXM59{~E^#3YahViU7-^kJ6zg1*efB1XM zx}BKAe~35aFMDc@Hm|D7z(3e-7&&lOdXc++{%{Vly!N+qC#Wr z)A;BEuIf$rnDv{#hk&PL(o>7@D|q-J<1uc284tf?yyX!*&6{|hc^Db`Hyn^lU90@` zKKyZA!$+{lFKjs~-q2theTLyr!@$L#_JMLO?6mLnZ;+kTT-+m9cvHQS4s93zZrMrb z_=$b&aW{(0?LjYa@QG(O;`5>g!Y3oPq8sy|;P!pNJ0Lpy+$c+UxWDHr9!G_Dg;|4=%Xz?H}_U z8ES{{4c|`=_?$bfF~xr-Z_KOUn=W{1&W4{=51Y2rVbCn|4&A3A)B1o9%-8TfCY|vY zKE~I;$Tj*5BPSViJhUbR@9;&j@l1JEgbc>DKUlb3W}$=eh>^~-~BzJ$vUCi z@#0(f4CUA#__^(L7&P-Wp6!QM+vzZ9tSRUmxlv+X&cg>kT5R$d{XBbsIhOW8wm~{o z|Knp|)U?v#{x{7v@2QcL$Q+@0X=<&ohUfuATYI{BX7WWU8E-m z;Ry_$jJbyoJFb&lAr z?$s^yAA|M${^Qohr2n^^u*rUtj93dYf7^rZj)BLtSK5OwpIz^KaelO&giPO;#YNji zH}ecjv~L^O{%q0)5CYe5rhlJvMnkjy$fObH_2~9e$s}n$En0K5w3M$X+Y5OmErq z>2~-&KGrsLG`{?%tETz5e%6niu@5}oT>~?WXI;!k!>|jw*vA$>pI4p0H{dWXoNLJ; zYJzNy`4jm!l1EveEz!V-IMHJ_JQUMdBk+g!ru;py*6fAV0SsDbL|^YwO=p;Dz=HP; z@S`rHFS&;e#L7MEjA7^lj{O53{>gM+Kgh$j(_zre*Lc(;kG0(ZS(jdCN?uR*7Sa=1 zuQNIC=h*`ec}4uPjkbYx#c_s@>x=btOspsC%NUIHMR|F>Wm{(3iSe{Wooc)3fX-q} zv{AFrk9857T&K{_=j5$wR@{ST{|)ODFvopfof1xcj<_PgjeS(SKY=>zC&c^@C=ApnI+{_-a^V zl*wh26gOf-4G5Qf0Ie$p4&A5zrOc1{tjgkq7V0To#z^~kLs7{&>3F- z`xWBK^%$K-YmO7Y)8MHM{ew-OCqw_(Ze(O1LR0(`b3JrYy}$-Pd$4Z|qhBg^;hUU4 z#QmVgh;`KQ(mRIm&GOMJ!_b?(20gfrZkK%ek7x3sbD8&TCqT1vA^qy}M(P6f zVYT$osgA@NYM8DA$1w8Lu-7G+YDnx4Lbmh*r|onYH2cta^x20)9}Mh^*g(U(NoIik z1D)p(zQ<1soeoXc>F@69dkoLL&#E>VAG|64bk74WYu%X<`Yg{p;lsbhn)6_#@Brs} z@iK0DSI(pyqk998DH72$jAMq><8+S#IJmMAm>cZzYdp>o3 zKV5ibeCXgs!BQb(Ze`St(Tf^$Rg8NSl{plSEB|DO!> zG9P3}uT9-6?|G&>mQ$t^EU#VS9)1fS;S1odr8S>+C!jU|NI$_NzSv2Q(6?Q$3;OWW z5clEnTp{CWp4D|xv>}t)=5Gp#7k;VnDRD%u^MP~wSMwn1I5Mm&djT4FYPHUj8`!5l zJ!rChi2!PWoVsRvCVA{Q{MD@SbF2h?=dH#_Sm}Q!INAy z55t@%#19$FKXBVlhs2+Ad_uhtpV+s8XFispd<;FQ-{6BoA9j~q!B+6_J>!B$j%8fa zn4i#)6?mLm-a^M!|1GI?hZa4p8+Icr^LO68~`GnNu8e1nWJp2{^rng*H7Ie~SLd*<0)XF$5kl zw(p8A!Aqc+Z-&v!XEis73qHVxj5Cbe5RMK_^QRYWf1#c6>yXBNMdp5fB|pr!*b;mh zSNpE~3a$Ohx&6xdJih`P^DE=>S&xeK{xW})2W8Xj zgbVw=?KBXL`wd$EY;8#Ewf>(A16_D7z&zQICgkMT^}d6)UHtY%olA#9YeiGp7&Rj1 zMZq~Q9M1vH-!40hZyz9IIOZA$jp|0k4joKm_!l(B^N6j5>35vqv6qTo_pOI??fce+ zj*DpVY>~69cdirvOt9mV{=N%5%MKoIedIkFiu<~dGjm^u`~3@FAG%b0$n!~>pZ~NS zSGlofPyL}htNGpQzO#A5WV(04&b;UQyomAf?ldOB93KzIyte<2Ff^w|X`UCKMZuY` zH2>`hG>U!fxfv&~Y4T;vYw-@f8AB)5P--L1xV=67Tpz;VL(OnaEOeD8^KMAf^XvVW zV3o#jYRmKDzbK|lMJM){T&v|hP|#kb!ONkQKjPaSnAlI$mKyUSLwE;}A9!VNi+>}J z^i2>wIub8@pd1L@@CmS0siQ8|ICLg2$M%b!SK#1tde0m0E$~x@uatTFjBwTJe$R85 zy_s;TPt9k`{M{EmzqfxFP@pnb7? zvS+_S92q~Y9$dA&2iOy9?^mG1e}z71iS=5MnRz0AxL+~eiGn}m1$*mnyYO?aMZ^O? z7_ah5@!D^n$~;Q6)dyodtphUgEjg0r0QVd-zQw-cqsmvLdEYwfThqyZrmwzDd0Bam z`8MIz_&8p~SoTGo;M{Y-zGEJme!av7T{13vmIuq2_blJ})rq(@&FAzx|LKX2{W-Fd zk0oy^bDsaHW0?lo3!M(SXHh)&#QQ{v_iuwD+O49S^|x&qW}A#-nXQmKW|~ja}CBDi~2j;1IurjodXR6h{5=+UR;+3&h{HM=sd3GBu{8eI5=UdwWn?Aqc%DI!{ z<=i1|=tXlZYi#v*pETFP)#Be5;8{Lubg0kc``E6^&BM6hN9#mSV@~QU_5fTP-gf=p zCG)q*{D28B)(iOXu4Os(V{<_HI(`0IY6`U82R^6sJ{S6bYiLyx$S>!+_k-ZcmdY#d z0f8Am@jCEw;kERci7=YxS^a#E`LA^@ek&D6|6b%Z8uL3%c=9(%=<@D#f45e6Vmq*x zezAOS_~HJ#+?-m^R(-icD{|m99mc;-7 diff --git a/src/games/endfield/deferred-lighting/0x773D0A68.cso b/src/games/endfield/deferred-lighting/0x773D0A68.cso new file mode 100644 index 0000000000000000000000000000000000000000..f217afaf272c1cf8485626b59f9f4c65f21804c3 GIT binary patch literal 64728 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x7B4BA49D.cso b/src/games/endfield/deferred-lighting/0x7B4BA49D.cso deleted file mode 100644 index 85c28432dc69f680616b175996d813cc33d4689a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63360 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�Y{E{(k{%xP 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%0D`ZFKkLCp86 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%0DVRso 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x82E0E0DA.cso b/src/games/endfield/deferred-lighting/0x82E0E0DA.cso new file mode 100644 index 0000000000000000000000000000000000000000..e0dcc614fef10f8d2fd0e8eb82aea7f02e26f44b GIT binary patch literal 14064 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 diff --git a/src/games/endfield/deferred-lighting/0x8C4B48EB.cso b/src/games/endfield/deferred-lighting/0x8C4B48EB.cso new file mode 100644 index 0000000000000000000000000000000000000000..4306f3cd2d6c8cb4f3298e4e7dcf20f33ad7f4b8 GIT binary patch literal 48652 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 A{r~^~ literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x8D5C466E.cso b/src/games/endfield/deferred-lighting/0x8D5C466E.cso new file mode 100644 index 0000000000000000000000000000000000000000..5b97fb88eddeaec6e9607b6c84304727fc832866 GIT binary patch literal 57396 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 z�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

      -J5 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x9EBC19FB.cso b/src/games/endfield/deferred-lighting/0x9EBC19FB.cso new file mode 100644 index 0000000000000000000000000000000000000000..d7f8b9816eec332e0e1a726c79c160891932a132 GIT binary patch literal 64468 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

      (&yPzcs~d*xvvpT*r`10pv&6Xc=v-kC&%+t zCaF{SlH5~WJ@nB$?}rJpa#`?rHxgXOCv}Xvh_95Fp~tkI;!Ei8J>!XU^2ztax@5f; zdqeQC?>)b%E9zN=^@Do5j(xGVH#Us}avHC9&f>rvxVk&mYsC}WSMHHM#P`CF&+54P z+Z?_$2&h9bIZ8~P#@_G){B%Su<6JgJ|IF@P{MyzIDTB3F+|NSO5BiF_6F%Z1Y?{I5 zeIRhez4}T%X!=wiUCvn8M>SWcJ|b72GQRG^@$Hv>a^@@PeBBh@4?>#dDp!NXQ`3cf zFb!)6{K7pxymhpEa2}v%h1D@=8^~+;?g^KsWAaMovPbBkC1C ztn|7k`wi{`)`SO)nnF9q?RU1TT=OyxFw?DzjqYh^v(P|!_*$*K8^ok zo=6)bP9DSDUurxw|B?&K>T`RLe{);~-}HU+-Kh8O*6VY8*4S|Gu$?k&d)j%*>v{0o zdN|j`JU_I5Ooz?qk{9m)q4$cep`YdqFzW?uGx6*{c;cTaY*l^hg{SF`WuIY;Ve4Yu z`$5FBT!>n$wRrf6aYf9bVUBBicl+-HA~xucEOH+^bU(*?MQyDoJA$vrBywd-gF_3C zQzdV))v+*q^ifA0UB%Xv8@xF;d~C<}zKkaw!iVOCkD$>J_u;1h_`@%_IH$+POb^q* zf2o_je}G*TrprsC4zv9M_#4MK?lpDl`btmfH4lePWm~W%MbB9HFBUlPX%WDQP!A`+v0(I z+eKURNBpka%RbjZcsVDji8_y*XS{K(BjytH#V6=E#qm6VtbWkfB<9w`^8k46v#!J( z-H>Bg`tj1(j`?o=jpJ6njQM*JZ?SB=WkVa&>sb@h*X>@=JZWt=e$~<9Rr!qijn9p( zAHITSHF@YXY7Tw{Mhl(l*>C7H?zK`@=;!qZzSMXxnb!`q|T_7h2Rt+b)OgrFd_AQFmiW=aqu>OOIr$si>SfVjGtabX`$1oMJpAv^ zYYzNm?ET|Q^9FCUVLrF_k{59W$1Qm^g;`f(xCn-x*f@nDS9#QO4&LYnzUA4M>IxWo zuc!W_-n$o_tH8iVU+a`OanG@tbi!%*VYv2=;yxK3+}rWnLe}G4_k+ILyu!JjdrF_} zA`6`@lbo@w=mV_S(_}mD=!;Dgys$%{wkKWnhOgJN$YLFY49`LE1c&w;%J0@cuRd(r z(LNE!<3Dr*`?hoTpbO)W7F-<*buivv#}50y@;Jy2^5dLz!cV#{58KXb?;afuLvQX! zu-o?p!~;6;jBk43L_DAauf(*)2_5zR#A&zaiXV}&qIWaV$1=@V-i`bqM(Dx)1}*Wa zwa#&bHwSiXrj7W)ajo}P>?y1YhR$xGL-#3+Ys1imn4zy*!)l*((q7M@FQ%M+5Rs0L z{p;tQ{*(U3v+w!vd$)8C8}q&Qc7FBG-!zQlBv51gpd)zLWW3+Me8XcE?|jPe-V(Zu z{@6uE)D(|LcrY%(LBB_Ij*b1GFCBOO+Z)b~XS-X9!JK}-d;D#~J8t|}x+jc%?8pUZ z!K?Zm{?K0N_vKGNCwLJz@T?yr2mOBgg^v#Oy;U6OTS+|lZL7!jBJbIE{o>i*ee|D+ z@0bVR>(kba$OzliVw>bOyU7FWrzL-cH)q!mzVDZsO#<_-b>xQiMR)Z5uYdI~V*d_X z>2vPDuiB5kFM9u3@f;8Q4ZiSZ`l>JVRg1pZyq10a&~?9Z^Q(sc{4f8>wtfB3watff z`?f#)(~o4lx^8>pFSg+`)#Z;*|IuR~{@K5Khs4AfLKpC=kMDWltM1&s`xk{X#@6!i zF?ylnA|D%O-{KQ+8RK8ndDN4fPdzWJB#zJ;Z__zewdNuNon3R;x8(PNJOjiAj-{dN zzHjaQ@eB}L_PQB|9QuyApL5v|b%{K{9_osY#>X^nWyg_o;t;V)eATGn0b%7QIft!} zesdW(*MOwMzB4~G17}ICaj1P9#+7|dZ|lRo1NeM|9eO)9!BaZYQX|m?7__wbNbx;+ zXRbRdj5>y$(4q%0^x#^sLx#DJ=N8sOHXUv7iQW9Z%y_01&!(IE+&)v?wC*_U_*DO) zH#~_Ox!CkmAGt#=`tK=#W1V!`?6yw!B{0Wf>dOk7`VyFV-LNsvPs~TwkCr?H*77I& zOy~6ybgR;qag{p6zE_R4K%pn|mGo`7iXY71IWe(k%Q`sz9w+!y$CcO6itC~5=gdg>MS?88rbD2@svq>#@mto}XYAY6Z)azp*OuS7J687PLq9U+wVy$cu^<0V z$z?I&?-xOX9ZyPk{C^P5)A_)%>v$16#?@S&(C4uPPke`5*EhEnR{aXD{1wkD@V4+{ z{BRB)A&t(3V}b3(+}G_?JougT$D*pK%fO?Ce4 zul=#!n7vmOdeT>YLVc1?+Wco9*5@+N*p}d_9F2BwoR=B@taCTzA$*v*vh}+1PWTrS zMt*^Fo9=n3)y^;Px$$gWM_aRK{6&mre53w^-{?bMbn#l#F{RITfmdy=bO((A=5_KJ zKGxA=!1E{|@{wbNjeAh!$|9M{zxFp?fcJyGCPzMtUVW>0FqV0Ti?vTb=xaPqtKrj~ z&HEnk?ptYfF={w)bOXlz@UmLsL|vngG2(GIZ$o!hf8Q(i6ouC8W88qxco)Bj3H;!D zD)|Fr-nc*e&n6%GkwL4Y&Hw4McqV53SSRfX*YgfEBi?L(1YG#hQZvBCo=O+|1_9(I z>@m#vH8-iB#Q90p0DR580X!Y|nw#3EX>){iux)?4*k(E2o9Ay1DpSJtka2~32;lIn zt^D8SeR7_)o^m?kFy%*nu8E#Fud1!xS|?L z+YkDR!}DtG^SnAgN1{Ku>RFOl=qnraid z!8P?5+0W7WC}VtYXj6U9o%C(1Pjx585_XC<=B=A_-Vgek9Og~^uDp@Qd}5nkq0`OG zMdu**P2>r9%lVEiFpZtaSLhYWKg4w^L0hO<-(i!#D0Cg&ig@MlLNmJ3v`DT|Jv8& zjAh_g*%g0(kNyWT)_4Fq`p|=TkPFC{Jplvf+Y8M2wBX`D=)haow{_wAC%W#r)XJN6 z-VgDvaqL^GCPqu2^qTvSztHx>r~`0(!TWyV7tgoJd31yiEjZ`{9oOWH>Sxp~a#!=s z3S$Bu_#b_U7kUGy&pD3W8wCd63S*DQeL{_T!kA$k#XE_68|TmJ+VY4&%8Pa63k2(j zuKUVYW*>ER=kH&rW6-e1>4zCUv>Z2`pV6Qba_-Ibs^+kTJo_Q$6=9F9nnuH%vxsLu z?5BCZ!a^;<9&D#|ANtZq>pt|MkCwhiMH}+87f(yx-lINZx|00pd&GVE9R#$>xfVCx z;|t%bg%12R;e)rX7M*LLY zDK4?TA%}d94B;Fyy>tj1c%V0}=98o5q4h+|U-5|hiKRhEx^Hx=^Ttm+V(xK{H(OsO49=s`W)P8wjYEz81j9dh46b%;8T zJ$s^#_!m2@&uHVNty))zy=k-_Y_?ZD#Ja}*2)-oW!9kXC=KN!7U58Aot|RytT*r;` zMRL>~`(VLOF@_(wqt3Bs)Zps{ZXM*8u$_FL=CFMyQ0yCH?@c;4?I@!=rM=d;Ke27_ z0w-}J?>HB~s0*A^XTW!RXO4ICr#&hBbE0A_Gv`z~bwyog?2AXp$lBgwK`xVrQ@KeK zwZ(Fozpb<7QYVlL3_YQ{VPhO`_?te~?6lwt9`hM8>wE@Z=0ov~dt7o68tl?Oc+(d= ze6HMzIYsj}cwrkf{h+V$9eM2ob$o&kdXbO#>P6Z2bokOYbd8vm{B1d(V+%Naw8VQ! z?MB8C{VPnD-K$F7#vX7yzVK1z4DZD4vs=6)Kd=W{x6nC;oa4LnO|-91nZTf{`1ZB^ zLTh|r;M1DF`8uv#tM-ImoP+PS$}xY_acw%zp>vBo9SeDab8=(Mu??MDUiyt^uZ^zy z0XpSC>{C}i*go@Fgk#=gt7odpQ|b@$`$1oG_b9vZempWX?hhXq9^;*HLcG`u+Q^nM zQe!_I6O0q*gKH~%HBRE4#;~L0iN|y0<37=ZUu?VU2-mVXYFxr%JQ@Ig>L#?M;oK|v-1x+@QhD;;z0k+=AqQ7#lZHze8Ct-C;VFNsIe!fZV0H{Rcd2Ahmyx>MpuEMJvAa9oMsi-pgc!*v>8js8}fu`)g_F$ULTkv_#W zo|jYqeg8>6I+`DADCrjY13ml9F&DpogMVLx9#O}jQy#}W1>R1=Hwt`3e1ldo0cR2Z zX2E9t|8l%U zo)IHG>kl7o6y3lj&IjREe}cPx1>EW@)#8{RGS+cFgAC53TFY==d)*Iz`moRX zo4;x9)fm8c@G;D|2kBs1)%@@U`7+Ah{U(k1xf~HF>;MNJoK-u+@3!un)Gc(rE61hl zyY0X~j*Vfo$Ofj^#QZ_u`OJs&85jCAKEv;o_Sl1;i+c~-E}I$;`oKl+`_hat8|pJYF#Vm0Gn&U5Z~DHXV|}8ZZGof4lpRbv~z%j4e7r^i@I>R4c;H#ds zaa->t(FHg)Qcc{qLCe_Ad$#jub?y7$)x@V>ozppSerRRPL+JQ@{QYV<$0q#9IdZ^- zo>ug2F6ak!Ob*WvsspoiMpH*^z`OwOevq+h`S|FExR03Yt7|CpqXse# z&>3B6fsw=3U3N8{kpC5M7U<@6gY9>Vj^-)7W3K}K@Iq&|i{fP2jBm?cgokYM37N+x zb|4%2svkJ$wLYP#{(ugC_KR^h73a+f4BhTd8R$WcGQR0Uf7KGkiE8Vr{Z2o}x_n9w zeo`OwgNJf@<(c%WcE$P+y)ADM{f%x)Pp~pu?UT4+k*ofCr z#Rmj`_f@((3Z3SJYd@d1^WHgl+|SY~hogpY-Vgek9K0)q&y2UBbNBUwF6Qn9x$d5Q zT(VxQlbyVuz{hW1n#Dx(Ncf`mVY}&=-;v3@k$e{6Uw1j-{0&C%E_`Gop3^)iS^c1n z*|DY5t+UEK)9_mtXe9TDs_V!-f<>R|ymTsjf`@v>R`;8$==Rm>v2OjKi^-w;`c>=#&%Wq~36d_! zTloDQo#SJ4=m&NF;Y-f&(PbR+N#iF!g^uvXXSDpiSZH-rynyus-9E4*{1I|rs&4tS z;Z5bDAHE5{X{^!q1N!~*(>iUf^oz9#{(nMoFrF?W&fs#$XU)I1UF(23Uru$vc63hUzLRn@Ze!t^ihi~>s+3{?a0W379466F!)kmLJ!p{ z=b2&DU~u|DU){zfeO>IjOT?Z0K4iR`^llM&E4#C?Y#H#jT==DKQ3rw1N81njIzUFn zJ+nu7n$Bt#d8-F8 zKKZT6C2ou4?xc^bA2f^b-lZ5-e#l#d_juL^#UXO)Yr)GHQkU@aYbN&xtl2cq!Z*Cf zu%c`353W&jO8v|OQySJ?_yT_(M1v0GDY)>V#aHMgd)vJjF`^F~bTRHCndnJO4w6~< zlJn+k9pHZuU;KMDe9>%wr3@ zb>Wk1$X%3c$aCF#Iv;~;8MMA;+~|n+Za5b#=5_4Up7p*py!A`m7}sfE{ElHQd80Ej z@FOkz`-Zs>J>YY4V?S)&eqR)`ZU7 zW<2+g_lx6uQ0y~nAEWJcGIrS4phb7ZuK5sKpRYdhhB=1$hCcAIY3l3Lwf&8mMLA-f zSYMbPJC?=MF%a+7FRG6`;~oro7gQ_phpr=^(G@%FSM+C$@t!zzU~HL}@z*lu_NDz> zV}6t9PAaZ@;=#G&$~}FJt9V6RtNz!jkNe+esU;TZfd23zH>`(SKQ{$tIjK|prqFbT zVVmXo{fhfEClf>SVs8?B+T?XY<00(9Przhv!_jrb3ViFz`Ht4g;Jd}w=u`RI*WjT~ zr4uaHy}?8IMtk83?`+^Js8eo)8kzH5sM@|H2FyoqOFm3Kb~Z~*?CUE<+)4QhPw z3H(!!X#Ku}{YA@Ioch5&wH))Z9P~7dSR<$EZaFm%ET_sw4mdgv)ZygDe%P1?-Inqo z>X2iIFX72G^@R3@LXV!<;CwaA_8l%T?HRW`PkF&R##6#Po@z@CU_9av`w@Em9gcxk ze>3omeNpMq7aHh^hhayPk6Zewtrds9QODizNrgEE;H-=9vRd-I;#d}~o3Kj@mA_v+}z{Sv$m`c25x zo_2XH7Ud0>)Udk7&UW&wc)z&U^5< zbpc*K2rxMgj)#BiNW0$_epAA@#9s1j8dG58Le=}x?Bm%(z#f>bdGPCVQjYOhU)>B3 z?K3&A41+)Ti(u~C(S9I4ls{ODA2Mw}sB?0N{}On*H;ccy3~$+WbS>pf*JqkExbTC{b-TjX3*0&=7ot9gKB?D8 z+wp${;~81%I=2QbHpbr?-%focWA2@F>kkjsA=b6#F8V5w;x`6W504SxEv8v3)K#BJ zhmY_f@8;N_*hr2{<$65PA{SpTlFJ%}d<5oPRbR}L%7=Z=cIopN^jZ$xr(+P`DSzU5 zANL*N9r{Dl5BgfLmPA)_?woWr@2A5TJf2;mKljV_%dxaq^Jv_c0e9SpJ@e~^V8nC^ z6DZzWBaV!3^U@kD)*|#}{w%y7MW$(8Cy5hu#Az?j@pt+rTF;;0na=pkZ{SzI7#|q; zw8m%tto)&qZ(}W2`J0XwnngHiYyM_nd=J+)^n-}nUK!6%#`kcM@ya64_S>$J=kAt$ z8a9;pfk$53&-Hx~<==J4pVA-$nwkgh6HQxV(ii!XJY;jdAB{Y%KDDm579RGS^^@2( z?#=She&tMwfcXwc31hySMedg4I;#dEi)IqCNn1Ka=dyg#mSL8q1n8Os`b z^hYPvr?|JC&^CL)!-uw)xlne5KJ;S;by98UMZMDz`}wmJHB`kHsOdpm(Z}!m zzNFBxul7;N!cRN{1JCA6M-eHJ$EN%D72j;Kki+B(BApa=-M;L#hPv%+7 z;pIJC+XOCr4#HJjoBiN!UjeuJO0_ulhRH3(x4mB}x$T_1unpFSJXC+Yhr1_PG4=}$ z@8KF(GU_-F++zioJU9PS$qWAEka@_a#-qhh@8KFQ8Lie=9%2!{zcYXMDt{yA(cko@ zxwr5!%(fn+gK1UsW3Hu^L!+AC-oph)`M?o&fTO;sEi?S_J=|^KQo}6Y&wgs3{X=Z< zKQLs_8g_lkqVK$5x^a<38Ci zvvFhgPMzR$^KgybT#Zouz^13G5zIT&dw25Wap_Erxzc;M)DG;Du8~`-c@0mG2Y98g zV-5h{>#Bfd{&0?ekm>x^<^sAQD4+2b%747}QPjz6GybAvo zz43$UK==s0yoY;F%IF6ft3D35{SfOTx>{ddLz&+za~vTLUC{yEeT^*H6>A^M|BCt+ zttsHOCtC2}VP5dCJl?}yOBgXlU$=|mglzl)FYu7P2oKrji!AV~JzQ7)z^Qr}x8ke| z2S3;!wn6h)i?jRC?e3I;9?+S-;!sN%C#tP;J{5Ymu6UD!pVS9^;4ys<_v!leEU@h{ zguf(j5#Jl-dgtnna!>WFy@!ij#>Z{tULIcDOQ1U+)?&8Hzxg5V)(?E<(c@abd|tNT zf1Y77=vd#b$X1@MZ4ltJ)no9ax;zF(x%2Pg8ehC)Oa^bgZ-_kBP3Z6O1h1#WpI8F} z*YDY$)wyjDucO8@d?;|%fcE&d8Tc!AIU z(YdsxAJj29*vm&pA3s^%!*w6Fn~wQC{4(Ry z-oq{U*IiCH>)V{4+PiK2fGX|S(ph^CH*n=ITFE_PxjV^E`ZYdJ=6kr{>Ii>Fu4#Uz zuOIXkdqHszC^@tDaJko9QGNt|w(2@^kK{yOzK1*G6Fh`6wkISH-C~a=b?XO#C&#VA z!x!M$7yU3n(&fqI$FqHWj1K*v&I8`Vh2MpI4>!+42JhiQtE0&kUcmZ+ZXaWASgyu* zypsd3e%LP;JbV*=)4dJth`0DXT>SQg;$S>oMx52gp?Jpn20ZJqp>xN%ANK2@d4c{tWnpBv9M9TXetCv|K?+!+h-rEjnF!NYjO8a#Y& zJon)@9oIf3IP!S^78vb@TJt~#^N#zF<-RHl8Q{UgvgkXeKFd0n=e!3C4_a`jQNZY< z=7b(vKRM3~<9-R8e$dwe@5ln@JzQGN32iJ}2D~j7eyLm3L16UJ_Jh6-kWuj#y@!iz z{0<&Dg^#iG$*eom_i(|lxu?1lIki*trw=^)7T);VeUIch@8MRt8^T*8m-lcj7yY1F zgvWchl^-;V@E*?^pj?iedNFtzL+TQKp1!-u{La|IH;dlWV;-n9Q)<1&1b2~4^d#R8(zEhKCVVa1{14)bf3Jowd=~Mw&(Uv3abVo= z9`4lV_6fFZT%}BW1mCN%g}7WTU*hph_+G7#(DQ2f;s^5iYJILYiM z$NE=G`1T$yuyIX1zK6^8lqX{XdSE9DPjn&IkoQ$;Ykngad9GVm>*J~`G8vaT>V9?1 z>tW}DHNW*kcC}ftXz$?yLucC6Y){CpwMn1pPj2jo<$c6i#yzpAyhhmm_i!tY<)ZIY zu62`6@$9A2ai2WB&(S^RQT)A@Hq)B_B7A`(FYv8>oH-Eh;liud!?dU2V)LdjoEMf0 zP4a2);hGovfNx&)zSugf&*AKDiErF9nn&e*B^W;47BAlY!Iyp~2>ou;ed?p?(>-U` z5Bi!M+>5F!)+5i?3GX<9%b4U^^s(O3dLsOx`(DOH)06k!EK{e!hn$AqEqqkZA_lyR zf&H}Dhj94e<8$i2R@bKGz776dBmbK;F5W7fWu5nfz9z@Y{TsoL+9`j>eLT2&))VjU z!6SWo5#Ix2PtE7AD}R?7e{$^HFuvc#-+bnIHNTtT&>l+2qLwk1j1Mnt!Y3U14jA{= z_%>SEgI%{482G?O{d6*c(P12XwJCh`$Ct!A?RqTRi>jmX9sxME@8v4P=!qQhihWYf zoj=(haMQr2&;(2*%_iGv-KMaaO}iIw)AE!UqwfXHoxo(v_4E-N;!IxjL)ZPcpXmpG z)YbKa_V!-!sn7VMuF%`G@Z)f<&V1l zpJX1t_Z5Rb@UV_LT_|(+S6{K^5BS9AAUnySgJ5e)i`x`G;P{+pdE}=1u+e?g0gah> z2jpey*E=F@%%Csy{h+Tl$G7|4kneHp79Ng4?2Tpa_k#eMn`WQUAMD%Rk@*RR$JcqC z!{@SWVEj4G{h*6HzHryGhIfDF=Lgo^;7HyoIm^L(OkY2U|M!3J^nI(Q$}42aVQP;q!bpNuTnh>8Y_DW1s%ja<0o($Lx>MhClsH)&%zH zJS_g^eC&m0-D|u@+Pi~xQ@R1CuF#IK?zC&5x>^j3qk7-?CO-S-&E{KDU+T!bPPfdmVciGnetcEYjVf=+7G%=zL!teb2Zze+TucED{^#A=gj{ zAstFAVt+GoaCt_vrRM>GgU;xOzo{|mZ}h-YMtc{_{)ZPnc8h+jA&3oq#3cCTH8p8Z z=ir$R-k<)|r_NNHpArsh&d2Rr{l5a%a?`&BB%SBh570OdX!D4<37?r?Ka3DPJY9sjA812*8SaJISezuSH$~Ho~l6F|0Z3MPDv5~%NBiD*` z_?j5QgSH>^^$hgDkF3S*Yk1hN^i`Q$>%+R^kp12d>YN;gqhmklYjPM4zkblyLRgJv>!(syglo#YNR;(oRC%m3|Mmvd`ka2car z_otUVchcu^Ho`h`Eb0&AU9iS)gx}q06W-C9R(kD|34d^INto$o`poJ%F!^gPKUg>P zgT5xUyC3Lk&m89JIW@+)rT3j%ZFD_1oL2Ipp5wnoH0p~ufm_Gjqq56q z?c0KV{cZ2G@hc~pkqJiYeK)MUYQrI>s8gQ z(nx01n8dyDoa_zy{9mQm&RVb^^fi&)4|Mq%D($!@1P{xz-?=^^e^yw?Nt>s&l33dx z)XJM-{$2amzK)M-P1ph27_0HwzTvJJ)FkR@oqIg~XszdV;?akmrgMD*&wa>SRNtU` z+%eUddx5T}^-VpohQm+B?FU`xxKi!1U!y&Mw_+c8S#kRT&b#{dr^WV?0RFUfDzuCZ z$AfE+XU_2tFv*&$U8Y-9yYSt9TMw>X;5!$XCl>k9wpQGJ5Mi?ud#`LOwA3!!%C&9f ze05^0YZtIuKWgm)hVJA-Kj`Zj=z|{AuBwmyye1g63s{v+KRD$5vd&MbMK*CF7PRy$ zK1;_pM!ecTj-A=wk5CV-i3U5A?`@2kpSt($s~E;uL64*rs>f#MX9a)LYwSbEQ+_`n zonx$1oZ$oM7&_pio0RA1`o!Kw`0B@WZeQAmwCSTQ@_}o3T-G`3s{3;N{iPq9=YbEw zJ(YMPk4tB$A<*fF`#i^$_Fb7bSJLqT;r(@WG>@y*(RojMH9CIq|AUU^akV-UN9)Eo z;eJ`qj^iCD{LNnLv()y3z9xspL(6H$%W?8v5+ux7mz7Zb&)BCjzB_8+OPwO#(|Ui4 z=5uh-rys`Oe)Icpf23=>hvK=e^Xfv{fZovhnXgV;PA$^W&u_rvZ$F@uTYl5GEnPUE z<)GfthmXb_9sj@HUiMYIP4!Vbay)de(5Zaf?&;`1apGfxeaQdCgT5Ed-!6Er7vRHB z`5y0U;m0S-{V?D+gKH#1o8_5l>pQ)cT=3?JW zq|JBi`SVLB1kCs~_v{1b-jnYf z_d2Gzht9?&pJE(*VAPYC=r;qQGw0TaTtgq{!*74#tpl(xst*|R6EOaE4Sob>TUUic zA3C3X%jeE$-rkpQ;Ct*46AoemZ|wG1ah&Kg|MW%V-Q6h{-R(c;Rn0rei}$-&pIA;m zblt!E-UrXrk7`@XWAG}zYD?SeWX=d!`U4pH;ggrj9$@DSY%gKA@#FhQ`gk?L-=g#g~#4=QJ-k- zGlAQqSh^r`n5b$7GRSj>$oK z;ZI_DCA}o0>xad9A^VWv2kAu(S)>(Qv##5{=x5t6QlIr9C$OLA z?AXZvH+;G37Pr)ZBWJf$!0C!9|ofB50{tVyU%uJsg;hOb9jj5*~isyIIWH*Te`+NYgwJ%3k8P{v_;3zTiu}#@G*v?AL3el_+c;Q*;dE;MCJ&% z*g`A$(Xw8$EW=EXugD+p>7&K>v>dD1r+50At<+86nos8ZLm$7Dz}LL{_sf(2JsiA~ z)_U^}AVS6r zapslJedX4BKlicI>S}Z4*X!K8nFEQIWl5*LOda8q1-7Ca<0Wy&Hu0F>?7N%O2G4n_ z-&?kUxz2dD8$6G-=jz;ko{O)>AC&<-;#=|N;#=^DZ^fI7Z{mq%*dOcZ+?PJce!cq@ zd&!AAuEE6z89L(KxtnxCPMlSne9m)DzSg`kuf%WrZScA!{miqNe$dzCpcaAmO5NiT z59|q8 zxyE;UXVyk|S)OvM?bA=?*dN&35Bi!M=4(9ca9=-6kafvCh0gF3Uc@TT!w0J4VUzo4 z53&cCV`(4I+6L*={Ev@;F|PB7dt>^vhu6klKO{67_72DA3YU}qf@&Q!-j^W{jwj4= zpVU1KIIL4>Z!BYy-++>j)O(Lb>L>HktwmqQ#`+!vV;{-6#Q4TeY6QG#D-53Ckb}T< z#N5r=8GPy4Y9=|jraoZs1m+fc`dP1#-;8Z|*H$)#3^Dh;F_fv)-eFVP;E(s~W7Ij*gT@qubXtY67L>rrdqYqgiz_v2pXIr$^b712Xm%lN9yc$QwD2r{?x1JpBU;V&U~`QJydU({ zj`?{8-!jk8GS8qR^UP)Orq6O4j(!siPsgm@~-I??ocN*HrxF;&x^q4Hx<}J{i|?%4V>Rr1LuBS zb>W)z-SIaV#KF0vaTax$)_Em=M_$o~A7-%8*Z6TiZ17&u8S2Qnw5jQ$dIAl$P^0kW zvaVnEG{2Do$IngJYr!6VBUS0_TmQC-9K-%abn0#6ja)hlo{o%Z?7N~nKJqxW4aCZJ zx&Anw&hL!XtQM($GS5&)*VGax>+5*0q+P^GN6Yoq)DIt6zeTw!ybc`u9UoaQ^yJ#Q zbB?aG1w`t55`%QZ#``;jb#KE}clX`9OJZ}mEf9fyO3D$DWy2x+M zN5IdeeapZdy*gV z+1-d1xsEC4_OIsPL*OFAx-w@$3!aXE2QTwXTcOb!q0x^#759|+M!~(V0#`f&SEnJr z<{7o=C7OF5l?)F49ydonXz}>A7sN-G(bD&pzxdwU`Orrz+PJUdnq1%@mpO9BTmi?H+5eZNZSWH0Z0_ zJz*KD6RYGcM?dIm?j1($k0nfgkK6~teaDg~xoRGUIZucmGAzFz)G?8PPl%((3u_+p zu?*#7+$RI0j~2SHTe-r4t;VBYc#+!`*EHZ2odXXZmY05tImx&5QWCFmtG#**V1Jd0n6i{n;t7R9Z?M?1cJ z8T*N8!kVs&c-pVXT;x~fO!$@jseYv&ztXSc8T-|_SjSQ2xyY~BguL~MU(HMQ#lAz$ zbzt~Ga$5aT?8iJ!nCXvibVn{{ANvZ_3cpkMtvbK3H|8Mc$Rf_mIwwbH%?CdfSojGz zYwpq?G)sd3s#6-nF;CC&%bdRpltOEpEVsg(uZCSo=1b(0&7wO(R`YsYEyum;dL+-e z4@SR!(3g%8V{Gr!{BJz|{uzgSe*LtsAArc>aN*eYgF52az37&_n9_Q#|8^mv3vnf< zk4qC`^@Q#}ICj!+(j6U+ZlU^c8L=1bkxO?WpzQeu!gd9zXiVFZM}h{!pH^{2q1R-MV38wsykK z!|>Z1$IiFu93St^ViIie@wCr#`#r+Ym|95lsQ4@k&Uoe6d0>*xxwgf>kw@C+qD4pIg%6}h=!S2Btw|j)rQ#mfn&qw8*VZf_-iQGhYnH5sUb9sHGhbOIIapxL zChAz}583vS;<+#0r!wBtHH-DPZ4%wqLbk~`mRW0yWs0tiHSr2P!86=*4?eom+ymUY zEXpz4agXpk_e^Q18N?F5hrGSf@6afAv9Cctc5z>Wyl6{(^4zo7$77v!4p`qBGsDz3 z7qiko7c;35H3hvY&C;Nbe9msWn0vs(kJzcB(XJPHmG;r3X|$Rzpp`!s&OPkogp8bf zytj%D^y6FNiw?A|)l1n&+YkDh9Lk}n>HG2CcSqOx6MD5hD&oZ9w%WD50QTy4z4J72 zw!gf_VL#LRQ|^0%`hUZ-v2&cSe~o! z{h%+ck7pmQM>~y2+YkDh=uWKBeTsMD#J@S?4^)Q8Twl87kGjaA!{;_e m`=BMBw3Y+?n#?^254*tUV65qEb+7QV-Tb!JA8^kI_x}PZ5kV>d literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x9FEC1C1B.cso b/src/games/endfield/deferred-lighting/0x9FEC1C1B.cso new file mode 100644 index 0000000000000000000000000000000000000000..20fc4ff2410d7eee585b4eb89d289cea5978d7dc GIT binary patch literal 65268 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 Jx6Y~i{{SO61qc8D literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xA1716606.cso b/src/games/endfield/deferred-lighting/0xA1716606.cso deleted file mode 100644 index efc0e087c1606513393c760c0b3141ccf6d5d5f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62792 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 diff --git a/src/games/endfield/deferred-lighting/0xA5B8112F.cso b/src/games/endfield/deferred-lighting/0xA5B8112F.cso new file mode 100644 index 0000000000000000000000000000000000000000..27ec628f1f85befc83506adbe460109f8f155c86 GIT binary patch literal 48096 zcmeI5ZLDQidEfWl*Idt>8E4GJG4>@TS3^XafdtPTYRrJ=uDLdYc`0@co{)Sf6cx8= zB_IjS_X$4X%O<#iA#xtI_Rz47kAT_Pj4>a>(6jf>!O(m2{ zDe3?B?B~DEI{Th8FQKCOFiSdT?Y*A&m-Vc*_u2d2hu^>R(5s%g_Y0r;F9(nP(@*}Z zKYsRK|HT(qx~}_g|F-K^)xTb!&*}3`ectijx4-8x^}Rm(^m#xZ8u;MS4(Z_G;V`}# z54aBAd-?;9ee{=p;i+Hv=tsKuz3u%EJ^JY54|m`A#y1`nU*v!X-%WkoDqjtV{(XPx z%wPHNQzClrBX4{ErgTJ~-};%Z`)m8Um7nXn+fF^Z8Kgh0Z=b{WA922KfTRC*bB>Hv zAsPQRoxcot^5ZzplYUL-hZ^|pI)=vhcO?Ahamxqq)LGa07+rjf9zI5gpWip&!|Q9X z{MbOt`TOq~&Y^$eiP9}l$nFCU$+kIr8)I=^dl{-dMwyM3PWUpYFzXLNq==zJs3 z|MF&c+t!^!yok|ioyM+g2wD+tL*JP#&MYZLq5^LK<38$EWLyzM@Sp$PN0$ z+&h3=Wb{Q}-Bi<=&(NNG*`3p;bqHK--(lgB_tIy2Qa$5?UDNHOX)|LRi8sKy?$31H zgcvbL#53snqLaPtz@@}Hw|3|BMZssf8F|q0O;X=HPbE!Xz?rup$EwX>5T7ya73Bi@ ziSPc$Q~&QB8gyM-8DOW^hV$0vz{r!n=xb<29iOf*`il00`5e7&#OL6ReNG*^5uby1 zqdo^0pVRk6UpL|NmKL9LZl9xn>vLfCxn}C^$ZO7t<=-?)Zs|>uCX(FyG~>Kz9Tq(?2Eoe z4H|4g7j%bK>&^=EX-ntmL0-}KMPI`_8jf_*$I)yqX^8zp)G&DUMPH*_6u+op@KlQ$ zMqWvN)UcWUvl_Qv5t>))W}?m8V26!m7#_;_9Wtb4Kq*rzUXUYLyj%1 zVJ$85iF3~<^k+U{4|NKd>(#3>KY$Sn=f@wby>A4wk4^~pQNhRsY_e}m|CnIRL&I1| z3=@w^hi}1Q4GUc5_*ET~H)}a|_p_U~0fQd-%vsL^<|?+iXU-aC{C57^2gV1slYG$y z{`ANvhcD}x8qybijhb`VHUidOXyvqY_*(K>(>hF(oP9N~b8m9xi<==2xbr@25iLCX zqOY#wn@_a9(9P$)1}2w81MTTM1{?aKlUc+4+vs4tb3ZcRpL=$u!y{ey_b!P!`=Z0* zhYwtr*%#p(@4X#w@r-zpPpXG8kHQA=rLj+vZ4+YJj^Cqk;u~Yq1^PvJ?4hW$=yED` z*5SU&FUNe1qWafq{~Pr_cxQePch2#FZ6nT%9hq+GTY=LD9Srw4F!B>z=f)yDVn$7D z@ia6i4?E14c_u&XTNe%X+o#8+54wDJnozXbDQ!CC`R`$=`KIq1Lfsf}N`ZCt`Z_IfK-tnZzrcZq9bz7d7hS4h)w-ZOM zcZe;#h!ZgFA;T|R`=novPtq^Ht}*X>fxolso^{@Ci63L^|FM<5`YY9wx15^?d9^Oq z@pdOg!T7FrVikgT@r93S&^~B%RbB!?@lU|}14GOxDD zgBp*NF~BxobRM7=e2L!xo6iH&8^=AdSpnc2r5AWap*0&zCJ!2Sk!aT77I``nB z@7SNzUT{2Dby(+-=MOzPiFb`H>oYu0?QX_8O_C6=^XZ3EUl_(U9BY2y?yEH=;@Z+P z-(6o^OEgq-v+9!aRs}@fy5ynTWZwVV)O^-m)>Fp`J2ysn_*9KNh#Hfzta-qkGaunh zwvzsA%I%9rgMOC7jvexto7kChj=#OxZ#gHqo&aaa z&D^|S>frTxwf!GTUTew&_Bm_2122HD z*GKkNd9pXwq12}yle6gL7|%$3>^fYnZM#`_&8ruT`P6>UE#|@Ia4qA!qlX7Qxn_CBA7U_H6D-F#?y+?Y zYk0@nkoHGB@xgJ)X3Vihhus`AU*ph2gI|!tv3xz38_+Pmh@bfw=g5rT9p=Z}bDp)a zXmb$%tJS>ONIqj6#{_-)qOS!p0Y;s!@{^Z&Iws&*?`1J*ag6Jjv@r7)%W8vsGgmk4 zgK<3IV|vj<>@;-kbtv-!TGOB(aaW7$4Pc5#=rG$qO}Do;y91tImh1UN95ymu9537V zJn_U6#df5eCgpSAGjMlz@M}t%KuzdR{^_&-@u%q$A^M3wc;Z%R{<{e0uDa%&>_XcSgsn z8e<;@U-n#_-e1xQ2KB0yD2cZus}m)szEIeAE|x>0Z`9d;9PGyRUp?{lfd- z{4d{{W80s)>t`PP=Bq!yJ^9bC`OR_7ZDRxMu=uvVM&|E*@~#)})x0&#IfVboA@DtB zKeRdEF?!_L-@-Y#m1Eq$0@fG(mjCL{UqD}-M!O;#fsJ`GhJLc^LG%3S=J!bS1?QCL zX|MhCu#e+6HRdM``j4)E_PFVN&jFY)VxDoVxI_-c{T0P1_k)!WF`~Jbt_O%az9FV@ zy*3$mfYlGF=-?Sp$tj4$zPTF86zEpY>r~0-uktqt1tK zL=!x-Z}-^8g=rrvw;p)7*()37{Dwz+&BM81ah=if=Q`AS5Py6W@R8kI+ZqqMz`2&* zH>=y5}zzguNiA`J%^=w&5L0U556>=V`N{#qt%J?v79!q ze62zqFt0l|=VR>J61)Uk7f0*roaUT4eONH_qW+}L+rCdoTwE)lL8kHPTNv{S9QTTO z>{S?Z4jHENJ@w!GTYT#y7Ii-}Nm}p>M~~gq4O#fi{TPPcz^p(1As38qn1*6c2uyZ| zzR*~v?E}7%aE^ih(X0N$3Hm=g@aw-RyqNQe7qal9asT><&u)W5ESBMX_nF^0;dr$; z$oRwypNV@g$Ci|)_wz;vX-j{1()Lr>K_~TDxwei9p&Ly+L>)1D4L<7PT9X57Q;@x5@Tc@AaE(_gvoV>5ERf zzo{6{KEv4bt%_~^Jks13aeTNh61;R@n7Qx!`6(~%C0`N~e!JRD{jO+@37TJ8OtUEd zwylL>8-BJ=+T8FMJvc3$Vd(g)FZ{t<+T0avF1P>ii~sz=!ItUvBL3D(B4TfbEb1-3 zcP{zU!%6J(6{kKKl0Xn3v)c(qq}2)F08SJ={#&?}aVI`AF)@-m2QNIoq2FF314;#@CN*gY%8Af1RK2 z1n4g6+aL2Q7rV|Mq3HfYLmT%5 z;n^2`)!(&;XVNrKb+qihXmo@pePT}rALazMjPRR#cf%aD4&dWE<5Q3EJ-qBY@@gkW zW@E%PeNp$p#>dA`Jn^5x*XZgwA(oL388=RA%ofR*NCLV!uUnmv@!9`<_=Lt{U-WX} zVT1QY%mMAO;&)+S;uU$s@f&30x_IY!^vD>G4f#|~ave2>VH1AB7JNYu{#T!W^Tnhq z*1N^QCgh4f>WL0(4s&d~1|G5ASN~d${p=VZhj=1~c+wotR*vw)2W?$hB**-Lv0p$A z{ke1I9puu(>Od2 z2Y>V$k3kQeT3y?%tMzMP9>eAv*)Na}$TppAMVFn>d^T4MW4|zl4gT-yegT_*ko|)7 zV!r?{e*eGTe&KN1az(ilFNA7wJ z8SfV?+dQnFM9l3MbRPAd*zuc@bM1DbsO#Qxb8`rqj?{%8n%n##0uU4NyJFRDA zxQ_L6K+vjY#Cl3iRov$I@$3%x_!nI94Zl=y;Wf)wi>F!XV~BUa#X522-7#tR(k z81bOY}o$6Vf{91ug z@YYt&$F`c6ZAJeZwUzm7zhBSR%fcmoy00{6Ym*0aam8njxqI6R%y~x5F>mwoeK2fA zN939ZejD4mkvP|i>&^|@N*&_fmUZ$P&U4lH%5`F^!2!nHv;Lej&(x}Ij8PkmL#?w6 zkMSHGwzAJsTvw1m&Qp)Do8Iy{hu;_nJz5-ST3P53e4d%fir?#Vz7re!@tw`HY}VsB z?GM0VUhtc{uYLXd4bQTv)%&N4P2J}Ve24ocm0wdA&`WU+eEiV*xQzpN_Sqw&>vMtX zbI?4u75k14&d=R8=gimq@H^M8j!j?SIN$Ksn;RR`U!8rRx?G>VgR=D_c}Vj!f#`^> z_>pEF__5uiu$Gb+N0MHLv9?gVJx0$texnZHC&utW`u@f2FL)mf&LnZ)pwvOXIeeXm9`I6|gE3~ExDV^RATGdU%c0BCiJbF1>x)j*{`;@?#h<<~ zqHCS|zW#zgjx)4voH-ZYgUk4S{1>0U=nr`TzS_k29_tIkUH82PbzckiTjE_ z<}cPuWln$NzHNW5C6jyT)_d%O%=PMX>ION+Gd-s97&(74dm{1=Uc~l#dm?fP+@sR9 zrPEN|p9mg#!x%YDGu?PkWFD+BtHMJE?}-dEEimtifU&kfNA7t~WZcu4>)?0{UmZ?5 zc&W|pC(b0y>lSqrde_aQiT$tEow;XPK{H)nIBTE#8FKi%_{Y9g_chs9^+jLZRQFW) z49BMgqgFqZ^P5rEnX@`(E?i2Rog;k_Alr8zeOdX$3%^$UJip>uua~dnJnf74|Kc+b ze(7x&-eNlL*X)Qd?MU{nCG8kK*!`dH-C2Y$-Rd>Bd8E(E(8oQEgZ4wKzn%d-!3SCN zr*z*NUy0`(#D%z@eR@;hteM(t{mSe)1^fbxy!@O#YW26cm-2d6v5B<`KALA$Pu9Gr zHO9E|q#o;ZPYw?@{QkdxU~?I)dr)+7j}l$vgUWB9eJp6#We;%4tMg8$4=(x*%{Z)K zrc0la^VMeNBk^M{NUpwzxkMgHR-LQn2M)Nd6X>(d*V;3O@4)$!_}Y43%h$%Se(CEM z@%3U@SAX+Ko5#Km+SVuFrSIaInK57cr1j;zKGXPJ(0KA!+|ML;c;1wJ?Tfy;j&Fau zo}+laGjvAp*yo*545+u%jo`66#PjnSJE{5D!oicgxMmC71vJiaaM^3^tPIyl=SOm$ z)9)JWkEv^oPZ){4AY-z-#(eNuJf{=)j~kk8Klg>s=(j6bt2)+rr3Yren-{qbF1%dB zl^@{;_EIeje#W6D0mBC#gD3Z$Tbr*6hgtBF{iIsHuJds%m(Fp`X+5BEeCe~rJqmng zetj7r-18oe=6z1=z$doRFP9%V)Z+F9j#GX6Q}gPg0RF^Y&vLjY=v;yqYaM>#7{3C; zcld=dYA-hP{tV}8VIzLsYh&E^52V(|$ezo^>)6=h_62sfkN(;=Ld*WfHgawoIaa>T z*~nOHBj<|slHVV0To2@P&1*f#5c`#}Rwn1lxwuBL-}|D$QIj3}fTLqy^fhXR!>=#; z8a4ZYcsgg<1Ipf5JJIp%)0_Gp)=u3QsB?2!J%?tzb~5I*6IsfusJV>G|Mgg>b88W} z!@U3fOI|yz>kQVh_D6kTzRQlvZ=iiFXvt~d%zgR+)}8R$+442c(X1KZw%#I z{EUNs=ntO9&}C7r$A0Qo_)vA|E}dVm)+{dTJQLC?)lF#eg(Frb?vH-sqNHwV7@*a*L-}o*Vg4VKYV^)uttVrr1* zTF$3hi$;6!L+52dTqou=P+!EPi~5+?iQS35Ff^-495ZLhUF`RMw5>scN4-JEzUXU4 zA2qDSRjr8qXYk5c%hm&9-FQa}KU3p$?HV-(8sWaY>XOep8m})x7|HGnLsRMD&+uGu zm8a`s^!9Zjbp!syk$KnJJg$}GJ~-e~D;1B0wQ^lt(D6t&*a6xQtJyQ^z+E$h7xnaw z(q$))J^$#Dhn_7AJx%BO2A;>3)i>yvqu^3s?p8mpZyK4{UoXjD;PypdYRhVu@oT<( zYB6ucb4gxK%P@zKGA(^k*Uk2*9AhW3B7W4ah)1rkp3lJW88FG3t6jj_IpzJTb>D02 z;@V~WAC|4?yv$Z|sI}F#Yiz4)SJho{B^UaluUfl?x8qsoO3tARLXCSE)HdaN)CwI|emab~!Wi>`W?AIW zVT~niz>@#AeD=fGWAEEa`F#oT`l4114IfCy*vF&!-O6)x{oUQ6KK`G%cV{h&IU$BpXf zyr;hr9iRDsprd)*sE)+Nx_R%!-y?IJ_**Uby)XJ2HO+^b(~g(p)ZPnc&AOz7^52$= zeOtzpdXEm{dapgj0phIu@A@)4f5S64{z%ujhJu$KlD*yfp7TCMdP56rXOK|m^dcRl zL&f7aUii9y*Mj@U)OPsdn;}Q1+phPFA%n&kv7mP3eCY1ep?n3?KMB= zH|r#?Em=P4;5gS6UO=kEx)PZ zM_@aG(TFQ!(4G9iw@=)gxdqIA7{>${^A)++?YY7jycje8^hM;|V=1@IQRI_PpZR$(lZNKWsCokv|y?rKd@N4oaTuhR=Z6XJfrs zkNUD$FL)3W=aKETUifN}UeMvQMS5XR)ST<+#cb%yV!aM0k41VR8~%&*f(~CS(+k)F ze?{IBzc$A-r{nL3z!Mm`L!8LJ5B$+Ce`9Czc*4G?xj-!Xgy|5RsL8?${=~sK2@mtf zU%=q+T9*7{pJ*7dXk9JPcnUr@<^UXZ*&zwBTF>H~2;F~w{c0|3%KH=5pm2^!X*ARYo zeazSV+;3^kvaZ|@0AD)S>yVb8Kvm9Q>-2(uhyQT_9RqS3{?0+(uYH5+B=G?@$zHN2 z%~;6vy!h(#&-^)90Ub-QVqB(@j77{Jq_n)_U_dbZGEL zf9rvK__t#LTf%>gH|8&$BG1jA-Z}%be|EsviP?cv0QAO1D% z&!#@ea&B%UE_B!cFXKZGuGWH>XJn85uH+hH_|bT*%lH~RWVd*XFT&dy;q6<1rkHa|U!H~THEvHM8U*f#uWpI|pO8iqf8%vxzYZ0GNZX@2gJE4-+;tdZ2# zr`2O~Uj`cJ_-H8BtxL8+*I&?Z9Y(Jf_nm`}?lHfpf$-fI7Rro!pn9okqcW^?z&lO}W#pMz&4?=JM8=X3U?#>m%2yb|AZ!Rx4OgqQX>U0?Jy zYOJr=&-2;fSr71m`5fNIq_bl|jse5}^ev2hWz6x=IuX3X7b%ZxNMeNy#-#)I2Iqdu zpiZzi6THebzWawoW1TEd`5eB5?^urgfz5r<*QlAV@vy^VeHkI^lywHb!B2Rx{^xP{ z;B{$}$LN>Y1I&4W?v`sCq*L_+J_cu)6FN}tUCJ@uS@+!Q3m~`QHyiw8T=pLDVGbjo zJlIM;mU~6}#n30mU#_s*=dPdLS5S+npVU+K9L95OtnV@y_r%DhosZ(;TU zIS5QG=+FT=dT{8s@_vlRzz60&acaHXNILhzjo5-G|LwtZO=@e`jpB)A+*g9PYn=9c zb*{H{j@TU@*=8MEn8yZwzqPZq*&S@@h^J&kZEX3Q4&8|XI(h8)0(|-Pkn`n~@ZsAR zeU0wh^@XANdwHTgFsAh$c}2)RX1}7^5c@^=TaUH|a&OG<8!;avU$eGwUlv^MjjgI9 z?lf#1<4R`uq>ZC|5P6I*p!GhG`lWn~eI~Huxo79taU}0{MU(L82Uu6kOX$nyNfBL@ zE&i1cvQ4*_cRarvbF_uYZ?S(;&8qs5Gxh=V9emfF7REJW3&XDS(#LySJPJL&@o&Gv zxnn(bRu0wqYW3%==I3 zmu#qed3*r9d)66jAurK~-u?lPdj^ad|7hkGKI@CVMs1Aed<~t;2wA6IXEFxWm+*ns z>x^SWzsw$B`b6AY8*PJhuYMp$!O5J}(Xh@i=5=PT&hzUGaMl@m)*0k`or$sZ9qSC| z)De1OMlQ71II7qC90&d;{HpNyv}=yxj+1p~%~=Fv%~7sK9c$(HMT|!^t1k>Ku465& zYZp1;V{#drsH@;wuW{`PKF+@-wTt+{henJ%Pmo7VYGARS2XBx!|IR(MGuV7hTI4I? zma%N;?Q0#*=>;t1@^=#II}Vn6t(t@%s5>;z7x9>@JK&7#4s}9vGxlZS%Y25xf18^6 zHwRB&`|nY6ZO(K2_MzjnG2N{7le%FW-r2mdd4|LXlv?p>{VTt^v3Y{$CsyJbtiE;EI9u*#Qi)Q7(4>()CuU0;Uxa&En& zv$qbpMlrY7m6y~?&u!PC&uNVHk9o}e^Bniw63w191RQX^mw>Nw^bT^F`E>T_O?@*L zv}WFVN2k^)*HC;Xf5mgC_^Z7as?*YZx}LMy`s?4IqSpIg?x*d@`@W4X2m9 z1C9^%XH289sH@z} z`SnF7YRjH|Bu?NHr|6f)6%Qi#-Z9vj+u7Eo{VBFJ*4^MJHTrEuBj5L!%)@>K*2?5uIrqbOelV^%h^KRw z{gCX9dXAlEpWf8>P|t6@qvJL7);l`ungy)=%pZDc;HrA%^ys%){cXp<-QPV8owC~&G&Dw3WxQFXJM(~x8Bhit}};N?R}5Pc~9^6VAy*u^W!tZW6m5- zKYJhPTwq?|e|TKd5!XcHcb&{*J#pDvg11aZ_*pk!FYBK1#Qgbv2>QP0Yt%H4>u(E| zb0p>YUJ@j%S(lVhen$s>rxNda@91#--k0U?=)jBjaGbwabnOof{OQ|wbnqv6iy!G* z9p#5=3-`F;>;7H&8k#v)GI_tCTOga6I?N%{Pz<{h2Z z2iQXHv4>r7-z=Vk2%NP0)O0hRLBtnVzBoI^SL6XPa9$D5_8lEyyqg0p_p;y%-45PV zgAN#U*Lz0?JnqBLJYR_=@rpc1IgFVnI(m`meOas* zIpTa9>xFE_7U{Ko6FTyazVTP&tNcBeckO#Mz?@^`Wcyx?VZ^Y7p$jnQYr^7P zAbdnzfRUrX{4ULzgx#-q8SrB-81nMt-(f;$e28B7YRm%|*N@oRm%TjL`|%N8tykcq zGyR%+wF*O5U`N!`-YA%T>M?Ynjd{j?X$enYriZ8F>#=1#ZQmk2ftenj&I^wN z_gtYR7u|!)p3AZfGri&z&*y~8$XU2Fd zMM!GP-km{z^S3S0UxR;(H|8&$!gno>bp~et*e}4q)p`-X>3WVbww5~ZjEUw__>Xbs z1$ce=!QP!YlRk&fxOu(C|AURg{u}*S@2tP^TtDG+pGc0%R^~hN5_-Qo1HYe4A7KN0 z;5W!n-@uL}Jw5`L>j@u!A@>t4kDp5aQXkTB~pMdhbD`LyWZW1n%nA>Pp7 zSNax)KN*7uxb`Q<>{swX@GE=Yov~cu&Gc$?=#ysr?#x!oq;7>R*-K>bVc$m0e^EWM z{r(EItdUuNLnrrxCVjHM!Mi7I2)l~_qjzV_&vt{SPsBI&InBE>#`S$+@Q81VHy7W$ zPX`|HZSm&fn|Kl(_UAq5So4BxCrS^DW(;jzAqkafyBgKh8=Uc@|) z!w0XEehobEq-)({nm0Xkj^z^Fqy7TJ$MmkTI*fN`;NfSQf%ipUwQ+xP`1@kaVQ{bH zbtH3{b3fAzt@d0)%xquE)Lf1E08abvOr2kqha!GJZRU z_Ylu1zpdA~&OR48tYzdjz8UEj_AG)8{DyaDS~_G&Mtyh2{A~}q+g~0#z5ri-Jwz@= zE@a;qF(2Je>kC8k_t->x09xWo{=vh0WUX=anEjFVB(cv2*Lt)yko%>6cjmHqVIOk} z{QLjb@^@#9%e^LOB)`5pW1lc5@r8YkKI9JP%Ex_%kt0uQjB&@&dB+%eHiLBq{_s+Z zYcpWxoAbJ~vQ58{e4uM&H@t^;XT~u3E%r~USyexB=1lTi%bt6<_+kvRPtg;*pd%+; z!>F;VdCs_S?jYwlmaTO?bo|=9w!fUi@WDUs;lWxk-kXl!ok1S^R{R*(_@Wup8Fsf| z-Zwxa`@)~(p7#juS!eJkFycUuuHVrydj@>R*jnCOI4U&!y-=H%dKJ{2% zbTVpQXX2VT*O@$yxO<)P7=3Gxc@ryO^5;zV-0#{3=~Vqd4A66kPbd}Z3_Q-|9uIh5 z^i|vZIs-223_bIlo^|H&btv#D2KbTX=0ePL*E9fKD8=&w=7;vO?N)~l^u_KSc zE$8F9!`Qg)FyA#dV_z0N6fN~*(YrH-)Bpc`cjh~aAvy1NZeG%w6>Gx>v*t`UqrULY zjar=p#P{SdR^#is%{=qm8v74>T@zX#Lxca+O{^0<$icqoD}UqWIcJ^;k$CTX{n9bu!pM&O!t=O_Q zkDtH$&FWT*k28$#{9`WKf8-xL@iF7}Kk;MCeZnFyJx0Ga9b(HpA=843-wz}Y;?=_7 z%QdKFS})cy%WU5}f?vip)_ddv=bj1p(1}O=-EkxH(R+q>3hv`~>Dc>s9oCw(Qj|3M zdn)*QUG(^kdJ^k=+NfFwpU7F@Z`Ws8T^1;8rk;T7T7#UoeEpm8zsgz|IBHS*62HoU zhTI+3u9mOuXY5+`zguu(F_xWrZTs&9nm4`iby)4do`kja8Wd`I)m^laGpib}b9Hyf znRjSR@YrhrcRutbe6%e;#YdnHz0OExi>KS$=9e3 zoflsk?{m}oqD|?O_r^!3(KGge|Mii#@?nf#v~j)2Ik`Y1mucuq1LyD(m}$V-9nl$P zewM{t9K$S2601IQamtu+-KiF_#GmlN9~(K>0KQ%y_IBvQ{9h^h>ZZpmLvv$7oN0a0 zSJe8UCUR^%@sGU$7#_nGc#^B;QDIH|kYV|K5y40Xe8@lM3wWzKu6$C4@-gl|;4kpO zIif!7mMj{!8jo?|MQ*parU9?fIq=|No6=A9_eJcqp4JV!t*`kyZ~wgTsd0u|=Yj9{ zFG0JL`kR*DQPBIbq#eUeD{$l&zJQiqw6%61+q&6bft&nW-CDT$t7fdBcfx`%$BTF> z*FtA_GLP{o>tg!v7%_NS=d1d_7n^`Helo|^g)bPFJu%+!sP#MHrVpOP5nbWm@P^3;{o$pAvG1Z*_-~fKN5|)OH$y(h$Rf_3uk_~QyiQoy#IdfO_RtJ5 zoAQ6$>Tj&*6|~bq-lL*bo1?Y<;I%N@YaZ8<`5O7;aM}w#ZIb63dH#fkzLv*4dx+e= z=u2&&82Zy%|Bc80Y^2HOhsI-l0n&BTaN*GRMFY`hdu#GyOzXA&XNBwk3&}j$k|yk7 z`7NAwD*Yzi(c$3X)KoS_E|WW+OYhUM=K#lVkR1)aMuxdK9y^jUpwYS$`Hv3vo8jy$ zxCY-@nLTd_9($?ibqy~1Zv4!fMkbBSs<-&oIU=8T4{Q$i_h4b!kyAhM6kDQrCJK9f z52G(S3AYmhKEwaAyec1ociKMGH4Nu{(brsK&F=PDx8pfy$wTMzotv}06Lz+HzP}(m ze7u`65q)qcj^nZ8>Ep+Rp*gjX=Dg_1N#-lf|HlOy#Xk0yjFZ( z-?nh{@qWfKtS@+rc-ptf^nRw9AIFqObNiXYX%FKkMT4zsQQx53SmImL2_F6sef8~5 z9=ANPW$atyO_Il$m+afKpOO9HJH@chFUFi-=wEfwer79qdq4B>Um51ldxZDeFV2pU zwJTi5ni^?7U>Yxgt2Z8vssu2yxiZwy1`;YLsJEz|1` zzPQ%9V_(rbhuSgg`MBU-cUm|!mm9wVTYF}(4I0Jf0RA$~K8>M2*U{o#{pWS3#f4_D zCv;mFe{hJ&PWnM{syy*eGaml5e?%7hTYPqIZAQ}<4b(QfPkA|Q6Mj6C2`}y^l9T4c8WnKuCsqZg_5;Hg#G1Y@`WiL) zV+r189^!wE44;Tu%qPgn`?k0L&5RQx6hz^kMz;{jGQE*!QVC#{E6v9yFge zAK0)t_c$KQO@G&z{?|kAIH~)k3x7LYmo6wWtuh#bIZ!>#e5ckakZ*EP-*R<;M@YkwF6u-zJj{Bmox%)Q5JorxP!M*a}EqUO} zm;3QMjeF+6YOd&<=5;{7$$D`%rRhn>AEMMeC@VB8XD~09PD%c(_0So>oPa| bvj7jfz^5_SbTrv*@N74~!}tU43E}=<1%BUW literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xA98FCD8A.cso b/src/games/endfield/deferred-lighting/0xA98FCD8A.cso new file mode 100644 index 0000000000000000000000000000000000000000..b24d8248afa8cbdd19d7c9f0610524df1ce6f95f GIT binary patch literal 49252 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 X%nfMcxz&g#IN+OtJKwSKwBY{-_Tdbr literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x3826B75E.cso b/src/games/endfield/deferred-lighting/0xACD57C4D.cso similarity index 71% rename from src/games/endfield/deferred-lighting/0x3826B75E.cso rename to src/games/endfield/deferred-lighting/0xACD57C4D.cso index d14eadd66134faafd3f367a1847d98e9e1048304..23f5428521d5307c390386aecaaa3a148b568bf6 100644 GIT binary patch delta 2145 zcmZuyZA_C_6uxgiq!eFht=iF2z&NcAYKPzoGvb7aE48%PifCsL8B<_YL75~A5u6n; zo6?*mu(-xFW}5vl#@+D4WX71dM6&sVEX%?cG6~rdf9PUd=C*9f&bjw(r*lp2xz9cK zeBE=O`}T{6%I#m2!q;2t>d##GDR8yFHvi$p@4L=6&V8pa#%?DIFV-54GZx0hEf-_m zCZ_CW%+PSQ6g7-_aAelxkfOCo?&}cimE@nrs_`i+BVVQz=#(P9N`FpoBp(LX7oCuZ zZ^}8R2x#ClCa;8_fYH2JC>`K8*9-I!Pnz9wdxGD{^C?z}G=al0RLTSftHlN{s1{*A z0UotSp!1MY-2wqjt4@jdeU&SU0a68alv4$6lye1Ml&XdB2Fo^-gO;y^`6L9bD>c+_ z?ajYD_ z5|LyaW^FgMbg8A6D>CUaXQtHEjF~8P9!0^~jI()2_GFy*FZ0Rt<8W=cJp4GHS-zlG z^f2XEiE`HAMVadyL78+qRXzIC@6wr4rsvn4k4=i6UwN@Zhx=A{Kvd)4?QWmqp>m3G z_%I`tKm>RRQ>!@V<4|5h!G>;{X%A9sv`gjlYe45hC$$eZoM=M1GENOT3o}9U5_=(@ zEa!8ypfnBn+H67(m@9X}2W2L~fz!BqdRU(K6j(iO_`2+lsPYtiTz=qr8*cSPWKR;% zwazO{6OdZ>o`zgryF|RkJE8v{|M~S<|C*|df4pi!TxZ4^1iaZ*Pc_Cqn@t?flo!fKJiz_>LUP)E}W3sR(&bN7_)Xje1e; zj&`h~3Wztqohuczr1dNKQtI$pmLkSSx=07}(HPoq+WCVxLNT~n-pBCimP*V5-?pAt zp9#YUcRM97Y;TTE z@T*Z)Bq|O-y3MzYYJWp&v-H^p585t1XTKfN`$j~3KX}?>Ycrl164Dw^D`NYf#&E4& zvds^(?ebzHP`F>R(!sax*S^dVnC*Bh5(Hu9EuTPPP&=hd5YnCYTzd7CCnFp`oLeJ4NbVe8YxQg30K3TgEkoI zHNd`uVPPNQQwQ^8Q+L6aUGh{r;Xzl4=vEY+i1id83a)PXWTVjBEpILYz1_P+pcc5> zeN~`l819jFJ76k{?)SKJDM~YrDoA(Op!}VCvIMZkL7*Uf7MF3uFddh*1mTgU3xf4f zOtb4fv>;FztbO=W4$Frg#wM4*06oDgW%~?3YHhKENMGdPFH9)H1Cj1Hz>l z{_f3`UeT99oqh6Rn<3fvMA(Jk!=vA9q2mz!E}1P9i8Y**8MY%v3N5AwLqDWYmWa>N QD1GdLh!@~n`=2QP07c54N&o-= delta 2035 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
        dKllJSrUWf;w&c(GwfS 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xB36BFB47.cso b/src/games/endfield/deferred-lighting/0xB36BFB47.cso new file mode 100644 index 0000000000000000000000000000000000000000..9e4f5c9a51686567261f672791c7711102b3c32b GIT binary patch literal 76916 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 SCOF_5f}^9vZ)<%`r~e-aXJHHg literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xBE1C389F.cso b/src/games/endfield/deferred-lighting/0xBE1C389F.cso new file mode 100644 index 0000000000000000000000000000000000000000..5d3a2ac619535d143649eba33377ca74dc874d2e GIT binary patch literal 73232 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 D1Bh#~ literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xC181EA40.cso b/src/games/endfield/deferred-lighting/0xC181EA40.cso new file mode 100644 index 0000000000000000000000000000000000000000..bd93a02d65b5e971df3ae5283155fc41a3974cc8 GIT binary patch literal 54324 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 eUy-}>=@)ELKZmrgs1iL4pyXC9x(IIVK?q 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 S24L6%ZhR+Ra4h?b#Qz__!27xY literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xDDFFCC65.cso b/src/games/endfield/deferred-lighting/0xDDFFCC65.cso new file mode 100644 index 0000000000000000000000000000000000000000..a9c2e2ce4f82c6ae0f8225f7189f56c65b78e87e GIT binary patch literal 28164 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xDEA84D39.cso b/src/games/endfield/deferred-lighting/0xDEA84D39.cso new file mode 100644 index 0000000000000000000000000000000000000000..a734247e54f62f8593d247a902732248c59f7e63 GIT binary patch literal 69800 zcmeI5e~f0=S>Ny6vB$eJcGjMljWeXl>oE;5f!djM?ajvCxjVKeCZX8f#2bfyl19ap zRtm7Bq5Nn)o+JwnB)COb4bUobrKL)wR&pzWs=}_ft<^t*8Y0zH>K_RIu|lm{p=}k> zibB7i=brC*pZCsvcV}@ysM@=F-*fMIe*ZYnIrqHx&OZ9|_9H*}`Ct0kAN$%z?tSck z{)czI_6Ps9TWFf*pWeREEUNtueLkbluj%t$AAH~UJgK(T=a4?f_2B>?T#h3;d9*)` zZ~6nSlMkNx=#xMABR}xTANavfG#`5G=|`S;;`F15Tc)432k*l^bZMI13;JxO zYw_**(AS@X)BB`chwMUM@iV`VG|f#rUzkAFe5XFX2In7feW-^c17^O)7mGqN{!Lsb z_{})Uh={`VsGW4G&UdXDby zM{l2_-}fHs@!|CnEPtq{<@)Kn`fKQ)dTM$Nk9-ZEd<|_}cRf9}XE?U!Yi!Tg*q*Pk zJzrycTo?W;gX>#;UG&E{nf^__{w>>JxPJ5C`p&`iHw~_j4zAzg z>!PoQ%8dNC4zAY**Wc{xqTk!f^Kz-Y#Z=n;C4vmZFFE!2XBTs!(b44)t?JW0nNB`dK4f+mo$Qk482nQR6 zIOI{r!7kOYTlORa*oo5idOZ6`C*6iHY#8=Qzgt#COI~IkySjcybJOB-fo*CCeY~8X zxv96S?S#}Hof%wJRNT1zP zYU%Io+TD70v6;TLg4e^E<}WnOGBIKdiD#0hj@e`7Qo%dFbo=frf=zWZBKqxaJt(`) zbEnX>9XLIlGmf^?S6_F-X0C|OkoK~20sX}H@adxeH;(kWE-m!1GfVw-_Bk-}r0w+8 zADtRLP21@!jyL9W^g4*o!5jLVI&~1AgLhD$gNx5;+fHBC;qy$3&$+hG(Lehfn0>C1 zdJFkSKJ2u8JlsC2@naad2M#elt8;jsDLH5SAunuNS`NwRE`0_gL3>jd4ob z$Dr%FGOjbs_~eXY8o4vX&oJfM;XUDH9zFhUXL{9~s2?*pWjvbKV$thawPy;xVYKt~ zx~W}whb zqk3kJsA1rpS?Ft6vZo-<)-dy=Z99DpY$$!IU;Ww;4B~~)GA-kYYmX=NXFOpKbqbj4 z)!R#c03#O8k3ZJ&p#jW3Iw{;I1S1!)$-XiDlY%i04O5|>@=kR4798fVz*UZ4(K&gu zRQis7VR92Ncq5-N>v6zX#WuH$S;LHvf6j`^H3c5V2ew`Kq6;uuzo?WcKR9| z&SBdKSZk$)Gt%Lu!fQ$Ma5-Y$1NSx6Amp^2zWQZ2?ukSC93qzBIkzrzelCd~II?NmPG8fb(`nc8U5|boJ>E2*zof)sU9>J9_`o`_E<$Io%^h#)6Y(OS zlwUE9LboqWz>c+)bXq2+;P~F;E}fq*HGk(#J!}k*bry9tbSZf1I#l_UKJ#VGrS);d zJLD-pif+;3Kifu}fo<$g^sT_@gARtf9~k)wu5)7ykC;&tGoHF;4PrhosPrgF82`1+3+v?clIXw?(dg}Q$bUt4;4}8DFJlN?xAzOSCwgqb54Pz?zxu9Ck4ySa6qsTWapHc5+62tJfWZsd z#y3x`FAo7j|KhU~%f)BEtUlJn&;Wmb(|o}>y{SI#rMNf153J+m|Hx^s&4Zj<6>Iq^ z#v(Lrr>{XRW~?78dLoP50GC{$H4Go2J3j99jdgX{fbE7!=ZG)(%CDH~;cHuH!KVdB zN92z4j@CS&GmorOk~I@gXz@KYk`_6{lUQf|&Qb9`az!xiMTuSV(S?8ZzTf@V|L_y5 z7oL94zkI0egdo5D#GQZX;a_|EXSbGr`<`ESY|#;4!NaX#L!bTbkKg%6lY0ASFQBh3<6u4o$3D%v;}hBSuz7xGy1!g4ymv&; zLC%rq+#}&z4(NYy_0uP;8~M9YV8VzPgQvJeeh?eSN~e{NY1~TJm9yfbby3CFxDFob zn&BrohpmrlOW;teIFJPo^FwQJ7&FG9UT_$fF=~F+huQ=_bxqhYzKIhw!LzikBRS4x z+#Giu$uM#TJK;etW}bo_GR$($e0Hh_@vrcK-RD0y#WU^I^uAu*TyODh_Md%Gd>%E~ zeb|<3B{=A0Ut3SN9>YS5IzyX%X*$O!`*Nt$P!6(@L(OSy?8Oc&+_>xy4w zU)9yVf=|Hi(gK^?PG5s#Rqo31MCU)P8c5B{z8R~5)IIxQSOc?v z3tp@-b6hfi{9qV<0%kg3I%-|9%&{7X?+hoN#AK`n7QBc#vbYAa72?I_r<_qP7tF&!kyNw6VVi&$iQ7 z9Nwdg{i>>?Ww%|AB|lv7NBZ1qo{R--8NpZG>G#galZ=n=j88qrw{KRTedjTQWcMu> z9LcWhV8ih7Q&0WJ@HIMS9O$q&OcgJ)OI@ zw}n`X6qvxFSFVNDZwLbio4sDZR`&_CWuMLS1GvDpMaN-3LWduYjlg>UH+8*$&2MzQ zfGpMv@H*&v0o^YvcdkZrExYj-vauHr*zTMg?xQ7N$9UqCyk0;z;YaRz4jEf7Shic} zbky~N$A<5D*^iR^efPUdyOVm~t^2`c#uoPY9t0eu;&%Fe{6P*Z(ENFM|(2YWh*r3PJ1<5foEH}9@=VNwiW#k zYAZQlzaPX_;-`J31KEntu+cH6wXMLMXO1gy*88w*eaZbd3#&X zyH1c-hL5jpEV>ZNg9>kNx_udj8ivqZmO8S+EW(ON!y;5WoUkBkG& zP*(6uvatC9jd${a`moUHOXK7H>Gy}%3yir8oCkia|9!*vzWMhDf$RS1a$4u~eEWS9 zd2n@vs^`%_;e{;+6H2?5gWP)+O**+nq!Wh0j{)V{F(a zuV0D{r+8Lk2ovAi_C(8A5Wnyv{1)}$cR6Y_wO;(=UWa>=Q{rP9k4bgM{pqw;?p`oG z{O*@t>qSS?*tf?7gI})Q*`7={<==!oh8aKS-xcwUF`^b5sLRY(j&06AJ*QQF+ebg^ zf?qUe#&4R%57qbB^)`L*Ir@VOEwOQ{?5ciI9)^G6O-?co>ey$yVPD$`&|K8FKejpT zRe+-XibNY@7@lpXue1ljm5!>TWw#yO)4d9=q)+^Y1RrW4whZv=UIqA!59(hpc^pdaMXq|KE?qy#z!%#`WOej0yn{y ziwwiQU9imC{=ld5QOui1b>4RR8XWc^@qurl3135l4EGVIx2O-@N^E0&LZ5ZP|BB(_ zTEYG45=(I0XMO1-ZsaEPTz|OO!Z~tiP3L$ShF?tgvrTj772)5dzP5{J>UcJ|e&{2& z@`tekueR%T0EVsPzWA+RFVAkHBfMzAu}rSXEzMCee}StxdC5G$Lm$T#IJTH4c27!N z=>tE*d|yeQj;J$?LB=-otbQ{;cS^10El=g$c2?&+chYv;drm*9K_Fy}9xetBmqjewp z&__$(%hDj^Y43}coIkBTi6v6W}a!uM*S1AkTc$RMWZMBjGm zLnrzeo8S>2&sMPKKm(CWRp&MQChi1`9O;1_D$NFV?=ugfg zXQ9(q*&DZiOzT#7aUW&4X}Di_w^X*CeZPM5O!gxmUkWesAlnE&&)7VaVAgk|_`%~B zI^v2f*DhMsjs^6f9&Q&JXo10hQ7v@{nEQyiVHuY>5_`Z!=V2Y1`s-pm^8hV)n~J?@ z){^a+x6pFzqb`!~=AoQ9_lmAvhfJ%km37Ghce%uk^D#NFXTKul!GdSoz&9_ok$32)dRApoXTW#Me#%gfUybTA*0mxnQ=HKx6nk5u-vS(yIt@#^|^@`h9Rvwg~e*aOafusnD}GlpZ{eH+h0L=8vZw$oSCivD+8&fyuh7d=@s;w#%u z+%)bFZwk-%E%b5UIw>tQBz}qSC zNrJNn6|{;8IAi$h37`2n;|o;vAg)=?J&BHW^JeigH48j=6`8jUVVCt=5w_TmJNiv9 zUo(cT<{#x-tpCb*iTr1b>0UH^G|{ z*}al`mj8rwVvLg;?t?%6AvT6B7aYSBo4B`x?wnxQeNJ&Pp2p|lA??NsUu)Q>v>e$~ zd6*8ppA!y#&{&MM2R0;l*mR=UAyCY5;JB~%PqU>uS@q8_Jrj3Q^H}8#KEL~~4fMlC z`|Cy3n8*v+XkOUp*t_qO0VpecwVkckB)ClmeRU?>p9#7BU zS`XJB-tCiq&2X<@cFnE(@YI;Ab-DPuu7PqbCx5nOGqJ?>T))3H!Q_v?F|UV4VE7lC zeXkBrUDtb~e7}e+;M7PpaoMoA!i5KXTB? zxheWO7qp!KgTwQK>Oiayp&gsI@dNsQPA0rmWVGtzKz|O}w$qmm)s8sm%WEk7$~u4= z$XG;Ybajh-+aSBDPB9(?8`I78)b`UlHui(`zSUzNUg+g^EKbNKH_^wk$MBF%J|Pp^ z#_Y)YfnyspP4)-6n-4Aipw&DUIi6wY_M~9YlLO?l@$J{pU$umBqS_ihg$Ml{Yr02e zFZxURAR8Xa>80!GSM3UanQzpt5x#fG_4pM$_Agb>nw@|ALe-h^;r%Z2;$8yX`KaE- z-xvYLTEjVHy|IaTg4*P9qa5E=JY#*kB%Qc_o2bJy9)rhagJaqI=1Uzu7~+d}9h1-k z_qvH|;tQ`UvXlDET97`y7aY7!>D;jquUn00c$eTy;t{m+6}*g}`E4hB^vL*t;P1Xn z_ei2s&AsL8B`*983GjG+hgSE%QA0RyJADm~bBldEjfbA@Ydesq_taeJc+;k2O?0wT z?kDi!(&n=_`CWZFRr7jBfX+%eu84@Y&;j;b9ke_C?#x;&4UY!tYyj zj*roy?bP|(_nhRT%Q)nd%1?d@9pR17XwT@q9B6f9ynwYG-9GxZuzs~4dsG| zZ^CaHYqV{Le*ffQoz_#YGT?2w@GH87 z3}E!pww=D_$jErS=es1#7Z#>=BOAYiM^52m?7Up+&dz71G_T#->zZ?qaWWD9PSW3F z$G(L({zevkFO_qi<!uJQ&7e7Run3H=srr15kSFWjRh;wNlr0oQ$>m$zlJ>=8k zLtZbb&P1!-+KH~Y52b#^I!-XR?f{>hzl)rhGBb#EeN(=`p_SF3tj9#JgfVK z3ZqZDK5O2Yr~53ATr*E#cZ(9aW4VSr*R5;i8n~8qqUcJ?xY4m{fVqd&Nj<1k~&a~J?%l^J$?pqTK`s0)Ru%73aPLU(q171C>x!AW|hfYJ@ zmN5piZma=^blfKoZPq}ztLQlO-_%#wOg!wzEU)m1 z`#R-D-IH;Aif`h+7QaDjo$+_lWouPxc^v{?=FQ#=Jm02%?MXzvC;rUe>`~B?JBnTP zA#%VWZ*EqLAL)CGT5KBny676e7xJ9(SdLgH))%HnFYxgn_K5fL>*bt#F!bXd3|;(e zCAwmV{fhq7YM!@;$MIyNed$*GZ{HL3Jln?X6>W?oXx=oL`fsi1nRp-0x}#^(J#@_e zx4v#4E$dU{m?yTJl^kMcUdDIK?MwT&-y@j*c5_^D#aG_Hgg^K6jw`;WkGN+2i3>7s zQA;eGKidW0dbrj7RpcF8=v@+f0hGmujl}b z=d=wY*Rh9nk@o#+j+Fcq@7@o{hCj00=N3P}ADH6+{WH%z)6xFsSHF6a95y}n7?&1$ z!=T6SZjHpTF!bLmywq3cF!Q%;^fz9H>7FtE_EXG9BYxf} zymJigJHyb=@j#U{(J$fE^+v}1fX4g~2mZts{mq{o%KW*8KX~W{ ztl&q!85jN;2VDD}bL(pS%o7-LXyI)fo$kv$V&eCjEw7JLvt_z0*L@pB|1sE!0%NS0 zr|Ams$E5F(O9gL9_v7f>N|));|1FfZoAzk^re)jiLyxC>tnI>sH5h)G_r68W3v?%z z*#`4Lcj}U1IoI5WEzl2nA|LyBM|q46-sLi>f@ex zfm8e$F~*0E2j}RSTXFBkT7b-c5$OuJlo*su8dton#IHr}CjDaqN>dCn*2 z1$|jg!V7$0%zgNuTtE)~feu}A>$*Z8dX?M{oJ@!A)DzR&5A+EZe(-z-5AeCR9|~UZ zFwF8i_hlUTV;44?e;&i|;2Qqx%&nr=h9@&6d?M1jq(gZJw$oQV4nFsx2Xi0owdOu>(A{&N zZP+flpu6WjU^&-pGd{?3pLx>ayFB-07`%sbA9EhI`yPV(ANe%)sTre;tv9RX87trO zpvS8E@I7M@Jm~KNuhfkUg9rEt7W~N#-+P=-&v!2iAHDA{dVmKlZQJQH0U+#C&3A>G-?|s;_qF$kM$;FskdZ3j;O`2z*Lhf9X3Eu3oh#gc$!XK zL3dQ`)#$7jyrg&KQDt`hb3PwRFv~WX`EP)dwyxTJFUSBUkaW^C9yz{ybh@@8CDi&8x(uz850iQP04^FZfjZ zQ8RYFtIS#8*ml;iZTUMN*b5AuqMh@1J{TX|V;Vo_HgwLb&4dHb#mrmRIOvdZpdHGAKlH$`6<0{gMs&nSHQf4Ar$loRLd>pwsg*=U!2p>khO!VxP9)#yraTm>hM-^LW9pnZCQz z%jdV_DO~wg-|evuszLk4bkRND?IF*Lt~2#9*~lK`@^-O}94@-J4gKk39N+`a9Rs(F zDZ{LrV~6cI54qM6&xn#<=x#SAv{(du7`CJ-;f`)zAwpi;G;h==J#&=;TC+u&_Cw^c;;(-`L?bZt(WQ051KKY*>OI7 zX9hjnPG9x6E5_n(>~{dun5pt?zvX)DYEF%Dh3+}mP856WXXa4rs{Fgnc4r!74EeZE zG}VvvIUm56%~c1xq zGkPxuJ&C7%WBJ)8;sK6f?=5o=`U0c9Tk*&?OnHiT$%ky8>Aao=_71HVtPjs(5<|;1 zzgBqCt>zE&4fEL2=cn(*n8#+W{{=n~uHnp)L0jgAF?@bsHa_<>8DF5P$5P>8J?=?# zZ<_S)#bDz($z&Y)_b17`ZL|1rr?h$&Fy48<-`KrV-huG7`exqKc0V!1Kgzedc2d4Y zo-xMqdoi{NT;fI^j^Qe<)qZe^$voWbE7juI??eA(jlt*CLML78IeFn2TOVvt|LA)$ zAy@Av7*{f)j^%MISmn>0k@%AECaBeLZT6i)Z@C)#wU)ayJ zYk9yD9(;%q_|zvoOICT9w|PA@0t1INbLKA})cXqE7uNdWP`KWg{$ zv+tY28+_{3S)HTj<&|lSmQ+8VQy(}U6WC{)pod2EF&BW>cKR9|%n!g+2V(t(J$Zex zAwJya;0N${FJ@DH%o%MbW7YEU(RNWcX8Q6P%KWH-#0z=0mDbnrmtCP#oQv-tt8Yv< z^8ye4=!qY=h9@oW#gJ>}h0fSSI~FHoQ-f?fvd8d{ZN4XjpJk&9^h5nz7tqCef`dF_ z2puiDXMboOi~OX|IN0!{uB}I=%Q(~$#))cc*ae<*drf)D^B-T*2YrAkr)S=axmLgK z?P~tOclch6>F2;iaFUEFVZ7sH0?#qb>>j%X%*0)Qt z)z6DrC+1i3;CQjYIU;87Z7bx^Fk4*PSqSKrZdwc;eHn0}tTK5I9Z;dT&r?0_b zn~fK1mBOR#K<@9E`DcwUL!!)##yOQOicjlwHtFC1Q3V(Ai#d|T}ww=C0PTT`-;fLe$ zH*sW7WJ&Ayz%Q-3RxTAC^sIRBPJG~{qxb1C$vZ9Fpw}JUe!L$0e&JyQYeCPoZP&x{ zxAY3Ui8?P!AM9^Cbq?OqkWVtd(9yhUUz6?Vq$A^n{I;XpIl*~9Ub24hXuJJ#(GPpW zZ^|*+9&h};82o`Q#?$3i`KSqBRR7xcyZip?%XzlL`&@}Vw(2}=w%^nhwu3k8^Ksj` zPsw;gxz^7%A+zoF`$+rXu@`_H%hCzH^zG@~eef{eq~PIm4;oK9`D0UN((RZ zKnCN~eaLcOmW2%PCWRI}`lw%)b+(-IUJ5W;c)3PRbk2Ss?PaZ>oM+I{M?Io#JAKW0 zXJsM?@5RtA?M`cgWmqmP{EBW-2i-^8cKVtlBjb&|7c&th@d1zVbVcWP>wHJ=heZAP z%v3Mlivi!`&N&r$Nq=$=JjW5<+21b}AMsvHmWzMK8x#bkb=*9hLL znwQ|GT#lUL+%e?682p^yrP!9ftLkH1+^u%_+&p=6*9Z;kE_`t{8gzg^xbUI1uVims zj}fCu!9f?}W<6Jhv$ZL??HWpuMes(xko-9#1Hd)FY>&Gh&hM6Z99Dp=0eTs@%L(S zKA{8n+=o)wB-DP=!iM|>7y-c_;@eIu(B3^7M|9{ z^32PyAHOZ?xEraQJP?$FGYI&%Cgg1TFV%@aJ0V zndUvRg;;UeuiDE99*jr!uQm$&{ptVCFpdB3Zk`!K4)3ILm6n4hXPq9H^nY&|UCwJh114LJkTWYfCm$Bowq4WwmtSZ*f7I2qo%Y-A`|@x2qpr}~ zwD9AA2fV~L{*Ky^@27tFix>UL_&Seus_|*tu4z8G^DSHcsOwK8bMvYDI)C6{9d$Y? zbN5&8+wuo|;xo_A`>z69mFpQ((Bku@5_|Vyqx&=l7Q81*zG}}a;;7S_|Ku9+(cW3q zbH|qbD8tlO>72{t61dt|ouN}#(4pJa=<--&Y_Ar6Rc1H)oE)+&liXuG%ZD*$7~{|( zQ}w$(M+VKAlIyNB^x>;@;nUaW@$CO0g>Qio(`fZ<8P9kQ|3(%5eX!&tcsXCWZaaO| zH4XQ=(;P;B_%k=PoxYmglhaQRV=wNJGQPoZojIp-#=`01Gs|terum&GZq_&df5$IH zd#3!~Hi~ELcLF*HAFZX*Je(&ELpUi{B{~Z+jyXYc6R(?J0 zlR@j8&v`BMhZ+CWXAZ}}IPWR@#_;WVMb1~78IQTP!=w0oOEh(y!51Fp>pDT-JYVbH z{SEor_Fm1`#<5<-*RM#en7h$Wx)1&NieeG_VZfJ^Gqi1|uYRAaw)oaEhCax?o0Y#? z{|-8Q<)4_}$Pedd+v!62ojy&=)pVaN#=pi=P8%`^ED`yoi z%Nx>&Ps9b>$Mu`y_Co)E;k_&x^MQu{zmjX}7`4**qtohJ*d{O7>uk^r*jPmU7?iT(xFV}44L)gaJDZ}7r9BL3S>~J5vc@8?;d__2{iC?vE zRlB(!)^6z>zu99G{J?QO(3T_S@;h~5er?x7c*m$eoAo(y0-xAMJ70d}P{wULIPU7( zpPIuL1@Nb?9a!V?n~Gx$FXlG<1Ps3d!*}?FK58vF%)STLI>JW$y5Gk5znudq`xqM| z2e0kpnQ;P5+v%&?hn?=L_Fbe8oh^s;jBSL6ZRDJBnr);n+sO518Lz~cxX`wpzOF+L zWN<%WJ>X%#(wAj&tq<$8L-u>ysdI1`j*e}oufbtB{Mt@mgTsCxhn=&E>B452E79@X za}#~{bLIKZO~>ZExiV-5b0vNEm${PMQC>y;rCFNpG@OW&rLTgv#;mIlfNQQv4{L%ozQmr8r1H# zqpSXIGE>hzj)TYEq}Ik$rJfs3D|u1REpJF89ioPUo5$VDvi+#~oWs;}aK`F+vb)yf z-e=Qy6N!Q17rNRP%IT=}$;bO@{iwsk35fmVE7dnwqDUWexSw!^Znqk=HuV}w$88l;5+xOWoyQ5I}u(-t%VkyZ7bKd zm2+a3ZKZx8`gqtr>}wRwxi3x1NZmH_iOya!}4Nm6}yfNU?Hc#^4NU2XYsPImII>Rlr~3Ay0RGhVDzv$Fas5D9lXFfEk%#hY)M?i)(~Z?GVCYUR zw4J`HF6iXGs>?YJfRlZ=#G9|(@%Zdob-EexxXJf z)4d*{9%76kTlrqcnE9zY#){e)54471$NH2OP#K$z{|?xn_8R-pW|7}^NayJ56leHA zI))DT=&0ss?0l`%)SuEhzQhLL5K4t@lv;-fex)>)8}&(3{r3h3mBD)R>Oi4XL*9UO76t{eWuQ zwsbKMTI$`Z`mnjr(ftVa^#U^SHFyrUkvk%BU zaL)bR{_olha}S-3Yrif%*Xv0f&;QKy-1?Af%i>E6kp1s|=i?o)*VPBidnf!oJp2gE zwn9fAbf-T0wUcih$v5z?6g+rwc)VgaFyzn&FZ#^C_#*P|$>KlswEvt}8UM+7a0qUv)2RL>6;Kz>1#0_H@1|*gItpuyYBvs&np_A1L=E zuND~N0T?-K{jm=j56I@tf(I}6;Rk%Zij#PahI)xl({|%} z!GoC0(+gh_%b{M5$(UZ)8a3w{dNCKZ-F&^`H|~<(*l1BU$ zxk>zTj%iHS`UA}4hWz{JAMRbi&mR{@V6GdjU>v~p@qSwHCl1a@c$ojXcmN|0@ptBb zy1>rs*<5_uc0F&MB4dU>{)9h%%lwIzVc4Je*L5g#_%y?|6CFM+u=@X)$o^Q5hyB6@ zXQzw<$(iPS=>xVT932&g-0b)J%Xr9r$mKxZ%SFx^Hk5 z|Id?mw#YlL@n@d+az>u)GHgs9_*ou)9g`=t!LvNO7ySG9I|Q_Es1^8)ISt?N|1jUH zdPbaqkw>(fI!%2ud#1nm#V^+1uY_9VT2Jw)`11R79bbNX*Lz>hq6j%oN%rX?)8jzh z@pr(ePix}!oLchN`>W6bgLY4}oMRKMj=_Fy?+0kG%YI<2m&*dT7USv&$^wM!+(f3Yt` z$FmsX5j6n3wriUI_UcDYK6vMYTYvX!KmV}0>N@n0&U@YZbu=+!?4-Ubuk8dF9G=sO zU80FxT2!C)2M?dSuEOR%k$4Z2oP=KQV?1PAzg0fMkH8#*UWRZJ3>n~Tl-Bn^^y%I) z;+T2xP8)W*KI1FXez?HU-7;yx^}BFc7W#mzwMC3^Y7Fm~(T5++mw6LkgSRez8Bgn- zQ9NwVc+d~|DdsEW1GSWQ{E?gWQ>~9N4_bdiTPyHHVj&UgHNn`#OD=tgil6nMK^p=aQn949TuH^ zcUQ5&^K7F%7u&!+k@0Ldc#JFZms)Q>&%{@A50wKv;+yei;+yb@Z^oO6Z^0AGus`lG z%3k<9`_&)ofP&lKmxvECbi^}JM|DC@oKjo(oa20$H|ACF`+JDOOJg?t%syw^>1%MX zzCh-Ky00W2)(3oGzJ|Bw34BaW0wX7BGmMzfM;?N!c_Mg+4MiS%k-(5aziQ(Gbq5`c zM~uWryA=Ic$oQsvR5XkeV3w!c3g5zKD98T5=C;$<;4oj~VTb$LZh)*y<{5O3+$gas z=i!5Q6`R~gJI@|q(z)txxwb(%MNPm~e2jeyoxb`b-jSs5%))f+wOtSFzx&@;@Xw_} ze_pi?8s0TRK6$WNV3vDX>o{!5fN6Z=2t(ECS!PpiBK%vjHLj@S)lV+XWju%6$)-`<=ww`My0CK)joWd63-x`XFF zt)KSc%V$TNFV2s)6Vdedy|`$*Xt?)^`!B9UyE3Hp8d-B3e`_jg9qSd;sQ?`)vp# z7YxHL=yD(Q#0nhxg%f|X4d3G%=B^ksBYD)@+yBmrzu<%3wD<`g%mvI5tGf2ul)tN> zIeTGs09!6JqL2SSG}9S&R4~>JT*HsL3~%C#4P=R1<{87l2PgYyX+Y=sgF4f8`WhVe zqw%P1?rXaNvMxQ(z)yJL%W@ud(esS^XovQYJIDY=UJ*a{(b@*)8QZ#1a7sQ3tKat} z9{PQ%uJPJV9rgFH{&z9_b6WJ^E=g{*n$3~VJX2x9!JioieTW&kkneFc_Z+frntNhA zFA6u$Ifgq<)}1+L491+JTs>0tDY~|u7*Fd})UCFotJbjS6K$rYa0>2Eg$M75WxBKS2ln~hGUhDuWsFX}bqo;SQ{d@vd|j6q zXCBk`!I=NDkD)34o2d`j0FPC*_Fd>(;<8li!grRB&zTcgUs!&I(T9zOjp+uAIm0-T zzaYH0KeBx4L)+==#=A33+i}l+jcXKR+qKPO+jZzO$|B}JXcu&DT8}OD z)j0$hIOglM1bxcU(f5>YygSqTO#X@I$*4DsZN_rj=}YrV`ZO(9{d`;R9bA7@3xYOy z?De(zv+6sgIhJ~AIIZNZ&}Vr=8tD*q6kO)x?HljT#B+7wC(T8yPdyiT%*dzvo(=Pu z@VF6G++*FTlUEgI__dwBbX?CfiF4$?;b#)r-{E&L;!Yl-r`Mgp)=C~RZ(Y$jeax4P zan_t%>j)dMZNH84pG6Gc7N0QRU(Lph+jbIk9nbzj%R0a|a%~$qr+xvmjr3(3xmK*h z*XW3!XxmO-*P#b8SPxhacvvQVSti%|aKHDb{ajz%W3Uc!&MKx0n>XH_X%^)Z=E6PY z2j?E!{rJD}?u^$Ej34R&`xW?!`N=-(eWm{sX?Hq5DYsUjWzRwVG4DXn++}?Gn01VK znLjm&v2!fJ&;fqNVO&86p8Mc=ArdO4WGX1m};Fx{tnl&>X})mrrf!%b?O*z#r_SiQ{l@x)#E3xQ-RH^ zUBL2~%Ij5Zv|rjz7dmddJJVd08~D_HtYPiKZ;ENm5!9%8wF?~PVAht*!Q^3HE6^Wn z%}I0EYYFh^FLkc#+uaN5iam>x?@=q%SNZ95?tTYjWnFv=EoA0@&^q$NWgn-FSDV|1FNWjKlBDxcxx+O$ZqNS-Uo-Z#*HZmYu$i8IH%s$Nig=ol={f&7%ftenj>jODu4%o*Nzs%za zEc3(%S$Fdk+Ti(v8}GIBzPa&U3pv9&gFK@3Z`Z^3W`=mqEx$J-+PS}FXV|jksAV2k zU5#gJoaf~4((WX5;rS1Zv6=T;z-zlV{$7juh~3P=x_GbXR&pfP%JeM?)B1Z&%^YK2 z+^19TFEWSF|7Z1Hi{~6<5=Y{R4j)!rtUI;MHZVVZyI{l>JmW(T&K*)6o>9{d@Lo&C zgSYuH_Z=$ykd^W1AL1$Iv9}rX=E%Dqs)g|k8ho5r$XgR{XqHQxVaPBHT<`O8&b*#| zcdhqYLa(Gl+s%KkC2)&u*702HsC&QI@`^gbCnL6^+gZ`EKgS#p?VR^o)`f>X#80;n zbKh&hPv9}Gu$y(sLEdZ0c+l6lNiXpVe#AH9&BV9h2{r83S{0jO?`fX>8l&;tSi!CP zmB`Q$&uy_MIpA~E_gV^m?Azi~cxlXrpYPIn+v#g?81F&tRS*yB13oZc!~2+Yb}aBU zFmjSM!|)${j>l%<9lj`fu}6!qkwL#|VBx5BsZ z8OpIg@J-w4YjBva@vy^vZ8t#HrJpy3pYS5)Xk}ORqj}Q;b6(g7*#_xU z>F_bIeoW{@xp%4b`Mnn4ZKtn#@Vs&V?6`5ytA>Hcdo9Q(4>rxG#OSi_CBR{v)83)5 z+vnGMuf=$djrH|9ksQdd{9X%dUF@VbfI~~3?dcrYiPDmTz;pzRbvF3aBw)1UAauas zNuOKz&@Y@?FQG#>x5A0of=BJ5zGV2k_gW5uCzkQ|fZ^>Lr{BBlSkLdBklRC^)_)Av z^XuPhF&+5$Pcrtsr(%1t(SCNH)=&HJ<+FINCFe)miTU(*zqn|-XzH_RT#0sNQ@UhY zKLgG@?{n5tstvKu2iJP!xt;x`w(a+q&YEYbE!TRlCFB=e$(;LMi*pCv)=K=9kMRrx zFmmKMwK5MPGg*=|?cAk+l_Sdjh zW*EOolQXVY*aaPHP4|IAthlCMIQ6|2|JG^aUZQd z^}fZtX@QN+Gq!Ro_&PBBiDcWb&SUob1nCVo@?Kq z&Oe}Y$sQda?4`)ITRrBO`*^q3e6+sdJnBBiy|3^xzQ^A}Cx8xoh)&>csO13m-Y@@J z{J&Tk29A!X83n(}>G|z$4aa=uE4|~rZ2GQd|91;M)C-!T*OvcQoq5w5U#Ha$>?yEZ z=RlzjRoz8fbFkKty*>xOOSpnZd>3`@oNl}D(U$xaAA$Hk597Wx`LGBl)rX+`VWfO@8Q8u zpIEcP6x^~V3qHJWcaPTeFPEIz(f=RI(RNzQJ@eN1=rUURKKegC@em*SXhnM%n>ok@ z4sw|TT{*y6p93=uIC}#+!_3dJ7~4abWl3VyXC_W1X4D-W5legnAI9%m8EXK)Lm$>e z=tIp|==9a>9!AK#n{(rdf2^y(a38k7lU%jmDr|QeKV(>b+lgQx z13uIX#tV3hI%9Fd;zhkQ+&cGs|L795+eLrV>OMT|d9u(B;ieTh@(W);ODozsu8?ir z?61Hr{IhNuZvLtnOXyu-!I$$fp31e*8J>(|e9Bx`{CA8PJg4hLec+2t!0A6#`qhLl z=$AdwpLo>zUErnWY=42x_!Ylo8v7NQV}8X?_;o=a^UeOFU&nR(6`w$x#}Tql zsgM3KzoI*^Wwkj*<|Uua%;(?&!(Pd$^@}k=AMIkn0e5rKtXwKE)?3tyZ~W9GWPXp% z&+kpokwu)TOYot!9?t6m3!6CCT4^6mAG7#BtYVC3ex3uL5Uq|GTI&yfhS^^0bTygx z$S3Q?Uhp}V%k^5heo9?0m2>t#k=u6q($Q1&?HSGg#yfLc50TH04Ex#+%BIO+TxhMSjLp_4p+Rg zw#C1ZN9FI}q9Zu~UwrDi1(ZKE6+iMloBy zRN(wZ1E03jS3Umd67!)h>$;G!&cPZ^ylM_u-d?f=o3cLS$PnK9y`OUvEcili8#%Y1 zTyMOVfo@Uo62rQd!5-%qF&2H*SC^3o^e>O(fof9ZY=KAaARnIO0WvwyJdr=PmMM6l zqh!tSLcI0QzLnpquEffIz)tj_9mFzxo8jo=^^9d$U+~6w+PBE`dM1sJW6GnM^~`#) zhyGKd!B!nn-=JHY<6F}S9{v!0_3d^!&pfeZ=v(707al`ivTxsdM)rsA7^9}A&-sP^ zRTr&iHVbdBXFm0F{rF)$^Ulvr&ylq!T*sOkX+Gp&f>l3xZDAVPK4#PPOopA#AI7^*e@9~F-iRacT9vD>sx5fFHLFMP961_ z{{C$n*=vD@d4w^cBi1|gDLx@Pjj_0wJuBVlGp+X*<(ttti2Q`#j^-EW*qXQ!>BY4N0w%5mweMs*sd5`M5)hFCr%}2RWea!;P zxx)ESZt+iz!GAvTU8l6aS>MGVx4}Wr)pG7W#WY}EmkfFFH^-^*)(d-M+le4(SKf9L%+ov@bl^IO2tAAX!O=E&(x1 z$BzArlm0+uS(g9pr4Lx!HO({6ymQMRbLtGNZ<;et;)mW#@px*w}ts=4lU&__hq$0VMSiFq>Trss6s)p1WJjRjUOyLU+jHK)QvWofGhgJec(S{M#=! SaL|Gqzx@^*%hrqO3;!45S8r7S literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xE312F9FE.cso b/src/games/endfield/deferred-lighting/0xE312F9FE.cso deleted file mode 100644 index e387ac8b43ab97e9d9e680bfb723c1bbfeb873d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62180 zcmeI5eUM()UElBCwO7(gij^gCtjTQ2!AEw4K%k51qb?nf%o{{eFJu ze9!ZH?mnxR*hyc8tGUlP_x#>p&hMOipZl!tebeSW|Ls5SyXVNmH$C}@PxXIc-?4A} zPYYew{o$3aTU7hiI=@>3zoheZ-~9F8bf?;b8r!e)2#7jpz~#6_z%Q!fTr(bUbr?5@ z@m}Y?ePx_J2jiR`r_Vuqlg?Xo!iPQw<2UOxK79_xmvnlZJ_q9x*~aN}Fpf>er_X`D z2WZv#GgbMx*4T0#|K_vb_Qtop{d?Z=J#Tw!_bp%drhDG-hWqdBH2Au=Z=HMFTi>zu z9pCv~-5cb)dxejk@II;22eLV^jqxfbbfV9=*nP`)ocqh)^^WeNAN}V0zV1z5@jtrm zjT--k*LK}s+21YvxuacoOxInvy%EjK$Muh)Uy;9k5nkz9d<&lvEBfFRn+mMJD}BSy z{NAk4ZM}a2S@*AXzIlJS2IqMhYB)0Ri{bQ_4qu_IrTulbr>%Gcy(Tvz${BwsUk^Yx+8HGazQmyE9QVZgt(=#Q-#|E0dJ_N~k^S9D-!-*54xEd~b=}s=k?k`YK%cFhi9SmmJfRd^5e{_6wkHh7!T8!} z92~|sN8|9+u^(B%zb~>F-0BPOb)~X(`Sb@SfV#6ffmfOslQsKx#D@b|Zttux^f*;< z7KX0-t51K``n@Wd&>2Rny0b6o1gq}Tw-lVOth|uDT>T3#a#ys=_=I>dh8Cx`Crj`I zj%?^&+1<3bT=Bj{H2BLj!MD;7Yt#H}*S)uYcenlSM{nzp0l(EmNA50tU(r#x?>8>I z!Cjui6CE?1@^e9P+P_|DUiF@$JGxnqmkZ|`#Q$>FZQt|2%eyPWMb9ny0z0?<){%~R zLS3nHx$3?*KDz_iRb%=m@(6gcwa^W{x_ zqBC&t`l0Lo%TsSYeb>wG+W3Lr`O&*I)G4nHUX9O%<&ul=aSpIHs*UUqY3zwEzX`0zY?Q;|!5X{F?gVsf+NNX+E7ld^MPw$u91-Ya~=j#Xbc zr-55v^yhkpmt=<7g)d{^s}pv7m_ zNpw-?GL29o9?*bCyLx20p6D`c%W!=A+fRSv>64TBu($ldi9xy?Xu4Ov(CN5T+F>By z!O6U>!(OoJzecxO{b)L`Bj97PXh_Pw6!5lMG0{ zX;dcyFX&%dd@5gry&=Clvi-0KfNNcAeO-nx!Lcqyzd!yp$9FfZqdtf2)KB@h@hh}% zY_!1POIz)}+cC;~jq~cnx8k!ti@NKuSw0PYnXj|@Zf|Hl1T4!02VDCa*j~Oq`$I3> z*YICW{+Q?MtY7u@llJv)Sf~4v;%n@fkW%%?iH*SkJLp^TGO{bL{K9 z4ngBQpk*%Vhiy)eg(Ejlfh-W^80E+sL)&D=~%#Z9nMa2K2y>@TD~m`_(Y}mFpFy zn)HnO0{q+$`WPLCqhmklV{{k}zkbli=)e!2OU_yDb!2a>o!EK);Ym=D&${PmbMsTW zHtdsuQP$4tqreOL(b|cP%Bxu4fV-a4*D5G@eogUX|9CyM z-g=n7awp~=wcaqs;Ab4`hm9WFtJZ6tMcoQtst#e(wQ4;yy`ZSQuZd{tDWh3!(Ol-^fA)C9~jzJef8OO)O2_dPv#bS({g=$1j{iQ*Gh8Vbks^} z;9h%Q;-i`nwUU}zVl}^3Qaj+4*B<5{deT}?<|cTIp{MC`ee>8}^$j}DQRW=amB#f= zBT>7MZ`^*+g^sK3Q|;Gi_u#!=?{zY6Kfu|0)NAkIprv*>9$b4q)5kx+*6W;Nzr=h7 zmgjTcuj1p~wqAejn&(H!pU%OWZ~Y)aH()DzQM+s_*S3{DwJY0tBejcM=m&k=fIi5= zhgl!{*|p0!xpslGCS84h*HugJ}|AzA8^RdU?zh33{1FCXRtIB~7q+{&!@zGg514UPVNBVo}+n4qs zt!==UT*Ko*_3^8orw5Nuzi*$e(}wxeQGFR;EeInyC1slAN-piz1ydT8oqRC^BX-Zht_K-Yc6v>t-bM` z5V6WI+Y2rB0y9s=Ccei7ra2M!sPr8(`s0{6R&K#@%sl3p8Ai+ubIgD_W`Qp|!RZHm zjE*l({_y-~P7^~vv&}YJXY5$7vLDj-ci?Mm|K&Q?4;pC4_C?nIb>#pw==q4&VDh5n zNv*}`X+Dl+V^j8J7saRTcbnhqo}0BA9@#GM(P@EQ%P#USe7RWg9W%zvi?Jsvzjq1` zn2xBu$dDefwgjK5(_VU4{NQnX6c1qJBCU>iHd^D+)-Ky+cwPSjp6QWK4zmxO&F@RG zKEC3Y|J6z1@A;fwWV>L;s&1>wcX%UPyd&T9dWuZzNe*RMIls^gTpjT}9R4H5@ahMB zbe-1l?G5sY=dHSK-*t$8dlrO@haP(FV}90C^$I?~7P`rkV}F2C@_YC9V3{5rxn}++ zn{9jOZ{C>>-p7ys;>SvReB;EVeE&&|?3;N!4a>RV_*oaRXnxRG%Z+N!kmKqx(<*lD zIsYU3N-j(P*ngrMHI23(^wC|?r%#U!m-JObJ%utU_jr{yVlt(Vcfp7udohk!7k0~; z#gjga8Fs9W;U{v`vB}>l8s-`SUh(gC z+Y?exRy5uZ`WPM5I^fjLe$Yp|_bhe@z63n{voisK3DDM&sl2)eu5%oFv5CDH`taQ~ zx-RP4c{I+=B73@r20!?ucTD*H;*ON}@LvAi+h1$k{2W23QE%V@9{i6bUW_#i z`L6Y0+4YLpfzuDW-$l`I%tO~TTI4a;Jpacq>2k?)lsyjmn@*RPioVnD!85&a(S5D@ z*kiQt6D;ai*mbn4DP7Q;Q4{2TKW9{mvS5PVGU5yYvX7N?h~Pb?}; zw2omO0|#8qrg9q^W)tX=<@qRS7fX1hdTBq z;Ws@~;9VC#bMd-^^x^6a`jyG7x#PQZ$FgxNYvF)YSH?n zymN%FsV(p(-=juUdJVN__N#Rr0*_h>9rJOs_C3a2d*Fcw2JB)!W&AP^XXoRX-h7D1 z7$zNppX)#`9njfrod>aYGA3T(E8E7{JX-YnrvLow>}gw#Gv9eS?;Ch-C973#YVyB))fLu;68yjx(b#Vh)Z^{m$Reh^@f`fOTSY7=xa=H@F^uUlm& z_F@xbN7biJBC8*|?q$F5>CJz?`iJ+pWsjQiz}FG9x2XdyWBs7-DdmrRs-DI(kh4mm-qBjy16vM~%@?JM#Fo{TYP)CN9uIzs<1R43d1 zRr~&EGoR991`qsx*xN_uN2?=f^}c7wFm3h^eSCy|vCmW+Jk&y`qxp!v894X|9DHQD zu^*sY6A%0~hS^8>85len1D~}M3AAa<<_zpSC0T-BZ^R(y>JLeu! zjd0pKeJX{O9)d zb-ri6<4a;eeu`J*Th3McUSsi|E42NfkC_^~y|G$pfy;L@^RM!jl(GlSv7gG?z0R91 zx7eQawcf$o&(|_O`SiAxcb{6ALsxRGe22Ly4%9*C33kIrXR9-wAMBa2&%hdQ2_)Wc>}Zj#+=};dRaWD82_W-O{mt%+=!{*Id#=u9mC9K(7~LZE!t8E_$s=FUG7t{20E|J?p*op0+|)bLyOAtsb)Ng6#|0yw$W7k|fluG-K|f6Q_!^FbI%qs{5PTie+M<06 zWBpL>gVc?~d;AsAu;!WeDP5E6IznG)t*>#g#dOqOaENJ@-PV^e>}u-^K65_6&NgM+ zeGepf9MYrVS+{<8@qOeq#WJ3n<0Ib(83!MkZtMpsA26Qrk74!^zO+BQ)_DxN>s{;6 z0etgvK8pUZbB_IrYFgJ1`iO&jAdbh*2p0QNa#J+7K!YCa$7uUOALSU__U^TNp>4jS zJ(T6m()wO#`?U8?;&qjMTU#S%)<=Aap2fzpKCaaex?3aE3${!ji_d>o80uP^#@icTvCJ&}SUJ4=Ueh zjAfVyIXn-BoLmF!6Z?quajp8B`7mA|4KqHz+z}r8I`P_dA7nhi51O_gggm+rGA;Rj zax$HN8V}y)BYE*$nS3y;#Qd|r4>Io;dLKj`yq@)udV`&x>-!+DWxkJd-M5alp2RbQ z$7{@;)6OIOo$1J*O1JAi2zjP=?I+i+i1$&!F6cfZo+Z|M9e5k2XExjy#NJ^Z4!ps! zjEv)Fk;u4JdqAG4O77g}iGBv@mimkik>}!1t0QR92bqlZ!?mA91`qLqPDh)6_6c4&cK8tm3S^7BMm@a!A6$iPP# zPpBb7b0&Ob+G{x(4GvWa)@Ccs~B_H5eLv z1Adv`Weq0Zunk{MVPy?A4F7>+y3$V9V0atHeB_Hg*Wjb2!T|k9n|s|BC;x%RaIHS%dA{ zE#crlx7?!|W}o6q=dyV1T7!+p8f@Br5Yy2bEctD}cycm3|5)G6hq+@u=nkyJ{Ig$! z&HII}!PG%`*{|rPv(*{TkI&aVD*E7?&(|7^JkJTQ!Okaq;%AVwnp+%G-&DU{sB0ei zOPuY?TxX$6IVY@XZJjq~83Uj7&pCr$=HX|Mw0o@$=yg47L(a{4dNEh61A47VFUFjM zO5=qygF|_%meE{Jf}JS+1GjVexY@qI^wx$-R9MK zY9V%huJ5(b=krp?$E_xKu)gF0wDau9qS|Ia;(+{RTiM??!X{rcP{Oj|!dFxnk$Ak?$|hSNq%& zC$Gn|bldIsq3m}Jv(JdR$Nbxi6ZIYvSdm@y+LX+Uf2`^twD_$CFultgzty1M59Pjw zdmG>1AorZ;;`z7U)vYvs#vQOc#=F7b%D(n~F=OVhSc#?2@-DFbFv3#~x-OPyDEC+W zmnuK+Rq}5i&=pzS$FuL|Z%dF9*ZQpnbl@{ruSI8{fX5ssZ_%A==BRnu9_D(+xl1_M z!rXI>IIG{vfrD*~i_b0V8VOx$+YbVi_lZhR7k%`2XN|KQCzKB>q9G@p58@Zk%i|f0 zp5M~u-~DXW+|Ry*2Y6exJ@MDC&zH=HkR!WkpSlVizBE2_5+AHqdVFaeJeQrr8RvfC zhcD~jD6miMOV<>1fu21Z^t7%iz$~NqY&+i3NB+E;BJ}v%50z)TpEWK1Ca)K(Ec9dE zaxFQ55ADfGsRN7~4v*(Q^U5>Wk8d(9FddglJN->rrZ*paYaKkcTKT#DWIF7}R>_TZ z0{tGUe|y=#<0*3z70U65<_q@_%G0Rn&^uq;Qh#kn(R=%(W!+nIHTxL7*QE>ciDl-g z++H$F{F@({Q=7tNzSzc5JTDS!^vF2iBIkJ0pE3M`uBwA~s~dkOk~jz!GJ)HMd2zB1 z=H+~-zx@jyyMHTK)<$CH-w5`SbE;mO2Xx1(9{2_swAHt1bzKXxufuHava*zoR#*9Pmt!ZpgW9CZ>u4@-DD*6DZ5)JZ>44 zPw0VsbhI87KlBlw@DIL2zHw-o6Zo$BxcMEK8ISd^(zkrF55V)jF7wBx8;q&-y*}$xx|>`1s;Bb7xBt;_OW^3TjMZa za;_kIMebod=L}Hw{@Qr(GM;Mu0(Bf&=*T#Ga(oGG{;jt3ZML7+-`Pap ze$YqT&y~FjH9OB&F$Ul&0qUi+Vs4E(XA`AVDjE%10yaOM_s9v*xBUKt$knbkcA z-=I4%{aX+HQ1-xr$1{HR!S+9M|9t)X9BzR%KDy7U{KUEJfyc0Z5FqxyZsY$CSYD~R zn{Ph^eAga$%+EIGecKiBLjF_wj6BjFn7MncJur0aiOydK9d;X^yv1(rTcIbXtpj7| zLLJOFV|}6f7vgg*eaF0^!w2S#EFG~IAs1GwE##~G9>3vV(HJn+Z(3maZ+MX38K%oi zg}&62F}-o|$r#4`fFCf=9nTqf>TfB$_V@_q`Ne#}-o1FjhqyvN#wq#+ebnG;Q>+t< zq5=NlM<1>4Q2n#^+hgV`KEt1dhwELp@%mb8z(F>xj|Z?#2)n4w9MC^2-qb|u zRj%3cO~eAZ{N@&%e%O0GwC$m@@IKdngF?C1^mDwtwps^r5*x?))?%7qjFAtXAM7V`x{$@ z7CBsD5$o)Wd2@pO?WVM&HrX%O`C~u!+?Q!+Ip+sB{h*IHtZ#Ye*?8U;oK-D#&X}Uo zF@NK4+MpY2D6RL${h*6>l)t|q--V8g8h0+bwf?}E)3oR>f1G4*iftK|bKWwot6;Gg zAXetz54wow6=5$v<_J9ef&SFBe$Yodir(hOI>A~=+YkEaw)N?={C(-m8sPs$IwyT! zCXBqULC1Q?QEb~y!+kBe=QU{_4YtD{+_nx%f3C@QVn{8e7NCRIL9W5MPk#qH>xqnq z>T?sGUComTUu1?}b+5Qo<=|uF*-!NGXRo#&^bzlV-?v%X>Ho`Mym_>Y^#jjM7hmI3 zL)aI8*D31(o(_FRywqB5+4E^Uo>S%gYkNNFi7f0J=U9zV-FtWBOv_*As9U~g9MjLk zhv)I*Z@)+k$N0dW|IAOE*?TS&J$K}H=9*=(wojXO`S>%~0S)#x(JI>C!| z&oFhP2IiV>dBg)c=AG*YEi(jNa=u|NxehM=SxG(shV4K98()4G??XVxm}5+ya;+F2 zHcUAib#+?XS{;nqV133qx>k&Jv~JLWgO0WhUobY-G3T)9ts{0`kB;ylcagQIzI|JA zp&Phn9DlB;C)jGmsW5!8f3uDW7CwU?@P{6HDE4sXYg+6@4%gu7*u?`l zJh=Bme|Ug7}x8{UV7F0?8vvQ7vr;fJ*2;5R8E1eSFc!i^FFU1pr!`4v#ouy;}G-3 z{*C!L+C%dF68tz;6dK>ldmhz$`6cto_*zpIBx8BA%2*!d$p@WKizav|) zws)_&aX0^8g7uP&mk^JLQT_jv4C{x;rMs0+af)5cf8e5PYnOfR+TeJi*ErVT5PM)d zl8fJ*({4S_fswnk=&s|nhT+3w`kQ6w0*wE6k~+06{8$4k3|+t-)1gDAyIkp(^!L?( znNHpP=J{NGh93MYzU+v1gQ#6wb*vwBQT~p6tdU&2UMUKnir4oIWj zTruW=aCx6K@-cMXndq|XeoH6+cK|#%q+iT&aQy$C@(;`+<@Uy@T9=FiKieP}NWsrKGiF@t|1#lNf6K)`j+pz*OVzc&DfDr_)b3rErN>ReS<{Jb;8(m@L$RUmfx=%I zE*l#k>M94ZhEJsleu_)z!WeeJgO-@f_IPHA4PF=h%<@+YJmPn&`s4t3{lL2TDy=`| z)Q}{WI*t###`VMQ=LM1(v16ZdzUoXZ%6;b;IM_mqp7{C|>Jy_ez4*3$6LXtfWX^(r zV$v<)$I37KNMFYx^XvyMxethY0WP|&np5=2Mfp2)XC1MRYfjX?e#AENuHu9&$6`Dt zHo=c~Ckmf||L14>NnLZ`mu^z*%I{Yon``Ss96eU`xm5WLT9lqpMXO{>%94O^_^Q8uK6ZN*8z78r7t~#*NXb^LRaHbV|B!ObyOYc z67wAW`#~SAj+9!0pU;U0xYRCqqJO1rb1LK5MsT3Vm)83xjp55XkN;vk6Q>T_r^cZz z{=P)sMh)lPJ>)~*5BlgH^WG#{@o0GH2Yx^3qx*M)U#ch9#W(PgZ^CxuQ464vzOgO= zxBtB^RhqEnq;dqC^$euxWxog(-&+G?EO0(B(N)*6E-4q94B)KY{jhtzK^J5I2k#5i zdW}~bx}y_5HXd-|ZNB!I^(7|2XwT~TtZjZ)a;Sx@qsYno81R5)Ip)E73C!|@6S-xb zY0V4Ug%^6`lgtl2y|$YcoUyN1%ll!juj0P*T5J8tZ?WHm2K~)j-`8yT6sW~_eNuAS zc|h%0m4?&@<{5Ju`?D`u2lJjp{tf$)W&7znPT8LoXF2oZek$EV?#YWBxDj6B8NAp7 zNv}he$#VhX+YkECVZYF#N5#)J2cNOs=7Y`8RG(opwbHO9$-RHS&V$y4DwytThK) z6rSBhbXk*Z?0^S$(SloXHjYfn^Gw$x_GtL3S9?O{-(TsMb|xCpfKJ)aWZJK89V=wa z%9_6Cn_u4Lb_5xw=r2lgZM z4)8W2C-{#$G6GGi=UlOJD&B%cWT(;{iC|A|CIXR5bun$Fb9YEmvN{S=4n3U zG&RTjdv#miILOL4$TGfhkd<+em2q?#H4%LrN7uv?sa~J`!HF<3XYnMh8f7ATlz(7I^=oG`YONnKU?|tgAjE5=s$n?-T$_K>6yRrz8~QCKg;Oj zd%j=(uirA@&p^}%&(hEhJZv)Fzr1|p$&AOdH}E7ce%FC6_Ni#YW^{)iJZQl|zsJ?b z#(vO;j(dOU$eGgH-cX!EKmYBdPpm&Qy#1yB^rB@`qo4&3{fu|uJv*V_^B?_!;6)yR zXZ^ldef0Z{FMMKP>_O2owp8)px0(1M?fPY-P;3Gma1XzVh8?#Iqdu8+>Ac zU7@c&b1XDAcu^O4)&T9;$F|45Wv+qCTzyu3 z?!mk^FX@^*X5e8%jrE!9bQ z-6@#qu!(s>9?)i(@+8I_3wWB&V>Q0*`FM_}eR$ouRdq&>rnBtgTKyvVSXc#(LA6n;Owi#U8YMo8*?{eU?T5WJ#!ND$SrDZse z?9a^GwSX~rQAZXAo!w)D8}V$5e2sarB3oE1S=ag@{*Rc`S})?%P^$;T z(YZkj9XgmlJdRczYKL*v-S>=q#v10ei}e(KXSEl(Uoi5V{|5@cDh~192=Mb2)(^Vq zy1VNc7g{TCUKc#{s;%^Cb7QrRaWBO_dqF2T3jVwtA!a(xXpa)ld9q){_mJnd_{E$9 z`2n4$D*xEi>)jd-bThtlPs6c}QWuJ>?Te;GH`hS%=WmG0*gV4&Zx!c_H4xBc75G{=z@VqmJl^eI#(t zC%59Cf43C)`5C!#r}4AT!uN`8#Ca&sp}(faAj8m|xa2W>%ro`k>&J%s^uF@WLU~Wa zd274)op(g|+snH=#1>vUBDVCEW1%1Osqoa^zt)c|ms|vg_?=UqykuPh2R~8s?d!;K zjnOjCsIzXNx1QtqMJ#PE{$&j(=Qw^6h8CEP4dwkFuiE15kPSkwF*2=g0T6Nc|pYT27 z;1Ub)7Q34k9T)j5{OK4iCcK~Ry7%_CciZoN^tKLNjANcc?UueTG8f;sxd-nYgUn}B zuslDlv-#kYu`F^7nla3Ik3L^Hl5c+yKYZl5;JjjtxG-1j3;ZVg7d?l5xcZjb;xXi) zpZ8AEDd@rZ^9g2rc!O&{gJ*kyas7AnC(Ev=zoLFWM2^ROzj7y9#)wNknLE(-L--}~ zl)NU+x)+^3PuiX=LFb%D#zbgql1JoLYr8NMKKvflV*-i}SK0}Vy#>3C5f2;aS369S8 zAGFx!6B^=AeVfO#AEvm_aJ;+bOy1vn%=-{pk5L1uo#@5b6PBlWid^#TevR=AW=VAg zzKlKYG2N5FL$$cYW=r>t;d{09xm4sVc-U(mo9cTEo#4Au$A}N|;mcUm{KOYJ>joaW z!2|pi;ak32aPHK4w^m`&qrF>us`il~oOoslopcBs`shu&uDy?W=oxs+QSm7GGzf_r zSzGlRKV*`FmACmFPW)zabT6JSnM`fOPg%b#5B)8#=rjE-U)I4ql!puW)c!M#?$sCW zsPWBo!1<2ba}Sv5U7x5Sn%fKTpa$7iY@-gqV^OX6$MY+AXiaW@mCwSyqRXWXWF4zx zsy_!e6P&tZeq;U<@kciE1RUBd$2>J0@6M46e7DE(ah>Wnos5f5cEkx>Tp zD;_#)yqhGQu?L)LPxl(-h5cvUWq;gXB)ez)L|$PRGRL&=hfXqQc*OcU$Jck&xl64a z>sEA(-##DOtTMHKYVm4%3?iPLn~^`%4PuI}n$zc>RJ*8?wa2vT9%Nor+?ZGN=gHA< z?Dyd(zVZDExYjen#lOL=!=3V%?eJKQ!ztxQ_^ax=myNs&ANh`4{8e>v8~QV*ylk@A zH-hi>Ud4Q@2m9c2)ek&}gNO0eJ#75!7xD$Xd1HIo%6t9f%}%9tz9b(;?6O^_6uUE$ zUe28nP4l7gMRM?2;oqvx(ru-NGSBp!wBasSe)3<7^>bP?p^-mYet3=` zv&L{E*An|?o~@4C7&hfKeW!sjcx4-9ckF{$`(9P=6N#_mrgcB`L}%e1u+8kz;Ky?b zXn7V3PRZ0(Lk$qJC3-x%UVjKFnH9j!#X=Q87 zANEC_H?;Ujy2djoV2W4aDSrSHPQ(hBdGP&F<^gQXgR${<&CsFunm)BI2M_SzMN2FV zBd5Tz%*Y45=aA{fylQ;H7t$y8T;SVh_Jw(89FKXfc)n}xih2g0e$dD0dll0;9@S^| zUBpp5X6gwz=t6GIqjMZh=Qx^_b1}%f7eH#2lR?_G-b= zJdO1|!;Fu=GCtSjpLCD)4jSqTzH@DYr;b>cGf%B|GwbrQ z$Qh0EolrcFheq$1G@7jsez55-8My|84f0vTy({TJUcn3g#5~#Gc(fRPXhufc(_|iE z!85<`9X7&O`5P_zo4;uu&>YyQIv8eKML$;u(`r3v`vz#V9=uxfawbPKxSu%IwIE_n zzu@+WS@qo747y3wiJl{gTdDvdn(}1!6%CL`q_i8X-R| z+?W2oj`eu1-lyKG-xc%BfxiPpzE)YWw*^-j zYWxMxY@ILPU4;D69AdAd+&+IsG>ba@%$vF>-?TN0xq3ijw5+?G;+^$I-{ilxW?I(@ zyHwip-oTjNxY#^~9jiW3Y~mTH zd)dgzdM|`8sqfim&`7`d9v)o2i-o?`Ir$Dc;_9`RYvHswg3I?X_VbBJxgWw#+oaeo zWt;I$iTQLrXHT)Can|;1uW`kXG(7mMaHutU)(~|_&lzTNfqX*t9kL7Dqv~JK`*9De zg--tued~*1)G+Xo11>t#iaz$I(DZ{oMu+#T4+w8lG{i95h#riQKk$2x{#?m}m3OZ( z4*bT+(GU92f&V==-Vei%HOunQ75&iNIfN|P74K78{%15cPd9imSHXjadBMZ_OYcKF z6$e|;&F#E6Asc-12|Q%a!$Y?Do~p8G(S;WJtRG`pFXP%Dj-gxl*aq!8q9)l+aM10I zRR(%Q-c|Yd!Z_4^^8ZUyt{@wHcyLg=Ory(q2LV~v%2D>P_#auBC+jP7Y_r1nJ`;X! z?@TbuExMH7O_|QHlfr*Syx_sU5_xn7uS3S$s_-GfdA}Ape4hrd zdH9)(TY#Rb%cKy{ER2Qu^;=OWc7mx%QM5) zDmFJ~8fYc=V3v!#%x9^tMd0da{$8p%*$)hN8?5ne$=xf`jc0A(;b*t%hP)W7yph=t z`Y1eFdtCC?#fRs4>`AA1;7$+Ct>w!VkH7u17an;FKi&z4A3F4d27mYV)111DV?FV^ zQ0Esqs2{rUe_=tZqscX_9~kyg^1^cY?&~@E177{GTP}FSBK)S<(-yp+x?5f8Sz75A zvB%D{dM0Z;T@nM1XdOH7tb_K+GrpW>J32t4cl4sRpfB(1MJv5*d&8@F+7Ch;#n5u0 z%`qIywe7Yk#|EyB&x!g>2Ro=U@MUaAeUHJzc*Gh!d~ZCD;Wr(TtH^s!xdV(AUgm*} z)ym&I7;~*Q9x}j#hw&H#&$7-TC(+nQ<_ie-F5K6yI*+3Pq|xa+rv}53)N?q0dM>bEn|<@zV?eVawF&G z$lar^6Zpd4d}-}-e6m&d0%zr;vCp$i^5S}AqC0%YGUwSsT&|Zd@wgGb z*Xtwnyk5Teo_xL@Kj8a$d|#_vdseVp#mDzpv`2Lf%sxjiaIl*;!{E)BeXLT__W!`h zP4>&$+P{luT+ZLRhkn;`#mPL)%P?}pbm&0M2WMW6AkS;{_4vjz;0G<&~nRB)3 z%rpJCPvgFXd%f}A-8?G(hVQ??M-Ds+&2Y!7}59%>oKr#Zf1gXTAW zCs&>o9&>j|W6F~@c64@Z|NWI;KM2tFiS$d}PNcT=N54glGcRZzNAie!ck3wqSJuUs zxy=2qaqX{uh~K!x?;(W}M?cK`9_|2_IS=?O8mr#omlZ{+PZW1RUj$ z^*veVAO7_iGVq&hIj~myhT#Vtmr6VREmWpAE^)FB9y9MTjJa(bVB{XY#Wvami#;Vi z;GGR>h@MI6v&2L?$8*bo|HyRQ^+s*;rQ`%J>MigwP3ATJTLR#k7xdIP+iG5J@2&MK z`v@D)i3&d4`vWunkx7Z|N*&{QnPq`5y>59{w8UI{-Ca4xGX>sf?+1O9V?#}xnjh`= zsQplY`4jk!&I_%L*PItZxvpo@cTT3yg~^p^J=u=GBTqi!7xICeF^>Eh&rObM4Evd% z^L%q7_IbTw4}7(G51x)@A9I8M*KTgTlz*`SyU=~Hw2_mHo!ry@$&-qEn~%1;%){CF znE6{y@K(;vgE7~2#P^K!3(xp_JacQd^f&|`aG9UjaBNPkLq~APb>=g1v)+bjEY^3! zEn9R8%B!{po)Ue;dybrI<#gpWvnS+zY0o?0@OVZtSVQKmhv0m<^x3I;peJ@;D=&zd zX^vGN&<3sAec}PmIrXEKsSa_V8}o{qz_>;ucGN zjrExCCbL|wv0JjDP7!;?YU~3>-VqzdiH&)9O*fBPXJ&p+M*QTb;7$EOC*lN+?%N{| zS^tTXzc-^UKy!!uy`pgr=c3k}So;?>#=evs=g{Y}aq%5;`eE+h#)=q1ulPpn)NQ}B zlrQ7C9Ao^w2lg4@;2a?p#tTk_7;gx@G}qj zAnv=W4gp&TUbB0PF+Db-3-fObGw&QP<_GxpKi}u!|D5~i;8@{P<^u=wN47@nxpp2e zDd#!fqVs6-Rnb3U6tPAwbCv(IfWx}e5+M2}-N*XTn-UdjKlm#grw&3v)fvaV+DkBd{*OLBq_GNjkW zJiWlTFO6@xf<+xfCy%Wr-GQI0GFY>~^F8A~EV@Lkit$><`l0B8KAb}1UM+qfobi-N zQ4{J|#K`##4Y6|`kjsuKa&v!S(184_x*W9tT;>XVsYx8r=m=YZ+eZ4>O-t^s)qdd_ zdvig$?q_teCWtO@m7|g8@tf&E4i?-xeXshr*ZWNPF6lc)@cKa?Iu1W{TRZ!Kk*@o; zKY8nGeTp{rfY1^zTJoCK^1&fr=D|z@&d!L=F!KY4++YrmVU|Ulz+ql`O^7(v^?`96 zp)-Bw?`ryc8(*z)`8VbhI17V5y6xl3m9OhCuzt|Ts16%X@W^HGJciy}JC`%eF(H1) zz-PewK_4R-_yoI{FU|w=wk+ji@W5a84=p@puRgmDTfu`zjMw?(_|>t1foI=JM$7@= zmRtQ4{~wZdx1QDsyRENv(LJTOblp$rRK08VSm(m``OBuwIE`@4y}DHinzOYQ|E6g>Rsr$J4&YUhnOAj#2%0Tz1EMXT$)$_^UqS z4Ze))2tVfW#3Sl=qBDKWLC3qsxbZ~(fB#?KAAh(1=(#)Mxj#I>BYss@YpWhHx5HOc zp9N2pBrf=1)3Dl(<2Ht8zb4p>U()W)%;3+%=0VbIzB7ELTkU$Cx&O#(%;Lk zz~=dtarrFf0e$8HE%OXNOHQj_&Qow|Jj-02bO$e2eDB3R{kJEg?z+cxUf7xFv-FXL zFD)a>#7_yj&iS2P=&CN`Uo)K6J2CEW1VRNwxkP@2tM7hgLqnWjxjo0_fOQxH#$egFfQ$|Gil9 zVod9`{+|eUNqZ4wGf&plW1c;t`&Q&`ZBO*sbw8_9I>fU(#!qRV$>Di)L4D^x{jZS? zYvKj2a|8b4v164#G+J{aZpb%{;Xk9X`}7XMX8oH*SE`=emx0g!Ew!R{{0_KAB3HA{ z;u(1a`p@Y+IoYG;f7v@;Cvd#O5i;~W4{bl_Bi!C?mp1;c-68A5JwNjJK0e`V#0TH6 zO?{!0rjXvVt{D@Ahe`DNYPw2J_MvURh98Yx37tFUb9=P_8$YOt5 z^=dSR%NP5e5P$4qFAg4mE0Sv+jn=+rJky>V)9P6UIP%Bxvx4C#J-^jw*ZrhU$DDh} zig&b9KfMdoOJBJZJAFUM&YK51YUvUud&F&XEi+et-V5^Ps|l zFMVtn^Ry1$!(b!0HHOED>%&~@gzu(xNpnr0m@m-H%LCP;SPLq=*djjgBoE+8-?a3R zKiH60<&HCR(@-~eO%X$W#Cm_qgck8o#ENH_L20M@ogFp{j38r*~g$i zJndWPALd#ozTK&C^JQE|-pe+5l}GzqaqvAgrEk7PC-`KZ^L%SO#UOMX^ODbY?PJ6< za23Ngzn1G5e5%}{i}o?=73O`+J3layW?lD~&R6N#B*$Yqk%h0IM~_}Dvbc5*($D#F zwLQg+>|<<`^_Q5Y%hwuh%Vxdo}!Dm(KnoRiMfbvti93hOmx+CKc$m($#CQX z_xz>ru~XXEan4__mMds?EMS zCnS4{SI2ts@49#0Gd;O3{z7l%LF5ble$dCvGnZmd^R4HeTJVY680LKs-;v=D-;++% zUl{bE?>ngVd^dDRr@zOUsBiu0Lr<>sgFZUnSJ1{0c23kKk7@fsA0yp~HTq2i$#}>0 z|MdBU%Cao~ODjJ9?uXs~w`$luna(4jHU7wfensZa!?P^#;LqFu_k`-vxe-rbjBjdu NLAb?#+Z(6V{omt!Qvd(} diff --git a/src/games/endfield/deferred-lighting/0xE31759A4.cso b/src/games/endfield/deferred-lighting/0xE31759A4.cso new file mode 100644 index 0000000000000000000000000000000000000000..0b5ff26ed757b5d9980603545bd944225b2c55fb GIT binary patch literal 52180 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%0A_%3iq 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 xTQ%&S%;u5MDu3iazbzo#DC!_|2LoBA0hw% diff --git a/src/games/endfield/deferred-lighting/0xED0BAEAD.cso b/src/games/endfield/deferred-lighting/0xED0BAEAD.cso new file mode 100644 index 0000000000000000000000000000000000000000..d687c867dd5089fb7edd2b049bab49b53aac6370 GIT binary patch literal 16244 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 F{{SLwa*+T4 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x51B20E29.cso b/src/games/endfield/deferred-lighting/0xEE78E1BA.cso similarity index 71% rename from src/games/endfield/deferred-lighting/0x51B20E29.cso rename to src/games/endfield/deferred-lighting/0xEE78E1BA.cso index 3c2a7783567e93127d4cd08ba282580e3c3b462d..c210b62b24c46f07a82d91f5a30706fd4e98f1e3 100644 GIT binary patch delta 2204 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 B%jEz7 diff --git a/src/games/endfield/deferred-lighting/0xEFA7F46F.cso b/src/games/endfield/deferred-lighting/0xEFA7F46F.cso new file mode 100644 index 0000000000000000000000000000000000000000..adac120cc347b4c9a945169ccff6dcf6ec7c4edc GIT binary patch literal 51124 zcmcJYZ;WMUec#WVvB$eJyIy;6)@DfIdQ2f1Nb%0PYqNNF&W_Ds0u7GAi^&_PRh*_( zp`Ey-C2c((%*GHxNTXVzsw(728wsSoaFK%AlC`(3+ZRM4kqVXaA__08sA{EZQ=wK$ zL%*NjdA`s6-81K|$D}#Zz0Wzn|Noxf^PF?f>^}I|_5il^zO$V_`nAqd9eA~*S_`v$wd!z$erlpqskRP{2%)3yFdH! zC&l!^hu;0z|9ZJ;u;-hnn&xjEX%_zK9Zjy^RvF<<{!ub
        %-PbhB*75SuURT=*@#0etHci*XsB>(8!L}Uh z=`_ENt_ntdVLNrhh@Ry_dr^F*0S4_Cn&!60%Xuq$4tV%*w4J_m;1eH?rNv}h531ji zw}KAhgnoD!Io1lC5#6>2THB}?+_YZk41@p3oj07*5cz?AqtFlwa+YDl0vThmFdw>2 zV|$4IX5rf@V=JXMvo-ff2NZ*&Z5^wFBOPBw6dRMH_>;e zJzVnko)#UlbsWJ)dcs-3FKDz+@M(Ft$+GYPI>-7i$(O5wA!q4^er!8k96VO=g?c%8 z<1KqHX@sZk^fj>UUYT#1mv0`Ei62^5f){>{-hc8sQV2f*-^vF-FVJru8IOST@lT6l>obeFY`Vjl;1=g7V4mCsM{)Fb@Z z@0hloE~ZDP)2`*a9(`UOYMNiUswC0h_9cVZy`uhx4bT02A0w}st}WSf^qOc{ixk_a zOLTkfrzgv%=w;9teuvI4OLox8PjF*&Yl7FD6*_^ASm#cGS?(Kz)VdY<4t=VRVq1*F z&%QBFz-{bJ^sV`#4>lNYI5_$bw63W!I_5q-CDRF1^_kal7ll+Dj%Ix ze;r46g=cM7%|?8Yzq3ElcfWT%qg1bohV|aE!2w?%z>y0aotYlnnS1DBpHOq7_!Zqj z&)l=U%pqt!-Xq+;`0<4}*r#9k*4s8cFM$yUM&%;%#6E-^1G6k}$U?X2Ez`KLUo`kc z?3Ta#o9EmcY*+MU*@+I@$2l^games*j5yLWvPdx$^#CF%qj9>J{_96HgB&OiF}Z7*qV#JU6DTA?|e zWEqAmXk=ro>z1GOK?__o$2QCPQW@J${ppRLy@I_WiGz6!{ZFJl4S5B&BOJ#oPxd)s zZ2`xD?Vnuz%vo{)?VFk#7CGm5DD@B1)BnipbN{H1H~qu;f=8T396Q%HF`^F2x;GPB z`&{C&vMULkn_fQ094W9kN1pT?-8b$2B;aL!1#gzeK3DT=FU`TIPwQb+Ok!ShPF@+A zd&uM?eNn$5OTOgMbqEYz#=Z{s?(;m!IBEz#fiX`Q@t0A!BgPqa@v~DqsE3Ll_cuJ#GWoXoud8rwAF$A8BXobxb@WyTF-nPm?3xOYHv zX43DM=?m6#%VajkrpGR1t?JwIUDI4M$Jd3kEcXQU8rJ{XFPK-*c+9x9BHN?lxXheG zKK5aQak`Fr2S&V2hulnG;CIV3%P_y62$QE*5^B z&dkpehwvxkY%}q={kMPbKKxlPe)KVFwoHRQ;|y~=#&C|K`$&#ak^OG@e&U++-72G= zJJS2m%9f`22ddHOr-$w7es=oF>o|7dKkGQMPU<-awKrVHGtYMMlRZZ0*V;eEW8aXE z-;6`Qft?l3apu~w%zVUzdPk=9BNLd%>*=GW5?|DHnO7mhbv>rrHcM6HG24Z1^3zPF zImRFFJ%9IG??2DlV%_)=^vMs)cioV8)6e4i^~1f}xNHMBfR48tb%_WPx$?japp>vi189rp~x8yc>gNx$}Di)7Zi=zVRr-kD;A zJE<^Y6Tm7zqX_P%RRCC@ABRxeCIidj@Tz5S8)!1r*iwfhvnHm+pV$YHv5%* zb}aBA*BUvYX2@+h4%h*lykHyhw+k)2z>KpD=LTJu%l)WrUR9_Rw;I>B6Vc$%ZwU*M zvHX0IKl04&TwytPK{+tp#pBh+SP!7FZEJgzW>MGJYrC=2zS#DX#|wHE6@48U#>w~N z>%}I?im69JD|**{kz?PM z3oZVb&$z-D{upQaT&ve4!?nsYLu!?0Rb#cPXVTGIvCDeaicN1!zF7~khgQ${W1X-a z#1$Vsssd|IcTM~L#m^InrQ?!E^S53w+f?^lL2@cVux>6o#F9;}$eJRtV=g>(3a z_bbRLbTL9RbH7r09WishB>%)!@zJMv-VLtp^i_|3uiADMpp$;Dn)jUh#b@_Po>!0U zIqeVnvOhUy_}xtUwTpck`OW(^_daA$vx^#+%b0P<1P4E~8E04@$LadKDmrQpK6)>F z?uD<@d0wBPHSRW@o6l>IdsEH{HgWBBhu>VW0iS`b3x9GJ7Jc@1!P-t=gTr#LGs__# z^zI(kGsG(qS)$>3*wee!0D?+560wU*A}k`K)WH z{5Een#0eVwo+rmNj6*r%tM*tIW6&ntTGD~lKVEQ_?Rd~v6t{@$9XfA2eGLxBm7JrC z_!>s8ZO7d*cTwTv8u+ti%{f_UfY}aU_~v@x`oqP>Oph$CiQjfP2ZkTy1Kbz%TQU8f z-*?)sY1GeWKEPzx%!hRx-nQ#)08cFFRgxFKg;HnOh&)DUtdnbMMr%N{-V$ph zGN8jA^2PeVo(Q|4gBQOi3AbEmjN@6hVIqySfce3^Vja^n;Y$}ZS|7AU-*MIr^tD~n z{NM-Ek3h|(r$=oJ9)7QCyD2@q949YLdGG-}k81CL9@fAynQa%(9YxWP8Y&O*9Fy60 z2YEiDwAdef$1lUM7Z{^q*aM6a*bA~C^y$3?#xsIFBADu_St{~?J#UzvPr$3*AN7W> z{H_VKLd#zvc?D`kk)m#7dGn-?NtR>#vOesm=ArBDnLcC4yrK&l^@s)MD)Z=k;grH*zwMiTGpYWg zpIC}6>LAO9p5LABPdMAVQFQyaDEM3l^gm*7Qlomu0(Q_3sT=6v1&91ajr1XKhLLmQ zGA;W-{DBsmhkXdy@HNegTeb^2a&I2(X{+y9w#ahsS6sW$M6D^uFNw%~$h-ortc!*k zTrPRzd`yqP@w;=#6D{(f?QM>CP%2(=u6Wy^8n1KJu%5R$tC+=a=wZivANjpG;s+f$ zVzexcQFqvkJgJ@92D_Y0z*6dXG64VqFH&AUp>upJyU z%pqi9o9S{-u-}p$I?d}5KI+3Vh+TZk5G{|31^z2!z zM|--8TPrkK&-Mr(df+n-AJJodI;}E|v+VmOec!%QM23~PZDA+2+aJe)Yt=wJx8>aS zSs&w&#xTq7$Gt7t9X%ZVZKp5pmD0z2w-h_6Sz_gwQ4gB;M>nPOR-H3X!cJWyliwNO zp)T-+^IU`2&fIjZc+Uo%=Fssm9&Caq%Q1{OYaU?8*(mgiS+zm9m}}ro=a|q7hcaxR z$ZPMiT=Nl2Y5?2XPG2dGoLBlH-?<}RmZ8&l)&P!rAg1E0y_39K2X>o|(elS)0Bwos z0pHBGDl^=-kVl^BH{bu&Y2QK){tbJ$=^6bj1v<;l{@H%vs$a&xL-RG^Ll-s;VLA7% zA?X|At^THXhFtaz@+0C+obi`>));ot?{&l)48HOY_GI`Nv7PjDDbr>)^F`#k!A?NlAd8WwA6!A}yN=OV$YoIo>1znfAOMk9=xKHpP5mZsHTQ$lQ!L{L>j7wXU-ak;lH@@{tR#?YDgMJeuZ* zai*PTgL&2SBNo&PJnHlB)SREG5dp&wXv9~0OHbd#`^DHw9a#SdWD~j1FzAU7xiL;T ztMeJ0aufXwzDvU4_a)`Ubef;hU%(r-@uhD!+cbG0v$_mnZVYx#t8r(E}}cWfcE1{LrAI-q>9*Ve9OY}hU5OFH@f%7%C%dgn8hL4i_ z1Hr~@b3cU+|2;YmT+8lwPGwoxj8BaDxs~&T?)@SQI&_cGdC!7e?6+>lv*kM52Tiui z_F9f}$e81Sy!BFpnFiY)7S1{{AF{a)`_)UBC+e-s>j^G&v!*)bne$ilSuQx$^wMjA zt9RAlk#ib#hKLwd=MIZ0071<$>ouNjebP4dY#d%?hc zv6pp0F#8}`$4sZc`v_fK!m}3)Ud0MorqA-W6FvL4OfOW}VOZvSAn|EUi04d!mrsoL zNj)xl2>RPjUxULv#B>wk4Qo4H%-jod-P}wMxl<=Q<$i(~K9+K#btGbuVfbG89G9t_ zG5X_I3!Zl-(0BQZlgQVXq^s=&m>yd?-MXOKGY`Mv!Xv#aSuZfzSLM92-0y3E>xg)3 zt~N``JFvFXS3JjxXOYs=KX)eYcL}kioCSRu1zLGTxPYn8Ul3p_Cu9iHkGkJn#pewfPLUc#3S^+MPS9V(hc=uAF+wJsZJT&4*P!doKEW~`(kfGJienmm`<0G zXJ|PTvl?Ifu6@8vEQdDWJ267G`5k{o$4#f1F6E~8S@<}t*D{>Lp)bG8n2uaSN9;{!7;)2a(>3AI_lkbs0>_9f%RmP`%`kKsmUW>6I%HTEunobi zYqy*~p}&$~@E_Ydx_bp7VIH!L(-! z53#}~`5X6&=q5+Nz;SKbF`d{+PUh*%abC9lRrg1n z_s@_wr8D+oX+$pfq4cje>6{+qaZ+&39dQFkUKrss4&Q+}R|^Hly(~ENE_Cty;VIoO z1RpqHvh^wWxXv;y%Q(+1=+;C}ts#3@YuiPi`_^G&oNYxu^HN7V2gH8aQDe++a5oB; z_x#vr-PvdP7k?AATI@nL@|MfU^L^tCGylA2J5BSI3!e8`Rv*vi#eVEMY#Pe8jxn5V zV-GmwJ3HdD?h%jSGtVKgnbGpc=!LHLSB`P1fh+lbRk2Rb>Zg4YpV3EdtZyJE?(0<7 z^_dLzKwn~0pA%%8ku{~++gcSlYny#5Him4T&0rtD1?YKZ#1~%Xj;>>*mXy1CUkrWN ztQfM!u->5aq(Yej5j6&)gGZXR>`X{@81~A5{Kqo9)Jz zUFl&h&$8fi&K>7r&XGaB$SZO=cV4-tcV2uEtL|$Imd2#0;7C%luC~@kEE5-~HCN;_qgL{2PS_e&c{KcRX5$ z`z`r1%(?b6ubf-cFe1j!r33lCkbp+aw4gqlA0O>@S0 z>~P-Dk1UTFXFEKC8^+kUGm~ZsyRdsB>4e8{>;>=9zGN6S>Rxl^Z)UHfitj5T` z*k9+?G2{Jp)5zAa$#$A1kKBi012Fh#3J+MoJvpFr)Q2;2D-U+95SzQ*5~(a zG7a+AC8N~J0r~J+zH8h0GA_$EjbZp^*hZ0MoMY-*Mh|(#KGW#5@*74@{CB&S-RG%a zvyhkdn$NKv!$E`I`SY`Rx9mN!S?FFazO=Gs`Zv3r*FCVdll(12e>{}#0kIifJ09o! z-LCC)zF4wY%{mO*5Dom95197Kugb^!?K%$R!Ll`P>sp6Q>@_{-rgM%Q zVIU@CFpINue-%O@G-+I#gtn*kk6m^_=6J7LZnYWJXJC&mxJLCNKp4%m^&;!FBXjpg5=NLFP zj+^}^Zl-bEHYZblVAK?R{JkgF=+F_rLzkS_K4V$P|6Z|={mP;k_?-cI`owO*vBtkn zFz=t9yQ!yv-!$-%7ifq4@DXoD`pp;(u-isxq@(U<(GmQ5*TZ`+Vy548Vvb=8eqYwJ z0rvXHMcCMi{9#EvDtdLH>vfgI)hI>#(cvT?uDJZv*Nv7FxPUv*SdV2cba*=V*BA~ zJAF-md)VTF7@?b*!)MEWHG1(xZBVb-R%#TO`bn%koD-{nbpdZCrRNQCB8_*Nw+lUe z2AWe6!F01@d8J!I(LqjWe6Sb?hn^MbP-SI4LR^e95fdC@HfZ6_Im_JPP6^S zt;#gvWBqddF<0}uEZBig>d!G6)+>8A<1BmVUx|D4I?j!MhvvqR7n_E#oO^U&lRjg- zGyW1o+oU>;_kmsG_(7l4Sl20Ct{Cqes25ziAcXrRc|h)clWE^DZML)0l^nohI*<3J zxde>4duFGwE9sENZZmU>&YS^qAhV{Einm^_TeDO3wYhE9Y5W zdG;`~|A}>M@IEkns^jSYth0VkccOE2gJ<6pyvhkQWAy8Zo;_5i2em61A-~A5p1Tqs z&-Wg&PE`Z+$SOLISDa*E*X3XC-}SWLOHa>UGlv`>@@qPBNPIMJqMnLfQD@At>%9*= zk5+lD^@CjUK9AP1!lqNRHCErLldbifx)|0yJ_sJ~1A9L1B%a~>z@|AXyO`suuPQ&+ zx$%yX>rXyKFNBx58NLnP2OjD`1_yr!X#0V&KH7fEx86tPtK}GH+IcpZS3N(T2hx9f z-P8Ah*W@>IO-H={1r0H{pm9pyzYmOlVAk*7pxoEV8}g|kasxd$>|iwRL|Q*C2}jI$ zAJ}y29S5H4jlB;%lrR3s9l6k43>nyKx$-OQ=Nh<7RLFqjC~CBM0`=z9<&c9-;mL{j2o| z^^uwPf!7r?>V$mJWB51P=DiP$U(l|Vk$T}8nWq$U z->9pMN-rG8{UbQ+z~(Gp`Kb35x-YEv70{9&dZdQ9=Yf~GUG8@-F*m%fq91zsb@cbk zxqiEk9Kok|C+fL<$~j8>u@=D7cKR9|=m+Aw)Ky+g(Bl$qTZI@qhKkE7a187oAvn=We8O{kf;%6G(2i_LUvalDQ z7{~I2ZpQ;UbdS;D2XfJkE|2K3KhW4dVAz%Igl8BJ_?L@3(`p@y=U31hhiwlResoaR zrq49=67j|Rz|0e5z{|0wnDXrNE1VY@s_B{cfnN=-J##!Kx7_GmBXVV5%n#^x^gEb( zcDxU4o0%VHw2yPVdK+io2ex0{Yaq+^LC;*KH|@$7V$Ggb`HcPTl5Fz30p{@>RPT&> zvk!_$M{I`lk{!?6itPBkj(t=3r1=CKS=XeW{>-z7piS=s+Xu-yX1e@7u<`5#gIBRa zmg%#+ZNW`npQjaiP{_B8%=bXz4_h%xW}Iwx93>ifNh;d|xNdV|iT(!V5Uj6T*U=91|oH}aL<2ewTy zUQq3!!#s@AyHfQQeOZoV*ELe)5%2gtywpV72|DL}VD2@SL}z+N9icB^MK-Z&JAFkg zr=#vSmp5han*{P2+IHY)58c0QpLyjeQx7I_nak%tX!C*Yj-fsuE)yboN? z!xr8LF1}Q~q6-}Irbk~J)_bQAuP7eKYP*Aap(7U&H|2t{r#tvQuyb}%&%jM5@-2Nh zVs!3^hizEbd5-0n@0QKq<)~)DUjDsZ?55W2d!;LN({>^ln~r#Q6Meh~JSijcEdw3QQ^U{&Y(rz#g%0Q@ z8m$W$bk?<7&Uqgf8H~`lM*-tKhlxhsC3URf1Gl4CGq#<+=De#5p7((nwIy^| ztrvO4w&;W4fHAh6zUJtd2xGdj_kqz(exOs2iN0~C&Mzs(Cp8Y=2ZkQHTvO03Jw3Jm za*3H^I}x6E!wc;Ba?bm};H;Otjp^lmVC%hBY#pQHec&t)o-sP!2L`8Fj+(kl=guMT z0~6=>41NoaSV%Xq8GB!lbs+Ol`|!|5uE&E7rltPiAy(L=xEx(AFmeQp5gOBGozPO} zp1zTDq%IDl6WftH z)H&u0c{!|H^6^^aP7Y}=b{ycmjKgtZ=QaPZF-8Zv;9b^;ZXNaC;S(;_Wqi>y>jQiEY@cl| z{?+$^^IS&<*W@Pm1z_gCZ*maV%k19=CO6PqR*yUQK5(WnE%pxeZcJ^ezuB3d`{dz$ z%e~q^BZGTH=sboGBlIE*owDRRB=OQ)8 zI`0u4?4h=KPXd|5Sf8*HIPVNumri3&Q`5-th&;`gm`B=|1U)1Ep&WU{7(2N(FZXT8 z=NkHVYF=!Lrqy}d>1%N8>`j87xv6+ZEkUb!6LPFmbN>o)0_SI5od0C{H@~TI4*q{P zY~ue;;+YnIzr&$tC;=x%%q7zki$%exrE-Md$S@2Vo(|NwVgi#HEpM7ba#LCcl;43>^ARZt*IQ&x#S)*F3bJY-}~~5{$zTcFK2q} zX}hL*a_7xk{s{C#>D+wu?#>@%*hZa>>fHP7ySMy-p8VLhp`ZL-JrB34&@&IgJLbgK zFnlBrz?jdf{di{dc3taTk6QcK3xC_`Yvx%-|2`h_$t83ik)a%fJf3k~dU~R76`($P z9vW*Cw3qli-Oq_8}z{BZ#-{=aIMrZaMf$nGv_+$yz<=XYw(Z% zJ!_Qb+$^p+C%*X23A===@_OEfgLgO=dR%jkJPhT!{?&h~+(OTD+=vxEpAzq?V(9rS zkmt;nY^ih2^5kpnL59tXweGwAT(P#l*Ne4jY)gstOT>B{7tbEzou1OK@ALUt z!7h|JXFQ|y#cv+gH{@}RL;H~K|F#$U|3l&h<=S%K;onB*n)QU(xt?@d<0-#u&U<{! z)2PA4DbJRk?M4k^Gxn`ZGHaFKl^_J|3Z1tNM`<~&ykt3Vqw@BLokMp}B8Rb|ehVZ|v=L+a4j=iq!G&IeN9^^M=i`y%qL2Pe z48ajsaL^MMU`rawJ@>F&>xgv(-yE~H(}fOV+n>$)xGNdZ*ZQ3woWc_i0ur?1x#Yjm*Qg&ifki{k8{;P z^mA&e&iVa5uJk|m^T4Zq8Kp1!`8*!?bMU#hksswZ<{dctx#}!>+ceeyrtu^{vLWT7 z-*?d?$o<(eIu`ijn3WhG==Iy;p`H%Y>n+Rj8L|Cz%FTx5X(VsVE9`^LeAqJ9>raY? zz6CA+9vb7T^?G>DO1}MHgh!?9`lr_;r|tBmRe`2kxj2F)CKSZqKt(mR4W*n^@#}e4m~-Y!_eb)0qOB)@c8K z%n^6%Kqqv-=pAJ~Gkrt|KgU#!}|NiMCV=tJ@Pc4mYKK2k>5wr z+jjbz?myxJ8yp|!GuvfdlCyA9ANrB=#Pf9Ix;9>GoHXZFhOy%}o+FaEs1MKBe9rtF z()KZX>VbZ2;{VNEEj~LJJ#Oz^__SVdrq8wK80&9Ca2F+y+5)#N90&0S2H%B`e*66EOKpL(kHegR zBPZy^Z}P>t^90QDODv-99xnFchh@92a@|Q^yl

        sCwG2Y5vV8zH~l+v<}odMt7#y zyspnWPik)zxMC-`b)9oB{1(+1xJwC#?ZoSh;s);Jf@41H7o6?KKjy<3`RrT}Q+x!5 z9%6%^iv@;!U~3w&0XpOYLvH9!F@zUbnj;Y(^5#6W-NE=cj>!F#_PAuc?SgLW4I7`n zqEC#(5t}%iL(6p>@sT)&PSGM096sYKaRis+h)?0O;t0-h9NHy0P1}vzwJsUNXv{8b zCN5)kp&Q(oUD!y{nPy`%-eOzG>#l*9QweyUJI`N|KQ}sH3}~40|y^5NHUin7YrQl`Vs%O z)0YnH(I@tG*tIV@;){IC$nwGAEAdG3!yj1sCsHs9qO5&u%O@Z40*C zL!z$LLx=}Cg$CTZAjaWW#-YzR^cr`MLi2)f;%{{C9yD#Ii@_mX@%Lwdbsrt~#@Nk0 zHTrebdFi}+WS!Wx{z8Ab{M*kkW_h}-dWebqzT$Ts-lQwp8~LC2NDf)OnnR?Oh&!JzZ%?0VMc=?E3 zI%ae~Edc$&&q|@;11~jJY>ZLh!S8H+9Kv5Ai39mYo_+1(HT&BcxJA*d6D*Q)#ta;|JiFDrnB9=v&MmZ>J?eG zANhvawzG5O59x;TWm8=XEUVfwh!6G~M-A-CF4hx2`&=qED6Yax$$wYmo=Gf`56y>*TC_XS)-`g788wc+HI4A#8)L>1PvfBVyI`EF*1}KD@m>EW;5p631A0X_wJX`s79RNc zNKEXduSzHD6!$mi_Ndd97m7VR!+lABh{>~~I%Ca%pWmxvEObW&b4>0iIj|3`VfJA; z(cw37g3fbDyz%$!2lA_V#X1HZ`OS3jTQ~F1bmTYF&E&Vxi8bP=dy2Xqh5sYD*85KJ z+_})kd%oyHhmK?P2;R%{x>n>|x**uFZY-4W=XZ>|>Ot zD%D)Y86mvEOAb(i_Mv;}8c8H3&{e@Uf?a zj~+#w7^y*If&&J^?sFKNrit z?ZRBoeU99%9<(j&AH((X{`2NcHRe3#x+CsWT+>;W zSn9mC+%iu(bgvg(<~PlJzP&5dviVG}xW!&tJ*(CkHRBj~zB_Ii$1^o*#yI?fFZQve zhwFYUVgn6u(Htjk^aS}D^C#+Wq>fzo=-d_$F(yxp_>BzK0@XqEd+$y8+jhxZSRLTt zg-87He^+Hb<5VLH-ZvnRzKp%p9zL-Ccx0V14tt<+e4ryfna}G7b=Y?L8XT5uI{J}e zZ8sp+rPmqci7sMU&ZC#Tt*kSKG0yV`oY$G`qkUkVv9H7mno^HCn?A4A?>@1|1K)P~ zs>kd)LmpUX7+Gh~f3NE2s$>JR-b{l`tuytvbbec+78dnk-|h9qb~-1v^Pc2G#<9Mr zE~95^?1$9bREr^pp@IF>bfPN0we zW1Mmo{RcYFC+2CwgK{os`p>@PA}_~Em(hQQ{H77U+C`mk6ur@Z4)EnY(=p~44r4Iz zFLGnvRq+x7uHo|>BKE{-q0?8>b$T9Fe{=HO`+|D2>7kp__iHJf(6ZKD9O2LUEE75W z+sL^N$UicmQEX$>Fq7+C2lyiXxTkflfwf)JeCGc=f8HN~!gpwNL|m9(#KR*v=fyC_ zw$s<(P;ZR<9i)5efu`{%Y^!mjrsLjzub>46h(4sx+78Tgy^yz8sq82x)XksUF;@)LUC?dA3V_lavm_!+sf zd&Ruh^Z)$=yDSGCvTIBC$_Jk5j@6X;gv)D}q(|IpjKDMh@T1n#exH~33MPEy7d$n> z*mk`w*uzI4?!)7`LZ(xHsOzG5LnnK4zq?4jh)c~+$s>BbkLKL*RZodNo^53>Ku)34 zQTsf#0bFCvllEMdzn7`J7o8szEo&5f$QN(W>NND1J$1-rExN0``w5G-vpxrB9%zUihxv@NJnLE%%@AiENvQVB z zdQbIm;>~#T3LP~_EU+cU)L+q!{PlucE920%A>Q)UGnNuAVuOw`nX0vzd+1~yZx>y? zti99Z;A!C&^+7Im!d?RSg#ycM*b;D|V!j#2sF;PF3pyt+!~h>M%`k66JT^4VpIx>8g?A>dLmtN! zo!5&i^6z(Y#723Hd@#bZ zIcZil3qAJ%%)w8U_2s8@{+4pT!#TRBLFbv#a)?vHg-_tMS31ChpUi*F;i%~ud8Ot* z07>FqD>f1b=rc}r9W`Uz^>p4<<~K61odbTZ(ZTVkK+l(Ro-2TBJALWsDf*GUuIc!< z&^Q$H6GK?rfsw}%!hUQ!0pj3(gQI`8HstkM|6x&J3(p0ZC*+Kp{EmL_;Mgf~lkM1W zY`s`2AEQUayeKpu5{>5o=kJgorgsd`F@(9t!K1zrxx)tY7|*(-eNO%R-fP8H_EOMu z-^zWS?^_o-F5-x1i=1VD~JEa1s>%-_T0d!YYxTI_Y7e-{T7=v{|@XsoD1gqYT?gv=o#*bI<0F8=ghky zkK-eB-p7O;@EDIi`?XZ`vd6?v9S3-+=fm(S9`SoHLL4W0OU-%FA-bdJ54y6qCB9Kd zdiRJC8_5?jPz{7_#1`DD%+U~Q95z#zWBWyN&b)$#xH5X)cyB=rGk&?u+lNJ~qwe>Z z!yN3*L{oEXIop=+vB&|h+%NAIIQ5FYw$qo^(&?wqb&^x-9zPO1_}x>G&$_x_qJOwwG2PihKa_=d+n?i{ zdlC5{4yLQJQofjDLwp~Pe$SF{H3nlc9b0q~TWTc5g?o;f*sd2m@Elvi9iJp4_JRo? z@`($1A-1V5tIV<3Cc2s*=L=c#FLKDaU2ot~p>ztEz?_ZaA=k0o67i9VL#p&LJ&vS%6M&X#-+_bj&GzDYpc3)v^rSZD4n z)+xR^*CZ?KgwFU|Ces?c-r9rDwq>lw?8hUb^V&1y*;Ne5C2g-aiJ5Vj$9wM*SYuFgAT!Fa^|`*Z7;81yA!VR7>_>t#oB{x;)tI*Vy*#G z&PI7(C_I%{>jk`u$LQL_GpEo|)*d}i=eLIXyq4IKUu;RK5UQR-u|QLq~2s z5)b!E!z_#UXX*R4%f6dm{UFvdVs8I1*csN?)tQHs{N=L*Bq~IF~iI`ukE2_wpatc^}gz{vCtkx@Hf_^Ev7nyzS>4dBmsf zMDxtvyZjNT(rxG*I*zuRPxm(Ap(6)vr>~jcK)CMXW;({U)7Kyt)DHd*=}w>i*XR9# z%ew53?PP2_{hPc`yk*NDfujDAYrj2O4}6vdJ@TPxJADmuyQ(k`^FkbL6C($6QfILT z;M(}M>;L|lzk&9@J0rSSFD&P1p=W&G$Q)q(N^_vjG4BIEBEG&B;u%@=AL`5X?)@Ni z@}Q(Wb(I9@aOxx^&*qM zwFCF^KkVPr?phmA@Ki b=Q!$M(#vCBI)8;euKBHfztC9sd8z+@d0GK4 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xF014B254.cso b/src/games/endfield/deferred-lighting/0xF014B254.cso deleted file mode 100644 index a27b36850ae5ad9beba71626c917237dfe1e49e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67472 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 diff --git a/src/games/endfield/deferred-lighting/0x69D13BAF.cso b/src/games/endfield/deferred-lighting/0xFB48A847.cso similarity index 75% rename from src/games/endfield/deferred-lighting/0x69D13BAF.cso rename to src/games/endfield/deferred-lighting/0xFB48A847.cso index 87fa148ae6a98e0867a4fa9b46f87fc45538955e..9a165161bffd1fed30f1e867099248f52daddc80 100644 GIT binary patch delta 2651 zcmZWrdrXs86#u@`R>~U-b`;A);%WzoJRAt3paWr8X?ci9HYI8dD2vtM3mJ%%qM)=M zTIzr)X5z?V)ZCcG8MBe?KjJpB><{D2WV$8$V_6!rEiNP3Irn~LxHY-w`+eu0*FE=~ z^L6kG)$o@p;~P6RZO)ZHwQhqmhv!Fa8~WzYe9wCGvGU7T%qi{FE zypkjUSB@lw{V2sq;fS|KiKkYv08A4(Aj@j-L>Z7yMVXP#Mr9$DqX}E0w;**y&v3(j zD2+)|P)m$Bj~jlCF>s!n>0+OX<9Hyj^sjQb&BaS?5 zZdsaEK+u`;6=s=fM8n}lm|IcAkr7hUas^_IY1JV@5^lUYz>%93n`?vay{m$TW><9x zmmaXE1DEu{FX_Uhmsv8JWFDv&12w{2rXH?j#_&{A=&vb>^1*awgQ9F&J))qyt2-35 zE=%|$xm@@t>qE{rf_+UQM_zEO5wUw=YR!Iy7oVLR)XyF@QM!z{UY8_o4PIC@;>iJV z)m{i>3wu* zPq7{j7Urc=2!33J%CX%7cbDRm_S`UCC_+Z0%YfJ-kx@TP6@9{!MjFBTbc18P2=F5F ztWOuQxY=~^W(9(7V3D_95`qG1Tv*HzhcP!% zh|7CYcwn?gzsYkcQV6qF&S+67!8U{RCtH!J zU&2G_V|VKHqL=%S-*;MEa4$UE{u>wQg$E7$c`pCEZ)OK~WQf!`VZ1Smi#uVqu|q-j zo#H~BtZnB=$p3Ay__vh~aYEa!p#H=zQO`~&-mU0E+fD;JwEL9kF((A}m=zbMy+Jkm zUNH)saDR`1x%YlACY=i$Eh29&Xl%`bXDu0AwSR%%kNhUiJBz$@c-9&x-q?KWbrqkW zbTL##8o1qdopWfyPU0liuzl|w(ZZ85W~8N@ws7h>aSS=SlVqs#B<)_~^uft=#4k8b z?I3<-2f6I*sN&SXo^%{n$tu?P-V(Ch+(j~HyGZL!*Dj>--C0P>y7#Q4(@-(~F_a<^ zriE=Ex(Ta?+8+B)tAYpJO(<_U{fGyi1iGFxX#RZ97W4w&^^QiqWQKJ*6Gd?(!FZn- zF{tB8EF(`QT*;DJOC{ zEHi&f_Shq(l$C2VTT$4RQh%oFfhy!QINSm2A~P+puWRI+z$v0<2b})Hwa%6{DuaK(&jW3AS`OJJA+tE@U1kUT> zl<$cM0h&i3k~~;((J_~TBU8`!Y>?m=FtuXC>s>n5u8Q}9vVoum# zZp;KfU&;}C%=CVuC={NKekC1HIeLH#R6{D@e+bOVH>1Zn#}3x9VBn`0(48@Hv34~7 zr=t0I{M%9royuu4ECwn6c<_X6MNA(R>OA^k2`v=k%ViY!;4-&Y1>VayWdoF5NtO+4 I-xag`52hUy`2YX_ delta 2569 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 diff --git a/src/games/endfield/glass/0x08D1A751.cso b/src/games/endfield/glass/0x08D1A751.cso deleted file mode 100644 index a50d8f10fde064bf7fb7b3a0b2f9f366ab55ec01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53924 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 YFS;@<^`(9ZEwDYon2W{l=8R7NKmBn4Q~&?~ diff --git a/src/games/endfield/glass/0x10F48E71.cso b/src/games/endfield/glass/0x10F48E71.cso new file mode 100644 index 0000000000000000000000000000000000000000..6804aab19e7a52902741dd96ccc110e997c520ba GIT binary patch literal 57640 zcmchge~f0=S>Ny6v1fN@cfI!DIGZ6Quh(e;8z5wy+KUtK+#TCvCuy;}iI)VaB_xf3 zR!ZoS0;QrEPr{OfCUHS>NkJ7dbWszjs!XLKwPBrY6`?jr!Ij7#RfUpP7XMIHTPfm? zmh}61&iS7AdGFkJcO4K%df#*Id4B&m&pG$LcXl6s_s&CS{^{HP^S}S>@BiMvdd2OZ z`L8d&_Ip;kuKUifb=|7^@7CuDP5hcZZ+qvXKk#bx>zX^P&!6f;(^TLxK5?k)ZegM} zcm!Mn<_+@vv14VvPxy=vRX*U+==q#DQSfhJQjIyrC&U>3w=${5JY(}&V^WQI#-5j$ zXz0awMT6s9s2$OVA+|FA&I>>M#D{+J$3OhzANpYTu1DVe(BqGvf0)U){p9Y&4}I{% zyFc>&4|I>qM-K}h8=yO*j~lXSG9l)xn9zwa^J4d|AG!FWANX+h`Om-eu}9whu|Jak zHUG8yyYBBE?pFTV$*w!C>#p0|j&9-W=I79_$ltpHuXHWGg%5LO3{J7BUWe>T-|#cP z_b42@pPoV1eUCoA2In%@hYLJp+&+inqgN+5v0W9B>4_;grYDwbaQ=WA&5HFEMbvhp=H=WA@v*W_`&X8p$XcNTq)j;^&N7vT6Tu$Mtd+`@Odf)Bc>XxoOzM971;Wu!uX^hVpZ)l9a7=weaJjPG&Qw+hu zNAFk8F~&dml3;_OH)~Ccn?&3%T&L2uAuRK)cl0k=BIcI_lR}fOt>R{llF9~J@-!7YTe#6 z0kbW~yIWSRyZm+dYPDzW&f@FKsz=0^wxu$#B{})xS~$nG^3L z*F;OqFWg#u0Uy`9S7|K%>)_;hm2T}lb?&x8KZU1wc9%DcPP@XZIv;NQ>YU|$yYRIp z4_!3xzR-N*MCtL_M%CB8dO-QNDmumgh+*psID6X#ckhbyK748c)^!i;6bmV}q^}=*C=HZ>^v6p#rD9__>^!>W#tM8*-G@xfMGBF%FuN`{pB}oJ*;(SnDRDYigoyvx?&!Rd4r)NJdAIinmW8C7&S<1 zJ=P0$y`;F(6ZfkX{*BMff(JIO-BM`C*@}16c$XD-_^o}c;8VBBY2-70d)IyXYS-;O z^yDkLYvN7KBez3`e_Z^)o`;XLZi7F$hA!51P4n>Mvpd(n>0-PFtN830FMYDmGFCgX zFM9Z7S*nYTzx4f7);ILDOz8_P`r>=mKiASV)@{b^2LWzk-D({iMStqQ^xu10J$(8> ze*D#k-^xdq(UfP$vaQhcgT6-1eo&r7yesb#r)p~@iFyQF>oW3z_xeQA34UePgslKgJ(X(*l_l)dL44BA44AdAn{?2Is#3m1#EfJtI=ydY5;UJ z%jIl=&iK{xZ4Y?eY_9*xz{K7a>tA_A-ei5T+j+yhWVPI~jI1~K_szOB^akIw)Md$! z9ALflgT6{#e}NJ0!p|39)EXXg$UoLKG|0*E(A43bxxL{Z=PN$2uFP##9@#(4s~tjD z)6v^EnLgW?aJIK*#UEq(|9R%qQNthj^!vY{^FZvkj*IDk|I1%~a3#U4Ta~}9e2e(w zQ^ORmIPY-o!!I=Q@}kDzX%8s<{yZ4tVu8MkYm`_HAfz@7tyo#0Tci5BXheOg)j76vwzXc z5A8hQ`sH5W!y8qeVjKC4Z2O7*Gr>cz0_(bWX#X6;RC9wLd1pMYcja9>e*hy32E$B)zs9l+vrnMMC)ksH3O}D2?B~Fhzv&;Iu*>m*HuC~syqXUkQ`Q^t z17Eap<^tEXmwh;o$&*vnA2|-#l;Z&&b_cH-FUHgwdi#mkBz^%~kWtrD=uu^u2el)~ zNPHLb)b^2+$QJ)tQ{<)BEBr@3i5vq*`4DRgT6{_m&zkeGzcM!eUFl3CkFaISG<6w35HP>e!e=uqdpH`FuJk*k`g`OHR*U_a%YM$6~1i)knev=Z09(@h%qhGas3^#$FS4sp3Hb}sQHm;wTDK| z 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 BiWUF> diff --git a/src/games/endfield/glass/0x25F7357D.cso b/src/games/endfield/glass/0x25F7357D.cso deleted file mode 100644 index e8ad846e626bdfc9a6a2217369fa1747b2f45da9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55856 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 VEbB}6Owa&35R6(&8@ls4{l9pDmG%Gt diff --git a/src/games/endfield/glass/0x3FC1A55D.cso b/src/games/endfield/glass/0x3FC1A55D.cso deleted file mode 100644 index 474aed00961e54902b133ff9298f9757e2ea0c42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53204 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%0A`Z;6wZuzp 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 c_^9T*?8da@m+qOsVQf!hNEfK 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

        0Oh=QILWk8J0< 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/glass/0x6EC3380B.cso b/src/games/endfield/glass/0x6EC3380B.cso deleted file mode 100644 index e71d4207c8cf8b75aa2da8868f168390a56d9fac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54656 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%0D3m*IDynxSfz*hQDvsG~*F4)SL;h4 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�P&}KW|95Mn8x^$Ac3% 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/glass/0x96F91C3D.cso b/src/games/endfield/glass/0x96F91C3D.cso new file mode 100644 index 0000000000000000000000000000000000000000..49505ba37cd2304632070db80ccab8278b93bcf4 GIT binary patch literal 55884 zcmcJYe~e}4S>Ml`vG4BA>}KtWv7I3$H{&#c4Q<$2H(oaO&Y7`2al#L~n|Mi(TEGwk zt(4FuEiEYIdXg*&G{FVoLW?RC=u#z8RhdfVkHR|J%4$U_1^x(Cs|t}yR{khewN+Cp zwWQzAbKdWJpL^!q^%%&J?tRaBe*b!(_dVyH*?r_adk_D>cYNsQzx;px!R6ol$$$UI zh5!BEerKg=ns5J4O|z=;oAr4@fM3?<9q)SkcfMBRnqbHE`D1-Jpof;@^s%P74L~`7 z2VN(@jWYb?$sXP&dd`m(IhM=F=k)2G{X_KKt2sJ@)8({@H(2`~^Sr)~5Lz z$D5VEa<9&H-88eE7#6;c4#U1)|Li)l(zWFFa)9;c(DXi)>(E{JD}9#tUZrFIQ&ZTQ zzod_^p}EHO@g9$k|0TzbCr0-qJh@#Jlkwyf8uOFOi306wa`-zE>T7cFEBcuKl+KCs zcO&L|@6g%&9NP@XuJ1nH)1c3A?D09a_#8VvEuWho>19Iqp02+}?vqdI`riH;+4&mz z`5NAQjh=jsu6&Kp`5K?|HFcb?nZI%UjlDhVgKJI61w1j!^sgFR6VHq%0{Qw*Ul;#3 z%JmOSo7=A3(Z`DzJ#|O3x~*%U-$>`s5jSXV>YSKyzM*sC#W^&@%IC!CDdi9vV)Xs0 zInId>F?pYA;O4Z~?{jqjkV^fVH0pC~qv`Q$MaD`;lAGp!wTZ2QJ2RV3unqWHfo+b! z6sNVlg5Q@sj<#!>hyT_m9(wlC>u=L#9GhxmraM#U)klsEVc2r;-`}-2M*kP2>!9$i zjo1P&#{-G(LZP=#jkDdJjPG^FLUa{ACR?;8Z0lyC9mpH?r%~@Ym*Q?)){1Rs6V5RE za;mv))iA~D_@%-#xwDV;wV#>R^=DgcpyJzkE@XSB4@bvW+v%(6`=3Y2K5;BFI8#P^ z`mxWydHWH~JL5bTl1hK&<^@s{rU#z}L_9rd-ifHN4 zFDa)Hv!CdBkevD(?uI+vG0j}jX=nae8FS? zoEPvp4%o^XQf*ZnVjg^NAD`?ma&L-0;->t?SaODp^V8-y@&c|pX1rG7A2Lh5vtD^_ z1?@o}M`Vz9%dpMxQm2J4BVMbKr6l&b=owFh2^bu0A|-Mr^t<(!d~S*^dZYN1zfsn-B|}?;qjjQ z*z?7XH{RXX@N-%t(1ESS0b~9^18)E1TqkvCy4urE_P&AplH^lMmv8UK$*CTPedH?Y zY@?S8KiAJ4>qqSq>b}FZ=rOO2)IUdw6?^jI8wKY0Wc;_Oza>1V=!ZiX@_ykLUV4Mp zjmQVF>vhcYx*{08n0$eEjEgPTZBwS9*2tG}<{@4~8;oDK%i>x`m9<%7iM?O={O5m*b#yDiAa)M&8f#eZXVZK`%8O)1-Dci5 zkJ$Lu>3FWJ|BPaZz35==V*THiZBbVRN9}R2=4C$Sc;>rN_*iqmnNO#+C#u(l-66lw zD~`u47kO*H|EmvqE{bjzibmJli3M%)3!*!#k3x&Kt>s`FTLh)3J$E1p&GyrTaQD|lpgtck&| zT48KEef4zL`?1f@mBK?!AeXvj~eJvOi|5*Pa2nPMMnp<%>fukg2>h(_Xo9P5cVs4s9}oAppP z$V49p=j6(G!@*H&;8Q&wqO-l3PApZQc`cW^^Ijhtg`Yj65!=1j2VQ%Iazo5&j#TgD z&oFvo+v%&BU7UY<`r_Lu=oP=_>N8V)Q>&8yv;F=BnyY-C>0|v-o$H7_TJWq?UC|GL zY5v!Fsd$F{z!k50uFFI7x}R@f{x{kKF2OYqp}XcH$?JKasJz6>vF&lqL%!D`#^5|c z`>jcCp^rTq{^K+28G4D0d3!qD7ZzOB2@SNb(>=KDP#ulN`tryA?6F4oW{SsHth0T+ z?O*0WJbrN0l% za)L+qKlC^5)zDXB0;I-Mu?Sh&clROo6po|U9&EKs1|L*{2c^O=j;=bPfAd%mc=*k}5ZpCK1}Y7U_#hm38fuV$ui ze++A05W*jF82i#Y1!VnnF8i+CuV>kYwiBTaZ0*ku=PBE<`9lCSHzP z+v!5bXFqd>`i&#U`A|K+jLngYl9RSWoMX&*>o~*9{=+tNt(uEo?m8lV)CKdCaaE(% ztJt?ePd&j;?x+!9tX0snf8pBn#AtIskNivzjp?Za^|b~0=*slah-XDSv2Q|O+v#g? z7>~ZT)7RiI9{FvjufbuP92es7b<(SNMUTghtItgJ-LI#5hEeD1Rl&e9cR#9+j#y8F zXRw|E^Lk1Q6|d;Sz!i&nuFHk>3EF-Re))!bJTT|3%unV?JjvEdU+Cv;CxRtCo*IESWE}Ky%{|_DM(K+l zZ+$}^$%#BcJDi7>6Fi!S*gDqZliwk0o{QOz`)gho9Sh-VE=r8+y@&h%LCL{U`oHb4 zeC8Uq)BlYlHzoHm+CJ#ahb?3M|J9CAebmL;fG^fA@qx>H z!0FFtOP|D!GRJC9^xhMk?2o?W`>52H=$ZaBZKtaxeF>kb`H+$NlIB?SApC7ReGT}> z_NkV|DBFTR+m?BxGx|=Uy^}pe@E^?AAo@w$>1&|7?EuZ6A8gUYm7@|Z?_yym2>(>_SJm{T=o_C z&>m``?ez5uVvjE5W_uiG_b$`8R|1EI`t^R(^;_mi!0B(>)5YH)pzr5S)0H`NU7+I| zl7)||_d3U@edOtgxw5JgU>?CSSGMN7fh+QNHl#|i{aWw4;~6}*x1GM?pkMU|F_4X6 z12MYn{q(1%vETkF!H6Y3IEIY&f!gO988>v!-pDe(@>7d4$cJUj_r)(<^u9@~$8L(o zdG%=d;5fH@KiB=ZV1HH{E#s&*y6!!`oQZmyC7@X^wwSqZ74>PRPfS_|eWJXMu$OLD8WNsZ%X85v1W|@~Uw~)EFTxL8^Vt&fb zn8(pGmdJ(9wyM4s_7KENeW~_>EKjJar;pL>`r53Y3$GK>>#lndzav5SfsKz`c+1Fd zI?`RAlgplJH$4C7mww6b*)XT8UfZ4NFH80f#fG`(-y@i}+k%m6|Bk@BAEmD~yW%l^ zztD*^dMh-{U7iW~{t8&D4}8?AeJt|o^Sm4vaNOHFF7DX@?}X5CuGAQN6@2put=?6O zy0tFjxOVKI+bs5z3ve8)XZWsnpu%43X8eW{&kW;t2W-{vBF(Qi&Cj&=HM5WW(rX%g z&2+tgit~?9@pJjMjnVQm?7}VNXS$($*%UFzG{gy;jB|WELQDRylo&8~nctIQgW@Vo zUwhDkCsu9OG=KEsdoMn4*8@8r`ohoi8$;bANLN`KW;@xfmMBNC&b_|PuSgo zoXhb%$9~gcuVe8oIz3zBfSthg+v|gl!<&Sohq(tK&%DGa#=255X&kF~PcM3kIF=F@eQJrg* zR`2EnPoX;@KF8!}R6GU9lbPP}G?|HXzJbIq-|k1e$EjDQ}1EjmtKkv^U`4CGwh6^wcvlU3-= z7qZUEM`YbCp0?B1;IK~ro@;xc2j^>Kd!4{1Y789lXUsV26&SS%t=5TnuPS0ueB{2v z*Nnm*-dub#jB%Mi;9M8zvn}>PHpTu695H6>=Y&pFd(2B@Xb)fKUfT&! zkN#N-@!2l4>`TJ7a!nn8LpIOf7}=YchHHJ|{f5Am{z*-GF48}#&--s-?=svy|LS+o zpA(ZAb2bkLfq?w(Wldf4ixw8pJ?-+(;X8M>(zd|>_Y=ye7h z{EUtd{t>&(cUJLtT-#0rg9EwnnNIeHE?{k^ufgGUhME&^#Il@6jeDIjjB)4>ve65U zy23ug812K^6bJX1K0hKV>kRZ>XE<*=ebr;W&fF+Eu4zqxj=duKz0PF4tVLYY3mBbi z=DF)byfNP*)}QM819LgAIn+nalWk|s8N;#Ws8*woW&Ld@!LOi?WnT9#?C^Q%WAXQ6 z(AuutyM{U8xjr(6y~}+8->FA>lIzkvsop77JJfItR$xPB*)lt z!p^ir@Vm zFFl`_*jKINm3CTu$^NZ$(Nn13*y~$AH2m&`p4c<$oa3A0yWb;1iy!#yISfpnsLPO1 z`hxuxI_E0pJ#_YIOXqs0B761)0YlngB2k(7rgtg`SBS%y1|nt zY%m^w6{mRbJM2~8g|6-NweVZ&Y)3V`@V-l;yUu*=Kjv*_2q+&7^L+zxhnK&RL8t0% z?Mt$Xb3M~Y`UOabcw&zdd6k{ex1GM?H>{2`eOODeYnnfJ{Pyn0e)}KmtUuJNtMA_Dx83;PR_C~4gZG1+SDVG_zpWn9%a)o4_5?9M z|4E+*YSfpQ&$#N#5}Bp$L!WEFBXU^d z#&W`Q&#}5~#UmSIPfASc-;3zk6g8M-Z>P0QYuat#U4s)v6k4xOqK#)&5$7TcU8d*0 zA=3+0ZLkdK2pd)tpJH~T{j=%l9hTR2x>)FSP4l4Q!oGo8b-!YS51eDRS!n3n&}JOH z7?^#NU%^Lhx=)jH-I9Fx@r3K^VD@47phf21K$da-t;G3YRE!VpP4#!c5wq6{4{yY{ z^pgw|?#5_Hrcx_})dI(%jB-z+ftBJ^$7G{5%A|9Wx$`TmR6 z3(uzLvtGlpUSQN8daVN(IvCsTunvKbVGFXqSp2hEgm zoRbaVKeCAv_A{b``fzOa%kL}uAD#1F)qV=OZ%==pPp)JBYeW{mi_&MfXQZdPHw}4M zM;yOpJlKl-ymnC+*e+Y+-UQv$C@}XTMtJNG^)cqpizWYKwviwBmf4o|Q4R_q#+ z>p6K8x%e?AS9|9Z8^W<3pqsJu`Pf^bTekDO>iDICZ#x0|{VXSOC|@f_r8`@4fo$v| zx7I0K?0fLNhc*087B%++bVXl%HgDO+ zX@B%`dwAYOk9o=5uJ`=2-u}n5p-`^Ze^1td*KeoMUv1OGaLo;LQWsYW%s#N+f%mGO zZ8BP)Vjp`UVEaYiqrJYE>);K4L~!eJZA#Z6x_!}IQ(p?1`bLJ1@Gs;QnB~4*^vYjd z7upW;#e+Tqul$Soh@aE|FzSyn%P@W02~m%J&9V&7lPtqH%l9~}6XNH-vuQhKeZJly ze|F0nWPU~+)pq&?dhr2VmS@=JY%WiGnpo4aymu#g=AjlpEP0}fdk*Xd_SLTnQ1(aP zCi_hP5y@p9+ZO2ae%*Gu#ywY{)7+lGOF#Bp>m(ca)&Ra+;Clo3UJs90B1b;QzAoD+ zdEqxhO8*HEs$;Z$J=EJsd#H8)?H8_~V#9VYCgI?!6Qy)<~1xK&hEV8JH$VK9V z9)3n>vu^8YJ0S-9M(c*B>MV4s;jrtNaLaU?&m*+vvppW6as2{&vdj_DkIoHZfuA2y z{gG$S5$Ly5Z0(=#E9lp$Kc2cFUgXe|7_aHMJ$AlRbZw`T`N2A|vnze(xmIdg`tn{p zm6=xjTE&5!V1G0J{qpDVoWU|N3vakZJ>f9O1XARpK!JLc~-;(or0 zc87HceC(!VgXjJOTe$yV)DbxJa{qy>Nx6p`-Wx#AUJ^MvYOisu+Ya#f{Rh0Jo6P3( zVW{sXzgeKkD+f8b+Z z&HGWl|8QR$^3a1EzhykwN-epEF;WBAE?XDwKY*bNTNt6WKh*x1Kiq$e`2%mw&k}#K ze&&ev+g9ut`plYw&)BofXXI{);!e@vhvmX+{{)NQ!cFIWfqYr{)8fYNX*P=;%y;a$ zm29E&o-q0qJm%d_`NEIY}m7 z_3wsb53;;Ig43~Z9|2zXLRIfy(=|FjE#AoI$EP9Vdj~zjZsN zYvv|$@t-5hre`3>y0K%KY-;l5Wb65Vox@jU4|aR>b9T=eMjeqy_AAO`jW=;(Ka1U* z>xlWEd584sr&U(l!QyqZAIUp<{CDYDmT`(r=6a4mez z2{Ngt`}CoPsJGxvaO<+%4aw8`Juz*TfiCxekW=KXbW+eiI|*M$aPfWtdlu?Tbr5!K z>D+oP<7|l+GJx^7A@myfJpaMzx~?yt_a$fXY=rlN3S{4(aE@p3=lmnugL$4CN6lT4M0l}dRikCni;Odj{ekU}Pw|_M zecBbTeWGWX&b+s>`<2?p8f4pY{KA$JN7)xNs-y5p+mi56L-o-%kq_)NEu&)z&UqNd zGUFUec(YAh-!bj)fq9qB@nB@0f^&@>_!O){^e*ih#pIm13^Ji3<{m&ffg z|EMMV#aL+SoE2TIYw($Vr4zH}nQaG$%^vYt$Dy7D-n_PP*sGu!;!MM69QBp$0;eN% z(rbhZUxMeJ^y;BhbY)G=KAbSL^#xMb{ykKlsG& zUUZMjH1Pk}Z-1EkxUhB17Gf*>yl0em`S7{z^tG@)MSq#kMdg8c(01x2Cm(*uAAurA z$Z#Bpwd3Fz=Nu6S=GjK#rM97AM3(cB=K`_fn)?*jHn3H}jKhW-f>G7iCi7e&7dpYB zrm>;Ym3s~2Ow0aYNP}I5UDo{wb-@0lpGET?iao&2lu@U(zuIPU#`}Nv2m65Oi0AlR zFN=e5jw3b`n>5GQj5Dn5M9?&krVlwgeN#5RTELgIufw0V(^vC%RV(vP51Z*x{`@oC z>xKRzi@hGQ*z0i=zee|mz7Jc*^KvmbkWSZ$=fqf@n1;E5OyYyz#E07Um~lC-&?;W1 z;4Ade3pj@kxoxMf!8{_riDyBlh!=3SV?zkpacHfa%;sz0S>ZQi%Ns@Ox?xSn4nFKB z*js>?tf&XeXKXut&3}WYH^hERYt%AYNa~?Jw1n=*A88tY=CQ^n-tXrAoO=}NL-DL@ zuH$c<>vk*-{#}Ti@;qiseo|?U!#mTzPyVHX^F8%j|6c#^U%NKhuOX-W`{dC-xmN5V zzjL|q{%ZIP%=Y@7D_z%muwT&S8p?c%NBl-dZ2)gOeGLxwq~z`?Q4p_d>+^S=3h6@{ z`82zVgXu2M`&``@(~FS7eGGlM_qm5j$3jm9S7N!lni%L~8Z;abniLq2;W zbnM|E{-f^Ipko2(pV!_4ht_k>?Rw`(nPi{HFS19HW183EPt_ zuJvwkwGlng`#z9&U52`dFLaEWAMra$#9T0r-u_sJ<2_7ZqL27NXT0jC-aBphx>5r#SsoiRVPUgBZ1)zT)uu zlwn?<4nK=vZFsKqon>o{;vW57bCdZUzS1k1!}#BJ`Wp0iY9ROb++*oY)IDp5bL)O} z*8sLBI?eZ5Kcb8Nf45+5r?0^Q-mz&rBcrzB;#;Ir_n$dcFUq=aP!wDPb% zjLB@fIX!$FA5mK9A^3yujD}$^Fh;|$2N)x;=fxZPbWg%a-Ch!moKA{7V4pTj&xYYu zZNxky{`hG7%1g90Nz=(pUvb)MzI2R*hyhi%A!9$nV& z5t{q8N8Bnnhz7~{>O7_FRD zIBaJRZ+3K#Q2i%9)Vb*5nNao-dY(@{m~f8gnPNZl*XOPSYWjlk^fUF2_!~(2;a=eZ zr+n95LmxUwuw{LS{UrWC8~IOu*oNN67wX?wK}YV*qrF@8J=-C&ocncRNxegZ4Asol z&uMfYGOs}ETZLBnh`hl!rbpoDp&?JS$b;7T%J|KMw+*WCI#&%VIlZ8mMO>H*xxQ^@ zq2q7I*7lNb&|8+qupj%B!>WrugPk59Df1mV^HQHzid@zlaHiL3^!3umLPzQCH5ZCq z)ZtKX;fWq$z1e2#rLUkD9D3msEaJ_2KU}kzpW=;sIeLt3)idU5lVhj)iFJdz6kXU4 zPuuBhaQ|%G)Ex29dLFW0j$ZiVUV)XB7;E@Oea^j!~J=oS*i+_jNkAz7n^cp`ErDKGi@x>&|hof0i>wW7+*U z+mYST!_nV%`dYaE=>MK7d@puV+r-MggVVe}u`QpOm&_A#$@36oGQvY$(DyjcHHfXQ zH=*itr80+3jq!LsXE}zQSFFtgEc9u_HpQdbAY9Bf@TPN2?jMm+;)aQ}cVRnn%||S~ z7POrZBe4wnBEz{OUY4QL=qsgOYtP)A`w)3Y4*D&_^$mP12KI3bXFoP%hVaq1s4@2& z{a#-C7IN+t&b5g?=uFRe?iMi;x~@~wTm7^DZyE3ZHLkWb=N=d~ssF@Y(XkoE!n~WJ z2d5AJ22VUI;Tk`Pr^c|0ex@VVVDRQsKU>(7A(uUe=5oxXOgpqQ=oBB;^-O2k%q8Q_ z6u%rB(~RZNxVI?==Ep8->-B?tux9l#H6~l2&o;6DvRuvO*ozTo_FGwp<*|p7ZBakO zj%Tfs-|T;6%72%P9W{oUi?N15XZ$qbC$c4Yl@n;j==J=e%Dbj_k21Yb)eiES_1u^E z*f)Q=_|5wv&>^enJY^j3r4Spv<9Qpt5G(xFJ1q;>%pvbbiIwSyH}O%u)%~CAEc&JX zRuH*UeVlh_iF4RqYBJLj&rG{_3tD1jTJ_=+&|=@3=HN3L(V<+|bHy_D)XErUb6IniSb(?w z$7R!jVDuxykWUSf8{?=iXpB>CB4*_Cs&FwXFQz+Rat9nA7|%TWg~rd)h?jh-GEAc} za)*tYi;@2-c?`QY^Lc3%{%$_B>2gR?oXFZ;+dS9DN& zmW7YGw!mK)$iPR_oRRJLz2M`t@8#GieB=xo`)OYki`paTAJD&Ck5C_3c`Uulwk7@a zmM_W|#=G@zqo|KG{tc<<8eP}12OeZ<&egtb9%8~CC--vK4}8=Gc<8CEH+)xn#Xd8F)+rpBG0s1$7)|O4L&>}TKMtrp2U}F=q0M>73M7UguSf6 z@-uqqM9*({9z7L+m?6itd0wXM35HGRYnor_Hb>|sJ8HGaj{79`6Y#mtZnZx^&rRu} zkFb9VIr_HyugTwTuL$6_N2Qj}l`NMVds%`njTE1WQ;Q0NXl&_b{ zzaNlc_+I%Om${sX-GKhoje@7AqtAca^Q?5WodEMgHqQUHCukKzM(JJ8dV$Hl_{{@3 zFO|RT0j?wBJ=F<++XJla^cBy5;&-+hO0YKBUt+ z%D(vb6o?z^vFUWF_{T>>#H_~GHvGjNUSmGA0pE!cviHlL!trNx+;p1hs=UEms4=$; z=X$8u_SvVY6to>aFXra0Wgm(kYqAr$!04%lA;Wa!8aiTcI>U&Yj;PhCPF~V)Lf{yY zWf|z8w;P5o!?G@PK!*(L0!AOQt}EsIX}!mS3`S_&qk!>u(qV^w%bMz1NAxIg^d82x z(^oTnL0{LK=7k-u6vN}l&vcX7d@frDvaJ_+#kSA^4j5zG>1#yC^To&g5-`X_2laMS=fw7<(v$o*PsrnMgrI+W+KcXq{$9aUpTWm(@BA*o zUUXFh@us(D9&*M#2=fnJ%Xk#SL-#G@6n|vv!k*o^#TM3Lmvz6`Te5@w+MRzNE;X6tUiO-n5V{vfajw09fGR(~~xkrufvYgA^yoN{5r~cbc zUyFN_c<#9^zhkeIM(R%aSg3vWmMfjUbZ}pFMfB{G=no#*4}se#ID7|3Y#B2S`!jAu zd|L$u4x7-YEpYrBPR8{%%sy<{S*Bsu=UT_EvD$fYq}Hv6`3K)oa!hWi9qY$_<{!0g zdElmkfuq)Q{`UmKU+U_pI!Q#7yZE;Y zP7RFH#BX#JhaTuHN3vsYK@HeG?!SnyuA^SD6+fI$==@tEeAEFkg~zepQQ+o@Zu5`&+@#$w7>CY%fBTkk_6-^6 z$ujRKaW;$^u|DHUO*FS9oSu!1~V1>hn(XIv(s1u)}i?-eJ8OXZap&e~z(n*pFSv60ELEmT%jzKhH60*z>~Am(XJ$ z?VCq(XxygsIbXyk^PLgyUct;aW*<4W4E*5Q@y#(Y&a{4qBhw&%ujsV@*k&GNaE<(} za(-q`A2`z@-!z6f_Q)98lVw`Z1>3B4Kh{x$|$zyHfc>^-qPG9x!u{bwu{=Pe~vEMA%*CC7FEXe2BZx;3y zKiEImuc5E78#mTF;HQ4!!&mg;E6>s$58sCy=W#6t=L#&N6jAs+{B*k>)t?GTox1E54Lo!yN(>+kUOMqUVf9@4*sJHM$-JrMnSZual z_CCx>+Y6sy@jEy$?hS_fDe=bKVjpPV@*H&RR6l>}cP1^HvF-FVf3Ca3h3A#<@%!+Y zt-!dy-YY(zDI>Wjj?+>X%*Bk;WxO*9A2?#ns6AM$<@EScKcn{%)@iwn#00+KKGXYq zMz5dH4e434@HxlD^m)BSK6XQb3*NTgpJX_0wohu8^q4+gp7(7h%0awrkLv~>&PX@$vTmKm-nI1B+HbIf zSd%yFfH&fxG56ve1KaNrocV2!aT_v2_=P!7pUA(J!-G!OH}M$#=zqi$}!H-F3c zJ!HaIrj zOXRXno}bS9M%6W_^`I;9$udpqY3Fc&R@{Q~Fk`uB3qvpnv%T|dN*^+xjR`-HNi_FvWU==+A&!5SI7WsMx8=h?UE zuj$!hrWfkazR>SA-k11z9&$svs2_g2!ER(RN@x7;4DOnqrN&s^H?-e=-_Y00pVwZ{gik)ybH#G$daC!m zf}a}OPdt9#5V_J3>vgU}<*Lf3&aoF-a_AmN4LPUGO=v<-se}FUzG2aEsCM0_{k|b| zz*N66QX`gcy-yD2fO(+3l?~XX`?rM485Lud^v3_vAX8Gw|Jbaf=RYs*Lxx;78 zi|`qHjmHl6GvGSvIt&h&{XIYJ*C6UX*pGt0}l%RPer0lnWh+$=T>dj#vw@ZKHS{60dD zdAauup|xz{&oweN=jvKlVjcMbPcJtu_2WGN@xfo$&zlmi(sv@z@!$v!8u+vPd|#pa z!g^nU&G<);)Uf`0g_r-k34s2+^{d3$>ngILr(Z$K`L)yY98L89T0A3I*e~01KA}zg zYu43vLJW?HdOI@I2kO2*?=6YZox&3%i=xK!+E1@pUx9)YQE#9>(8Ls{MfWiF!I zaRf(w*>=SxY_k5Z3O8mOvJQ%!XEY*{5qqsqcAq3h5wEVd8=tUoEKk<$dPnyd9l9+S zUDnNLf3khRvR$?}(*UDx*NQy*pmnU~*)V)~LbUL26+ZK48hQ!yggNVaQ0>j+XYBhX zs#X7k2Nv;EZ6%b=e%#2=uh1! z_|((udxC8zLGxorr}f_wkN&TCF-q^c^=h9KFxgk-sNcuB0BF{oZcuD%JD~^1{h}il&^Z=u zHz3mG`67?s_lYq!w4H#1ciI$_Do=ar@E_Sa4;{R32(OMz7r3?q>;pd{9^uF91ZMq2 zR@)uci+#i<;-p}-~$gnP8^m*&LQqFnb4;hTm_%{e(^p~(hdk)tbeBikM zXKXutjl2suq?^pa8-w^wmljv|v zu%Dd3OTFFH`BdjGm7X+w-w^t@r}qtsKWi2B1mE!epbLW2KQqssV64^5zgzLB4(r-Y z-rymp_#<2E{>3$gE^IMvoa}gMDc;A)eB5^)lf6?F7xAZtAJErxZ{sN@tlen{+{$>&qVuuoA4B zDLM}4Fw5sR2#$$*6STq|zan~`qY`&wso%5%$GZ2YiH&73wq5_O9q-%m5y(C-=!KTO z9X7G1GSA5|2mbI3toP@!J^abI^+E%!ViNC@`TfHF*;)VZ#@cuIv(L5{9%5Q^QDVft z)^?E>=&i@R)B*CTE#lZ)p7Ls0bN=`(L*(Hf^3@+g&pXq(e(UC)o&|peidg7g@7J$md1BYeVz%^9aSRNKM3He4_K zd&}7Oj-Ef}HL}PvW83L>M%m(zK&-RzZyIJg)kHjx125jtc^l_NKKUXp2eNfl=dK6z z=5xnab2Xm(Bg3}pxoWjl;J}A0%PhXa!`wy}=e^8W$AkY}g8AKpz!%z+g_d>CHnE?( zPd`Htx0rY8NtDF5^Q5Behzym7CC9`b|?dL1J*$_Nd0n{gL( zoq3?4-k>qg{FY}q^abOr(>&w}U8|y5$WzG~a2=tGbNH!`%`(?OezQJ`Z>&4etaSQn zX6Mk!wdO|bCpd3Aebv2l|4hSlk{f#x=nOkkWKgTN(>UjZ{Gns7(6*fb10DEV=0xm4 zh^1v)p6W4VZ*Nk157gCcgZS|M$1!|NXf4%GtX2bZw2vk{$7TNyMu7uYA_Hk{4otkC|qe zw;?{qHQ^TGn&2VZaYg4?TsKQxSB1}U1x{Rn>v+X+6@T#Nd6Z?2#dWLjFn4lXElV+r z^%t8AgO(UdPwih93XG9FnRa{Htlua&e#4+weC4P5y8BL@Uptteql;Lg%X8Ush*QGV zIGr2e!B6JD=3(SJ%X4pg9FoLq`>i+Q?5}aR(s^Hr39-a>;9FBk~W*xnY{C(Tm_wjwQKl}X}>;4zU5=cJLqHeSH(Hy+4ur zL%7W%mpPtv)L1az5Sm zwc-(bc+S1|rl-`LD_4bX;a(CLG*L&TX0g#eP@C9DY@ykZIU1tRazd@C{v(!BxbDM*`srYN&tt0j5@FUxxx>$Rv*vQ}N<7eCH zD-QI8u2>V3oSIX7NbulyuR;G=;SVIAIZ|?XPO*qR47$A5k^|to8iDHwKHwJ$obw{1 z?qLc(@=A>1r4F{{aj!Dr9qwUFCmmrUW3k0{)csJ7vtn4|?0t;=w5(w+hxp!?Ke^!; z5F_!1T+WH@kjJt0J_dY>ON}ixMPb$)sNVZ&;#x3@+6n5PP??qfbV4P5MFO0VP` zUBoJSV;PZ$ZpXjiA|9O6*Y0Cd<1p>vek{V_w^jZ_w+ga_y6Gxvv^#o#LxH zoj2lPJnPb)bO7TS261#B^txocZ5o@u_T!TH6`Od^8kw1g9*q2J+Mk5JgWh*|l)H8G zaKOWXFEOTh<8^6ByV3<|$VG;1Ia^=YGy&MdE|H4 zhd2CnfP3`seDERhuYalV=^e?) zGtW%@49u`^7fiG#kwY!0ULzlzFMFnj-UHENFMi`AdjIq3ckJp}Y&-)6X55e-K74|P zy;PP34q5!a651z^_B3d=r_I{XKb`~QAGTlCo|J=pn9i`a1HKYH=K7azFm zft?S1;pZO`h~v0rnO8Mbb0}Taf8PuJkeCu}#7l8Hj{hfwvp)Ab=!xS~!gJ`~?2Px( z+K#I@*yrnBEdEYyVmj@CVsBF5wQkMHE-iS4&U2OUxVYS>@eL8 zokOShdWSYuF8xMxe7n%?r`T{m2=AL!vkC8b92?q;-_R?jr-!(<6QVze1)rwv^wl2~ zrptBfdhYh#XGq#kU-RF`;(|J{9{K`@ZD4=Np&q@qJ?-t1ynwYG13fzWG#7B!-@)iL zLdRU?V6HC1ouAHere_{E&2(4!tb9GJ|66&mis!MtX>b1`-)zVI z`x~L_pdRnv;8jbv9~3!-HtsF($8dT!2l#X6&h5O?HNr7ujmRSaMa2W*2|h5TEEbj zWj6Zv@rquaDaF0on+7(yA8$x6IP()zuCe!u&Z!s2hMEOOocWNWo6|lAJTrh+KX$JC Ee~oU5s{jB1 literal 0 HcmV?d00001 diff --git a/src/games/endfield/glass/0xC7F04612.cso b/src/games/endfield/glass/0xC7F04612.cso new file mode 100644 index 0000000000000000000000000000000000000000..e400dcb7e8c6e2da574641129b31e5977191712c GIT binary patch literal 54168 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/glass/0xE32D090A.cso b/src/games/endfield/glass/0xE32D090A.cso deleted file mode 100644 index 23b0f3d14923403a1db6474c560500b3bf5b62c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55376 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

        PJ$7z2q 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 I%{dMKAI>6{iU0rr diff --git a/src/games/endfield/glass/0xE82F718F.cso b/src/games/endfield/glass/0xE82F718F.cso new file mode 100644 index 0000000000000000000000000000000000000000..9329604e75acd9dd0bd969573065ea018400a59b GIT binary patch literal 58188 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 S4>`IqD>>Lv&x7`y;Qt4T%j{nO literal 0 HcmV?d00001 diff --git a/src/games/endfield/glass/0xF52EED7A.cso b/src/games/endfield/glass/0xF52EED7A.cso deleted file mode 100644 index 96813cb4d0834e4e71d6bd3c42aedb0cfd588d6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53252 zcmchge~e{kdEd{RwXb()ZLd9my-aAhjA>LRNW^Q`HUr){J6;b4OSQG&E##jNQ`{z{ zKn4RXZR+tDHb4@vQpF7kO^Kn~6e=}!{%Be$S+lMDPiaMvV%kPkBv-Qdr&YC0XeuRf zzn|y4-}gTE%(=7cP)sOzdHXxx_E%n`aapj#`uwpz9MD6{aqJrL0w@P?E{`4S z;YI;(f$Ic%&N+bdxu(eBoP+TyeJqD_4&YboV>ss=z$f}x4(A-eCAz{n=fEy}TGGjN z#mFNC9;0CIJo{r0e&{1V@#s%{=!4C>?tS+?4?J+@G{CoiWP9gBAAEHC$KUt<<^jd% zwD|A`d3WjK1Kk`7MZk-iu!(cv68Ekj-}&qBf3*49*WP*Gz3+bSe^mSh|E1fS<|hv~ zOMm%z)2!>dX?8bbnESeN820u0cP}6-T}y5+r_TxJ&^SkNEm-BR^jY3}l&XxAJPxsu4t>)4D^xpx4;mjKjX$3l1F{ z$)}Hh6@GMo z_w!SIH_gA+C(*_ng!a7f_z&&bt8a+WbOKd6!`e>JreVFTpX`I_n1jg0ABGe15gjjT zo`>DVXMvWD+b%S1Cuq~K2J?x7cn|5eOFrm@^fmNx{)UoQ>Sej~&ZVy3UkP*_Ij1gH zcc&BL2_1P4`VpAW%jSU&Ud@4hyy{O;f8b3=Y~ZE-4BIGn)1S2Mi5fJX5nFZO`vTnV zCbhdIxx^H?@U52XoR48mvDO__Q{bIL*Lbce*3v7jsi0L&W20s2^n0!;)^8nAQ`oks zrgELNod_4yRHk!Hv4?O?asG~``P{{(*}dnXS2a6|^Bm9L?Q4Sl7``qmzZ@Tk?^*u) zyzXv-r&igw5M$TJa*^wNif;FmXiQ69nFG`~y^NgOMr2VFD+3v<3D_z<$KcI&x1A78 z!#AHe+K!=L&pG3;-pqTx%s2GDIn{WnUFKG`o1Smowwt+bdH6$3LPPwhFMMWxK+k+S zS8$omGTaY|hkHoQ*Cp|y!?^9g-}iI!h3rATqK~r2-2TD7ha>j z>z=)&b85ZtM~*xn17=+5kLVx6pD%diX)V2aMS6&}YX}&11B|-CKOM1_0Fw<-JHRK` z_H?!vnC*?2$)>^+a;T#kGvOk3#ctb5U&qh9UfnF1bpRi(SK!Sfy1IT&KGo;@Rl*N@ z3vw)z+VFZ6w5hj1rz7&=e#6*y`bujR=k_7fdA+(R$miFqpi_()b<{d_J+&R+D_^f( zDPqrC&hhU=k?)#zeqJHG^}J)ygR))Q>OqG@OHGs0T+`%}`hlKWVWclGN_X^yEUWE= zxPrc*wIbFhYS=b<^tuMl>z->@pjZV40M{JI}2ILSZqOtEWH#_i)p{^4FPG`1btk=K>pmhD6R^;!9RqS#5i=rO|>Vkb4q zaYi4>jXD7i4`bWu>k8`RzNY#4i)x;%oh#zyKt_z}#pw65jJ^iKp17A}jZhqF?0j#R z?mjt{2>+k|)NHLUG_mJoE^93f|5+2kttVO6PiK2X&u#A?M7m78 z(W5=*oDAE;vkhdJZne-`7WMA^iRBu{x(*IMJts}$xorL+4Qq<_adn<~elg#OJN0P2 zwh6yEh!;6E-f(cX&325@5yy4MMI$lRQT3VEa+$|E!dGa;8?nR=(Z+rHA{pKXt%z1} z-lxNP0KX_!MRr{y?$G@vu(s3JV6P^BuVZeLbFU%PF7pjo+v%(BV>lnz>o}_3YW}y~ zM^y9Zf0L$xbCBbZbC+XD+?luf#NGuN#_P1|F|5?kg`7jji}^dCi+iF)^(gY#XOm0U zrgC%c6xaH=KEdBL?QP*49Uh_4QET3EWK*46(8}J>1wHn1{4ITKdzQx>_*Tiy^r?2|S3s@%HYndzLXspW5f z`EJi4dYWo7`l)kDU!&i0{FFYjIo5M*L^gHo{lg#WoW63Y_+a=S3O*4mXf@}GfBWdZ zD>~NhOeav)$DRUS%l+RvSDnW5)J7d0a{h#zP?s));N99?nx`G}#>M^k

        0Oh$29_1 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 BHJtze literal 0 HcmV?d00001 diff --git a/src/games/endfield/waterfalls/0x4DEFF5F5.cso b/src/games/endfield/waterfalls/0x4DEFF5F5.cso new file mode 100644 index 0000000000000000000000000000000000000000..d5d8fcf228b24aead24196bc02155fc988f2fe11 GIT binary patch literal 54616 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�ckF(S)73SQn_3On>X7`t>tj{-(NV(bTfb@QwGy3%!5$v6G~81gfn){E8? ztYa=(>qlO-Ep&hb#@G+~n$YnT>6i<%t2iK4>^N}8oUvY zV%XMh=hwNHt!?ec{#<~~P1rJJ6EP*n;C7{pn!cz!xF(*g_FmMpjchOHQ#G+Gy18(x z?1gVtO=NqW!*L9!DglZ+e}<%nU=)}&b1zWWU8O6sC9UW$F0sk^tsmI#eU-D{sHWaVAMJ|YCY$l zIhtdCEA?t09V_dU=ycoxWYwCwTE_Bslw;Y}fxTm#ZDW5p#&O>{_W1$rt?`-rdTeI2{3&{& z&*h(1BgRJ!i8%<7%w8kz<>XV_oo=W<#g<*M6SiI$z^i z27JsXJ^yR=^1CeWcQQw*LFK016GBf;sf+RN0=C(9FxEV66Dwp=1K50+ru>b9ai(|d zBs=yN=(c^_HzG%NM!jMyejHT!*zeyG;iC>VE6%a>DEW69H|5(DOuV5N8}67dWD_G` zN%qpcGIl20!^Rwc?8aV?{Pu6#EE8Y$q=(wcvf#@(#}3zmbB+w2osn1Ma*oaLasH717kt)Zzsr5;jh^$Ddw0irtLpNI zjmBBNN86ucZ5;KrQ~l0)KP@}Y%}XDI?`)+ZZc~33Sp5orvmVD8{|}PQtOK@Paf-Ox zPRB5ht_8ztd?VhO4?9i6D7~%6%IC0;ce2rm4C25w_7MkoEWX!H zJ|prslTKoU{7j2{(^#i{v#f0USSB>K-TVSg*1rEX(fUfBx~1QUjk7F9;*)JMZmZ%} z&$aGR*?a1vm2Rd!g1!BquQ>cSh#9u8?IfS&zbC{l?06yl-mwAE)64J1+fHb))3M7w za8ArJZd_~7kSp$E$1;IAE>nEShDOJsJeW^1+j;>k@;I?xxZi^}UCmpp|KofW+@~IK zUD;P^Z|q0LxvqfOMr2L>O&v5_vf01?ab5K8$NNVI!U4&eUazs!IAlPdam`NIfWLn4QS)owik`tJ)69ZSSMHR;A{c@zlas1#pkX2IijewyWCS-dC-*wtS3y z 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/waterfalls/0x8C038DD0.cso b/src/games/endfield/waterfalls/0x8C038DD0.cso deleted file mode 100644 index 249b8a013a09932c39fecaf722e26f32d0f7d4a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53632 zcmcJYe~@O`S=Vph*}OB;v%9lt!e%lcyy-zo8mhuh;_lMPPT%R>?QBSu8#mc8;SULm ziK37|6G5Yx-rg`KL6R*jR{0^qCJvhXAug7RrOalu@{d?Rs@$NcRK=<-{?W2Vh)^Z0 z-_LW-_q@-0`@S=?QBKu+&%NjQ{o_36+#fyj&^vb@{MA4BS0DV-zkm6kedK$FyZ`Ke z{ih#X>$>jX*SqeR`ft+jZ5sG#{oeBSH~*=xR==*X6Z-w0el+mGrJX+Bb+<848{=G_ zK3&EQV!UTuC*X5VW1Qdd%7=3r{cZZ059c(-U!kAJIj1o`)6aZ3r!g+pZJcu&dSTO= zPVT5mo~+~1YwYcpzWr_Q|Nig#z<0g>ecd}Ae&>UaKKj^048G<2_x9iaz7Onu$9KM` zdsIGpNOaf(zx(xbLpDvWi18{WbmE+Gv3tjN?Em@qe4zWxXWstE!|(jhzbgN0{C~f` z>;B@2ZtYK=>AEdlD?&TbEgf!s4E>7ygRAgL*Wz3Fl$dZ1j$;(p8f)|oKl6K+!nODD zIcSk5?>bSg!TDVoYB(~!Mn7NUBYwsw&NDgE*TnbViOAQ)^=I`n{T({TkKYEHci*M6 z#W}J)j@)lMQE-swapd_NS$>*&d7a}s#=*mH#=&Pk$6v<5S3bv2PbiKXqQytwsXXHx|L}W{^5FWs z$oDz2|ANx_kE_@GJaN7&@IBGdUi{cR`p0zqYLyq@&=`JRDR!;W%x)_*{UC%z8+1DK z99xTdc2)9DUKcGkf9dpH2Nx^cbLBO<7XNkQcwE!IyRu&OytB|x;hhEV>@uE)PBea% z)_lK8K*j#}e${EOZ@Pt!_-D7;dbZ+h9n3{l=07?Z?r~u2#;vqdc=%vzgr}h<4;amS z$&Gte4veoWd~-C8{bh{5qgTGR&}8`DoyCvPs~tD4#)HN@$w6Su?@Q7TewTi@$YIR$fOBY&Z8?m=ui}M1 zfmi8~{iRRLb?mxd(l6o090d1@;MfoDrB~b)z40{E@I2NJ8tppP%=XJR7>_v!U+kef zFB_5ZqUL$%U2WFTx?y`2ryn%hb*#huqT%l`-d>FdwUD}oJkGzN#+7_oueEb+D0?go z-9gOB%d-db8U6&1xCj2kn853%0S{Wufg`l4PmzDXjfZcbCI39OUG@HB8q?M%a?o&k zbXCLl6|jRHa(7pJ@hNL+|LAtP;(cq^ef(P29X$B>S9aGm=D5If z?{AcxXP*Jhx^$*}w|mdS z=3>d^gB`}02aK(&C)d=X_Aw?o2NxO8Z+3gZv%ZYECSn^pRhqz;K1b>+IM7)a&d0hi zhA#M8t<_=c!Z^BsXI)}UbAdUs;rmyKDA!Z?vBu#~;}TmM`xWBF zzWrj&O~wt!=FN)B+yeJ*{Va=f)r8|?zSLWqYHQT^sFUWS{hMS(lg+Vr;zBapzD|3g zb@Q|>)(Je*OTQ-DGL0v_PBh&uJJ}!}uQ1%SQlr_cu_k9^Z>+cEK|km)swI0##!`F| zzwArvi!JA+XUyNKFF9G~*hyeC?nl<>D~ukRah-$?7>znfeITca;ZmKPFY=nagHG#A z*bXlFMD9?dh$Ha;$7?mYlV$G-bKmbU#t^MUx%R_`lV50>^M;RF2U`uNsbs~N)&^xk*pG4Ox<$6x$9{MO=D<om1N6j=UN%JSK&EPHjNwBXz9-Mo1GvY5VGHz4-w8Zoimx)BhMGLnnlE{) z7JdtPwI-v7aAW;pTl>~Ud^$#zx1rF(cVhl3O(|cSQ=lkxqOjp{m5VB0>6J=bm81%^w^ATpRc~0 zoh)nG?4u>dUn#hBjrxdfmyZ>nlhd)TD#vRq+Z?nmva8J<c@p!3E2ga*B`Pr>22pYyfw=yr_DnzLE;+|oJ$JvclE!@ta_h+&1X zE;66Sbc|)XYn5)MwHTP`bb7)(^$aIsAN(u6d=c}V`p(=1)(<+A=NMPxOb6{PX7H(a zQHwZd&ymIhu6wt59ttnTq{)(@a85YqsOPlr(+~RVRY&4Vee-?R@9LboWw^(GN8>Zm1g`eY)xINmUlJbs zjEtwDCXYRL#QfuP4eOnse#+C>J1pX|cveBpC)c5o-Z9sMUU8)F2OY|~pxlZ*ZOq60 zN`o%p|BA1DK)lyrjQ1J~9`K1q40ie<&V7h6{N{OarQSQtK0FVc$8_|2ly#kJZiHOw z;jVN+9yNpZ4*giikxeb2F=jtN-w!&p^{)5>8u+jmvVESH>dV@{0fX%3I7i8;c@xNxsJqpac{)+Z|G;(3k=8~jb^RMiunm2)tI=yq<%1OpH$Dd zYGgatWvgGpiCR-~_P75H>zVU-8P+`@x_E~Yeog!e?c0L3`MvtBz`6&d*Ac$OCg*-Xh-%Sdj^JC%82cdmZdv}p4*oH|{BzoQ<$Ugk5X8~HuIFq~ zH<2H;4cb#WZ*$^s4ygNreiv24GaNk0JC)_dJW4d;6LA6e5j{)WT`SMZpBu?}=KD+j z`rhC9BeEsmN{5)o1s?Y;CpN^3=f9O^$MqVW(QmWDHQsUrnDNcaxs46V1JAeMt-Vs@ zys61>x!&km3ps<$%75#F&N27lLtK&N_#%^;Q)E@C##Y&#d){qyL&FTJ$p#JY|hmS-D*seUZk$XK?KYvyayL-!WMx*v3S8G0Ze zzF80Z)iCmm{R7t)7@S(z(}SO?>2P-?gP zoqpgn_QCFXzZrWBa?1JX?-6o62To0(m%OOwt7wE5eg~fC-E*@2bmBujXOA{j&y(H3 z3%?hiE#Ar2SVm0k3+yp%_3@EfzguH)E4ALd%>S%tv5Q)7*jD9d9Oe}<1XJ5wLcTq3fxdf7I4ntNDLawxSRBa#OYfBPX)0)K6>$mTjG? z{lvZ>ba)xHA6eA?tdIRnZALb*ESqs^F*S(!vY3C1`ZwBh$9{m?L!C%9i2CSX*AKdy z*i$+ed3FZv?4xt=Vo$00)ap$?Fd8*1_QPC^>s8|=yNI#tRn{%jC?DH8A>3Cs`j0Nw z8){)c=rF3E{lHMUFE0JT4mEvWKC?XHYM)RyfaO>imgnYk!Xehcz@=6alU216S(-y( z2YbItexWQcKvXwUS&-2iGSzy!}{0NL|*EjU?*sA)5?VqbQP~W&7*EfwU z?cw0t4?5I#tF>#2x8nK#t#%QQRkaJ4=Txp;)B$|P9Gj|LM{T{e+Vw|eEBc`Gl&!$X zp=_&bm+5TlRP93Ne$e4%)GlOEyRts^vuhWy>}STo*%TFdOTHu9`A^O=9(&Dschd92 z<8|LK)H!rjsBKRnoHobIPw?0aU^_gRe}*wvtcS-c|D6p@Q}2<kG2&S3j&&4StflzBA9T>#MSb;s^6X$9&z5=b zqF+4A0oQAk{JdhFe}3pX|IB-MUXPRNPfX?u+2R-XNl6dQv!(AY*7s|kSav^%N5cU( z;vUac;p6vB=su#+UV)r1dC#0QZ)ywgm5i@i5_@-#MGk8Hs;$9@A251wSxYxYV>PxK zUFI3Nvw|nE%#+%Y<*ecvv0lLwSmwFAf~R5|J~uCX$~U6DdVI>-M{TqJjOQLbnFH6v zpZx{T|ACQHwD-qx;R|#EZ>#pmC%5q@W6<*6g$Au{K)&%jhF{2G@reAkPGk9schqlW zjO_*2_VPa3xuHF9)cOZE5CBVKMlp&qwdK2 zUcIjf{qQ+IWN(T$eitl!V?93gy+0Jsb{epS7~KK#bKupHowxz}m@y+zHB zpyAv;*wne6$+UL~&LQ3b5nJHgyO1Z)p+C)d`FXf-+xrUR*>3QBF7kLUWIe;4!xArK zV!vA8#2(N#CmiiL8V)tQ`6c1pop9J!P2s#+dM-XX`eY>WU9umf3eEvK6SwtvPFBP@HU0Vyz;u+ z55Ny}95~Z2)}l7I<*&$bXi5$q43gLK(mCk-^!*w5%dp_z@_re1umc@Fj=5C(!gCmS zzdD8~A0j5yG5kQxp7}dZM||L+SVYY>Kk$?jGtYZsO{Z#mypxW3 zJE1Q;;gjcZ*4;K=l0D~z8?jU$&l;s~9&-$T>(N&XKlsZ(HHd9A<$KtLoW07UAG+?r z@B8QjPd|M1je(>Cdn9~jyXd_>rkKKhWR#@eS3E@Mn!7_`Psg$H^07!9F1Lt$BS$ zW7q^Q=BV{`O|-u3MLu77=y_J?WIN51I)Z%RF0CyZisz-sXWvDSPW$3V&hjiZ^5n40 zHN_-!s=Q7;SLN<~WPTfS5q*JipB!}hb_YJ*Gh|-aZ+zDHfK?p?3LRq1Yj)M)SfW$@ zG+p~afKem%@Gzd&AjbMZhozd{b#IcNZM$naJ#@ev17eF^#DYG%b^ z;iF@sy#v}F-gk0}QIipb{Zxv7brKS%uT@T@z_pQ`i>%FSx8g5;S z?xp5V!L)uv%}ucJ{w3Zmo|j(aJN4?g`n|e8e?&z_IkK`ox=y{!`gj6)#JAPQD(~SU zFKT+^WF3D<`hv=5B? zIcTVf?!mEM?3nDstXCe-dgbw~7vqZU5xvmCcA^7#^kW^I7h@efKGwnGV;#JY&Aveg z=kizw=7VcWKS;SzV;AdU|lPY|H5f0oq=L z^M!0^n#=)6`G%4FLe?tTrlY?Vy_~=3`nX7lA9HPeBEI;7m_AkK9&-dez<1q4H`~YG z$TA10*RFBGyW?85ftm#Vm5&#^ZxvoYXkgJ;Cw4AMo@uVse4_q4mhgs;<-td5b*w3j ztF?RoS>5~g1H+y8$9+fitkFLvUgQAZr(>Uc-TSUTCRmK=P6WRFpu?zfpO0RV`#P?| zvme0Y@0XF;4>~Mb*e)MsJF?AfydNMcwVX3rj>qMCPlN6{4;$<=;{nrH@U-sqFUViO zs5u*=)%=P*3NXgV7si}xjP0f|(;lWVY?ZGgCeSiZ>HDGUKJ}yj?ZV>sofj+@8swaMP`Kvk*+i0wF7F3w>dS#m-IpK_9?W<88_5+o?+K%}WLn!reDGJc z$8zpbymu=Mo8G_i)V6JA?J}KMoZJ^4>mK(h(bwnV8tVSBev%h^YUIp5GS{)|p3{&0 zKKRsndgkP_mDd&JJox&4RL8FS1^om+$($u-dz!1Xf1)4ne`vp?UzRn+!}IWwG;eGt z`GCx4{(7w??=J6LN=yrH>vu`{iq4je9#gyzr7t|G9pLj#P}HdrZ;iG2by+mvx__%` zJAAyap;ueqsCe2lM2s24PwX{moU6tAs!Th^S6(+>{Q!yAw9=Dv=%aTxO~>u3k74AL z^)ama?fKFV!&D71?i9?tB|7%y_)&QmwsHZjW}(x@$1>c@ z7pL~cGv>2u2Te7h`7QGkw5>6E_8d5VE{iO9m>;zcoHg~vq1F%!q6NY(=J%aU+P4Rx%HeIax zsf*fZJk#Dt@0Y6^>yYD<{byfPp9hY|j!7?`ljD1I0tcO(OV-mpzBJ5n$i5uIvMu=A%vi%M=dSr8j_5<9Pc6X5-zL-$vdmy2H+JJ2hv#qW`{ zf3+>#C&7z7<_2uuoxj;Ef7f$OO!zkqp&|ah?^{KK&E{`^*yb_J^9w&_ADfOGC+|&% z{Ihk;yNH0=i;f({?pKgX&r>t8tcChQ*5*~ZoR`N4;# z?8YwYHQ&@RFD+Akk6MI%oAumdmc?8j!?6AF$Nxk7cXu-mzQ%{J6x*k#+Zf2^zUgN|!_f}DMwV>3QjQ|~xz;=o)xCVc!!{lErdoARWs|FB*0 zy~6E>q9v!rFMOd>-Yvww6#mR-@(>%)&G^nQ4aa^Ff0S4rT-{E(QF}J3ex|80Z~vwq zw7}@IEtzh?zu01!@%`S<^VB@K{+gtt@$nz+efr67v1i1G=9oW-vd8e?RBsCog$}!@t&Ke919+Gtnu?b1T}*EqtPQv?e=Tp1FRo(XstYR`O@E9 z>@~T!AaC#!^H(tp8LmB3d*+H4{P7dl#L9c--6~tWj^KFDJjQ`O@0q7`$$Mttx4LHr z7av>C@t*lmFxFw^R@gqZXJ((ZS?$U3mhVnqtGt=RM}1!QTKymat(CpjBWa&y-pqOQ zyjy=8w*mgUm-ku3YPZUhO`&i2qK?(M)$Uz@$*!;u*mx~LE;#m&dus2YVC?zKlQHng zwlp?FAL?%Qi*Td`Z1riq>pu^58M&V zbqKxu{h@gy7v9Wi`|~Sw-VZvA8nMAwz?pZ@GRC}qmCmilH;d&lxsQ3v_(y6?IrkWP z5L3pGFMA?Cxc)N^NJm|CT<7zpitwdtE=2e;1wmT>lu8UQ0jLSNQis z(E&KV;9gh!;@`cqj_^TOa4eH+azQmN_SSdnTsb;pe!~O((Pu6+`~(~y&_j#e-gh&m zc4}YnxTjLBrT*(#;N^?z%@cZfiZ=cZ3A%nL-=^?=3P0NACy(l3npX?n4@YV4zPz9z zp2&H;$~mL+DW32l7yQ#{qtPC;o8s9I3w-EkPs#Pzjyb_MB)# zp4K(`do}i$#`rs;S>?yrvmVpEJ+zt^k&D>MeQfw%J#^r22p>FRj!uk`yB-%anrqd8HGGP{GmU(-c8}a)JqxdHXDiu{e0(Xq$b-xueBK@C;YEX4U&SG0`F$dE z)&YM4r&oPgLl4(H@Ze#eAJa9p1|2=Ns@6~suxD4e=sd193)`QM?=jHVvA z-eWbU+wxgFUkN={+sNOOh5x|YmVfBYOMT=y{8g70b)nV|>J9i0)f$lXAV2pjKkh?; z8DFPS*O})U3mLVxx3yxu#%e6L(nO6w?%_yh%cZXHEE4^Y3!Uz@;+}}}oGaK(+(o;N z&eRy|s(02+C&yU%6Kf4M(fUKv4?2|ZQm7aFnrw0o-aLbW_s#HGL$M7zvaZA?@>>3F z@QO$5wWf9R3PT3A!K3Cy_r~fo!|0hq@WLMBjcY>8ixFS*fQ~qs2liFpME}+*lQHzk z`1VKcjn5eP^zdg6a{mN>n&oIe-C*PmI9bl-1RXq~Gwf`l1E$t^8fM=2&lfO{Rln_6 zPk2~AdajiN@qQ!w!S=yt6^?nA{$NLXM-9i$e$Zj`j=$Mn^~77*XXL|u(&fBlzEbDR z6Jp78o$#-EXvhnE&Uwy3_%olKE8eq#r#W=T6b<%4llgc|G~sLL8Kd8-`0`oPL9nP5 z8P7hU7Fw=(SU<6Awaa`>hc9=ltbP#Y$d?UYJe=RykH5@Ar?FNOzq5kjQ_;2BN!%^N zu|Y@h&40=V;8dR;vCVWFQbV*+x8O&dsc-t0rPVF?;Cu0EesE5@_cLYi%sbm>{RL}w z8UDKI`rrI&emVBeA^9=(k6CW^Me=9ZAiVe+woO@spV9wJ=|eB-y;`inz#D!2H^s;6 zwdQinrHq^Pgubo~Q7bZ@c{7)+&$jT<$G$O6wuyKUSHs>YA7pxR>$NFX@Fb>%r+UGR zZyxqBbJ1g8tJ^bZ(TDw(X)-_7UFjD2gYUQpjJ5cw`HXuu>CyC59>*FMYifnh6MQCF zL93X6GljpI@Yxq+e1V!C#5Kz~m+0=Cmv2S`E}8W3sxt4Ou4S0MX}%3xZ1>*5@-=hl zM*dN(V*gj?SL7M-(7kB*Xs&bn99;ao3OD-`+}#`CW?$Wta!mOX_c_Rr+;%>d7vzk_ z*)y~nq&nYd_MU#a=`I;lI&UvCaVVnC(@aoP_Bch6{QQ75;<{eEt3AOJ_&=VI#Q?&NHepF+XIZ zbc`|ENbEhfJ>p>-!Li-KUD#M_IWh!~n3>-q)*a7kmudv~H>(k>JLBia@Mg~hZ=N6X zEO7k%Sauy*yRADs@2NQhuj=cz2U=Cj<-3;Ox({vZJbZ~Y^-NvdW1$=KFzW1zXJ^tO z-Y-UMX2qY-&DIv@Z#_A!}24JSwXLB^`* z=hhFgmsuLi`yKqintfl*d2B&fdSJ-s8ve4Y=@hxEu_@i)h3@9z9vjw@n^vX2g5JSeW9~^qyLa#L^_6f$JN4K}B zhaNr1G4nQk=&yNCPBXvuD__O_fMg`DGvzAJljj;hNBB55HBVxnk52IFx}P1+PT*6= z5^oUoY`NItJYy}#PIy@kJedQ?xh@!SW3PjK`nT3XuZudz9_S?JcHRR=W-aWQGK|cU;D?Ziz)cRw>4SLiOL$|s)(?L6Z$BLM(Y?xH>L+$Ezv0W+VH$&n@#Yl|pBv9(_)YEjb=#)*H**cV zs2=|2fedQ3$B^Z*EDIUn%_}Wb;Zm3_8ZB zJ@oycLpOh3hpS!p{0>+0;fXQc>|jw7EW>i?;a7EwI_NR_e$Zh;#&gxKJ^2Yd{|(>M zYoSB<^R*hc{(NJAjIsZrWv*QpKYXw!yr@kdUg*rjbR6NN1yDuqP1%-*ecxu ze}z3+J~krXa;*nG-W3erGKQ?1`S`uk3H&LYZsy~x)AkCT@F_7yU)E`I`jX<{oOrD2 zdrAN2!CWxw%lTAJ>zLan^!L1H4Bg04Y$Hc=+?ZS7lMlBl)3(}I z*bEP~@IU7st3JCbf3)|j+)Iu3{3HCG`_g>{Fzl$jcD8g)PGlT(Lat%P-4NNmwT3M6 z=wL_ZYuroYKc21X`B2l{|E3;!1x(L5;(ieR;D?;iJvR52k}#p0O{o9gZpb`<)wfZqE|z)1-UonEek9`nu zsZPKP8^O7&`k8b5L$e&izz4=0GwdGmbY9e)j2y*wS=GIN@Sl>-{;J-v4dCVC0 z8qabZ7waOlc(+%5(&m8S=y9#ex}rFM=N{N$h1o~$f#qC)&M@+8Q*=4*#P|$4&yPL} zMwjv5lEJ(3Y&v5bW7Zw}6Q1&JxmF;bc-u$zp?!r7=m}3?^oEIdjzQ?ax4PzmE?lpQ zLB{2K0PB$XA6A*-75sB9!JljRqa)|`uVK~&{>Jf`ZG#T{tWV}?URzZc(~IoLJi+h& zn>EWTvFPI8s6$qkYhLvDb_#}kV5{d-_ptOmeZJydR*#&1(4qZZ8s{GK-=&qY{LI_A zvR8TW|A}mX_U`3xrqR>5=#KBKXNKXk3?tV}XMB3@k1`!R88gll9lXI&I}!)eiD#_! z_`|-=Yu~nbuqIH`9WUe6xZS|-AAE?svOUl-pRyg+!!Yv7_=X{8{I^!dK|j{7jLY*I z>c_5Nm|;tt@PkRkIzld z`gwc;2S0#A{Gewg=H0LN4(O)$TTK`6u4s?V9uzr_d*%WD7=}L9%P`HawR`Kc5#arx z!>F;>0Z;dp@$Mhqvg`JZs#o6U;5TyGb;rGiPJxfE_!u5~7jgNs>TRcK!DT*F+=w6N zQ*tyM>u2y&tl*3skFL?pX_&PmByw8-ekkNCV@&+5pk+IxL6ST<1*Hd!2 z2OzI47dqY7#d~1JwC`#@*%lAtE}bKn^S#2A8+_v!_q6q%1Dbx&Vezb%_=U~LCg-r( zyl;lDyabA(b_Gx}+tz3(5;zRG0i`WEB=HoHZ zG(R#%>}|VjZaQcz<`ldQx31I->$(gRa*Z#1&EItP7qEWNVZvX)$Vyq zUv;!BbamVq+ZHA9-%^i1tWWlV^>+`9JT^~y!#1Rb;7jxSjNtj*I5J#w>?86o=j-ad zWU1GtliU^q+yA;+uX0?_DbbWXPWiB1bz&be#>@8FPHcd`?1*mxJ+HBYny5bXqAsh& zx(2@KH1988)b)5>yMMlzFUHL|iu_tbBL|V$89G-y7uv?C~6= ze{GF9aCBJk6z>Yl_?E+5J2aOB{SYN8b+`8!||P$ z?cS^3efgR>bR+-BXKkP4JUfHz^ev!m0+)Oa-D^%}T*bB75AN;_aI>%Osr8!pNmhLS zgbdlx&ZqK%Jk&V(6VG{K?MXCz3uxUXBmVvXoNeh<>r~@^U(&&F_!C3(kbaFvi=n;+ zG+Z)T9nCz%BEALmJbS%~RyF@5ey1ivqnh8o1w5;9=9*fo z>09#GMGY+Q%eR1sm51d&T6JR2?lJp^*nkfVJ?IUSyzm)gmjxrPd<$qi&Cm9X&SU-- z&~ju`<6#{25j*0jc@aFY!Eo6XHgV0kTIgt;Y_IBM)IW0B_~`F%0qqOM^0$E2&o;vI z8P%AWAJs<2u+gzMe}4;T9@uCcj|q2S+CrZuTu8xMzh+kM8vFWIkXM*Hym;cP$5&Yq|D~i~FmzrotazQqR<#`h30S znKpA&{~yX_^4M!2dVnt-;(nNzym+eklku7A*OTfwCx17qp2z_gdV0~XTUI}4VAN)M z#to0hg|}OIOs%olPb~Z`Ab#x!8LR%w{T9&jZ0lB)&o%sISL~O`lgM55Q@Y)k@)I7| zgCF1lFX;IekXQ!aq38@xbk}`#yDxK`kd04`|I!LP%LZ>-_{g^Y*1we+4c@PMvR=y0*rUzl1HTtU9(-6M$W6`v z@P*}#zXdctbu94~27u$=3XjepqdfbVbcF6!L&NY3rXGh8ehd}jNU z+wd}e=C_;h+q0pHFHn3(68Lp~Sk8lqPBkx{bp@V$MbEn_dY*;g3*`5M4x@%|Gahrx zWBmYfxhE_=*WH~@)VR!^EVY7o@!g;Oc;!bH-vW9J+Z&yB=g8#S2>dTT?OVWv-}Y#% z1>ogx`1(Nui{}k-q1YU`pO)NHmTP&^uYFU^TNd!wy_^{F=}rR-ebZGy{gap zVT7bh<_G+EX7GZ1h7SFp!HI7H&2LuspJ9V?A!O*^TcTHMa)lRT{lM_T2CgiZcY5qi zpzVjFa=}Y-!+!K2eW3D~MBi7*I zd*gYm#xQb~Z$9`25We)_mea+`zv7d@N$g; zkLT&|;9ENMQi~b|jM_ur4?0YIr?+2a8Bgm)o6DAg9ejg`{5{D+AGMGH3|jhr&|yLb zHUwVv*VMOw=+C!s@U|WH9r_a!c&PqFO$l9uPo43<@&B}HCf@>rpTEc16fJ&d-w55* zH$ceEG~^64FRC8hh(>wX)^5kwF_o@u?MHuXbiNrEd!7}HIfDJzGyCu&23HjCu|3w! zHEESSSw8ZRZ@JdPxrlGk5m`6$F*ykSl)rA~!w{)_Xigv+&YH+0IJG%t_K zA8R*);lD%i{E8|cp7@b#@jJ1v^SgE44?2t*yfqYg3O;%29vbW8e52QR=t=D)k1R{4 z!AH6VANTN6EJH`*M=lRVIQ;IBp4fd(xW#ULUve;yZ!P$C%Fhyj%idTo&7Zy>bXe@U zV-IG$bpf!8z90BD?CW>@(-8TF4^ASVX1_~*?BTfYqMg_NnH;2%1B@#_xa@vfKcD|S zoeMXQ#uMB`2n1`)AvL8Xh(jEpN3dd;@>OFc;XiO4B(;-e=+~f zpV;A--RgVC9J%@2{?%Lz{}X@f>i@F^8nt*%%ZY5HBX%wCJTIUxJcV~K2d(=D`gvXi zT)Ym&Z@zFFm2S3P4Cr0bs5PxUbB1G*Ys> zPn~w=k8Z%wJNn8WIQ90iIzCg40NxKebiu#%suA(+S>@AwhW=yz_BH&Ow}+K~^%r>+ z&!gc5U*Pro)y7w#psWA(M~riBpHr_*htK`}D?A-H&XILdJ?GH=&p-If@o#&d*}tdl zSAfC8edZ-l%pG9(pI-3`o;r;fIffZ$Dux;E7-IisHSLmM)9RITR&flN>Cex*Q|Id# z&rzv4Kk$jUj(Xy(-`9U^u46ez)~;~T2Y&SChDP-vWlD;2w z2)E;Ue&t@wI$hCyAG~;ek?=L*7SBDiFIrxQT;=dx^Rgb3N7(oZ`onoJ_@s{bcSAk^ z?tH_)~d5$N#@C9<1Z)rSa7k{QEpouFkr)9%Yg`vhA4R*Y+E ztYMA^HKoP8uF=%UhF8a^gONuyXR}Y3PshXu--5Fd+qF_>k&myUPd;a_M9e*>jN>`O z`VM^4w6$NaIq|IE>@S|ElX7CbO?28$*UHDdhYrcI}*N$c2*~iPVJhEn^k9}(& zNsngh6i@4bOni&}$Sk}LUJw0~y2f67dnh<_!+aT6Yx~OWDlgA5?++Oh-1N=2=n9|A z6ZvD`8qYo*^OAkxlgi6H!ye|S>DQ}`@X5H|$6)`h?qi@wkIct8$e3h=|2g-bqK*em z^>f?DWY~6%_s@w|E%Fn%{4~y~1{>R!>#FUwOtEV9M08D0!&#SzH!@ePONQGA^F*wH>)!rfYMgZz z|5-=kZ#=`i#{l0xv0bs((Hc3HVOsXC@aKmv&@q=SgE97k$meh1Oa~4=0w2F^sK-Be zlIv6I)sCBw=`17b2|l^To(VnRy&0U!T!ayML|Yp;#y1b~-j6GN*Fe|xgAQsB|G)>r z=f8RSEf>Y>lyk(fZ#$DZClM#bu)4U9*#B7n{5L=CC-xF@bEXSA9RTJp$EIpzv2^oF5gEka^4R*EIo@V z_I$DGZ=T2lpY?1*uyZ;uak=61`>+pO&Busyp^5vd2E+CRzxe;R+B3gpSo!x0$QSHx z^HsUTyzK|A2e1Fd3;t;+<}0~%#Ga}Tc0o%FjYCe-Z2Oo#&l}@Fk3RT_d2>uXdtMr_ z!zvFy(8v#PbQRCw81tOyhprpf66tUx&Xyy6TWtXkJ!rm1rAAm6+a{gj**bX0js9>R zeXc3C$2Em(%fJt&%{9e#sLrpSpBJC(Nhj`+`$316Z=4_X0et)6s1NWXxktl);Mt$v z7f-?NpD*Z)zczq5zo>j}Jj+%pHNf# zVcIU^IWNe28g{LM;Sa-%Z@XAyr(p-}|J;VZZEo~8po=`N{xH7%@^b2e{c=w7@r&dA zYrpue3-5aMeLH{mzm)Zp*zC#=;AK6z=6%Rkh3PWp7vt!a@UMo>b!d__ Date: Sat, 18 Jul 2026 01:35:17 +0200 Subject: [PATCH 34/40] fix(endfield): port improved GTAO --- src/games/endfield/ao/0xB4CAAAA7.cso | Bin 0 -> 4496 bytes .../ao/ao-blur_0x3E137F65.cs_5_0.hlsl | 55 ----------------- ....hlsl => gtao-main_0x43A0000B.cs_5_0.hlsl} | 58 ++++++++++++------ ...> gtao-spatial-avg_0xA683B186.cs_5_0.hlsl} | 15 +++-- .../ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl | 3 + .../gtao-vertical-blur_0x0995A677.cs_5_0.hlsl | 49 --------------- 6 files changed, 52 insertions(+), 128 deletions(-) create mode 100644 src/games/endfield/ao/0xB4CAAAA7.cso delete mode 100644 src/games/endfield/ao/ao-blur_0x3E137F65.cs_5_0.hlsl rename src/games/endfield/ao/{gtao-main_0x9D8219CC.cs_5_0.hlsl => gtao-main_0x43A0000B.cs_5_0.hlsl} (85%) rename src/games/endfield/ao/{gtao-spatial-avg_0xB6A67E5A.cs_5_0.hlsl => gtao-spatial-avg_0xA683B186.cs_5_0.hlsl} (75%) delete mode 100644 src/games/endfield/ao/gtao-vertical-blur_0x0995A677.cs_5_0.hlsl diff --git a/src/games/endfield/ao/0xB4CAAAA7.cso b/src/games/endfield/ao/0xB4CAAAA7.cso new file mode 100644 index 0000000000000000000000000000000000000000..4516c1885cc3ce63a90098a94cd2dafe4dc398ea GIT binary patch literal 4496 zcmb7`O=w+36vxk-run!@zXF1Yi%>x@bYldSQkrX0p9*4yk`UckTopl(;7-&>76GfM zbP@1lDOuEA_ksl6y6DcGtKvF~>;(V6d*^@Oyz7g_fq8T1od5YgGxKijY;2})zPNYt z+k;pf{Bq^5t-pUCM8vn3BF<>NqIpg8P0crMz4q3;RtD?M-u~9>ukKuv+}m+BZq7t} zFdu_=B4&nPuOK37g!kw4eO~ij%-p`HuZW!|VKWMS3mcZ!q&2DP@wEQq`m|EQ3hzrNkPaRUN z$y!d)@CVwgCf~D)fjx0qc6h$kp}49(E!7b}-@kvooY=*eMz{E-O{tDlkL|%@99FGe z<*|#`aiqHKCE{Q*@DCfv8;5^=TB;}g6TFkfKV(@YJGU%-^jMX1#+rE*eE@HJb{v|nD4)=Q%%E<0s`XccjTjw8Tkj+B>6QPg_pvb4<7BbLCh6*Go$F4$jiWx`UGF)4 zr+PB)O$|hIo!RqU%G$RioJS+4O{(>i2k}8axzO6B7M4AfFU05mu?>83|Cq*_>TwR; zL*#KU=W#XX!Zd0C4g1hGGVZBNYw|ra&iAh9*zWTE$@KFDhV$jzP2^iVpRY!jdWO~c z=DtXEo0BeInbyRpZ&vcg`9jwDL6#b@IzJ^X)zkBHImbUq?fHO4 z-!cy8$LC~MHjw46X65X3cGbJs;OyM9FY*~$s@p!)XEV58$lr!=oWW@|qQ=O=Bd4x0 zd+242OdHgbb;L%g2RUQPxBpl=EAhI!NpC-+c>5b)kuU3sjQpsG10H@rE6>Mj=JoGG zY%U6WnoZ&>^*RU0SZ9fW28IAV=LSkFR@K9v^MPXUaCHJ2cBtYu+B@?ISjfq36-pmnRNrkCXR#@5^H! z8`yG;_RTqBrO)jTIl@QFu}-s(zsC43v3+vHK(|-hHxGGeV9pfS(!S+O`}mI?-wVu*$vtBeN5khLH7UN)%(4>T7S$2{{Skedc^<$ literal 0 HcmV?d00001 diff --git a/src/games/endfield/ao/ao-blur_0x3E137F65.cs_5_0.hlsl b/src/games/endfield/ao/ao-blur_0x3E137F65.cs_5_0.hlsl deleted file mode 100644 index e4124349fd..0000000000 --- a/src/games/endfield/ao/ao-blur_0x3E137F65.cs_5_0.hlsl +++ /dev/null @@ -1,55 +0,0 @@ -#include "../shared.h" - -Texture2D t2 : register(t2); -Texture2D t1 : register(t1); -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); -SamplerState s1_s : register(s1); - -cbuffer cb0 : register(b0) { - float4 cb0[5]; -} - -RWTexture2D u0 : register(u0); - -[numthreads(8, 8, 1)] -void main(uint3 vThreadID : SV_DispatchThreadID) { - if (shader_injection.disable_game_ao >= 0.5f) { - u0[vThreadID.xy] = 1.0; - return; - } - - float2 pixel = float2(vThreadID.xy) + 0.5; - float2 uv = pixel * cb0[4].zw; - - float radius_scale = 1.0 - t1.SampleLevel(s0_s, uv, 0).z; - radius_scale = saturate(radius_scale + radius_scale); - radius_scale *= AO_DENOISER_BLUR_BETA; - - float center_depth = t0.SampleLevel(s0_s, uv, 0).x; - float inv_width = cb0[4].z; - - float2 offset = 0.0; - float3 accum = float3(-3.0, 0.0, 0.0); - - [loop] - while (true) { - if (3.0 < accum.x) break; - - float step_offset = accum.x * inv_width; - offset.x = step_offset * radius_scale; - - float2 depth_uv = offset * cb0[4].zw + uv; - float sample_depth = t0.SampleLevel(s0_s, depth_uv, 0).x; - float weight = 1.0 - min(1.0, abs(sample_depth - center_depth)); - - float2 ao_uv = pixel * cb0[4].zw + offset; - float ao = t2.SampleLevel(s1_s, ao_uv, 0).x; - - accum = float3(accum.x + 1.0, accum.y + weight, accum.z + ao * weight); - } - - float result = accum.z / max(9.99999975e-05, accum.y); - u0[vThreadID.xy] = result.xxxx; -} diff --git a/src/games/endfield/ao/gtao-main_0x9D8219CC.cs_5_0.hlsl b/src/games/endfield/ao/gtao-main_0x43A0000B.cs_5_0.hlsl similarity index 85% rename from src/games/endfield/ao/gtao-main_0x9D8219CC.cs_5_0.hlsl rename to src/games/endfield/ao/gtao-main_0x43A0000B.cs_5_0.hlsl index 9cbd8d70f6..252e8abfc5 100644 --- a/src/games/endfield/ao/gtao-main_0x9D8219CC.cs_5_0.hlsl +++ b/src/games/endfield/ao/gtao-main_0x43A0000B.cs_5_0.hlsl @@ -63,25 +63,27 @@ void BM_ProcessSample(float3 deltaPos, float3 viewVec, float samplingDir, float // --- End Visibility Bitmask helpers --- RWTexture2D u0 : register(u0); +RWTexture2D u1 : register(u1); [numthreads(8, 8, 1)] void main(uint3 vThreadID : SV_DispatchThreadID) { float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16; - // Select between vanilla cbuffer values and improved custom values - bool use_improved = (IMPROVED_GTAO >= 0.5); - float _ao_radius = use_improved ? AO_RADIUS : cb1[0].x; - float _ao_radius_scale = use_improved ? AO_RADIUS_SCALE : cb1[0].y; - float _ao_falloff_range = use_improved ? AO_FALLOFF_RANGE : cb1[0].z; - float _ao_distribution_power= use_improved ? AO_DISTRIBUTION_POWER: cb1[0].w; - float _ao_thin_occluder = use_improved ? AO_THIN_OCCLUDER : cb1[1].x; - float _ao_gamma = use_improved ? AO_GAMMA : cb1[1].y; - float _ao_mip_bias = use_improved ? AO_MIP_BIAS : cb1[1].w; - float _ao_thickness = use_improved ? AO_THICKNESS : 1.3; - float _ao_direction_count = use_improved ? AO_DIRECTION_COUNT : 3.0; - float _ao_normal_attenuation= use_improved ? AO_NORMAL_ATTENUATION: 0.05; - bool _ao_bitmask = use_improved && (AO_BITMASK >= 0.5); + // Select original or improved GTAO settings + bool use_improved = IMPROVED_GTAO >= 0.5; + float _ao_radius = use_improved ? AO_RADIUS : cb1[0].x; + float _ao_radius_scale = use_improved ? AO_RADIUS_SCALE : cb1[0].y; + float _ao_falloff_range = use_improved ? AO_FALLOFF_RANGE : cb1[0].z; + float _ao_distribution_power = use_improved ? AO_DISTRIBUTION_POWER : cb1[0].w; + float _ao_thin_occluder = use_improved ? AO_THIN_OCCLUDER : cb1[1].x; + float _ao_gamma = use_improved ? AO_GAMMA : cb1[1].y; + float _ao_mip_bias = use_improved ? AO_MIP_BIAS : cb1[1].w; + float _ao_thickness = use_improved ? AO_THICKNESS : 1.3; + float _ao_direction_count = use_improved ? AO_DIRECTION_COUNT : 3.0; + float _ao_normal_attenuation = use_improved ? AO_NORMAL_ATTENUATION : 0.05; + float _ao_max_mip = use_improved ? 4.0 : cb1[3].x - 1.0; + bool _ao_bitmask = use_improved && (AO_BITMASK >= 0.5); r0.xy = vThreadID.yx; r0.zw = float2(32, 0); @@ -107,6 +109,18 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.xy = r0.xx * float2(0.754877687,0.569840312) + float2(0.5,0.5); r0.xy = frac(r0.xy); r0.zw = (uint2)vThreadID.xy; + float2 edge_uv = cb1[4].zw * r0.zw; + float4 edge_gather = t1.Gather(s0_s, edge_uv); + float4 edge_diagonal = t1.Gather(s0_s, edge_uv, int2(1, 1)); + float4 edge_delta = float4(edge_gather.x, edge_diagonal.z, edge_gather.z, edge_diagonal.x) - edge_gather.y; + float4 edge_pair = edge_delta.yyww - edge_delta.xxzz; + edge_pair = edge_pair * float4(0.5,-0.5,0.5,-0.5) + edge_delta; + float4 edge_strength = min(abs(edge_pair), abs(edge_delta)); + edge_strength = edge_strength / (0.0109999999 * edge_gather.y); + edge_strength = saturate(1.25 - edge_strength); + edge_strength = round(2.9000001 * edge_strength); + float edge_packed = dot(edge_strength, float4(0.250980407,0.0627451017,0.0156862754,0.00392156886)); + u1[vThreadID.xy] = edge_packed.xxxx; r1.xyzw = float4(0.5,0.5,0.5,0.5) + r0.zwzw; r2.xy = cb1[4].zw * r1.zw; r2.zw = t0.SampleLevel(s0_s, r2.xy, 0).xy; @@ -143,7 +157,10 @@ void main(uint3 vThreadID : SV_DispatchThreadID) // to prevent over-attenuation of AO on distant objects. // No scaling within 100 units (near-field), then ramps at 0.02 per unit beyond. float viewDist = length(float3(r4.x, r4.w, r4.z)); - float scaledThickness = _ao_thickness * (1.0 + max(0.0, viewDist - 100.0) * 0.02); + bool use_distance_scaling = use_improved; + float scaledThickness = use_distance_scaling + ? _ao_thickness * (1.0 + max(0.0, viewDist - 100.0) * 0.02) + : _ao_thickness; r0.z = _ao_radius * _ao_radius_scale; r0.w = _ao_falloff_range * r0.z; @@ -219,7 +236,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r6.w = log2(r6.w); r6.w = -_ao_mip_bias + r6.w; r6.w = max(0, r6.w); - r6.w = min(4, r6.w); + r6.w = min(_ao_max_mip, r6.w); r9.zw = round(r9.zw); r9.zw = cb1[4].zw * r9.zw; r10.xy = r1.zw * cb1[4].zw + r9.zw; @@ -284,7 +301,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r7.z = log2(r7.z); r7.z = -_ao_mip_bias + r7.z; r7.z = max(0, r7.z); - r7.z = min(4, r7.z); + r7.z = min(_ao_max_mip, r7.z); r10.xyzw = round(r8.xyzw); r10.xyzw = cb1[4].zwzw * r10.xyzw; r11.xyzw = r1.zwzw * cb1[4].zwzw + r10.xyzw; @@ -339,7 +356,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r7.w = log2(r7.w); r7.w = -_ao_mip_bias + r7.w; r7.w = max(0, r7.w); - r7.w = min(4, r7.w); + r7.w = min(_ao_max_mip, r7.w); r8.w = t1.SampleLevel(s0_s, r11.zw, r7.w).x; r8.xy = r13.zw * r8.ww; r10.w = t1.SampleLevel(s0_s, r10.zw, r7.w).x; @@ -422,6 +439,11 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.x = _ao_gamma * r0.x; r0.x = exp2(r0.x); r0.x = max(0.0299999993, r0.x); + r0.x = 0.666666687 * r0.x; + r0.x = min(1, r0.x); + if (shader_injection.disable_game_ao >= 0.5f) { + r0.x = 1.0f; + } u0[vThreadID.xy] = r0.xxxx; return; -} \ No newline at end of file +} diff --git a/src/games/endfield/ao/gtao-spatial-avg_0xB6A67E5A.cs_5_0.hlsl b/src/games/endfield/ao/gtao-spatial-avg_0xA683B186.cs_5_0.hlsl similarity index 75% rename from src/games/endfield/ao/gtao-spatial-avg_0xB6A67E5A.cs_5_0.hlsl rename to src/games/endfield/ao/gtao-spatial-avg_0xA683B186.cs_5_0.hlsl index 8fb26766e2..7c81c9be64 100644 --- a/src/games/endfield/ao/gtao-spatial-avg_0xB6A67E5A.cs_5_0.hlsl +++ b/src/games/endfield/ao/gtao-spatial-avg_0xA683B186.cs_5_0.hlsl @@ -5,7 +5,7 @@ SamplerState s0_s : register(s0); cbuffer cb0 : register(b0) { - float4 cb0[83]; + float4 cb0[1]; } @@ -21,13 +21,13 @@ void main(uint3 vThreadID : SV_DispatchThreadID) float4 r0,r1; r0.xy = (uint2)vThreadID.xy; r0.xy = float2(0.5,0.5) + r0.xy; - r0.zw = r0.xy * cb0[82].zw + -cb0[82].zw; + r0.zw = r0.xy * cb0[0].zw + -cb0[0].zw; r0.z = t0.SampleLevel(s0_s, r0.zw, 0).x; - r1.xy = cb0[82].zw * r0.xy; - r0.xy = r0.xy * cb0[82].zw + cb0[82].zw; + r1.xy = cb0[0].zw * r0.xy; + r0.xy = r0.xy * cb0[0].zw + cb0[0].zw; r0.x = t0.SampleLevel(s0_s, r0.xy, 0).x; r0.y = t0.SampleLevel(s0_s, r1.xy, 0).x; - r1.xyzw = cb0[82].zwzw * float4(1,-1,-1,1) + r1.xyxy; + r1.xyzw = cb0[0].zwzw * float4(1,-1,-1,1) + r1.xyxy; r0.y = r0.y + r0.z; r0.z = t0.SampleLevel(s0_s, r1.xy, 0).x; r0.w = t0.SampleLevel(s0_s, r1.zw, 0).x; @@ -35,6 +35,9 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.y = r0.y + r0.w; r0.x = r0.y + r0.x; r0.x = 0.200000003 * r0.x; + if (shader_injection.disable_game_ao >= 0.5f) { + r0.x = 1.0f; + } u0[vThreadID.xy] = r0.xxxx; return; -} \ No newline at end of file +} diff --git a/src/games/endfield/ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl b/src/games/endfield/ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl index 29d6ed6f57..2ef023b5c6 100644 --- a/src/games/endfield/ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl +++ b/src/games/endfield/ao/gtao-temporal_0xDD16F0F8.cs_5_0.hlsl @@ -113,6 +113,9 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.x = r0.x + -r3.x; r3.x = r3.z * r0.x + r3.x; } + if (shader_injection.disable_game_ao >= 0.5f) { + r3.x = 1.0f; + } r3.w = 0; u0[vThreadID.xy] = r3.xyzw; return; diff --git a/src/games/endfield/ao/gtao-vertical-blur_0x0995A677.cs_5_0.hlsl b/src/games/endfield/ao/gtao-vertical-blur_0x0995A677.cs_5_0.hlsl deleted file mode 100644 index 5a739f3fb1..0000000000 --- a/src/games/endfield/ao/gtao-vertical-blur_0x0995A677.cs_5_0.hlsl +++ /dev/null @@ -1,49 +0,0 @@ -#include "../shared.h" - -Texture2D t2 : register(t2); -Texture2D t1 : register(t1); -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); -SamplerState s1_s : register(s1); - -cbuffer cb0 : register(b0) { - float4 cb0[5]; -} - -RWTexture2D u0 : register(u0); - -[numthreads(8, 8, 1)] -void main(uint3 vThreadID : SV_DispatchThreadID) { - float2 pixel = float2(vThreadID.xy) + 0.5; - float2 uv = pixel * cb0[4].zw; - - float radius_scale = 1.0 - t1.SampleLevel(s0_s, uv, 0).z; - radius_scale = saturate(radius_scale + radius_scale); - radius_scale *= AO_DENOISER_BLUR_BETA; - - float center_depth = t0.SampleLevel(s0_s, uv, 0).x; - float2 texel_size = cb0[4].zw; - - float2 offset = 0.0; - float3 accum = float3(0.0, 0.0, -3.0); - - [loop] - while (true) { - if (3.0 < accum.z) break; - - float2 step_offset = float2(0.0, accum.z * texel_size.y * radius_scale); - - float2 depth_uv = step_offset * cb0[4].zw + uv; - float sample_depth = t0.SampleLevel(s0_s, depth_uv, 0).x; - float weight = 1.0 - min(1.0, abs(sample_depth - center_depth)); - - float2 ao_uv = pixel * cb0[4].zw + step_offset; - float ao = t2.SampleLevel(s1_s, ao_uv, 0).x; - - accum = float3(accum.x + weight, accum.y + ao * weight, accum.z + 1.0); - } - - float result = accum.y / max(9.99999975e-05, accum.x); - u0[vThreadID.xy] = result.xxxx; -} From fb4756a4c1ed6ddc5ff88cd67ee5dc3f223989a3 Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Sat, 18 Jul 2026 01:36:02 +0200 Subject: [PATCH 35/40] fix(endfield): update UI shaders --- .../ui/latencybar_0x9BDC181F.vs_5_0.hlsl | 112 -------------- .../ui/latencybar_0xF4EF16E9.vs_5_0.hlsl | 96 ++++++++++++ .../endfield/ui/ui11_0x85497B0F.ps_5_0.hlsl | 139 ------------------ .../endfield/ui/ui12_0x684B1BD3.ps_5_0.hlsl | 53 ------- .../endfield/ui/ui2_0x3DBCEA15.ps_5_0.hlsl | 84 ----------- .../endfield/ui/ui3_0xF0C4C307.ps_5_0.hlsl | 109 -------------- .../endfield/ui/ui5_0x73F08C2F.ps_5_0.hlsl | 69 --------- .../endfield/ui/ui6_0x9325952C.ps_5_0.hlsl | 44 ------ .../endfield/ui/ui8_0xF6A41919.ps_5_0.hlsl | 111 -------------- .../endfield/ui/ui9_0x54B21797.ps_5_0.hlsl | 66 --------- ....ps_5_0.hlsl => ui_0xF1B0E28A.ps_5_0.hlsl} | 45 +++--- 11 files changed, 115 insertions(+), 813 deletions(-) delete mode 100644 src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl create mode 100644 src/games/endfield/ui/latencybar_0xF4EF16E9.vs_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui11_0x85497B0F.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui12_0x684B1BD3.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui2_0x3DBCEA15.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui3_0xF0C4C307.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui5_0x73F08C2F.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui6_0x9325952C.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui8_0xF6A41919.ps_5_0.hlsl delete mode 100644 src/games/endfield/ui/ui9_0x54B21797.ps_5_0.hlsl rename src/games/endfield/ui/{ui_0xEF07F89A.ps_5_0.hlsl => ui_0xF1B0E28A.ps_5_0.hlsl} (51%) diff --git a/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl b/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl deleted file mode 100644 index 4a79050db9..0000000000 --- a/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl +++ /dev/null @@ -1,112 +0,0 @@ - -#include "../shared.h" - -cbuffer cb5 : register(b5) -{ - float4 cb5[45]; -} - -cbuffer cb4 : register(b4) -{ - float4 cb4[1]; -} - -cbuffer cb3 : register(b3) -{ - float4 cb3[11]; -} - -cbuffer cb2 : register(b2) -{ - float4 cb2[21]; -} - -cbuffer cb1 : register(b1) -{ - float4 cb1[4]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[7]; -} - -void main( - float4 v0 : POSITION0, - float4 v1 : COLOR0, - float2 v2 : TEXCOORD0, - out float4 o0 : SV_Position0, - out float4 o1 : TEXCOORD0, - out float2 o2 : TEXCOORD1, - out float4 o3 : TEXCOORD2, - out float4 o4 : TEXCOORD3, - out float4 o5 : TEXCOORD4) -{ - float4 r0,r1,r2,r3; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = -cb4[0].yz * float2(2,2) + float2(1,1); - r1.xyz = cb1[1].xyz * v0.yyy; - r1.xyz = cb1[0].xyz * v0.xxx + r1.xyz; - r1.xyz = cb1[2].xyz * v0.zzz + r1.xyz; - r1.xyz = cb1[3].xyz + r1.xyz; - r1.xyz = -cb5[44].xyz * cb4[0].xxx + r1.xyz; - r1.w = 1; - r0.z = 0 < cb4[0].x ? 1.0 : 0.0; - r2.x = r0.z != 0 ? cb5[32].x : cb2[17].x; - r2.y = r0.z != 0 ? cb5[33].x : cb2[18].x; - r2.z = r0.z != 0 ? cb5[34].x : cb2[19].x; - r2.w = r0.z != 0 ? cb5[35].x : cb2[20].x; - r2.x = dot(r2.xyzw, r1.xyzw); - r3.x = r0.z != 0 ? cb5[32].y : cb2[17].y; - r3.y = r0.z != 0 ? cb5[33].y : cb2[18].y; - r3.z = r0.z != 0 ? cb5[34].y : cb2[19].y; - r3.w = r0.z != 0 ? cb5[35].y : cb2[20].y; - r2.y = dot(r3.xyzw, r1.xyzw); - r0.xy = r2.xy * r0.xy; - r2.xy = r0.zz != 0 ? r0.xy : r2.xy; - r3.x = r0.z != 0 ? cb5[32].z : cb2[17].z; - r3.y = r0.z != 0 ? cb5[33].z : cb2[18].z; - r3.z = r0.z != 0 ? cb5[34].z : cb2[19].z; - r3.w = r0.z != 0 ? cb5[35].z : cb2[20].z; - r2.z = dot(r3.xyzw, r1.xyzw); - r3.x = r0.z != 0 ? cb5[32].w : cb2[17].w; - r3.y = r0.z != 0 ? cb5[33].w : cb2[18].w; - r3.z = r0.z != 0 ? cb5[34].w : cb2[19].w; - r3.w = r0.z != 0 ? cb5[35].w : cb2[20].w; - r2.w = dot(r3.xyzw, r1.xyzw); - o0.xyzw = r2.xyzw; - o5.zw = r2.zw; - r0.x = cb3[9].w != 0.000000 ? 1.0 : 0.0; - r1.xyzw = r0.xxxx != 0 ? cb3[10].xxxy : float4(1,1,1,1); - r3.xyzw = cb3[2].xyzw * v1.xyzw; - o1.xyzw = r3.xyzw * r1.xyzw; - o2.xy = v2.xy * cb3[5].xy + cb3[5].zw; - o3.xyzw = v0.xyzw; - r1.xz = r0.zz != 0 ? cb5[8].yx : cb2[5].yx; - r1.yw = r0.zz != 0 ? cb5[9].yx : cb2[6].yx; - r0.z = dot(r1.zw, cb0[6].xy); - r0.w = dot(r1.xy, cb0[6].xy); - r0.xy = r2.ww / abs(r0.zw); - r1.xz = float2(0.5,0.5) * r2.xw; - r0.z = cb0[5].x * r2.y; - r1.w = 0.5 * r0.z; - o5.xy = r1.xw + r1.zz; - r0.xy = cb3[9].xy * float2(0.25,0.25) + abs(r0.xy); - o4.zw = float2(0.25,0.25) / r0.xy; - r0.xyzw = max(cb3[4].xyzw, float4(-2e+10,-2e+10,-2e+10,-2e+10)); - r0.xyzw = min(float4(2e+10,2e+10,2e+10,2e+10), r0.xyzw); - r0.xy = v0.xy * float2(2,2) + -r0.xy; - o4.xy = r0.xy + -r0.zw; - - if (LATENCY_BAR_DRAW_OPACITY < 0.5f) { - float2 ndc = o0.xy / max(abs(o0.w), 0.00001f); - if ((ndc.x >= -0.99f && ndc.x <= -0.93f) && - (ndc.y >= -0.99f && ndc.y <= -0.90f)) { - o0 = float4(2.0f, 2.0f, 0.0f, 1.0f); - } - } - - return; -} diff --git a/src/games/endfield/ui/latencybar_0xF4EF16E9.vs_5_0.hlsl b/src/games/endfield/ui/latencybar_0xF4EF16E9.vs_5_0.hlsl new file mode 100644 index 0000000000..f20ce5764b --- /dev/null +++ b/src/games/endfield/ui/latencybar_0xF4EF16E9.vs_5_0.hlsl @@ -0,0 +1,96 @@ +#include "../shared.h" + +cbuffer cb4 : register(b4) { + float4 cb4[12]; +} + +cbuffer cb3 : register(b3) { + float4 cb3[9]; +} + +cbuffer cb2 : register(b2) { + float4 cb2[48]; +} + +cbuffer cb1 : register(b1) { + float4 cb1[1]; +} + +cbuffer cb0 : register(b0) { + float4 cb0[21]; +} + +void main( + float4 v0 : POSITION0, + float4 v1 : COLOR0, + float2 v2 : TEXCOORD0, + out float4 o0 : SV_Position0, + out float4 o1 : TEXCOORD0, + out float2 o2 : TEXCOORD1, + out float4 o3 : TEXCOORD2, + out float4 o4 : TEXCOORD3, + out float4 o5 : TEXCOORD4) { + float4 r0, r1, r2, r3; + + r0.xy = -cb1[0].yz * float2(2, 2) + float2(1, 1); + r1.xyz = cb3[1].xyz * v0.yyy; + r1.xyz = cb3[0].xyz * v0.xxx + r1.xyz; + r1.xyz = cb3[2].xyz * v0.zzz + r1.xyz; + r1.xyz = cb3[3].xyz + r1.xyz; + r1.xyz = -cb2[44].xyz * cb1[0].xxx + r1.xyz; + r1.w = 1; + r0.z = 0 < cb1[0].x ? 1.0 : 0.0; + r2.x = r0.z != 0 ? cb2[32].x : cb0[17].x; + r2.y = r0.z != 0 ? cb2[33].x : cb0[18].x; + r2.z = r0.z != 0 ? cb2[34].x : cb0[19].x; + r2.w = r0.z != 0 ? cb2[35].x : cb0[20].x; + r2.x = dot(r2.xyzw, r1.xyzw); + r3.x = r0.z != 0 ? cb2[32].y : cb0[17].y; + r3.y = r0.z != 0 ? cb2[33].y : cb0[18].y; + r3.z = r0.z != 0 ? cb2[34].y : cb0[19].y; + r3.w = r0.z != 0 ? cb2[35].y : cb0[20].y; + r2.y = dot(r3.xyzw, r1.xyzw); + r0.xy = r2.xy * r0.xy; + r2.xy = r0.zz != 0 ? r0.xy : r2.xy; + r3.x = r0.z != 0 ? cb2[32].z : cb0[17].z; + r3.y = r0.z != 0 ? cb2[33].z : cb0[18].z; + r3.z = r0.z != 0 ? cb2[34].z : cb0[19].z; + r3.w = r0.z != 0 ? cb2[35].z : cb0[20].z; + r2.z = dot(r3.xyzw, r1.xyzw); + r3.x = r0.z != 0 ? cb2[32].w : cb0[17].w; + r3.y = r0.z != 0 ? cb2[33].w : cb0[18].w; + r3.z = r0.z != 0 ? cb2[34].w : cb0[19].w; + r3.w = r0.z != 0 ? cb2[35].w : cb0[20].w; + r2.w = dot(r3.xyzw, r1.xyzw); + o0.xyzw = r2.xyzw; + o5.zw = r2.zw; + r0.x = cb4[11].y != 0.000000 ? 1.0 : 0.0; + r1.xyzw = r0.xxxx != 0 ? cb4[11].zzzw : float4(1, 1, 1, 1); + r3.xyzw = cb4[8].xyzw * v1.xyzw; + o1.xyzw = r3.xyzw * r1.xyzw; + o2.xy = v2.xy * cb4[9].xy + cb4[9].zw; + o3.xyzw = v0.xyzw; + r1.xz = r0.zz != 0 ? cb2[8].yx : cb0[5].yx; + r1.yw = r0.zz != 0 ? cb2[9].yx : cb0[6].yx; + r0.z = dot(r1.zw, cb2[47].xy); + r0.w = dot(r1.xy, cb2[47].xy); + r0.xy = r2.ww / abs(r0.zw); + r1.xz = float2(0.5, 0.5) * r2.xw; + r0.z = cb2[46].x * r2.y; + r1.w = 0.5 * r0.z; + o5.xy = r1.xw + r1.zz; + r0.xy = cb3[8].yz * float2(0.25, 0.25) + abs(r0.xy); + o4.zw = float2(0.25, 0.25) / r0.xy; + r0.xyzw = max(cb3[6].xyzw, float4(-2e+10, -2e+10, -2e+10, -2e+10)); + r0.xyzw = min(float4(2e+10, 2e+10, 2e+10, 2e+10), r0.xyzw); + r0.xy = v0.xy * float2(2, 2) + -r0.xy; + o4.xy = r0.xy + -r0.zw; + + if (LATENCY_BAR_DRAW_OPACITY < 0.5f) { + float2 ndc = o0.xy / max(abs(o0.w), 0.00001f); + if ((ndc.x >= -0.99f && ndc.x <= -0.93f) + && (ndc.y >= -0.99f && ndc.y <= -0.90f)) { + o0 = float4(2.0f, 2.0f, 0.0f, 1.0f); + } + } +} diff --git a/src/games/endfield/ui/ui11_0x85497B0F.ps_5_0.hlsl b/src/games/endfield/ui/ui11_0x85497B0F.ps_5_0.hlsl deleted file mode 100644 index c16f811b0a..0000000000 --- a/src/games/endfield/ui/ui11_0x85497B0F.ps_5_0.hlsl +++ /dev/null @@ -1,139 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Thu Jan 22 15:07:05 2026 - -#include "../shared.h" - -Texture2D t3 : register(t3); - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s3_s : register(s3); - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[27]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2; - uint4 bitmask, uiDest; - float4 fDest; - - r0.x = cb0[0].y * 0.0009765625; - r0.y = cmp(r0.x >= -r0.x); - r0.x = frac(abs(r0.x)); - r0.x = r0.y ? r0.x : -r0.x; - r0.x = 1024 * r0.x; - r1.xyzw = cb1[21].xxyy * r0.xxxx + v2.xxyy; - r1.xyzw = float4(-0.5,-0.5,-0.5,-0.5) + r1.xyzw; - r1.xyzw = cb1[18].xyzw * r1.xyzw; - r0.yz = r1.xy + r1.zw; - r0.yz = float2(0.5,0.5) + r0.yz; - r0.yz = r0.yz * cb1[19].xy + cb1[19].zw; - r0.yzw = t1.Sample(s1_s, r0.yz).xyw; - r0.zw = r0.wz * float2(2,2) + float2(-1,-1); - r0.zw = cb1[16].yy * r0.zw; - r1.x = cb1[15].w + 1; - r0.y = r0.y * r1.x + -cb1[15].w; - r1.yz = cb1[16].yz * r0.yy; - r0.y = cmp(0.000000 != cb1[16].x); - r0.yz = r0.yy ? r0.zw : r1.yz; - r1.yz = cb1[22].xy * r0.xx + v2.xy; - r1.yz = r1.yz * cb1[20].xy + cb1[20].zw; - r1.yzw = t2.Sample(s2_s, r1.yz).xyw; - r0.w = r1.y * r1.x + -cb1[15].w; - r1.xy = r1.wz * float2(2,2) + float2(-1,-1); - r1.xy = cb1[17].yy * r1.xy; - r1.zw = cb1[17].yz * r0.ww; - r0.w = cmp(0.000000 != cb1[17].x); - r1.xy = r0.ww ? r1.xy : r1.zw; - r0.yz = r1.xy + r0.yz; - r1.xyzw = cb1[12].xxyy * r0.xxxx + v2.xxyy; - r2.xyzw = cb1[25].xxyy * r0.xxxx + v2.xxyy; - r2.xyzw = float4(-0.5,-0.5,-0.5,-0.5) + r2.xyzw; - r2.xyzw = cb1[26].xyzw * r2.xyzw; - r0.xw = r2.xy + r2.zw; - r0.xw = float2(0.5,0.5) + r0.xw; - r0.xw = r0.xw * cb1[24].xy + cb1[24].zw; - r0.xw = r0.yz * cb1[23].xx + r0.xw; - r2.xyzw = t3.Sample(s3_s, r0.xw).xyzw; - r1.xyzw = float4(-0.5,-0.5,-0.5,-0.5) + r1.xyzw; - r1.xyzw = cb1[13].xyzw * r1.xyzw; - r0.xw = r1.xy + r1.zw; - r0.xw = float2(0.5,0.5) + r0.xw; - r0.xw = r0.xw * cb1[14].xy + cb1[14].zw; - r0.xy = r0.yz * cb1[10].ww + r0.xw; - r0.xyzw = t0.Sample(s0_s, r0.xy).xyzw; - r1.w = r0.x; - r1.x = 1; - r1.xyzw = r1.xxxw + -r0.xyzw; - r0.xyzw = cb1[11].xxxx * r1.xyzw + r0.xyzw; - r1.x = 255 * v1.w; - r1.x = round(r1.x); - r1.w = 0.00392156886 * r1.x; - r1.xyz = v1.xyz; - r0.xyzw = r1.xyzw * r0.xyzw; - r1.w = r2.x; - r1.x = 1; - r1.xyzw = r1.xxxw + -r2.xyzw; - r1.xyzw = cb1[23].yyyy * r1.xyzw + r2.xyzw; - r0.xyzw = r1.xyzw * r0.xyzw; - r1.xy = cb1[4].zw + -cb1[4].xy; - r1.xy = -abs(v4.xy) + r1.xy; - r1.xy = saturate(v4.zw * r1.xy); - r1.x = r1.x * r1.y; - r0.w = r1.x * r0.w; - r1.xyzw = max(cb1[4].xyzw, float4(-2e+10,-2e+10,-2e+10,-2e+10)); - r1.xyzw = min(float4(2e+10,2e+10,2e+10,2e+10), r1.xyzw); - r2.xy = v4.xy + r1.xy; - r2.xy = r2.xy + r1.zw; - r1.xy = r2.xy * float2(0.5,0.5) + -r1.xy; - r1.zw = -r2.xy * float2(0.5,0.5) + r1.zw; - r2.xyzw = float4(1,1,1,1) / cb1[8].xzyw; - r1.xyzw = saturate(r2.xzyw * r1.xyzw); - r2.xy = r1.xy * float2(-2,-2) + float2(3,3); - r1.xy = r1.xy * r1.xy; - r1.xy = r2.xy * r1.xy; - r2.xy = r1.zw * float2(-2,-2) + float2(3,3); - r1.zw = r1.zw * r1.zw; - r1.zw = r2.xy * r1.zw; - r1.x = r1.x * r1.z; - r1.x = r1.x * r1.y; - r1.x = r1.x * r1.w; - r0.w = r1.x * r0.w; - o0.xyz = r0.xyz * r0.www; - o0.w = cb1[9].z * -r0.w + r0.w; - - if (UI_VISIBILITY < 0.5f) o0 = 0; - - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui12_0x684B1BD3.ps_5_0.hlsl b/src/games/endfield/ui/ui12_0x684B1BD3.ps_5_0.hlsl deleted file mode 100644 index 1cd31e7913..0000000000 --- a/src/games/endfield/ui/ui12_0x684B1BD3.ps_5_0.hlsl +++ /dev/null @@ -1,53 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Tue Jan 27 19:44:20 2026 - -#include "../shared.h" - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb0 : register(b0) -{ - float4 cb0[7]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - out float4 o0 : SV_Target0) -{ - float4 r0; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = cmp(v3.xy >= cb0[4].xy); - r0.zw = cmp(cb0[4].zw >= v3.xy); - r0.xyzw = r0.xyzw ? float4(1,1,1,1) : 0; - r0.xy = r0.xy * r0.zw; - r0.x = r0.x * r0.y; - r0.y = t1.Sample(s1_s, v2.xy).w; - r0.y = cb0[3].w + r0.y; - r0.y = v1.w * r0.y; - o0.w = r0.y * r0.x; - r0.xyz = t0.SampleLevel(s0_s, v4.xy, 0).xyz; - r0.xyz = v1.xyz * r0.xyz; - o0.xyz = cb0[6].xxx * r0.xyz; - - if (UI_VISIBILITY < 0.5f) o0 = 0; - - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui2_0x3DBCEA15.ps_5_0.hlsl b/src/games/endfield/ui/ui2_0x3DBCEA15.ps_5_0.hlsl deleted file mode 100644 index 01ea2c7012..0000000000 --- a/src/games/endfield/ui/ui2_0x3DBCEA15.ps_5_0.hlsl +++ /dev/null @@ -1,84 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Thu Jan 22 11:53:21 2026 -#include "../shared.h" - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb0 : register(b0) -{ - float4 cb0[19]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = -cb0[8].yw + float2(1,1); - r1.xyzw = -cb0[7].xyzw + v2.zzww; - r0.xy = r1.yw * r0.xy; - r0.zw = -cb0[7].yw + float2(1,1); - r0.xy = r0.xy / r0.zw; - r0.xy = cb0[8].yw + r0.xy; - r0.zw = cmp(float2(1,1) >= v2.zw); - r0.xy = r0.zw ? r0.xy : v2.zw; - r0.zw = cb0[8].yw + -cb0[8].xz; - r0.zw = r1.xz * r0.zw; - r1.xy = cb0[7].yw + -cb0[7].xz; - r0.zw = r0.zw / r1.xy; - r0.zw = cb0[8].xz + r0.zw; - r1.xyzw = cmp(cb0[7].xyzw >= v2.zzww); - r0.xy = r1.yw ? r0.zw : r0.xy; - r0.zw = cb0[8].xz * v2.zw; - r0.zw = r0.zw / cb0[7].xz; - r1.yw = cmp(v2.zw >= float2(0,0)); - r1.xy = r1.xz ? r1.yw : 0; - r0.xy = r1.xy ? r0.zw : r0.xy; - r0.zw = cmp(v2.zw < float2(0,0)); - r0.xy = r0.zw ? v2.zw : r0.xy; - r0.z = cmp(0.000000 != cb0[9].x); - r0.xy = r0.zz ? r0.xy : v2.zw; - r0.zw = cmp(float2(1,1) >= r0.xy); - r0.zw = r0.zw ? float2(1,1) : 0; - r1.xy = cmp(float2(0,0) >= -r0.xy); - r0.xy = r0.xy * cb0[2].xy + cb0[2].zw; - r0.x = t1.Sample(s1_s, r0.xy).w; - r1.xy = r1.xy ? float2(1,1) : 0; - r0.yz = r1.xy * r0.zw; - r0.x = r0.x * r0.y; - r0.x = r0.x * r0.z; - r0.y = cmp(0.000000 != cb0[18].z); - r1.xyzw = t0.Sample(s0_s, v2.xy).xyzw; - r1.w = r0.y ? 1 : r1.w; - r1.xyzw = cb0[11].xyzw + r1.xyzw; - r0.y = 255 * v1.w; - r0.y = round(r0.y); - r2.w = 0.00392156886 * r0.y; - r2.xyz = v1.xyz; - r1.xyzw = r2.xyzw * r1.xyzw; - r0.x = r1.w * r0.x; - o0.xyz = r1.xyz * r0.xxx; - o0.w = cb0[17].z * -r0.x + r0.x; - if (UI_VISIBILITY < 0.5f) o0 = 0; - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui3_0xF0C4C307.ps_5_0.hlsl b/src/games/endfield/ui/ui3_0xF0C4C307.ps_5_0.hlsl deleted file mode 100644 index 9735cf4268..0000000000 --- a/src/games/endfield/ui/ui3_0xF0C4C307.ps_5_0.hlsl +++ /dev/null @@ -1,109 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Thu Jan 22 11:53:21 2026 -#include "../shared.h" - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[24]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2,r3; - uint4 bitmask, uiDest; - float4 fDest; - - r0.x = cb0[0].y * 0.0009765625; - r0.y = cmp(r0.x >= -r0.x); - r0.x = frac(abs(r0.x)); - r0.x = r0.y ? r0.x : -r0.x; - r0.x = 1024 * r0.x; - r0.xyzw = cb1[23].xxyy * r0.xxxx + v2.xxyy; - r0.xyzw = float4(-0.5,-0.5,-0.5,-0.5) + r0.xyzw; - r0.xyzw = cb1[20].xyzw * r0.xyzw; - r0.xy = r0.xy + r0.zw; - r0.xy = float2(0.5,0.5) + r0.xy; - r0.xy = r0.xy * cb1[21].xy + cb1[21].zw; - r0.xyzw = t2.Sample(s2_s, r0.xy).xyzw; - r1.x = cmp(0.000000 != cb1[18].z); - r2.xyzw = t0.Sample(s0_s, v2.xy).xyzw; - r2.w = r1.x ? 1 : r2.w; - r1.xyzw = cb1[11].xyzw + r2.xyzw; - r2.x = 255 * v1.w; - r2.x = round(r2.x); - r2.w = 0.00392156886 * r2.x; - r0.w = r2.w * r1.w + r0.w; - r0.w = saturate(cb1[22].w * r0.w); - r2.xyz = v1.xyz; - r1.xyzw = r2.xyzw * r1.xyzw; - r0.xyz = r0.xyz * cb1[22].xyz + -r1.xyz; - r0.xyz = r0.www * r0.xyz + r1.xyz; - r1.xy = -cb1[8].yw + float2(1,1); - r2.xyzw = -cb1[7].xyzw + v2.zzww; - r1.xy = r2.yw * r1.xy; - r2.yw = -cb1[7].yw + float2(1,1); - r1.xy = r1.xy / r2.yw; - r1.xy = cb1[8].yw + r1.xy; - r2.yw = cmp(float2(1,1) >= v2.zw); - r1.xy = r2.yw ? r1.xy : v2.zw; - r2.yw = cb1[8].yw + -cb1[8].xz; - r2.xy = r2.xz * r2.yw; - r2.zw = cb1[7].yw + -cb1[7].xz; - r2.xy = r2.xy / r2.zw; - r2.xy = cb1[8].xz + r2.xy; - r3.xyzw = cmp(cb1[7].xyzw >= v2.zzww); - r1.xy = r3.yw ? r2.xy : r1.xy; - r2.xy = cb1[8].xz * v2.zw; - r2.xy = r2.xy / cb1[7].xz; - r2.zw = cmp(v2.zw >= float2(0,0)); - r2.zw = r3.xz ? r2.zw : 0; - r1.xy = r2.zw ? r2.xy : r1.xy; - r2.xy = cmp(v2.zw < float2(0,0)); - r1.xy = r2.xy ? v2.zw : r1.xy; - r0.w = cmp(0.000000 != cb1[9].x); - r1.xy = r0.ww ? r1.xy : v2.zw; - r2.xy = cmp(float2(1,1) >= r1.xy); - r2.xy = r2.xy ? float2(1,1) : 0; - r2.zw = cmp(float2(0,0) >= -r1.xy); - r1.xy = r1.xy * cb1[2].xy + cb1[2].zw; - r0.w = t1.Sample(s1_s, r1.xy).w; - r1.xy = r2.zw ? float2(1,1) : 0; - r1.xy = r2.xy * r1.xy; - r0.w = r1.x * r0.w; - r0.w = r0.w * r1.y; - r0.w = r1.w * r0.w; - o0.xyz = r0.xyz * r0.www; - o0.w = cb1[17].z * -r0.w + r0.w; - if (UI_VISIBILITY < 0.5f) o0 = 0; - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui5_0x73F08C2F.ps_5_0.hlsl b/src/games/endfield/ui/ui5_0x73F08C2F.ps_5_0.hlsl deleted file mode 100644 index e172501c9b..0000000000 --- a/src/games/endfield/ui/ui5_0x73F08C2F.ps_5_0.hlsl +++ /dev/null @@ -1,69 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Thu Jan 22 11:53:21 2026 -#include "../shared.h" - -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - -cbuffer cb0 : register(b0) -{ - float4 cb0[11]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xyzw = max(cb0[4].xyzw, float4(-2e+10,-2e+10,-2e+10,-2e+10)); - r0.xyzw = min(float4(2e+10,2e+10,2e+10,2e+10), r0.xyzw); - r1.xy = v4.xy + r0.xy; - r1.xy = r1.xy + r0.zw; - r0.xy = r1.xy * float2(0.5,0.5) + -r0.xy; - r0.zw = -r1.xy * float2(0.5,0.5) + r0.zw; - r1.xyzw = float4(1,1,1,1) / cb0[8].xzyw; - r0.xyzw = saturate(r1.xzyw * r0.xyzw); - r1.xy = r0.xy * float2(-2,-2) + float2(3,3); - r0.xy = r0.xy * r0.xy; - r0.xy = r1.xy * r0.xy; - r1.xy = r0.zw * float2(-2,-2) + float2(3,3); - r0.zw = r0.zw * r0.zw; - r0.zw = r1.xy * r0.zw; - r0.x = r0.x * r0.z; - r0.x = r0.x * r0.y; - r0.x = r0.x * r0.w; - r0.y = cmp(0.000000 != cb0[10].z); - r1.xyzw = t0.Sample(s0_s, v2.xy).xyzw; - r1.w = r0.y ? 1 : r1.w; - r1.xyzw = cb0[3].xyzw + r1.xyzw; - r0.y = 255 * v1.w; - r0.y = round(r0.y); - r2.w = 0.00392156886 * r0.y; - r2.xyz = v1.xyz; - r1.xyzw = r2.xyzw * r1.xyzw; - r0.yz = cb0[4].zw + -cb0[4].xy; - r0.yz = -abs(v4.xy) + r0.yz; - r0.yz = saturate(v4.zw * r0.yz); - r0.y = r0.y * r0.z; - r0.y = r1.w * r0.y; - r0.x = r0.y * r0.x; - o0.xyz = r1.xyz * r0.xxx; - o0.w = cb0[9].z * -r0.x + r0.x; - if (UI_VISIBILITY < 0.5f) o0 = 0; - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui6_0x9325952C.ps_5_0.hlsl b/src/games/endfield/ui/ui6_0x9325952C.ps_5_0.hlsl deleted file mode 100644 index 8b5231aeb5..0000000000 --- a/src/games/endfield/ui/ui6_0x9325952C.ps_5_0.hlsl +++ /dev/null @@ -1,44 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Thu Jan 22 11:53:21 2026 -#include "../shared.h" - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb0 : register(b0) -{ - float4 cb0[7]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - out float4 o0 : SV_Target0) -{ - float4 r0; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xyz = t0.SampleLevel(s0_s, v4.xy, 0).xyz; - r0.xyz = v1.xyz * r0.xyz; - o0.xyz = cb0[6].xxx * r0.xyz; - r0.x = t1.Sample(s1_s, v2.xy).w; - r0.x = cb0[3].w + r0.x; - o0.w = v1.w * r0.x; - if (UI_VISIBILITY < 0.5f) o0 = 0; - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui8_0xF6A41919.ps_5_0.hlsl b/src/games/endfield/ui/ui8_0xF6A41919.ps_5_0.hlsl deleted file mode 100644 index db03d69320..0000000000 --- a/src/games/endfield/ui/ui8_0xF6A41919.ps_5_0.hlsl +++ /dev/null @@ -1,111 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Thu Jan 22 14:33:10 2026 - -#include "../shared.h" - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb0 : register(b0) -{ - float4 cb0[19]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2,r3; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = -cb0[8].yw + float2(1,1); - r1.xyzw = -cb0[7].xyzw + v2.zzww; - r0.xy = r1.yw * r0.xy; - r0.zw = -cb0[7].yw + float2(1,1); - r0.xy = r0.xy / r0.zw; - r0.xy = cb0[8].yw + r0.xy; - r0.zw = cmp(float2(1,1) >= v2.zw); - r0.xy = r0.zw ? r0.xy : v2.zw; - r0.zw = cb0[8].yw + -cb0[8].xz; - r0.zw = r1.xz * r0.zw; - r1.xy = cb0[7].yw + -cb0[7].xz; - r0.zw = r0.zw / r1.xy; - r0.zw = cb0[8].xz + r0.zw; - r1.xyzw = cmp(cb0[7].xyzw >= v2.zzww); - r0.xy = r1.yw ? r0.zw : r0.xy; - r0.zw = cb0[8].xz * v2.zw; - r0.zw = r0.zw / cb0[7].xz; - r1.yw = cmp(v2.zw >= float2(0,0)); - r1.xy = r1.xz ? r1.yw : 0; - r0.xy = r1.xy ? r0.zw : r0.xy; - r0.zw = cmp(v2.zw < float2(0,0)); - r0.xy = r0.zw ? v2.zw : r0.xy; - r0.z = cmp(0.000000 != cb0[9].x); - r0.xy = r0.zz ? r0.xy : v2.zw; - r0.zw = cmp(float2(1,1) >= r0.xy); - r0.zw = r0.zw ? float2(1,1) : 0; - r1.xy = cmp(float2(0,0) >= -r0.xy); - r0.xy = r0.xy * cb0[2].xy + cb0[2].zw; - r0.x = t1.Sample(s1_s, r0.xy).w; - r1.xy = r1.xy ? float2(1,1) : 0; - r0.yz = r1.xy * r0.zw; - r0.x = r0.x * r0.y; - r0.x = r0.x * r0.z; - r0.y = cmp(0.000000 != cb0[18].z); - r1.xyzw = t0.Sample(s0_s, v2.xy).xyzw; - r1.w = r0.y ? 1 : r1.w; - r1.xyzw = cb0[11].xyzw + r1.xyzw; - r0.y = 255 * v1.w; - r0.y = round(r0.y); - r2.w = 0.00392156886 * r0.y; - r2.xyz = v1.xyz; - r1.xyzw = r2.xyzw * r1.xyzw; - r0.x = r1.w * r0.x; - r0.yz = cb0[12].zw + -cb0[12].xy; - r0.yz = -abs(v4.xy) + r0.yz; - r0.yz = saturate(v4.zw * r0.yz); - r0.y = r0.y * r0.z; - r0.x = r0.x * r0.y; - r2.xyzw = max(cb0[12].xyzw, float4(-2e+10,-2e+10,-2e+10,-2e+10)); - r2.xyzw = min(float4(2e+10,2e+10,2e+10,2e+10), r2.xyzw); - r0.yz = v4.xy + r2.xy; - r0.yz = r0.yz + r2.zw; - r2.xy = r0.yz * float2(0.5,0.5) + -r2.xy; - r0.yz = -r0.yz * float2(0.5,0.5) + r2.zw; - r3.xyzw = float4(1,1,1,1) / cb0[16].xzyw; - r2.xy = saturate(r3.xz * r2.xy); - r0.yz = saturate(r3.yw * r0.yz); - r2.zw = r2.xy * float2(-2,-2) + float2(3,3); - r2.xy = r2.xy * r2.xy; - r2.xy = r2.zw * r2.xy; - r2.zw = r0.yz * float2(-2,-2) + float2(3,3); - r0.yz = r0.yz * r0.yz; - r0.yz = r2.zw * r0.yz; - r0.y = r2.x * r0.y; - r0.y = r0.y * r2.y; - r0.y = r0.y * r0.z; - r0.x = r0.x * r0.y; - o0.xyz = r1.xyz * r0.xxx; - o0.w = cb0[17].z * -r0.x + r0.x; - - if (UI_VISIBILITY < 0.5f) o0 = 0; - - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui9_0x54B21797.ps_5_0.hlsl b/src/games/endfield/ui/ui9_0x54B21797.ps_5_0.hlsl deleted file mode 100644 index 1a654752c7..0000000000 --- a/src/games/endfield/ui/ui9_0x54B21797.ps_5_0.hlsl +++ /dev/null @@ -1,66 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Thu Jan 22 14:35:33 2026 - -#include "../shared.h" - -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[15]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - out float4 o0 : SV_Target0) -{ - float4 r0,r1; - uint4 bitmask, uiDest; - float4 fDest; - - r0.x = cb0[0].y * 0.0009765625; - r0.y = cmp(r0.x >= -r0.x); - r0.x = frac(abs(r0.x)); - r0.x = r0.y ? r0.x : -r0.x; - r0.x = 1024 * r0.x; - r0.xyzw = cb1[12].xxyy * r0.xxxx + v2.xxyy; - r0.xyzw = float4(-0.5,-0.5,-0.5,-0.5) + r0.xyzw; - r0.xyzw = cb1[13].xyzw * r0.xyzw; - r0.xy = r0.xy + r0.zw; - r0.xy = float2(0.5,0.5) + r0.xy; - r0.xy = r0.xy * cb1[14].xy + cb1[14].zw; - r0.xyzw = t0.Sample(s0_s, r0.xy).xyzw; - r1.w = r0.x; - r1.x = 1; - r1.xyzw = r1.xxxw + -r0.xyzw; - r0.xyzw = cb1[11].xxxx * r1.xyzw + r0.xyzw; - r1.x = 255 * v1.w; - r1.x = round(r1.x); - r1.w = 0.00392156886 * r1.x; - r1.xyz = v1.xyz; - r0.xyzw = r1.xyzw * r0.xyzw; - o0.xyz = r0.xyz * r0.www; - o0.w = cb1[9].z * -r0.w + r0.w; - - if (UI_VISIBILITY < 0.5f) o0 = 0; - - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui_0xEF07F89A.ps_5_0.hlsl b/src/games/endfield/ui/ui_0xF1B0E28A.ps_5_0.hlsl similarity index 51% rename from src/games/endfield/ui/ui_0xEF07F89A.ps_5_0.hlsl rename to src/games/endfield/ui/ui_0xF1B0E28A.ps_5_0.hlsl index 117ac3cf91..255d84f0b9 100644 --- a/src/games/endfield/ui/ui_0xEF07F89A.ps_5_0.hlsl +++ b/src/games/endfield/ui/ui_0xF1B0E28A.ps_5_0.hlsl @@ -2,45 +2,38 @@ #include "../shared.h" Texture2D t0 : register(t0); - SamplerState s0_s : register(s0); -cbuffer cb0 : register(b0) -{ - float4 cb0[11]; +cbuffer cb1 : register(b1) { + float4 cb1[13]; } - - +cbuffer cb0 : register(b0) { + float4 cb0[6]; +} // 3Dmigoto declarations -#define cmp - - - void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - out float4 o0 : SV_Target0) -{ - float4 r0,r1; - uint4 bitmask, uiDest; - float4 fDest; - - r0.x = cmp(0.000000 != cb0[10].z); + float4 v0 : SV_Position0, + float4 v1 : TEXCOORD0, + float2 v2 : TEXCOORD1, + float4 v3 : TEXCOORD2, + float4 v4 : TEXCOORD3, + float4 v5 : TEXCOORD4, + out float4 o0 : SV_Target0) { + float4 r0, r1; + + r0.x = 0.000000 != cb1[12].x; r1.xyzw = t0.Sample(s0_s, v2.xy).xyzw; r1.w = r0.x ? 1 : r1.w; - r0.xyzw = cb0[3].xyzw + r1.xyzw; + r0.xyzw = cb0[5].xyzw + r1.xyzw; r1.x = 255 * v1.w; r1.x = round(r1.x); r1.w = 0.00392156886 * r1.x; r1.xyz = v1.xyz; r0.xyzw = r1.xyzw * r0.xyzw; o0.xyz = r0.xyz * r0.www; - o0.w = cb0[9].z * -r0.w + r0.w; + o0.w = cb1[11].x * -r0.w + r0.w; + if (UI_VISIBILITY < 0.5f) o0 = 0; - return; -} \ No newline at end of file +} From bf4b4725aa2144f621765962f810e59bab2ae406 Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Sat, 18 Jul 2026 01:37:57 +0200 Subject: [PATCH 36/40] fix(endfield): update addon integration for 1.4.4 --- src/games/endfield/addon.cpp | 142 +++++++++++++++-------------------- 1 file changed, 59 insertions(+), 83 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 40e0c5dfd4..67c91f0822 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -263,7 +263,7 @@ bool DrawTextRegion( return true; } -// on_draw callback for ping/latency bar shader (0xEF07F89A) +// on_draw callback for ping/latency bar shader (0xF1B0E28A) bool OnPingDraw(reshade::api::command_list* cmd_list) { if (is_ping_input_candidate) { is_ping_drawn = true; @@ -273,7 +273,6 @@ bool OnPingDraw(reshade::api::command_list* cmd_list) { return true; } -// on_draw callback for UID text shader (0x6B8E9049) bool OnUIDDraw(reshade::api::command_list* cmd_list) { if (is_uid_input_candidate) { if (!IsVisible(shader_injection.status_text_opacity) && @@ -297,6 +296,15 @@ bool KeepOriginalShader(reshade::api::command_list* cmd_list) { return false; } +bool ReplaceImprovedGTAOShader(reshade::api::command_list* cmd_list) { + return shader_injection.improved_gtao >= 0.5f + || shader_injection.disable_game_ao >= 0.5f; +} + +bool ReplaceDisableGTAOShader(reshade::api::command_list* cmd_list) { + return shader_injection.disable_game_ao >= 0.5f; +} + void RegisterUiVisibilityBypassShader(uint32_t crc) { auto it = custom_shaders.find(crc); if (it == custom_shaders.end()) { @@ -1108,7 +1116,7 @@ renodx::utils::settings::Settings settings = { }, new renodx::utils::settings::Setting{ .value_type = renodx::utils::settings::SettingValueType::TEXT, - .label = "- Fixed by Rat for Arknights: Endfield 1.3.3", + .label = "- Maintained by Rat for Arknights: Endfield 1.4.4", .section = "About", }, new renodx::utils::settings::Setting{ @@ -1186,8 +1194,8 @@ bool OnDrawIndexed( constexpr uint32_t PING_INDEX_COUNT = 18; constexpr uint32_t PING_FIRST_INDEX = 0; constexpr int32_t PING_VERTEX_OFFSET = 0; - constexpr uint32_t PING_VERTEX_SHADER_HASH = 0x9BDC181Fu; - constexpr uint32_t PING_PIXEL_SHADER_HASH = 0xEF07F89Au; + constexpr uint32_t PING_VERTEX_SHADER_HASH = 0xF4EF16E9u; + constexpr uint32_t PING_PIXEL_SHADER_HASH = 0xF1B0E28Au; // Detect ping/latency bar const bool ping_geometry_candidate = (index_count == PING_INDEX_COUNT) && @@ -1214,14 +1222,11 @@ bool OnDrawIndexed( constexpr uint32_t UID_MIN_INDEX_COUNT = 100; constexpr int32_t UID_VERTEX_OFFSET = 12; - // Detect UID text: drawn right after ping with specific parameters - // Use is_ping_drawn (set by OnPingDraw) for the original path. The current - // post-combat UID path can switch to 0xC24C4DBB without replaying that ping - // callback, so allow the same geometry test on that text shader hash. + // Detect UID text after the ping or post-combat shader const bool uid_geometry_candidate = (first_index == UID_FIRST_INDEX) && (index_count > UID_MIN_INDEX_COUNT) && (vertex_offset == UID_VERTEX_OFFSET); - const bool uid_shader_candidate = pixel_shader_hash == 0xC24C4DBBu; + const bool uid_shader_candidate = pixel_shader_hash == 0xC2B8AB6Bu; is_uid_input_candidate = uid_geometry_candidate && (is_ping_drawn || uid_shader_candidate); // Reset vertex count after processing @@ -1493,64 +1498,18 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { .usage_include = reshade::api::resource_usage::render_target, }); */ + // Grass/foliage deferred shaders for ReShade AO const uint32_t target_crcs[] = { - // Enviroment deferred (doesnt apply to grass/foliage) - /* - 0xD88CD7C9u, - 0x1E8A471Eu, - 0x8BA3C806u, - 0x7010AF4Bu, - 0x0E84DFD1u, - 0x99725481u, - 0xA4113DE8u, - 0xD5B102A4u, - }; - */ - - // grass/foliage deferred (grass, plants, trees will be included in AO) - 0xBB9276D0u, - 0x6B2D0D3Fu, - 0x46368E6Bu, - 0xC75E6D72u, - 0xF50042ECu, - 0x3826B75Eu, - 0x60D37BB1u, - 0x51B20E29u, + 0x4BF704A4u, + 0xEFA7F46Fu, + 0x66F41E33u, + 0x7F533976u, + 0x82083D15u, + 0xACD57C4Du, + 0xC181EA40u, + 0xEE78E1BAu, }; - // Uberpost - /* - 0x00C16AFBu, - 0x039C28DAu, - 0x086097D2u, - 0x09270FDAu, - 0x0E520F06u, - 0x10076711u, - 0x21241B7Au, - 0x51359B4Du, - 0x53875523u, - 0x53D50BD5u, - 0x57737D9Fu, - 0x5FC0BD3Cu, - 0x6166487Au, - 0x61908D50u, - 0x64CEB255u, - 0x6A76C719u, - 0x86420EBCu, - 0x9790A50Cu, - 0x9AA3FC1Fu, - 0xA6501734u, - 0xA6E6ABE6u, - 0xA8213A68u, - 0xAFDCA263u, - 0xAFECA8F4u, - 0xBCD91195u, - 0xD5BC74ACu, - 0xE0058043u, - 0xF8FA587Fu, - */ - - for (uint32_t crc : target_crcs) { // Ensure an entry exists for the shader hash even if we don't have compiled HLSL auto it = custom_shaders.find(crc); @@ -1564,36 +1523,53 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { } } - // UI visibility-only hashes: bypass the draw when hidden, keep the - // game's original shader untouched when visible to avoid text-mask bugs. + // Improved GTAO shaders + const uint32_t improved_gtao_crcs[] = { + 0x43A0000Bu, + 0xDD16F0F8u, + }; + for (uint32_t crc : improved_gtao_crcs) { + auto it = custom_shaders.find(crc); + if (it != custom_shaders.end()) { + it->second.on_replace = ReplaceImprovedGTAOShader; + } + } + + { + auto it = custom_shaders.find(0xA683B186u); + if (it != custom_shaders.end()) { + it->second.on_replace = ReplaceDisableGTAOShader; + } + } + + // UI visibility shaders const uint32_t ui_visibility_bypass_crcs[] = { - 0x0A02B5A1u, - 0x193A48A5u, - 0x904EE4BBu, + 0xD98315D9u, + 0x7B466CC5u, + 0x483894D1u, + 0xB7010B10u, + 0xC954C30Bu, + 0xE4D1754Au, + 0xFB0D02ADu, + 0x3A8D5F08u, + 0xF16C9B1Fu, + 0xD4922925u, + 0x0FB686BDu, }; for (uint32_t crc : ui_visibility_bypass_crcs) { RegisterUiVisibilityBypassShader(crc); } - // Post-combat UID can switch to this text hash after combat. - // Keep the original shader, but only hide the draw when it matches the UID heuristic. - RegisterUidBypassShader(0xC24C4DBBu); + // Post-combat UID shader + RegisterUidBypassShader(0xC2B8AB6Bu); - // Add on_draw callbacks for ping/UID shaders (heuristic-based detection) - // Ping/latency bar shader: 0xEF07F89A + // Ping/latency bar shader { - auto it = custom_shaders.find(0xEF07F89Au); + auto it = custom_shaders.find(0xF1B0E28Au); if (it != custom_shaders.end()) { it->second.on_draw = OnPingDraw; } } - // UID text shader: 0x6B8E9049 - { - auto it = custom_shaders.find(0x6B8E9049u); - if (it != custom_shaders.end()) { - it->second.on_draw = OnUIDDraw; - } - } // Register draw and draw_indexed events for heuristic ping/UID detection reshade::register_event(OnDraw); reshade::register_event(OnDrawIndexed); From f91866d82b983c119c3f850675ac0ae40ced33fc Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Sat, 18 Jul 2026 01:39:23 +0200 Subject: [PATCH 37/40] feat(endfield): add experimental VFX Boost --- src/games/endfield/addon.cpp | 27 ++++++++++++++++++ .../endfield/vfx/orb-body_0x97BF4335.cso | Bin 0 -> 6868 bytes .../endfield/vfx/orb-glow_0x1BF3323D.cso | Bin 0 -> 4716 bytes .../endfield/vfx/orb-rainbow_0x4D4DDEBE.cso | Bin 0 -> 5768 bytes .../endfield/vfx/orb-sparkles_0x50898C70.cso | Bin 0 -> 7312 bytes 5 files changed, 27 insertions(+) create mode 100644 src/games/endfield/vfx/orb-body_0x97BF4335.cso create mode 100644 src/games/endfield/vfx/orb-glow_0x1BF3323D.cso create mode 100644 src/games/endfield/vfx/orb-rainbow_0x4D4DDEBE.cso create mode 100644 src/games/endfield/vfx/orb-sparkles_0x50898C70.cso diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 67c91f0822..182c3fa3e0 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -296,6 +296,10 @@ bool KeepOriginalShader(reshade::api::command_list* cmd_list) { return false; } +bool ReplaceVFXBoostShader(reshade::api::command_list* cmd_list) { + return shader_injection.perchannelblowout >= 0.5f; +} + bool ReplaceImprovedGTAOShader(reshade::api::command_list* cmd_list) { return shader_injection.improved_gtao >= 0.5f || shader_injection.disable_game_ao >= 0.5f; @@ -905,6 +909,16 @@ renodx::utils::settings::Settings settings = { .tooltip = "Disables the game's built-in GTAO (Ground Truth Ambient Occlusion).\nUseful when using ReShade-based AO instead.", .labels = {"Off", "On"}, }, + new renodx::utils::settings::Setting{ + .key = "HDRVFXLuminance", + .binding = &shader_injection.perchannelblowout, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 0.f, + .label = "VFX Boost (Experimental)", + .section = "Rendering Improvements", + .tooltip = "Boosts the luminance of supported VFX shaders for brighter HDR highlights.\nExperimental: this may also affect UI elements and cause unintended brightness or color changes.", + .labels = {"Original", "Enhanced"}, + }, new renodx::utils::settings::Setting{ .key = "HDRSun", .binding = &shader_injection.sun_intensity, @@ -1523,6 +1537,19 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { } } + const uint32_t vfx_boost_crcs[] = { + 0x1BF3323Du, + 0x50898C70u, + 0x97BF4335u, + 0x4D4DDEBEu, + }; + for (uint32_t crc : vfx_boost_crcs) { + auto it = custom_shaders.find(crc); + if (it != custom_shaders.end()) { + it->second.on_replace = ReplaceVFXBoostShader; + } + } + // Improved GTAO shaders const uint32_t improved_gtao_crcs[] = { 0x43A0000Bu, diff --git a/src/games/endfield/vfx/orb-body_0x97BF4335.cso b/src/games/endfield/vfx/orb-body_0x97BF4335.cso new file mode 100644 index 0000000000000000000000000000000000000000..ef2880b8bce91f6020b7d74b87f2ffd647f2f73a GIT binary patch literal 6868 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/vfx/orb-rainbow_0x4D4DDEBE.cso b/src/games/endfield/vfx/orb-rainbow_0x4D4DDEBE.cso new file mode 100644 index 0000000000000000000000000000000000000000..d79124a73910b69c51e11c6f6a6f95a8afb33b0c GIT binary patch literal 5768 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 literal 0 HcmV?d00001 From b2baec5db172b38fbbe47701da722d708e313537 Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Sat, 18 Jul 2026 03:31:33 +0200 Subject: [PATCH 38/40] fix(endfield): scope VFX Boost to orb textures --- src/games/endfield/addon.cpp | 145 ++++++++++++++++++++++++++++++++++- 1 file changed, 142 insertions(+), 3 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 182c3fa3e0..77b555136c 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -18,7 +18,9 @@ #include "../../mods/shader.hpp" #include "../../mods/swapchain.hpp" +#include "../../utils/bitwise.hpp" #include "../../utils/data.hpp" +#include "../../utils/pipeline_layout.hpp" #include "../../utils/random.hpp" #include "../../utils/resource.hpp" #include "../../utils/settings.hpp" @@ -214,6 +216,84 @@ bool is_ping_drawn = false; bool is_uid_input_candidate = false; uint32_t draw_call_vertex_count = 0; // Track vertex count from draw calls (not draw_indexed) +struct __declspec(uuid("019bf1c8-074a-7e13-b353-54ce3ceec3de")) VfxCommandListData { + reshade::api::resource_view pixel_srv_t0 = {0u}; +}; + +void OnInitVfxCommandList(reshade::api::command_list* cmd_list) { + renodx::utils::data::Create(cmd_list); +} + +void OnDestroyVfxCommandList(reshade::api::command_list* cmd_list) { + renodx::utils::data::Delete(cmd_list); +} + +void OnResetVfxCommandList(reshade::api::command_list* cmd_list) { + auto* data = renodx::utils::data::Get(cmd_list); + if (data != nullptr) { + data->pixel_srv_t0 = {0u}; + } +} + +void OnPushVfxDescriptors( + reshade::api::command_list* cmd_list, + reshade::api::shader_stage stages, + reshade::api::pipeline_layout layout, + uint32_t layout_param, + const reshade::api::descriptor_table_update& update) { + if (!renodx::utils::bitwise::HasFlag(stages, reshade::api::shader_stage::pixel)) return; + + switch (update.type) { + case reshade::api::descriptor_type::shader_resource_view: + case reshade::api::descriptor_type::buffer_shader_resource_view: + case reshade::api::descriptor_type::sampler_with_resource_view: + break; + default: + return; + } + + uint32_t dx_register_index = 0u; + uint32_t dx_register_space = 0u; + bool has_register = false; + const bool found_layout = renodx::utils::pipeline_layout::GetPipelineLayoutData( + layout, + [&](const auto* layout_data) { + if (layout_param >= layout_data->params.size()) return; + + const auto& param = layout_data->params[layout_param]; + switch (param.type) { + case reshade::api::pipeline_layout_param_type::descriptor_table: + if (param.descriptor_table.count != 1u) return; + dx_register_index = param.descriptor_table.ranges[0].dx_register_index; + dx_register_space = param.descriptor_table.ranges[0].dx_register_space; + has_register = true; + break; + case reshade::api::pipeline_layout_param_type::push_descriptors: + dx_register_index = param.push_descriptors.dx_register_index; + dx_register_space = param.push_descriptors.dx_register_space; + has_register = true; + break; + default: + break; + } + }); + if (!found_layout || !has_register || dx_register_space != 0u) return; + + auto* data = renodx::utils::data::Get(cmd_list); + if (data == nullptr) return; + + for (uint32_t i = 0u; i < update.count; ++i) { + if (dx_register_index + update.binding + i != 0u) continue; + + if (update.type == reshade::api::descriptor_type::sampler_with_resource_view) { + data->pixel_srv_t0 = static_cast(update.descriptors)[i].view; + } else { + data->pixel_srv_t0 = static_cast(update.descriptors)[i]; + } + break; + } +} + bool IsVisible(float value) { return value >= 0.5f; } @@ -296,8 +376,58 @@ bool KeepOriginalShader(reshade::api::command_list* cmd_list) { return false; } +void RestoreVFXBoostShader( + reshade::api::command_list* cmd_list, + renodx::utils::shader::CommandListData* shader_state) { + if (shader_state == nullptr) return; + + auto* pixel_state = renodx::utils::shader::GetCurrentPixelState(shader_state); + if (pixel_state->pipeline.handle == 0u) return; + cmd_list->bind_pipeline(pixel_state->applied_stage, pixel_state->pipeline); +} + bool ReplaceVFXBoostShader(reshade::api::command_list* cmd_list) { - return shader_injection.perchannelblowout >= 0.5f; + auto* shader_state = renodx::utils::shader::GetCurrentState(cmd_list); + if (shader_state == nullptr) return false; + if (shader_injection.perchannelblowout < 0.5f) { + RestoreVFXBoostShader(cmd_list, shader_state); + return false; + } + + uint32_t texture_crc = 0u; + switch (renodx::utils::shader::GetCurrentPixelShaderHash(shader_state)) { + case 0x97BF4335u: + texture_crc = 0x512923BCu; + break; + case 0x4D4DDEBEu: + texture_crc = 0xFA6BD53Au; + break; + case 0x50898C70u: + texture_crc = 0x1A45F4EBu; + break; + case 0x1BF3323Du: + texture_crc = 0xF38B0BAAu; + break; + default: + RestoreVFXBoostShader(cmd_list, shader_state); + return false; + } + + auto* data = renodx::utils::data::Get(cmd_list); + if (data == nullptr || data->pixel_srv_t0.handle == 0u) { + RestoreVFXBoostShader(cmd_list, shader_state); + return false; + } + + auto upload = renodx::utils::resource::GetInitialUploadSignature(data->pixel_srv_t0); + if (!upload.has_value()) { + upload = renodx::utils::resource::GetLatestUploadSignature(data->pixel_srv_t0); + } + const bool should_replace = upload.has_value() && upload->crc32 == texture_crc; + if (!should_replace) { + RestoreVFXBoostShader(cmd_list, shader_state); + } + return should_replace; } bool ReplaceImprovedGTAOShader(reshade::api::command_list* cmd_list) { @@ -910,13 +1040,13 @@ renodx::utils::settings::Settings settings = { .labels = {"Off", "On"}, }, new renodx::utils::settings::Setting{ - .key = "HDRVFXLuminance", + .key = "VFXBoost", .binding = &shader_injection.perchannelblowout, .value_type = renodx::utils::settings::SettingValueType::INTEGER, .default_value = 0.f, .label = "VFX Boost (Experimental)", .section = "Rendering Improvements", - .tooltip = "Boosts the luminance of supported VFX shaders for brighter HDR highlights.\nExperimental: this may also affect UI elements and cause unintended brightness or color changes.", + .tooltip = "Boosts the luminance of supported VFX shaders for brighter highlights.\nExperimental: this may have unintended effects.", .labels = {"Original", "Enhanced"}, }, new renodx::utils::settings::Setting{ @@ -1343,6 +1473,7 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { renodx::mods::shader::expected_constant_buffer_space = 50; renodx::mods::shader::expected_constant_buffer_index = 13; renodx::mods::shader::allow_multiple_push_constants = true; + renodx::utils::resource::use_resource_replace = true; renodx::mods::swapchain::expected_constant_buffer_index = 13; renodx::mods::swapchain::expected_constant_buffer_space = 50; @@ -1598,6 +1729,10 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { } } // Register draw and draw_indexed events for heuristic ping/UID detection + reshade::register_event(OnInitVfxCommandList); + reshade::register_event(OnResetVfxCommandList); + reshade::register_event(OnDestroyVfxCommandList); + reshade::register_event(OnPushVfxDescriptors); reshade::register_event(OnDraw); reshade::register_event(OnDrawIndexed); @@ -1606,6 +1741,10 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { break; case DLL_PROCESS_DETACH: + reshade::unregister_event(OnInitVfxCommandList); + reshade::unregister_event(OnResetVfxCommandList); + reshade::unregister_event(OnDestroyVfxCommandList); + reshade::unregister_event(OnPushVfxDescriptors); reshade::unregister_event(OnDraw); reshade::unregister_event(OnDrawIndexed); reshade::unregister_event(OnPresent); From 4d87bc572651ad81d78aa0a45e592253d791702f Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Sun, 19 Jul 2026 17:35:40 +0200 Subject: [PATCH 39/40] fix(endfield): performance optimizations for VFX Boost texture matching --- src/games/endfield/addon.cpp | 182 +++++++++++++++++++---------------- 1 file changed, 98 insertions(+), 84 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 77b555136c..9ae8af2271 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -8,8 +8,10 @@ // #define DEBUG_LEVEL_0 #include +#include #include #include +#include #include #include @@ -20,9 +22,8 @@ #include "../../mods/swapchain.hpp" #include "../../utils/bitwise.hpp" #include "../../utils/data.hpp" -#include "../../utils/pipeline_layout.hpp" +#include "../../utils/hash.hpp" #include "../../utils/random.hpp" -#include "../../utils/resource.hpp" #include "../../utils/settings.hpp" #include "../../utils/state.hpp" #include "../../utils/swapchain.hpp" @@ -220,6 +221,79 @@ struct __declspec(uuid("019bf1c8-074a-7e13-b353-54ce3ceec3de")) VfxCommandListDa reshade::api::resource_view pixel_srv_t0 = {0u}; }; +struct VfxBoostMatch { + uint32_t shader_crc; + uint32_t texture_crc; +}; + +constexpr VfxBoostMatch vfx_boost_matches[] = { + {0x97BF4335u, 0x512923BCu}, + {0x4D4DDEBEu, 0xFA6BD53Au}, + {0x50898C70u, 0x1A45F4EBu}, + {0x1BF3323Du, 0xF38B0BAAu}, +}; + +std::shared_mutex vfx_handle_mutex; +std::unordered_map vfx_handle_shaders; + +void OnInitVfxResource( + reshade::api::device* /*device*/, + const reshade::api::resource_desc& desc, + const reshade::api::subresource_data* initial_data, + reshade::api::resource_usage /*initial_state*/, + reshade::api::resource resource) { + if (resource.handle == 0u + || initial_data == nullptr + || initial_data->data == nullptr + || desc.type != reshade::api::resource_type::texture_2d + || desc.texture.format != reshade::api::format::bc7_unorm_srgb + || desc.texture.width != 256u + || desc.texture.height != 256u) { + return; + } + + const auto source_size = initial_data->slice_pitch != 0u + ? initial_data->slice_pitch + : reshade::api::format_slice_pitch( + desc.texture.format, + initial_data->row_pitch != 0u + ? initial_data->row_pitch + : reshade::api::format_row_pitch(desc.texture.format, desc.texture.width), + desc.texture.height); + if (source_size != 65536u) return; + + const auto texture_crc = renodx::utils::hash::ComputeCRC32( + static_cast(initial_data->data), source_size); + const auto match = std::ranges::find(vfx_boost_matches, texture_crc, &VfxBoostMatch::texture_crc); + if (match == std::end(vfx_boost_matches)) return; + + const std::lock_guard lock(vfx_handle_mutex); + vfx_handle_shaders[resource.handle] = match->shader_crc; +} + +void OnDestroyVfxResource(reshade::api::device* /*device*/, reshade::api::resource resource) { + const std::lock_guard lock(vfx_handle_mutex); + vfx_handle_shaders.erase(resource.handle); +} + +void OnInitVfxResourceView( + reshade::api::device* /*device*/, + reshade::api::resource resource, + reshade::api::resource_usage /*usage*/, + const reshade::api::resource_view_desc& /*desc*/, + reshade::api::resource_view view) { + const std::lock_guard lock(vfx_handle_mutex); + const auto match = vfx_handle_shaders.find(resource.handle); + if (match != vfx_handle_shaders.end()) { + vfx_handle_shaders[view.handle] = match->second; + } +} + +void OnDestroyVfxResourceView(reshade::api::device* /*device*/, reshade::api::resource_view view) { + const std::lock_guard lock(vfx_handle_mutex); + vfx_handle_shaders.erase(view.handle); +} + void OnInitVfxCommandList(reshade::api::command_list* cmd_list) { renodx::utils::data::Create(cmd_list); } @@ -238,60 +312,20 @@ void OnResetVfxCommandList(reshade::api::command_list* cmd_list) { void OnPushVfxDescriptors( reshade::api::command_list* cmd_list, reshade::api::shader_stage stages, - reshade::api::pipeline_layout layout, + reshade::api::pipeline_layout /*layout*/, uint32_t layout_param, const reshade::api::descriptor_table_update& update) { - if (!renodx::utils::bitwise::HasFlag(stages, reshade::api::shader_stage::pixel)) return; - - switch (update.type) { - case reshade::api::descriptor_type::shader_resource_view: - case reshade::api::descriptor_type::buffer_shader_resource_view: - case reshade::api::descriptor_type::sampler_with_resource_view: - break; - default: - return; + if (layout_param != 1u + || update.type != reshade::api::descriptor_type::shader_resource_view + || update.binding != 0u + || update.count == 0u + || !renodx::utils::bitwise::HasFlag(stages, reshade::api::shader_stage::pixel)) { + return; } - uint32_t dx_register_index = 0u; - uint32_t dx_register_space = 0u; - bool has_register = false; - const bool found_layout = renodx::utils::pipeline_layout::GetPipelineLayoutData( - layout, - [&](const auto* layout_data) { - if (layout_param >= layout_data->params.size()) return; - - const auto& param = layout_data->params[layout_param]; - switch (param.type) { - case reshade::api::pipeline_layout_param_type::descriptor_table: - if (param.descriptor_table.count != 1u) return; - dx_register_index = param.descriptor_table.ranges[0].dx_register_index; - dx_register_space = param.descriptor_table.ranges[0].dx_register_space; - has_register = true; - break; - case reshade::api::pipeline_layout_param_type::push_descriptors: - dx_register_index = param.push_descriptors.dx_register_index; - dx_register_space = param.push_descriptors.dx_register_space; - has_register = true; - break; - default: - break; - } - }); - if (!found_layout || !has_register || dx_register_space != 0u) return; - auto* data = renodx::utils::data::Get(cmd_list); if (data == nullptr) return; - - for (uint32_t i = 0u; i < update.count; ++i) { - if (dx_register_index + update.binding + i != 0u) continue; - - if (update.type == reshade::api::descriptor_type::sampler_with_resource_view) { - data->pixel_srv_t0 = static_cast(update.descriptors)[i].view; - } else { - data->pixel_srv_t0 = static_cast(update.descriptors)[i]; - } - break; - } + data->pixel_srv_t0 = static_cast(update.descriptors)[0]; } bool IsVisible(float value) { @@ -394,36 +428,16 @@ bool ReplaceVFXBoostShader(reshade::api::command_list* cmd_list) { return false; } - uint32_t texture_crc = 0u; - switch (renodx::utils::shader::GetCurrentPixelShaderHash(shader_state)) { - case 0x97BF4335u: - texture_crc = 0x512923BCu; - break; - case 0x4D4DDEBEu: - texture_crc = 0xFA6BD53Au; - break; - case 0x50898C70u: - texture_crc = 0x1A45F4EBu; - break; - case 0x1BF3323Du: - texture_crc = 0xF38B0BAAu; - break; - default: - RestoreVFXBoostShader(cmd_list, shader_state); - return false; - } - auto* data = renodx::utils::data::Get(cmd_list); if (data == nullptr || data->pixel_srv_t0.handle == 0u) { RestoreVFXBoostShader(cmd_list, shader_state); return false; } - auto upload = renodx::utils::resource::GetInitialUploadSignature(data->pixel_srv_t0); - if (!upload.has_value()) { - upload = renodx::utils::resource::GetLatestUploadSignature(data->pixel_srv_t0); - } - const bool should_replace = upload.has_value() && upload->crc32 == texture_crc; + const auto shader_crc = renodx::utils::shader::GetCurrentPixelShaderHash(shader_state); + const std::shared_lock lock(vfx_handle_mutex); + const auto match = vfx_handle_shaders.find(data->pixel_srv_t0.handle); + const bool should_replace = match != vfx_handle_shaders.end() && match->second == shader_crc; if (!should_replace) { RestoreVFXBoostShader(cmd_list, shader_state); } @@ -1473,8 +1487,6 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { renodx::mods::shader::expected_constant_buffer_space = 50; renodx::mods::shader::expected_constant_buffer_index = 13; renodx::mods::shader::allow_multiple_push_constants = true; - renodx::utils::resource::use_resource_replace = true; - renodx::mods::swapchain::expected_constant_buffer_index = 13; renodx::mods::swapchain::expected_constant_buffer_space = 50; renodx::mods::swapchain::use_resource_cloning = true; @@ -1668,14 +1680,8 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { } } - const uint32_t vfx_boost_crcs[] = { - 0x1BF3323Du, - 0x50898C70u, - 0x97BF4335u, - 0x4D4DDEBEu, - }; - for (uint32_t crc : vfx_boost_crcs) { - auto it = custom_shaders.find(crc); + for (const auto& match : vfx_boost_matches) { + auto it = custom_shaders.find(match.shader_crc); if (it != custom_shaders.end()) { it->second.on_replace = ReplaceVFXBoostShader; } @@ -1732,6 +1738,10 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { reshade::register_event(OnInitVfxCommandList); reshade::register_event(OnResetVfxCommandList); reshade::register_event(OnDestroyVfxCommandList); + reshade::register_event(OnInitVfxResource); + reshade::register_event(OnDestroyVfxResource); + reshade::register_event(OnInitVfxResourceView); + reshade::register_event(OnDestroyVfxResourceView); reshade::register_event(OnPushVfxDescriptors); reshade::register_event(OnDraw); reshade::register_event(OnDrawIndexed); @@ -1744,6 +1754,10 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { reshade::unregister_event(OnInitVfxCommandList); reshade::unregister_event(OnResetVfxCommandList); reshade::unregister_event(OnDestroyVfxCommandList); + reshade::unregister_event(OnInitVfxResource); + reshade::unregister_event(OnDestroyVfxResource); + reshade::unregister_event(OnInitVfxResourceView); + reshade::unregister_event(OnDestroyVfxResourceView); reshade::unregister_event(OnPushVfxDescriptors); reshade::unregister_event(OnDraw); reshade::unregister_event(OnDrawIndexed); From d000a4e57315fc877938a9511cbfa528bdc3827b Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Sun, 19 Jul 2026 18:18:47 +0200 Subject: [PATCH 40/40] fix(endfield): add two missing UI shader hashes --- src/games/endfield/addon.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 9ae8af2271..bf699d5fd6 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -1348,6 +1348,13 @@ bool OnDrawIndexed( ? renodx::utils::shader::GetCurrentPixelShaderHash(shader_state) : 0u; + if (!IsVisible(shader_injection.ui_visibility) + && (vertex_shader_hash == 0x1529ADE6u || pixel_shader_hash == 0x1529ADE6u + || vertex_shader_hash == 0xEB8D2859u || pixel_shader_hash == 0xEB8D2859u)) { + draw_call_vertex_count = 0; + return true; + } + // Constants for ping/latency bar detection constexpr uint32_t PING_INDEX_COUNT = 18; constexpr uint32_t PING_FIRST_INDEX = 0; @@ -1372,7 +1379,7 @@ bool OnDrawIndexed( is_ping_drawn = true; } draw_call_vertex_count = 0; - return false; + return !IsVisible(shader_injection.ping_text_opacity); } // Constants for UID text detection

    2. 0Oh$29_1 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 DbZNqM diff --git a/src/games/endfield/others/0x83D34AC2.cso b/src/games/endfield/others/0x83D34AC2.cso new file mode 100644 index 0000000000000000000000000000000000000000..dbe264126fabfebe4a7f1d8b76425c587a0314b4 GIT binary patch literal 13160 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/others/sun-lens-dirt_0xC3217979.ps_5_0.hlsl b/src/games/endfield/others/sun-lens-dirt_0xC3217979.ps_5_0.hlsl index a642ee934f..a958a23ef9 100644 --- a/src/games/endfield/others/sun-lens-dirt_0xC3217979.ps_5_0.hlsl +++ b/src/games/endfield/others/sun-lens-dirt_0xC3217979.ps_5_0.hlsl @@ -32,6 +32,6 @@ void main( r0.xyzw = t0.SampleBias(s0_s, v1.xy, cb0[108].x).xyzw; r0.xyzw = cb1[6].xyzw * r0.xyzw; - o0.xyzw = w1 * r0.xyzw * 0.25f; + o0.xyzw = w1 * r0.xyzw * 0.25f; return; -} \ No newline at end of file +} diff --git a/src/games/endfield/others/taa_0xD6EB7D42.ps_5_0.hlsl b/src/games/endfield/others/taa_0xD6EB7D42.ps_5_0.hlsl deleted file mode 100644 index 655228f288..0000000000 --- a/src/games/endfield/others/taa_0xD6EB7D42.ps_5_0.hlsl +++ /dev/null @@ -1,448 +0,0 @@ -// ---- Created with 3Dmigoto v1.3.16 on Thu Nov 27 22:02:47 2025 - -// TAA shader - nothing done - -Texture2D t4 : register(t4); - -Texture2D t3 : register(t3); - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[12]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[93]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float4 o0 : SV_Target0) -{ - const float4 icb[] = { { 27, 0, 0, 0}, - { 54, 0, 0, 0}, - { 216, 0, 0, 0}, - { 432, 0, 0, 0} }; - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = cb1[7].zw * v0.xy; - r0.zw = cb1[8].xy * v0.xy; - r0.zw = floor(r0.zw); - r0.zw = (int2)r0.zw; - r1.xy = v0.xy * cb1[8].xy + -cb0[85].xy; - r1.zw = cb1[6].xy + float2(-0.5,-0.5); - r1.xy = max(float2(0.5,0.5), r1.xy); - r1.xy = min(r1.xy, r1.zw); - r1.xy = floor(r1.xy); - r2.xy = (int2)r1.xy; - r1.xy = float2(0.5,0.5) + r1.xy; - r1.xy = cb1[6].zw * r1.xy; - r1.x = t1.SampleBias(s0_s, r1.xy, cb0[92].x).x; - r2.zw = float2(0,0); - r3.xyzw = t2.Load(r2.xyz).xyzw; - r1.yz = abs(r3.xy) * float2(2,2) + float2(-1,-1); - r1.yz = r1.yz * r1.yz; - r1.yz = r1.yz * r1.yz; - r4.xyzw = float4(-0.5,-0.5,-0.600000024,-0.300000012) + r3.xyww; - r2.zw = cmp(float2(0,0) < r4.xy); - r3.xy = cmp(r4.xy < float2(0,0)); - r2.zw = (int2)-r2.zw + (int2)r3.xy; - r2.zw = (int2)r2.zw; - r1.yz = r2.zw * r1.yz; - r2.zw = v0.xy * cb1[7].zw + -r1.yz; - r1.w = cmp(0.899999976 < r3.w); - r3.x = r1.w ? 1.000000 : 0; - r3.yw = cmp(abs(r4.zw) < float2(0.100000001,0.100000001)); - r4.xy = r3.yy ? r0.zw : r2.xy; - r5.xy = (int2)r4.xy + int2(-1,-1); - r5.zw = float2(0,0); - r5.xyz = t0.Load(r5.xyz).xyz; - r5.xyz = min(float3(0,0,0), -r5.xyz); - r6.w = dot(-r5.xzy, float3(1,1,2)); - r7.y = dot(-r5.xz, float2(2,-2)); - r7.z = dot(-r5.xzy, float3(-1,-1,2)); - r8.xy = (int2)r4.xy + int2(0,-1); - r8.zw = float2(0,0); - r8.xyz = t0.Load(r8.xyz).xyz; - r8.xyz = min(float3(0,0,0), -r8.xyz); - r9.x = dot(-r8.xzy, float3(1,1,2)); - r9.y = dot(-r8.xz, float2(2,-2)); - r9.z = dot(-r8.xzy, float3(-1,-1,2)); - r10.xy = (int2)r4.xy + int2(1,-1); - r10.zw = float2(0,0); - r10.xyz = t0.Load(r10.xyz).xyz; - r10.xyz = min(float3(0,0,0), -r10.xyz); - r11.x = dot(-r10.xzy, float3(1,1,2)); - r11.y = dot(-r10.xz, float2(2,-2)); - r11.z = dot(-r10.xzy, float3(-1,-1,2)); - r12.xy = (int2)r4.xy + int2(-1,0); - r12.zw = float2(0,0); - r12.xyz = t0.Load(r12.xyz).xyz; - r12.xyz = min(float3(0,0,0), -r12.xyz); - r13.x = dot(-r12.xzy, float3(1,1,2)); - r13.y = dot(-r12.xz, float2(2,-2)); - r13.z = dot(-r12.xzy, float3(-1,-1,2)); - r4.zw = float2(0,0); - r14.xyz = t0.Load(r4.xyw).xyz; - r14.xyz = min(float3(0,0,0), -r14.xyz); - r15.x = dot(-r14.xzy, float3(1,1,2)); - r15.y = dot(-r14.xz, float2(2,-2)); - r15.z = dot(-r14.xzy, float3(-1,-1,2)); - r16.xyzw = (int4)r4.xyww + int4(1,0,0,0); - r16.xyz = t0.Load(r16.xyz).xyz; - r16.xyz = min(float3(0,0,0), -r16.xyz); - r17.x = dot(-r16.xzy, float3(1,1,2)); - r17.y = dot(-r16.xz, float2(2,-2)); - r17.z = dot(-r16.xzy, float3(-1,-1,2)); - r18.xyzw = (int4)r4.xyww + int4(-1,1,0,0); - r18.xyz = t0.Load(r18.xyz).xyz; - r18.xyz = min(float3(0,0,0), -r18.xyz); - r19.x = dot(-r18.xzy, float3(1,1,2)); - r19.y = dot(-r18.xz, float2(2,-2)); - r19.z = dot(-r18.xzy, float3(-1,-1,2)); - r20.xyzw = (int4)r4.xyww + int4(0,1,0,0); - r20.xyz = t0.Load(r20.xyz).xyz; - r20.xyz = min(float3(0,0,0), -r20.xyz); - r21.x = dot(-r20.xzy, float3(1,1,2)); - r21.y = dot(-r20.xz, float2(2,-2)); - r21.z = dot(-r20.xzy, float3(-1,-1,2)); - r4.xyzw = (int4)r4.xyzw + int4(1,1,0,0); - r4.xyz = t0.Load(r4.xyz).xyz; - r4.xyz = min(float3(0,0,0), -r4.xyz); - r22.x = dot(-r4.xzy, float3(1,1,2)); - r22.y = dot(-r4.xz, float2(2,-2)); - r22.z = dot(-r4.xzy, float3(-1,-1,2)); - r8.xyz = cb1[9].yyy * -r8.xyz; - r5.xyz = -r5.xyz * cb1[9].xxx + r8.xyz; - r5.xyz = -r10.xyz * cb1[9].zzz + r5.xyz; - r5.xyz = -r12.xyz * cb1[9].www + r5.xyz; - r5.xyz = -r14.xyz * cb1[10].xxx + r5.xyz; - r5.xyz = -r16.xyz * cb1[10].yyy + r5.xyz; - r5.xyz = -r18.xyz * cb1[10].zzz + r5.xyz; - r5.xyz = -r20.xyz * cb1[10].www + r5.xyz; - r4.xyz = -r4.xyz * cb1[11].xxx + r5.xyz; - r0.z = cb1[9].x + cb1[9].y; - r0.z = cb1[9].z + r0.z; - r0.z = cb1[9].w + r0.z; - r0.z = cb1[10].x + r0.z; - r0.z = cb1[10].y + r0.z; - r0.z = cb1[10].z + r0.z; - r0.z = cb1[10].w + r0.z; - r0.z = cb1[11].x + r0.z; - r0.z = 1 / r0.z; - r4.xyz = r4.xyz * r0.zzz; - r5.x = dot(r4.xzy, float3(1,1,2)); - r0.zw = r2.zw * cb1[7].xy + float2(-0.5,-0.5); - r0.zw = floor(r0.zw); - r8.xyzw = float4(0.5,0.5,-0.5,-0.5) + r0.zwzw; - r2.xy = r2.wz * cb1[7].yx + -r8.yx; - r10.xy = r2.yx * r2.yx; - r10.zw = r10.xy * r2.yx; - r12.xy = r10.yx * r2.xy + r2.xy; - r12.xy = -r12.xy * float2(0.5,0.5) + r10.yx; - r12.zw = float2(2.5,2.5) * r10.yx; - r10.zw = r10.wz * float2(1.5,1.5) + -r12.zw; - r10.zw = float2(1,1) + r10.zw; - r2.xy = r10.xy * r2.yx + -r10.xy; - r10.xy = float2(0.5,0.5) * r2.xy; - r12.zw = float2(1,1) + -r12.yx; - r12.zw = r12.zw + -r10.wz; - r2.xy = -r2.xy * float2(0.5,0.5) + r12.zw; - r10.zw = r10.zw + r2.yx; - r14.zw = cb1[7].zw * r8.zw; - r8.zw = float2(1,1) / r10.wz; - r2.xy = r2.xy * r8.zw + r8.xy; - r14.xy = cb1[7].zw * r2.xy; - r0.zw = float2(2.5,2.5) + r0.zw; - r8.xw = saturate(cb1[7].zw * r0.zw); - r0.zw = r10.wz * r12.xy; - r2.x = r10.w * r10.z; - r12.xy = r10.xy * r10.zw; - r16.xyzw = saturate(r14.xwzy); - r18.xyz = t4.SampleLevel(s1_s, r16.xy, 0).xyz; - r2.y = dot(r18.xyz, float3(0.212599993,0.715200007,0.0722000003)); - r2.y = 1 + r2.y; - r18.xyz = r18.xyz / r2.yyy; - r16.xyz = t4.SampleLevel(s1_s, r16.zw, 0).xyz; - r2.y = dot(r16.xyz, float3(0.212599993,0.715200007,0.0722000003)); - r2.y = 1 + r2.y; - r16.xyz = r16.xyz / r2.yyy; - r16.xyz = r16.xyz * r0.www; - r16.xyz = r18.xyz * r0.zzz + r16.xyz; - r12.zw = saturate(r14.xy); - r18.xyz = t4.SampleLevel(s1_s, r12.zw, 0).xyz; - r2.y = dot(r18.xyz, float3(0.212599993,0.715200007,0.0722000003)); - r2.y = 1 + r2.y; - r18.xyz = r18.xyz / r2.yyy; - r16.xyz = r18.xyz * r2.xxx + r16.xyz; - r8.yz = saturate(r14.yx); - r14.xyz = t4.SampleLevel(s1_s, r8.xy, 0).xyz; - r2.x = dot(r14.xyz, float3(0.212599993,0.715200007,0.0722000003)); - r2.x = 1 + r2.x; - r14.xyz = r14.xyz / r2.xxx; - r12.xzw = r14.xyz * r12.xxx + r16.xyz; - r8.xyz = t4.SampleLevel(s1_s, r8.zw, 0).xyz; - r2.x = dot(r8.xyz, float3(0.212599993,0.715200007,0.0722000003)); - r2.x = 1 + r2.x; - r8.xyz = r8.xyz / r2.xxx; - r8.xyz = r8.xyz * r12.yyy + r12.xzw; - r0.z = r0.z + r0.w; - r0.z = r10.w * r10.z + r0.z; - r0.z = r10.x * r10.z + r0.z; - r0.z = r10.y * r10.w + r0.z; - r0.z = 1 / r0.z; - r8.xyz = r8.xyz * r0.zzz; - r10.xyzw = t4.SampleLevel(s1_s, r2.zw, 0).xyzw; - r0.z = dot(r8.xyz, float3(0.212599993,0.715200007,0.0722000003)); - r0.z = 1 + -r0.z; - r8.xyz = r8.xyz / r0.zzz; - r12.xyzw = float4(0.200000003,0.200000003,0.200000003,0.899999976) * r10.xyzw; - r10.xyz = float3(1.79999995,1.79999995,1.79999995) * r10.xyz; - r8.xyz = max(r12.xyz, r8.xyz); - r8.xyz = min(r8.xyz, r10.xyz); - r10.x = dot(r8.xzy, float3(1,1,2)); - r10.y = dot(r8.xz, float2(2,-2)); - r10.z = dot(r8.xzy, float3(-1,-1,2)); - r0.z = r3.z * 1023 + 0.5; - r0.z = (uint)r0.z; - if (1 == 0) r0.z = 0; else if (1+1 < 32) { r0.z = (uint)r0.z << (32-(1 + 1)); r0.z = (uint)r0.z >> (32-1); } else r0.z = (uint)r0.z >> 1; - r0.z = (uint)r0.z; - r2.xy = -cb1[7].zw + float2(1,1); - r2.xy = cmp(r2.xy < r2.zw); - r0.w = (int)r2.y | (int)r2.x; - r2.xy = cmp(r2.zw < cb1[7].zw); - r2.x = (int)r2.y | (int)r2.x; - r0.w = (int)r0.w | (int)r2.x; - r2.x = (int)r0.w & 0x3f800000; - r2.y = max(r15.x, r6.w); - r2.z = min(r15.x, r6.w); - r2.y = r2.y / r2.z; - r2.z = cmp(0 < r2.y); - r2.y = cmp(r2.y < 1.89999998); - r2.y = r2.y ? r2.z : 0; - r6.z = min(100000, r6.w); - r6.y = 16; - r8.yzw = r2.yyy ? float3(2.38220739e-044,100000,0) : r6.yzw; - r2.z = max(r15.x, r9.x); - r2.w = min(r15.x, r9.x); - r2.z = r2.z / r2.w; - r2.w = cmp(0 < r2.z); - r2.z = cmp(r2.z < 1.89999998); - r2.z = r2.z ? r2.w : 0; - r8.x = r2.y ? 19 : 18; - r14.z = min(r8.z, r9.x); - r14.w = max(r8.w, r9.x); - r14.y = r8.y; - r8.yzw = r2.zzz ? r8.xzw : r14.yzw; - r2.y = max(r15.x, r11.x); - r2.z = min(r15.x, r11.x); - r2.y = r2.y / r2.z; - r2.z = cmp(0 < r2.y); - r2.y = cmp(r2.y < 1.89999998); - r2.y = r2.y ? r2.z : 0; - r8.x = (int)r8.y | 20; - r14.z = min(r8.z, r11.x); - r14.w = max(r8.w, r11.x); - r14.y = r8.y; - r8.yzw = r2.yyy ? r8.xzw : r14.yzw; - r2.y = max(r15.x, r13.x); - r2.z = min(r15.x, r13.x); - r2.y = r2.y / r2.z; - r2.z = cmp(0 < r2.y); - r2.y = cmp(r2.y < 1.89999998); - r2.y = r2.y ? r2.z : 0; - r8.x = (int)r8.y | 24; - r14.z = min(r8.z, r13.x); - r14.w = max(r8.w, r13.x); - r14.y = r8.y; - r8.yzw = r2.yyy ? r8.xzw : r14.yzw; - r2.y = max(r17.x, r15.x); - r2.z = min(r17.x, r15.x); - r2.y = r2.y / r2.z; - r2.z = cmp(0 < r2.y); - r2.y = cmp(r2.y < 1.89999998); - r2.y = r2.y ? r2.z : 0; - r8.x = (int)r8.y | 48; - r14.z = min(r8.z, r17.x); - r14.w = max(r8.w, r17.x); - r14.y = r8.y; - r8.yzw = r2.yyy ? r8.xzw : r14.yzw; - r2.y = max(r19.x, r15.x); - r2.z = min(r19.x, r15.x); - r2.y = r2.y / r2.z; - r2.z = cmp(0 < r2.y); - r2.y = cmp(r2.y < 1.89999998); - r2.y = r2.y ? r2.z : 0; - r8.x = (int)r8.y | 80; - r14.z = min(r8.z, r19.x); - r14.w = max(r8.w, r19.x); - r14.y = r8.y; - r8.yzw = r2.yyy ? r8.xzw : r14.yzw; - r2.y = max(r21.x, r15.x); - r2.z = min(r21.x, r15.x); - r2.y = r2.y / r2.z; - r2.z = cmp(0 < r2.y); - r2.y = cmp(r2.y < 1.89999998); - r2.y = r2.y ? r2.z : 0; - r8.x = (int)r8.y | 144; - r14.z = min(r8.z, r21.x); - r14.w = max(r8.w, r21.x); - r14.y = r8.y; - r8.yzw = r2.yyy ? r8.xzw : r14.yzw; - r2.y = max(r22.x, r15.x); - r2.z = min(r22.x, r15.x); - r2.y = r2.y / r2.z; - r2.z = cmp(0 < r2.y); - r2.y = cmp(r2.y < 1.89999998); - r2.y = r2.y ? r2.z : 0; - r8.x = (int)r8.y | 272; - r6.y = min(r8.z, r22.x); - r6.z = max(r8.w, r22.x); - r6.x = r8.y; - r2.yzw = r2.yyy ? r8.xzw : r6.xyz; - r2.w = cmp(r2.w < r15.x); - r2.z = cmp(r15.x < r2.z); - r2.z = (int)r2.z | (int)r2.w; - if (r2.z != 0) { - r2.zw = float2(0,0); - while (true) { - r3.z = cmp((int)r2.w < 4); - if (r3.z != 0) { - r3.z = (int)r2.y & (int)icb[r2.w+0].x; - r3.z = cmp((int)r3.z == (int)icb[r2.w+0].x); - if (r3.z != 0) { - r2.z = -1; - break; - } - r2.w = (int)r2.w + 1; - r2.z = 0; - continue; - } else { - r2.z = 0; - break; - } - r2.z = 0; - } - r2.y = r2.z ? 0 : 1; - } else { - r2.y = 0; - } - r2.y = max(r2.y, r12.w); - r0.x = t3.SampleLevel(s1_s, r0.xy, 0).x; - r0.x = cmp(0 < r0.x); - r0.x = r0.x ? 0 : 1; - r0.y = r1.w ? -1 : -0; - r0.x = r0.x + r0.y; - r0.y = r0.w ? -1 : -0; - r0.x = r0.x + r0.y; - r0.x = -cb1[1].w + r0.x; - r0.y = abs(r1.y) + abs(r1.z); - r0.y = cmp(0.300000012 < r0.y); - r0.y = r0.y ? -1 : -0; - r0.x = r0.x + r0.y; - r0.x = max(0, r0.x); - r0.x = r2.y * r0.x; - r0.y = cmp(r0.x >= 0.100000001); - r0.y = r0.y ? 1.000000 : 0; - r7.x = r6.w; - r2.yzw = r9.xyz * r9.xyz; - r2.yzw = r7.xyz * r7.xyz + r2.yzw; - r6.xyz = r9.xyz + r7.xyz; - r2.yzw = r11.xyz * r11.xyz + r2.yzw; - r6.xyz = r6.xyz + r11.xyz; - r2.yzw = r13.xyz * r13.xyz + r2.yzw; - r6.xyz = r6.xyz + r13.xyz; - r2.yzw = r15.xyz * r15.xyz + r2.yzw; - r6.xyz = r6.xyz + r15.xyz; - r2.yzw = r17.xyz * r17.xyz + r2.yzw; - r6.xyz = r6.xyz + r17.xyz; - r2.yzw = r19.xyz * r19.xyz + r2.yzw; - r6.xyz = r6.xyz + r19.xyz; - r2.yzw = r21.xyz * r21.xyz + r2.yzw; - r6.xyz = r6.xyz + r21.xyz; - r2.yzw = r22.xyz * r22.xyz + r2.yzw; - r6.xyz = r6.xyz + r22.xyz; - r7.xyz = float3(0.111111112,0.111111112,0.111111112) * r6.xyz; - r7.xyz = r7.xyz * r7.xyz; - r2.yzw = r2.yzw * float3(0.111111112,0.111111112,0.111111112) + -r7.xyz; - r2.yzw = sqrt(abs(r2.yzw)); - r7.xyz = float3(-20,-20,-20) + r2.yzw; - r7.xyz = saturate(float3(0.0500000007,0.0500000007,0.0500000007) * r7.xyz); - r8.xyz = r7.xyz * float3(-2,-2,-2) + float3(3,3,3); - r7.xyz = r7.xyz * r7.xyz; - r7.xyz = r8.xyz * r7.xyz; - r7.xyz = -r7.xyz * float3(0.699999988,0.699999988,0.699999988) + float3(1.25,1.25,1.25); - r2.yzw = r7.xyz * r2.yzw; - r7.xyz = r6.xyz * float3(0.111111112,0.111111112,0.111111112) + -r2.yzw; - r7.xyz = min(r7.xyz, r15.xyz); - r2.yzw = r6.xyz * float3(0.111111112,0.111111112,0.111111112) + r2.yzw; - r2.yzw = max(r2.yzw, r15.xyz); - r6.xyz = max(r10.xyz, r7.xyz); - r2.yzw = min(r6.xyz, r2.yzw); - r0.w = r0.w ? 0 : r0.y; - r6.xyz = r10.xyz + -r2.yzw; - r2.yzw = r0.www * r6.xyz + r2.yzw; - r5.y = dot(r4.xz, float2(2,-2)); - r5.z = dot(r4.xzy, float3(-1,-1,2)); - r4.xyz = r5.xyz + -r15.xyz; - r4.xyz = r0.zzz * r4.xyz + r15.xyz; - r0.w = 1 + r4.x; - r4.xyz = r4.xyz / r0.www; - r0.w = 1 + r2.y; - r2.yzw = r2.yzw / r0.www; - r0.w = abs(r1.z) * cb0[84].y + abs(r1.y); - r1.yz = r3.yw ? float2(1,1) : 0; - r1.x = r1.x * 256 + -1; - r1.x = r1.z * r1.x + 1; - r1.z = cb1[3].z + -cb1[3].y; - r0.w = r0.w * r1.x + -cb1[3].y; - r1.x = 1 / r1.z; - r0.w = saturate(r1.x * r0.w); - r1.x = r0.w * -2 + 3; - r0.w = r0.w * r0.w; - r0.w = r1.x * r0.w; - r1.x = cb1[0].w + -cb1[0].z; - r0.w = r0.w * r1.x + cb1[0].z; - r1.x = r2.x + r1.y; - r1.x = saturate(cb1[2].w + r1.x); - r1.y = cb1[4].x + -r0.w; - r0.w = r1.x * r1.y + r0.w; - r0.z = saturate(r3.x * cb1[5].x + r0.z); - r1.x = cb1[2].z + -r0.w; - r0.z = r0.z * r1.x + r0.w; - r0.w = 0.899999976 + -r0.z; - r0.y = r0.y * r0.w + r0.z; - r1.xyz = r2.yzw + -r4.xyz; - r0.yzw = r0.yyy * r1.xyz + r4.xyz; - r1.x = 1.00100005 + -r0.y; - r0.yzw = r0.yzw / r1.xxx; - r1.xyz = float3(0.25,0.25,0.25) * r0.yzw; - r2.yz = r1.xx + r1.yz; - r2.x = -r0.w * 0.25 + r2.y; - r0.y = r0.y * 0.25 + -r1.y; - r2.w = -r0.w * 0.25 + r0.y; - o0.xyz = max(float3(0,0,0), r2.xzw); - o0.w = r0.x; - return; -} \ No newline at end of file diff --git a/src/games/endfield/shadows/0x2F236158.cso b/src/games/endfield/shadows/0x2F236158.cso new file mode 100644 index 0000000000000000000000000000000000000000..7f171a1b7d1a1c30b118e4d9124e2cfa8499d561 GIT binary patch literal 1704 zcmcgsziU)M5T3Wb_YyCnF{lK8@eopo3UUUq(#5-+rtyN8JI+cB2^tF{F;$8X#m2_c z{~#com6e^4KS1z*ki$B?p5OO&N7mI>T;ss(kJ)c#cII2Q*}vU5w>SHtn48-BvikMq z$BW;tCL;1a7deFaGW0d{6Lhh2=iU-#1D%B4fKrGjmU0Y>rdyUH?RwtnJzUy&vA(sw z@l2K%`i*w`ep3d6K^t+Ihd9P9pen!P!T|r}N1Kn=w&2vcyU_ohiSRz#aC|x`$pewJ z^|mNo8LK}lsXU)9_ua0@Y9VQT+UE}z{m$(*ioaX~ywHb?pzh#O!*bied$nNJ*hrVu} zToakl`)Ewg^ga8JJD}#Q?rR>_+`X=dyxB*BM)#!5_%p_!w07JK{wMUT<}ryCnOmH> zseNRP2DVtj_!ols#Gmr<>mr9W{^=;b=Bw>3+^^JW&)^@)mH!d=!0W%29|@jzXKU z^!ih@?}}qg_KbV&JJ-Y1*)$jLpgd`=&}J+Ek!UW(X)f+H7uU?iSvgK=^BgNjv>A&b zk}8gfABUp`-q(ufFF)?y4(n7~FLyR$qYGfmIu(~E?hPxRb@JV^_IH_!p*7KFEQUy` zY9fA|nlul4Yb=IHs`3y&W}dRfl1uQ$_wyffmwzF18jB&4sv3z8YCN)8IBt5LBV*kk Z!GD6vu(^L9s4aWt@d t0 : register(t0); - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2,r3,r4; - uint4 bitmask, uiDest; - float4 fDest; - - r0.zw = float2(0,0); - r1.xyzw = (int4)v0.xyxy; - r2.xyzw = (int4)r1.zwzw + int4(-3,0,-2,0); - r2.xyzw = (int4)r2.xyzw; - r2.xyzw = max(float4(0,0,0,0), r2.xyzw); - r3.xyzw = cb0[0].zwzw + float4(-1,-1,-1,-1); - r2.xyzw = min(r3.xyzw, r2.xyzw); - r2.xyzw = (uint4)r2.xyzw; - r0.xy = r2.zw; - r0.x = t0.Load(r0.xyz).x; - r0.x = 0.142857149 * r0.x; - r2.zw = float2(0,0); - r0.y = t0.Load(r2.xyz).x; - r0.x = r0.y * 0.142857149 + r0.x; - r2.xyzw = (int4)r1.zwzw + int4(-1,0,1,0); - r1.xyzw = (int4)r1.xyzw + int4(2,0,3,0); - r1.xyzw = (int4)r1.xyzw; - r1.xyzw = max(float4(0,0,0,0), r1.xyzw); - r1.xyzw = min(r1.xyzw, r3.xyzw); - r1.xyzw = (uint4)r1.zwxy; - r2.xyzw = (int4)r2.xyzw; - r2.xyzw = max(float4(0,0,0,0), r2.xyzw); - r2.xyzw = min(r2.xyzw, r3.xyzw); - r2.xyzw = (uint4)r2.zwxy; - r4.xy = r2.zw; - r4.zw = float2(0,0); - r0.y = t0.Load(r4.xyz).x; - r0.x = r0.y * 0.142857149 + r0.x; - r0.yz = trunc(v0.xy); - r0.yz = max(float2(0,0), r0.yz); - r0.yz = min(r0.yz, r3.xy); - r3.xy = (uint2)r0.yz; - r3.zw = float2(0,0); - r0.y = t0.Load(r3.xyz).x; - r0.x = r0.y * 0.142857149 + r0.x; - r2.zw = float2(0,0); - r0.y = t0.Load(r2.xyz).x; - r0.x = r0.y * 0.142857149 + r0.x; - r2.xy = r1.zw; - r2.zw = float2(0,0); - r0.y = t0.Load(r2.xyz).x; - r0.x = r0.y * 0.142857149 + r0.x; - r1.zw = float2(0,0); - r0.y = t0.Load(r1.xyz).x; - o0.xyz = r0.yyy * float3(0.142857149,0.142857149,0.142857149) + r0.xxx; - o0.w = 1; - return; -} \ No newline at end of file diff --git a/src/games/endfield/shadows/0xB295C5C4.cso b/src/games/endfield/shadows/0xB295C5C4.cso new file mode 100644 index 0000000000000000000000000000000000000000..8c8a820278b9470995097229b3627f4738c3fefa GIT binary patch literal 1704 zcmcgsF;5gh6n;DIE^rz}qQr=r)x-*EPGhWK;vJ_n9O1ajSs4W)P=G;VVWEc5*jQRx zn_OaP>`eF%w%X_gT6#UdZ)cv_jGoCgzU0m9y!qyR^WHbvYWsHO%jK`{KPHt=EiEjW#MVri%FQFWjB$hht|TK5;Wo~-Yz zZ*9ubY`apgFIJ_~>C};zJj5|?23Px?7Xh4Kda(Uybq9wUcW2uNi3soW3)=IdrtWF?chJnGimU&XbLGPhnsSx6^0afN+xF=G)3Y(gYC!amQ} z&N$p9krHF>1bEcYb$c7gH|st4_*Qj2R0+V9KR9<>Feo_)RX(s&UMi*H|@T%vcP8 z_0x#>K{Tr1eLeL0rKjE7VVxRlr7mV{Z~-h?r{dDcy t0 : register(t0); - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2,r3,r4; - uint4 bitmask, uiDest; - float4 fDest; - - r0.zw = float2(0,0); - r1.xyzw = (int4)v0.xyxy; - r2.xyzw = (int4)r1.zwzw + int4(0,-3,0,-2); - r2.xyzw = (int4)r2.xyzw; - r2.xyzw = max(float4(0,0,0,0), r2.xyzw); - r3.xyzw = cb0[0].zwzw + float4(-1,-1,-1,-1); - r2.xyzw = min(r3.xyzw, r2.xyzw); - r2.xyzw = (uint4)r2.xyzw; - r0.xy = r2.zw; - r0.x = t0.Load(r0.xyz).x; - r0.x = 0.142857149 * r0.x; - r2.zw = float2(0,0); - r0.y = t0.Load(r2.xyz).x; - r0.x = r0.y * 0.142857149 + r0.x; - r2.xyzw = (int4)r1.zwzw + int4(0,-1,0,1); - r1.xyzw = (int4)r1.xyzw + int4(0,2,0,3); - r1.xyzw = (int4)r1.xyzw; - r1.xyzw = max(float4(0,0,0,0), r1.xyzw); - r1.xyzw = min(r1.xyzw, r3.xyzw); - r1.xyzw = (uint4)r1.zwxy; - r2.xyzw = (int4)r2.xyzw; - r2.xyzw = max(float4(0,0,0,0), r2.xyzw); - r2.xyzw = min(r2.xyzw, r3.xyzw); - r2.xyzw = (uint4)r2.zwxy; - r4.xy = r2.zw; - r4.zw = float2(0,0); - r0.y = t0.Load(r4.xyz).x; - r0.x = r0.y * 0.142857149 + r0.x; - r0.yz = trunc(v0.xy); - r0.yz = max(float2(0,0), r0.yz); - r0.yz = min(r0.yz, r3.xy); - r3.xy = (uint2)r0.yz; - r3.zw = float2(0,0); - r0.y = t0.Load(r3.xyz).x; - r0.x = r0.y * 0.142857149 + r0.x; - r2.zw = float2(0,0); - r0.y = t0.Load(r2.xyz).x; - r0.x = r0.y * 0.142857149 + r0.x; - r2.xy = r1.zw; - r2.zw = float2(0,0); - r0.y = t0.Load(r2.xyz).x; - r0.x = r0.y * 0.142857149 + r0.x; - r1.zw = float2(0,0); - r0.y = t0.Load(r1.xyz).x; - o0.xyz = r0.yyy * float3(0.142857149,0.142857149,0.142857149) + r0.xxx; - o0.w = 1; - return; -} \ No newline at end of file diff --git a/src/games/endfield/shadows/0xB4E7E6D9.cso b/src/games/endfield/shadows/0xB4E7E6D9.cso new file mode 100644 index 0000000000000000000000000000000000000000..2414d63e87bf436b8a66422fc4e6864a4d7fda8b GIT binary patch literal 3836 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/shadows/0xCAB28784.ps_5_0.hlsl b/src/games/endfield/shadows/0xCAB28784.ps_5_0.hlsl deleted file mode 100644 index 6d3e42fbd1..0000000000 --- a/src/games/endfield/shadows/0xCAB28784.ps_5_0.hlsl +++ /dev/null @@ -1,321 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Sat Jan 24 04:33:32 2026 -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb2 : register(b2) -{ - float4 cb2[36]; -} - -cbuffer cb1 : register(b1) -{ - float4 cb1[1]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[85]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float o0 : SV_Target0) -{ - const float4 icb[] = { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { -1, -1, -0.942016, -0.399062}, - { -1, 1, 0.945586, -0.768907}, - { 1, -1, -0.094184, -0.929389}, - { 1, 1, 0.344959, 0.293878}, - { 0, 0, -0.915886, 0.457714}, - { 0, 0, -0.815442, -0.879125}, - { 0, 0, -0.382775, 0.276768}, - { 0, 0, 0.974844, 0.756484}, - { 0, 0, 0.443233, -0.975116}, - { 0, 0, 0.537430, -0.473734}, - { 0, 0, -0.264969, -0.418930}, - { 0, 0, 0.791975, 0.190902}, - { 0, 0, -0.241888, 0.997065}, - { 0, 0, -0.814100, 0.914376}, - { 0, 0, 0.199841, 0.786414}, - { 0, 0, 0.143832, -0.141008} }; - float4 r0,r1,r2,r3,r4,r5,r6; - uint4 bitmask, uiDest; - float4 fDest; - - float4 x0[16]; - r0.xy = (uint2)v0.xy; - r0.zw = (uint2)r0.xy << int2(2,2); - r0.zw = (uint2)r0.zw; - r0.zw = cb0[82].zw * r0.zw; - r1.xyzw = t0.Gather(s0_s, r0.zw).xyzw; - r1.xyzw = cb0[84].zzzz * r1.wzxy + cb0[84].wwww; - r1.xyzw = float4(1,1,1,1) / r1.xyzw; - x0[0].x = r1.x; - x0[4].x = r1.y; - x0[1].x = r1.z; - x0[5].x = r1.w; - bitmask.x = ((~(-1 << 30)) << 2) & 0xffffffff; r1.x = (((uint)r0.x << 2) & bitmask.x) | ((uint)0 & ~bitmask.x); - bitmask.y = ((~(-1 << 30)) << 2) & 0xffffffff; r1.y = (((uint)r0.y << 2) & bitmask.y) | ((uint)2 & ~bitmask.y); - bitmask.z = ((~(-1 << 30)) << 2) & 0xffffffff; r1.z = (((uint)r0.x << 2) & bitmask.z) | ((uint)2 & ~bitmask.z); - bitmask.w = ((~(-1 << 30)) << 2) & 0xffffffff; r1.w = (((uint)r0.y << 2) & bitmask.w) | ((uint)0 & ~bitmask.w); - r1.xyzw = (uint4)r1.xyzw; - r1.xyzw = cb0[82].zwzw * r1.xyzw; - r2.xyzw = t0.Gather(s0_s, r1.xy).xyzw; - r2.xyzw = cb0[84].zzzz * r2.wzxy + cb0[84].wwww; - r2.xyzw = float4(1,1,1,1) / r2.xyzw; - x0[2].x = r2.x; - x0[6].x = r2.y; - x0[3].x = r2.z; - x0[7].x = r2.w; - r1.xyzw = t0.Gather(s0_s, r1.zw).xyzw; - r1.xyzw = cb0[84].zzzz * r1.wzxy + cb0[84].wwww; - r1.xyzw = float4(1,1,1,1) / r1.xyzw; - x0[8].x = r1.x; - x0[12].x = r1.y; - x0[9].x = r1.z; - x0[13].x = r1.w; - bitmask.x = ((~(-1 << 30)) << 2) & 0xffffffff; r0.x = (((uint)r0.x << 2) & bitmask.x) | ((uint)2 & ~bitmask.x); - bitmask.y = ((~(-1 << 30)) << 2) & 0xffffffff; r0.y = (((uint)r0.y << 2) & bitmask.y) | ((uint)2 & ~bitmask.y); - r0.xy = (uint2)r0.xy; - r0.zw = cb0[82].zw * r0.xy; - r1.xyzw = t0.Gather(s0_s, r0.zw).xyzw; - r1.xyzw = cb0[84].zzzz * r1.wzxy + cb0[84].wwww; - r1.xyzw = float4(1,1,1,1) / r1.xyzw; - x0[10].x = r1.x; - x0[14].x = r1.y; - x0[11].x = r1.z; - x0[15].x = r1.w; - r1.z = -1; - r2.xyzw = float4(0,0,0,0); - r1.xyw = float3(0,0,1.40129846e-45); - while (true) { - r3.x = cmp((int)r1.w < 3); - if (r3.x != 0) { - r3.x = (uint)r1.w << 2; - r3.yz = float2(0,0); - r4.xy = r1.yx; - r3.w = r2.x; - r4.z = r2.y; - r4.w = 1; - while (true) { - r5.x = cmp((int)r4.w < 3); - if (r5.x != 0) { - r5.x = (int)r3.x + (int)r4.w; - r5.x = x0[r5.x+0].x; - r6.xy = r3.yz; - r6.z = 0; - while (true) { - r5.y = cmp((int)r6.z < 4); - if (r5.y != 0) { - r5.y = (int)r4.w + (int)icb[r6.z+4].y; - r5.z = cmp((uint)r6.z < 2); - r5.z = r5.z ? -1 : 1; - r5.z = (int)r1.w + (int)r5.z; - r5.z = (uint)r5.z << 2; - r5.y = (int)r5.y + (int)r5.z; - r5.y = x0[r5.y+0].x; - r5.y = r5.x + -r5.y; - r5.y = cmp(5 < abs(r5.y)); - if (r5.y != 0) { - r6.xy = float2(-1,0.5); - break; - } - r6.z = (int)r6.z + 1; - continue; - } else { - r6.xy = r4.yx; - break; - } - } - r4.xy = r6.yx; - if (r4.y != 0) { - r3.w = -1; - r4.z = r4.x; - break; - } - r4.w = (int)r4.w + 1; - r3.yz = r4.yx; - continue; - } else { - r3.w = r4.y; - r4.z = r4.x; - break; - } - } - r1.x = r3.w; - r1.y = r4.z; - if (r1.x != 0) { - r2.zw = r1.yz; - break; - } - r1.w = (int)r1.w + 1; - r2.xy = r1.xy; - continue; - } else { - r2.zw = r1.yx; - break; - } - } - if (r2.w == 0) { - r1.x = (int)cb2[35].x; - r1.x = cmp(0 < (int)r1.x); - if (r1.x != 0) { - r1.xy = r0.zw * float2(2,2) + float2(-1,-1); - r1.zw = float2(0.5,0.5) + r0.xy; - r1.zw = cb0[82].zw * r1.zw; - r1.z = t0.SampleLevel(s0_s, r1.zw, 0).x; - r3.xyzw = cb0[25].xyzw * -r1.yyyy; - r3.xyzw = cb0[24].xyzw * r1.xxxx + r3.xyzw; - r1.xyzw = cb0[26].xyzw * r1.zzzz + r3.xyzw; - r1.xyzw = cb0[27].xyzw + r1.xyzw; - r1.xyz = r1.xyz / r1.www; - r0.zw = t2.SampleLevel(s1_s, r0.zw, 0).xy; - r2.xyw = ddy_coarse(r1.zxy); - r3.xyz = ddx_coarse(r1.yzx); - r4.xyz = r3.xyz * r2.xyw; - r2.xyw = r2.wxy * r3.yzx + -r4.xyz; - r1.w = dot(r2.xyw, r2.xyw); - r1.w = max(1.17549435e-38, r1.w); - r1.w = rsqrt(r1.w); - r2.xyw = r2.xyw * r1.www; - r3.xyz = -cb2[20].xyz + r1.xyz; - r4.xyz = -cb2[21].xyz + r1.xyz; - r5.xyz = -cb2[22].xyz + r1.xyz; - r6.xyz = -cb2[23].xyz + r1.xyz; - r3.x = dot(r3.xyz, r3.xyz); - r3.y = dot(r4.xyz, r4.xyz); - r3.z = dot(r5.xyz, r5.xyz); - r3.w = dot(r6.xyz, r6.xyz); - r4.x = cmp(r3.x < cb2[20].w); - r4.y = cmp(r3.y < cb2[21].w); - r4.z = cmp(r3.z < cb2[22].w); - r4.w = cmp(r3.w < cb2[23].w); - r5.xyzw = r4.xyzw ? float4(1,1,1,1) : 0; - r4.xyz = r4.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0); - r4.xyz = r5.yzw + r4.xyz; - r5.yzw = max(float3(0,0,0), r4.xyz); - r1.w = dot(r5.xyzw, float4(4,3,2,1)); - r1.w = 4 + -r1.w; - r1.w = max(0, r1.w); - r1.w = min(3, r1.w); - r4.x = 1 + r1.w; - r4.x = min(3, r4.x); - r4.x = (uint)r4.x; - r4.y = dot(r3.yzw, icb[r4.x+0].yzw); - r4.x = r4.y / cb2[r4.x+20].w; - r4.y = cmp(r4.x >= 0); - r4.x = cmp(1 >= r4.x); - r4.x = r4.x ? r4.y : 0; - if (r4.x != 0) { - r4.x = (uint)r1.w; - r0.xy = float2(2.08299994,4.8670001) + r0.xy; - r0.x = dot(r0.xy, float2(0.0671105608,0.00583714992)); - r0.x = frac(r0.x); - r0.x = 52.9829178 * r0.x; - r0.x = frac(r0.x); - r0.y = dot(r3.xyzw, icb[r4.x+0].xyzw); - r0.y = r0.y / cb2[r4.x+20].w; - r0.y = sqrt(r0.y); - r0.y = -0.899999976 + r0.y; - r0.y = 12 * r0.y; - r0.x = cmp(r0.y >= r0.x); - r0.x = r0.x ? 1.000000 : 0; - r1.w = r1.w + r0.x; - } - r0.x = dot(r2.xyw, cb1[0].xyz); - r0.x = max(0, r0.x); - r0.x = min(0.899999976, r0.x); - r0.x = 1 + -r0.x; - r0.y = (uint)r1.w; - r3.x = (uint)r0.y << 2; - r0.xy = cb2[r0.y+24].xy * r0.xx; - r0.z = cmp(r0.z >= 0.999989986); - r0.z = r0.z ? 1.000000 : 0; - r0.z = r0.z * r0.w; - r0.z = 4 * r0.z; - r0.x = max(r0.x, r0.z); - r0.xzw = -cb1[0].xyz * r0.xxx + r1.xyz; - r0.xyz = r2.xyw * r0.yyy + r0.xzw; - r1.xyz = cb2[r3.x+1].xyz * r0.yyy; - r0.xyw = cb2[r3.x+0].xyz * r0.xxx + r1.xyz; - r0.xyz = cb2[r3.x+2].xyz * r0.zzz + r0.xyw; - r0.xyz = cb2[r3.x+3].xyz + r0.xyz; - r1.xyz = cmp(float3(0,0,0) >= r0.xyz); - r2.xyw = cmp(r0.xyz >= float3(1,1,1)); - r1.xyz = (int3)r1.xyz | (int3)r2.xyw; - r0.w = (int)r1.y | (int)r1.x; - r0.w = (int)r1.z | (int)r0.w; - r0.w = cmp((int)r0.w == 0); - r1.x = (int)r0.z & 0x7fffffff; - r1.x = cmp(0x7f800000 < (uint)r1.x); - r0.w = (int)r0.w | (int)r1.x; - if (r0.w != 0) { - r0.w = (int)r1.w; - r0.xy = r0.xy * cb2[r0.w+28].zw + cb2[r0.w+28].xy; - r0.w = dot(cb2[33].xyzw, icb[r0.w+0].xyzw); - r1.xyz = float3(0,0,0); - while (true) { - r1.w = cmp((uint)r1.z >= 16); - if (r1.w != 0) break; - r2.x = dot(icb[r1.z+4].zw, float2(-0.313973814,0.949431717)); - r2.y = dot(icb[r1.z+4].zw, float2(-0.949431717,-0.313973814)); - r2.xy = r2.xy * r0.ww + r0.xy; - r3.xyzw = t1.Gather(s1_s, r2.xy).xyzw; - r3.xyzw = r3.xyzw + -r0.zzzz; - r4.xyzw = cmp(r3.xyzw >= float4(0,0,0,0)); - r4.xyzw = r4.xyzw ? float4(1,1,1,1) : 0; - r1.w = dot(r4.xyzw, float4(1,1,1,1)); - r2.x = r1.x + r1.w; - r1.w = dot(r3.xyzw, r4.xyzw); - r2.y = r1.y + r1.w; - r1.w = (int)r1.z + 1; - r1.xy = r2.xy; - r1.xyz = r1.xyw; - continue; - } - r0.x = r1.x * 0.03125 + -1; - r0.y = cmp(0 < r0.x); - r0.w = cmp(r0.x < 0); - r0.y = (int)-r0.y + (int)r0.w; - r0.y = (int)r0.y; - r0.x = -r0.y * r0.x + 1; - r0.w = r0.x * r0.x; - r1.z = r0.w * r0.x; - r1.x = 1 / r1.x; - r1.x = r1.y * r1.x; - r0.z = 1 / r0.z; - r0.z = saturate(r1.x * r0.z); - r0.x = -r0.w * r0.x + r0.x; - r0.x = r0.z * r0.x + r1.z; - r0.x = 1 + -r0.x; - r0.x = r0.x * r0.y; - o0.x = -r0.x * 0.5 + 0.5; - } else { - o0.x = 1; - } - } else { - o0.x = cb2[35].z; - } - } else { - o0.x = r2.z; - } - return; -} diff --git a/src/games/endfield/shadows/0xE9345161.cso b/src/games/endfield/shadows/0xE9345161.cso new file mode 100644 index 0000000000000000000000000000000000000000..27293b39aa2736680e574c4317b22f63bb8b33e8 GIT binary patch literal 360 zcmZ>XaB|+>a*W3|A(@$%#q}dw>aq)r3=9kzK!O=a>i}^J5bpqD&tP}I03gi-#2i3u z0mL8xQV&uK0{lSi0%k!7kT_T#$OsOL56CahEXmBzV+e7LaQ62Pa$#7#dbK~$T#!8= zbs%#UfEWfq`u_s~BOh45OKL$$21rk^hik+Npd83OT0oq|!N3>=az=sxkjKCfA;G}H zPyk_vhB7cD2{14l2?&7gNCkR<@c__|AR4GPmw}=C5CcPlbEqi8CkBWfH>g^-ItZT& hYOXN@1G^Da%{5ktTpN@Rlw$*#D+T3qL1{an*8s=SFI)fs literal 0 HcmV?d00001 diff --git a/src/games/endfield/shadows/0xE9345161.ps_5_0.hlsl b/src/games/endfield/shadows/0xE9345161.ps_5_0.hlsl deleted file mode 100644 index be0d706fe3..0000000000 --- a/src/games/endfield/shadows/0xE9345161.ps_5_0.hlsl +++ /dev/null @@ -1,26 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Sun Feb 15 13:39:39 2026 -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float oDepth : SV_Depth) -{ - float4 r0; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xyzw = t0.Gather(s0_s, v1.xy).xyzw; - r0.xy = min(r0.xz, r0.yw); - oDepth = min(r0.x, r0.y); - return; -} \ No newline at end of file diff --git a/src/games/endfield/shadows/character-capsule-ao_0xB4E7E6D9.ps_5_0.hlsl b/src/games/endfield/shadows/character-capsule-ao_0xB4E7E6D9.ps_5_0.hlsl deleted file mode 100644 index 282da5d75a..0000000000 --- a/src/games/endfield/shadows/character-capsule-ao_0xB4E7E6D9.ps_5_0.hlsl +++ /dev/null @@ -1,257 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Sat Jan 24 03:28:04 2026 -// ============================================================================ -// CAPSULE/TUBE LIGHT - SPHERICAL HARMONICS PROBE SHADER -// ============================================================================ -// This shader computes spherical harmonics (SH) lighting contributions from -// capsule/tube shaped light sources. It ray-marches along the capsule and -// accumulates SH coefficients for indirect lighting. -// -// Textures: -// t0: Depth buffer -// t1: Light attenuation/falloff lookup texture (256x1 or similar) -// t2: GBuffer normals (octahedral encoded) -// -// Constant Buffers: -// cb0[24-27]: Inverse projection matrix for depth reconstruction -// cb1[1]: SH coefficient scaling -// cb1[4]: Screen parameters (xy = dimensions, zw = 1/dimensions) -// cb2[n+1]: Capsule endpoint 1 (xyz) + radius (w) -// cb2[n+2]: Capsule endpoint 2 (xyz) + influence radius (w) -// cb2[n+3]: Capsule direction (xyz) + intensity (w) -// ============================================================================ - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb2 : register(b2) -{ - float4 cb2[385]; -} - -cbuffer cb1 : register(b1) -{ - float4 cb1[5]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[28]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - nointerpolation uint v3 : TEXCOORD2, // Light/probe instance index - out float4 o0 : SV_Target0) // Output: Spherical Harmonics coefficients (L0 + L1) -{ - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9; - uint4 bitmask, uiDest; - float4 fDest; - - // ========================================================================== - // SCREEN TO UV CONVERSION - // ========================================================================== - r0.xy = cb1[4].zw * v0.xy; // Convert screen position to UV (0-1) - r0.zw = r0.xy * float2(2,2) + float2(-1,-1); // Convert to NDC (-1 to 1) - - // ========================================================================== - // DEPTH BUFFER SAMPLING & WORLD POSITION RECONSTRUCTION - // ========================================================================== - r1.x = t0.SampleLevel(s0_s, r0.xy, 0).x; // Sample depth buffer - - // Reconstruct view/world position from depth using inverse projection - r2.xyzw = cb0[25].xyzw * -r0.wwww; // Inverse projection row 2 * -NDC.y - r2.xyzw = cb0[24].xyzw * r0.zzzz + r2.xyzw; // + Inverse projection row 1 * NDC.x - r1.xyzw = cb0[26].xyzw * r1.xxxx + r2.xyzw; // + Inverse projection row 3 * depth - r1.xyzw = cb0[27].xyzw + r1.xyzw; // + Inverse projection row 4 (translation) - r1.xyz = r1.xyz / r1.www; // Perspective divide -> world position - - // ========================================================================== - // CAPSULE LIGHT SETUP - // ========================================================================== - r0.z = cb1[4].y * 0.5; // Half screen height - r0.w = (int)v3.x * 3; // Light data offset (3 float4s per light) - r0.z = cb2[r0.w+2].w * r0.z; // Influence radius scaled by screen - - // Calculate capsule center (midpoint between endpoints) - r2.xyz = cb2[r0.w+2].xyz + cb2[r0.w+1].xyz; // endpoint1 + endpoint2 - r2.xyz = r2.xyz * float3(0.5,0.5,0.5) + -r1.xyz; // Center - worldPos - - // Distance from pixel to capsule center - r1.w = dot(r2.xyz, r2.xyz); - r1.w = sqrt(r1.w); - - // ========================================================================== - // EARLY OUT: CHECK IF PIXEL IS WITHIN INFLUENCE RADIUS - // ========================================================================== - r2.x = cmp(r0.z >= r1.w); // Is distance < influence radius? - if (r2.x != 0) { - // ======================================================================== - // GBUFFER NORMAL DECODING (Octahedral mapping) - // ======================================================================== - r0.xy = t2.SampleLevel(s1_s, r0.xy, 0).xy; // Sample encoded normal - r0.xy = r0.xy * float2(2,2) + float2(-1,-1); // Decode from 0-1 to -1 to 1 - - // Octahedral normal decoding - r2.x = dot(float2(1,1), abs(r0.xy)); // Sum of absolute values - r2.y = 1 + -r2.x; // Z component estimation - r2.w = cmp(r2.y < 0); // Check if on bottom hemisphere - r3.xy = cmp(r0.xy >= float2(0,0)); // Sign of XY - r3.zw = float2(1,1) + -abs(r0.yx); // Reflected coordinates - r3.xy = r3.xy ? float2(1,1) : float2(-1,-1); - r3.xy = r3.zw * r3.xy; // Apply sign - r2.xz = r2.ww ? r3.xy : r0.xy; // Choose based on hemisphere - - // Normalize the decoded normal - r0.x = dot(r2.xyz, r2.xyz); - r0.x = rsqrt(r0.x); - r2.xyz = r2.xyz * r0.xxx; // Final world normal - - // ======================================================================== - // RAY MARCH SETUP ALONG CAPSULE - // ======================================================================== - r0.x = cb1[4].x * 1.20000005; // Step size base - r0.y = cb2[r0.w+1].w * r0.x; // Capsule radius * step size - r2.w = cb2[r0.w+2].w / r0.y; // Number of steps - r2.w = ceil(r2.w); - r2.w = (uint)r2.w; - r2.w = (int)r2.w + -1; // Loop iteration count - - // Calculate step offset along capsule axis - r0.x = r0.x * cb2[r0.w+1].w + -cb2[r0.w+1].w; - r3.xyz = cb2[r0.w+3].xyz * r0.xxx + cb2[r0.w+1].xyz; // Start position - r0.x = cb2[r0.w+1].w + 9.99999975e-06; // Radius + epsilon - - // ======================================================================== - // RAY MARCH LOOP - ACCUMULATE SPHERICAL HARMONICS - // ======================================================================== - r4.y = 0.5; // V coordinate for attenuation LUT - r5.xyzw = float4(0,0,0,0); // Accumulated SH coefficients - r6.xyz = r3.xyz; // Current sample position - r3.w = 0; // Loop counter - - while (true) { - r4.z = cmp((uint)r3.w >= (uint)r2.w); - if (r4.z != 0) break; - - // -------------------------------------------------------------------- - // Calculate vector from world position to current sample point - // -------------------------------------------------------------------- - r7.xyz = r6.xyz + -r1.xyz; // Sample pos - world pos - r4.z = dot(r7.xyz, r7.xyz); - r4.z = sqrt(r4.z); // Distance to sample - r4.w = dot(r7.xyz, r2.xyz); // Project onto normal direction - - // Check capsule bounds - r6.w = cb2[r0.w+1].w + r4.w; // Distance + radius - r7.w = cmp(0 >= r4.w); // Behind surface? - r8.x = cmp(0 >= r6.w); // Outside capsule? - r8.y = cmp(r4.z < r0.x); // Within radius? - r8.y = r7.w ? r8.y : 0; - r8.x = (int)r8.y | (int)r8.x; - - if (r8.x == 0) { - // ------------------------------------------------------------------ - // CAPSULE INTERSECTION & ATTENUATION CALCULATION - // ------------------------------------------------------------------ - r8.x = cmp(cb2[r0.w+1].w >= abs(r4.w)); // Within capsule length? - if (r8.x != 0) { - // Calculate closest point on capsule surface - r8.xyz = -r2.xyz * r4.www + r6.xyz; // Clamp to capsule start - r9.xyz = r2.xyz * cb2[r0.w+1].www + r6.xyz; // Clamp to capsule end - r9.xyz = r9.xyz + r8.xyz; - r7.xyz = r9.xyz * float3(0.5,0.5,0.5) + -r1.xyz; // Midpoint - worldPos - - // Soft falloff calculation - if (r7.w != 0) { - r4.w = abs(r4.w) * abs(r4.w); - r4.w = cb2[r0.w+1].w * cb2[r0.w+1].w + -r4.w; - r4.w = sqrt(r4.w); // Perpendicular distance - r8.xyz = -r8.xyz + r1.xyz; - r7.w = dot(r8.xyz, r8.xyz); - r7.w = sqrt(r7.w); - r7.w = r7.w + -r4.w; - r4.w = r7.w / r4.w; - r4.w = min(1, r4.w); // Clamp attenuation - } else { - r4.w = 1; - } - r4.w = r4.w * r6.w; - r4.w = 0.5 * r4.w; // Half contribution - r6.w = dot(r7.xyz, r7.xyz); - r4.z = sqrt(r6.w); // Final distance - } else { - r4.w = cb2[r0.w+1].w; // Use full radius - } - - // ------------------------------------------------------------------ - // DIRECTION TO LIGHT SAMPLE (for SH projection) - // ------------------------------------------------------------------ - r6.w = dot(r7.xyz, r7.xyz); - r6.w = rsqrt(r6.w); - r7.xyz = r7.yzx * r6.www; // Normalized direction (YZX swizzle for SH) - - // Calculate attenuation based on distance - r4.w = r4.w * r4.w; - r4.w = r4.z * r4.z + -r4.w; - r4.w = sqrt(r4.w); - r4.z = r4.w / r4.z; - r4.z = r4.z * 255 + 0.5; // Scale to LUT range - r4.x = 0.00390625 * r4.z; // U coordinate (0-1) - - // ------------------------------------------------------------------ - // SAMPLE ATTENUATION LUT & COMPUTE SPHERICAL HARMONICS - // ------------------------------------------------------------------ - r4.xz = t1.SampleLevel(s1_s, r4.xy, 0).zw; // Sample attenuation LUT - r8.xy = r4.xz * cb1[1].xy + cb1[1].zw; // Scale and bias - r8.yzw = r8.yyy * r7.xyz; // Directional component * intensity - - // Spherical Harmonics basis coefficients: - // L0 (constant): Y_0^0 = 0.282094806 (1/(2*sqrt(pi))) - // L1 (linear): Y_1^-1, Y_1^0, Y_1^1 = ±0.488602489 (sqrt(3/(4*pi))) - r7.xyzw = float4(0.282094806,-0.488602489,0.488602489,-0.488602489) * r8.xyzw; - } else { - r7.xyzw = float4(0,0,0,0); // No contribution from this sample - } - - // Accumulate SH coefficients - r5.xyzw = r7.xyzw + r5.xyzw; - - // Move to next sample along capsule - r6.xyz = cb2[r0.w+3].xyz * r0.yyy + r6.xyz; - r3.w = (int)r3.w + 1; - } - - // ======================================================================== - // DISTANCE FALLOFF & FINAL OUTPUT - // ======================================================================== - r0.x = saturate(r1.w / r0.z); // Normalized distance (0-1) - r0.x = -0.300000012 + r0.x; // Shift falloff start - r0.x = 1.42857146 * r0.x; // Scale falloff curve - r0.x = max(0, r0.x); - r0.x = 1 + -r0.x; // Invert (1 at center, 0 at edge) - r0.x = cb2[r0.w+3].w * r0.x; // Apply light intensity - - // Output accumulated SH coefficients scaled by intensity - o0.xyzw = r5.xyzw * r0.xxxx; - } else { - // Outside influence radius - no contribution - o0.xyzw = float4(0,0,0,0); - } - return; -} diff --git a/src/games/endfield/shadows/screenspace-shadows_0x0C02AB31.cs_5_0.hlsl b/src/games/endfield/shadows/screenspace-shadows_0x0C02AB31.cs_5_0.hlsl index 40386e6949..a00afe8496 100644 --- a/src/games/endfield/shadows/screenspace-shadows_0x0C02AB31.cs_5_0.hlsl +++ b/src/games/endfield/shadows/screenspace-shadows_0x0C02AB31.cs_5_0.hlsl @@ -458,4 +458,4 @@ void main(uint3 vThreadIDInGroup : SV_GroupThreadID, uint3 vThreadGroupID : SV_G u0[r4.xy] = r6; return; -} \ No newline at end of file +} diff --git a/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl b/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl index 3ab5ea531c..c8f89c6a7c 100644 --- a/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl +++ b/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl @@ -81,7 +81,7 @@ void main( float2 v2 : TEXCOORD0, out float4 o0 : SV_Position0, out float4 o1 : TEXCOORD0, - out float4 o2 : TEXCOORD1, + out float2 o2 : TEXCOORD1, out float4 o3 : TEXCOORD2, out float4 o4 : TEXCOORD3, out float4 o5 : TEXCOORD4) @@ -127,7 +127,6 @@ void main( r3.xyzw = cb3[2].xyzw * v1.xyzw; o1.xyzw = r3.xyzw * r1.xyzw; o2.xy = v2.xy * cb3[5].xy + cb3[5].zw; - o2.zw = float2(0, 0); o3.xyzw = v0.xyzw; r1.xz = r0.zz != 0 ? cb5[8].yx : cb2[5].yx; r1.yw = r0.zz != 0 ? cb5[9].yx : cb2[6].yx; diff --git a/src/games/endfield/ui/ui10_0x65EB732F.ps_5_0.hlsl b/src/games/endfield/ui/ui10_0x65EB732F.ps_5_0.hlsl deleted file mode 100644 index 2891c3d216..0000000000 --- a/src/games/endfield/ui/ui10_0x65EB732F.ps_5_0.hlsl +++ /dev/null @@ -1,109 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Thu Jan 22 15:07:05 2026 - -#include "../shared.h" - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[33]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - float4 v6 : TEXCOORD5, - float4 v7 : TEXCOORD6, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2,r3,r4,r5; - uint4 bitmask, uiDest; - float4 fDest; - - r0.x = t2.Sample(s2_s, v2.xy).w; - r0.y = -v3.x + r0.x; - r0.y = cmp(r0.y < 0); - if (r0.y != 0) discard; - r0.x = v3.z + -r0.x; - r0.y = cb1[22].w * cb1[6].x; - r0.z = cb1[22].w * cb1[4].y; - r0.yw = v3.yy * r0.yz; - r1.xyz = cb1[3].xyz * v1.xyz; - r2.xy = cb1[2].xy * cb0[0].yy + v6.xy; - r2.xyzw = t0.Sample(s0_s, r2.xy).xyzw; - r1.xyz = r2.xyz * r1.xyz; - r2.w = cb1[3].w * r2.w; - r3.xy = cb1[4].zw * cb0[0].yy + v6.zw; - r3.xyzw = t1.Sample(s1_s, r3.xy).xyzw; - r3.xyzw = cb1[5].xyzw * r3.xyzw; - r1.w = 0.5 * r0.y; - r2.xyz = r2.www * r1.xyz; - r3.xyz = r3.xyz * r3.www; - r1.xy = cb1[26].zw + -cb1[26].xy; - r1.xy = -abs(v4.xy) + r1.xy; - r1.xy = saturate(v4.zw * r1.xy); - r4.xyzw = max(cb1[26].xyzw, float4(-2e+10,-2e+10,-2e+10,-2e+10)); - r4.xyzw = min(float4(2e+10,2e+10,2e+10,2e+10), r4.xyzw); - r5.xy = v4.xy + r4.xy; - r5.xy = r5.xy + r4.zw; - r1.z = saturate(r0.x * v3.y + r1.w); - r0.y = min(1, r0.y); - r0.y = sqrt(r0.y); - r0.y = r1.z * r0.y; - r3.xyzw = r3.xyzw + -r2.xyzw; - r2.xyzw = r0.yyyy * r3.xyzw + r2.xyzw; - r0.x = r0.x * v3.y + -r1.w; - r0.x = r0.w * 0.5 + r0.x; - r0.y = r0.z * v3.y + 1; - r0.x = saturate(r0.x / r0.y); - r0.x = 1 + -r0.x; - r0.xyzw = r2.xyzw * r0.xxxx; - r1.x = r1.x * r1.y; - r0.xyzw = r1.xxxx * r0.xyzw; - r1.xy = r5.xy * float2(0.5,0.5) + -r4.xy; - r2.xyzw = float4(1,1,1,1) / cb1[32].xzyw; - r1.xy = saturate(r2.xz * r1.xy); - r1.zw = r1.xy * float2(-2,-2) + float2(3,3); - r1.xy = r1.xy * r1.xy; - r1.xy = r1.zw * r1.xy; - r1.zw = -r5.xy * float2(0.5,0.5) + r4.zw; - r1.zw = saturate(r1.zw * r2.yw); - r2.xy = r1.zw * float2(-2,-2) + float2(3,3); - r1.zw = r1.zw * r1.zw; - r1.zw = r2.xy * r1.zw; - r1.x = r1.x * r1.z; - r1.x = r1.x * r1.y; - r1.x = r1.x * r1.w; - r0.xyzw = r1.xxxx * r0.xyzw; - o0.xyzw = v1.wwww * r0.xyzw; - - if (UI_VISIBILITY < 0.5f) o0 = 0; - - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui13_0xFB212B37.ps_5_0.hlsl b/src/games/endfield/ui/ui13_0xFB212B37.ps_5_0.hlsl deleted file mode 100644 index 91725bd193..0000000000 --- a/src/games/endfield/ui/ui13_0xFB212B37.ps_5_0.hlsl +++ /dev/null @@ -1,142 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Sun Feb 1 19:44:23 2026 - -#include "../shared.h" - -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[12]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2; - uint4 bitmask, uiDest; - float4 fDest; - - r0.x = cb0[0].x * 0.00999999978; - r0.y = cmp(r0.x >= -r0.x); - r0.x = frac(abs(r0.x)); - r0.x = r0.y ? r0.x : -r0.x; - r0.y = 4000 * r0.x; - r0.y = floor(r0.y); - r0.y = 25 * r0.y; - r0.z = 8 * v2.y; - r0.z = floor(r0.z); - r0.y = r0.z * 0.125 + r0.y; - r0.y = dot(r0.yy, float2(12.9898005,78.2330017)); - r0.y = sin(r0.y); - r0.y = 43758.5469 * r0.y; - r0.y = frac(r0.y); - r0.y = 24 * r0.y; - r0.x = r0.x * r0.y; - r0.x = 1000 * r0.x; - r0.x = floor(r0.x); - r0.x = r0.x / r0.y; - r0.x = r0.x * 6 + v2.y; - r0.y = max(cb1[10].w, 0.00999999978); - r0.y = 8 * r0.y; - r0.z = r0.x * r0.y; - r0.x = 7 * r0.x; - r0.xz = floor(r0.xz); - r0.x = 0.142857149 * r0.x; - r0.x = dot(r0.xx, float2(12.9898005,78.2330017)); - r0.x = sin(r0.x); - r0.y = r0.z / r0.y; - r0.y = dot(r0.yy, float2(12.9898005,78.2330017)); - r0.y = sin(r0.y); - r0.xy = float2(43758.5469,43758.5469) * r0.xy; - r0.xy = frac(r0.xy); - r0.x = r0.y + r0.x; - r0.x = -1 + r0.x; - r0.y = cmp(0 < r0.x); - r0.z = cmp(r0.x < 0); - r0.x = -cb1[11].x + abs(r0.x); - r0.x = saturate(2.5 * r0.x); - r0.y = (int)-r0.y + (int)r0.z; - r0.y = (int)r0.y; - r0.x = r0.y * r0.x; - r0.x = cb1[11].y * r0.x; - r0.y = ceil(r0.x); - r1.x = 0.100000001 * r0.x; - r0.x = 1 + -r0.y; - r0.y = cmp(0.000000 == cb1[10].w); - r0.x = r0.y ? 1 : r0.x; - r1.yw = float2(0,0); - r0.yz = saturate(v2.xy + r1.xy); - r1.x = v2.y; - r1.y = cb0[0].x; - r0.w = dot(r1.xy, float2(12.9898005,78.2330017)); - r0.w = sin(r0.w); - r0.w = 43758.5469 * r0.w; - r0.w = frac(r0.w); - r0.w = r0.w * 2 + -1; - r1.x = cmp(abs(r0.w) >= cb1[11].z); - r1.x = r1.x ? 1.000000 : 0; - r1.x = cb1[11].w * r1.x; - r1.z = r1.x * r0.w; - r0.yz = r0.yz + r1.zw; - r0.yz = frac(r0.yz); - r1.xy = v2.xy + -r0.yz; - r0.xy = r0.xx * r1.xy + r0.yz; - r0.xyzw = t0.Sample(s0_s, r0.xy).xyzw; - r1.x = cmp(0.000000 != cb1[10].z); - r0.w = r1.x ? 1 : r0.w; - r0.xyzw = cb1[3].xyzw + r0.xyzw; - r1.x = 255 * v1.w; - r1.x = round(r1.x); - r1.w = 0.00392156886 * r1.x; - r1.xyz = v1.xyz; - r0.xyzw = r1.xyzw * r0.xyzw; - r1.xy = cb1[4].zw + -cb1[4].xy; - r1.xy = -abs(v4.xy) + r1.xy; - r1.xy = saturate(v4.zw * r1.xy); - r1.x = r1.x * r1.y; - r0.w = r1.x * r0.w; - r1.xyzw = max(cb1[4].xyzw, float4(-2e+10,-2e+10,-2e+10,-2e+10)); - r1.xyzw = min(float4(2e+10,2e+10,2e+10,2e+10), r1.xyzw); - r2.xy = v4.xy + r1.xy; - r2.xy = r2.xy + r1.zw; - r1.xy = r2.xy * float2(0.5,0.5) + -r1.xy; - r1.zw = -r2.xy * float2(0.5,0.5) + r1.zw; - r2.xyzw = float4(1,1,1,1) / cb1[8].xzyw; - r1.xyzw = saturate(r2.xzyw * r1.xyzw); - r2.xy = r1.xy * float2(-2,-2) + float2(3,3); - r1.xy = r1.xy * r1.xy; - r1.xy = r2.xy * r1.xy; - r2.xy = r1.zw * float2(-2,-2) + float2(3,3); - r1.zw = r1.zw * r1.zw; - r1.zw = r2.xy * r1.zw; - r1.x = r1.x * r1.z; - r1.x = r1.x * r1.y; - r1.x = r1.x * r1.w; - r0.w = r1.x * r0.w; - o0.xyz = r0.xyz * r0.www; - o0.w = cb1[9].z * -r0.w + r0.w; - - if (UI_VISIBILITY < 0.5f) o0 = 0; - - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui14_0xB084133A.ps_5_0.hlsl b/src/games/endfield/ui/ui14_0xB084133A.ps_5_0.hlsl deleted file mode 100644 index 695d43f442..0000000000 --- a/src/games/endfield/ui/ui14_0xB084133A.ps_5_0.hlsl +++ /dev/null @@ -1,95 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Sun Feb 8 01:22:43 2026 -#include "../shared.h" - -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[4]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float4 o0 : SV_Target0) -{ - float4 r0,r1; - uint4 bitmask, uiDest; - float4 fDest; - - r0.x = cb0[0].x * 40; - r0.x = floor(r0.x); - r0.x = 25 * r0.x; - r0.y = 8 * v1.y; - r0.y = floor(r0.y); - r0.x = r0.y * 0.125 + r0.x; - r0.x = dot(r0.xx, float2(12.9898005,78.2330017)); - r0.x = sin(r0.x); - r0.x = 43758.5469 * r0.x; - r0.x = frac(r0.x); - r0.x = 24 * r0.x; - r0.y = cb0[0].x * r0.x; - r0.y = 10 * r0.y; - r0.y = floor(r0.y); - r0.x = r0.y / r0.x; - r0.x = r0.x * 6 + v1.y; - r0.y = cb1[2].x * 8; - r0.z = r0.x * r0.y; - r0.x = 7 * r0.x; - r0.xz = floor(r0.xz); - r0.x = 0.142857149 * r0.x; - r0.x = dot(r0.xx, float2(12.9898005,78.2330017)); - r0.x = sin(r0.x); - r0.y = r0.z / r0.y; - r0.y = dot(r0.yy, float2(12.9898005,78.2330017)); - r0.y = sin(r0.y); - r0.xy = float2(43758.5469,43758.5469) * r0.xy; - r0.xy = frac(r0.xy); - r0.x = r0.y + r0.x; - r0.x = -1 + r0.x; - r0.y = cmp(0 < r0.x); - r0.z = cmp(r0.x < 0); - r0.x = -cb1[2].y + abs(r0.x); - r0.x = saturate(2.5 * r0.x); - r0.y = (int)-r0.y + (int)r0.z; - r0.y = (int)r0.y; - r0.x = r0.y * r0.x; - r0.x = cb1[2].z * r0.x; - r0.y = ceil(r0.x); - r1.x = 0.100000001 * r0.x; - r0.x = 1 + -r0.y; - r1.yw = float2(0,0); - r0.yz = saturate(v1.xy + r1.xy); - r1.x = v1.y; - r1.y = cb0[0].x; - r0.w = dot(r1.xy, float2(12.9898005,78.2330017)); - r0.w = sin(r0.w); - r0.w = 43758.5469 * r0.w; - r0.w = frac(r0.w); - r0.w = r0.w * 2 + -1; - r1.x = cmp(abs(r0.w) >= cb1[2].w); - r1.x = r1.x ? 1.000000 : 0; - r1.x = cb1[3].x * r1.x; - r1.z = r1.x * r0.w; - r0.yz = r0.yz + r1.zw; - r0.yz = frac(r0.yz); - r1.xy = v1.xy + -r0.yz; - r0.xy = r0.xx * r1.xy + r0.yz; - o0.xyzw = t0.Sample(s0_s, r0.xy).xyzw; - if (UI_VISIBILITY < 0.5f) o0 = 0; - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui15_0x25054A9A.ps_5_0.hlsl b/src/games/endfield/ui/ui15_0x25054A9A.ps_5_0.hlsl deleted file mode 100644 index 0dcc02d512..0000000000 --- a/src/games/endfield/ui/ui15_0x25054A9A.ps_5_0.hlsl +++ /dev/null @@ -1,97 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Sun Feb 8 01:22:43 2026 -#include "../shared.h" - -Texture2D t3 : register(t3); - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s3_s : register(s3); - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[31]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float2 v2 : TEXCOORD1, - float2 w2 : TEXCOORD7, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - float4 v6 : TEXCOORD5, - float4 v7 : TEXCOORD6, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2,r3; - uint4 bitmask, uiDest; - float4 fDest; - - r0.x = t2.Sample(s2_s, v2.xy).w; - r0.y = -v3.x + r0.x; - r0.y = cmp(r0.y < 0); - if (r0.y != 0) discard; - r0.x = v3.z + -r0.x; - r0.y = cb1[22].w * cb1[6].x; - r0.z = cb1[22].w * cb1[4].y; - r0.yw = v3.yy * r0.yz; - r1.xyz = cb1[3].xyz * v1.xyz; - r2.xy = cb1[2].xy * cb0[0].yy + v6.xy; - r2.xyzw = t0.Sample(s0_s, r2.xy).xyzw; - r1.xyz = r2.xyz * r1.xyz; - r2.w = cb1[3].w * r2.w; - r3.xy = cb1[4].zw * cb0[0].yy + v6.zw; - r3.xyzw = t1.Sample(s1_s, r3.xy).xyzw; - r3.xyzw = cb1[5].xyzw * r3.xyzw; - r1.w = 0.5 * r0.y; - r2.xyz = r2.www * r1.xyz; - r3.xyz = r3.xyz * r3.www; - r1.x = saturate(r0.x * v3.y + r1.w); - r0.y = min(1, r0.y); - r0.y = sqrt(r0.y); - r0.y = r1.x * r0.y; - r3.xyzw = r3.xyzw + -r2.xyzw; - r2.xyzw = r0.yyyy * r3.xyzw + r2.xyzw; - r0.x = r0.x * v3.y + -r1.w; - r0.x = r0.w * 0.5 + r0.x; - r0.y = r0.z * v3.y + 1; - r0.x = saturate(r0.x / r0.y); - r0.x = 1 + -r0.x; - r0.xyzw = r2.xyzw * r0.xxxx; - r1.xy = w2.xy * cb1[30].xy + cb1[30].zw; - r1.x = t3.Sample(s3_s, r1.xy).w; - r1.yz = cmp(float2(1,1) >= w2.xy); - r1.yz = r1.yz ? float2(1,1) : 0; - r2.xy = cmp(float2(0,0) >= -w2.xy); - r2.xy = r2.xy ? float2(1,1) : 0; - r1.yz = r2.xy * r1.yz; - r1.x = r1.x * r1.y; - r1.x = saturate(r1.x * r1.z); - r1.x = v1.w * r1.x; - o0.xyzw = r1.xxxx * r0.xyzw; - if (UI_VISIBILITY < 0.5f) o0 = 0; - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui4_0xB75B5932.ps_5_0.hlsl b/src/games/endfield/ui/ui4_0xB75B5932.ps_5_0.hlsl deleted file mode 100644 index 21d21482b3..0000000000 --- a/src/games/endfield/ui/ui4_0xB75B5932.ps_5_0.hlsl +++ /dev/null @@ -1,110 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Thu Jan 22 11:53:21 2026 -#include "../shared.h" - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[33]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - float4 v6 : TEXCOORD5, - float4 v7 : TEXCOORD6, - float4 v8 : TEXCOORD7, - float4 v9 : TEXCOORD8, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = cb1[4].zw * cb0[0].yy + v8.zw; - r0.xyzw = t1.Sample(s1_s, r0.xy).xyzw; - r0.xyzw = cb1[5].xyzw * r0.xyzw; - r0.xyz = r0.xyz * r0.www; - r1.xyz = cb1[3].xyz * v1.xyz; - r2.xy = cb1[2].xy * cb0[0].yy + v8.xy; - r2.xyzw = t0.Sample(s0_s, r2.xy).xyzw; - r1.xyz = r2.xyz * r1.xyz; - r2.w = cb1[3].w * r2.w; - r2.xyz = r2.www * r1.xyz; - r0.xyzw = -r2.xyzw + r0.xyzw; - r1.x = cb1[22].w * cb1[6].x; - r1.x = v3.y * r1.x; - r1.y = min(1, r1.x); - r1.x = 0.5 * r1.x; - r1.y = sqrt(r1.y); - r1.z = t2.Sample(s2_s, v2.xy).w; - r1.z = v3.z + -r1.z; - r1.w = saturate(r1.z * v3.y + r1.x); - r1.x = r1.z * v3.y + -r1.x; - r1.y = r1.w * r1.y; - r0.xyzw = r1.yyyy * r0.xyzw + r2.xyzw; - r1.y = cb1[22].w * cb1[4].y; - r1.z = v3.y * r1.y; - r1.y = r1.y * v3.y + 1; - r1.x = r1.z * 0.5 + r1.x; - r1.x = saturate(r1.x / r1.y); - r1.x = 1 + -r1.x; - r2.xyzw = r1.xxxx * r0.xyzw; - r0.x = -r0.w * r1.x + 1; - r0.y = t2.Sample(s2_s, v6.xy).w; - r0.y = saturate(r0.y * v6.z + -v6.w); - r1.xyzw = v7.xyzw * r0.yyyy; - r0.xyzw = r1.xyzw * r0.xxxx + r2.xyzw; - r1.xy = cb1[26].zw + -cb1[26].xy; - r1.xy = -abs(v4.xy) + r1.xy; - r1.xy = saturate(v4.zw * r1.xy); - r1.x = r1.x * r1.y; - r0.xyzw = r1.xxxx * r0.xyzw; - r1.xyzw = max(cb1[26].xyzw, float4(-2e+10,-2e+10,-2e+10,-2e+10)); - r1.xyzw = min(float4(2e+10,2e+10,2e+10,2e+10), r1.xyzw); - r2.xy = v4.xy + r1.xy; - r2.xy = r2.xy + r1.zw; - r1.xy = r2.xy * float2(0.5,0.5) + -r1.xy; - r1.zw = -r2.xy * float2(0.5,0.5) + r1.zw; - r2.xyzw = float4(1,1,1,1) / cb1[32].xzyw; - r1.xyzw = saturate(r2.xzyw * r1.xyzw); - r2.xy = r1.xy * float2(-2,-2) + float2(3,3); - r1.xy = r1.xy * r1.xy; - r1.xy = r2.xy * r1.xy; - r2.xy = r1.zw * float2(-2,-2) + float2(3,3); - r1.zw = r1.zw * r1.zw; - r1.zw = r2.xy * r1.zw; - r1.x = r1.x * r1.z; - r1.x = r1.x * r1.y; - r1.x = r1.x * r1.w; - r0.xyzw = r1.xxxx * r0.xyzw; - o0.xyzw = v1.wwww * r0.xyzw; - if (UI_VISIBILITY < 0.5f) o0 = 0; - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/ui7_0xEC4B4DDC.ps_5_0.hlsl b/src/games/endfield/ui/ui7_0xEC4B4DDC.ps_5_0.hlsl deleted file mode 100644 index 11079d45e4..0000000000 --- a/src/games/endfield/ui/ui7_0xEC4B4DDC.ps_5_0.hlsl +++ /dev/null @@ -1,87 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Thu Jan 22 11:53:21 2026 -#include "../shared.h" - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[23]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - float4 v6 : TEXCOORD5, - float4 v7 : TEXCOORD6, - float4 v8 : TEXCOORD7, - float4 v9 : TEXCOORD8, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = cb1[4].zw * cb0[0].yy + v8.zw; - r0.xyzw = t1.Sample(s1_s, r0.xy).xyzw; - r0.xyzw = cb1[5].xyzw * r0.xyzw; - r0.xyz = r0.xyz * r0.www; - r1.xyz = cb1[3].xyz * v1.xyz; - r2.xy = cb1[2].xy * cb0[0].yy + v8.xy; - r2.xyzw = t0.Sample(s0_s, r2.xy).xyzw; - r1.xyz = r2.xyz * r1.xyz; - r2.w = cb1[3].w * r2.w; - r2.xyz = r2.www * r1.xyz; - r0.xyzw = -r2.xyzw + r0.xyzw; - r1.x = cb1[22].w * cb1[6].x; - r1.x = v3.y * r1.x; - r1.y = min(1, r1.x); - r1.x = 0.5 * r1.x; - r1.y = sqrt(r1.y); - r1.z = t2.Sample(s2_s, v2.xy).w; - r1.z = v3.z + -r1.z; - r1.w = saturate(r1.z * v3.y + r1.x); - r1.x = r1.z * v3.y + -r1.x; - r1.y = r1.w * r1.y; - r0.xyzw = r1.yyyy * r0.xyzw + r2.xyzw; - r1.y = cb1[22].w * cb1[4].y; - r1.z = v3.y * r1.y; - r1.y = r1.y * v3.y + 1; - r1.x = r1.z * 0.5 + r1.x; - r1.x = saturate(r1.x / r1.y); - r1.x = 1 + -r1.x; - r2.xyzw = r1.xxxx * r0.xyzw; - r0.x = -r0.w * r1.x + 1; - r0.y = t2.Sample(s2_s, v6.xy).w; - r0.y = saturate(r0.y * v6.z + -v6.w); - r1.xyzw = v7.xyzw * r0.yyyy; - r0.xyzw = r1.xyzw * r0.xxxx + r2.xyzw; - o0.xyzw = v1.wwww * r0.xyzw; - if (UI_VISIBILITY < 0.5f) o0 = 0; - return; -} \ No newline at end of file diff --git a/src/games/endfield/ui/uid_0x6B8E9049.ps_5_0.hlsl b/src/games/endfield/ui/uid_0x6B8E9049.ps_5_0.hlsl deleted file mode 100644 index 6507086401..0000000000 --- a/src/games/endfield/ui/uid_0x6B8E9049.ps_5_0.hlsl +++ /dev/null @@ -1,86 +0,0 @@ -// ---- Created with 3Dmigoto v1.3.16 on Wed Jan 21 22:51:32 2026 -#include "../shared.h" -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - - - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[23]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[1]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float4 v5 : TEXCOORD4, - float4 v6 : TEXCOORD5, - float4 v7 : TEXCOORD6, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2,r3; - uint4 bitmask, uiDest; - float4 fDest; - - r0.x = t2.Sample(s2_s, v2.xy).w; - r0.y = -v3.x + r0.x; - r0.y = cmp(r0.y < 0); - if (r0.y != 0) discard; - r0.x = v3.z + -r0.x; - r0.y = cb1[22].w * cb1[6].x; - r0.z = cb1[22].w * cb1[4].y; - r0.yw = v3.yy * r0.yz; - r1.xyz = cb1[3].xyz * v1.xyz; - r2.xy = cb1[2].xy * cb0[0].yy + v6.xy; - r2.xyzw = t0.Sample(s0_s, r2.xy).xyzw; - r1.xyz = r2.xyz * r1.xyz; - r2.w = cb1[3].w * r2.w; - r3.xy = cb1[4].zw * cb0[0].yy + v6.zw; - r3.xyzw = t1.Sample(s1_s, r3.xy).xyzw; - r3.xyzw = cb1[5].xyzw * r3.xyzw; - r1.w = 0.5 * r0.y; - r2.xyz = r2.www * r1.xyz; - r3.xyz = r3.xyz * r3.www; - r1.x = saturate(r0.x * v3.y + r1.w); - r0.y = min(1, r0.y); - r0.y = sqrt(r0.y); - r0.y = r1.x * r0.y; - r3.xyzw = r3.xyzw + -r2.xyzw; - r2.xyzw = r0.yyyy * r3.xyzw + r2.xyzw; - r0.x = r0.x * v3.y + -r1.w; - r0.x = r0.w * 0.5 + r0.x; - r0.y = r0.z * v3.y + 1; - r0.x = saturate(r0.x / r0.y); - r0.x = 1 + -r0.x; - r0.xyzw = r2.xyzw * r0.xxxx; - o0.xyzw = v1.wwww * r0.xyzw; - - if (UI_VISIBILITY < 0.5f) { - o0 = 0; - } - return; -} \ No newline at end of file diff --git a/src/games/endfield/waterfalls/0x8C038DD0.cso b/src/games/endfield/waterfalls/0x8C038DD0.cso new file mode 100644 index 0000000000000000000000000000000000000000..249b8a013a09932c39fecaf722e26f32d0f7d4a2 GIT binary patch literal 53632 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 Date: Sun, 14 Jun 2026 02:03:39 +0200 Subject: [PATCH 25/40] fix(endfield): correct SDR swapchain output --- src/games/endfield/addon.cpp | 31 +++++++++++++++++++++++++------ src/games/endfield/shared.h | 4 ++-- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index e73075a2aa..7412ec498c 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -45,6 +45,29 @@ bool UsingSwapchainUtil() { || UsingSwapchainUpgrade()); } +void ApplySwapChainEncodingTarget(float encoding_value) { + const bool is_hdr10 = encoding_value == 4.f; + const bool is_scrgb = encoding_value == 5.f; + + if (is_hdr10) { + renodx::mods::swapchain::target_format = reshade::api::format::r10g10b10a2_unorm; + renodx::mods::swapchain::target_color_space = reshade::api::color_space::hdr10_st2084; + renodx::mods::swapchain::use_resize_buffer = false; + } else if (is_scrgb) { + renodx::mods::swapchain::target_format = reshade::api::format::r16g16b16a16_float; + renodx::mods::swapchain::target_color_space = reshade::api::color_space::extended_srgb_linear; + renodx::mods::swapchain::use_resize_buffer = false; + } else { + renodx::mods::swapchain::target_format = reshade::api::format::r8g8b8a8_unorm; + renodx::mods::swapchain::target_color_space = reshade::api::color_space::srgb_nonlinear; + renodx::mods::swapchain::use_resize_buffer = true; + } + + renodx::utils::device_proxy::SetTargetFormat(renodx::mods::swapchain::target_format); + renodx::utils::device_proxy::SetTargetColorSpace(renodx::mods::swapchain::target_color_space); + shader_injection.swap_chain_encoding_color_space = is_hdr10 ? 1.f : 0.f; +} + // Helper to update resolution-based uniform variables in ReShade effects void UpdateReshadeResolutionUniforms(reshade::api::effect_runtime* runtime, uint32_t width, uint32_t height) { float fwidth = static_cast(width); @@ -939,8 +962,7 @@ renodx::utils::settings::Settings settings = { .section = "Display Output", .labels = {"None", "SRGB", "2.2", "2.4", "HDR10", "scRGB"}, .on_change_value = [](float previous, float current) { - bool is_hdr10 = current == 4; - shader_injection.swap_chain_encoding_color_space = (is_hdr10 ? 1.f : 0.f); + ApplySwapChainEncodingTarget(current); }, .is_global = true, .is_visible = []() { return current_settings_mode >= 1; }, @@ -1274,10 +1296,7 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { { float encoding_value = 4.f; // default reshade::get_config_value(nullptr, renodx::utils::settings::global_name.c_str(), "SwapChainEncoding", encoding_value); - bool is_hdr10 = encoding_value == 4; - renodx::mods::swapchain::SetUseHDR10(is_hdr10); - renodx::mods::swapchain::use_resize_buffer = encoding_value < 4; - shader_injection.swap_chain_encoding_color_space = is_hdr10 ? 1.f : 0.f; + ApplySwapChainEncodingTarget(encoding_value); } { diff --git a/src/games/endfield/shared.h b/src/games/endfield/shared.h index 7d1cd83bc8..5b7595cde5 100644 --- a/src/games/endfield/shared.h +++ b/src/games/endfield/shared.h @@ -139,8 +139,8 @@ cbuffer shader_injection : register(b13) { #define RENODX_SWAP_CHAIN_GAMMA_CORRECTION shader_injection.swap_chain_gamma_correction // #define RENODX_SWAP_CHAIN_DECODING_COLOR_SPACE shader_injection.swap_chain_decoding_color_space #define RENODX_SWAP_CHAIN_CUSTOM_COLOR_SPACE shader_injection.swap_chain_custom_color_space -// #define RENODX_SWAP_CHAIN_SCALING_NITS shader_injection.swap_chain_scaling_nits -// #define RENODX_SWAP_CHAIN_CLAMP_NITS shader_injection.swap_chain_clamp_nits +#define RENODX_SWAP_CHAIN_SCALING_NITS (shader_injection.swap_chain_encoding < 4.f ? 1.f : shader_injection.graphics_white_nits) +#define RENODX_SWAP_CHAIN_CLAMP_NITS (shader_injection.swap_chain_encoding < 4.f ? 1.f : shader_injection.peak_white_nits) #define RENODX_SWAP_CHAIN_CLAMP_COLOR_SPACE shader_injection.swap_chain_clamp_color_space #define RENODX_SWAP_CHAIN_ENCODING shader_injection.swap_chain_encoding #define RENODX_SWAP_CHAIN_ENCODING_COLOR_SPACE shader_injection.swap_chain_encoding_color_space From dfd6869f4b43d9a716a52f1a49c7d22b50409cf0 Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Fri, 26 Jun 2026 02:51:06 +0200 Subject: [PATCH 26/40] fix(endfield): hide latency bar draw directly --- src/games/endfield/addon.cpp | 2 +- .../ui/latencybar_0x9BDC181F.vs_5_0.hlsl | 55 ------------------- 2 files changed, 1 insertion(+), 56 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 7412ec498c..bc8fc6fab4 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -213,10 +213,10 @@ bool is_uid_input_candidate = false; uint32_t draw_call_vertex_count = 0; // Track vertex count from draw calls (not draw_indexed) // on_draw callback for ping/latency bar shader (0xEF07F89A) -// Only used to set is_ping_drawn flag for UID detection - latency bar icon hiding is done in vertex shader bool OnPingDraw(reshade::api::command_list* cmd_list) { if (is_ping_input_candidate) { is_ping_drawn = true; + return shader_injection.ping_text_opacity >= 0.5f; } else { is_ping_drawn = false; } diff --git a/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl b/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl index c8f89c6a7c..7ef43cf3ab 100644 --- a/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl +++ b/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl @@ -1,6 +1,4 @@ -#include "../shared.h" - cbuffer cb5 : register(b5) { float4 cb5[45]; @@ -31,50 +29,6 @@ cbuffer cb0 : register(b0) float4 cb0[7]; } -// Latency bar icon vertex positions (12 vertices = 3 bars) -// Y coordinates are computed dynamically based on aspect ratio -// Formula: Y = offset - 1200.0 * (height/width) -// This ensures correct detection on both 16:9 and 21:9 (ultrawide) displays -float2 GetLatencyBarVert(int index) -{ - float aspect = UI_ASPECT_RATIO; - float base_y = 21.5 - 1200.0 * aspect; - - // X positions and Y offsets for each vertex - // Vertices form 3 bars: short (9px), medium (13px), tall (17px) - switch (index) - { - case 0: return float2(-1167.0, base_y); // bar1 bottom-left - case 1: return float2(-1167.0, 30.5 - 1200.0 * aspect); // bar1 top-left - case 2: return float2(-1162.0, 30.5 - 1200.0 * aspect); // bar1 top-right - case 3: return float2(-1162.0, base_y); // bar1 bottom-right - case 4: return float2(-1160.5, base_y); // bar2 bottom-left - case 5: return float2(-1160.5, 34.5 - 1200.0 * aspect); // bar2 top-left - case 6: return float2(-1155.5, 34.5 - 1200.0 * aspect); // bar2 top-right - case 7: return float2(-1155.5, base_y); // bar2 bottom-right - case 8: return float2(-1154.0, base_y); // bar3 bottom-left - case 9: return float2(-1154.0, 38.5 - 1200.0 * aspect); // bar3 top-left - case 10: return float2(-1149.0, 38.5 - 1200.0 * aspect); // bar3 top-right - case 11: return float2(-1149.0, base_y); // bar3 bottom-right - default: return float2(0, 0); - } -} - -// Check if this vertex is part of the latency bar icon -bool IsLatencyBarVertex(float2 pos) -{ - [unroll] - for (int i = 0; i < 12; i++) - { - float2 diff = abs(GetLatencyBarVert(i) - pos); - if (dot(diff, diff) < 1.0) - { - return true; - } - } - return false; -} - void main( float4 v0 : POSITION0, float4 v1 : COLOR0, @@ -144,14 +98,5 @@ void main( r0.xy = v0.xy * float2(2,2) + -r0.xy; o4.xy = r0.xy + -r0.zw; - if (PING_TEXT_OPACITY < 0.5) - { - if (IsLatencyBarVertex(v0.xy)) - { - - o0 = float4(0, 0, 0, 0); - } - } - return; } From 94072eb572ea84dde9a3dca136d1853b0bf7a9fa Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Fri, 26 Jun 2026 03:10:56 +0200 Subject: [PATCH 27/40] feat(endfield): split latency text visibility toggle --- src/games/endfield/addon.cpp | 95 ++++++++++++++++++++++++++++++++---- src/games/endfield/shared.h | 3 +- 2 files changed, 88 insertions(+), 10 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index bc8fc6fab4..36e2411d32 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -7,6 +7,7 @@ // #define DEBUG_LEVEL_0 +#include #include #include @@ -21,6 +22,7 @@ #include "../../utils/random.hpp" #include "../../utils/resource.hpp" #include "../../utils/settings.hpp" +#include "../../utils/state.hpp" #include "../../utils/swapchain.hpp" #include "./shared.h" @@ -212,11 +214,60 @@ bool is_ping_drawn = false; bool is_uid_input_candidate = false; uint32_t draw_call_vertex_count = 0; // Track vertex count from draw calls (not draw_indexed) +bool IsVisible(float value) { + return value >= 0.5f; +} + +reshade::api::rect IntersectRects(const reshade::api::rect& lhs, const reshade::api::rect& rhs) { + return { + .left = std::max(lhs.left, rhs.left), + .top = std::max(lhs.top, rhs.top), + .right = std::min(lhs.right, rhs.right), + .bottom = std::min(lhs.bottom, rhs.bottom), + }; +} + +bool DrawTextRegion( + reshade::api::command_list* cmd_list, + uint32_t index_count, + uint32_t instance_count, + uint32_t first_index, + int32_t vertex_offset, + uint32_t first_instance, + bool keep_latency_text) { + auto* current_state = renodx::utils::state::GetCurrentState(cmd_list); + if (current_state == nullptr || current_state->viewports.empty()) return false; + + const auto previous_state = *current_state; + const auto& viewport = current_state->viewports[0]; + const int32_t left = static_cast(viewport.x); + const int32_t top = static_cast(viewport.y); + const int32_t right = static_cast(viewport.x + viewport.width); + const int32_t bottom = static_cast(viewport.y + viewport.height); + if (right <= left || bottom <= top) return false; + + constexpr float kTextSplitFromHeight = 192.f / 2160.f; + const int32_t split_x = left + static_cast((bottom - top) * kTextSplitFromHeight + 0.5f); + reshade::api::rect clip_rect = keep_latency_text + ? reshade::api::rect{.left = left, .top = top, .right = split_x, .bottom = bottom} + : reshade::api::rect{.left = split_x, .top = top, .right = right, .bottom = bottom}; + + if (!current_state->scissor_rects.empty()) { + clip_rect = IntersectRects(clip_rect, current_state->scissor_rects[0]); + } + if (clip_rect.right <= clip_rect.left || clip_rect.bottom <= clip_rect.top) return true; + + cmd_list->bind_scissor_rects(0, 1, &clip_rect); + cmd_list->draw_indexed(index_count, instance_count, first_index, vertex_offset, first_instance); + previous_state.Apply(cmd_list); + return true; +} + // on_draw callback for ping/latency bar shader (0xEF07F89A) bool OnPingDraw(reshade::api::command_list* cmd_list) { if (is_ping_input_candidate) { is_ping_drawn = true; - return shader_injection.ping_text_opacity >= 0.5f; + return IsVisible(shader_injection.ping_text_opacity); } else { is_ping_drawn = false; } @@ -226,7 +277,8 @@ bool OnPingDraw(reshade::api::command_list* cmd_list) { // on_draw callback for UID text shader (0x6B8E9049) bool OnUIDDraw(reshade::api::command_list* cmd_list) { if (is_uid_input_candidate) { - if (shader_injection.status_text_opacity < 0.5f) { + if (!IsVisible(shader_injection.status_text_opacity) && + !IsVisible(shader_injection.latency_text_opacity)) { return false; } } @@ -636,19 +688,29 @@ renodx::utils::settings::Settings settings = { .binding = &shader_injection.status_text_opacity, .value_type = renodx::utils::settings::SettingValueType::INTEGER, .default_value = 0.f, - .label = "UID / Latency Text", + .label = "UID Text", .section = "User Interface & Video", .tooltip = "Toggle UID text visibility", .labels = {"Hidden", "Visible"}, }, - new renodx::utils::settings::Setting{ + new renodx::utils::settings::Setting{ + .key = "UIOpacityLatencyText", + .binding = &shader_injection.latency_text_opacity, + .value_type = renodx::utils::settings::SettingValueType::INTEGER, + .default_value = 0.f, + .label = "Latency Text", + .section = "User Interface & Video", + .tooltip = "Toggle latency text visibility", + .labels = {"Hidden", "Visible"}, + }, + new renodx::utils::settings::Setting{ .key = "UIOpacityPingText", .binding = &shader_injection.ping_text_opacity, .value_type = renodx::utils::settings::SettingValueType::INTEGER, .default_value = 0.f, .label = "Latency Bar", .section = "User Interface & Video", - .tooltip = "Toggle ping text visibility", + .tooltip = "Toggle latency bar visibility", .labels = {"Hidden", "Visible"}, }, new renodx::utils::settings::Setting{ @@ -1147,11 +1209,25 @@ bool OnDrawIndexed( // Reset vertex count after processing draw_call_vertex_count = 0; - if (is_uid_input_candidate && shader_injection.status_text_opacity < 0.5f) { - return true; + if (!is_uid_input_candidate) { + return false; } - - return false; + if (!IsVisible(shader_injection.ui_visibility)) return true; + + const bool show_uid_text = IsVisible(shader_injection.status_text_opacity); + const bool show_latency_text = IsVisible(shader_injection.latency_text_opacity); + if (show_uid_text && show_latency_text) return false; + if (!show_uid_text && !show_latency_text) return true; + + DrawTextRegion( + cmd_list, + index_count, + instance_count, + first_index, + vertex_offset, + first_instance, + show_latency_text); + return true; } void OnPresent(reshade::api::command_queue* queue, @@ -1520,6 +1596,7 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { renodx::utils::settings::Use(fdw_reason, &settings, &OnPresetOff); renodx::mods::swapchain::Use(fdw_reason, &shader_injection); renodx::mods::shader::Use(fdw_reason, custom_shaders, &shader_injection); + renodx::utils::state::Use(fdw_reason); renodx::utils::random::binds.push_back(&shader_injection.custom_random); renodx::utils::random::Use(fdw_reason); diff --git a/src/games/endfield/shared.h b/src/games/endfield/shared.h index 5b7595cde5..a4fc3ab7b6 100644 --- a/src/games/endfield/shared.h +++ b/src/games/endfield/shared.h @@ -80,7 +80,7 @@ struct ShaderInjectData { float reno_drt_tone_map_method; float status_text_opacity; float ping_text_opacity; - float ui_disable_ping; + float latency_text_opacity; float ui_disable_uid; float custom_random; float custom_grain_strength; @@ -148,6 +148,7 @@ cbuffer shader_injection : register(b13) { #define RENODX_VIDEO_NITS shader_injection.tone_map_video_nits #define RENODX_RENO_DRT_TONE_MAP_METHOD shader_injection.reno_drt_tone_map_method #define PING_TEXT_OPACITY shader_injection.ping_text_opacity +#define LATENCY_TEXT_OPACITY shader_injection.latency_text_opacity #define STATUS_TEXT_OPACITY shader_injection.status_text_opacity #define CUSTOM_RANDOM shader_injection.custom_random #define CUSTOM_GRAIN_STRENGTH shader_injection.custom_grain_strength From bcda2fa22ff788bba763fa45434db868f06803fa Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Fri, 26 Jun 2026 03:49:15 +0200 Subject: [PATCH 28/40] fix(endfield): match latency bar by vertex shader --- src/games/endfield/addon.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 36e2411d32..cb46cb6daa 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -1175,6 +1175,9 @@ bool OnDrawIndexed( int32_t vertex_offset, uint32_t first_instance) { auto* shader_state = renodx::utils::shader::GetCurrentState(cmd_list); + const uint32_t vertex_shader_hash = shader_state != nullptr + ? renodx::utils::shader::GetCurrentVertexShaderHash(shader_state) + : 0u; const uint32_t pixel_shader_hash = shader_state != nullptr ? renodx::utils::shader::GetCurrentPixelShaderHash(shader_state) : 0u; @@ -1183,13 +1186,20 @@ bool OnDrawIndexed( constexpr uint32_t PING_INDEX_COUNT = 18; constexpr uint32_t PING_FIRST_INDEX = 0; constexpr int32_t PING_VERTEX_OFFSET = 0; + constexpr uint32_t PING_VERTEX_SHADER_HASH = 0x9BDC181Fu; // Detect ping/latency bar - // This distinguishes it from menu backgrounds that also have 18 indices but have a preceding draw - is_ping_input_candidate = (index_count == PING_INDEX_COUNT) && - (first_index == PING_FIRST_INDEX) && - (vertex_offset == PING_VERTEX_OFFSET) && - (draw_call_vertex_count == 0); + const bool ping_geometry_candidate = (index_count == PING_INDEX_COUNT) && + (first_index == PING_FIRST_INDEX) && + (vertex_offset == PING_VERTEX_OFFSET); + is_ping_input_candidate = ping_geometry_candidate && + (vertex_shader_hash == PING_VERTEX_SHADER_HASH); + + if (is_ping_input_candidate) { + is_ping_drawn = true; + draw_call_vertex_count = 0; + return !IsVisible(shader_injection.ping_text_opacity); + } // Constants for UID text detection constexpr uint32_t UID_FIRST_INDEX = 18; From 4915c91d612482001d9caae3c993a822c7c2b530 Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Sat, 27 Jun 2026 14:52:29 +0200 Subject: [PATCH 29/40] fix(endfield): refine latency bar hiding --- src/games/endfield/addon.cpp | 12 +++++++++--- src/games/endfield/shared.h | 3 ++- .../endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl | 10 ++++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index cb46cb6daa..7101b44683 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -267,7 +267,6 @@ bool DrawTextRegion( bool OnPingDraw(reshade::api::command_list* cmd_list) { if (is_ping_input_candidate) { is_ping_drawn = true; - return IsVisible(shader_injection.ping_text_opacity); } else { is_ping_drawn = false; } @@ -1163,6 +1162,7 @@ bool OnDraw( uint32_t first_vertex, uint32_t first_instance) { draw_call_vertex_count = vertex_count; + shader_injection.latency_bar_draw_opacity = 1.f; return false; } @@ -1187,18 +1187,23 @@ bool OnDrawIndexed( constexpr uint32_t PING_FIRST_INDEX = 0; constexpr int32_t PING_VERTEX_OFFSET = 0; constexpr uint32_t PING_VERTEX_SHADER_HASH = 0x9BDC181Fu; + constexpr uint32_t PING_PIXEL_SHADER_HASH = 0xEF07F89Au; // Detect ping/latency bar const bool ping_geometry_candidate = (index_count == PING_INDEX_COUNT) && (first_index == PING_FIRST_INDEX) && (vertex_offset == PING_VERTEX_OFFSET); is_ping_input_candidate = ping_geometry_candidate && - (vertex_shader_hash == PING_VERTEX_SHADER_HASH); + (vertex_shader_hash == PING_VERTEX_SHADER_HASH) && + (pixel_shader_hash == PING_PIXEL_SHADER_HASH); + shader_injection.latency_bar_draw_opacity = is_ping_input_candidate + ? shader_injection.ping_text_opacity + : 1.f; if (is_ping_input_candidate) { is_ping_drawn = true; draw_call_vertex_count = 0; - return !IsVisible(shader_injection.ping_text_opacity); + return false; } // Constants for UID text detection @@ -1262,6 +1267,7 @@ void OnPresent(reshade::api::command_queue* queue, is_uid_input_candidate = false; is_ping_drawn = false; draw_call_vertex_count = 0; + shader_injection.latency_bar_draw_opacity = 1.f; // Detect Tech Test state changes from preset loads, game startup, or manual toggle float current_tech_test = shader_injection.tech_test_look; diff --git a/src/games/endfield/shared.h b/src/games/endfield/shared.h index a4fc3ab7b6..6d2441df91 100644 --- a/src/games/endfield/shared.h +++ b/src/games/endfield/shared.h @@ -81,7 +81,7 @@ struct ShaderInjectData { float status_text_opacity; float ping_text_opacity; float latency_text_opacity; - float ui_disable_uid; + float latency_bar_draw_opacity; float custom_random; float custom_grain_strength; float vignette_strength; @@ -149,6 +149,7 @@ cbuffer shader_injection : register(b13) { #define RENODX_RENO_DRT_TONE_MAP_METHOD shader_injection.reno_drt_tone_map_method #define PING_TEXT_OPACITY shader_injection.ping_text_opacity #define LATENCY_TEXT_OPACITY shader_injection.latency_text_opacity +#define LATENCY_BAR_DRAW_OPACITY shader_injection.latency_bar_draw_opacity #define STATUS_TEXT_OPACITY shader_injection.status_text_opacity #define CUSTOM_RANDOM shader_injection.custom_random #define CUSTOM_GRAIN_STRENGTH shader_injection.custom_grain_strength diff --git a/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl b/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl index 7ef43cf3ab..4a79050db9 100644 --- a/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl +++ b/src/games/endfield/ui/latencybar_0x9BDC181F.vs_5_0.hlsl @@ -1,4 +1,6 @@ +#include "../shared.h" + cbuffer cb5 : register(b5) { float4 cb5[45]; @@ -98,5 +100,13 @@ void main( r0.xy = v0.xy * float2(2,2) + -r0.xy; o4.xy = r0.xy + -r0.zw; + if (LATENCY_BAR_DRAW_OPACITY < 0.5f) { + float2 ndc = o0.xy / max(abs(o0.w), 0.00001f); + if ((ndc.x >= -0.99f && ndc.x <= -0.93f) && + (ndc.y >= -0.99f && ndc.y <= -0.90f)) { + o0 = float4(2.0f, 2.0f, 0.0f, 1.0f); + } + } + return; } From 1d11f4df35b73713d97e41c43eb08d1576963137 Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Tue, 14 Jul 2026 11:55:16 +0200 Subject: [PATCH 30/40] fix(endfield): stop vignette flicker --- src/games/endfield/addon.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/games/endfield/addon.cpp b/src/games/endfield/addon.cpp index 7101b44683..40e0c5dfd4 100644 --- a/src/games/endfield/addon.cpp +++ b/src/games/endfield/addon.cpp @@ -1193,15 +1193,18 @@ bool OnDrawIndexed( const bool ping_geometry_candidate = (index_count == PING_INDEX_COUNT) && (first_index == PING_FIRST_INDEX) && (vertex_offset == PING_VERTEX_OFFSET); - is_ping_input_candidate = ping_geometry_candidate && - (vertex_shader_hash == PING_VERTEX_SHADER_HASH) && - (pixel_shader_hash == PING_PIXEL_SHADER_HASH); - shader_injection.latency_bar_draw_opacity = is_ping_input_candidate + const bool latency_bar_draw_candidate = ping_geometry_candidate && + (vertex_shader_hash == PING_VERTEX_SHADER_HASH) && + (pixel_shader_hash == PING_PIXEL_SHADER_HASH); + is_ping_input_candidate = latency_bar_draw_candidate && (draw_call_vertex_count == 0); + shader_injection.latency_bar_draw_opacity = latency_bar_draw_candidate ? shader_injection.ping_text_opacity : 1.f; - if (is_ping_input_candidate) { - is_ping_drawn = true; + if (latency_bar_draw_candidate) { + if (is_ping_input_candidate) { + is_ping_drawn = true; + } draw_call_vertex_count = 0; return false; } From c84c4d54bb20ed6b312a9fb337f07a5cbac75b0f Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Sat, 18 Jul 2026 01:32:41 +0200 Subject: [PATCH 31/40] fix(endfield): update post-processing shaders --- src/games/endfield/bloom/0xC58C5FBA.cso | Bin 10108 -> 0 bytes ...=> bloom-prefilter_0xB3082097.cs_5_0.hlsl} | 8 +- src/games/endfield/common.hlsl | 2 +- .../uberpost/uberpost_0x039C28DA.ps_5_0.hlsl | 242 -------------- .../uberpost/uberpost_0x086097D2.ps_5_0.hlsl | 183 ----------- ...0.hlsl => uberpost_0x0BB60C37.ps_5_0.hlsl} | 14 +- .../uberpost/uberpost_0x1E0C02EC.ps_5_0.hlsl | 205 ++++++++++++ ...0.hlsl => uberpost_0x22696E6B.ps_5_0.hlsl} | 10 +- ...0.hlsl => uberpost_0x231F3B6B.ps_5_0.hlsl} | 26 +- .../uberpost/uberpost_0x2729B430.ps_5_0.hlsl | 228 +++++++++++++ ...0.hlsl => uberpost_0x2970B6A6.ps_5_0.hlsl} | 17 +- ...0.hlsl => uberpost_0x29EA566F.ps_5_0.hlsl} | 40 +-- ...0.hlsl => uberpost_0x2AD9D42E.ps_5_0.hlsl} | 48 ++- .../uberpost/uberpost_0x32A5505C.ps_5_0.hlsl | 120 +++++++ ...0.hlsl => uberpost_0x332E0835.ps_5_0.hlsl} | 21 +- .../uberpost/uberpost_0x52A77DB9.ps_5_0.hlsl | 153 +++++++++ ...0.hlsl => uberpost_0x52AC7E00.ps_5_0.hlsl} | 12 +- .../uberpost/uberpost_0x53875523.ps_5_0.hlsl | 199 ----------- .../uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl | 309 ------------------ .../uberpost/uberpost_0x61908D50.ps_5_0.hlsl | 171 ---------- ...0.hlsl => uberpost_0x63AB936D.ps_5_0.hlsl} | 44 +-- ...0.hlsl => uberpost_0x7B0B4041.ps_5_0.hlsl} | 21 +- ...0.hlsl => uberpost_0x81073AFC.ps_5_0.hlsl} | 23 +- .../uberpost/uberpost_0x86D9DED1.ps_5_0.hlsl | 192 +++++++++++ ...0.hlsl => uberpost_0x89929873.ps_5_0.hlsl} | 20 +- ...0.hlsl => uberpost_0x8F2C3A6B.ps_5_0.hlsl} | 43 ++- ...0.hlsl => uberpost_0x93EC2A6B.ps_5_0.hlsl} | 152 +++------ .../uberpost/uberpost_0xA8213A68.ps_5_0.hlsl | 157 --------- .../uberpost/uberpost_0xACB34505.ps_5_0.hlsl | 194 +++++++++++ ...0.hlsl => uberpost_0xACCCB347.ps_5_0.hlsl} | 19 +- .../uberpost/uberpost_0xB06827CB.ps_5_0.hlsl | 186 +++++++++++ ...0.hlsl => uberpost_0xBC012E29.ps_5_0.hlsl} | 106 +++--- ...0.hlsl => uberpost_0xC32F6D7B.ps_5_0.hlsl} | 137 +++----- ...0.hlsl => uberpost_0xD589DFEB.ps_5_0.hlsl} | 11 +- ...0.hlsl => uberpost_0xD8401285.ps_5_0.hlsl} | 12 +- ...0.hlsl => uberpost_0xDBC83F91.ps_5_0.hlsl} | 17 +- ...0.hlsl => uberpost_0xFBD38A69.ps_5_0.hlsl} | 126 +++---- ...0.hlsl => uberpost_0xFFFBB3BD.ps_5_0.hlsl} | 21 +- 38 files changed, 1692 insertions(+), 1797 deletions(-) delete mode 100644 src/games/endfield/bloom/0xC58C5FBA.cso rename src/games/endfield/bloom/{bloom-prefilter_0x2B198371.cs_5_0.hlsl => bloom-prefilter_0xB3082097.cs_5_0.hlsl} (96%) delete mode 100644 src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl delete mode 100644 src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl rename src/games/endfield/uberpost/{uberpost_0x86420EBC.ps_5_0.hlsl => uberpost_0x0BB60C37.ps_5_0.hlsl} (95%) create mode 100644 src/games/endfield/uberpost/uberpost_0x1E0C02EC.ps_5_0.hlsl rename src/games/endfield/uberpost/{uberpost_0xF8FA587F.ps_5_0.hlsl => uberpost_0x22696E6B.ps_5_0.hlsl} (96%) rename src/games/endfield/uberpost/{uberpost_0x9790A50C.ps_5_0.hlsl => uberpost_0x231F3B6B.ps_5_0.hlsl} (93%) create mode 100644 src/games/endfield/uberpost/uberpost_0x2729B430.ps_5_0.hlsl rename src/games/endfield/uberpost/{uberpost_0xA6501734.ps_5_0.hlsl => uberpost_0x2970B6A6.ps_5_0.hlsl} (92%) rename src/games/endfield/uberpost/{uberpost_0x21241B7A.ps_5_0.hlsl => uberpost_0x29EA566F.ps_5_0.hlsl} (83%) rename src/games/endfield/uberpost/{uberpost_0xA6E6ABE6.ps_5_0.hlsl => uberpost_0x2AD9D42E.ps_5_0.hlsl} (79%) create mode 100644 src/games/endfield/uberpost/uberpost_0x32A5505C.ps_5_0.hlsl rename src/games/endfield/uberpost/{uberpost_0x00C16AFB.ps_5_0.hlsl => uberpost_0x332E0835.ps_5_0.hlsl} (95%) create mode 100644 src/games/endfield/uberpost/uberpost_0x52A77DB9.ps_5_0.hlsl rename src/games/endfield/uberpost/{uberpost_0x6A76C719.ps_5_0.hlsl => uberpost_0x52AC7E00.ps_5_0.hlsl} (96%) delete mode 100644 src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl delete mode 100644 src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl delete mode 100644 src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl rename src/games/endfield/uberpost/{uberpost_0x5FC0BD3C.ps_5_0.hlsl => uberpost_0x63AB936D.ps_5_0.hlsl} (86%) rename src/games/endfield/uberpost/{uberpost_0x64CEB255.ps_5_0.hlsl => uberpost_0x7B0B4041.ps_5_0.hlsl} (95%) rename src/games/endfield/uberpost/{uberpost_0x10076711.ps_5_0.hlsl => uberpost_0x81073AFC.ps_5_0.hlsl} (96%) create mode 100644 src/games/endfield/uberpost/uberpost_0x86D9DED1.ps_5_0.hlsl rename src/games/endfield/uberpost/{uberpost_0x57737D9F.ps_5_0.hlsl => uberpost_0x89929873.ps_5_0.hlsl} (91%) rename src/games/endfield/uberpost/{uberpost_0xBCD91195.ps_5_0.hlsl => uberpost_0x8F2C3A6B.ps_5_0.hlsl} (54%) rename src/games/endfield/uberpost/{uberpost_0x6166487A.ps_5_0.hlsl => uberpost_0x93EC2A6B.ps_5_0.hlsl} (62%) delete mode 100644 src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl create mode 100644 src/games/endfield/uberpost/uberpost_0xACB34505.ps_5_0.hlsl rename src/games/endfield/uberpost/{uberpost_0x9AA3FC1F.ps_5_0.hlsl => uberpost_0xACCCB347.ps_5_0.hlsl} (96%) create mode 100644 src/games/endfield/uberpost/uberpost_0xB06827CB.ps_5_0.hlsl rename src/games/endfield/uberpost/{uberpost_0xD5BC74AC.ps_5_0.hlsl => uberpost_0xBC012E29.ps_5_0.hlsl} (63%) rename src/games/endfield/uberpost/{uberpost_0x0E520F06.ps_5_0.hlsl => uberpost_0xC32F6D7B.ps_5_0.hlsl} (51%) rename src/games/endfield/uberpost/{uberpost_0xAFDCA263.ps_5_0.hlsl => uberpost_0xD589DFEB.ps_5_0.hlsl} (96%) rename src/games/endfield/uberpost/{uberpost_0x09270FDA.ps_5_0.hlsl => uberpost_0xD8401285.ps_5_0.hlsl} (98%) rename src/games/endfield/uberpost/{uberpost_0xE0058043.ps_5_0.hlsl => uberpost_0xDBC83F91.ps_5_0.hlsl} (92%) rename src/games/endfield/uberpost/{uberpost_0xAFECA8F4.ps_5_0.hlsl => uberpost_0xFBD38A69.ps_5_0.hlsl} (63%) rename src/games/endfield/uberpost/{uberpost_0x51359B4D.ps_5_0.hlsl => uberpost_0xFFFBB3BD.ps_5_0.hlsl} (95%) diff --git a/src/games/endfield/bloom/0xC58C5FBA.cso b/src/games/endfield/bloom/0xC58C5FBA.cso deleted file mode 100644 index 8f02811d019bddb40ca49e6b47b7f218edcb8ff3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10108 zcmeI2O{iU07035IN$!0glE#NZ46Qs8t+k5EL#m{{WG9WU6*Lt~LUdy7NCZWy6G7zV zMJ$LP;2@%QASh`-5X6B_lu{5u9Ejk&WRS52%t(0tfBWqJz3c9r^Ae$h4qUMBK6kDE zUTf|3arS;67p|Ot>UV$p>rY?)*M)!oF)dee*pj9n$=MjgM)3QsWcP zJ$-RSGsOIC^ZmJJK7Qpft^0I3lK!%q(wA1!~{2d$U{~Xiv$Mm## zMt0?RI-I`R^DkXmd`HIjmyy5zR+g3TpHHdVI@YB!Z`L_=>5Jm83-j|Nr~cXF59|AG z;GwhSb%FOYiP_XrZk)DIa>8;26Ia0 zHe`e66WY%tr(*H(%G27lc5NrjfA;tH<9MI;-QuLOtYwe4t6kQL&i3QgIuF}eV8Fe4 z_M`H(wQ*ZH$9Kqb?Cr>2u^Z&ir1bsQl#-_|y*=Hk``ghB?ul>oadC|h2Pm$2v0`tp z^=o#%HM|BtjD2*q$4+-Qi@q=GGs<_mUVit7{XXzzE2W3L-tsP|^vIuolRX4WT~6ui zKfbW-Ay)dZVm`DMS)>mtUoCEHbJ*_Dm#%MnprgwvUAyt8Gah1{FaqPL}b-BlT&&=j|&&G$i4b*SL@1m>0kd*UDstX`@Sg;JWs#9SSP(} zF9^%~;8y%->EX{9)IZ-X7|byN;$fx;zga} zA7Rh%jn(7qHSt(KUFmI35BHeXHvZ6aV8?7rRC*4qdZxq>pXncXiqGn;YVY!qYFBlN zY^oWo>SIbzz*9bVuWH7o@=$uJ>Mrswa~}NTjE7+99kr(-&b=IYtleIF>8uB9yPVRm zpZ>xhJj9yY#W&Yims9%8?=PP7kSIM8>K{4u@CQEiq=)wcrnd6-e2K4~7_ZQ+1S>EO4y9=@|FW+6n zn%~)Yj%)cI$#*t*#`(?`d0p1~_WyUb1Mh6SlYOSfbHir@{mwlK-1O?bXT&+3NqaTl z)Gj#IZs?h{)GySY1;~V3_geQ$JYTf7yqk-HdIr!7@eDvu>C54wbXE_^{ghhAqE0w4eFiiuVy@neP?x+~DlFDh&GG4CjXHpv%MOhU0`Bif4!S z`M=z)(BXHW^Y3#58MQ-fm?57VJexOkw>m&R^B(N4^R#!s-3oo=4;tzb?i$>qps^k~ zS@*y`A@>Mt&1-uE89hQTLG%|CdqivR=@BroN6-`NogRTlk1#)Ij|iIR5$JwB0!A?_ zzF~uSL-YvtA?{WXbqDb-2kTxazST3P%fmJ4en%ebF^POOxaTUb^c>H&Q~6A(%i}-K zNIci6eU#r#L|&I4?B^NZt-O|Zi1%)vV;{Iaoc}1Jf1uNKej|Fs`LQptM_Sn_-K|<) zm+^?s^;n!S{0?rf`pSN|^GtGox4IebQ{E3U$a^;?z88#foQy$ttH<&B_wO7J>Dj%~v(;sElPyAZ_@S^@01N?x9 z4^QkZ*1BcH&as$@>2>C=#~?SwAxLTZVpk=(o+NpBRkkk232g z7Oj4GQNK*hZdJY9ONb{k7|t}ye8=gs1cjbIlTtr)el7h>O#Hj7k3!!Qt{>JB<4zpM zavo*QIkDECrv;i zPcB>i@S=XXJA1L}VRa9-Oym2Sk_kp{r#W^Pkzt z&0h73ShsaeoP;TPu#D(CNASoS81wLd9;Ze>K2GwYFQb0TtRGpcAKsXLY=R%sA7$2m zzR|CxrO((4@kf{Y?V4&5e6$UoSc4;%)BrOWQIWAHc=WSnOF5MtFkRM1pCixP)0*$t zi|)5B1A}(;d)IzMe5?Wd>#{xqmT&k2-Q@lkehpB}@g=tCNM=g)m2x5R<9V?K>xqEBNO^m_l)DKUn| zY>i=}tuYL?MCE@h@Q3>J%o@(RJF;JR>J8>D>!aRDJku}Wu!#=lF6*P-Nj&qv4e0Rx zcy=vMvc8Dg{ElJb{>Csvu{_%a zO!RvUgI?aFd$Q4DvShAjaKr}8SUrznq90=z_@dIU;N5G?$lCaU>9RhS&Y|5Wi68W^ z+HI@)yR*Al{D%K*= 13); if (r1.w != 0) break; - r2.xy = icb[r0.w+0].xy * cb0[82].zw; + r2.xy = icb[r0.w+0].xy * cb0[0].zw; r2.xy = r0.xy * cb1[0].zw + r2.xy; r2.xyz = t0.SampleLevel(s0_s, r2.xy, 0).xyz; r1.w = max(r2.x, r2.y); @@ -76,7 +76,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r1.w = r2.w / r1.w; r2.xyz = r2.xyz * r1.www; - r2.xyz = cb0[109].xxx * r2.xyz * (BLOOM_STRENGTH / 50.0f); + r2.xyz = cb0[27].xxx * r2.xyz * (BLOOM_STRENGTH / 50.0f); r1.w = dot(r2.xyz, float3(0.212672904,0.715152204,0.0721750036)); r1.w = 1 + r1.w; @@ -99,4 +99,4 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.xyzw = r1.xyzw * r0.xxxx; u0[vThreadID.xy] = r0.xyzw; return; -} \ No newline at end of file +} diff --git a/src/games/endfield/common.hlsl b/src/games/endfield/common.hlsl index 2579b55401..155e1126f4 100644 --- a/src/games/endfield/common.hlsl +++ b/src/games/endfield/common.hlsl @@ -462,4 +462,4 @@ float3 HDRGRADE(LUTSampleResult lut_sample) { output, shader_injection.peak_white_nits / shader_injection.diffuse_white_nits, 65.f); output = renodx::color::bt709::from::BT2020(output); return output; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl deleted file mode 100644 index 89b0f8564d..0000000000 --- a/src/games/endfield/uberpost/uberpost_0x039C28DA.ps_5_0.hlsl +++ /dev/null @@ -1,242 +0,0 @@ -// ---- Created with 3Dmigoto v1.3.16 on Tue Jan 20 19:03:58 2026 -#include "../common.hlsl" - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[26]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[110]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2,r3,r4,r5,r6,r7; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = -cb1[0].xy + v1.xy; - r0.z = dot(r0.xy, r0.xy); - r0.w = sqrt(r0.z); - r0.w = max(0.00999999978, r0.w); - r0.w = 1 / r0.w; - r1.x = cb1[0].w * 0.5; - r0.z = log2(r0.z); - r0.z = r1.x * r0.z; - r0.z = exp2(r0.z); - r0.xy = r0.xy * r0.zz; - r1.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; - r1.xyz = float3(1,0,0) * r1.xyz; - float ca_strength = CHROMATIC_ABERRATION_STRENGTH; - r0.z = cmp(3 < cb1[25].x); - if (r0.z != 0) { - r2.xy = cmp(float2(0,0) != cb1[25].wz); - r0.z = (int)r2.y | (int)r2.x; - r2.xy = r0.xy * r0.ww; - r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y * ca_strength + cb1[0].z; - r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; - r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); - r4.xy = -r2.xy * r0.zz + v1.xy; - r4.xyz = t0.SampleLevel(s1_s, r4.xy, 0).xyz; - r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; - r0.z = r0.z + r0.z; - r5.xy = -r2.xy * r0.zz + v1.xy; - r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; - r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; - r5.xy = -r2.xy * r0.zz + v1.xy; - r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r3.xyzw = cb1[0].zzzz * float4(2,2,2,2) + r3.xyzw; - r3.xyzw = -r2.xyxy * r3.xyzw + v1.xyxy; - r5.xyz = t0.SampleLevel(s1_s, r3.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r2.zw = -r2.xy * r2.zz + v1.xy; - r5.xyz = t0.SampleLevel(s1_s, r2.zw, 0).xyz; - r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; - r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; - r2.xy = -r2.xy * r0.zz + v1.xy; - r2.xyz = t0.SampleLevel(s1_s, r2.xy, 0).xyz; - r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; - r3.xyz = t0.SampleLevel(s1_s, r3.zw, 0).xyz; - r2.xyz = r3.xyz * float3(0,0,1) + r2.xyz; - r2.xyz = float3(0.333333403,0.333333403,0.333333403) * r2.xyz; - } else { - r0.z = cmp(0.000000 != cb1[25].w); - r3.xy = r0.xy * r0.ww; - r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; - r0.zw = -r0.xy * r0.zz + v1.xy; - r3.xyz = t0.SampleLevel(s1_s, r0.zw, 0).xyz; - r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; - r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * ca_strength * 3 + r0.z; - r0.xy = -r0.xy * r0.zz + v1.xy; - r0.xyz = t0.SampleLevel(s1_s, r0.xy, 0).xyz; - r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; - } - r0.xw = float2(0,0); - r0.yz = cb0[82].wz; - r3.xyzw = v1.xyxy + r0.xyzw; - r1.xyz = t0.SampleLevel(s1_s, r3.xy, 0).xyz; - r0.xyzw = v1.xyxy + -r0.zwxy; - r4.xyz = t0.SampleLevel(s1_s, r0.xy, 0).xyz; - r3.xyz = t0.SampleLevel(s1_s, r3.zw, 0).xyz; - r0.xyz = t0.SampleLevel(s1_s, r0.zw, 0).xyz; - r0.w = r1.x * 0.5 + r1.y; - r0.w = r1.z * 0.5 + r0.w; - r2.w = r4.x * 0.5 + r4.y; - r2.w = r4.z * 0.5 + r2.w; - r3.w = r2.x * 0.5 + r2.y; - r3.w = r2.z * 0.5 + r3.w; - r4.w = r3.x * 0.5 + r3.y; - r4.w = r3.z * 0.5 + r4.w; - r5.x = r0.x * 0.5 + r0.y; - r5.x = r0.z * 0.5 + r5.x; - r5.yzw = min(r4.xyz, r3.xyz); - r5.yzw = min(r5.yzw, r1.xyz); - r5.yzw = min(r5.yzw, r0.xyz); - r6.xyz = max(r4.xyz, r3.xyz); - r6.xyz = max(r6.xyz, r1.xyz); - r6.xyz = max(r6.xyz, r0.xyz); - r7.xyz = float3(0.25,0.25,0.25) / r6.xyz; - r7.xyz = r7.xyz * r5.yzw; - r6.xyz = float3(1,1,1) + -r6.xyz; - r5.yzw = r5.yzw * float3(4,4,4) + float3(-4,-4,-4); - r5.yzw = float3(1,1,1) / r5.yzw; - r5.yzw = r6.xyz * r5.yzw; - r5.yzw = max(-r7.xyz, r5.yzw); - r5.z = max(r5.z, r5.w); - r5.y = max(r5.y, r5.z); - r5.y = min(0, r5.y); - r5.y = max(-0.1875, r5.y); - r5.y = cb1[24].x * r5.y; - r5.z = r2.w + r0.w; - r5.z = r5.z + r4.w; - r5.z = r5.z + r5.x; - r5.z = r5.z * 0.25 + -r3.w; - r5.w = max(r3.w, r2.w); - r5.w = max(r5.w, r0.w); - r6.x = max(r5.x, r4.w); - r5.w = max(r6.x, r5.w); - r2.w = min(r3.w, r2.w); - r0.w = min(r2.w, r0.w); - r2.w = min(r5.x, r4.w); - r0.w = min(r2.w, r0.w); - r0.w = r5.w + -r0.w; - r0.w = 1 / r0.w; - r0.w = saturate(abs(r5.z) * r0.w); - r0.w = r0.w * -0.5 + 1; - r0.w = r5.y * r0.w; - r2.w = r0.w * 4 + 1; - r2.w = 1 / r2.w; - r5.xyz = t2.SampleLevel(s0_s, v1.xy, 0).xyz; - r1.xyz = r4.zxy + r1.zxy; - r0.xyz = r1.xyz + r0.zxy; - r0.xyz = r0.xyz + r3.zxy; - r0.xyz = r0.www * r0.xyz + r2.zxy; - r0.xyz = r0.xyz * r2.www; - r0.xyz = cb0[109].xxx * r0.xyz; - r0.w = saturate(cb1[3].x * 3 + -2); - r1.x = min(r5.x, r5.y); - r1.x = min(r1.x, r5.z); - r1.x = -0.200000003 + r1.x; - r1.x = cmp(r1.x >= 0); - r1.x = r1.x ? 1.000000 : 0; - r0.w = -cb1[3].x + r0.w; - r0.w = r1.x * r0.w + cb1[3].x; - r1.xyz = float3(-1,-1,-1) + r5.zxy; - r1.xyz = r0.www * r1.xyz + float3(1,1,1); - r0.xyz = r1.xyz * r0.xyz; - r0.xyz = cb1[7].www * r0.xyz; - /* Original Code - [branch] - if (shader_injection.tone_map_type == 0.f) { - r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); - r0.xyz = max(float3(0,0,0), r0.xyz); - r0.xyz = log2(r0.xyz); - r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); - r0.yzw = cb1[7].zzz * r0.xyz; - r0.y = floor(r0.y); - r1.xy = cb1[7].xy * float2(0.5,0.5); - r1.yz = r0.zw * cb1[7].xy + r1.xy; - r1.x = r0.y * cb1[7].y + r1.y; - r2.xyz = t1.SampleLevel(s1_s, r1.xz, 0).xyz; - r3.x = cb1[7].y; - r3.y = 0; - r0.zw = r3.xy + r1.xz; - r1.xyz = t1.SampleLevel(s1_s, r0.zw, 0).xyz; - r0.x = r0.x * cb1[7].z + -r0.y; - r0.yzw = r1.xyz + -r2.xyz; - r0.xyz = r0.xxx * r0.yzw + r2.xyz; - r1.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; - r2.xyz = log2(abs(r0.xyz)); - r2.xyz = float3(0.416666657,0.416666657,0.416666657) * r2.xyz; - r2.xyz = exp2(r2.xyz); - r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); - r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); - r0.xyz = r0.xyz ? r1.xyz : r2.xyz; - r1.xy = cb0[82].xy * v1.xy; - r0.w = dot(float2(171,231), r1.xy); - r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; - r1.xyz = frac(r1.xyz); - r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; - o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; - } else { - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR - ); - - float3 graded = renodx::lut::Sample(t1, lut_config, r0.xyz); - - o0.xyz = renodx::draw::RenderIntermediatePass(renodx::draw::ToneMapPass(r0.yzx, graded)); - } - */ - LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t1, r0.yzx); - [branch] - if (shader_injection.tone_map_type == 0.f) { - o0.xyz = SDRGRADE(lut_sample); - } else { - o0.xyz = HDRGRADE(lut_sample); - } - if (CUSTOM_GRAIN_STRENGTH > 0) { - o0.xyz = renodx::effects::ApplyFilmGrain( - o0.xyz, - v1.xy, - CUSTOM_RANDOM, - CUSTOM_GRAIN_STRENGTH * 0.03f); - } - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); - o0.w = min(1, r1.w); - return; -} \ No newline at end of file diff --git a/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl deleted file mode 100644 index 7dc60fa2c8..0000000000 --- a/src/games/endfield/uberpost/uberpost_0x086097D2.ps_5_0.hlsl +++ /dev/null @@ -1,183 +0,0 @@ -// ---- Created with 3Dmigoto v1.3.16 on Tue Jan 20 19:03:59 2026 -#include "../common.hlsl" -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[26]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[110]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float4 o0 : SV_Target0) -{ - const float4 icb[] = { { 0.500000, 0, 0, 0}, - { 1.000000, 0, 0, 0}, - { 1.500000, 0, 0, 0}, - { 2.000000, 0, 0, 0}, - { 2.500000, 0, 0, 0} }; - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = -cb1[0].xy + v1.xy; - r0.z = dot(r0.xy, r0.xy); - r0.z = sqrt(r0.z); - r0.w = log2(r0.z); - r0.w = cb1[0].w * r0.w; - r0.w = exp2(r0.w); - r0.xy = r0.xy * r0.ww; - r0.z = max(0.00999999978, r0.z); - r0.z = 1 / r0.z; - r0.z = -1 + r0.z; - r0.z = cb1[25].z * r0.z + 1; - r0.xy = r0.xy * r0.zz; - r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; - r2.xyz = r1.xyz; - r0.z = 0; - while (true) { - r0.w = cmp((int)r0.z >= 5); - if (r0.w != 0) break; - r0.w = icb[r0.z+0].x * cb1[0].z; - r3.xy = -r0.xy * r0.ww + v1.xy; - r3.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; - r3.xyz = r3.xyz + r2.xyz; - r0.w = (int)r0.z + 1; - r2.xyz = r3.xyz; - r0.z = r0.w; - continue; - } - r0.xyzw = r2.xyzz; - r2.xw = float2(0,0); - r2.yz = cb0[82].wz; - r3.xyzw = v1.xyxy + r2.xyzw; - r1.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; - r2.xyzw = v1.xyxy + -r2.zwxy; - r4.xyz = t0.SampleLevel(s0_s, r2.xy, 0).xyz; - r3.xyz = t0.SampleLevel(s0_s, r3.zw, 0).xyz; - r2.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; - r2.w = r1.x * 0.5 + r1.y; - r2.w = r1.z * 0.5 + r2.w; - r3.w = r4.x * 0.5 + r4.y; - r3.w = r4.z * 0.5 + r3.w; - r5.xyz = float3(0.166666672,0.166666672,0.166666672) * r0.xyz; - r0.x = r0.x * 0.0833333358 + r5.y; - r0.x = r0.w * 0.0833333358 + r0.x; - r0.y = r3.x * 0.5 + r3.y; - r0.y = r3.z * 0.5 + r0.y; - r0.z = r2.x * 0.5 + r2.y; - r0.z = r2.z * 0.5 + r0.z; - r6.xyz = min(r4.xyz, r3.xyz); - r6.xyz = min(r6.xyz, r1.xyz); - r6.xyz = min(r6.xyz, r2.xyz); - r7.xyz = max(r4.xyz, r3.xyz); - r7.xyz = max(r7.xyz, r1.xyz); - r7.xyz = max(r7.xyz, r2.xyz); - r8.xyz = float3(0.25,0.25,0.25) / r7.xyz; - r8.xyz = r8.xyz * r6.xyz; - r7.xyz = float3(1,1,1) + -r7.xyz; - r6.xyz = r6.xyz * float3(4,4,4) + float3(-4,-4,-4); - r6.xyz = float3(1,1,1) / r6.xyz; - r6.xyz = r7.xyz * r6.xyz; - r6.xyz = max(-r8.xyz, r6.xyz); - r0.w = max(r6.y, r6.z); - r0.w = max(r6.x, r0.w); - r0.w = min(0, r0.w); - r0.w = max(-0.1875, r0.w); - r0.w = cb1[24].x * r0.w; - r4.w = r3.w + r2.w; - r4.w = r4.w + r0.y; - r4.w = r4.w + r0.z; - r4.w = r4.w * 0.25 + -r0.x; - r5.w = max(r3.w, r0.x); - r5.w = max(r5.w, r2.w); - r6.x = max(r0.y, r0.z); - r5.w = max(r6.x, r5.w); - r0.x = min(r3.w, r0.x); - r0.x = min(r2.w, r0.x); - r0.y = min(r0.y, r0.z); - r0.x = min(r0.x, r0.y); - r0.x = r5.w + -r0.x; - r0.x = 1 / r0.x; - r0.x = saturate(abs(r4.w) * r0.x); - r0.x = r0.x * -0.5 + 1; - r0.x = r0.w * r0.x; - r0.y = r0.x * 4 + 1; - r0.y = 1 / r0.y; - r0.zw = -cb1[1].xy + v1.xy; - r2.w = -cb1[2].x + 1; - r2.w = cb1[1].w * r2.w + cb1[2].x; - r0.zw = r2.ww * abs(r0.zw); - r2.w = saturate(cb1[2].x * 1.04999995); - r2.w = r2.w * 1.5 + -1; - r2.w = cb1[1].w * r2.w + 1; - r0.z = r2.w * r0.z; - r2.w = cb1[2].x * 2 + -1; - r2.w = cb1[1].w * r2.w + 1; - r3.w = saturate(cb1[2].x + -2.79999995); - r3.w = 5 * r3.w; - r6.y = saturate(r0.w * r2.w + r3.w); - r0.w = cb0[82].x / cb0[82].y; - r2.w = -1 + r0.w; - r2.w = cb1[2].w * r2.w + 1; - r0.w = r0.w * 0.5625 + -r2.w; - r0.w = cb1[1].w * r0.w + r2.w; - r6.x = saturate(r0.z * r0.w); - r0.zw = log2(r6.xy); - r0.zw = cb1[2].zz * r0.zw; - r0.zw = exp2(r0.zw); - r1.xyz = r4.zxy + r1.zxy; - r1.xyz = r1.xyz + r2.zxy; - r1.xyz = r1.xyz + r3.zxy; - r1.xyz = r0.xxx * r1.xyz + r5.zxy; - r1.xyz = r1.xyz * r0.yyy; - r1.xyz = cb0[109].xxx * r1.xyz; - r0.x = dot(r0.zw, r0.zw); - r0.x = 1 + -r0.x; - r0.x = max(0, r0.x); - r0.x = log2(r0.x); - r0.x = cb1[2].y * r0.x; - r0.x = exp2(r0.x); - float vignette_value = lerp(1.0, r0.x, VIGNETTE_STRENGTH); - r0.x = 1.0; // Disable original vignette, apply after tonemapping - r0.yzw = -cb1[4].zxy + float3(1,1,1); - r0.xyz = r0.xxx * r0.yzw + cb1[4].zxy; - r0.xyz = r1.xyz * r0.xyz; - r0.xyz = cb1[7].www * r0.xyz; - LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); - [branch] - if (shader_injection.tone_map_type == 0.f) { - o0.xyz = SDRGRADE(lut_sample); - } else { - o0.xyz = HDRGRADE(lut_sample); - } - // Apply vignette after tonemapping - o0.xyz *= vignette_value; - if (CUSTOM_GRAIN_STRENGTH > 0) { - o0.xyz = renodx::effects::ApplyFilmGrain( - o0.xyz, - v1.xy, - CUSTOM_RANDOM, - CUSTOM_GRAIN_STRENGTH * 0.03f); - } - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); - o0.w = min(1, r1.w); - return; -} \ No newline at end of file diff --git a/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x0BB60C37.ps_5_0.hlsl similarity index 95% rename from src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x0BB60C37.ps_5_0.hlsl index 52b5ec498b..789e8d592f 100644 --- a/src/games/endfield/uberpost/uberpost_0x86420EBC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x0BB60C37.ps_5_0.hlsl @@ -1,4 +1,4 @@ -// ---- Created with 3Dmigoto v1.3.16 on Fri Jan 23 01:44:52 2026 +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 #include "../common.hlsl" Texture2D t2 : register(t2); @@ -15,7 +15,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -66,7 +66,7 @@ void main( r0.z = r0.w; continue; } - r0.xyz = cb0[109].xxx * r2.xyz; + r0.xyz = cb0[27].xxx * r2.xyz; r1.xyz = float3(0.166666672,0.166666672,0.166666672) * r0.xyz; r2.xyz = t1.SampleLevel(s0_s, v1.xy, 0).xyz; r0.w = -cb1[9].z + 1; @@ -92,8 +92,8 @@ void main( r2.xyz = r2.xyz * cb1[11].zxy + r5.xyz; r0.xyz = -r0.xyz * float3(0.166666672,0.166666672,0.166666672) + r2.xyz; r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; - /* r0.xyz = cb1[7].www * r0.xyz; + /* Original Code r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); r0.xyz = max(float3(0,0,0), r0.xyz); r0.xyz = log2(r0.xyz); @@ -118,12 +118,14 @@ void main( r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); r0.xyz = r0.xyz ? r1.xyz : r2.xyz; - r1.xy = cb0[82].xy * v1.xy; + r1.xy = cb0[0].xy * v1.xy; r0.w = dot(float2(171,231), r1.xy); r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; r1.xyz = frac(r1.xyz); r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; + o0.w = min(1, r1.w); + return; */ LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] @@ -142,4 +144,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x1E0C02EC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x1E0C02EC.ps_5_0.hlsl new file mode 100644 index 0000000000..8236f7905c --- /dev/null +++ b/src/games/endfield/uberpost/uberpost_0x1E0C02EC.ps_5_0.hlsl @@ -0,0 +1,205 @@ +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 +#include "../common.hlsl" +Texture2D t4 : register(t4); + +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s2_s : register(s2); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[26]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[27]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float2 v1 : TEXCOORD0, + out float4 o0 : SV_Target0) +{ + const float4 icb[] = { { 0.500000, 0, 0, 0}, + { 1.000000, 0, 0, 0}, + { 1.500000, 0, 0, 0}, + { 2.000000, 0, 0, 0}, + { 2.500000, 0, 0, 0} }; + float4 r0,r1,r2,r3,r4,r5; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xyzw = t0.SampleLevel(s2_s, v1.xy, 0).xyzw; + r1.xy = -cb1[0].xy + v1.xy; + r1.z = dot(r1.xy, r1.xy); + r1.z = sqrt(r1.z); + r1.w = log2(r1.z); + r1.w = cb1[0].w * r1.w; + r1.w = exp2(r1.w); + r1.xy = r1.xy * r1.ww; + r1.z = max(0.00999999978, r1.z); + r1.z = 1 / r1.z; + r1.z = -1 + r1.z; + r1.z = cb1[25].z * r1.z + 1; + r1.xy = r1.xy * r1.zz; + r2.xyz = r0.zxy; + r1.z = 0; + while (true) { + r1.w = cmp((int)r1.z >= 5); + if (r1.w != 0) break; + r1.w = icb[r1.z+0].x * cb1[0].z; + r3.xy = -r1.xy * r1.ww + v1.xy; + r3.xyz = t0.SampleLevel(s2_s, r3.xy, 0).xyz; + r3.xyz = r3.xyz + r2.yzx; + r1.w = (int)r1.z + 1; + r2.xyz = r3.zxy; + r1.z = r1.w; + continue; + } + r0.xyz = float3(0.166666672,0.166666672,0.166666672) * r2.xyz; + r1.xyzw = t1.SampleLevel(s2_s, v1.xy, 0).xyzw; + r2.w = -cb1[9].z + 1; + r3.xyz = r2.www * r1.zxy; + r3.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r3.xyz); + r4.xyz = log2(r1.zxy); + r4.xyz = float3(0.330000013,0.330000013,0.330000013) * r4.xyz; + r4.xyz = exp2(r4.xyz); + r4.xyz = r4.xyz * float3(1.49380004,1.49380004,1.49380004) + float3(-0.699999988,-0.699999988,-0.699999988); + r2.w = max(r0.y, r0.z); + r2.w = max(r2.w, r0.x); + r5.xy = -cb1[10].yx + r2.ww; + r3.w = max(0, r5.x); + r3.w = min(cb1[10].z, r3.w); + r3.w = r3.w * r3.w; + r3.w = cb1[10].w * r3.w; + r3.w = max(r3.w, r5.y); + r2.w = max(9.99999975e-005, r2.w); + r2.w = r3.w / r2.w; + r5.xyz = r2.www * r0.xyz; + r5.xyz = -r5.xyz * cb1[9].zzz + r0.xyz; + r1.xyz = r3.xyz ? r4.xyz : r1.zxy; + r1.xyz = r1.xyz * cb1[11].zxy + r5.xyz; + r1.xyz = -r2.xyz * float3(0.166666672,0.166666672,0.166666672) + r1.xyz; + r0.xyz = cb1[9].xxx * r1.xyz + r0.xyz; + o0.w = saturate(r1.w + r0.w); + r0.w = cb1[16].z + cb1[16].x; + r1.x = dot(cb1[16].xx, cb1[16].zz); + r0.w = -r1.x + r0.w; + r1.xy = -cb1[17].xy + v1.xy; + r1.zw = float2(-0.5,-0.5) + r1.xy; + r2.x = r1.z / r1.w; + r2.y = cmp(abs(r2.x) < 1); + r2.z = 1 / abs(r2.x); + r2.z = r2.y ? abs(r2.x) : r2.z; + r2.w = r2.z * r2.z; + r3.x = r2.w * 0.0872929022 + -0.301894993; + r2.w = r3.x * r2.w + 1; + r3.x = r2.w * r2.z; + r2.z = -r2.w * r2.z + 1.57079637; + r2.y = r2.y ? r3.x : r2.z; + r2.x = cmp(r2.x < 0); + r2.x = r2.x ? -r2.y : r2.y; + r2.y = cmp(r1.z >= 0); + r2.y = r2.y ? 3.1415925 : -3.1415925; + r2.z = cmp(r1.w < 0); + r2.z = r2.z ? 1.000000 : 0; + r2.x = r2.y * r2.z + r2.x; + r2.x = 3.14159274 + r2.x; + r2.x = 0.159154937 * r2.x; + r1.z = dot(r1.zw, r1.zw); + r1.z = sqrt(r1.z); + r2.y = r1.z + r1.z; + r1.zw = r2.xy * cb1[18].xy + cb1[18].zw; + r1.zw = cb1[17].zw * cb0[20].yy + r1.zw; + r1.z = t3.SampleBias(s0_s, r1.zw, cb0[26].x).x; + r1.z = r1.z * r0.y; + r1.w = cb1[20].y * r0.y; + r1.z = saturate(r1.z * cb1[20].x + r1.w); + r0.xyz = cb1[7].www * r0.xyz; + /* Original Code + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = max(float3(0,0,0), r0.xyz); + r0.xyz = log2(r0.xyz); + r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r3.xyz = cb1[7].zzz * r0.xyz; + r0.y = floor(r3.x); + r2.zw = cb1[7].xy * float2(0.5,0.5); + r3.yz = r3.yz * cb1[7].xy + r2.zw; + r3.x = r0.y * cb1[7].y + r3.y; + r4.xyz = t2.SampleLevel(s2_s, r3.xz, 0).xyz; + r5.x = cb1[7].y; + r5.y = 0; + r2.zw = r5.xy + r3.xz; + r3.xyz = t2.SampleLevel(s2_s, r2.zw, 0).xyz; + r0.x = r0.x * cb1[7].z + -r0.y; + r3.xyz = r3.xyz + -r4.xyz; + r0.xyz = r0.xxx * r3.xyz + r4.xyz; + r3.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; + r4.xyz = log2(abs(r0.xyz)); + r4.xyz = float3(0.416666657,0.416666657,0.416666657) * r4.xyz; + r4.xyz = exp2(r4.xyz); + r4.xyz = r4.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); + */ + LUTSampleResult lut_sample = LUTSAMPLE(s2_s, cb1[7].xyz, t2, r0.yzx); + float3 graded_linear; + [branch] + if (shader_injection.tone_map_type == 0.f) { + graded_linear = SDRGRADE(lut_sample); + } else { + graded_linear = HDRGRADE(lut_sample); + } + float3 graded_encoded = renodx::color::srgb::EncodeSafe(graded_linear); + r1.w = 1 + -r0.w; + r1.w = -cb1[16].y + r1.w; + r0.w = -cb1[16].y + r0.w; + r2.z = -r1.z * cb1[20].z + r1.z; + r2.w = -cb1[16].w + 1; + r1.xy = r2.ww * r1.xy; + r1.xy = r2.xy * cb1[16].ww + r1.xy; + r1.xy = r1.xy * cb1[19].xy + cb1[19].zw; + r1.x = t4.SampleBias(s1_s, r1.xy, cb0[26].x).x; + r1.x = r1.z * r1.x; + r1.x = r1.x * cb1[20].z + r2.z; + r0.w = r0.w + -r1.w; + r1.x = r1.x + -r1.w; + r0.w = 1 / r0.w; + r0.w = saturate(r1.x * r0.w); + r1.x = r0.w * -2 + 3; + r0.w = r0.w * r0.w; + r1.y = r1.x * r0.w; + r0.xyz = graded_encoded; + r0.w = -r1.x * r0.w + 1; + r1.xzw = cb1[22].xyz * r0.www; + r1.xyz = cb1[21].xyz * r1.yyy + r1.xzw; + r1.xyz = r1.xyz + -r0.xyz; + o0.xyz = cb1[20].www * r1.xyz + r0.xyz; + o0.xyz = renodx::color::srgb::DecodeSafe(o0.xyz); + if (CUSTOM_GRAIN_STRENGTH > 0) { + o0.xyz = renodx::effects::ApplyFilmGrain( + o0.xyz, + v1.xy, + CUSTOM_RANDOM, + CUSTOM_GRAIN_STRENGTH * 0.03f); + } + o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); + return; +} \ No newline at end of file diff --git a/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x22696E6B.ps_5_0.hlsl similarity index 96% rename from src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x22696E6B.ps_5_0.hlsl index 49f3a645e8..f2499bab29 100644 --- a/src/games/endfield/uberpost/uberpost_0xF8FA587F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x22696E6B.ps_5_0.hlsl @@ -13,7 +13,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -36,7 +36,7 @@ void main( r1.x = r0.x * 0.5 + r0.y; r1.x = r0.z * 0.5 + r1.x; r2.xw = float2(0,0); - r2.yz = cb0[82].wz; + r2.yz = cb0[0].wz; r3.xyzw = v1.xyxy + -r2.zwxy; r2.xyzw = v1.xyxy + r2.xyzw; r1.yzw = t0.SampleLevel(s0_s, r3.xy, 0).xyz; @@ -93,8 +93,8 @@ void main( r1.x = r1.x * 4 + 1; r1.x = 1 / r1.x; r0.xyz = r1.xxx * r0.xyz; - r0.xyz = cb0[109].xxx * r0.xyz; - r0.xyz = cb1[7].www * r0.xyz; + r0.xyz = cb0[27].xxx * r0.xyz; + r0.xyz = cb1[7].www * r0.xyz; LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { @@ -110,4 +110,4 @@ void main( } o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r0.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x231F3B6B.ps_5_0.hlsl similarity index 93% rename from src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x231F3B6B.ps_5_0.hlsl index 88d057ed81..67c0b6c6ac 100644 --- a/src/games/endfield/uberpost/uberpost_0x9790A50C.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x231F3B6B.ps_5_0.hlsl @@ -1,7 +1,5 @@ -// ---- Created with 3Dmigoto v1.3.16 on Fri Jan 23 01:44:52 2026 - +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 #include "../common.hlsl" - Texture2D t3 : register(t3); Texture2D t2 : register(t2); @@ -21,7 +19,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -40,11 +38,10 @@ void main( uint4 bitmask, uiDest; float4 fDest; - r0.x = cb0[82].x / cb0[82].y; - r0.y = -1 + r0.x; - r0.y = cb1[2].w * r0.y + 1; - r0.x = r0.x * 0.5625 + -r0.y; - r0.x = cb1[1].w * r0.x + r0.y; + r0.x = cb0[27].z + -1; + r0.x = cb1[2].w * r0.x + 1; + r0.y = cb0[27].z * 0.5625 + -r0.x; + r0.x = cb1[1].w * r0.y + r0.x; r0.y = saturate(cb1[2].x * 1.04999995); r0.y = r0.y * 1.5 + -1; r0.y = cb1[1].w * r0.y + 1; @@ -82,7 +79,7 @@ void main( r3.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r3.xyz); r1.xyz = r3.xyz ? r2.xyz : r1.zxy; r2.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; - r3.xyz = cb0[109].xxx * r2.zxy; + r3.xyz = cb0[27].xxx * r2.zxy; r0.w = max(r3.y, r3.z); r0.w = max(r0.w, r3.x); r4.xy = -cb1[10].yx + r0.ww; @@ -96,7 +93,7 @@ void main( r4.xyz = r3.xyz * r0.www; r4.xyz = -r4.xyz * cb1[9].zzz + r3.xyz; r1.xyz = r1.xyz * cb1[11].zxy + r4.xyz; - r1.xyz = -r2.zxy * cb0[109].xxx + r1.xyz; + r1.xyz = -r2.zxy * cb0[27].xxx + r1.xyz; o0.w = min(1, r2.w); r1.xyz = cb1[9].xxx * r1.xyz + r3.xyz; r2.xyz = t3.SampleLevel(s0_s, v1.xy, 0).xyz; @@ -112,8 +109,8 @@ void main( r2.xyz = r0.www * r2.xyz + float3(1,1,1); r1.xyz = r2.xyz * r1.xyz; r0.xyz = r1.xyz * r0.xyz; - /* r0.xyz = cb1[7].www * r0.xyz; + /* Original Code r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); r0.xyz = max(float3(0,0,0), r0.xyz); r0.xyz = log2(r0.xyz); @@ -138,12 +135,13 @@ void main( r2.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); r0.xyz = r0.xyz ? r2.xyz : r1.xyz; - r1.xy = cb0[82].xy * v1.xy; + r1.xy = cb0[0].xy * v1.xy; r0.w = dot(float2(171,231), r1.xy); r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; r1.xyz = frac(r1.xyz); r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; + return; */ LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); [branch] @@ -163,4 +161,4 @@ void main( } o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x2729B430.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x2729B430.ps_5_0.hlsl new file mode 100644 index 0000000000..690789fb89 --- /dev/null +++ b/src/games/endfield/uberpost/uberpost_0x2729B430.ps_5_0.hlsl @@ -0,0 +1,228 @@ +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 +#include "../common.hlsl" +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[26]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[28]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float2 v1 : TEXCOORD0, + out float4 o0 : SV_Target0) +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xy = -cb1[0].xy + v1.xy; + r0.z = dot(r0.xy, r0.xy); + r0.w = sqrt(r0.z); + r0.w = max(0.00999999978, r0.w); + r0.w = 1 / r0.w; + r1.x = cb1[0].w * 0.5; + r0.z = log2(r0.z); + r0.z = r1.x * r0.z; + r0.z = exp2(r0.z); + r0.xy = r0.xy * r0.zz; + r1.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; + r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; + r0.z = cmp(3 < cb1[25].x); + if (r0.z != 0) { + r2.xy = cmp(float2(0,0) != cb1[25].wz); + r0.z = (int)r2.y | (int)r2.x; + r2.xy = r0.xy * r0.ww; + r2.xy = r0.zz ? r2.xy : r0.xy; + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; + r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); + r4.xy = -r2.xy * r0.zz + v1.xy; + r4.xyz = t0.SampleLevel(s1_s, r4.xy, 0).xyz; + r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; + r0.z = r0.z + r0.z; + r5.xy = -r2.xy * r0.zz + v1.xy; + r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; + r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; + r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; + r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; + r5.xy = -r2.xy * r0.zz + v1.xy; + r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; + r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; + r3.xyzw = cb1[0].zzzz * float4(2,2,2,2) + r3.xyzw; + r3.xyzw = -r2.xyxy * r3.xyzw + v1.xyxy; + r5.xyz = t0.SampleLevel(s1_s, r3.xy, 0).xyz; + r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; + r2.zw = -r2.xy * r2.zz + v1.xy; + r5.xyz = t0.SampleLevel(s1_s, r2.zw, 0).xyz; + r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; + r2.xy = -r2.xy * r0.zz + v1.xy; + r2.xyz = t0.SampleLevel(s1_s, r2.xy, 0).xyz; + r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; + r3.xyz = t0.SampleLevel(s1_s, r3.zw, 0).xyz; + r2.xyz = r3.xyz * float3(0,0,1) + r2.xyz; + r2.xyz = float3(0.333333403,0.333333403,0.333333403) * r2.xyz; + } else { + r0.z = cmp(0.000000 != cb1[25].w); + r3.xy = r0.xy * r0.ww; + r0.xy = r0.zz ? r3.xy : r0.xy; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; + r0.zw = -r0.xy * r0.zz + v1.xy; + r3.xyz = t0.SampleLevel(s1_s, r0.zw, 0).xyz; + r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; + r0.z = cb1[0].z + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; + r0.xy = -r0.xy * r0.zz + v1.xy; + r0.xyz = t0.SampleLevel(s1_s, r0.xy, 0).xyz; + r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; + } + r0.xyz = cb0[27].xxx * r2.zxy; + r1.xyz = t1.SampleLevel(s1_s, v1.xy, 0).xyz; + r0.w = -cb1[9].z + 1; + r3.xyz = r1.zxy * r0.www; + r3.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r3.xyz); + r4.xyz = log2(r1.zxy); + r4.xyz = float3(0.330000013,0.330000013,0.330000013) * r4.xyz; + r4.xyz = exp2(r4.xyz); + r4.xyz = r4.xyz * float3(1.49380004,1.49380004,1.49380004) + float3(-0.699999988,-0.699999988,-0.699999988); + r0.w = max(r0.y, r0.z); + r0.w = max(r0.w, r0.x); + r5.xy = -cb1[10].yx + r0.ww; + r2.w = max(0, r5.x); + r2.w = min(cb1[10].z, r2.w); + r5.xzw = t3.SampleLevel(s0_s, v1.xy, 0).xyz; + r6.xy = -cb1[1].xy + v1.xy; + r3.w = -cb1[2].x + 1; + r3.w = cb1[1].w * r3.w + cb1[2].x; + r6.xy = abs(r6.xy) * r3.ww; + r3.w = saturate(cb1[2].x * 1.04999995); + r3.w = r3.w * 1.5 + -1; + r3.w = cb1[1].w * r3.w + 1; + r3.w = r6.x * r3.w; + r4.w = cb1[2].x * 2 + -1; + r4.w = cb1[1].w * r4.w + 1; + r6.x = saturate(cb1[2].x + -2.79999995); + r6.x = 5 * r6.x; + r6.y = saturate(r6.y * r4.w + r6.x); + r4.w = cb0[27].z + -1; + r4.w = cb1[2].w * r4.w + 1; + r6.z = cb0[27].z * 0.5625 + -r4.w; + r4.w = cb1[1].w * r6.z + r4.w; + r6.x = saturate(r4.w * r3.w); + r6.xy = log2(r6.xy); + r6.xy = cb1[2].zz * r6.xy; + r6.xy = exp2(r6.xy); + r2.w = r2.w * r2.w; + r2.w = cb1[10].w * r2.w; + r2.w = max(r2.w, r5.y); + r0.w = max(9.99999975e-005, r0.w); + r0.w = r2.w / r0.w; + r7.xyz = r0.xyz * r0.www; + r7.xyz = -r7.xyz * cb1[9].zzz + r0.xyz; + r1.xyz = r3.xyz ? r4.xyz : r1.zxy; + r1.xyz = r1.xyz * cb1[11].zxy + r7.xyz; + r1.xyz = -r2.zxy * cb0[27].xxx + r1.xyz; + r0.xyz = cb1[9].xxx * r1.xyz + r0.xyz; + r0.w = saturate(cb1[3].x * 3 + -2); + r1.x = min(r5.x, r5.z); + r1.x = min(r1.x, r5.w); + r1.x = -0.200000003 + r1.x; + r1.x = cmp(r1.x >= 0); + r1.x = r1.x ? 1.000000 : 0; + r0.w = -cb1[3].x + r0.w; + r0.w = r1.x * r0.w + cb1[3].x; + r1.xyz = float3(-1,-1,-1) + r5.wxz; + r1.xyz = r0.www * r1.xyz + float3(1,1,1); + r0.xyz = r1.xyz * r0.xyz; + r0.w = dot(r6.xy, r6.xy); + r0.w = 1 + -r0.w; + r0.w = max(0, r0.w); + r0.w = log2(r0.w); + r0.w = cb1[2].y * r0.w; + r0.w = exp2(r0.w); + float vignette_value = lerp(1.0, r0.w, VIGNETTE_STRENGTH); + r0.w = 1.0; // Disable original vignette, apply after tonemapping + r1.xyz = -cb1[4].zxy + float3(1,1,1); + r1.xyz = r0.www * r1.xyz + cb1[4].zxy; + r0.xyz = r1.xyz * r0.xyz; + r0.xyz = cb1[7].www * r0.xyz; + /* Original Code + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = max(float3(0,0,0), r0.xyz); + r0.xyz = log2(r0.xyz); + r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r0.yzw = cb1[7].zzz * r0.xyz; + r0.y = floor(r0.y); + r1.xy = cb1[7].xy * float2(0.5,0.5); + r1.yz = r0.zw * cb1[7].xy + r1.xy; + r1.x = r0.y * cb1[7].y + r1.y; + r2.xyz = t2.SampleLevel(s1_s, r1.xz, 0).xyz; + r3.x = cb1[7].y; + r3.y = 0; + r0.zw = r3.xy + r1.xz; + r1.xyz = t2.SampleLevel(s1_s, r0.zw, 0).xyz; + r0.x = r0.x * cb1[7].z + -r0.y; + r0.yzw = r1.xyz + -r2.xyz; + r0.xyz = r0.xxx * r0.yzw + r2.xyz; + r1.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; + r2.xyz = log2(abs(r0.xyz)); + r2.xyz = float3(0.416666657,0.416666657,0.416666657) * r2.xyz; + r2.xyz = exp2(r2.xyz); + r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); + r0.xyz = r0.xyz ? r1.xyz : r2.xyz; + r1.xy = cb0[0].xy * v1.xy; + r0.w = dot(float2(171,231), r1.xy); + r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; + r1.xyz = frac(r1.xyz); + r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; + o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; + o0.w = min(1, r1.w); + return; + */ + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); + [branch] + if (shader_injection.tone_map_type == 0.f) { + o0.xyz = SDRGRADE(lut_sample); + } else { + o0.xyz = HDRGRADE(lut_sample); + } + // Apply vignette after tonemapping + o0.xyz *= vignette_value; + if (CUSTOM_GRAIN_STRENGTH > 0) { + o0.xyz = renodx::effects::ApplyFilmGrain( + o0.xyz, + v1.xy, + CUSTOM_RANDOM, + CUSTOM_GRAIN_STRENGTH * 0.03f); + } + o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); + o0.w = min(1, r1.w); + return; +} diff --git a/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x2970B6A6.ps_5_0.hlsl similarity index 92% rename from src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x2970B6A6.ps_5_0.hlsl index 9466396cd5..8d3dea670b 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6501734.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x2970B6A6.ps_5_0.hlsl @@ -14,7 +14,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } #define cmp - @@ -28,11 +28,10 @@ void main( uint4 bitmask, uiDest; float4 fDest; - r0.x = cb0[82].x / cb0[82].y; - r0.y = -1 + r0.x; - r0.y = cb1[2].w * r0.y + 1; - r0.x = r0.x * 0.5625 + -r0.y; - r0.x = cb1[1].w * r0.x + r0.y; + r0.x = cb0[27].z + -1; + r0.x = cb1[2].w * r0.x + 1; + r0.y = cb0[27].z * 0.5625 + -r0.x; + r0.x = cb1[1].w * r0.y + r0.x; r0.y = saturate(cb1[2].x * 1.04999995); r0.y = r0.y * 1.5 + -1; r0.y = cb1[1].w * r0.y + 1; @@ -72,12 +71,12 @@ void main( r0.w = r0.w * r1.w + cb1[3].x; r1.xyz = r0.www * r1.xyz + float3(1,1,1); r2.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; - r2.xyz = cb0[109].xxx * r2.zxy; + r2.xyz = cb0[27].xxx * r2.zxy; o0.w = min(1, r2.w); r1.xyz = r2.xyz * r1.xyz; r0.xyz = r1.xyz * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; - + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t1, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { @@ -96,4 +95,4 @@ void main( } o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x29EA566F.ps_5_0.hlsl similarity index 83% rename from src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x29EA566F.ps_5_0.hlsl index eb0d3c27fd..5112cc5279 100644 --- a/src/games/endfield/uberpost/uberpost_0x21241B7A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x29EA566F.ps_5_0.hlsl @@ -1,4 +1,4 @@ -// ---- Created with 3Dmigoto v1.3.16 on Wed Jan 21 21:30:43 2026 +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 #include "../common.hlsl" Texture2D t2 : register(t2); @@ -15,7 +15,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -66,7 +66,7 @@ void main( r0.z = r0.w; continue; } - r0.xyz = cb0[109].xxx * r2.xyz; + r0.xyz = cb0[27].xxx * r2.xyz; r1.xyz = float3(0.166666672,0.166666672,0.166666672) * r0.xyz; r2.xyz = t1.SampleLevel(s0_s, v1.xy, 0).xyz; r0.w = -cb1[9].z + 1; @@ -94,11 +94,10 @@ void main( r5.x = saturate(cb1[2].x + -2.79999995); r5.x = 5 * r5.x; r6.y = saturate(r5.z * r4.w + r5.x); - r4.w = cb0[82].x / cb0[82].y; - r5.x = -1 + r4.w; - r5.x = cb1[2].w * r5.x + 1; - r4.w = r4.w * 0.5625 + -r5.x; - r4.w = cb1[1].w * r4.w + r5.x; + r4.w = cb0[27].z + -1; + r4.w = cb1[2].w * r4.w + 1; + r5.x = cb0[27].z * 0.5625 + -r4.w; + r4.w = cb1[1].w * r5.x + r4.w; r6.x = saturate(r4.w * r3.w); r5.xz = log2(r6.xy); r5.xz = cb1[2].zz * r5.xz; @@ -127,9 +126,7 @@ void main( r0.xyz = r1.xyz * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; /* Original Code - [branch] - if (shader_injection.tone_map_type == 0.f) { - r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); r0.xyz = max(float3(0,0,0), r0.xyz); r0.xyz = log2(r0.xyz); r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); @@ -153,25 +150,14 @@ void main( r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); r0.xyz = r0.xyz ? r1.xyz : r2.xyz; - r1.xy = cb0[82].xy * v1.xy; + r1.xy = cb0[0].xy * v1.xy; r0.w = dot(float2(171,231), r1.xy); r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; r1.xyz = frac(r1.xyz); r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; - o0.xyz = r1.xyz * float3(0.0013725491, 0.0013725491, 0.0013725491) + r0.xyz; - } else { - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR - ); - - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - o0.xyz = renodx::draw::ToneMapPass(r0.yzx, graded); - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); - } + o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; + o0.w = min(1, r1.w); + return; */ LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] @@ -192,4 +178,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x2AD9D42E.ps_5_0.hlsl similarity index 79% rename from src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x2AD9D42E.ps_5_0.hlsl index 25065786da..5524d6285c 100644 --- a/src/games/endfield/uberpost/uberpost_0xA6E6ABE6.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x2AD9D42E.ps_5_0.hlsl @@ -1,4 +1,4 @@ -// ---- Created with 3Dmigoto v1.3.16 on Tue Jan 20 19:04:24 2026 +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 #include "../common.hlsl" Texture2D t3 : register(t3); @@ -19,7 +19,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -103,7 +103,7 @@ void main( r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; } r0.xw = float2(0,0); - r0.yz = cb0[82].wz; + r0.yz = cb0[0].wz; r3.xyzw = v1.xyxy + r0.xyzw; r1.xyz = t0.SampleLevel(s1_s, r3.xy, 0).xyz; r0.xyzw = v1.xyxy + -r0.zwxy; @@ -162,7 +162,7 @@ void main( r0.xyz = r0.xyz + r3.zxy; r0.xyz = r0.www * r0.xyz + r2.zxy; r0.xyz = r0.xyz * r2.www; - r1.xyz = cb0[109].xxx * r0.xyz; + r1.xyz = cb0[27].xxx * r0.xyz; r2.xyz = t1.SampleLevel(s1_s, v1.xy, 0).xyz; r0.w = -cb1[9].z + 1; r3.xyz = r2.zxy * r0.www; @@ -186,7 +186,7 @@ void main( r6.xyz = -r6.xyz * cb1[9].zzz + r1.xyz; r2.xyz = r3.xyz ? r4.xyz : r2.zxy; r2.xyz = r2.xyz * cb1[11].zxy + r6.xyz; - r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; + r0.xyz = -r0.xyz * cb0[27].xxx + r2.xyz; r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; r0.w = saturate(cb1[3].x * 3 + -2); r1.x = min(r5.x, r5.z); @@ -199,7 +199,41 @@ void main( r1.xyz = float3(-1,-1,-1) + r5.wxz; r1.xyz = r0.www * r1.xyz + float3(1,1,1); r0.xyz = r1.xyz * r0.xyz; - r0.xyz = cb1[7].www * r0.xyz; + r0.xyz = cb1[7].www * r0.xyz; + /* Original Code + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = max(float3(0,0,0), r0.xyz); + r0.xyz = log2(r0.xyz); + r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r0.yzw = cb1[7].zzz * r0.xyz; + r0.y = floor(r0.y); + r1.xy = cb1[7].xy * float2(0.5,0.5); + r1.yz = r0.zw * cb1[7].xy + r1.xy; + r1.x = r0.y * cb1[7].y + r1.y; + r2.xyz = t2.SampleLevel(s1_s, r1.xz, 0).xyz; + r3.x = cb1[7].y; + r3.y = 0; + r0.zw = r3.xy + r1.xz; + r1.xyz = t2.SampleLevel(s1_s, r0.zw, 0).xyz; + r0.x = r0.x * cb1[7].z + -r0.y; + r0.yzw = r1.xyz + -r2.xyz; + r0.xyz = r0.xxx * r0.yzw + r2.xyz; + r1.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; + r2.xyz = log2(abs(r0.xyz)); + r2.xyz = float3(0.416666657,0.416666657,0.416666657) * r2.xyz; + r2.xyz = exp2(r2.xyz); + r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); + r0.xyz = r0.xyz ? r1.xyz : r2.xyz; + r1.xy = cb0[0].xy * v1.xy; + r0.w = dot(float2(171,231), r1.xy); + r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; + r1.xyz = frac(r1.xyz); + r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; + o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; + o0.w = min(1, r1.w); + return; + */ LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { @@ -217,4 +251,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x32A5505C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x32A5505C.ps_5_0.hlsl new file mode 100644 index 0000000000..e0063d7eb0 --- /dev/null +++ b/src/games/endfield/uberpost/uberpost_0x32A5505C.ps_5_0.hlsl @@ -0,0 +1,120 @@ +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 +#include "../common.hlsl" +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[26]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[28]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float2 v1 : TEXCOORD0, + out float4 o0 : SV_Target0) +{ + const float4 icb[] = { { 0.500000, 0, 0, 0}, + { 1.000000, 0, 0, 0}, + { 1.500000, 0, 0, 0}, + { 2.000000, 0, 0, 0}, + { 2.500000, 0, 0, 0} }; + float4 r0,r1,r2,r3; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xy = -cb1[0].xy + v1.xy; + r0.z = dot(r0.xy, r0.xy); + r0.z = sqrt(r0.z); + r0.w = log2(r0.z); + r0.w = cb1[0].w * r0.w; + r0.w = exp2(r0.w); + r0.xy = r0.xy * r0.ww; + r0.z = max(0.00999999978, r0.z); + r0.z = 1 / r0.z; + r0.z = -1 + r0.z; + r0.z = cb1[25].z * r0.z + 1; + r0.xy = r0.xy * r0.zz; + r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; + r2.xyz = r1.zxy; + r0.z = 0; + while (true) { + r0.w = cmp((int)r0.z >= 5); + if (r0.w != 0) break; + r0.w = icb[r0.z+0].x * cb1[0].z; + r3.xy = -r0.xy * r0.ww + v1.xy; + r3.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; + r3.xyz = r3.xyz + r2.yzx; + r0.w = (int)r0.z + 1; + r2.xyz = r3.zxy; + r0.z = r0.w; + continue; + } + r0.xyz = cb0[27].xxx * r2.xyz; + r0.xyz = cb1[7].www * r0.xyz; + /* Original Code + r0.xyz = r0.xyz * float3(0.92592597,0.92592597,0.92592597) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = max(float3(0,0,0), r0.xyz); + r0.xyz = log2(r0.xyz); + r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r0.yzw = cb1[7].zzz * r0.xyz; + r0.y = floor(r0.y); + r1.xy = cb1[7].xy * float2(0.5,0.5); + r1.yz = r0.zw * cb1[7].xy + r1.xy; + r1.x = r0.y * cb1[7].y + r1.y; + r2.xyz = t1.SampleLevel(s0_s, r1.xz, 0).xyz; + r3.x = cb1[7].y; + r3.y = 0; + r0.zw = r3.xy + r1.xz; + r1.xyz = t1.SampleLevel(s0_s, r0.zw, 0).xyz; + r0.x = r0.x * cb1[7].z + -r0.y; + r0.yzw = r1.xyz + -r2.xyz; + r0.xyz = r0.xxx * r0.yzw + r2.xyz; + r1.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; + r2.xyz = log2(abs(r0.xyz)); + r2.xyz = float3(0.416666657,0.416666657,0.416666657) * r2.xyz; + r2.xyz = exp2(r2.xyz); + r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); + r0.xyz = r0.xyz ? r1.xyz : r2.xyz; + r1.xy = cb0[0].xy * v1.xy; + r0.w = dot(float2(171,231), r1.xy); + r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; + r1.xyz = frac(r1.xyz); + r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; + o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; + o0.w = min(1, r1.w); + return; + */ + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx * (1.f / 6.f)); + [branch] + if (shader_injection.tone_map_type == 0.f) { + o0.xyz = SDRGRADE(lut_sample); + } else { + o0.xyz = HDRGRADE(lut_sample); + } + if (CUSTOM_GRAIN_STRENGTH > 0) { + o0.xyz = renodx::effects::ApplyFilmGrain( + o0.xyz, + v1.xy, + CUSTOM_RANDOM, + CUSTOM_GRAIN_STRENGTH * 0.03f); + } + o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); + o0.w = min(1, r1.w); + return; +} diff --git a/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x332E0835.ps_5_0.hlsl similarity index 95% rename from src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x332E0835.ps_5_0.hlsl index d0c7d6c36e..6eaa46f4ac 100644 --- a/src/games/endfield/uberpost/uberpost_0x00C16AFB.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x332E0835.ps_5_0.hlsl @@ -18,7 +18,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -41,7 +41,7 @@ void main( r1.x = r0.x * 0.5 + r0.y; r1.x = r0.z * 0.5 + r1.x; r2.xw = float2(0,0); - r2.yz = cb0[82].wz; + r2.yz = cb0[0].wz; r3.xyzw = v1.xyxy + -r2.zwxy; r2.xyzw = v1.xyxy + r2.xyzw; r1.yzw = t0.SampleLevel(s1_s, r3.xy, 0).xyz; @@ -98,7 +98,7 @@ void main( r1.x = r1.x * 4 + 1; r1.x = 1 / r1.x; r0.xyz = r1.xxx * r0.xyz; - r0.xyz = cb0[109].xxx * r0.xyz; + r0.xyz = cb0[27].xxx * r0.xyz; o0.w = min(1, r0.w); r1.xyz = t2.SampleLevel(s0_s, v1.xy, 0).xyz; r0.w = min(r1.x, r1.y); @@ -112,11 +112,10 @@ void main( r0.w = r0.w * r1.w + cb1[3].x; r1.xyz = r0.www * r1.xyz + float3(1,1,1); r0.xyz = r1.xyz * r0.xyz; - r0.w = cb0[82].x / cb0[82].y; - r1.x = -1 + r0.w; - r1.x = cb1[2].w * r1.x + 1; - r0.w = r0.w * 0.5625 + -r1.x; - r0.w = cb1[1].w * r0.w + r1.x; + r0.w = cb0[27].z + -1; + r0.w = cb1[2].w * r0.w + 1; + r1.x = cb0[27].z * 0.5625 + -r0.w; + r0.w = cb1[1].w * r1.x + r0.w; r1.x = saturate(cb1[2].x * 1.04999995); r1.x = r1.x * 1.5 + -1; r1.x = cb1[1].w * r1.x + 1; @@ -173,13 +172,13 @@ void main( r2.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); r0.xyz = r0.xyz ? r2.xyz : r1.xyz; - r1.xy = cb0[82].xy * v1.xy; + r1.xy = cb0[0].xy * v1.xy; r0.w = dot(float2(171,231), r1.xy); r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; r1.xyz = frac(r1.xyz); r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; - + } else { renodx::lut::Config lut_config = renodx::lut::config::Create( s1_s, @@ -212,4 +211,4 @@ void main( } o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x52A77DB9.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x52A77DB9.ps_5_0.hlsl new file mode 100644 index 0000000000..b8375266f4 --- /dev/null +++ b/src/games/endfield/uberpost/uberpost_0x52A77DB9.ps_5_0.hlsl @@ -0,0 +1,153 @@ +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 +#include "../common.hlsl" +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb0 : register(b0) +{ + float4 cb0[26]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float2 v1 : TEXCOORD0, + out float4 o0 : SV_Target0) +{ + const float4 icb[] = { { 0.500000, 0, 0, 0}, + { 1.000000, 0, 0, 0}, + { 1.500000, 0, 0, 0}, + { 2.000000, 0, 0, 0}, + { 2.500000, 0, 0, 0} }; + float4 r0,r1,r2,r3,r4,r5; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; + r1.xy = -cb0[0].xy + v1.xy; + r1.z = dot(r1.xy, r1.xy); + r1.z = sqrt(r1.z); + r1.w = log2(r1.z); + r1.w = cb0[0].w * r1.w; + r1.w = exp2(r1.w); + r1.xy = r1.xy * r1.ww; + r1.z = max(0.00999999978, r1.z); + r1.z = 1 / r1.z; + r1.z = -1 + r1.z; + r1.z = cb0[25].z * r1.z + 1; + r1.xy = r1.xy * r1.zz; + r2.xyz = r0.zxy; + r1.z = 0; + while (true) { + r1.w = cmp((int)r1.z >= 5); + if (r1.w != 0) break; + r1.w = icb[r1.z+0].x * cb0[0].z; + r3.xy = -r1.xy * r1.ww + v1.xy; + r3.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; + r3.xyz = r3.xyz + r2.yzx; + r1.w = (int)r1.z + 1; + r2.xyz = r3.zxy; + r1.z = r1.w; + continue; + } + r0.xyz = float3(0.166666672,0.166666672,0.166666672) * r2.xyz; + r1.xyzw = t1.SampleLevel(s0_s, v1.xy, 0).xyzw; + r2.w = -cb0[9].z + 1; + r3.xyz = r2.www * r1.zxy; + r3.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r3.xyz); + r4.xyz = log2(r1.zxy); + r4.xyz = float3(0.330000013,0.330000013,0.330000013) * r4.xyz; + r4.xyz = exp2(r4.xyz); + r4.xyz = r4.xyz * float3(1.49380004,1.49380004,1.49380004) + float3(-0.699999988,-0.699999988,-0.699999988); + r2.w = max(r0.y, r0.z); + r2.w = max(r2.w, r0.x); + r5.xy = -cb0[10].yx + r2.ww; + r3.w = max(0, r5.x); + r3.w = min(cb0[10].z, r3.w); + r3.w = r3.w * r3.w; + r3.w = cb0[10].w * r3.w; + r3.w = max(r3.w, r5.y); + r2.w = max(9.99999975e-005, r2.w); + r2.w = r3.w / r2.w; + r5.xyz = r2.www * r0.xyz; + r5.xyz = -r5.xyz * cb0[9].zzz + r0.xyz; + r1.xyz = r3.xyz ? r4.xyz : r1.zxy; + r1.xyz = r1.xyz * cb0[11].zxy + r5.xyz; + r1.xyz = -r2.xyz * float3(0.166666672,0.166666672,0.166666672) + r1.xyz; + r0.xyz = cb0[9].xxx * r1.xyz + r0.xyz; + o0.w = saturate(r1.w + r0.w); + r0.w = cb0[16].z + cb0[16].x; + r1.x = dot(cb0[16].xx, cb0[16].zz); + r0.w = -r1.x + r0.w; + r1.xyz = cb0[7].www * r0.xyz; + /* Original Code + r1.xyz = r1.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r1.xyz = max(float3(0,0,0), r1.xyz); + r1.xyz = log2(r1.xyz); + r1.xyz = saturate(r1.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r1.yzw = cb0[7].zzz * r1.xyz; + r0.x = floor(r1.y); + r2.xy = cb0[7].xy * float2(0.5,0.5); + r2.yz = r1.zw * cb0[7].xy + r2.xy; + r2.x = r0.x * cb0[7].y + r2.y; + r1.yzw = t2.SampleLevel(s0_s, r2.xz, 0).xyz; + r3.x = cb0[7].y; + r3.y = 0; + r2.xy = r3.xy + r2.xz; + r2.xyz = t2.SampleLevel(s0_s, r2.xy, 0).xyz; + r0.x = r1.x * cb0[7].z + -r0.x; + r2.xyz = r2.xyz + -r1.yzw; + r1.xyz = r0.xxx * r2.xyz + r1.yzw; + r2.xyz = float3(12.9200001,12.9200001,12.9200001) * r1.xyz; + r3.xyz = log2(abs(r1.xyz)); + r3.xyz = float3(0.416666657,0.416666657,0.416666657) * r3.xyz; + r3.xyz = exp2(r3.xyz); + r3.xyz = r3.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r1.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r1.xyz); + */ + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb0[7].xyz, t2, r1.yzx); + float3 graded_linear; + [branch] + if (shader_injection.tone_map_type == 0.f) { + graded_linear = SDRGRADE(lut_sample); + } else { + graded_linear = HDRGRADE(lut_sample); + } + float3 graded_encoded = renodx::color::srgb::EncodeSafe(graded_linear); + r0.x = 1 + -r0.w; + r0.xz = -cb0[16].yy + r0.xw; + r0.z = r0.z + -r0.x; + r0.x = r0.y + -r0.x; + r0.y = 1 / r0.z; + r0.x = saturate(r0.x * r0.y); + r0.y = r0.x * -2 + 3; + r0.x = r0.x * r0.x; + r0.z = r0.y * r0.x; + r1.xyz = graded_encoded; + r0.x = -r0.y * r0.x + 1; + r0.xyw = cb0[22].xyz * r0.xxx; + r0.xyz = cb0[21].xyz * r0.zzz + r0.xyw; + r0.xyz = r0.xyz + -r1.xyz; + o0.xyz = cb0[20].www * r0.xyz + r1.xyz; + o0.xyz = renodx::color::srgb::DecodeSafe(o0.xyz); + if (CUSTOM_GRAIN_STRENGTH > 0) { + o0.xyz = renodx::effects::ApplyFilmGrain( + o0.xyz, + v1.xy, + CUSTOM_RANDOM, + CUSTOM_GRAIN_STRENGTH * 0.03f); + } + o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); + return; +} diff --git a/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x52AC7E00.ps_5_0.hlsl similarity index 96% rename from src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x52AC7E00.ps_5_0.hlsl index ffae9697ef..a012ab1fb9 100644 --- a/src/games/endfield/uberpost/uberpost_0x6A76C719.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x52AC7E00.ps_5_0.hlsl @@ -15,7 +15,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -38,7 +38,7 @@ void main( r1.x = r0.x * 0.5 + r0.y; r1.x = r0.z * 0.5 + r1.x; r2.xw = float2(0,0); - r2.yz = cb0[82].wz; + r2.yz = cb0[0].wz; r3.xyzw = v1.xyxy + -r2.zwxy; r2.xyzw = v1.xyxy + r2.xyzw; r1.yzw = t0.SampleLevel(s0_s, r3.xy, 0).xyz; @@ -96,7 +96,7 @@ void main( r1.x = 1 / r1.x; r0.xyz = r1.xxx * r0.xyz; o0.w = min(1, r0.w); - r1.xyz = cb0[109].xxx * r0.xyz; + r1.xyz = cb0[27].xxx * r0.xyz; r0.w = max(r1.y, r1.z); r0.w = max(r0.w, r1.x); r2.xy = -cb1[10].yx + r0.ww; @@ -119,10 +119,10 @@ void main( r5.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r5.xyz); r3.xyz = r5.xyz ? r4.xyz : r3.zxy; r2.xyz = r3.xyz * cb1[11].zxy + r2.xyz; - r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; + r0.xyz = -r0.xyz * cb0[27].xxx + r2.xyz; r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; r0.xyz = cb1[7].www * r0.xyz; - + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { @@ -139,4 +139,4 @@ void main( } o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl deleted file mode 100644 index f57b0f6203..0000000000 --- a/src/games/endfield/uberpost/uberpost_0x53875523.ps_5_0.hlsl +++ /dev/null @@ -1,199 +0,0 @@ -// ---- Created with 3Dmigoto v1.3.16 on Tue Jan 20 19:04:10 2026 -#include "../common.hlsl" - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[25]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[110]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2,r3,r4,r5,r6,r7; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; - r1.x = r0.x * 0.5 + r0.y; - r1.x = r0.z * 0.5 + r1.x; - r2.xw = float2(0,0); - r2.yz = cb0[82].wz; - r3.xyzw = v1.xyxy + -r2.zwxy; - r2.xyzw = v1.xyxy + r2.xyzw; - r1.yzw = t0.SampleLevel(s0_s, r3.xy, 0).xyz; - r3.xyz = t0.SampleLevel(s0_s, r3.zw, 0).xyz; - r3.w = r1.y * 0.5 + r1.z; - r3.w = r1.w * 0.5 + r3.w; - r4.x = max(r3.w, r1.x); - r4.yzw = t0.SampleLevel(s0_s, r2.xy, 0).xyz; - r2.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; - r2.w = r4.y * 0.5 + r4.z; - r2.w = r4.w * 0.5 + r2.w; - r4.x = max(r2.w, r4.x); - r5.x = r2.x * 0.5 + r2.y; - r5.x = r2.z * 0.5 + r5.x; - r5.y = r3.x * 0.5 + r3.y; - r5.y = r3.z * 0.5 + r5.y; - r5.z = max(r5.x, r5.y); - r4.x = max(r5.z, r4.x); - r5.z = min(r3.w, r1.x); - r3.w = r2.w + r3.w; - r2.w = min(r5.z, r2.w); - r3.w = r3.w + r5.x; - r5.x = min(r5.x, r5.y); - r3.w = r3.w + r5.y; - r1.x = r3.w * 0.25 + -r1.x; - r2.w = min(r5.x, r2.w); - r2.w = r4.x + -r2.w; - r2.w = 1 / r2.w; - r1.x = saturate(r2.w * abs(r1.x)); - r1.x = r1.x * -0.5 + 1; - r5.xyz = max(r2.xyz, r1.yzw); - r5.xyz = max(r5.xyz, r4.yzw); - r5.xyz = max(r5.xyz, r3.xyz); - r6.xyz = float3(0.25,0.25,0.25) / r5.xyz; - r5.xyz = float3(1,1,1) + -r5.xyz; - r7.xyz = min(r2.xyz, r1.yzw); - r1.yzw = r4.wyz + r1.wyz; - r4.xyz = min(r7.xyz, r4.yzw); - r4.xyz = min(r4.xyz, r3.xyz); - r1.yzw = r1.yzw + r3.zxy; - r1.yzw = r1.yzw + r2.zxy; - r2.xyz = r4.xyz * r6.xyz; - r3.xyz = r4.xyz * float3(4,4,4) + float3(-4,-4,-4); - r3.xyz = float3(1,1,1) / r3.xyz; - r3.xyz = r5.xyz * r3.xyz; - r2.xyz = max(r3.xyz, -r2.xyz); - r2.y = max(r2.y, r2.z); - r2.x = max(r2.x, r2.y); - r2.x = min(0, r2.x); - r2.x = max(-0.1875, r2.x); - r2.x = cb1[24].x * r2.x; - r1.x = r2.x * r1.x; - r0.xyz = r1.xxx * r1.yzw + r0.zxy; - r1.x = r1.x * 4 + 1; - r1.x = 1 / r1.x; - r0.xyz = r1.xxx * r0.xyz; - r0.xyz = cb0[109].xxx * r0.xyz; - o0.w = min(1, r0.w); - r0.w = cb0[82].x / cb0[82].y; - r1.x = -1 + r0.w; - r1.x = cb1[2].w * r1.x + 1; - r0.w = r0.w * 0.5625 + -r1.x; - r0.w = cb1[1].w * r0.w + r1.x; - r1.x = saturate(cb1[2].x * 1.04999995); - r1.x = r1.x * 1.5 + -1; - r1.x = cb1[1].w * r1.x + 1; - r1.y = -cb1[2].x + 1; - r1.y = cb1[1].w * r1.y + cb1[2].x; - r1.zw = -cb1[1].xy + v1.xy; - r1.yz = abs(r1.zw) * r1.yy; - r1.x = r1.y * r1.x; - r1.x = saturate(r1.x * r0.w); - r0.w = cb1[2].x * 2 + -1; - r0.w = cb1[1].w * r0.w + 1; - r1.w = saturate(cb1[2].x + -2.79999995); - r1.w = 5 * r1.w; - r1.y = saturate(r1.z * r0.w + r1.w); - r1.xy = log2(r1.xy); - r1.xy = cb1[2].zz * r1.xy; - r1.xy = exp2(r1.xy); - r0.w = dot(r1.xy, r1.xy); - r0.w = 1 + -r0.w; - r0.w = max(0, r0.w); - r0.w = log2(r0.w); - r0.w = cb1[2].y * r0.w; - r0.w = exp2(r0.w); - float vignette_value = lerp(1.0, r0.w, VIGNETTE_STRENGTH); - r0.w = 1.0; // Disable original vignette, apply after tonemapping - r1.xyz = -cb1[4].zxy + float3(1,1,1); - r1.xyz = r0.www * r1.xyz + cb1[4].zxy; - r0.xyz = r1.xyz * r0.xyz; - r0.xyz = cb1[7].www * r0.xyz; - - /* Original Code - [branch] - if (shader_injection.tone_map_type == 0.f) { - r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); - r0.xyz = max(float3(0,0,0), r0.xyz); - r0.xyz = log2(r0.xyz); - r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); - r0.yzw = cb1[7].zzz * r0.xyz; - r0.y = floor(r0.y); - r0.x = r0.x * cb1[7].z + -r0.y; - r1.xy = cb1[7].xy * float2(0.5,0.5); - r1.yz = r0.zw * cb1[7].xy + r1.xy; - r1.x = r0.y * cb1[7].y + r1.y; - r2.x = cb1[7].y; - r2.y = 0; - r0.yz = r2.xy + r1.xz; - r1.xyz = t1.SampleLevel(s0_s, r1.xz, 0).xyz; - r0.yzw = t1.SampleLevel(s0_s, r0.yz, 0).xyz; - r0.yzw = r0.yzw + -r1.xyz; - r0.xyz = r0.xxx * r0.yzw + r1.xyz; - r1.xyz = log2(abs(r0.xyz)); - r1.xyz = float3(0.416666657,0.416666657,0.416666657) * r1.xyz; - r1.xyz = exp2(r1.xyz); - r1.xyz = r1.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); - r2.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; - r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); - r0.xyz = r0.xyz ? r2.xyz : r1.xyz; - r1.xy = cb0[82].xy * v1.xy; - r0.w = dot(float2(171,231), r1.xy); - r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; - r1.xyz = frac(r1.xyz); - r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; - o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; - } else { - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR - ); - - float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); - o0.xyz = renodx::draw::ToneMapPass(r0.yzx, graded); - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); - } - */ - LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); - [branch] - if (shader_injection.tone_map_type == 0.f) { - o0.xyz = SDRGRADE(lut_sample); - } else { - o0.xyz = HDRGRADE(lut_sample); - } - // Apply vignette after tonemapping - o0.xyz *= vignette_value; - if (CUSTOM_GRAIN_STRENGTH > 0) { - o0.xyz = renodx::effects::ApplyFilmGrain( - o0.xyz, - v1.xy, - CUSTOM_RANDOM, - CUSTOM_GRAIN_STRENGTH * 0.03f); - } - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); - return; -} \ No newline at end of file diff --git a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl deleted file mode 100644 index 230b1effa2..0000000000 --- a/src/games/endfield/uberpost/uberpost_0x53D50BD5.ps_5_0.hlsl +++ /dev/null @@ -1,309 +0,0 @@ -// ---- Created with 3Dmigoto v1.3.16 on Tue Jan 20 19:04:10 2026 -#include "../common.hlsl" -Texture2D t3 : register(t3); - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[26]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[110]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2,r3,r4,r5,r6,r7; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = -cb1[0].xy + v1.xy; - r0.z = dot(r0.xy, r0.xy); - r0.w = sqrt(r0.z); - r0.w = max(0.00999999978, r0.w); - r0.w = 1 / r0.w; - r1.x = cb1[0].w * 0.5; - r0.z = log2(r0.z); - r0.z = r1.x * r0.z; - r0.z = exp2(r0.z); - r0.xy = r0.xy * r0.zz; - r1.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; - r1.xyz = float3(1,0,0) * r1.xyz; - float ca_strength = CHROMATIC_ABERRATION_STRENGTH; - r0.z = cmp(3 < cb1[25].x); - if (r0.z != 0) { - r2.xy = cmp(float2(0,0) != cb1[25].wz); - r0.z = (int)r2.y | (int)r2.x; - r2.xy = r0.xy * r0.ww; - r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y * ca_strength + cb1[0].z; - r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; - r3.xyzw = cb1[25].yyyy * float4(3,3,4,4); - r4.xy = -r2.xy * r0.zz + v1.xy; - r4.xyz = t0.SampleLevel(s1_s, r4.xy, 0).xyz; - r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; - r0.z = r0.z + r0.z; - r5.xy = -r2.xy * r0.zz + v1.xy; - r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; - r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; - r5.xy = -r2.xy * r0.zz + v1.xy; - r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r3.xyzw = cb1[0].zzzz * float4(2,2,2,2) + r3.xyzw; - r3.xyzw = -r2.xyxy * r3.xyzw + v1.xyxy; - r5.xyz = t0.SampleLevel(s1_s, r3.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r2.zw = -r2.xy * r2.zz + v1.xy; - r5.xyz = t0.SampleLevel(s1_s, r2.zw, 0).xyz; - r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; - r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; - r2.xy = -r2.xy * r0.zz + v1.xy; - r2.xyz = t0.SampleLevel(s1_s, r2.xy, 0).xyz; - r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; - r3.xyz = t0.SampleLevel(s1_s, r3.zw, 0).xyz; - r2.xyz = r3.xyz * float3(0,0,1) + r2.xyz; - r2.xyz = float3(0.333333403,0.333333403,0.333333403) * r2.xyz; - } else { - r0.z = cmp(0.000000 != cb1[25].w); - r3.xy = r0.xy * r0.ww; - r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; - r0.zw = -r0.xy * r0.zz + v1.xy; - r3.xyz = t0.SampleLevel(s1_s, r0.zw, 0).xyz; - r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; - r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * ca_strength * 3 + r0.z; - r0.xy = -r0.xy * r0.zz + v1.xy; - r0.xyz = t0.SampleLevel(s1_s, r0.xy, 0).xyz; - r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; - } - r0.xw = float2(0,0); - r0.yz = cb0[82].wz; - r3.xyzw = v1.xyxy + r0.xyzw; - r1.xyz = t0.SampleLevel(s1_s, r3.xy, 0).xyz; - r0.xyzw = v1.xyxy + -r0.zwxy; - r4.xyz = t0.SampleLevel(s1_s, r0.xy, 0).xyz; - r3.xyz = t0.SampleLevel(s1_s, r3.zw, 0).xyz; - r0.xyz = t0.SampleLevel(s1_s, r0.zw, 0).xyz; - r0.w = r1.x * 0.5 + r1.y; - r0.w = r1.z * 0.5 + r0.w; - r2.w = r4.x * 0.5 + r4.y; - r2.w = r4.z * 0.5 + r2.w; - r3.w = r2.x * 0.5 + r2.y; - r3.w = r2.z * 0.5 + r3.w; - r4.w = r3.x * 0.5 + r3.y; - r4.w = r3.z * 0.5 + r4.w; - r5.x = r0.x * 0.5 + r0.y; - r5.x = r0.z * 0.5 + r5.x; - r5.yzw = min(r4.xyz, r3.xyz); - r5.yzw = min(r5.yzw, r1.xyz); - r5.yzw = min(r5.yzw, r0.xyz); - r6.xyz = max(r4.xyz, r3.xyz); - r6.xyz = max(r6.xyz, r1.xyz); - r6.xyz = max(r6.xyz, r0.xyz); - r7.xyz = float3(0.25,0.25,0.25) / r6.xyz; - r7.xyz = r7.xyz * r5.yzw; - r6.xyz = float3(1,1,1) + -r6.xyz; - r5.yzw = r5.yzw * float3(4,4,4) + float3(-4,-4,-4); - r5.yzw = float3(1,1,1) / r5.yzw; - r5.yzw = r6.xyz * r5.yzw; - r5.yzw = max(-r7.xyz, r5.yzw); - r5.z = max(r5.z, r5.w); - r5.y = max(r5.y, r5.z); - r5.y = min(0, r5.y); - r5.y = max(-0.1875, r5.y); - r5.y = cb1[24].x * r5.y; - r5.z = r2.w + r0.w; - r5.z = r5.z + r4.w; - r5.z = r5.z + r5.x; - r5.z = r5.z * 0.25 + -r3.w; - r5.w = max(r3.w, r2.w); - r5.w = max(r5.w, r0.w); - r6.x = max(r5.x, r4.w); - r5.w = max(r6.x, r5.w); - r2.w = min(r3.w, r2.w); - r0.w = min(r2.w, r0.w); - r2.w = min(r5.x, r4.w); - r0.w = min(r2.w, r0.w); - r0.w = r5.w + -r0.w; - r0.w = 1 / r0.w; - r0.w = saturate(abs(r5.z) * r0.w); - r0.w = r0.w * -0.5 + 1; - r0.w = r5.y * r0.w; - r2.w = r0.w * 4 + 1; - r2.w = 1 / r2.w; - r1.xyz = r4.zxy + r1.zxy; - r0.xyz = r1.xyz + r0.zxy; - r0.xyz = r0.xyz + r3.zxy; - r0.xyz = r0.www * r0.xyz + r2.zxy; - r0.xyz = r0.xyz * r2.www; - r1.xyz = cb0[109].xxx * r0.xyz; - r2.xyz = t1.SampleLevel(s1_s, v1.xy, 0).xyz; - r0.w = -cb1[9].z + 1; - r3.xyz = r2.zxy * r0.www; - r3.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r3.xyz); - r4.xyz = log2(r2.zxy); - r4.xyz = float3(0.330000013,0.330000013,0.330000013) * r4.xyz; - r4.xyz = exp2(r4.xyz); - r4.xyz = r4.xyz * float3(1.49380004,1.49380004,1.49380004) + float3(-0.699999988,-0.699999988,-0.699999988); - r0.w = max(r1.y, r1.z); - r0.w = max(r0.w, r1.x); - r5.xy = -cb1[10].yx + r0.ww; - r2.w = max(0, r5.x); - r2.w = min(cb1[10].z, r2.w); - r5.xz = -cb1[1].xy + v1.xy; - r3.w = -cb1[2].x + 1; - r3.w = cb1[1].w * r3.w + cb1[2].x; - r5.xz = abs(r5.xz) * r3.ww; - r3.w = saturate(cb1[2].x * 1.04999995); - r3.w = r3.w * 1.5 + -1; - r3.w = cb1[1].w * r3.w + 1; - r3.w = r5.x * r3.w; - r4.w = cb1[2].x * 2 + -1; - r4.w = cb1[1].w * r4.w + 1; - r5.x = saturate(cb1[2].x + -2.79999995); - r5.x = 5 * r5.x; - r6.y = saturate(r5.z * r4.w + r5.x); - r4.w = cb0[82].x / cb0[82].y; - r5.x = -1 + r4.w; - r5.x = cb1[2].w * r5.x + 1; - r4.w = r4.w * 0.5625 + -r5.x; - r4.w = cb1[1].w * r4.w + r5.x; - r6.x = saturate(r4.w * r3.w); - r5.xz = log2(r6.xy); - r5.xz = cb1[2].zz * r5.xz; - r5.xz = exp2(r5.xz); - r2.w = r2.w * r2.w; - r2.w = cb1[10].w * r2.w; - r2.w = max(r2.w, r5.y); - r0.w = max(9.99999975e-005, r0.w); - r0.w = r2.w / r0.w; - r6.xyz = r1.xyz * r0.www; - r6.xyz = -r6.xyz * cb1[9].zzz + r1.xyz; - r2.xyz = r3.xyz ? r4.xyz : r2.zxy; - r2.xyz = r2.xyz * cb1[11].zxy + r6.xyz; - r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; - r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; - r0.w = dot(r5.xz, r5.xz); - r0.w = 1 + -r0.w; - r0.w = max(0, r0.w); - r0.w = log2(r0.w); - r0.w = cb1[2].y * r0.w; - r0.w = exp2(r0.w); - float vignette_value = lerp(1.0, r0.w, VIGNETTE_STRENGTH); - r0.w = 1.0; // Disable original vignette, apply after tonemapping - r1.xyz = -cb1[4].zxy + float3(1,1,1); - r1.xyz = r0.www * r1.xyz + cb1[4].zxy; - r0.xyz = r1.xyz * r0.xyz; - r0.xyz = cb1[7].www * r0.xyz; - /* Original Code - o0.w = min(1, r1.w); - - [branch] - if (shader_injection.tone_map_type == 0.f) { - r0.xyz = r0.xyz * float3(5.55555582, 5.55555582, 5.55555582) + float3(0.0479959995, 0.0479959995, 0.0479959995); - r0.xyz = max(float3(0, 0, 0), r0.xyz); - r0.xyz = log2(r0.xyz); - r0.xyz = saturate(r0.xyz * float3(0.0734997839, 0.0734997839, 0.0734997839) + float3(0.386036009, 0.386036009, 0.386036009)); - r0.yzw = cb1[7].zzz * r0.xyz; - r0.y = floor(r0.y); - r1.xy = cb1[7].xy * float2(0.5, 0.5); - r1.yz = r0.zw * cb1[7].xy + r1.xy; - r1.x = r0.y * cb1[7].y + r1.y; - r2.xyz = t2.SampleLevel(s1_s, r1.xz, 0).xyz; - r3.x = cb1[7].y; - r3.yw = float2(0, 0); - r0.zw = r3.xy + r1.xz; - r1.xyz = t2.SampleLevel(s1_s, r0.zw, 0).xyz; - r0.x = r0.x * cb1[7].z + -r0.y; - r0.yzw = r1.xyz + -r2.xyz; - r0.xyz = r0.xxx * r0.yzw + r2.xyz; - - r1.xyz = float3(12.9200001, 12.9200001, 12.9200001) * r0.xyz; - r2.xyz = log2(abs(r0.xyz)); - r2.xyz = float3(0.416666657, 0.416666657, 0.416666657) * r2.xyz; - r2.xyz = exp2(r2.xyz); - r2.xyz = r2.xyz * float3(1.05499995, 1.05499995, 1.05499995) + float3(-0.0549999997, -0.0549999997, -0.0549999997); - r0.xyz = cmp(float3(0.00313080009, 0.00313080009, 0.00313080009) >= r0.xyz); - r0.xyz = saturate(r0.xyz ? r1.xyz : r2.xyz); - - r1.xyz = cb1[8].zzz * r0.zxy; - r0.w = floor(r1.x); - r2.xy = cb1[8].xy * float2(0.5, 0.5); - r1.yz = r1.yz * cb1[8].xy + r2.xy; - r1.x = r0.w * cb1[8].y + r1.y; - r2.xyz = t3.SampleLevel(s0_s, r1.xz, 0).xyz; - r3.z = cb1[8].y; - r1.xy = r1.xz + r3.zw; - r1.xyz = t3.SampleLevel(s0_s, r1.xy, 0).xyz; - r0.w = r0.z * cb1[8].z + -r0.w; - r1.xyz = r1.xyz + -r2.xyz; - r1.xyz = r0.www * r1.xyz + r2.xyz; - r1.xyz = r1.xyz + -r0.xyz; - r0.xyz = cb1[8].www * r1.xyz + r0.xyz; - - r1.xy = cb0[82].xy * v1.xy; - r0.w = dot(float2(171, 231), r1.xy); - r1.xyz = float3(0.00970873795, 0.0140845068, 0.010309278) * r0.www; - r1.xyz = frac(r1.xyz); - r1.xyz = float3(-0.5, -0.5, -0.5) + r1.xyz; - o0.xyz = r1.xyz * float3(0.0013725491, 0.0013725491, 0.0013725491) + r0.xyz; - } else { - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR - ); - - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - o0.xyz = renodx::draw::ToneMapPass(r0.yzx, graded); - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); - } - */ - LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); - [branch] - if (shader_injection.tone_map_type == 0.f) { - o0.xyz = SDRGRADE(lut_sample); - } else { - o0.xyz = HDRGRADE(lut_sample); - } - // Apply vignette after tonemapping - o0.xyz *= vignette_value; - if (CUSTOM_GRAIN_STRENGTH > 0) { - o0.xyz = renodx::effects::ApplyFilmGrain( - o0.xyz, - v1.xy, - CUSTOM_RANDOM, - CUSTOM_GRAIN_STRENGTH * 0.03f); - } - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); - o0.w = min(1, r1.w); - return; -} \ No newline at end of file diff --git a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl deleted file mode 100644 index a858153e68..0000000000 --- a/src/games/endfield/uberpost/uberpost_0x61908D50.ps_5_0.hlsl +++ /dev/null @@ -1,171 +0,0 @@ -// ---- Created with 3Dmigoto v1.3.16 on Wed Jan 21 18:05:04 2026 -#include "../common.hlsl" -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) { - float4 cb1[26]; -} - -cbuffer cb0 : register(b0) { - float4 cb0[110]; -} - -// 3Dmigoto declarations -#define cmp - - -void main( - float4 v0: SV_Position0, - float2 v1: TEXCOORD0, - out float4 o0: SV_Target0) { - float4 r0, r1, r2, r3, r4, r5, r6; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xy = -cb1[0].xy + v1.xy; - r0.z = dot(r0.xy, r0.xy); - r0.w = sqrt(r0.z); - r0.w = max(0.00999999978, r0.w); - r0.w = 1 / r0.w; - r1.x = cb1[0].w * 0.5; - r0.z = log2(r0.z); - r0.z = r1.x * r0.z; - r0.z = exp2(r0.z); - r0.xy = r0.xy * r0.zz; - r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; - r1.xyz = float3(1,0,0) * r1.xyz; - float ca_strength = CHROMATIC_ABERRATION_STRENGTH; - r0.z = cmp(3 < cb1[25].x); - if (r0.z != 0) { - r2.xy = cmp(float2(0, 0) != cb1[25].wz); - r0.z = (int)r2.y | (int)r2.x; - r2.xy = r0.xy * r0.ww; - r2.xy = r0.zz ? r2.xy : r0.xy; - r0.z = cb1[25].y * ca_strength + cb1[0].z; - r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; - r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); - r4.xy = -r2.xy * r0.zz + v1.xy; - r4.xyz = t0.SampleLevel(s0_s, r4.xy, 0).xyz; - r4.xyz = r4.xyz * float3(1, 0, 0) + r1.xyz; - r0.z = r0.z + r0.z; - r5.xy = -r2.xy * r0.zz + v1.xy; - r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; - r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; - r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; - r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; - r5.xy = -r2.xy * r0.zz + v1.xy; - r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0, 1, 0) + r4.xyz; - r3.xyzw = cb1[0].zzzz * float4(2, 2, 2, 2) + r3.xyzw; - r3.xyzw = -r2.xyxy * r3.xyzw + v1.xyxy; - r5.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; - r4.xyz = r5.xyz * float3(0, 1, 0) + r4.xyz; - r2.zw = -r2.xy * r2.zz + v1.xy; - r5.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; - r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; - r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; - r2.xy = -r2.xy * r0.zz + v1.xy; - r2.xyz = t0.SampleLevel(s0_s, r2.xy, 0).xyz; - r2.xyz = r2.xyz * float3(0, 0, 1) + r4.xyz; - r3.xyz = t0.SampleLevel(s0_s, r3.zw, 0).xyz; - r2.xyz = r3.xyz * float3(0, 0, 1) + r2.xyz; - r2.xyz = float3(0.333333403, 0.333333403, 0.333333403) * r2.xyz; - } else { - r0.z = cmp(0.000000 != cb1[25].w); - r3.xy = r0.xy * r0.ww; - r0.xy = r0.zz ? r3.xy : r0.xy; - r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; - r0.zw = -r0.xy * r0.zz + v1.xy; - r3.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; - r1.xyz = r3.xyz * float3(0, 1, 0) + r1.xyz; - r0.z = cb1[0].z + cb1[0].z; - r0.z = cb1[25].y * ca_strength * 3 + r0.z; - r0.xy = -r0.xy * r0.zz + v1.xy; - r0.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; - r2.xyz = r0.xyz * float3(0, 0, 1) + r1.xyz; - } - r0.xyz = cb0[109].xxx * r2.zxy; - r1.xyz = t1.SampleLevel(s0_s, v1.xy, 0).xyz; - r0.w = -cb1[9].z + 1; - r3.xyz = r1.zxy * r0.www; - r3.xyz = cmp(float3(0.300000012, 0.300000012, 0.300000012) < r3.xyz); - r4.xyz = log2(r1.zxy); - r4.xyz = float3(0.330000013, 0.330000013, 0.330000013) * r4.xyz; - r4.xyz = exp2(r4.xyz); - r4.xyz = r4.xyz * float3(1.49380004, 1.49380004, 1.49380004) + float3(-0.699999988, -0.699999988, -0.699999988); - r0.w = max(r0.y, r0.z); - r0.w = max(r0.w, r0.x); - r5.xy = -cb1[10].yx + r0.ww; - r2.w = max(0, r5.x); - r2.w = min(cb1[10].z, r2.w); - r5.xz = -cb1[1].xy + v1.xy; - r3.w = -cb1[2].x + 1; - r3.w = cb1[1].w * r3.w + cb1[2].x; - r5.xz = abs(r5.xz) * r3.ww; - r3.w = saturate(cb1[2].x * 1.04999995); - r3.w = r3.w * 1.5 + -1; - r3.w = cb1[1].w * r3.w + 1; - r3.w = r5.x * r3.w; - r4.w = cb1[2].x * 2 + -1; - r4.w = cb1[1].w * r4.w + 1; - r5.x = saturate(cb1[2].x + -2.79999995); - r5.x = 5 * r5.x; - r6.y = saturate(r5.z * r4.w + r5.x); - r4.w = cb0[82].x / cb0[82].y; - r5.x = -1 + r4.w; - r5.x = cb1[2].w * r5.x + 1; - r4.w = r4.w * 0.5625 + -r5.x; - r4.w = cb1[1].w * r4.w + r5.x; - r6.x = saturate(r4.w * r3.w); - r5.xz = log2(r6.xy); - r5.xz = cb1[2].zz * r5.xz; - r5.xz = exp2(r5.xz); - r2.w = r2.w * r2.w; - r2.w = cb1[10].w * r2.w; - r2.w = max(r2.w, r5.y); - r0.w = max(9.99999975e-005, r0.w); - r0.w = r2.w / r0.w; - r6.xyz = r0.xyz * r0.www; - r6.xyz = -r6.xyz * cb1[9].zzz + r0.xyz; - r1.xyz = r3.xyz ? r4.xyz : r1.zxy; - r1.xyz = r1.xyz * cb1[11].zxy + r6.xyz; - r1.xyz = -r2.zxy * cb0[109].xxx + r1.xyz; - r0.xyz = cb1[9].xxx * r1.xyz + r0.xyz; - r0.w = dot(r5.xz, r5.xz); - r0.w = 1 + -r0.w; - r0.w = max(0, r0.w); - r0.w = log2(r0.w); - r0.w = cb1[2].y * r0.w; - r0.w = exp2(r0.w); - float vignette_value = lerp(1.0, r0.w, VIGNETTE_STRENGTH); - r0.w = 1.0; // Disable original vignette, apply after tonemapping - r1.xyz = -cb1[4].zxy + float3(1, 1, 1); - r1.xyz = r0.www * r1.xyz + cb1[4].zxy; - r0.xyz = r1.xyz * r0.xyz; - LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); - [branch] - if (shader_injection.tone_map_type == 0.f) { - o0.xyz = SDRGRADE(lut_sample); - } else { - o0.xyz = HDRGRADE(lut_sample); - } - // Apply vignette after tonemapping - o0.xyz *= vignette_value; - if (CUSTOM_GRAIN_STRENGTH > 0) { - o0.xyz = renodx::effects::ApplyFilmGrain( - o0.xyz, - v1.xy, - CUSTOM_RANDOM, - CUSTOM_GRAIN_STRENGTH * 0.03f); - } - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); - o0.w = min(1, r1.w); - return; -} diff --git a/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x63AB936D.ps_5_0.hlsl similarity index 86% rename from src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x63AB936D.ps_5_0.hlsl index 69c7978373..a8becb094e 100644 --- a/src/games/endfield/uberpost/uberpost_0x5FC0BD3C.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x63AB936D.ps_5_0.hlsl @@ -1,4 +1,4 @@ -// ---- Created with 3Dmigoto v1.3.16 on Tue Jan 20 19:04:12 2026 +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 #include "../common.hlsl" Texture2D t3 : register(t3); @@ -19,7 +19,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -42,7 +42,7 @@ void main( r1.x = r0.x * 0.5 + r0.y; r1.x = r0.z * 0.5 + r1.x; r2.xw = float2(0,0); - r2.yz = cb0[82].wz; + r2.yz = cb0[0].wz; r3.xyzw = v1.xyxy + -r2.zwxy; r2.xyzw = v1.xyxy + r2.xyzw; r1.yzw = t0.SampleLevel(s1_s, r3.xy, 0).xyz; @@ -100,7 +100,7 @@ void main( r1.x = 1 / r1.x; r0.xyz = r1.xxx * r0.xyz; o0.w = min(1, r0.w); - r1.xyz = cb0[109].xxx * r0.xyz; + r1.xyz = cb0[27].xxx * r0.xyz; r0.w = max(r1.y, r1.z); r0.w = max(r0.w, r1.x); r2.xy = -cb1[10].yx + r0.ww; @@ -123,7 +123,7 @@ void main( r5.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r5.xyz); r3.xyz = r5.xyz ? r4.xyz : r3.zxy; r2.xyz = r3.xyz * cb1[11].zxy + r2.xyz; - r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; + r0.xyz = -r0.xyz * cb0[27].xxx + r2.xyz; r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; r1.xyz = t3.SampleLevel(s0_s, v1.xy, 0).xyz; r0.w = min(r1.x, r1.y); @@ -137,11 +137,10 @@ void main( r0.w = r0.w * r1.w + cb1[3].x; r1.xyz = r0.www * r1.xyz + float3(1,1,1); r0.xyz = r1.xyz * r0.xyz; - r0.w = cb0[82].x / cb0[82].y; - r1.x = -1 + r0.w; - r1.x = cb1[2].w * r1.x + 1; - r0.w = r0.w * 0.5625 + -r1.x; - r0.w = cb1[1].w * r0.w + r1.x; + r0.w = cb0[27].z + -1; + r0.w = cb1[2].w * r0.w + 1; + r1.x = cb0[27].z * 0.5625 + -r0.w; + r0.w = cb1[1].w * r1.x + r0.w; r1.x = saturate(cb1[2].x * 1.04999995); r1.x = r1.x * 1.5 + -1; r1.x = cb1[1].w * r1.x + 1; @@ -170,11 +169,9 @@ void main( r1.xyz = -cb1[4].zxy + float3(1,1,1); r1.xyz = r0.www * r1.xyz + cb1[4].zxy; r0.xyz = r1.xyz * r0.xyz; - r0.xyz = cb1[7].www * r0.xyz; + r0.xyz = cb1[7].www * r0.xyz; /* Original Code - [branch] - if (shader_injection.tone_map_type == 0.f) { - r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); r0.xyz = max(float3(0,0,0), r0.xyz); r0.xyz = log2(r0.xyz); r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); @@ -198,26 +195,13 @@ void main( r2.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); r0.xyz = r0.xyz ? r2.xyz : r1.xyz; - r1.xy = cb0[82].xy * v1.xy; + r1.xy = cb0[0].xy * v1.xy; r0.w = dot(float2(171,231), r1.xy); r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; r1.xyz = frac(r1.xyz); r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; - - } else { - renodx::lut::Config lut_config = renodx::lut::config::Create( - s1_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR - ); - - float3 graded = renodx::lut::Sample(t2, lut_config, r0.yzx); - o0.xyz = renodx::draw::ToneMapPass(r0.yzx, graded); - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); - } + return; */ LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); [branch] @@ -237,4 +221,4 @@ void main( } o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x7B0B4041.ps_5_0.hlsl similarity index 95% rename from src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x7B0B4041.ps_5_0.hlsl index 8e7a2e2802..cab6769571 100644 --- a/src/games/endfield/uberpost/uberpost_0x64CEB255.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x7B0B4041.ps_5_0.hlsl @@ -15,7 +15,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -68,7 +68,7 @@ void main( } r0.xyzw = r2.xyzz; r2.xw = float2(0,0); - r2.yz = cb0[82].wz; + r2.yz = cb0[0].wz; r3.xyzw = v1.xyxy + r2.xyzw; r1.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; r2.xyzw = v1.xyxy + -r2.zwxy; @@ -128,7 +128,7 @@ void main( r1.xyz = r1.xyz + r3.zxy; r0.xzw = r0.xxx * r1.xyz + r5.zxy; r0.xyz = r0.xzw * r0.yyy; - r1.xyz = cb0[109].xxx * r0.xyz; + r1.xyz = cb0[27].xxx * r0.xyz; r2.xyz = t1.SampleLevel(s0_s, v1.xy, 0).xyz; r0.w = -cb1[9].z + 1; r3.xyz = r2.zxy * r0.www; @@ -155,11 +155,10 @@ void main( r5.x = saturate(cb1[2].x + -2.79999995); r5.x = 5 * r5.x; r6.y = saturate(r5.z * r4.w + r5.x); - r4.w = cb0[82].x / cb0[82].y; - r5.x = -1 + r4.w; - r5.x = cb1[2].w * r5.x + 1; - r4.w = r4.w * 0.5625 + -r5.x; - r4.w = cb1[1].w * r4.w + r5.x; + r4.w = cb0[27].z + -1; + r4.w = cb1[2].w * r4.w + 1; + r5.x = cb0[27].z * 0.5625 + -r4.w; + r4.w = cb1[1].w * r5.x + r4.w; r6.x = saturate(r4.w * r3.w); r5.xz = log2(r6.xy); r5.xz = cb1[2].zz * r5.xz; @@ -173,7 +172,7 @@ void main( r6.xyz = -r6.xyz * cb1[9].zzz + r1.xyz; r2.xyz = r3.xyz ? r4.xyz : r2.zxy; r2.xyz = r2.xyz * cb1[11].zxy + r6.xyz; - r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; + r0.xyz = -r0.xyz * cb0[27].xxx + r2.xyz; r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; r0.w = dot(r5.xz, r5.xz); r0.w = 1 + -r0.w; @@ -187,7 +186,7 @@ void main( r1.xyz = r0.www * r1.xyz + cb1[4].zxy; r0.xyz = r1.xyz * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; - + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { @@ -207,4 +206,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x81073AFC.ps_5_0.hlsl similarity index 96% rename from src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x81073AFC.ps_5_0.hlsl index 85d0d32ecb..65307a4174 100644 --- a/src/games/endfield/uberpost/uberpost_0x10076711.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x81073AFC.ps_5_0.hlsl @@ -15,7 +15,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -99,7 +99,7 @@ void main( r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; } r0.xw = float2(0,0); - r0.yz = cb0[82].wz; + r0.yz = cb0[0].wz; r3.xyzw = v1.xyxy + r0.xyzw; r1.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; r0.xyzw = v1.xyxy + -r0.zwxy; @@ -158,7 +158,7 @@ void main( r0.xyz = r0.xyz + r3.zxy; r0.xyz = r0.www * r0.xyz + r2.zxy; r0.xyz = r0.xyz * r2.www; - r1.xyz = cb0[109].xxx * r0.xyz; + r1.xyz = cb0[27].xxx * r0.xyz; r2.xyz = t1.SampleLevel(s0_s, v1.xy, 0).xyz; r0.w = -cb1[9].z + 1; r3.xyz = r2.zxy * r0.www; @@ -185,11 +185,10 @@ void main( r5.x = saturate(cb1[2].x + -2.79999995); r5.x = 5 * r5.x; r6.y = saturate(r5.z * r4.w + r5.x); - r4.w = cb0[82].x / cb0[82].y; - r5.x = -1 + r4.w; - r5.x = cb1[2].w * r5.x + 1; - r4.w = r4.w * 0.5625 + -r5.x; - r4.w = cb1[1].w * r4.w + r5.x; + r4.w = cb0[27].z + -1; + r4.w = cb1[2].w * r4.w + 1; + r5.x = cb0[27].z * 0.5625 + -r4.w; + r4.w = cb1[1].w * r5.x + r4.w; r6.x = saturate(r4.w * r3.w); r5.xz = log2(r6.xy); r5.xz = cb1[2].zz * r5.xz; @@ -203,7 +202,7 @@ void main( r6.xyz = -r6.xyz * cb1[9].zzz + r1.xyz; r2.xyz = r3.xyz ? r4.xyz : r2.zxy; r2.xyz = r2.xyz * cb1[11].zxy + r6.xyz; - r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; + r0.xyz = -r0.xyz * cb0[27].xxx + r2.xyz; r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; r0.w = dot(r5.xz, r5.xz); r0.w = 1 + -r0.w; @@ -244,14 +243,14 @@ void main( r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); r0.xyz = r0.xyz ? r1.xyz : r2.xyz; - r1.xy = cb0[82].xy * v1.xy; + r1.xy = cb0[0].xy * v1.xy; r0.w = dot(float2(171,231), r1.xy); r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; r1.xyz = frac(r1.xyz); r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; - + } else { renodx::lut::Config lut_config = renodx::lut::config::Create( s0_s, @@ -285,4 +284,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x86D9DED1.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x86D9DED1.ps_5_0.hlsl new file mode 100644 index 0000000000..fe1e7b02cc --- /dev/null +++ b/src/games/endfield/uberpost/uberpost_0x86D9DED1.ps_5_0.hlsl @@ -0,0 +1,192 @@ +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 +#include "../common.hlsl" +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[26]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[27]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float2 v1 : TEXCOORD0, + out float4 o0 : SV_Target0) +{ + const float4 icb[] = { { 0.500000, 0, 0, 0}, + { 1.000000, 0, 0, 0}, + { 1.500000, 0, 0, 0}, + { 2.000000, 0, 0, 0}, + { 2.500000, 0, 0, 0} }; + float4 r0,r1,r2,r3,r4,r5; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; + r1.xy = -cb1[0].xy + v1.xy; + r1.z = dot(r1.xy, r1.xy); + r1.z = sqrt(r1.z); + r1.w = log2(r1.z); + r1.w = cb1[0].w * r1.w; + r1.w = exp2(r1.w); + r1.xy = r1.xy * r1.ww; + r1.z = max(0.00999999978, r1.z); + r1.z = 1 / r1.z; + r1.z = -1 + r1.z; + r1.z = cb1[25].z * r1.z + 1; + r1.xy = r1.xy * r1.zz; + r2.xyz = r0.zxy; + r1.z = 0; + while (true) { + r1.w = cmp((int)r1.z >= 5); + if (r1.w != 0) break; + r1.w = icb[r1.z+0].x * cb1[0].z; + r3.xy = -r1.xy * r1.ww + v1.xy; + r3.xyz = t0.SampleLevel(s1_s, r3.xy, 0).xyz; + r3.xyz = r3.xyz + r2.yzx; + r1.w = (int)r1.z + 1; + r2.xyz = r3.zxy; + r1.z = r1.w; + continue; + } + r0.xyz = float3(0.166666672,0.166666672,0.166666672) * r2.xyz; + r1.xyzw = t1.SampleLevel(s1_s, v1.xy, 0).xyzw; + r2.w = -cb1[9].z + 1; + r3.xyz = r2.www * r1.zxy; + r3.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r3.xyz); + r4.xyz = log2(r1.zxy); + r4.xyz = float3(0.330000013,0.330000013,0.330000013) * r4.xyz; + r4.xyz = exp2(r4.xyz); + r4.xyz = r4.xyz * float3(1.49380004,1.49380004,1.49380004) + float3(-0.699999988,-0.699999988,-0.699999988); + r2.w = max(r0.y, r0.z); + r2.w = max(r2.w, r0.x); + r5.xy = -cb1[10].yx + r2.ww; + r3.w = max(0, r5.x); + r3.w = min(cb1[10].z, r3.w); + r3.w = r3.w * r3.w; + r3.w = cb1[10].w * r3.w; + r3.w = max(r3.w, r5.y); + r2.w = max(9.99999975e-005, r2.w); + r2.w = r3.w / r2.w; + r5.xyz = r2.www * r0.xyz; + r5.xyz = -r5.xyz * cb1[9].zzz + r0.xyz; + r1.xyz = r3.xyz ? r4.xyz : r1.zxy; + r1.xyz = r1.xyz * cb1[11].zxy + r5.xyz; + r1.xyz = -r2.xyz * float3(0.166666672,0.166666672,0.166666672) + r1.xyz; + r0.xyz = cb1[9].xxx * r1.xyz + r0.xyz; + o0.w = saturate(r1.w + r0.w); + r0.w = cb1[16].z + cb1[16].x; + r1.x = dot(cb1[16].xx, cb1[16].zz); + r0.w = -r1.x + r0.w; + r1.xy = -cb1[17].xy + v1.xy; + r1.xy = float2(-0.5,-0.5) + r1.xy; + r1.z = r1.x / r1.y; + r1.w = cmp(abs(r1.z) < 1); + r2.x = 1 / abs(r1.z); + r2.x = r1.w ? abs(r1.z) : r2.x; + r2.y = r2.x * r2.x; + r2.z = r2.y * 0.0872929022 + -0.301894993; + r2.y = r2.z * r2.y + 1; + r2.z = r2.y * r2.x; + r2.x = -r2.y * r2.x + 1.57079637; + r1.w = r1.w ? r2.z : r2.x; + r2.xyz = cb1[7].www * r0.xyz; + /* Original Code + r2.xyz = r2.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r2.xyz = max(float3(0,0,0), r2.xyz); + r2.xyz = log2(r2.xyz); + r2.xyz = saturate(r2.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r2.yzw = cb1[7].zzz * r2.xyz; + r0.x = floor(r2.y); + r3.xy = cb1[7].xy * float2(0.5,0.5); + r3.yz = r2.zw * cb1[7].xy + r3.xy; + r3.x = r0.x * cb1[7].y + r3.y; + r2.yzw = t2.SampleLevel(s1_s, r3.xz, 0).xyz; + r4.x = cb1[7].y; + r4.y = 0; + r3.xy = r4.xy + r3.xz; + r3.xyz = t2.SampleLevel(s1_s, r3.xy, 0).xyz; + r0.x = r2.x * cb1[7].z + -r0.x; + r3.xyz = r3.xyz + -r2.yzw; + r2.xyz = r0.xxx * r3.xyz + r2.yzw; + r3.xyz = float3(12.9200001,12.9200001,12.9200001) * r2.xyz; + r4.xyz = log2(abs(r2.xyz)); + r4.xyz = float3(0.416666657,0.416666657,0.416666657) * r4.xyz; + r4.xyz = exp2(r4.xyz); + r4.xyz = r4.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r2.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r2.xyz); + */ + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r2.yzx); + float3 graded_linear; + [branch] + if (shader_injection.tone_map_type == 0.f) { + graded_linear = SDRGRADE(lut_sample); + } else { + graded_linear = HDRGRADE(lut_sample); + } + float3 graded_encoded = renodx::color::srgb::EncodeSafe(graded_linear); + r0.x = 1 + -r0.w; + r0.xz = -cb1[16].yy + r0.xw; + r0.w = cmp(r1.z < 0); + r0.w = r0.w ? -r1.w : r1.w; + r1.z = cmp(r1.x >= 0); + r1.z = r1.z ? 3.1415925 : -3.1415925; + r1.w = cmp(r1.y < 0); + r1.w = r1.w ? 1.000000 : 0; + r0.w = r1.z * r1.w + r0.w; + r0.w = 3.14159274 + r0.w; + r5.x = cb1[18].x * r0.w; + r0.w = dot(r1.xy, r1.xy); + r0.w = sqrt(r0.w); + r5.y = cb1[18].y * r0.w; + r1.xy = r5.xy * float2(0.159154937,2) + cb1[18].zw; + r1.xy = cb1[17].zw * cb0[20].yy + r1.xy; + r0.w = t3.SampleBias(s0_s, r1.xy, cb0[26].x).x; + r0.w = r0.y * r0.w; + r0.y = cb1[20].y * r0.y; + r0.y = saturate(r0.w * cb1[20].x + r0.y); + r0.z = r0.z + -r0.x; + r0.x = r0.y + -r0.x; + r0.y = 1 / r0.z; + r0.x = saturate(r0.x * r0.y); + r0.y = r0.x * -2 + 3; + r0.x = r0.x * r0.x; + r0.z = r0.y * r0.x; + r1.xyz = graded_encoded; + r0.x = -r0.y * r0.x + 1; + r0.xyw = cb1[22].xyz * r0.xxx; + r0.xyz = cb1[21].xyz * r0.zzz + r0.xyw; + r0.xyz = r0.xyz + -r1.xyz; + o0.xyz = cb1[20].www * r0.xyz + r1.xyz; + o0.xyz = renodx::color::srgb::DecodeSafe(o0.xyz); + if (CUSTOM_GRAIN_STRENGTH > 0) { + o0.xyz = renodx::effects::ApplyFilmGrain( + o0.xyz, + v1.xy, + CUSTOM_RANDOM, + CUSTOM_GRAIN_STRENGTH * 0.03f); + } + o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); + return; +} \ No newline at end of file diff --git a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x89929873.ps_5_0.hlsl similarity index 91% rename from src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x89929873.ps_5_0.hlsl index 2e1cec72e6..2069310875 100644 --- a/src/games/endfield/uberpost/uberpost_0x57737D9F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x89929873.ps_5_0.hlsl @@ -1,4 +1,4 @@ -// ---- Created with 3Dmigoto v1.3.16 on Wed Jan 21 21:30:43 2026 +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 #include "../common.hlsl" Texture2D t2 : register(t2); @@ -15,7 +15,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -98,7 +98,7 @@ void main( r0.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; } - r0.xyz = cb0[109].xxx * r2.zxy; + r0.xyz = cb0[27].xxx * r2.zxy; r1.xyz = t1.SampleLevel(s0_s, v1.xy, 0).xyz; r0.w = -cb1[9].z + 1; r3.xyz = r1.zxy * r0.www; @@ -121,12 +121,10 @@ void main( r5.xyz = -r5.xyz * cb1[9].zzz + r0.xyz; r1.xyz = r3.xyz ? r4.xyz : r1.zxy; r1.xyz = r1.xyz * cb1[11].zxy + r5.xyz; - r1.xyz = -r2.zxy * cb0[109].xxx + r1.xyz; + r1.xyz = -r2.zxy * cb0[27].xxx + r1.xyz; r0.xyz = cb1[9].xxx * r1.xyz + r0.xyz; r0.xyz = cb1[7].www * r0.xyz; /* Original Code - // Define untonemapped - float3 untonemapped = r0.yzx; r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); r0.xyz = max(float3(0,0,0), r0.xyz); r0.xyz = log2(r0.xyz); @@ -151,16 +149,12 @@ void main( r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); r0.xyz = r0.xyz ? r1.xyz : r2.xyz; - r1.xy = cb0[82].xy * v1.xy; + r1.xy = cb0[0].xy * v1.xy; r0.w = dot(float2(171,231), r1.xy); r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; r1.xyz = frac(r1.xyz); r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; - o0.xyz = r1.xyz * float3(0.0013725491, 0.0013725491, 0.0013725491) + r0.xyz; - // sRGB Decode and output - o0.xyz = renodx::color::srgb::Decode(o0.xyz); - o0.xyz = renodx::draw::ToneMapPass(untonemapped, o0.xyz); - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); + o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; o0.w = min(1, r1.w); return; */ @@ -181,4 +175,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x8F2C3A6B.ps_5_0.hlsl similarity index 54% rename from src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x8F2C3A6B.ps_5_0.hlsl index 7e666c2441..a7a2c1a501 100644 --- a/src/games/endfield/uberpost/uberpost_0xBCD91195.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x8F2C3A6B.ps_5_0.hlsl @@ -1,4 +1,4 @@ -// ---- Created with 3Dmigoto v1.3.16 on Wed Jan 21 21:30:43 2026 +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 #include "../common.hlsl" Texture2D t2 : register(t2); @@ -15,7 +15,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -44,7 +44,7 @@ void main( r2.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r2.xyz); r0.xyz = r2.xyz ? r1.xyz : r0.zxy; r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; - r2.xyz = cb0[109].xxx * r1.zxy; + r2.xyz = cb0[27].xxx * r1.zxy; r0.w = max(r2.y, r2.z); r0.w = max(r0.w, r2.x); r3.xy = -cb1[10].yx + r0.ww; @@ -58,10 +58,43 @@ void main( r3.xyz = r2.xyz * r0.www; r3.xyz = -r3.xyz * cb1[9].zzz + r2.xyz; r0.xyz = r0.xyz * cb1[11].zxy + r3.xyz; - r0.xyz = -r1.zxy * cb0[109].xxx + r0.xyz; + r0.xyz = -r1.zxy * cb0[27].xxx + r0.xyz; o0.w = min(1, r1.w); r0.xyz = cb1[9].xxx * r0.xyz + r2.xyz; r0.xyz = cb1[7].www * r0.xyz; + /* Original Code + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = max(float3(0,0,0), r0.xyz); + r0.xyz = log2(r0.xyz); + r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r0.yzw = cb1[7].zzz * r0.xyz; + r0.y = floor(r0.y); + r0.x = r0.x * cb1[7].z + -r0.y; + r1.xy = cb1[7].xy * float2(0.5,0.5); + r1.yz = r0.zw * cb1[7].xy + r1.xy; + r1.x = r0.y * cb1[7].y + r1.y; + r2.x = cb1[7].y; + r2.y = 0; + r0.yz = r2.xy + r1.xz; + r1.xyz = t2.SampleLevel(s0_s, r1.xz, 0).xyz; + r0.yzw = t2.SampleLevel(s0_s, r0.yz, 0).xyz; + r0.yzw = r0.yzw + -r1.xyz; + r0.xyz = r0.xxx * r0.yzw + r1.xyz; + r1.xyz = log2(abs(r0.xyz)); + r1.xyz = float3(0.416666657,0.416666657,0.416666657) * r1.xyz; + r1.xyz = exp2(r1.xyz); + r1.xyz = r1.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r2.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; + r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); + r0.xyz = r0.xyz ? r2.xyz : r1.xyz; + r1.xy = cb0[0].xy * v1.xy; + r0.w = dot(float2(171,231), r1.xy); + r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; + r1.xyz = frac(r1.xyz); + r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; + o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; + return; + */ LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { @@ -78,4 +111,4 @@ void main( } o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0x93EC2A6B.ps_5_0.hlsl similarity index 62% rename from src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0x93EC2A6B.ps_5_0.hlsl index a6ee0dea95..81c0918918 100644 --- a/src/games/endfield/uberpost/uberpost_0x6166487A.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0x93EC2A6B.ps_5_0.hlsl @@ -1,5 +1,7 @@ -// ---- Created with 3Dmigoto v1.3.16 on Tue Jan 20 19:04:12 2026 +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 #include "../common.hlsl" +Texture2D t2 : register(t2); + Texture2D t1 : register(t1); Texture2D t0 : register(t0); @@ -13,7 +15,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -28,7 +30,7 @@ void main( float2 v1 : TEXCOORD0, out float4 o0 : SV_Target0) { - float4 r0,r1,r2,r3,r4,r5,r6,r7; + float4 r0,r1,r2,r3,r4,r5,r6; uint4 bitmask, uiDest; float4 fDest; @@ -96,65 +98,24 @@ void main( r0.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; } - r0.xw = float2(0,0); - r0.yz = cb0[82].wz; - r3.xyzw = v1.xyxy + r0.xyzw; - r1.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; - r0.xyzw = v1.xyxy + -r0.zwxy; - r4.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; - r3.xyz = t0.SampleLevel(s0_s, r3.zw, 0).xyz; - r0.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; - r0.w = r1.x * 0.5 + r1.y; - r0.w = r1.z * 0.5 + r0.w; - r2.w = r4.x * 0.5 + r4.y; - r2.w = r4.z * 0.5 + r2.w; - r3.w = r2.x * 0.5 + r2.y; - r3.w = r2.z * 0.5 + r3.w; - r4.w = r3.x * 0.5 + r3.y; - r4.w = r3.z * 0.5 + r4.w; - r5.x = r0.x * 0.5 + r0.y; - r5.x = r0.z * 0.5 + r5.x; - r5.yzw = min(r4.xyz, r3.xyz); - r5.yzw = min(r5.yzw, r1.xyz); - r5.yzw = min(r5.yzw, r0.xyz); - r6.xyz = max(r4.xyz, r3.xyz); - r6.xyz = max(r6.xyz, r1.xyz); - r6.xyz = max(r6.xyz, r0.xyz); - r7.xyz = float3(0.25,0.25,0.25) / r6.xyz; - r7.xyz = r7.xyz * r5.yzw; - r6.xyz = float3(1,1,1) + -r6.xyz; - r5.yzw = r5.yzw * float3(4,4,4) + float3(-4,-4,-4); - r5.yzw = float3(1,1,1) / r5.yzw; - r5.yzw = r6.xyz * r5.yzw; - r5.yzw = max(-r7.xyz, r5.yzw); - r5.z = max(r5.z, r5.w); - r5.y = max(r5.y, r5.z); - r5.y = min(0, r5.y); - r5.y = max(-0.1875, r5.y); - r5.y = cb1[24].x * r5.y; - r5.z = r2.w + r0.w; - r5.z = r5.z + r4.w; - r5.z = r5.z + r5.x; - r5.z = r5.z * 0.25 + -r3.w; - r5.w = max(r3.w, r2.w); - r5.w = max(r5.w, r0.w); - r6.x = max(r5.x, r4.w); - r5.w = max(r6.x, r5.w); - r2.w = min(r3.w, r2.w); - r0.w = min(r2.w, r0.w); - r2.w = min(r5.x, r4.w); - r0.w = min(r2.w, r0.w); - r0.w = r5.w + -r0.w; - r0.w = 1 / r0.w; - r0.w = saturate(abs(r5.z) * r0.w); - r0.w = r0.w * -0.5 + 1; - r0.w = r5.y * r0.w; - r2.w = r0.w * 4 + 1; - r2.w = 1 / r2.w; - r5.xy = -cb1[1].xy + v1.xy; + r0.xyz = cb0[27].xxx * r2.zxy; + r1.xyz = t1.SampleLevel(s0_s, v1.xy, 0).xyz; + r0.w = -cb1[9].z + 1; + r3.xyz = r1.zxy * r0.www; + r3.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r3.xyz); + r4.xyz = log2(r1.zxy); + r4.xyz = float3(0.330000013,0.330000013,0.330000013) * r4.xyz; + r4.xyz = exp2(r4.xyz); + r4.xyz = r4.xyz * float3(1.49380004,1.49380004,1.49380004) + float3(-0.699999988,-0.699999988,-0.699999988); + r0.w = max(r0.y, r0.z); + r0.w = max(r0.w, r0.x); + r5.xy = -cb1[10].yx + r0.ww; + r2.w = max(0, r5.x); + r2.w = min(cb1[10].z, r2.w); + r5.xz = -cb1[1].xy + v1.xy; r3.w = -cb1[2].x + 1; r3.w = cb1[1].w * r3.w + cb1[2].x; - r5.xy = abs(r5.xy) * r3.ww; + r5.xz = abs(r5.xz) * r3.ww; r3.w = saturate(cb1[2].x * 1.04999995); r3.w = r3.w * 1.5 + -1; r3.w = cb1[1].w * r3.w + 1; @@ -163,23 +124,27 @@ void main( r4.w = cb1[1].w * r4.w + 1; r5.x = saturate(cb1[2].x + -2.79999995); r5.x = 5 * r5.x; - r5.y = saturate(r5.y * r4.w + r5.x); - r4.w = cb0[82].x / cb0[82].y; - r5.z = -1 + r4.w; - r5.z = cb1[2].w * r5.z + 1; - r4.w = r4.w * 0.5625 + -r5.z; - r4.w = cb1[1].w * r4.w + r5.z; - r5.x = saturate(r4.w * r3.w); - r5.xy = log2(r5.xy); - r5.xy = cb1[2].zz * r5.xy; - r5.xy = exp2(r5.xy); - r1.xyz = r4.zxy + r1.zxy; - r0.xyz = r1.xyz + r0.zxy; - r0.xyz = r0.xyz + r3.zxy; - r0.xyz = r0.www * r0.xyz + r2.zxy; - r0.xyz = r0.xyz * r2.www; - r0.xyz = cb0[109].xxx * r0.xyz; - r0.w = dot(r5.xy, r5.xy); + r6.y = saturate(r5.z * r4.w + r5.x); + r4.w = cb0[27].z + -1; + r4.w = cb1[2].w * r4.w + 1; + r5.x = cb0[27].z * 0.5625 + -r4.w; + r4.w = cb1[1].w * r5.x + r4.w; + r6.x = saturate(r4.w * r3.w); + r5.xz = log2(r6.xy); + r5.xz = cb1[2].zz * r5.xz; + r5.xz = exp2(r5.xz); + r2.w = r2.w * r2.w; + r2.w = cb1[10].w * r2.w; + r2.w = max(r2.w, r5.y); + r0.w = max(9.99999975e-005, r0.w); + r0.w = r2.w / r0.w; + r6.xyz = r0.xyz * r0.www; + r6.xyz = -r6.xyz * cb1[9].zzz + r0.xyz; + r1.xyz = r3.xyz ? r4.xyz : r1.zxy; + r1.xyz = r1.xyz * cb1[11].zxy + r6.xyz; + r1.xyz = -r2.zxy * cb0[27].xxx + r1.xyz; + r0.xyz = cb1[9].xxx * r1.xyz + r0.xyz; + r0.w = dot(r5.xz, r5.xz); r0.w = 1 + -r0.w; r0.w = max(0, r0.w); r0.w = log2(r0.w); @@ -190,11 +155,9 @@ void main( r1.xyz = -cb1[4].zxy + float3(1,1,1); r1.xyz = r0.www * r1.xyz + cb1[4].zxy; r0.xyz = r1.xyz * r0.xyz; - r0.xyz = cb1[7].www * r0.xyz; + r0.xyz = cb1[7].www * r0.xyz; /* Original Code - [branch] - if (shader_injection.tone_map_type == 0.f) { - r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); r0.xyz = max(float3(0,0,0), r0.xyz); r0.xyz = log2(r0.xyz); r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); @@ -203,11 +166,11 @@ void main( r1.xy = cb1[7].xy * float2(0.5,0.5); r1.yz = r0.zw * cb1[7].xy + r1.xy; r1.x = r0.y * cb1[7].y + r1.y; - r2.xyz = t1.SampleLevel(s0_s, r1.xz, 0).xyz; + r2.xyz = t2.SampleLevel(s0_s, r1.xz, 0).xyz; r3.x = cb1[7].y; r3.y = 0; r0.zw = r3.xy + r1.xz; - r1.xyz = t1.SampleLevel(s0_s, r0.zw, 0).xyz; + r1.xyz = t2.SampleLevel(s0_s, r0.zw, 0).xyz; r0.x = r0.x * cb1[7].z + -r0.y; r0.yzw = r1.xyz + -r2.xyz; r0.xyz = r0.xxx * r0.yzw + r2.xyz; @@ -218,29 +181,16 @@ void main( r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); r0.xyz = r0.xyz ? r1.xyz : r2.xyz; - r1.xy = cb0[82].xy * v1.xy; + r1.xy = cb0[0].xy * v1.xy; r0.w = dot(float2(171,231), r1.xy); r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; r1.xyz = frac(r1.xyz); r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; - - - } else { - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR - ); - - float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); - o0.xyz = renodx::draw::ToneMapPass(r0.yzx, graded); - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); - } + o0.w = min(1, r1.w); + return; */ - LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { o0.xyz = SDRGRADE(lut_sample); @@ -259,4 +209,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl deleted file mode 100644 index 84648ab85c..0000000000 --- a/src/games/endfield/uberpost/uberpost_0xA8213A68.ps_5_0.hlsl +++ /dev/null @@ -1,157 +0,0 @@ -// ---- Created with 3Dmigoto v1.3.16 on Tue Jan 20 19:04:24 2026 -#include "../common.hlsl" -Texture2D t3 : register(t3); - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[25]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[110]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float4 o0 : SV_Target0) -{ - float4 r0,r1,r2,r3,r4,r5,r6,r7; - uint4 bitmask, uiDest; - float4 fDest; - - r0.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; - r1.x = r0.x * 0.5 + r0.y; - r1.x = r0.z * 0.5 + r1.x; - r2.xw = float2(0,0); - r2.yz = cb0[82].wz; - r3.xyzw = v1.xyxy + -r2.zwxy; - r2.xyzw = v1.xyxy + r2.xyzw; - r1.yzw = t0.SampleLevel(s1_s, r3.xy, 0).xyz; - r3.xyz = t0.SampleLevel(s1_s, r3.zw, 0).xyz; - r3.w = r1.y * 0.5 + r1.z; - r3.w = r1.w * 0.5 + r3.w; - r4.x = max(r3.w, r1.x); - r4.yzw = t0.SampleLevel(s1_s, r2.xy, 0).xyz; - r2.xyz = t0.SampleLevel(s1_s, r2.zw, 0).xyz; - r2.w = r4.y * 0.5 + r4.z; - r2.w = r4.w * 0.5 + r2.w; - r4.x = max(r2.w, r4.x); - r5.x = r2.x * 0.5 + r2.y; - r5.x = r2.z * 0.5 + r5.x; - r5.y = r3.x * 0.5 + r3.y; - r5.y = r3.z * 0.5 + r5.y; - r5.z = max(r5.x, r5.y); - r4.x = max(r5.z, r4.x); - r5.z = min(r3.w, r1.x); - r3.w = r2.w + r3.w; - r2.w = min(r5.z, r2.w); - r3.w = r3.w + r5.x; - r5.x = min(r5.x, r5.y); - r3.w = r3.w + r5.y; - r1.x = r3.w * 0.25 + -r1.x; - r2.w = min(r5.x, r2.w); - r2.w = r4.x + -r2.w; - r2.w = 1 / r2.w; - r1.x = saturate(r2.w * abs(r1.x)); - r1.x = r1.x * -0.5 + 1; - r5.xyz = max(r2.xyz, r1.yzw); - r5.xyz = max(r5.xyz, r4.yzw); - r5.xyz = max(r5.xyz, r3.xyz); - r6.xyz = float3(0.25,0.25,0.25) / r5.xyz; - r5.xyz = float3(1,1,1) + -r5.xyz; - r7.xyz = min(r2.xyz, r1.yzw); - r1.yzw = r4.wyz + r1.wyz; - r4.xyz = min(r7.xyz, r4.yzw); - r4.xyz = min(r4.xyz, r3.xyz); - r1.yzw = r1.yzw + r3.zxy; - r1.yzw = r1.yzw + r2.zxy; - r2.xyz = r4.xyz * r6.xyz; - r3.xyz = r4.xyz * float3(4,4,4) + float3(-4,-4,-4); - r3.xyz = float3(1,1,1) / r3.xyz; - r3.xyz = r5.xyz * r3.xyz; - r2.xyz = max(r3.xyz, -r2.xyz); - r2.y = max(r2.y, r2.z); - r2.x = max(r2.x, r2.y); - r2.x = min(0, r2.x); - r2.x = max(-0.1875, r2.x); - r2.x = cb1[24].x * r2.x; - r1.x = r2.x * r1.x; - r0.xyz = r1.xxx * r1.yzw + r0.zxy; - r1.x = r1.x * 4 + 1; - r1.x = 1 / r1.x; - r0.xyz = r1.xxx * r0.xyz; - o0.w = min(1, r0.w); - r1.xyz = cb0[109].xxx * r0.xyz; - r0.w = max(r1.y, r1.z); - r0.w = max(r0.w, r1.x); - r2.xy = -cb1[10].yx + r0.ww; - r0.w = max(9.99999975e-005, r0.w); - r1.w = max(0, r2.x); - r1.w = min(cb1[10].z, r1.w); - r1.w = r1.w * r1.w; - r1.w = cb1[10].w * r1.w; - r1.w = max(r1.w, r2.y); - r0.w = r1.w / r0.w; - r2.xyz = r1.xyz * r0.www; - r2.xyz = -r2.xyz * cb1[9].zzz + r1.xyz; - r3.xyz = t1.SampleLevel(s1_s, v1.xy, 0).xyz; - r4.xyz = log2(r3.zxy); - r4.xyz = float3(0.330000013,0.330000013,0.330000013) * r4.xyz; - r4.xyz = exp2(r4.xyz); - r4.xyz = r4.xyz * float3(1.49380004,1.49380004,1.49380004) + float3(-0.699999988,-0.699999988,-0.699999988); - r0.w = -cb1[9].z + 1; - r5.xyz = r3.zxy * r0.www; - r5.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r5.xyz); - r3.xyz = r5.xyz ? r4.xyz : r3.zxy; - r2.xyz = r3.xyz * cb1[11].zxy + r2.xyz; - r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; - r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; - r1.xyz = t3.SampleLevel(s0_s, v1.xy, 0).xyz; - r0.w = min(r1.x, r1.y); - r0.w = min(r0.w, r1.z); - r1.xyz = float3(-1,-1,-1) + r1.zxy; - r0.w = -0.200000003 + r0.w; - r0.w = cmp(r0.w >= 0); - r0.w = r0.w ? 1.000000 : 0; - r1.w = saturate(cb1[3].x * 3 + -2); - r1.w = -cb1[3].x + r1.w; - r0.w = r0.w * r1.w + cb1[3].x; - r1.xyz = r0.www * r1.xyz + float3(1,1,1); - r0.xyz = r1.xyz * r0.xyz; - r0.xyz = cb1[7].www * r0.xyz; - LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); - [branch] - if (shader_injection.tone_map_type == 0.f) { - o0.xyz = SDRGRADE(lut_sample); - } else { - o0.xyz = HDRGRADE(lut_sample); - } - if (CUSTOM_GRAIN_STRENGTH > 0) { - o0.xyz = renodx::effects::ApplyFilmGrain( - o0.xyz, - v1.xy, - CUSTOM_RANDOM, - CUSTOM_GRAIN_STRENGTH * 0.03f); - } - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); - return; -} \ No newline at end of file diff --git a/src/games/endfield/uberpost/uberpost_0xACB34505.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xACB34505.ps_5_0.hlsl new file mode 100644 index 0000000000..8f077a6e10 --- /dev/null +++ b/src/games/endfield/uberpost/uberpost_0xACB34505.ps_5_0.hlsl @@ -0,0 +1,194 @@ +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 +#include "../common.hlsl" +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[26]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[28]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float2 v1 : TEXCOORD0, + out float4 o0 : SV_Target0) +{ + float4 r0,r1,r2,r3,r4,r5,r6; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xy = -cb1[0].xy + v1.xy; + r0.z = dot(r0.xy, r0.xy); + r0.w = sqrt(r0.z); + r0.w = max(0.00999999978, r0.w); + r0.w = 1 / r0.w; + r1.x = cb1[0].w * 0.5; + r0.z = log2(r0.z); + r0.z = r1.x * r0.z; + r0.z = exp2(r0.z); + r0.xy = r0.xy * r0.zz; + r1.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; + r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; + r0.z = cmp(3 < cb1[25].x); + if (r0.z != 0) { + r2.xy = cmp(float2(0,0) != cb1[25].wz); + r0.z = (int)r2.y | (int)r2.x; + r2.xy = r0.xy * r0.ww; + r2.xy = r0.zz ? r2.xy : r0.xy; + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; + r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); + r4.xy = -r2.xy * r0.zz + v1.xy; + r4.xyz = t0.SampleLevel(s1_s, r4.xy, 0).xyz; + r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; + r0.z = r0.z + r0.z; + r5.xy = -r2.xy * r0.zz + v1.xy; + r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; + r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; + r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; + r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; + r5.xy = -r2.xy * r0.zz + v1.xy; + r5.xyz = t0.SampleLevel(s1_s, r5.xy, 0).xyz; + r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; + r3.xyzw = cb1[0].zzzz * float4(2,2,2,2) + r3.xyzw; + r3.xyzw = -r2.xyxy * r3.xyzw + v1.xyxy; + r5.xyz = t0.SampleLevel(s1_s, r3.xy, 0).xyz; + r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; + r2.zw = -r2.xy * r2.zz + v1.xy; + r5.xyz = t0.SampleLevel(s1_s, r2.zw, 0).xyz; + r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; + r2.xy = -r2.xy * r0.zz + v1.xy; + r2.xyz = t0.SampleLevel(s1_s, r2.xy, 0).xyz; + r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; + r3.xyz = t0.SampleLevel(s1_s, r3.zw, 0).xyz; + r2.xyz = r3.xyz * float3(0,0,1) + r2.xyz; + r2.xyz = float3(0.333333403,0.333333403,0.333333403) * r2.xyz; + } else { + r0.z = cmp(0.000000 != cb1[25].w); + r3.xy = r0.xy * r0.ww; + r0.xy = r0.zz ? r3.xy : r0.xy; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; + r0.zw = -r0.xy * r0.zz + v1.xy; + r3.xyz = t0.SampleLevel(s1_s, r0.zw, 0).xyz; + r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; + r0.z = cb1[0].z + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; + r0.xy = -r0.xy * r0.zz + v1.xy; + r0.xyz = t0.SampleLevel(s1_s, r0.xy, 0).xyz; + r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; + } + r0.xyz = cb0[27].xxx * r2.zxy; + r1.xyz = t1.SampleLevel(s1_s, v1.xy, 0).xyz; + r0.w = -cb1[9].z + 1; + r3.xyz = r1.zxy * r0.www; + r3.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r3.xyz); + r4.xyz = log2(r1.zxy); + r4.xyz = float3(0.330000013,0.330000013,0.330000013) * r4.xyz; + r4.xyz = exp2(r4.xyz); + r4.xyz = r4.xyz * float3(1.49380004,1.49380004,1.49380004) + float3(-0.699999988,-0.699999988,-0.699999988); + r0.w = max(r0.y, r0.z); + r0.w = max(r0.w, r0.x); + r5.xy = -cb1[10].yx + r0.ww; + r2.w = max(0, r5.x); + r2.w = min(cb1[10].z, r2.w); + r5.xzw = t3.SampleLevel(s0_s, v1.xy, 0).xyz; + r2.w = r2.w * r2.w; + r2.w = cb1[10].w * r2.w; + r2.w = max(r2.w, r5.y); + r0.w = max(9.99999975e-005, r0.w); + r0.w = r2.w / r0.w; + r6.xyz = r0.xyz * r0.www; + r6.xyz = -r6.xyz * cb1[9].zzz + r0.xyz; + r1.xyz = r3.xyz ? r4.xyz : r1.zxy; + r1.xyz = r1.xyz * cb1[11].zxy + r6.xyz; + r1.xyz = -r2.zxy * cb0[27].xxx + r1.xyz; + r0.xyz = cb1[9].xxx * r1.xyz + r0.xyz; + r0.w = saturate(cb1[3].x * 3 + -2); + r1.x = min(r5.x, r5.z); + r1.x = min(r1.x, r5.w); + r1.x = -0.200000003 + r1.x; + r1.x = cmp(r1.x >= 0); + r1.x = r1.x ? 1.000000 : 0; + r0.w = -cb1[3].x + r0.w; + r0.w = r1.x * r0.w + cb1[3].x; + r1.xyz = float3(-1,-1,-1) + r5.wxz; + r1.xyz = r0.www * r1.xyz + float3(1,1,1); + r0.xyz = r1.xyz * r0.xyz; + r0.xyz = cb1[7].www * r0.xyz; + /* Original Code + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = max(float3(0,0,0), r0.xyz); + r0.xyz = log2(r0.xyz); + r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r0.yzw = cb1[7].zzz * r0.xyz; + r0.y = floor(r0.y); + r1.xy = cb1[7].xy * float2(0.5,0.5); + r1.yz = r0.zw * cb1[7].xy + r1.xy; + r1.x = r0.y * cb1[7].y + r1.y; + r2.xyz = t2.SampleLevel(s1_s, r1.xz, 0).xyz; + r3.x = cb1[7].y; + r3.y = 0; + r0.zw = r3.xy + r1.xz; + r1.xyz = t2.SampleLevel(s1_s, r0.zw, 0).xyz; + r0.x = r0.x * cb1[7].z + -r0.y; + r0.yzw = r1.xyz + -r2.xyz; + r0.xyz = r0.xxx * r0.yzw + r2.xyz; + r1.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; + r2.xyz = log2(abs(r0.xyz)); + r2.xyz = float3(0.416666657,0.416666657,0.416666657) * r2.xyz; + r2.xyz = exp2(r2.xyz); + r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); + r0.xyz = r0.xyz ? r1.xyz : r2.xyz; + r1.xy = cb0[0].xy * v1.xy; + r0.w = dot(float2(171,231), r1.xy); + r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; + r1.xyz = frac(r1.xyz); + r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; + o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; + o0.w = min(1, r1.w); + return; + */ + LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); + [branch] + if (shader_injection.tone_map_type == 0.f) { + o0.xyz = SDRGRADE(lut_sample); + } else { + o0.xyz = HDRGRADE(lut_sample); + } + if (CUSTOM_GRAIN_STRENGTH > 0) { + o0.xyz = renodx::effects::ApplyFilmGrain( + o0.xyz, + v1.xy, + CUSTOM_RANDOM, + CUSTOM_GRAIN_STRENGTH * 0.03f); + } + o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); + o0.w = min(1, r1.w); + return; +} diff --git a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xACCCB347.ps_5_0.hlsl similarity index 96% rename from src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0xACCCB347.ps_5_0.hlsl index 837919d477..d00b34b4b1 100644 --- a/src/games/endfield/uberpost/uberpost_0x9AA3FC1F.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xACCCB347.ps_5_0.hlsl @@ -19,7 +19,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -103,7 +103,7 @@ void main( r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; } r0.xw = float2(0,0); - r0.yz = cb0[82].wz; + r0.yz = cb0[0].wz; r3.xyzw = v1.xyxy + r0.xyzw; r1.xyz = t0.SampleLevel(s1_s, r3.xy, 0).xyz; r0.xyzw = v1.xyxy + -r0.zwxy; @@ -162,7 +162,7 @@ void main( r0.xyz = r0.xyz + r3.zxy; r0.xyz = r0.www * r0.xyz + r2.zxy; r0.xyz = r0.xyz * r2.www; - r1.xyz = cb0[109].xxx * r0.xyz; + r1.xyz = cb0[27].xxx * r0.xyz; r2.xyz = t1.SampleLevel(s1_s, v1.xy, 0).xyz; r0.w = -cb1[9].z + 1; r3.xyz = r2.zxy * r0.www; @@ -190,11 +190,10 @@ void main( r6.x = saturate(cb1[2].x + -2.79999995); r6.x = 5 * r6.x; r6.y = saturate(r6.y * r4.w + r6.x); - r4.w = cb0[82].x / cb0[82].y; - r6.z = -1 + r4.w; - r6.z = cb1[2].w * r6.z + 1; - r4.w = r4.w * 0.5625 + -r6.z; - r4.w = cb1[1].w * r4.w + r6.z; + r4.w = cb0[27].z + -1; + r4.w = cb1[2].w * r4.w + 1; + r6.z = cb0[27].z * 0.5625 + -r4.w; + r4.w = cb1[1].w * r6.z + r4.w; r6.x = saturate(r4.w * r3.w); r6.xy = log2(r6.xy); r6.xy = cb1[2].zz * r6.xy; @@ -208,7 +207,7 @@ void main( r7.xyz = -r7.xyz * cb1[9].zzz + r1.xyz; r2.xyz = r3.xyz ? r4.xyz : r2.zxy; r2.xyz = r2.xyz * cb1[11].zxy + r7.xyz; - r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; + r0.xyz = -r0.xyz * cb0[27].xxx + r2.xyz; r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; r0.w = saturate(cb1[3].x * 3 + -2); r1.x = min(r5.x, r5.z); @@ -252,4 +251,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0xB06827CB.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xB06827CB.ps_5_0.hlsl new file mode 100644 index 0000000000..36b761c4b1 --- /dev/null +++ b/src/games/endfield/uberpost/uberpost_0xB06827CB.ps_5_0.hlsl @@ -0,0 +1,186 @@ +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 +#include "../common.hlsl" +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb1 : register(b1) +{ + float4 cb1[26]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[28]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float2 v1 : TEXCOORD0, + out float4 o0 : SV_Target0) +{ + float4 r0,r1,r2,r3,r4,r5; + uint4 bitmask, uiDest; + float4 fDest; + + r0.xy = -cb1[0].xy + v1.xy; + r0.z = dot(r0.xy, r0.xy); + r0.w = sqrt(r0.z); + r0.w = max(0.00999999978, r0.w); + r0.w = 1 / r0.w; + r1.x = cb1[0].w * 0.5; + r0.z = log2(r0.z); + r0.z = r1.x * r0.z; + r0.z = exp2(r0.z); + r0.xy = r0.xy * r0.zz; + r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; + r1.xyz = float3(1,0,0) * r1.xyz; + float ca_strength = CHROMATIC_ABERRATION_STRENGTH; + r0.z = cmp(3 < cb1[25].x); + if (r0.z != 0) { + r2.xy = cmp(float2(0,0) != cb1[25].wz); + r0.z = (int)r2.y | (int)r2.x; + r2.xy = r0.xy * r0.ww; + r2.xy = r0.zz ? r2.xy : r0.xy; + r0.z = cb1[25].y * ca_strength + cb1[0].z; + r2.z = cb1[25].y * ca_strength + cb1[25].y * ca_strength; + r3.xyzw = cb1[25].yyyy * ca_strength * float4(3,3,4,4); + r4.xy = -r2.xy * r0.zz + v1.xy; + r4.xyz = t0.SampleLevel(s0_s, r4.xy, 0).xyz; + r4.xyz = r4.xyz * float3(1,0,0) + r1.xyz; + r0.z = r0.z + r0.z; + r5.xy = -r2.xy * r0.zz + v1.xy; + r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; + r4.xyz = r5.xyz * float3(1,0,0) + r4.xyz; + r5.xy = -r2.xy * cb1[25].yy * ca_strength + v1.xy; + r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; + r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; + r5.xy = -r2.xy * r0.zz + v1.xy; + r5.xyz = t0.SampleLevel(s0_s, r5.xy, 0).xyz; + r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; + r3.xyzw = cb1[0].zzzz * float4(2,2,2,2) + r3.xyzw; + r3.xyzw = -r2.xyxy * r3.xyzw + v1.xyxy; + r5.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; + r4.xyz = r5.xyz * float3(0,1,0) + r4.xyz; + r2.zw = -r2.xy * r2.zz + v1.xy; + r5.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; + r4.xyz = r5.xyz * float3(0,0,1) + r4.xyz; + r0.z = cb1[25].y * ca_strength * 3 + cb1[0].z; + r2.xy = -r2.xy * r0.zz + v1.xy; + r2.xyz = t0.SampleLevel(s0_s, r2.xy, 0).xyz; + r2.xyz = r2.xyz * float3(0,0,1) + r4.xyz; + r3.xyz = t0.SampleLevel(s0_s, r3.zw, 0).xyz; + r2.xyz = r3.xyz * float3(0,0,1) + r2.xyz; + r2.xyz = float3(0.333333403,0.333333403,0.333333403) * r2.xyz; + } else { + r0.z = cmp(0.000000 != cb1[25].w); + r3.xy = r0.xy * r0.ww; + r0.xy = r0.zz ? r3.xy : r0.xy; + r0.z = cb1[25].y * ca_strength * 2 + cb1[0].z; + r0.zw = -r0.xy * r0.zz + v1.xy; + r3.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; + r1.xyz = r3.xyz * float3(0,1,0) + r1.xyz; + r0.z = cb1[0].z + cb1[0].z; + r0.z = cb1[25].y * ca_strength * 3 + r0.z; + r0.xy = -r0.xy * r0.zz + v1.xy; + r0.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; + r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; + } + r0.xy = -cb1[1].xy + v1.xy; + r0.z = -cb1[2].x + 1; + r0.z = cb1[1].w * r0.z + cb1[2].x; + r0.xy = abs(r0.xy) * r0.zz; + r0.z = saturate(cb1[2].x * 1.04999995); + r0.z = r0.z * 1.5 + -1; + r0.z = cb1[1].w * r0.z + 1; + r0.x = r0.x * r0.z; + r0.z = cb1[2].x * 2 + -1; + r0.z = cb1[1].w * r0.z + 1; + r0.w = saturate(cb1[2].x + -2.79999995); + r0.w = 5 * r0.w; + r1.y = saturate(r0.y * r0.z + r0.w); + r0.y = cb0[27].z + -1; + r0.y = cb1[2].w * r0.y + 1; + r0.z = cb0[27].z * 0.5625 + -r0.y; + r0.y = cb1[1].w * r0.z + r0.y; + r1.x = saturate(r0.x * r0.y); + r0.xy = log2(r1.xy); + r0.xy = cb1[2].zz * r0.xy; + r0.xy = exp2(r0.xy); + r1.xyz = cb0[27].xxx * r2.zxy; + r0.x = dot(r0.xy, r0.xy); + r0.x = 1 + -r0.x; + r0.x = max(0, r0.x); + r0.x = log2(r0.x); + r0.x = cb1[2].y * r0.x; + r0.x = exp2(r0.x); + float vignette_value = lerp(1.0, r0.x, VIGNETTE_STRENGTH); + r0.x = 1.0; // Disable original vignette, apply after tonemapping + r0.yzw = -cb1[4].zxy + float3(1,1,1); + r0.xyz = r0.xxx * r0.yzw + cb1[4].zxy; + r0.xyz = r1.xyz * r0.xyz; + r0.xyz = cb1[7].www * r0.xyz; + /* Original Code + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = max(float3(0,0,0), r0.xyz); + r0.xyz = log2(r0.xyz); + r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r0.yzw = cb1[7].zzz * r0.xyz; + r0.y = floor(r0.y); + r1.xy = cb1[7].xy * float2(0.5,0.5); + r1.yz = r0.zw * cb1[7].xy + r1.xy; + r1.x = r0.y * cb1[7].y + r1.y; + r2.xyz = t1.SampleLevel(s0_s, r1.xz, 0).xyz; + r3.x = cb1[7].y; + r3.y = 0; + r0.zw = r3.xy + r1.xz; + r1.xyz = t1.SampleLevel(s0_s, r0.zw, 0).xyz; + r0.x = r0.x * cb1[7].z + -r0.y; + r0.yzw = r1.xyz + -r2.xyz; + r0.xyz = r0.xxx * r0.yzw + r2.xyz; + r1.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; + r2.xyz = log2(abs(r0.xyz)); + r2.xyz = float3(0.416666657,0.416666657,0.416666657) * r2.xyz; + r2.xyz = exp2(r2.xyz); + r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); + r0.xyz = r0.xyz ? r1.xyz : r2.xyz; + r1.xy = cb0[0].xy * v1.xy; + r0.w = dot(float2(171,231), r1.xy); + r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; + r1.xyz = frac(r1.xyz); + r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; + o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; + o0.w = min(1, r1.w); + return; + */ + LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); + [branch] + if (shader_injection.tone_map_type == 0.f) { + o0.xyz = SDRGRADE(lut_sample); + } else { + o0.xyz = HDRGRADE(lut_sample); + } + // Apply vignette after tonemapping + o0.xyz *= vignette_value; + if (CUSTOM_GRAIN_STRENGTH > 0) { + o0.xyz = renodx::effects::ApplyFilmGrain( + o0.xyz, + v1.xy, + CUSTOM_RANDOM, + CUSTOM_GRAIN_STRENGTH * 0.03f); + } + o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); + o0.w = min(1, r1.w); + return; +} diff --git a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xBC012E29.ps_5_0.hlsl similarity index 63% rename from src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0xBC012E29.ps_5_0.hlsl index b096ccbd64..6d8def4e25 100644 --- a/src/games/endfield/uberpost/uberpost_0xD5BC74AC.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xBC012E29.ps_5_0.hlsl @@ -1,4 +1,4 @@ -// ---- Created with 3Dmigoto v1.3.16 on Tue Jan 20 19:04:33 2026 +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 #include "../common.hlsl" Texture2D t1 : register(t1); @@ -13,7 +13,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -28,7 +28,7 @@ void main( float2 v1 : TEXCOORD0, out float4 o0 : SV_Target0) { - float4 r0,r1,r2,r3,r4,r5,r6,r7; + float4 r0,r1,r2,r3,r4,r5; uint4 bitmask, uiDest; float4 fDest; @@ -96,68 +96,42 @@ void main( r0.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; } - r0.xw = float2(0,0); - r0.yz = cb0[82].wz; - r3.xyzw = v1.xyxy + r0.xyzw; - r1.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; - r0.xyzw = v1.xyxy + -r0.zwxy; - r4.xyz = t0.SampleLevel(s0_s, r0.xy, 0).xyz; - r3.xyz = t0.SampleLevel(s0_s, r3.zw, 0).xyz; - r0.xyz = t0.SampleLevel(s0_s, r0.zw, 0).xyz; - r0.w = r1.x * 0.5 + r1.y; - r0.w = r1.z * 0.5 + r0.w; - r2.w = r4.x * 0.5 + r4.y; - r2.w = r4.z * 0.5 + r2.w; - r3.w = r2.x * 0.5 + r2.y; - r3.w = r2.z * 0.5 + r3.w; - r4.w = r3.x * 0.5 + r3.y; - r4.w = r3.z * 0.5 + r4.w; - r5.x = r0.x * 0.5 + r0.y; - r5.x = r0.z * 0.5 + r5.x; - r5.yzw = min(r4.xyz, r3.xyz); - r5.yzw = min(r5.yzw, r1.xyz); - r5.yzw = min(r5.yzw, r0.xyz); - r6.xyz = max(r4.xyz, r3.xyz); - r6.xyz = max(r6.xyz, r1.xyz); - r6.xyz = max(r6.xyz, r0.xyz); - r7.xyz = float3(0.25,0.25,0.25) / r6.xyz; - r7.xyz = r7.xyz * r5.yzw; - r6.xyz = float3(1,1,1) + -r6.xyz; - r5.yzw = r5.yzw * float3(4,4,4) + float3(-4,-4,-4); - r5.yzw = float3(1,1,1) / r5.yzw; - r5.yzw = r6.xyz * r5.yzw; - r5.yzw = max(-r7.xyz, r5.yzw); - r5.z = max(r5.z, r5.w); - r5.y = max(r5.y, r5.z); - r5.y = min(0, r5.y); - r5.y = max(-0.1875, r5.y); - r5.y = cb1[24].x * r5.y; - r5.z = r2.w + r0.w; - r5.z = r5.z + r4.w; - r5.z = r5.z + r5.x; - r5.z = r5.z * 0.25 + -r3.w; - r5.w = max(r3.w, r2.w); - r5.w = max(r5.w, r0.w); - r6.x = max(r5.x, r4.w); - r5.w = max(r6.x, r5.w); - r2.w = min(r3.w, r2.w); - r0.w = min(r2.w, r0.w); - r2.w = min(r5.x, r4.w); - r0.w = min(r2.w, r0.w); - r0.w = r5.w + -r0.w; - r0.w = 1 / r0.w; - r0.w = saturate(abs(r5.z) * r0.w); - r0.w = r0.w * -0.5 + 1; - r0.w = r5.y * r0.w; - r2.w = r0.w * 4 + 1; - r2.w = 1 / r2.w; - r1.xyz = r4.zxy + r1.zxy; - r0.xyz = r1.xyz + r0.zxy; - r0.xyz = r0.xyz + r3.zxy; - r0.xyz = r0.www * r0.xyz + r2.zxy; - r0.xyz = r0.xyz * r2.www; - r0.xyz = cb0[109].xxx * r0.xyz; - r0.xyz = cb1[7].www * r0.xyz; + r0.xyz = cb0[27].xxx * r2.zxy; + r0.xyz = cb1[7].www * r0.xyz; + /* Original Code + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = max(float3(0,0,0), r0.xyz); + r0.xyz = log2(r0.xyz); + r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r0.yzw = cb1[7].zzz * r0.xyz; + r0.y = floor(r0.y); + r1.xy = cb1[7].xy * float2(0.5,0.5); + r1.yz = r0.zw * cb1[7].xy + r1.xy; + r1.x = r0.y * cb1[7].y + r1.y; + r2.xyz = t1.SampleLevel(s0_s, r1.xz, 0).xyz; + r3.x = cb1[7].y; + r3.y = 0; + r0.zw = r3.xy + r1.xz; + r1.xyz = t1.SampleLevel(s0_s, r0.zw, 0).xyz; + r0.x = r0.x * cb1[7].z + -r0.y; + r0.yzw = r1.xyz + -r2.xyz; + r0.xyz = r0.xxx * r0.yzw + r2.xyz; + r1.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; + r2.xyz = log2(abs(r0.xyz)); + r2.xyz = float3(0.416666657,0.416666657,0.416666657) * r2.xyz; + r2.xyz = exp2(r2.xyz); + r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); + r0.xyz = r0.xyz ? r1.xyz : r2.xyz; + r1.xy = cb0[0].xy * v1.xy; + r0.w = dot(float2(171,231), r1.xy); + r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; + r1.xyz = frac(r1.xyz); + r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; + o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; + o0.w = min(1, r1.w); + return; + */ LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { @@ -175,4 +149,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xC32F6D7B.ps_5_0.hlsl similarity index 51% rename from src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0xC32F6D7B.ps_5_0.hlsl index 1be39770f5..bf86eb241b 100644 --- a/src/games/endfield/uberpost/uberpost_0x0E520F06.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xC32F6D7B.ps_5_0.hlsl @@ -1,4 +1,4 @@ -// ---- Created with 3Dmigoto v1.3.16 on Tue Jan 20 19:04:00 2026 +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 #include "../common.hlsl" Texture2D t1 : register(t1); @@ -13,7 +13,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -33,7 +33,7 @@ void main( { 1.500000, 0, 0, 0}, { 2.000000, 0, 0, 0}, { 2.500000, 0, 0, 0} }; - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8; + float4 r0,r1,r2,r3; uint4 bitmask, uiDest; float4 fDest; @@ -50,7 +50,7 @@ void main( r0.z = cb1[25].z * r0.z + 1; r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; - r2.xyz = r1.xyz; + r2.xyz = r1.zxy; r0.z = 0; while (true) { r0.w = cmp((int)r0.z >= 5); @@ -58,80 +58,49 @@ void main( r0.w = icb[r0.z+0].x * cb1[0].z; r3.xy = -r0.xy * r0.ww + v1.xy; r3.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; - r3.xyz = r3.xyz + r2.xyz; + r3.xyz = r3.xyz + r2.yzx; r0.w = (int)r0.z + 1; - r2.xyz = r3.xyz; + r2.xyz = r3.zxy; r0.z = r0.w; continue; } - r0.xyzw = r2.xyzz; - r2.xw = float2(0,0); - r2.yz = cb0[82].wz; - r3.xyzw = v1.xyxy + r2.xyzw; - r1.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; - r2.xyzw = v1.xyxy + -r2.zwxy; - r4.xyz = t0.SampleLevel(s0_s, r2.xy, 0).xyz; - r3.xyz = t0.SampleLevel(s0_s, r3.zw, 0).xyz; - r2.xyz = t0.SampleLevel(s0_s, r2.zw, 0).xyz; - r2.w = r1.x * 0.5 + r1.y; - r2.w = r1.z * 0.5 + r2.w; - r3.w = r4.x * 0.5 + r4.y; - r3.w = r4.z * 0.5 + r3.w; - r5.xyz = float3(0.166666672,0.166666672,0.166666672) * r0.xyz; - r0.x = r0.x * 0.0833333358 + r5.y; - r0.x = r0.w * 0.0833333358 + r0.x; - r0.y = r3.x * 0.5 + r3.y; - r0.y = r3.z * 0.5 + r0.y; - r0.z = r2.x * 0.5 + r2.y; - r0.z = r2.z * 0.5 + r0.z; - r6.xyz = min(r4.xyz, r3.xyz); - r6.xyz = min(r6.xyz, r1.xyz); - r6.xyz = min(r6.xyz, r2.xyz); - r7.xyz = max(r4.xyz, r3.xyz); - r7.xyz = max(r7.xyz, r1.xyz); - r7.xyz = max(r7.xyz, r2.xyz); - r8.xyz = float3(0.25,0.25,0.25) / r7.xyz; - r8.xyz = r8.xyz * r6.xyz; - r7.xyz = float3(1,1,1) + -r7.xyz; - r6.xyz = r6.xyz * float3(4,4,4) + float3(-4,-4,-4); - r6.xyz = float3(1,1,1) / r6.xyz; - r6.xyz = r7.xyz * r6.xyz; - r6.xyz = max(-r8.xyz, r6.xyz); - r0.w = max(r6.y, r6.z); - r0.w = max(r6.x, r0.w); - r0.w = min(0, r0.w); - r0.w = max(-0.1875, r0.w); - r0.w = cb1[24].x * r0.w; - r4.w = r3.w + r2.w; - r4.w = r4.w + r0.y; - r4.w = r4.w + r0.z; - r4.w = r4.w * 0.25 + -r0.x; - r5.w = max(r3.w, r0.x); - r5.w = max(r5.w, r2.w); - r6.x = max(r0.y, r0.z); - r5.w = max(r6.x, r5.w); - r0.x = min(r3.w, r0.x); - r0.x = min(r2.w, r0.x); - r0.y = min(r0.y, r0.z); - r0.x = min(r0.x, r0.y); - r0.x = r5.w + -r0.x; - r0.x = 1 / r0.x; - r0.x = saturate(abs(r4.w) * r0.x); - r0.x = r0.x * -0.5 + 1; - r0.x = r0.w * r0.x; - r0.y = r0.x * 4 + 1; - r0.y = 1 / r0.y; - r1.xyz = r4.zxy + r1.zxy; - r1.xyz = r1.xyz + r2.zxy; - r1.xyz = r1.xyz + r3.zxy; - r0.xzw = r0.xxx * r1.xyz + r5.zxy; - r0.xyz = r0.xzw * r0.yyy; - r0.xyz = cb0[109].xxx * r0.xyz; + r0.xy = -cb1[1].xy + v1.xy; + r0.z = -cb1[2].x + 1; + r0.z = cb1[1].w * r0.z + cb1[2].x; + r0.xy = abs(r0.xy) * r0.zz; + r0.z = saturate(cb1[2].x * 1.04999995); + r0.z = r0.z * 1.5 + -1; + r0.z = cb1[1].w * r0.z + 1; + r0.x = r0.x * r0.z; + r0.z = cb1[2].x * 2 + -1; + r0.z = cb1[1].w * r0.z + 1; + r0.w = saturate(cb1[2].x + -2.79999995); + r0.w = 5 * r0.w; + r1.y = saturate(r0.y * r0.z + r0.w); + r0.y = cb0[27].z + -1; + r0.y = cb1[2].w * r0.y + 1; + r0.z = cb0[27].z * 0.5625 + -r0.y; + r0.y = cb1[1].w * r0.z + r0.y; + r1.x = saturate(r0.x * r0.y); + r0.xy = log2(r1.xy); + r0.xy = cb1[2].zz * r0.xy; + r0.xy = exp2(r0.xy); + r1.xyz = cb0[27].xxx * r2.xyz; + r1.xyz = float3(0.166666672,0.166666672,0.166666672) * r1.xyz; + r0.x = dot(r0.xy, r0.xy); + r0.x = 1 + -r0.x; + r0.x = max(0, r0.x); + r0.x = log2(r0.x); + r0.x = cb1[2].y * r0.x; + r0.x = exp2(r0.x); + float vignette_value = lerp(1.0, r0.x, VIGNETTE_STRENGTH); + r0.x = 1.0; // Disable original vignette, apply after tonemapping + r0.yzw = -cb1[4].zxy + float3(1,1,1); + r0.xyz = r0.xxx * r0.yzw + cb1[4].zxy; + r0.xyz = r1.xyz * r0.xyz; r0.xyz = cb1[7].www * r0.xyz; /* Original Code - [branch] - if (shader_injection.tone_map_type == 0.f) { - r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); r0.xyz = max(float3(0,0,0), r0.xyz); r0.xyz = log2(r0.xyz); r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); @@ -155,26 +124,14 @@ void main( r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); r0.xyz = r0.xyz ? r1.xyz : r2.xyz; - r1.xy = cb0[82].xy * v1.xy; + r1.xy = cb0[0].xy * v1.xy; r0.w = dot(float2(171,231), r1.xy); r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; r1.xyz = frac(r1.xyz); r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; - o0.xyz = r1.xyz * float3(0.0013725491, 0.0013725491, 0.0013725491) + r0.xyz; - - } else { - renodx::lut::Config lut_config = renodx::lut::config::Create( - s0_s, - shader_injection.color_grade_strength, - 0.f, - renodx::lut::config::type::ARRI_C1000_NO_CUT, - renodx::lut::config::type::LINEAR - ); - - float3 graded = renodx::lut::Sample(t1, lut_config, r0.yzx); - o0.xyz = renodx::draw::ToneMapPass(r0.yzx, graded); - o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); - } + o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; + o0.w = min(1, r1.w); + return; */ LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t1, r0.yzx); [branch] @@ -183,6 +140,8 @@ void main( } else { o0.xyz = HDRGRADE(lut_sample); } + // Apply vignette after tonemapping + o0.xyz *= vignette_value; if (CUSTOM_GRAIN_STRENGTH > 0) { o0.xyz = renodx::effects::ApplyFilmGrain( o0.xyz, @@ -193,4 +152,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xD589DFEB.ps_5_0.hlsl similarity index 96% rename from src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0xD589DFEB.ps_5_0.hlsl index 32d9a52e58..9628149834 100644 --- a/src/games/endfield/uberpost/uberpost_0xAFDCA263.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xD589DFEB.ps_5_0.hlsl @@ -1,4 +1,3 @@ -// ---- Created with 3Dmigoto v1.3.16 on Tue Jan 20 19:04:26 2026 #include "../common.hlsl" Texture2D t2 : register(t2); @@ -15,7 +14,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -68,7 +67,7 @@ void main( } r0.xyzw = r2.xyzz; r2.xw = float2(0,0); - r2.yz = cb0[82].wz; + r2.yz = cb0[0].wz; r3.xyzw = v1.xyxy + r2.xyzw; r1.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; r2.xyzw = v1.xyxy + -r2.zwxy; @@ -128,7 +127,7 @@ void main( r1.xyz = r1.xyz + r3.zxy; r0.xzw = r0.xxx * r1.xyz + r5.zxy; r0.xyz = r0.xzw * r0.yyy; - r1.xyz = cb0[109].xxx * r0.xyz; + r1.xyz = cb0[27].xxx * r0.xyz; r2.xyz = t1.SampleLevel(s0_s, v1.xy, 0).xyz; r0.w = -cb1[9].z + 1; r3.xyz = r2.zxy * r0.www; @@ -151,7 +150,7 @@ void main( r5.xyz = -r5.xyz * cb1[9].zzz + r1.xyz; r2.xyz = r3.xyz ? r4.xyz : r2.zxy; r2.xyz = r2.xyz * cb1[11].zxy + r5.xyz; - r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; + r0.xyz = -r0.xyz * cb0[27].xxx + r2.xyz; r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; r0.xyz = cb1[7].www * r0.xyz; LUTSampleResult lut_sample = LUTSAMPLE(s0_s, cb1[7].xyz, t2, r0.yzx); @@ -171,4 +170,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xD8401285.ps_5_0.hlsl similarity index 98% rename from src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0xD8401285.ps_5_0.hlsl index 8fa22ac10c..c9e093c644 100644 --- a/src/games/endfield/uberpost/uberpost_0x09270FDA.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xD8401285.ps_5_0.hlsl @@ -16,7 +16,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -100,7 +100,7 @@ void main( r2.xyz = r0.xyz * float3(0,0,1) + r1.xyz; } r0.xw = float2(0,0); - r0.yz = cb0[82].wz; + r0.yz = cb0[0].wz; r3.xyzw = v1.xyxy + r0.xyzw; r1.xyz = t0.SampleLevel(s0_s, r3.xy, 0).xyz; r0.xyzw = v1.xyxy + -r0.zwxy; @@ -159,7 +159,7 @@ void main( r0.xyz = r0.xyz + r3.zxy; r0.xyz = r0.www * r0.xyz + r2.zxy; r0.xyz = r0.xyz * r2.www; - r1.xyz = cb0[109].xxx * r0.xyz; + r1.xyz = cb0[27].xxx * r0.xyz; r2.xyz = t1.SampleLevel(s0_s, v1.xy, 0).xyz; r0.w = -cb1[9].z + 1; r3.xyz = r2.zxy * r0.www; @@ -182,7 +182,7 @@ void main( r5.xyz = -r5.xyz * cb1[9].zzz + r1.xyz; r2.xyz = r3.xyz ? r4.xyz : r2.zxy; r2.xyz = r2.xyz * cb1[11].zxy + r5.xyz; - r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; + r0.xyz = -r0.xyz * cb0[27].xxx + r2.xyz; r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; r0.xyz = cb1[7].www * r0.xyz; /* Original Code @@ -212,7 +212,7 @@ void main( r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); r0.xyz = r0.xyz ? r1.xyz : r2.xyz; - r1.xy = cb0[82].xy * v1.xy; + r1.xy = cb0[0].xy * v1.xy; r0.w = dot(float2(171,231), r1.xy); r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; r1.xyz = frac(r1.xyz); @@ -249,4 +249,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xDBC83F91.ps_5_0.hlsl similarity index 92% rename from src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0xDBC83F91.ps_5_0.hlsl index 36a68644f4..9b68021176 100644 --- a/src/games/endfield/uberpost/uberpost_0xE0058043.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xDBC83F91.ps_5_0.hlsl @@ -16,7 +16,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -35,11 +35,10 @@ void main( uint4 bitmask, uiDest; float4 fDest; - r0.x = cb0[82].x / cb0[82].y; - r0.y = -1 + r0.x; - r0.y = cb1[2].w * r0.y + 1; - r0.x = r0.x * 0.5625 + -r0.y; - r0.x = cb1[1].w * r0.x + r0.y; + r0.x = cb0[27].z + -1; + r0.x = cb1[2].w * r0.x + 1; + r0.y = cb0[27].z * 0.5625 + -r0.x; + r0.x = cb1[1].w * r0.y + r0.x; r0.y = saturate(cb1[2].x * 1.04999995); r0.y = r0.y * 1.5 + -1; r0.y = cb1[1].w * r0.y + 1; @@ -77,7 +76,7 @@ void main( r3.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r3.xyz); r1.xyz = r3.xyz ? r2.xyz : r1.zxy; r2.xyzw = t0.SampleLevel(s0_s, v1.xy, 0).xyzw; - r3.xyz = cb0[109].xxx * r2.zxy; + r3.xyz = cb0[27].xxx * r2.zxy; r0.w = max(r3.y, r3.z); r0.w = max(r0.w, r3.x); r4.xy = -cb1[10].yx + r0.ww; @@ -91,7 +90,7 @@ void main( r4.xyz = r3.xyz * r0.www; r4.xyz = -r4.xyz * cb1[9].zzz + r3.xyz; r1.xyz = r1.xyz * cb1[11].zxy + r4.xyz; - r1.xyz = -r2.zxy * cb0[109].xxx + r1.xyz; + r1.xyz = -r2.zxy * cb0[27].xxx + r1.xyz; o0.w = min(1, r2.w); r1.xyz = cb1[9].xxx * r1.xyz + r3.xyz; r0.xyz = r1.xyz * r0.xyz; @@ -115,4 +114,4 @@ void main( } o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xFBD38A69.ps_5_0.hlsl similarity index 63% rename from src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0xFBD38A69.ps_5_0.hlsl index 112c55a1b5..f3cc1ee4d6 100644 --- a/src/games/endfield/uberpost/uberpost_0xAFECA8F4.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xFBD38A69.ps_5_0.hlsl @@ -1,4 +1,4 @@ -// ---- Created with 3Dmigoto v1.3.16 on Tue Jan 20 19:04:26 2026 +// ---- Created with 3Dmigoto v1.3.16 on Thu Jul 16 20:38:41 2026 #include "../common.hlsl" Texture2D t3 : register(t3); @@ -19,7 +19,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -39,7 +39,7 @@ void main( { 1.500000, 0, 0, 0}, { 2.000000, 0, 0, 0}, { 2.500000, 0, 0, 0} }; - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8; + float4 r0,r1,r2,r3,r4,r5,r6,r7; uint4 bitmask, uiDest; float4 fDest; @@ -56,7 +56,7 @@ void main( r0.z = cb1[25].z * r0.z + 1; r0.xy = r0.xy * r0.zz; r1.xyzw = t0.SampleLevel(s1_s, v1.xy, 0).xyzw; - r2.xyz = r1.xyz; + r2.xyz = r1.zxy; r0.z = 0; while (true) { r0.w = cmp((int)r0.z >= 5); @@ -64,75 +64,14 @@ void main( r0.w = icb[r0.z+0].x * cb1[0].z; r3.xy = -r0.xy * r0.ww + v1.xy; r3.xyz = t0.SampleLevel(s1_s, r3.xy, 0).xyz; - r3.xyz = r3.xyz + r2.xyz; + r3.xyz = r3.xyz + r2.yzx; r0.w = (int)r0.z + 1; - r2.xyz = r3.xyz; + r2.xyz = r3.zxy; r0.z = r0.w; continue; } - r0.xyzw = r2.xyzz; - r2.xw = float2(0,0); - r2.yz = cb0[82].wz; - r3.xyzw = v1.xyxy + r2.xyzw; - r1.xyz = t0.SampleLevel(s1_s, r3.xy, 0).xyz; - r2.xyzw = v1.xyxy + -r2.zwxy; - r4.xyz = t0.SampleLevel(s1_s, r2.xy, 0).xyz; - r3.xyz = t0.SampleLevel(s1_s, r3.zw, 0).xyz; - r2.xyz = t0.SampleLevel(s1_s, r2.zw, 0).xyz; - r2.w = r1.x * 0.5 + r1.y; - r2.w = r1.z * 0.5 + r2.w; - r3.w = r4.x * 0.5 + r4.y; - r3.w = r4.z * 0.5 + r3.w; - r5.xyz = float3(0.166666672,0.166666672,0.166666672) * r0.xyz; - r0.x = r0.x * 0.0833333358 + r5.y; - r0.x = r0.w * 0.0833333358 + r0.x; - r0.y = r3.x * 0.5 + r3.y; - r0.y = r3.z * 0.5 + r0.y; - r0.z = r2.x * 0.5 + r2.y; - r0.z = r2.z * 0.5 + r0.z; - r6.xyz = min(r4.xyz, r3.xyz); - r6.xyz = min(r6.xyz, r1.xyz); - r6.xyz = min(r6.xyz, r2.xyz); - r7.xyz = max(r4.xyz, r3.xyz); - r7.xyz = max(r7.xyz, r1.xyz); - r7.xyz = max(r7.xyz, r2.xyz); - r8.xyz = float3(0.25,0.25,0.25) / r7.xyz; - r8.xyz = r8.xyz * r6.xyz; - r7.xyz = float3(1,1,1) + -r7.xyz; - r6.xyz = r6.xyz * float3(4,4,4) + float3(-4,-4,-4); - r6.xyz = float3(1,1,1) / r6.xyz; - r6.xyz = r7.xyz * r6.xyz; - r6.xyz = max(-r8.xyz, r6.xyz); - r0.w = max(r6.y, r6.z); - r0.w = max(r6.x, r0.w); - r0.w = min(0, r0.w); - r0.w = max(-0.1875, r0.w); - r0.w = cb1[24].x * r0.w; - r4.w = r3.w + r2.w; - r4.w = r4.w + r0.y; - r4.w = r4.w + r0.z; - r4.w = r4.w * 0.25 + -r0.x; - r5.w = max(r3.w, r0.x); - r5.w = max(r5.w, r2.w); - r6.x = max(r0.y, r0.z); - r5.w = max(r6.x, r5.w); - r0.x = min(r3.w, r0.x); - r0.x = min(r2.w, r0.x); - r0.y = min(r0.y, r0.z); - r0.x = min(r0.x, r0.y); - r0.x = r5.w + -r0.x; - r0.x = 1 / r0.x; - r0.x = saturate(abs(r4.w) * r0.x); - r0.x = r0.x * -0.5 + 1; - r0.x = r0.w * r0.x; - r0.y = r0.x * 4 + 1; - r0.y = 1 / r0.y; - r1.xyz = r4.zxy + r1.zxy; - r1.xyz = r1.xyz + r2.zxy; - r1.xyz = r1.xyz + r3.zxy; - r0.xzw = r0.xxx * r1.xyz + r5.zxy; - r0.xyz = r0.xzw * r0.yyy; - r1.xyz = cb0[109].xxx * r0.xyz; + r0.xyz = cb0[27].xxx * r2.xyz; + r1.xyz = float3(0.166666672,0.166666672,0.166666672) * r0.xyz; r2.xyz = t1.SampleLevel(s1_s, v1.xy, 0).xyz; r0.w = -cb1[9].z + 1; r3.xyz = r2.zxy * r0.www; @@ -160,11 +99,10 @@ void main( r6.x = saturate(cb1[2].x + -2.79999995); r6.x = 5 * r6.x; r6.y = saturate(r6.y * r4.w + r6.x); - r4.w = cb0[82].x / cb0[82].y; - r6.z = -1 + r4.w; - r6.z = cb1[2].w * r6.z + 1; - r4.w = r4.w * 0.5625 + -r6.z; - r4.w = cb1[1].w * r4.w + r6.z; + r4.w = cb0[27].z + -1; + r4.w = cb1[2].w * r4.w + 1; + r6.z = cb0[27].z * 0.5625 + -r4.w; + r4.w = cb1[1].w * r6.z + r4.w; r6.x = saturate(r4.w * r3.w); r6.xy = log2(r6.xy); r6.xy = cb1[2].zz * r6.xy; @@ -178,7 +116,7 @@ void main( r7.xyz = -r7.xyz * cb1[9].zzz + r1.xyz; r2.xyz = r3.xyz ? r4.xyz : r2.zxy; r2.xyz = r2.xyz * cb1[11].zxy + r7.xyz; - r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; + r0.xyz = -r0.xyz * float3(0.166666672,0.166666672,0.166666672) + r2.xyz; r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; r0.w = saturate(cb1[3].x * 3 + -2); r1.x = min(r5.x, r5.z); @@ -202,7 +140,41 @@ void main( r1.xyz = -cb1[4].zxy + float3(1,1,1); r1.xyz = r0.www * r1.xyz + cb1[4].zxy; r0.xyz = r1.xyz * r0.xyz; - r0.xyz = cb1[7].www * r0.xyz; + r0.xyz = cb1[7].www * r0.xyz; + /* Original Code + r0.xyz = r0.xyz * float3(5.55555582,5.55555582,5.55555582) + float3(0.0479959995,0.0479959995,0.0479959995); + r0.xyz = max(float3(0,0,0), r0.xyz); + r0.xyz = log2(r0.xyz); + r0.xyz = saturate(r0.xyz * float3(0.0734997839,0.0734997839,0.0734997839) + float3(0.386036009,0.386036009,0.386036009)); + r0.yzw = cb1[7].zzz * r0.xyz; + r0.y = floor(r0.y); + r1.xy = cb1[7].xy * float2(0.5,0.5); + r1.yz = r0.zw * cb1[7].xy + r1.xy; + r1.x = r0.y * cb1[7].y + r1.y; + r2.xyz = t2.SampleLevel(s1_s, r1.xz, 0).xyz; + r3.x = cb1[7].y; + r3.y = 0; + r0.zw = r3.xy + r1.xz; + r1.xyz = t2.SampleLevel(s1_s, r0.zw, 0).xyz; + r0.x = r0.x * cb1[7].z + -r0.y; + r0.yzw = r1.xyz + -r2.xyz; + r0.xyz = r0.xxx * r0.yzw + r2.xyz; + r1.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; + r2.xyz = log2(abs(r0.xyz)); + r2.xyz = float3(0.416666657,0.416666657,0.416666657) * r2.xyz; + r2.xyz = exp2(r2.xyz); + r2.xyz = r2.xyz * float3(1.05499995,1.05499995,1.05499995) + float3(-0.0549999997,-0.0549999997,-0.0549999997); + r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); + r0.xyz = r0.xyz ? r1.xyz : r2.xyz; + r1.xy = cb0[0].xy * v1.xy; + r0.w = dot(float2(171,231), r1.xy); + r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; + r1.xyz = frac(r1.xyz); + r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz; + o0.xyz = r1.xyz * float3(0.0013725491,0.0013725491,0.0013725491) + r0.xyz; + o0.w = min(1, r1.w); + return; + */ LUTSampleResult lut_sample = LUTSAMPLE(s1_s, cb1[7].xyz, t2, r0.yzx); [branch] if (shader_injection.tone_map_type == 0.f) { @@ -222,4 +194,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r1.w); return; -} \ No newline at end of file +} diff --git a/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl b/src/games/endfield/uberpost/uberpost_0xFFFBB3BD.ps_5_0.hlsl similarity index 95% rename from src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl rename to src/games/endfield/uberpost/uberpost_0xFFFBB3BD.ps_5_0.hlsl index ceca60d82a..fccb61c0b2 100644 --- a/src/games/endfield/uberpost/uberpost_0x51359B4D.ps_5_0.hlsl +++ b/src/games/endfield/uberpost/uberpost_0xFFFBB3BD.ps_5_0.hlsl @@ -15,7 +15,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[110]; + float4 cb0[28]; } @@ -38,7 +38,7 @@ void main( r1.x = r0.x * 0.5 + r0.y; r1.x = r0.z * 0.5 + r1.x; r2.xw = float2(0,0); - r2.yz = cb0[82].wz; + r2.yz = cb0[0].wz; r3.xyzw = v1.xyxy + -r2.zwxy; r2.xyzw = v1.xyxy + r2.xyzw; r1.yzw = t0.SampleLevel(s0_s, r3.xy, 0).xyz; @@ -96,7 +96,7 @@ void main( r1.x = 1 / r1.x; r0.xyz = r1.xxx * r0.xyz; o0.w = min(1, r0.w); - r1.xyz = cb0[109].xxx * r0.xyz; + r1.xyz = cb0[27].xxx * r0.xyz; r0.w = max(r1.y, r1.z); r0.w = max(r0.w, r1.x); r2.xy = -cb1[10].yx + r0.ww; @@ -119,13 +119,12 @@ void main( r5.xyz = cmp(float3(0.300000012,0.300000012,0.300000012) < r5.xyz); r3.xyz = r5.xyz ? r4.xyz : r3.zxy; r2.xyz = r3.xyz * cb1[11].zxy + r2.xyz; - r0.xyz = -r0.xyz * cb0[109].xxx + r2.xyz; + r0.xyz = -r0.xyz * cb0[27].xxx + r2.xyz; r0.xyz = cb1[9].xxx * r0.xyz + r1.xyz; - r0.w = cb0[82].x / cb0[82].y; - r1.x = -1 + r0.w; - r1.x = cb1[2].w * r1.x + 1; - r0.w = r0.w * 0.5625 + -r1.x; - r0.w = cb1[1].w * r0.w + r1.x; + r0.w = cb0[27].z + -1; + r0.w = cb1[2].w * r0.w + 1; + r1.x = cb0[27].z * 0.5625 + -r0.w; + r0.w = cb1[1].w * r1.x + r0.w; r1.x = saturate(cb1[2].x * 1.04999995); r1.x = r1.x * 1.5 + -1; r1.x = cb1[1].w * r1.x + 1; @@ -183,7 +182,7 @@ void main( r2.xyz = float3(12.9200001,12.9200001,12.9200001) * r0.xyz; r0.xyz = cmp(float3(0.00313080009,0.00313080009,0.00313080009) >= r0.xyz); r0.xyz = r0.xyz ? r2.xyz : r1.xyz; - r1.xy = cb0[82].xy * v1.xy; + r1.xy = cb0[0].xy * v1.xy; r0.w = dot(float2(171,231), r1.xy); r1.xyz = float3(0.00970873795,0.0140845068,0.010309278) * r0.www; r1.xyz = frac(r1.xyz); @@ -222,4 +221,4 @@ void main( o0.xyz = renodx::draw::RenderIntermediatePass(o0.xyz); o0.w = min(1, r0.w); return; -} \ No newline at end of file +} From 16c85be6297f1c30e05398ff85c31875314f8b97 Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Sat, 18 Jul 2026 01:33:37 +0200 Subject: [PATCH 32/40] fix(endfield): update rendering shaders --- src/games/endfield/others/0x83D34AC2.cso | Bin 13160 -> 0 bytes .../others/skybox2_0x4CE535E1.ps_5_0.hlsl | 975 ++++++++++++++++++ .../others/skybox2_0x5AC95588.ps_5_0.hlsl | 932 ----------------- .../others/skybox3_0x98A8BB43.ps_5_0.hlsl | 708 +++++++++++++ .../others/skybox4_0x9D430106.ps_5_0.hlsl | 692 +++++++++++++ .../others/skybox5_0xCD4FEF5A.ps_5_0.hlsl | 928 +++++++++++++++++ .../others/skybox_0x270E5BA5.ps_5_0.hlsl | 637 ++++++++++++ .../others/skybox_0x3710A6A1.ps_5_0.hlsl | 600 ----------- ...l => sun-lens-dirt_0xA71BB1FA.ps_5_0.hlsl} | 4 +- ..._5_0.hlsl => video_0x5477040A.ps_5_0.hlsl} | 6 +- src/games/endfield/shadows/0xCAB28784.cso | Bin 7420 -> 0 bytes ... character-shadows_0xB1BC33D0.ps_5_0.hlsl} | 225 ++-- ...mpositing-shadowmap_0xB370840A.ps_5_0.hlsl | 404 ++++++++ ...mpositing-shadowmap_0xBD36930C.ps_5_0.hlsl | 402 -------- ...sl => ssr-denoiser_0x4DF0E317.cs_5_0.hlsl} | 22 +- .../ssr/ssr-temporal2_0x7D50F458.cs_5_0.hlsl | 396 +++++++ .../ssr/ssr-temporal2_0x953D811E.cs_5_0.hlsl | 395 ------- .../ssr/ssr-temporal_0x0A58A512.cs_5_0.hlsl | 684 ------------ .../ssr/ssr-temporal_0x3594373F.cs_5_0.hlsl | 2 + ...sl => ssr-upsample_0x4ED659BE.cs_5_0.hlsl} | 14 +- 20 files changed, 4879 insertions(+), 3147 deletions(-) delete mode 100644 src/games/endfield/others/0x83D34AC2.cso create mode 100644 src/games/endfield/others/skybox2_0x4CE535E1.ps_5_0.hlsl delete mode 100644 src/games/endfield/others/skybox2_0x5AC95588.ps_5_0.hlsl create mode 100644 src/games/endfield/others/skybox3_0x98A8BB43.ps_5_0.hlsl create mode 100644 src/games/endfield/others/skybox4_0x9D430106.ps_5_0.hlsl create mode 100644 src/games/endfield/others/skybox5_0xCD4FEF5A.ps_5_0.hlsl create mode 100644 src/games/endfield/others/skybox_0x270E5BA5.ps_5_0.hlsl delete mode 100644 src/games/endfield/others/skybox_0x3710A6A1.ps_5_0.hlsl rename src/games/endfield/others/{sun-lens-dirt_0xC3217979.ps_5_0.hlsl => sun-lens-dirt_0xA71BB1FA.ps_5_0.hlsl} (87%) rename src/games/endfield/others/{video_0x541BC9D1.ps_5_0.hlsl => video_0x5477040A.ps_5_0.hlsl} (96%) delete mode 100644 src/games/endfield/shadows/0xCAB28784.cso rename src/games/endfield/shadows/{character-shadows_0x68D7EB8E.ps_5_0.hlsl => character-shadows_0xB1BC33D0.ps_5_0.hlsl} (71%) create mode 100644 src/games/endfield/shadows/shadowcompositing-shadowmap_0xB370840A.ps_5_0.hlsl delete mode 100644 src/games/endfield/shadows/shadowcompositing-shadowmap_0xBD36930C.ps_5_0.hlsl rename src/games/endfield/ssr/{ssr-denoiser_0x0C2070DE.cs_5_0.hlsl => ssr-denoiser_0x4DF0E317.cs_5_0.hlsl} (92%) create mode 100644 src/games/endfield/ssr/ssr-temporal2_0x7D50F458.cs_5_0.hlsl delete mode 100644 src/games/endfield/ssr/ssr-temporal2_0x953D811E.cs_5_0.hlsl delete mode 100644 src/games/endfield/ssr/ssr-temporal_0x0A58A512.cs_5_0.hlsl create mode 100644 src/games/endfield/ssr/ssr-temporal_0x3594373F.cs_5_0.hlsl rename src/games/endfield/ssr/{ssr-upsample_0xE714AB7B.cs_5_0.hlsl => ssr-upsample_0x4ED659BE.cs_5_0.hlsl} (87%) diff --git a/src/games/endfield/others/0x83D34AC2.cso b/src/games/endfield/others/0x83D34AC2.cso deleted file mode 100644 index dbe264126fabfebe4a7f1d8b76425c587a0314b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13160 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 diff --git a/src/games/endfield/others/skybox2_0x4CE535E1.ps_5_0.hlsl b/src/games/endfield/others/skybox2_0x4CE535E1.ps_5_0.hlsl new file mode 100644 index 0000000000..cf9a08d222 --- /dev/null +++ b/src/games/endfield/others/skybox2_0x4CE535E1.ps_5_0.hlsl @@ -0,0 +1,975 @@ +#include "../shared.h" + +Texture2D t7 : register(t7); + +Texture2D t6 : register(t6); + +Texture2D t5 : register(t5); + +Texture2D t4 : register(t4); + +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture3D t0 : register(t0); + +SamplerState s6_s : register(s6); + +SamplerState s5_s : register(s5); + +SamplerState s4_s : register(s4); + +SamplerState s3_s : register(s3); + +SamplerState s2_s : register(s2); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb2 : register(b2) +{ + float4 cb2[45]; +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[105]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[45]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, // Screen position + float3 v1 : TEXCOORD0, // World position + float2 v2 : TEXCOORD1, // Unused + float3 v3 : TEXCOORD2, // Motion vector data 1 + float3 v4 : TEXCOORD3, // Motion vector data 2 + float3 v5 : TEXCOORD4, // Unused + out float4 o0 : SV_Target0, // Final color output + out float4 o1 : SV_Target1) // Motion vectors output +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18; + uint4 bitmask, uiDest; + float4 fDest; + + // ============================================================================ + // VIEW DIRECTION AND DISTANCE CALCULATION + // ============================================================================ + r0.xyz = -cb0[44].xyz + v1.xyz; + r0.w = dot(r0.xyz, r0.xyz); + r1.x = max(9.99999994e-009, r0.w); + r1.x = rsqrt(r1.x); + r1.yzw = r1.xxx * r0.xyz; + r2.x = r1.x * r0.w; + r2.y = dot(abs(r1.yzw), float3(1,1,1)); + r2.y = 1 / r2.y; + r2.zw = r2.yy * r1.yw; + r2.z = r2.z + r2.w; + r2.y = r1.y * r2.y + -r2.w; + r3.xy = float2(1,1) + r2.zy; + r2.yz = float2(0.5,0.5) * r3.xy; + r2.yzw = t1.SampleLevel(s0_s, r2.yz, 0).xyz; + r3.x = saturate(r1.z * 10 + 1); + // ========================================================================== + // PROCEDURAL SUN DISK CALCULATION + // ========================================================================== + // cb2[44].xyz = sun direction + // cb2[43].x = sun size/falloff exponent + // cb2[42].xyz = sun color, cb2[42].w = sun intensity + r3.y = saturate(dot(-cb2[44].xyz, -r1.yzw)); // Sun-view alignment (1 = looking at sun) + r3.y = log2(r3.y); + // Sun size adjustment: multiply exponent to shrink disk (5.0 = ~80% smaller) + float sunSizeMultiplier = (SUN_INTENSITY > 0.5f) ? 5.0f : 1.0f; + r3.y = cb2[43].x * sunSizeMultiplier * r3.y; // Apply sun size exponent + r3.y = exp2(r3.y); + r3.z = r3.y * r3.y + 1; + r3.y = -r3.y * 1.98000002 + 1.98010004; + r3.w = log2(cb2[42].w); + r3.zw = float2(0.0100164423,0.649999976) * r3.zw; + r3.w = exp2(r3.w); + r3.w = 8 * r3.w; + r3.y = log2(r3.y); + r3.y = r3.w * r3.y; + r3.y = exp2(r3.y); + r3.y = max(9.99999975e-005, r3.y); + r3.y = r3.z / r3.y; + r3.z = r1.y / r1.w; + r3.w = cmp(abs(r3.z) < 1); + r4.x = 1 / abs(r3.z); + r4.x = r3.w ? abs(r3.z) : r4.x; + r4.y = r4.x * r4.x; + r4.z = r4.y * 0.0872929022 + -0.301894993; + r4.y = r4.z * r4.y + 1; + r4.z = r4.y * r4.x; + r4.x = -r4.y * r4.x + 1.57079637; + r3.w = r3.w ? r4.z : r4.x; + r4.x = abs(r1.z) * 0.0468878001 + -0.203471005; + r4.x = r4.x * abs(r1.z) + 1.57079601; + r4.y = 1 + -abs(r1.z); + r4.y = sqrt(r4.y); + r4.z = r4.x * r4.y; + r3.z = cmp(r3.z < 0); + r3.z = r3.z ? -r3.w : r3.w; + r5.xy = cmp(r1.yz >= float2(0,0)); + r3.w = r5.x ? 3.1415925 : -3.1415925; + r4.w = cmp(r1.w < 0); + r4.w = r4.w ? 1.000000 : 0; + r6.x = r3.w * r4.w + r3.z; + r3.z = -r4.x * r4.y + 3.14159274; + r3.z = r5.y ? r4.z : r3.z; + r6.y = 1.57079637 + -r3.z; + r3.zw = r6.xy * float2(0.159099996,0.318300009) + float2(0.5,0.5); + r3.z = -cb2[41].w * 0.00277777785 + r3.z; + r4.x = 1 + r3.z; + r4.y = r3.w * 2 + -1; + // ============================================================================ + // CLOUD/ATMOSPHERE TEXTURE SAMPLING + // ============================================================================ + r4.xyzw = t2.SampleBias(s1_s, r4.xy, cb1[26].x).xyzw; + r5.xzw = float3(-0.5,-0.5,-0.5) + r4.xyz; + r4.xyz = r5.xzw * cb2[40].yyy + float3(0.5,0.5,0.5); + r6.xyzw = cb2[38].xyzw * r4.xyzw; + r3.z = max(r6.x, r6.y); + r4.xyzw = -r4.xyzw * cb2[38].xyzw + r3.zzzz; + r4.xyzw = cb2[40].xxxx * r4.xyzw + r6.xyzw; + r4.xyzw = cb2[39].xyzw * r4.xyzw; + r3.z = r5.y ? 1.000000 : 0; + r5.x = r4.w * r3.z; + r5.x = saturate(r5.x); + // ============================================================================ + // SUN SPECULAR HIGHLIGHT WITH SMOOTHSTEP + // ============================================================================ + r3.w = -0.5 + r3.y; + r3.w = saturate(r3.w + r3.w); + r4.w = r3.w * -2 + 3; + r3.w = r3.w * r3.w; + r3.w = r4.w * r3.w; + r4.w = r3.w * r3.y; + r3.y = -r3.w * r3.y + r3.y; + r3.y = cb2[43].y * r3.y + r4.w; // Sun brightness + r5.yzw = cb2[42].xyz * r3.yyy; // Apply sun color + r5.yzw = cb2[43].www * r5.yzw; // Sun intensity multiplier + r5.yzw = cb2[44].www * r5.yzw; // Sun shadow/occlusion + r5.yzw = max(float3(0,0,0), r5.yzw); + // HDR Sun toggle + if (SUN_INTENSITY > 0.5f) { + // Calculate sun-view alignment (1 = looking directly at sun center) + float sunDot = saturate(dot(-cb2[44].xyz, -r1.yzw)); + + // === HORIZON REDDENING === + // Sun direction Y component indicates height (-1 = below, 0 = horizon, 1 = zenith) + float sunHeight = saturate(cb2[44].y + 0.1f); // Shift so effect starts slightly above horizon + + // Warm shift when sun is low (more red/orange near horizon) + float3 horizonTint = lerp(float3(1.0f, 0.6f, 0.3f), // Low sun: warm orange + float3(1.0f, 0.95f, 0.9f), // High sun: nearly white + sunHeight); + + // === LIMB DARKENING === + // Real stars appear darker at edges due to optical depth through atmosphere + // Use a soft power curve - center is brightest, edges darken + float limbDarkening = pow(sunDot, 0.4f); // Subtle darkening toward edges + + // === CHROMATIC SUN EDGE === + // Core is white-hot, edges transition to yellow/orange + float3 sunCoreColor = float3(1.0f, 1.0f, 1.0f); // White-hot center + float3 sunEdgeColor = float3(1.0f, 0.85f, 0.6f); // Warm yellow edge + + // Blend from edge color to core color based on how centered we are + float coreFactor = pow(sunDot, 3.0f); // Sharp transition to white core + float3 chromaticColor = lerp(sunEdgeColor, sunCoreColor, coreFactor); + + // === COMBINE SUN DISK === + // Apply limb darkening and chromatic color to base sun + r5.yzw = r5.yzw * limbDarkening * chromaticColor * horizonTint; + + // Boost the sun intensity for HDR + r5.yzw = r5.yzw * 5.0f; + + // === CORONA GLOW === + // Inner corona (tight glow) + float coronaInner = pow(sunDot, 64.0f); + // Outer corona (wide soft glow) + float coronaOuter = pow(sunDot, 8.0f); + + // Corona colors - also affected by horizon + float3 coronaColorInner = lerp(float3(1.0f, 0.5f, 0.2f), // Warm inner at horizon + float3(1.0f, 0.7f, 0.3f), // Normal inner + sunHeight); + float3 coronaColorOuter = lerp(float3(1.0f, 0.3f, 0.1f), // Deep orange at horizon + float3(1.0f, 0.5f, 0.2f), // Normal outer + sunHeight); + + float3 corona = coronaInner * coronaColorInner * 2.0f + + coronaOuter * coronaColorOuter * 0.5f; + + // Modulate corona by sun color/intensity from game + corona *= cb2[42].xyz * cb2[42].w; + corona *= cb2[44].w; // Sun shadow/occlusion + + // Add corona to sun + r5.yzw += corona; + + // === DESATURATE SUN (50%) === + float sunLuma = dot(r5.yzw, float3(0.2126f, 0.7152f, 0.0722f)); + r5.yzw = lerp(r5.yzw, float3(sunLuma, sunLuma, sunLuma), 0.5f); + + // === BLOOM BOOST === + r5.yzw *= 10.0f; + + } else { + // Vanilla clamp + r5.yzw = min(float3(3,3,3), r5.yzw); + } + + // Combine skybox, sun specular, and clouds + r2.yzw = r2.yzw * r3.xxx + r5.yzw; + r3.xyw = r4.xyz * r3.zzz + -r2.yzw; + r2.yzw = r5.xxx * r3.xyw + r2.yzw; + // ============================================================================ + // VOLUMETRIC LIGHT SHAFT SYSTEM 1 (conditional) + // ============================================================================ + r3.xy = cmp(float2(0.75,0.75) < cb2[0].xy); + if (r3.x != 0) { + r3.x = 1 / cb2[27].x; + r3.w = cb2[27].w + cb2[27].x; + r4.w = rsqrt(r0.w); + r5.yzw = r4.www * r0.xyz; + // ============================================================================ + // SPHERICAL LIGHT SOURCE INTERSECTION (cb2[15] = light position) + // ============================================================================ + r4.w = dot(r5.yzw, cb2[15].xyz); + r6.x = cb2[19].x * cb2[19].x + -1; + r6.x = r4.w * r4.w + r6.x; + r6.y = max(0, r6.x); + r6.y = sqrt(r6.y); + r4.w = -r6.y + r4.w; + r6.yzw = r5.yzw * r4.www + -cb2[15].xyz; + r6.yzw = r6.yzw / cb2[19].xxx; + r4.w = dot(cb2[15].xyz, cb2[15].xyz); + r4.w = rsqrt(r4.w); + r7.xyz = cb2[15].xyz * r4.www; + r4.w = saturate(dot(r5.yzw, r7.xyz)); + r4.w = r6.x * r4.w; + r4.w = max(0, r4.w); + r4.w = cmp(0 < r4.w); + r6.x = r4.w ? 1.000000 : 0; + r7.x = dot(cb2[21].xyz, cb2[15].xyz); + r7.y = dot(cb2[21].xyz, r5.yzw); + r7.x = abs(r7.x) / abs(r7.y); + r7.xyz = r5.yzw * r7.xxx + -cb2[15].xyz; + r7.w = dot(r7.xyz, r7.xyz); + r7.w = sqrt(r7.w); + r8.xyz = r7.xyz / r7.www; + r7.x = dot(cb2[21].xyz, r7.xyz); + r7.x = cmp(abs(r7.x) < 0.00100000005); + r7.x = r7.x ? 1.000000 : 0; + r7.x = r7.w * r7.x; + r7.y = r7.x * cb2[19].z + cb2[19].w; + r7.z = dot(r6.yzw, cb2[21].xyz); + r9.xyz = -cb2[21].xyz * r7.zzz + r6.yzw; + r8.w = dot(r9.xyz, r9.xyz); + r8.w = rsqrt(r8.w); + r9.xyz = r9.xyz * r8.www; + r8.w = dot(r9.xyz, cb2[25].xyz); + r9.w = cmp(0 < r8.w); + r8.w = cmp(r8.w < 0); + r8.w = (int)-r9.w + (int)r8.w; + r8.w = (int)r8.w; + r9.w = saturate(-r8.w); + r9.x = dot(r9.xyz, cb2[23].xyz); + r9.y = 1 + -abs(r9.x); + r9.y = sqrt(r9.y); + r9.z = abs(r9.x) * -0.0187292993 + 0.0742610022; + r9.z = r9.z * abs(r9.x) + -0.212114394; + r9.z = r9.z * abs(r9.x) + 1.57072878; + r10.x = r9.z * r9.y; + r10.x = r10.x * -2 + 3.14159274; + r9.x = cmp(r9.x < -r9.x); + r9.x = r9.x ? r10.x : 0; + r9.x = r9.z * r9.y + r9.x; + r8.w = r9.x * r8.w; + r9.x = r8.w * 0.159154937 + r9.w; + r8.w = r7.z * r7.z; + r8.w = r8.w * -0.222222224 + -0.277777791; + r9.y = r8.w * -r7.z + 0.50000006; + r10.xyzw = t3.SampleBias(s2_s, r9.xy, cb1[26].x).xyzw; + r6.y = saturate(dot(cb2[17].xyz, r6.yzw)); + r6.y = saturate(r6.y * cb2[1].x + cb2[1].z); + r9.xyz = t5.SampleBias(s4_s, r9.xy, cb1[26].x).xyz; + r9.xyz = cb2[9].xyz * r9.xyz; + r10.xyz = r10.xyz * r6.yyy + r9.xyz; + r9.xyzw = r10.xyzw * r6.xxxx; + r6.z = saturate(1 + -r7.y); + r6.z = r6.z * r7.y; + r6.w = cmp(0 < r6.z); + r6.z = cmp(r6.z < 0); + r6.z = (int)-r6.w + (int)r6.z; + r6.z = (int)r6.z; + r6.w = dot(r5.yzw, r8.xyz); + r7.z = cmp(0 < -r6.w); + r6.w = cmp(-r6.w < 0); + r6.w = (int)-r7.z + (int)r6.w; + r6.w = (int)r6.w; + r6.zw = saturate(r6.zw); + r6.w = -1 + r6.w; + r6.x = r6.x * r6.w + 1; + r6.x = r6.z * r6.x; + r6.z = dot(r8.xyz, cb2[25].xyz); + r6.w = cmp(0 < r6.z); + r6.z = cmp(r6.z < 0); + r6.z = (int)-r6.w + (int)r6.z; + r6.z = (int)r6.z; + r6.w = dot(cb2[17].xyz, r8.xyz); + r6.w = saturate(-r6.w); + r7.z = saturate(-r6.z); + r8.x = dot(r8.xyz, cb2[23].xyz); + r8.y = 1 + -abs(r8.x); + r8.y = sqrt(r8.y); + r8.z = abs(r8.x) * -0.0187292993 + 0.0742610022; + r8.z = r8.z * abs(r8.x) + -0.212114394; + r8.z = r8.z * abs(r8.x) + 1.57072878; + r8.w = r8.z * r8.y; + r8.w = r8.w * -2 + 3.14159274; + r8.x = cmp(r8.x < -r8.x); + r8.x = r8.x ? r8.w : 0; + r8.x = r8.z * r8.y + r8.x; + r6.z = r8.x * r6.z; + r7.x = r6.z * 0.159154937 + r7.z; + r8.xyzw = t7.SampleBias(s6_s, r7.xy, cb1[26].x).xyzw; + r8.xyzw = cb2[7].xyzw * r8.xyzw; + r6.z = -r6.w * r6.w + 1; + r6.z = sqrt(r6.z); + r6.z = -r7.w * r6.z + cb2[19].x; + r6.z = cb2[19].y * r6.z; + r6.z = r6.z / cb2[0].z; + r6.z = saturate(1 + r6.z); + r6.z = 1 + -r6.z; + r6.w = dot(cb2[17].xyz, cb2[21].xyz); + r6.w = 0.400000006 + abs(r6.w); + r6.w = min(1, r6.w); + r6.z = r6.z * r6.w; + r7.xyzw = r8.xyzw * r6.zzzz; + r7.xyz = r7.xyz * r7.www; + r7.xyz = r7.xyz * r6.xxx; + r8.xyz = r9.xyz * r10.www + r7.xyz; + r6.x = r7.w * r6.x; + r4.w = r4.w ? 0 : 1; + r8.w = r6.x * r4.w + r9.w; + r4.w = saturate(r5.z); + r4.w = -1 + r4.w; + r4.w = cb2[29].w * r4.w + 1; + r7.xyzw = cb2[5].xyzw * r8.xyzw; + r8.xyzw = r7.xyzw * r4.wwww; + r6.x = dot(r5.yzw, r5.yzw); + r6.x = max(1.17549435e-038, r6.x); + r6.x = rsqrt(r6.x); + r5.yzw = r6.xxx * r5.yzw; + r6.x = dot(cb2[17].xyz, cb2[17].xyz); + r6.x = max(1.17549435e-038, r6.x); + r6.x = rsqrt(r6.x); + r6.xzw = cb2[17].xyz * r6.xxx; + r9.xyz = -cb2[13].xyz + cb0[44].xyz; + r9.w = dot(r5.yzw, r9.xyz); + r9.x = dot(r9.xyz, r9.xyz); + r9.y = -r3.w * r3.w + r9.x; + r9.y = r9.w * r9.w + -r9.y; + r9.z = cmp(0 < r9.y); + r9.y = sqrt(r9.y); + r10.x = -r9.w + -r9.y; + r10.x = max(0, r10.x); + r9.y = -r9.w + r9.y; + r10.y = r9.y + -r10.x; + r10.xy = r9.zz ? r10.xy : 0; + if (r9.z != 0) { + r9.x = -cb2[27].w * cb2[27].w + r9.x; + r9.x = r9.w * r9.w + -r9.x; + r9.y = cmp(0 < r9.x); + r9.x = sqrt(r9.x); + r9.x = -r9.w + -r9.x; + r9.x = max(0, r9.x); + r9.x = r9.y ? r9.x : 0; + r9.z = cmp(0 < r9.x); + r9.x = r9.x + -r10.x; + r9.x = min(r10.y, r9.x); + r9.x = r9.z ? r9.x : r10.y; + r9.x = r9.y ? r9.x : r10.y; + r9.y = cmp(0 < r9.x); + if (r9.y != 0) { + r9.x = r9.x / cb2[27].y; + r9.y = dot(-r5.yzw, r6.xzw); + r10.yzw = cb2[27].zzz * float3(0.000244140625,0.0012673497,0.00266802101); + r11.xyz = r5.yzw * r10.xxx + cb0[44].xyz; + r12.xyz = r9.xxx * r5.yzw; + r11.xyz = r12.xyz * float3(0.5,0.5,0.5) + r11.xyz; + r12.xyz = float3(0.5,0.5,0.5) * r6.xzw; + r13.xyz = r11.xyz; + r14.xyz = float3(0,0,0); + r9.zw = float2(0,0); + while (true) { + r10.x = (int)r9.w; + r10.x = cmp(r10.x >= cb2[27].y); + if (r10.x != 0) break; + r15.xyz = -cb2[13].xyz + r13.xyz; + r10.x = dot(r15.xyz, r15.xyz); + r11.w = sqrt(r10.x); + r11.w = -cb2[27].w + r11.w; + r11.w = r11.w * r3.x; + r11.w = cb2[28].y * -r11.w; + r11.w = 1.44269502 * r11.w; + r11.w = exp2(r11.w); + r11.w = r11.w * r9.x; + r11.w = min(3.40282347e+038, r11.w); + r9.z = r11.w + r9.z; + r12.w = dot(r6.xzw, r15.xyz); + r10.x = -r3.w * r3.w + r10.x; + r10.x = r12.w * r12.w + -r10.x; + r13.w = cmp(0 < r10.x); + r10.x = sqrt(r10.x); + r14.w = -r12.w + r10.x; + r10.x = -r12.w + -r10.x; + r10.x = max(0, r10.x); + r10.x = r14.w + -r10.x; + r10.x = r13.w ? r10.x : 0; + r10.x = r10.x / cb2[28].x; + r15.xyz = r12.xyz * r10.xxx + r13.xyz; + r16.xyz = r15.xyz; + r12.w = 0; + r13.w = 0; + while (true) { + r14.w = (int)r13.w; + r14.w = cmp(r14.w >= cb2[28].x); + if (r14.w != 0) break; + r17.xyz = -cb2[13].xyz + r16.xyz; + r18.xyz = r6.xzw * r10.xxx + r16.xyz; + r14.w = dot(r17.xyz, r17.xyz); + r14.w = sqrt(r14.w); + r14.w = -cb2[27].w + r14.w; + r14.w = max(0, r14.w); + r14.w = r14.w * r3.x; + r14.w = cb2[28].y * -r14.w; + r14.w = 1.44269502 * r14.w; + r14.w = exp2(r14.w); + r14.w = r14.w + r12.w; + r15.w = (int)r13.w + 1; + r16.xyz = r18.xyz; + r12.w = r14.w; + r13.w = r15.w; + continue; + } + r10.x = r12.w * r10.x + r9.z; + r15.xyz = r10.yzw * r10.xxx; + r15.xyz = float3(-1.44269502,-1.44269502,-1.44269502) * r15.xyz; + r15.xyz = exp2(r15.xyz); + r14.xyz = r15.xyz * r11.www + r14.xyz; + r13.xyz = r5.yzw * r9.xxx + r13.xyz; + r9.w = (int)r9.w + 1; + } + r3.x = r9.y * r9.y + 1; + r3.x = 0.0596831031 * r3.x; + r5.yzw = r14.xyz * r3.xxx; + r5.yzw = r5.yzw * r10.yzw; + } else { + r5.yzw = float3(0,0,0); + } + } else { + r5.yzw = float3(0,0,0); + } + r9.xyw = cb2[28].zzz * r5.zwy; + r3.x = cmp(r9.x >= r9.y); + r3.x = r3.x ? 1.000000 : 0; + r10.xy = r9.yx; + r10.zw = float2(-1,0.666666687); + r11.xy = r5.zw * cb2[28].zz + -r10.xy; + r11.zw = float2(1,-1); + r10.xyzw = r3.xxxx * r11.xyzw + r10.xyzw; + r3.x = cmp(r9.w >= r10.x); + r3.x = r3.x ? 1.000000 : 0; + r9.xyz = r10.xyw; + r10.xyw = r9.wyx; + r10.xyzw = r10.xyzw + -r9.xyzw; + r9.xyzw = r3.xxxx * r10.xyzw + r9.xyzw; + r3.x = min(r9.w, r9.y); + r3.x = r9.x + -r3.x; + r3.w = r9.w + -r9.y; + r5.y = r3.x * 6 + 9.99999975e-005; + r3.w = r3.w / r5.y; + r3.w = r9.z + r3.w; + r3.w = cb2[28].w + abs(r3.w); + r5.yzw = float3(1,0.666666687,0.333333343) + r3.www; + r5.yzw = frac(r5.yzw); + r5.yzw = r5.yzw * float3(6,6,6) + float3(-3,-3,-3); + r5.yzw = saturate(float3(-1,-1,-1) + abs(r5.yzw)); + r3.w = 9.99999975e-005 + r9.x; + r3.x = r3.x / r3.w; + r5.yzw = float3(-1,-1,-1) + r5.yzw; + r5.yzw = r3.xxx * r5.yzw + float3(1,1,1); + r6.xzw = r5.yzw * r9.xxx; + r3.x = cmp(cb2[2].x >= 0.5); + r3.x = r3.x ? 1.000000 : 0; + r9.yz = cmp(float2(1.5,0.5) >= cb2[2].xx); + r9.yz = r9.yz ? float2(1,1) : 0; + r3.x = -r3.x * r9.y + 1; + r3.x = -r8.w * r3.x + 1; + r3.w = dot(r8.xyz, float3(0.212672904,0.715152204,0.0721750036)); + r7.xyz = r7.xyz * r4.www + -r3.www; + r7.xyz = cb1[104].www * r7.xyz + r3.www; + r7.xyz = cb1[104].xyz * r7.xyz; + r3.w = -r7.w * r4.w + 1; + r3.w = -r3.w * r9.z + 1; + r7.xyz = r7.xyz * r3.www; + r7.xyz = r2.yzw * r3.xxx + r7.xyz; + r6.xyz = r6.xzw * r6.yyy; + r5.yzw = r5.yzw * r9.xxx + -r6.xyz; + r5.yzw = cb2[29].yyy * r5.yzw + r6.xyz; + r2.yzw = r5.yzw * r4.www + r7.xyz; + } + if (r3.y != 0) { + r3.x = 1 / cb2[30].x; + r3.y = cb2[30].w + cb2[30].x; + r3.w = rsqrt(r0.w); + r5.yzw = r3.www * r0.xyz; + r0.x = dot(r5.yzw, cb2[16].xyz); + r0.z = cb2[20].x * cb2[20].x + -1; + r0.z = r0.x * r0.x + r0.z; + r3.w = max(0, r0.z); + r3.w = sqrt(r3.w); + r0.x = -r3.w + r0.x; + r6.xyz = r5.yzw * r0.xxx + -cb2[16].xyz; + r6.xyz = r6.xyz / cb2[20].xxx; + r0.x = dot(r6.xyz, cb2[22].xyz); + r7.xyz = -cb2[22].xyz * r0.xxx + r6.xyz; + r3.w = dot(r7.xyz, r7.xyz); + r3.w = rsqrt(r3.w); + r7.xyz = r7.xyz * r3.www; + r3.w = dot(r7.xyz, cb2[26].xyz); + r4.w = cmp(0 < r3.w); + r3.w = cmp(r3.w < 0); + r3.w = (int)-r4.w + (int)r3.w; + r3.w = (int)r3.w; + r4.w = saturate(-r3.w); + r6.w = dot(r7.xyz, cb2[24].xyz); + r7.x = 1 + -abs(r6.w); + r7.x = sqrt(r7.x); + r7.y = abs(r6.w) * -0.0187292993 + 0.0742610022; + r7.y = r7.y * abs(r6.w) + -0.212114394; + r7.y = r7.y * abs(r6.w) + 1.57072878; + r7.z = r7.y * r7.x; + r7.z = r7.z * -2 + 3.14159274; + r6.w = cmp(r6.w < -r6.w); + r6.w = r6.w ? r7.z : 0; + r6.w = r7.y * r7.x + r6.w; + r3.w = r6.w * r3.w; + r7.x = r3.w * 0.159154937 + r4.w; + r3.w = r0.x * r0.x; + r3.w = r3.w * -0.222222224 + -0.277777791; + r7.y = r3.w * -r0.x + 0.50000006; + r8.xyzw = t4.SampleBias(s3_s, r7.xy, cb1[26].x).xyzw; + r0.x = saturate(dot(cb2[18].xyz, r6.xyz)); + r0.x = saturate(r0.x * cb2[1].y + cb2[1].w); + r6.xyz = t6.SampleBias(s5_s, r7.xy, cb1[26].x).xyz; + r6.xyz = cb2[10].xyz * r6.xyz; + r8.xyz = r8.xyz * r0.xxx + r6.xyz; + r3.w = dot(cb2[16].xyz, cb2[16].xyz); + r3.w = rsqrt(r3.w); + r6.xyz = cb2[16].xyz * r3.www; + r3.w = saturate(dot(r5.yzw, r6.xyz)); + r0.z = r3.w * r0.z; + r0.z = max(0, r0.z); + r0.z = cmp(0 < r0.z); + r0.z = r0.z ? 1.000000 : 0; + r6.xyzw = r8.xyzw * r0.zzzz; + r6.xyz = r6.xyz * r8.www; + r0.z = saturate(r5.z); + r0.z = -1 + r0.z; + r0.z = cb2[32].w * r0.z + 1; + r6.xyzw = cb2[6].xyzw * r6.xyzw; + r7.xyzw = r6.xyzw * r0.zzzz; + r3.w = dot(r5.yzw, r5.yzw); + r3.w = max(1.17549435e-038, r3.w); + r3.w = rsqrt(r3.w); + r5.yzw = r5.yzw * r3.www; + r3.w = dot(cb2[18].xyz, cb2[18].xyz); + r3.w = max(1.17549435e-038, r3.w); + r3.w = rsqrt(r3.w); + r6.xyz = cb2[18].xyz * r3.www; + r8.xyz = -cb2[14].xyz + cb0[44].xyz; + r3.w = dot(r5.yzw, r8.xyz); + r4.w = dot(r8.xyz, r8.xyz); + r8.x = -r3.y * r3.y + r4.w; + r8.x = r3.w * r3.w + -r8.x; + r8.y = cmp(0 < r8.x); + r8.x = sqrt(r8.x); + r8.z = -r8.x + -r3.w; + r9.x = max(0, r8.z); + r8.x = r8.x + -r3.w; + r9.y = r8.x + -r9.x; + r8.xz = r8.yy ? r9.xy : 0; + if (r8.y != 0) { + r4.w = -cb2[30].w * cb2[30].w + r4.w; + r4.w = r3.w * r3.w + -r4.w; + r8.y = cmp(0 < r4.w); + r4.w = sqrt(r4.w); + r3.w = -r4.w + -r3.w; + r3.w = max(0, r3.w); + r3.w = r8.y ? r3.w : 0; + r4.w = cmp(0 < r3.w); + r3.w = r3.w + -r8.x; + r3.w = min(r8.z, r3.w); + r3.w = r4.w ? r3.w : r8.z; + r3.w = r8.y ? r3.w : r8.z; + r4.w = cmp(0 < r3.w); + if (r4.w != 0) { + r3.w = r3.w / cb2[30].y; + r4.w = dot(-r5.yzw, r6.xyz); + r8.yzw = cb2[30].zzz * float3(0.000244140625,0.0012673497,0.00266802101); + r9.xyz = r5.yzw * r8.xxx + cb0[44].xyz; + r10.xyz = r5.yzw * r3.www; + r9.xyz = r10.xyz * float3(0.5,0.5,0.5) + r9.xyz; + r10.xyz = float3(0.5,0.5,0.5) * r6.xyz; + r11.xyz = r9.xyz; + r12.xyz = float3(0,0,0); + r8.x = 0; + r9.w = 0; + while (true) { + r10.w = (int)r9.w; + r10.w = cmp(r10.w >= cb2[30].y); + if (r10.w != 0) break; + r13.xyz = -cb2[14].xyz + r11.xyz; + r10.w = dot(r13.xyz, r13.xyz); + r11.w = sqrt(r10.w); + r11.w = -cb2[30].w + r11.w; + r11.w = r11.w * r3.x; + r11.w = cb2[31].y * -r11.w; + r11.w = 1.44269502 * r11.w; + r11.w = exp2(r11.w); + r11.w = r11.w * r3.w; + r11.w = min(3.40282347e+038, r11.w); + r8.x = r11.w + r8.x; + r12.w = dot(r6.xyz, r13.xyz); + r10.w = -r3.y * r3.y + r10.w; + r10.w = r12.w * r12.w + -r10.w; + r13.x = cmp(0 < r10.w); + r10.w = sqrt(r10.w); + r13.y = -r12.w + r10.w; + r10.w = -r12.w + -r10.w; + r10.w = max(0, r10.w); + r10.w = r13.y + -r10.w; + r10.w = r13.x ? r10.w : 0; + r10.w = r10.w / cb2[31].x; + r13.xyz = r10.xyz * r10.www + r11.xyz; + r14.xyz = r13.xyz; + r12.w = 0; + r13.w = 0; + while (true) { + r14.w = (int)r13.w; + r14.w = cmp(r14.w >= cb2[31].x); + if (r14.w != 0) break; + r15.xyz = -cb2[14].xyz + r14.xyz; + r16.xyz = r6.xyz * r10.www + r14.xyz; + r14.w = dot(r15.xyz, r15.xyz); + r14.w = sqrt(r14.w); + r14.w = -cb2[30].w + r14.w; + r14.w = max(0, r14.w); + r14.w = r14.w * r3.x; + r14.w = cb2[31].y * -r14.w; + r14.w = 1.44269502 * r14.w; + r14.w = exp2(r14.w); + r14.w = r14.w + r12.w; + r15.x = (int)r13.w + 1; + r14.xyz = r16.xyz; + r12.w = r14.w; + r13.w = r15.x; + continue; + } + r10.w = r12.w * r10.w + r8.x; + r13.xyz = r10.www * r8.yzw; + r13.xyz = float3(-1.44269502,-1.44269502,-1.44269502) * r13.xyz; + r13.xyz = exp2(r13.xyz); + r12.xyz = r13.xyz * r11.www + r12.xyz; + r11.xyz = r5.yzw * r3.www + r11.xyz; + r9.w = (int)r9.w + 1; + } + r3.x = r4.w * r4.w + 1; + r3.x = 0.0596831031 * r3.x; + r3.xyw = r12.xyz * r3.xxx; + r3.xyw = r3.xyw * r8.yzw; + } else { + r3.xyw = float3(0,0,0); + } + } else { + r3.xyw = float3(0,0,0); + } + r8.xyw = cb2[31].zzz * r3.ywx; + r3.x = cmp(r8.x >= r8.y); + r3.x = r3.x ? 1.000000 : 0; + r9.xy = r8.yx; + r9.zw = float2(-1,0.666666687); + r10.xy = r3.yw * cb2[31].zz + -r9.xy; + r10.zw = float2(1,-1); + r9.xyzw = r3.xxxx * r10.xyzw + r9.xyzw; + r3.x = cmp(r8.w >= r9.x); + r3.x = r3.x ? 1.000000 : 0; + r8.xyz = r9.xyw; + r9.xyw = r8.wyx; + r9.xyzw = r9.xyzw + -r8.xyzw; + r8.xyzw = r3.xxxx * r9.xyzw + r8.xyzw; + r3.x = min(r8.w, r8.y); + r3.x = r8.x + -r3.x; + r3.y = r8.w + -r8.y; + r3.w = r3.x * 6 + 9.99999975e-005; + r3.y = r3.y / r3.w; + r3.y = r8.z + r3.y; + r3.y = cb2[31].w + abs(r3.y); + r5.yzw = float3(1,0.666666687,0.333333343) + r3.yyy; + r5.yzw = frac(r5.yzw); + r5.yzw = r5.yzw * float3(6,6,6) + float3(-3,-3,-3); + r5.yzw = saturate(float3(-1,-1,-1) + abs(r5.yzw)); + r3.y = 9.99999975e-005 + r8.x; + r3.x = r3.x / r3.y; + r5.yzw = float3(-1,-1,-1) + r5.yzw; + r3.xyw = r3.xxx * r5.yzw + float3(1,1,1); + r5.yzw = r3.xyw * r8.xxx; + r4.w = cmp(cb2[2].y >= 0.5); + r4.w = r4.w ? 1.000000 : 0; + r6.xy = cmp(float2(1.5,0.5) >= cb2[2].yy); + r6.xy = r6.xy ? float2(1,1) : 0; + r4.w = -r4.w * r6.x + 1; + r4.w = -r7.w * r4.w + 1; + r6.x = -r6.w * r0.z + 1; + r6.x = -r6.x * r6.y + 1; + r6.xyz = r7.xyz * r6.xxx; + r6.xyz = r2.yzw * r4.www + r6.xyz; + r5.yzw = r5.yzw * r0.xxx; + r3.xyw = r3.xyw * r8.xxx + -r5.yzw; + r3.xyw = cb2[32].yyy * r3.xyw + r5.yzw; + r2.yzw = r3.xyw * r0.zzz + r6.xyz; + } + r3.xyz = r4.xyz * r3.zzz + -r2.yzw; + r2.yzw = r5.xxx * r3.xyz + r2.yzw; + r0.x = v1.y * cb1[74].w + cb1[75].w; + r0.z = r2.x * cb1[72].w + -cb1[71].w; + r0.xz = max(float2(0.00999999978,0), r0.xz); + r3.x = -1.44269502 * r0.x; + r3.x = exp2(r3.x); + r3.x = 1 + -r3.x; + r0.x = r3.x / r0.x; + r3.x = v1.y * cb1[74].w + cb1[76].w; + r3.x = 1.44269502 * r3.x; + r3.x = exp2(r3.x); + r0.x = r3.x * r0.x; + r0.x = -r0.z * r0.x; + r3.xyz = cb1[73].xyz * r0.xxx; + r3.xyz = float3(1.44269502,1.44269502,1.44269502) * r3.xyz; + r3.xyz = exp2(r3.xyz); + r0.x = dot(r1.yzw, cb1[72].xyz); + r0.z = cb1[73].w * cb1[73].w + 1; + r3.w = dot(r0.xx, cb1[73].ww); + r0.z = -r3.w + r0.z; + r3.w = cmp(0 < cb1[83].z); + if (r3.w != 0) { + r4.xy = (uint2)v0.xy; + r4.z = 7 & asint(cb1[26].w); + r5.xyz = mad((int3)r4.xyz, int3(0x19660d,0x19660d,0x19660d), int3(0x3c6ef35f,0x3c6ef35f,0x3c6ef35f)); + r3.w = mad((int)r5.y, (int)r5.z, (int)r5.x); + r4.z = mad((int)r5.z, (int)r3.w, (int)r5.y); + r4.w = mad((int)r3.w, (int)r4.z, (int)r5.z); + r5.x = mad((int)r4.z, (int)r4.w, (int)r3.w); + r6.x = -cb0[0].z; + r6.y = -cb0[1].z; + r6.z = -cb0[2].z; + r3.w = dot(r1.yzw, r6.xyz); + r5.z = cmp(5.96046448e-008 < r3.w); + r3.w = 1 / r3.w; + r3.w = r5.z ? r3.w : 0; + r3.w = cb1[83].w * r3.w; + r5.z = 1 / r2.x; + r5.w = r5.z * r3.w; + r6.x = r5.w * r0.y + cb0[44].y; + r5.w = -r5.w * r0.y + r0.y; + r3.w = -r3.w * r5.z + 1; + r5.z = r3.w * r2.x; + r6.y = cb1[77].z * r5.w; + r5.w = cb1[80].x * r5.w; + r5.w = max(-127, r5.w); + r6.z = -cb1[77].x + r6.x; + r6.z = cb1[77].z * r6.z; + r6.yz = max(float2(-127,-127), r6.yz); + r6.z = exp2(-r6.z); + r6.z = cb1[77].y * r6.z; + r6.w = cmp(5.96046448e-008 < abs(r6.y)); + r7.x = exp2(-r6.y); + r7.x = 1 + -r7.x; + r7.x = r7.x / r6.y; + r6.y = -r6.y * 0.240226507 + 0.693147182; + r6.y = r6.w ? r7.x : r6.y; + r6.x = -cb1[80].z + r6.x; + r6.x = cb1[80].x * r6.x; + r6.x = max(-127, r6.x); + r6.x = exp2(-r6.x); + r6.x = cb1[80].y * r6.x; + r6.w = cmp(5.96046448e-008 < abs(r5.w)); + r7.x = exp2(-r5.w); + r7.x = 1 + -r7.x; + r7.x = r7.x / r5.w; + r5.w = -r5.w * 0.240226507 + 0.693147182; + r5.w = r6.w ? r7.x : r5.w; + r5.w = r6.x * r5.w; + r5.w = r6.z * r6.y + r5.w; + r6.xy = saturate(r2.xx * cb1[78].wy + cb1[78].zx); + r5.z = r5.w * r5.z; + r5.z = exp2(-r5.z); + r5.z = min(1, r5.z); + r5.z = max(cb1[79].w, r5.z); + r5.z = r5.z + r6.y; + r5.z = r5.z + r6.x; + r5.z = min(1, r5.z); + r5.y = mad((int)r4.w, (int)r5.x, (int)r4.z); + r4.zw = (uint2)r5.xy >> int2(16,16); + r4.xyzw = (uint4)r4.xyzw; + r4.zw = r4.zw * float2(3.05180438e-005,3.05180438e-005) + float2(-1,-1); + r4.xy = r4.zw * cb1[87].ww + r4.xy; + r4.xy = cb1[85].xy * r4.xy; + r4.w = v0.w * cb1[84].x + cb1[84].y; + r4.w = log2(r4.w); + r4.w = cb1[84].z * r4.w; + r4.z = r4.w / cb1[83].z; + r4.xyzw = t0.SampleLevel(s0_s, r4.xyz, 0).xyzw; + r5.x = -cb1[86].z + v0.w; + r5.x = saturate(1000000 * r5.x); + r4.xyzw = float4(-0,-0,-0,-1) + r4.xyzw; + r4.xyzw = r5.xxxx * r4.xyzw + float4(0,0,0,1); + r5.x = 1 + -r5.z; + r5.y = saturate(dot(-r1.yzw, cb1[81].xyz)); + r5.y = log2(r5.y); + r5.y = cb1[82].w * r5.y; + r5.y = exp2(r5.y); + r6.yzw = cb1[82].xyz * r5.yyy; + r3.w = r3.w * r2.x + -cb1[81].w; + r3.w = max(0, r3.w); + r3.w = r5.w * r3.w; + r3.w = exp2(-r3.w); + r3.w = min(1, r3.w); + r3.w = 1 + -r3.w; + r6.yzw = r6.yzw * r3.www; + r3.w = 1 + -r6.x; + r6.xyz = r6.yzw * r3.www; + r5.xyw = cb1[79].xyz * r5.xxx + r6.xyz; + r4.xyz = r5.xyw * r4.www + r4.xyz; + r3.w = r4.w * r5.z; + } else { + r4.w = cb1[77].z * r0.y; + r4.w = max(-127, r4.w); + r0.y = cb1[80].x * r0.y; + r0.y = max(-127, r0.y); + r5.x = -cb1[77].x + cb0[44].y; + r5.x = cb1[77].z * r5.x; + r5.x = max(-127, r5.x); + r5.x = exp2(-r5.x); + r5.x = cb1[77].y * r5.x; + r5.y = cmp(5.96046448e-008 < abs(r4.w)); + r5.z = exp2(-r4.w); + r5.z = 1 + -r5.z; + r5.z = r5.z / r4.w; + r4.w = -r4.w * 0.240226507 + 0.693147182; + r4.w = r5.y ? r5.z : r4.w; + r5.y = -cb1[80].z + cb0[44].y; + r5.y = cb1[80].x * r5.y; + r5.y = max(-127, r5.y); + r5.y = exp2(-r5.y); + r5.y = cb1[80].y * r5.y; + r5.z = cmp(5.96046448e-008 < abs(r0.y)); + r5.w = exp2(-r0.y); + r5.w = 1 + -r5.w; + r5.w = r5.w / r0.y; + r0.y = -r0.y * 0.240226507 + 0.693147182; + r0.y = r5.z ? r5.w : r0.y; + r0.y = r5.y * r0.y; + r0.y = r5.x * r4.w + r0.y; + r5.xy = saturate(r2.xx * cb1[78].wy + cb1[78].zx); + r2.x = r0.y * r2.x; + r2.x = exp2(-r2.x); + r2.x = min(1, r2.x); + r2.x = max(cb1[79].w, r2.x); + r2.x = r2.x + r5.y; + r2.x = r2.x + r5.x; + r3.w = min(1, r2.x); + r2.x = 1 + -r3.w; + r1.y = saturate(dot(-r1.yzw, cb1[81].xyz)); + r1.y = log2(r1.y); + r1.y = cb1[82].w * r1.y; + r1.y = exp2(r1.y); + r1.yzw = cb1[82].xyz * r1.yyy; + r0.w = r0.w * r1.x + -cb1[81].w; + r0.w = max(0, r0.w); + r0.y = r0.y * r0.w; + r0.y = exp2(-r0.y); + r0.y = min(1, r0.y); + r0.y = 1 + -r0.y; + r1.xyz = r1.yzw * r0.yyy; + r0.y = 1 + -r5.x; + r1.xyz = r1.xyz * r0.yyy; + r4.xyz = cb1[79].xyz * r2.xxx + r1.xyz; + } + r0.y = dot(r2.yzw, float3(0.212672904,0.715152204,0.0721750036)); + r1.xyz = r2.yzw + -r0.yyy; + r1.xyz = cb1[104].www * r1.xyz + r0.yyy; + r1.xyz = cb1[104].xyz * r1.xyz; + r2.xyz = r3.xyz * r3.www; + r0.x = r0.x * r0.x + 1; + r0.x = 0.0596831031 * r0.x; + r0.xyw = cb1[74].xyz * r0.xxx + cb1[76].xyz; + r1.w = -cb1[73].w * cb1[73].w + 1; + r2.w = 12.566371 * r0.z; + r0.z = sqrt(r0.z); + r0.z = r2.w * r0.z; + r0.z = max(0.00100000005, r0.z); + r0.z = r1.w / r0.z; + r0.xyz = saturate(cb1[75].xyz * r0.zzz + r0.xyw); + r0.xyz = float3(255,255,255) * r0.xyz; + r3.xyz = float3(1,1,1) + -r3.xyz; + r0.xyz = r3.xyz * r0.xyz; + r0.xyz = r0.xyz * r3.www + r4.xyz; + o0.xyz = r1.xyz * r2.xyz + r0.xyz; + + // ========================================================================== + // SKYBOX DESATURATION (50%) ??? Tech Test Look + // ========================================================================== + if (TECH_TEST_LOOK > 0.5f) { + float skyboxLuma = dot(o0.xyz, float3(0.2126f, 0.7152f, 0.0722f)); + o0.xyz = lerp(o0.xyz, float3(skyboxLuma, skyboxLuma, skyboxLuma), 0.5f); + } + + r0.x = max(9.99999994e-009, v3.z); + r0.xy = v3.xy / r0.xx; + r0.z = max(9.99999994e-009, v4.z); + r0.zw = v4.xy / r0.zz; + r0.xy = r0.xy + -r0.zw; + r1.xy = float2(0.5,-0.5) * r0.xy; + r1.xy = sqrt(abs(r1.xy)); + r1.xy = sqrt(r1.xy); + r0.z = -r0.y; + r0.yw = cmp(float2(0,0) < r0.xz); + r0.xz = cmp(r0.xz < float2(0,0)); + r0.xy = (int2)-r0.yw + (int2)r0.xz; + r0.xy = (int2)r0.xy; + r0.xy = r1.xy * r0.xy; + o1.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); + o0.w = 1; + o1.zw = float2(0,0); + return; +} diff --git a/src/games/endfield/others/skybox2_0x5AC95588.ps_5_0.hlsl b/src/games/endfield/others/skybox2_0x5AC95588.ps_5_0.hlsl deleted file mode 100644 index 51c887520a..0000000000 --- a/src/games/endfield/others/skybox2_0x5AC95588.ps_5_0.hlsl +++ /dev/null @@ -1,932 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Sat Jan 24 03:07:27 2026 - -#include "../shared.h" - -Texture2D t7 : register(t7); - -Texture2D t6 : register(t6); - -Texture2D t5 : register(t5); - -Texture2D t4 : register(t4); - -Texture2D t3 : register(t3); - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture3D t0 : register(t0); - -SamplerState s6_s : register(s6); - -SamplerState s5_s : register(s5); - -SamplerState s4_s : register(s4); - -SamplerState s3_s : register(s3); - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[52]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[187]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, // Screen position - float4 v1 : TEXCOORD0, // World position - float4 v2 : TEXCOORD1, // Unused - float4 v3 : TEXCOORD2, // Motion vector data 1 - float4 v4 : TEXCOORD3, // Motion vector data 2 - float3 v5 : TEXCOORD4, // Unused - out float4 o0 : SV_Target0, // Final color output - out float4 o1 : SV_Target1) // Motion vectors output -{ - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16; - uint4 bitmask, uiDest; - float4 fDest; - - // ============================================================================ - // VIEW DIRECTION AND DISTANCE CALCULATION - // ============================================================================ - r0.xyz = -cb0[44].xyz + v1.xyz; - r0.w = dot(r0.xyz, r0.xyz); - r1.x = max(9.99999994e-09, r0.w); - r1.x = rsqrt(r1.x); - r1.yzw = r1.xxx * r0.xyz; - r1.x = r1.x * r0.w; - r2.x = dot(abs(r1.yzw), float3(1,1,1)); - r2.x = 1 / r2.x; - r2.yz = r2.xx * r1.yw; - r2.y = r2.y + r2.z; - r2.x = r1.y * r2.x + -r2.z; - r3.xy = float2(1,1) + r2.yx; - r2.xy = float2(0.5,0.5) * r3.xy; - r2.xyz = t1.SampleLevel(s0_s, r2.xy, 0).xyz; - r2.w = saturate(r1.z * 10 + 1); - - // ========================================================================== - // PROCEDURAL SUN DISK CALCULATION - // ========================================================================== - // cb1[11].xyz = sun direction - // cb1[10].x = sun size/falloff exponent - // cb1[9].xyz = sun color, cb1[9].w = sun intensity - r3.x = saturate(dot(-cb1[11].xyz, -r1.yzw)); // Sun-view alignment (1 = looking at sun) - r3.x = log2(r3.x); - - // Sun size adjustment: multiply exponent to shrink disk (5.0 = ~80% smaller) - float sunSizeMultiplier = (SUN_INTENSITY > 0.5f) ? 5.0f : 1.0f; - r3.x = cb1[10].x * sunSizeMultiplier * r3.x; // Apply sun size exponent - - r3.x = exp2(r3.x); - r3.y = r3.x * r3.x + 1; - r3.x = -r3.x * 1.98000002 + 1.98010004; - r3.z = log2(cb1[9].w); - r3.yz = float2(0.0100164423,0.649999976) * r3.yz; - r3.z = exp2(r3.z); - r3.z = 8 * r3.z; - r3.x = log2(r3.x); - r3.x = r3.z * r3.x; - r3.x = exp2(r3.x); - r3.x = max(9.99999975e-05, r3.x); - r3.x = r3.y / r3.x; - r3.y = r1.y / r1.w; - r3.z = cmp(abs(r3.y) < 1); - r3.w = 1 / abs(r3.y); - r3.w = r3.z ? abs(r3.y) : r3.w; - r4.x = r3.w * r3.w; - r4.y = r4.x * 0.0872929022 + -0.301894993; - r4.x = r4.y * r4.x + 1; - r4.y = r4.x * r3.w; - r3.w = -r4.x * r3.w + 1.57079637; - r3.z = r3.z ? r4.y : r3.w; - r3.w = abs(r1.z) * 0.0468878001 + -0.203471005; - r3.w = r3.w * abs(r1.z) + 1.57079601; - r4.x = 1 + -abs(r1.z); - r4.x = sqrt(r4.x); - r4.y = r4.x * r3.w; - r3.y = cmp(r3.y < 0); - r3.y = r3.y ? -r3.z : r3.z; - r4.zw = cmp(r1.yz >= float2(0,0)); - r3.z = r4.z ? 3.1415925 : -3.1415925; - r4.z = cmp(r1.w < 0); - r4.z = r4.z ? 1.000000 : 0; - r5.x = r3.z * r4.z + r3.y; - r3.y = -r3.w * r4.x + 3.14159274; - r3.y = r4.w ? r4.y : r3.y; - r5.y = 1.57079637 + -r3.y; - r3.yz = r5.xy * float2(0.159099996,0.318300009) + float2(0.5,0.5); - r3.y = -cb1[8].w * 0.00277777785 + r3.y; - - // ============================================================================ - // CLOUD/ATMOSPHERE TEXTURE SAMPLING - // ============================================================================ - r4.x = 1 + r3.y; - r4.y = r3.z * 2 + -1; - r5.xyzw = t2.SampleBias(s1_s, r4.xy, cb0[108].x).xyzw; - r3.yzw = float3(-0.5,-0.5,-0.5) + r5.xyz; - r5.xyz = r3.yzw * cb1[7].yyy + float3(0.5,0.5,0.5); - r6.xyzw = cb1[5].xyzw * r5.xyzw; - r3.y = max(r6.x, r6.y); - r5.xyzw = -r5.xyzw * cb1[5].xyzw + r3.yyyy; - r5.xyzw = cb1[7].xxxx * r5.xyzw + r6.xyzw; - r5.xyzw = cb1[6].xyzw * r5.xyzw; - r3.y = r4.w ? 1.000000 : 0; - r4.x = r5.w * r3.y; - r4.x = saturate(r4.x); - - // ============================================================================ - // SUN SPECULAR HIGHLIGHT WITH SMOOTHSTEP - // ============================================================================ - r3.z = -0.5 + r3.x; - r3.z = saturate(r3.z + r3.z); - r3.w = r3.z * -2 + 3; - r3.z = r3.z * r3.z; - r3.z = r3.w * r3.z; - r3.w = r3.z * r3.x; - r3.x = -r3.z * r3.x + r3.x; - r3.x = cb1[10].y * r3.x + r3.w; - r3.xzw = cb1[9].xyz * r3.xxx; - r3.xzw = cb1[10].www * r3.xzw; - r3.xzw = cb1[11].www * r3.xzw; - r3.xzw = max(float3(0,0,0), r3.xzw); - - // HDR Sun toggle - if (SUN_INTENSITY > 0.5f) { - // Calculate sun-view alignment (1 = looking directly at sun center) - float sunDot = saturate(dot(-cb1[11].xyz, -r1.yzw)); - - // === HORIZON REDDENING === - // Sun direction Y component indicates height (-1 = below, 0 = horizon, 1 = zenith) - float sunHeight = saturate(cb1[11].y + 0.1f); // Shift so effect starts slightly above horizon - - // Warm shift when sun is low (more red/orange near horizon) - float3 horizonTint = lerp(float3(1.0f, 0.6f, 0.3f), // Low sun: warm orange - float3(1.0f, 0.95f, 0.9f), // High sun: nearly white - sunHeight); - - // === LIMB DARKENING === - // Real stars appear darker at edges due to optical depth through atmosphere - // Use a soft power curve - center is brightest, edges darken - float limbDarkening = pow(sunDot, 0.4f); // Subtle darkening toward edges - - // === CHROMATIC SUN EDGE === - // Core is white-hot, edges transition to yellow/orange - float3 sunCoreColor = float3(1.0f, 1.0f, 1.0f); // White-hot center - float3 sunEdgeColor = float3(1.0f, 0.85f, 0.6f); // Warm yellow edge - - // Blend from edge color to core color based on how centered we are - float coreFactor = pow(sunDot, 3.0f); // Sharp transition to white core - float3 chromaticColor = lerp(sunEdgeColor, sunCoreColor, coreFactor); - - // === COMBINE SUN DISK === - // Apply limb darkening and chromatic color to base sun - r3.xzw = r3.xzw * limbDarkening * chromaticColor * horizonTint; - - // Boost the sun intensity for HDR - r3.xzw = r3.xzw * 5.0f; - - // === CORONA GLOW === - // Inner corona (tight glow) - float coronaInner = pow(sunDot, 64.0f); - // Outer corona (wide soft glow) - float coronaOuter = pow(sunDot, 8.0f); - - // Corona colors - also affected by horizon - float3 coronaColorInner = lerp(float3(1.0f, 0.5f, 0.2f), // Warm inner at horizon - float3(1.0f, 0.7f, 0.3f), // Normal inner - sunHeight); - float3 coronaColorOuter = lerp(float3(1.0f, 0.3f, 0.1f), // Deep orange at horizon - float3(1.0f, 0.5f, 0.2f), // Normal outer - sunHeight); - - float3 corona = coronaInner * coronaColorInner * 2.0f - + coronaOuter * coronaColorOuter * 0.5f; - - // Modulate corona by sun color/intensity from game - corona *= cb1[9].xyz * cb1[9].w; - corona *= cb1[11].w; // Sun shadow/occlusion - - // Add corona to sun - r3.xzw += corona; - - // === DESATURATE SUN (50%) === - float sunLuma = dot(r3.xzw, float3(0.2126f, 0.7152f, 0.0722f)); - r3.xzw = lerp(r3.xzw, float3(sunLuma, sunLuma, sunLuma), 0.5f); - - // === BLOOM BOOST === - r3.xzw *= 10.0f; - - } else { - // Vanilla clamp - r3.xzw = min(float3(3,3,3), r3.xzw); - } - - // Combine skybox, sun specular, and clouds - r2.xyz = r2.xyz * r2.www + r3.xzw; - r3.xzw = r5.xyz * r3.yyy + -r2.xyz; - r2.xyz = r4.xxx * r3.xzw + r2.xyz; - - // ============================================================================ - // VOLUMETRIC LIGHT SHAFT SYSTEM 1 (conditional) - // ============================================================================ - r3.xz = cmp(float2(0.5,0.5) < cb1[20].xy); - if (r3.x != 0) { - r2.w = 1 / cb1[46].x; - r3.x = cb1[46].w + cb1[46].x; - r3.w = rsqrt(r0.w); - r4.yzw = r3.www * r0.xyz; - - // ============================================================================ - // SPHERICAL LIGHT SOURCE INTERSECTION (cb1[23] = light position) - // ============================================================================ - r3.w = dot(r4.yzw, cb1[23].xyz); - r5.w = cb1[27].x * cb1[27].x + -1; - r5.w = r3.w * r3.w + r5.w; - r6.x = max(0, r5.w); - r6.x = sqrt(r6.x); - r3.w = -r6.x + r3.w; - r6.xyz = r4.yzw * r3.www + -cb1[23].xyz; - r6.xyz = r6.xyz / cb1[27].xxx; - r3.w = dot(cb1[23].xyz, cb1[23].xyz); - r3.w = rsqrt(r3.w); - r7.xyz = cb1[23].xyz * r3.www; - r3.w = saturate(dot(r4.yzw, r7.xyz)); - r3.w = r5.w * r3.w; - r3.w = max(0, r3.w); - r3.w = cmp(0 < r3.w); - r3.w = r3.w ? 1.000000 : 0; - r5.w = dot(cb1[29].xyz, cb1[23].xyz); - r6.w = dot(cb1[29].xyz, r4.yzw); - r5.w = abs(r5.w) / abs(r6.w); - r7.xyz = r4.yzw * r5.www + -cb1[23].xyz; - r5.w = dot(r7.xyz, r7.xyz); - r5.w = sqrt(r5.w); - r8.xyz = r7.xyz / r5.www; - r6.w = dot(cb1[29].xyz, r7.xyz); - r6.w = cmp(abs(r6.w) < 0.00100000005); - r6.w = r6.w ? 1.000000 : 0; - r6.w = r6.w * r5.w; - r7.y = r6.w * cb1[27].z + cb1[27].w; - r6.w = dot(r6.xyz, cb1[29].xyz); - r9.xyz = -cb1[29].xyz * r6.www + r6.xyz; - r7.z = dot(r9.xyz, r9.xyz); - r7.z = rsqrt(r7.z); - r9.xyz = r9.xyz * r7.zzz; - r7.z = dot(r9.xyz, cb1[33].xyz); - r7.w = cmp(0 < r7.z); - r7.z = cmp(r7.z < 0); - r7.z = (int)-r7.w + (int)r7.z; - r7.z = (int)r7.z; - r7.w = saturate(-r7.z); - r8.w = dot(r9.xyz, cb1[31].xyz); - r9.x = 1 + -abs(r8.w); - r9.x = sqrt(r9.x); - r9.y = abs(r8.w) * -0.0187292993 + 0.0742610022; - r9.y = r9.y * abs(r8.w) + -0.212114394; - r9.y = r9.y * abs(r8.w) + 1.57072878; - r9.z = r9.y * r9.x; - r9.z = r9.z * -2 + 3.14159274; - r8.w = cmp(r8.w < -r8.w); - r8.w = r8.w ? r9.z : 0; - r8.w = r9.y * r9.x + r8.w; - r7.z = r8.w * r7.z; - r9.x = r7.z * 0.159154937 + r7.w; - r7.z = r6.w * r6.w; - r7.z = r7.z * -0.222222224 + -0.277777791; - r9.y = r7.z * -r6.w + 0.50000006; - r10.xyzw = t3.SampleBias(s2_s, r9.xy, cb0[108].x).xyzw; - r6.x = saturate(dot(cb1[25].xyz, r6.xyz)); - r6.x = saturate(r6.x * cb1[45].x + cb1[45].z); - r6.yzw = t5.SampleBias(s4_s, r9.xy, cb0[108].x).xyz; - r6.yzw = cb1[41].xyz * r6.yzw; - r6.yzw = r10.xyz * r6.xxx + r6.yzw; - r6.yzw = r6.yzw * r3.www; - r7.z = dot(r8.xyz, cb1[33].xyz); - r7.w = cmp(0 < r7.z); - r7.z = cmp(r7.z < 0); - r7.z = (int)-r7.w + (int)r7.z; - r7.z = (int)r7.z; - r7.w = dot(cb1[25].xyz, r8.xyz); - r7.w = saturate(-r7.w); - r8.w = saturate(-r7.z); - r9.x = dot(r8.xyz, cb1[31].xyz); - r9.y = 1 + -abs(r9.x); - r9.y = sqrt(r9.y); - r9.z = abs(r9.x) * -0.0187292993 + 0.0742610022; - r9.z = r9.z * abs(r9.x) + -0.212114394; - r9.z = r9.z * abs(r9.x) + 1.57072878; - r9.w = r9.z * r9.y; - r9.w = r9.w * -2 + 3.14159274; - r9.x = cmp(r9.x < -r9.x); - r9.x = r9.x ? r9.w : 0; - r9.x = r9.z * r9.y + r9.x; - r7.z = r9.x * r7.z; - r7.x = r7.z * 0.159154937 + r8.w; - r9.xyzw = t7.SampleBias(s6_s, r7.xy, cb0[108].x).xyzw; - r9.xyzw = cb1[39].xyzw * r9.xyzw; - r7.x = -r7.w * r7.w + 1; - r7.x = sqrt(r7.x); - r5.w = -r5.w * r7.x + cb1[27].x; - r5.w = cb1[27].y * r5.w; - r5.w = r5.w / cb1[20].z; - r5.w = saturate(1 + r5.w); - r5.w = 1 + -r5.w; - r7.x = dot(cb1[25].xyz, cb1[29].xyz); - r7.x = 0.400000006 + abs(r7.x); - r7.x = min(1, r7.x); - r5.w = r7.x * r5.w; - r9.xyzw = r9.xyzw * r5.wwww; - r7.xzw = r9.xyz * r9.www; - r5.w = saturate(1 + -r7.y); - r5.w = r5.w * r7.y; - r7.y = cmp(0 < r5.w); - r5.w = cmp(r5.w < 0); - r5.w = (int)-r7.y + (int)r5.w; - r5.w = (int)r5.w; - r5.w = saturate(r5.w); - r7.y = dot(r4.yzw, r8.xyz); - r8.x = cmp(0 < -r7.y); - r7.y = cmp(-r7.y < 0); - r7.y = (int)-r8.x + (int)r7.y; - r7.y = (int)r7.y; - r7.y = saturate(r7.y); - r7.y = -1 + r7.y; - r3.w = r3.w * r7.y + 1; - r3.w = r5.w * r3.w; - r7.xyz = r7.xzw * r3.www; - r6.yzw = r6.yzw * r10.www + r7.xyz; - r3.w = saturate(r4.z); - r3.w = -1 + r3.w; - r3.w = cb1[48].w * r3.w + 1; - r5.w = dot(r4.yzw, r4.yzw); - r5.w = max(1.17549435e-38, r5.w); - r5.w = rsqrt(r5.w); - r4.yzw = r5.www * r4.yzw; - r5.w = dot(cb1[25].xyz, cb1[25].xyz); - r5.w = max(1.17549435e-38, r5.w); - r5.w = rsqrt(r5.w); - r7.xyz = cb1[25].xyz * r5.www; - r8.xyz = -cb1[21].xyz + cb0[44].xyz; - r5.w = dot(r4.yzw, r8.xyz); - r7.w = dot(r8.xyz, r8.xyz); - r8.x = -r3.x * r3.x + r7.w; - r8.x = r5.w * r5.w + -r8.x; - r8.y = cmp(0 < r8.x); - r8.x = sqrt(r8.x); - r8.z = -r8.x + -r5.w; - r9.x = max(0, r8.z); - r8.x = r8.x + -r5.w; - r9.y = r8.x + -r9.x; - r8.xz = r8.yy ? r9.xy : 0; - if (r8.y != 0) { - r7.w = -cb1[46].w * cb1[46].w + r7.w; - r7.w = r5.w * r5.w + -r7.w; - r8.y = cmp(0 < r7.w); - r7.w = sqrt(r7.w); - r5.w = -r7.w + -r5.w; - r5.w = max(0, r5.w); - r5.w = r8.y ? r5.w : 0; - r7.w = cmp(0 < r5.w); - r5.w = r5.w + -r8.x; - r5.w = min(r8.z, r5.w); - r5.w = r7.w ? r5.w : r8.z; - r5.w = r8.y ? r5.w : r8.z; - r7.w = cmp(0 < r5.w); - if (r7.w != 0) { - r5.w = r5.w / cb1[46].y; - r7.w = dot(-r4.yzw, r7.xyz); - r8.yzw = cb1[46].zzz * float3(0.000244140625,0.0012673497,0.00266802101); - r9.xyz = r4.yzw * r8.xxx + cb0[44].xyz; - r10.xyz = r5.www * r4.yzw; - r9.xyz = r10.xyz * float3(0.5,0.5,0.5) + r9.xyz; - r10.xyz = float3(0.5,0.5,0.5) * r7.xyz; - r11.xyz = r9.xyz; - r12.xyz = float3(0,0,0); - r8.x = 0; - r9.w = 0; - while (true) { - r10.w = (int)r9.w; - r10.w = cmp(r10.w >= cb1[46].y); - if (r10.w != 0) break; - r13.xyz = -cb1[21].xyz + r11.xyz; - r10.w = dot(r13.xyz, r13.xyz); - r11.w = sqrt(r10.w); - r11.w = -cb1[46].w + r11.w; - r11.w = r11.w * r2.w; - r11.w = cb1[47].y * -r11.w; - r11.w = 1.44269502 * r11.w; - r11.w = exp2(r11.w); - r11.w = r11.w * r5.w; - r11.w = min(3.40282347e+38, r11.w); - r8.x = r11.w + r8.x; - r12.w = dot(r7.xyz, r13.xyz); - r10.w = -r3.x * r3.x + r10.w; - r10.w = r12.w * r12.w + -r10.w; - r13.x = cmp(0 < r10.w); - r10.w = sqrt(r10.w); - r13.y = -r12.w + r10.w; - r10.w = -r12.w + -r10.w; - r10.w = max(0, r10.w); - r10.w = r13.y + -r10.w; - r10.w = r13.x ? r10.w : 0; - r10.w = r10.w / cb1[47].x; - r13.xyz = r10.xyz * r10.www + r11.xyz; - r14.xyz = r13.xyz; - r12.w = 0; - r13.w = 0; - while (true) { - r14.w = (int)r13.w; - r14.w = cmp(r14.w >= cb1[47].x); - if (r14.w != 0) break; - r15.xyz = -cb1[21].xyz + r14.xyz; - r16.xyz = r7.xyz * r10.www + r14.xyz; - r14.w = dot(r15.xyz, r15.xyz); - r14.w = sqrt(r14.w); - r14.w = -cb1[46].w + r14.w; - r14.w = max(0, r14.w); - r14.w = r14.w * r2.w; - r14.w = cb1[47].y * -r14.w; - r14.w = 1.44269502 * r14.w; - r14.w = exp2(r14.w); - r14.w = r14.w + r12.w; - r15.x = (int)r13.w + 1; - r14.xyz = r16.xyz; - r12.w = r14.w; - r13.w = r15.x; - continue; - } - r10.w = r12.w * r10.w + r8.x; - r13.xyz = r10.www * r8.yzw; - r13.xyz = float3(-1.44269502,-1.44269502,-1.44269502) * r13.xyz; - r13.xyz = exp2(r13.xyz); - r12.xyz = r13.xyz * r11.www + r12.xyz; - r11.xyz = r4.yzw * r5.www + r11.xyz; - r9.w = (int)r9.w + 1; - } - r2.w = r7.w * r7.w + 1; - r2.w = 0.0596831031 * r2.w; - r4.yzw = r12.xyz * r2.www; - r4.yzw = r4.yzw * r8.yzw; - } else { - r4.yzw = float3(0,0,0); - } - } else { - r4.yzw = float3(0,0,0); - } - r7.xyw = cb1[47].zzz * r4.zwy; - r2.w = cmp(r7.x >= r7.y); - r2.w = r2.w ? 1.000000 : 0; - r8.xy = r7.yx; - r8.zw = float2(-1,0.666666687); - r9.xy = r4.zw * cb1[47].zz + -r8.xy; - r9.zw = float2(1,-1); - r8.xyzw = r2.wwww * r9.xyzw + r8.xyzw; - r2.w = cmp(r7.w >= r8.x); - r2.w = r2.w ? 1.000000 : 0; - r7.xyz = r8.xyw; - r8.xyw = r7.wyx; - r8.xyzw = r8.xyzw + -r7.xyzw; - r7.xyzw = r2.wwww * r8.xyzw + r7.xyzw; - r2.w = min(r7.w, r7.y); - r2.w = r7.x + -r2.w; - r3.x = r7.w + -r7.y; - r4.y = r2.w * 6 + 9.99999975e-05; - r3.x = r3.x / r4.y; - r3.x = r7.z + r3.x; - r3.x = cb1[47].w + abs(r3.x); - r4.yzw = float3(1,0.666666687,0.333333343) + r3.xxx; - r4.yzw = frac(r4.yzw); - r4.yzw = r4.yzw * float3(6,6,6) + float3(-3,-3,-3); - r4.yzw = saturate(float3(-1,-1,-1) + abs(r4.yzw)); - r3.x = 9.99999975e-05 + r7.x; - r2.w = r2.w / r3.x; - r4.yzw = float3(-1,-1,-1) + r4.yzw; - r4.yzw = r2.www * r4.yzw + float3(1,1,1); - r7.yzw = r4.yzw * r7.xxx; - r6.yzw = cb1[37].xyz * r6.yzw; - r7.yzw = r7.yzw * r6.xxx; - r4.yzw = r4.yzw * r7.xxx + -r7.yzw; - r4.yzw = cb1[48].yyy * r4.yzw + r7.yzw; - r4.yzw = r4.yzw * r3.www; - r4.yzw = r6.yzw * r3.www + r4.yzw; - r2.w = dot(r4.yzw, float3(0.212672904,0.715152204,0.0721750036)); - r4.yzw = r4.yzw + -r2.www; - r4.yzw = cb0[186].www * r4.yzw + r2.www; - r2.xyz = r4.yzw * cb0[186].xyz + r2.xyz; - } - if (r3.z != 0) { - r2.w = 1 / cb1[49].x; - r3.x = cb1[49].w + cb1[49].x; - r0.w = rsqrt(r0.w); - r0.xzw = r0.xyz * r0.www; - r3.z = dot(r0.xzw, cb1[24].xyz); - r3.w = cb1[28].x * cb1[28].x + -1; - r3.w = r3.z * r3.z + r3.w; - r4.y = max(0, r3.w); - r4.y = sqrt(r4.y); - r3.z = -r4.y + r3.z; - r4.yzw = r0.xzw * r3.zzz + -cb1[24].xyz; - r4.yzw = r4.yzw / cb1[28].xxx; - r3.z = dot(r4.yzw, cb1[30].xyz); - r6.xyz = -cb1[30].xyz * r3.zzz + r4.yzw; - r5.w = dot(r6.xyz, r6.xyz); - r5.w = rsqrt(r5.w); - r6.xyz = r6.xyz * r5.www; - r5.w = dot(r6.xyz, cb1[34].xyz); - r6.w = cmp(0 < r5.w); - r5.w = cmp(r5.w < 0); - r5.w = (int)-r6.w + (int)r5.w; - r5.w = (int)r5.w; - r6.w = saturate(-r5.w); - r6.x = dot(r6.xyz, cb1[32].xyz); - r6.y = 1 + -abs(r6.x); - r6.y = sqrt(r6.y); - r6.z = abs(r6.x) * -0.0187292993 + 0.0742610022; - r6.z = r6.z * abs(r6.x) + -0.212114394; - r6.z = r6.z * abs(r6.x) + 1.57072878; - r7.x = r6.z * r6.y; - r7.x = r7.x * -2 + 3.14159274; - r6.x = cmp(r6.x < -r6.x); - r6.x = r6.x ? r7.x : 0; - r6.x = r6.z * r6.y + r6.x; - r5.w = r6.x * r5.w; - r6.x = r5.w * 0.159154937 + r6.w; - r5.w = r3.z * r3.z; - r5.w = r5.w * -0.222222224 + -0.277777791; - r6.y = r5.w * -r3.z + 0.50000006; - r7.xyzw = t4.SampleBias(s3_s, r6.xy, cb0[108].x).xyzw; - r3.z = saturate(dot(cb1[26].xyz, r4.yzw)); - r3.z = saturate(r3.z * cb1[45].y + cb1[45].w); - r4.yzw = t6.SampleBias(s5_s, r6.xy, cb0[108].x).xyz; - r4.yzw = cb1[42].xyz * r4.yzw; - r4.yzw = r7.xyz * r3.zzz + r4.yzw; - r5.w = dot(cb1[24].xyz, cb1[24].xyz); - r5.w = rsqrt(r5.w); - r6.xyz = cb1[24].xyz * r5.www; - r5.w = saturate(dot(r0.xzw, r6.xyz)); - r3.w = r5.w * r3.w; - r3.w = max(0, r3.w); - r3.w = cmp(0 < r3.w); - r3.w = r3.w ? 1.000000 : 0; - r4.yzw = r4.yzw * r3.www; - r4.yzw = r4.yzw * r7.www; - r3.w = saturate(r0.z); - r3.w = -1 + r3.w; - r3.w = cb1[51].w * r3.w + 1; - r5.w = dot(r0.xzw, r0.xzw); - r5.w = max(1.17549435e-38, r5.w); - r5.w = rsqrt(r5.w); - r0.xzw = r5.www * r0.xzw; - r5.w = dot(cb1[26].xyz, cb1[26].xyz); - r5.w = max(1.17549435e-38, r5.w); - r5.w = rsqrt(r5.w); - r6.xyz = cb1[26].xyz * r5.www; - r7.xyz = -cb1[22].xyz + cb0[44].xyz; - r5.w = dot(r0.xzw, r7.xyz); - r6.w = dot(r7.xyz, r7.xyz); - r7.x = -r3.x * r3.x + r6.w; - r7.x = r5.w * r5.w + -r7.x; - r7.y = cmp(0 < r7.x); - r7.x = sqrt(r7.x); - r7.z = -r7.x + -r5.w; - r8.x = max(0, r7.z); - r7.x = r7.x + -r5.w; - r8.y = r7.x + -r8.x; - r7.xz = r7.yy ? r8.xy : 0; - if (r7.y != 0) { - r6.w = -cb1[49].w * cb1[49].w + r6.w; - r6.w = r5.w * r5.w + -r6.w; - r7.y = cmp(0 < r6.w); - r6.w = sqrt(r6.w); - r5.w = -r6.w + -r5.w; - r5.w = max(0, r5.w); - r5.w = r7.y ? r5.w : 0; - r6.w = cmp(0 < r5.w); - r5.w = r5.w + -r7.x; - r5.w = min(r7.z, r5.w); - r5.w = r6.w ? r5.w : r7.z; - r5.w = r7.y ? r5.w : r7.z; - r6.w = cmp(0 < r5.w); - if (r6.w != 0) { - r5.w = r5.w / cb1[49].y; - r6.w = dot(-r0.xzw, r6.xyz); - r7.yzw = cb1[49].zzz * float3(0.000244140625,0.0012673497,0.00266802101); - r8.xyz = r0.xzw * r7.xxx + cb0[44].xyz; - r9.xyz = r5.www * r0.xzw; - r8.xyz = r9.xyz * float3(0.5,0.5,0.5) + r8.xyz; - r9.xyz = float3(0.5,0.5,0.5) * r6.xyz; - r10.xyz = r8.xyz; - r11.xyz = float3(0,0,0); - r7.x = 0; - r8.w = 0; - while (true) { - r9.w = (int)r8.w; - r9.w = cmp(r9.w >= cb1[49].y); - if (r9.w != 0) break; - r12.xyz = -cb1[22].xyz + r10.xyz; - r9.w = dot(r12.xyz, r12.xyz); - r10.w = sqrt(r9.w); - r10.w = -cb1[49].w + r10.w; - r10.w = r10.w * r2.w; - r10.w = cb1[50].y * -r10.w; - r10.w = 1.44269502 * r10.w; - r10.w = exp2(r10.w); - r10.w = r10.w * r5.w; - r10.w = min(3.40282347e+38, r10.w); - r7.x = r10.w + r7.x; - r11.w = dot(r6.xyz, r12.xyz); - r9.w = -r3.x * r3.x + r9.w; - r9.w = r11.w * r11.w + -r9.w; - r12.x = cmp(0 < r9.w); - r9.w = sqrt(r9.w); - r12.y = -r11.w + r9.w; - r9.w = -r11.w + -r9.w; - r9.w = max(0, r9.w); - r9.w = r12.y + -r9.w; - r9.w = r12.x ? r9.w : 0; - r9.w = r9.w / cb1[50].x; - r12.xyz = r9.xyz * r9.www + r10.xyz; - r13.xyz = r12.xyz; - r11.w = 0; - r12.w = 0; - while (true) { - r13.w = (int)r12.w; - r13.w = cmp(r13.w >= cb1[50].x); - if (r13.w != 0) break; - r14.xyz = -cb1[22].xyz + r13.xyz; - r15.xyz = r6.xyz * r9.www + r13.xyz; - r13.w = dot(r14.xyz, r14.xyz); - r13.w = sqrt(r13.w); - r13.w = -cb1[49].w + r13.w; - r13.w = max(0, r13.w); - r13.w = r13.w * r2.w; - r13.w = cb1[50].y * -r13.w; - r13.w = 1.44269502 * r13.w; - r13.w = exp2(r13.w); - r13.w = r13.w + r11.w; - r14.x = (int)r12.w + 1; - r13.xyz = r15.xyz; - r11.w = r13.w; - r12.w = r14.x; - continue; - } - r9.w = r11.w * r9.w + r7.x; - r12.xyz = r9.www * r7.yzw; - r12.xyz = float3(-1.44269502,-1.44269502,-1.44269502) * r12.xyz; - r12.xyz = exp2(r12.xyz); - r11.xyz = r12.xyz * r10.www + r11.xyz; - r10.xyz = r0.xzw * r5.www + r10.xyz; - r8.w = (int)r8.w + 1; - } - r0.x = r6.w * r6.w + 1; - r0.x = 0.0596831031 * r0.x; - r0.xzw = r11.xyz * r0.xxx; - r0.xzw = r0.xzw * r7.yzw; - } else { - r0.xzw = float3(0,0,0); - } - } else { - r0.xzw = float3(0,0,0); - } - r6.xyw = cb1[50].zzz * r0.zwx; - r0.x = cmp(r6.x >= r6.y); - r0.x = r0.x ? 1.000000 : 0; - r7.xy = r6.yx; - r7.zw = float2(-1,0.666666687); - r8.xy = r0.zw * cb1[50].zz + -r7.xy; - r8.zw = float2(1,-1); - r7.xyzw = r0.xxxx * r8.xyzw + r7.xyzw; - r0.x = cmp(r6.w >= r7.x); - r0.x = r0.x ? 1.000000 : 0; - r6.xyz = r7.xyw; - r7.xyw = r6.wyx; - r7.xyzw = r7.xyzw + -r6.xyzw; - r6.xyzw = r0.xxxx * r7.xyzw + r6.xyzw; - r0.x = min(r6.w, r6.y); - r0.x = r6.x + -r0.x; - r0.z = r6.w + -r6.y; - r0.w = r0.x * 6 + 9.99999975e-05; - r0.z = r0.z / r0.w; - r0.z = r6.z + r0.z; - r0.z = cb1[50].w + abs(r0.z); - r6.yzw = float3(1,0.666666687,0.333333343) + r0.zzz; - r6.yzw = frac(r6.yzw); - r6.yzw = r6.yzw * float3(6,6,6) + float3(-3,-3,-3); - r6.yzw = saturate(float3(-1,-1,-1) + abs(r6.yzw)); - r0.z = 9.99999975e-05 + r6.x; - r0.x = r0.x / r0.z; - r6.yzw = float3(-1,-1,-1) + r6.yzw; - r0.xzw = r0.xxx * r6.yzw + float3(1,1,1); - r6.yzw = r0.xzw * r6.xxx; - r4.yzw = cb1[38].xyz * r4.yzw; - r6.yzw = r6.yzw * r3.zzz; - r0.xzw = r0.xzw * r6.xxx + -r6.yzw; - r0.xzw = cb1[51].yyy * r0.xzw + r6.yzw; - r0.xzw = r0.xzw * r3.www; - r0.xzw = r4.yzw * r3.www + r0.xzw; - r2.xyz = r2.xyz + r0.xzw; - } - r0.xzw = r5.xyz * r3.yyy + -r2.xyz; - r0.xzw = r4.xxx * r0.xzw + r2.xyz; - r2.x = v1.y * cb0[156].w + cb0[157].w; - r2.y = r1.x * cb0[154].w + -cb0[153].w; - r2.xy = max(float2(0.00999999978,0), r2.xy); - r2.z = -1.44269502 * r2.x; - r2.z = exp2(r2.z); - r2.z = 1 + -r2.z; - r2.x = r2.z / r2.x; - r2.z = v1.y * cb0[156].w + cb0[158].w; - r2.z = 1.44269502 * r2.z; - r2.z = exp2(r2.z); - r2.x = r2.x * r2.z; - r2.x = -r2.y * r2.x; - r2.xyz = cb0[155].xyz * r2.xxx; - r2.xyz = float3(1.44269502,1.44269502,1.44269502) * r2.xyz; - r2.xyz = exp2(r2.xyz); - r2.w = dot(r1.yzw, cb0[154].xyz); - r3.x = cb0[155].w * cb0[155].w + 1; - r3.y = dot(r2.ww, cb0[155].ww); - r3.x = r3.x + -r3.y; - r3.y = cmp(0 < cb0[163].z); - if (r3.y != 0) { - r4.xy = (uint2)v0.xy; - r4.z = 7 & asint(cb0[108].w); - r3.yzw = mad((int3)r4.xyz, int3(0x19660d,0x19660d,0x19660d), int3(0x3c6ef35f,0x3c6ef35f,0x3c6ef35f)); - r3.y = mad((int)r3.z, (int)r3.w, (int)r3.y); - r3.z = mad((int)r3.w, (int)r3.y, (int)r3.z); - r3.w = mad((int)r3.y, (int)r3.z, (int)r3.w); - r5.x = mad((int)r3.z, (int)r3.w, (int)r3.y); - r6.x = -cb0[0].z; - r6.y = -cb0[1].z; - r6.z = -cb0[2].z; - r1.y = dot(r1.yzw, r6.xyz); - r1.z = cmp(5.96046448e-08 < r1.y); - r1.y = 1 / r1.y; - r1.y = r1.z ? r1.y : 0; - r1.y = cb0[163].w * r1.y; - r1.z = 1 / r1.x; - r1.w = r1.y * r1.z; - r3.y = r1.w * r0.y + cb0[44].y; - r1.w = -r1.w * r0.y + r0.y; - r4.z = cb0[159].z * r1.w; - r1.w = cb0[162].x * r1.w; - r1.w = max(-127, r1.w); - r4.w = -cb0[159].x + r3.y; - r4.w = cb0[159].z * r4.w; - r4.zw = max(float2(-127,-127), r4.zw); - r4.w = exp2(-r4.w); - r4.w = cb0[159].y * r4.w; - r5.z = cmp(5.96046448e-08 < abs(r4.z)); - r5.w = exp2(-r4.z); - r5.w = 1 + -r5.w; - r5.w = r5.w / r4.z; - r4.z = -r4.z * 0.240226507 + 0.693147182; - r4.z = r5.z ? r5.w : r4.z; - r3.y = -cb0[162].z + r3.y; - r3.y = cb0[162].x * r3.y; - r3.y = max(-127, r3.y); - r3.y = exp2(-r3.y); - r3.y = cb0[162].y * r3.y; - r5.z = cmp(5.96046448e-08 < abs(r1.w)); - r5.w = exp2(-r1.w); - r5.w = 1 + -r5.w; - r5.w = r5.w / r1.w; - r1.w = -r1.w * 0.240226507 + 0.693147182; - r1.w = r5.z ? r5.w : r1.w; - r1.w = r3.y * r1.w; - r1.w = r4.w * r4.z + r1.w; - r1.y = -r1.y * r1.z + 1; - r1.y = r1.y * r1.x; - r1.y = r1.w * r1.y; - r1.y = exp2(-r1.y); - r1.y = min(1, r1.y); - r1.y = max(cb0[161].w, r1.y); - r1.zw = saturate(r1.xx * cb0[160].yw + cb0[160].xz); - r1.y = r1.y + r1.z; - r1.y = r1.y + r1.w; - r1.y = min(1, r1.y); - r1.zw = (uint2)r4.xy; - r5.y = mad((int)r3.w, (int)r5.x, (int)r3.z); - r3.yz = (uint2)r5.xy >> int2(16,16); - r3.yz = (uint2)r3.yz; - r3.yz = r3.yz * float2(3.05180438e-05,3.05180438e-05) + float2(-1,-1); - r1.zw = r3.yz * cb0[167].ww + r1.zw; - r4.xy = cb0[165].xy * r1.zw; - r1.z = v0.w * cb0[164].x + cb0[164].y; - r1.z = log2(r1.z); - r1.z = cb0[164].z * r1.z; - r4.z = r1.z / cb0[163].z; - r4.xyzw = t0.SampleLevel(s0_s, r4.xyz, 0).xyzw; - r1.z = -cb0[166].z + v0.w; - r1.z = saturate(1000000 * r1.z); - r4.xyzw = float4(-0,-0,-0,-1) + r4.xyzw; - r4.xyzw = r1.zzzz * r4.xyzw + float4(0,0,0,1); - r1.z = 1 + -r1.y; - r3.yzw = cb0[161].xyz * r1.zzz; - r3.yzw = r3.yzw * r4.www + r4.xyz; - r1.y = r4.w * r1.y; - } else { - r1.z = cb0[159].z * r0.y; - r0.y = cb0[162].x * r0.y; - r0.y = max(-127, r0.y); - r1.w = -cb0[159].x + cb0[44].y; - r1.w = cb0[159].z * r1.w; - r1.zw = max(float2(-127,-127), r1.zw); - r1.w = exp2(-r1.w); - r1.w = cb0[159].y * r1.w; - r4.x = cmp(5.96046448e-08 < abs(r1.z)); - r4.y = exp2(-r1.z); - r4.y = 1 + -r4.y; - r4.y = r4.y / r1.z; - r1.z = -r1.z * 0.240226507 + 0.693147182; - r1.z = r4.x ? r4.y : r1.z; - r4.x = -cb0[162].z + cb0[44].y; - r4.x = cb0[162].x * r4.x; - r4.x = max(-127, r4.x); - r4.x = exp2(-r4.x); - r4.x = cb0[162].y * r4.x; - r4.y = cmp(5.96046448e-08 < abs(r0.y)); - r4.z = exp2(-r0.y); - r4.z = 1 + -r4.z; - r4.z = r4.z / r0.y; - r0.y = -r0.y * 0.240226507 + 0.693147182; - r0.y = r4.y ? r4.z : r0.y; - r0.y = r4.x * r0.y; - r0.y = r1.w * r1.z + r0.y; - r0.y = r0.y * r1.x; - r0.y = exp2(-r0.y); - r0.y = min(1, r0.y); - r0.y = max(cb0[161].w, r0.y); - r1.xz = saturate(r1.xx * cb0[160].yw + cb0[160].xz); - r0.y = r1.x + r0.y; - r0.y = r0.y + r1.z; - r1.y = min(1, r0.y); - r0.y = 1 + -r1.y; - r3.yzw = cb0[161].xyz * r0.yyy; - } - r0.y = dot(r0.xzw, float3(0.212672904,0.715152204,0.0721750036)); - r0.xzw = r0.xzw + -r0.yyy; - r0.xyz = cb0[186].www * r0.xzw + r0.yyy; - r0.xyz = cb0[186].xyz * r0.xyz; - r1.xzw = r2.xyz * r1.yyy; - r0.w = r2.w * r2.w + 1; - r0.w = 0.0596831031 * r0.w; - r4.xyz = cb0[156].xyz * r0.www + cb0[158].xyz; - r0.w = -cb0[155].w * cb0[155].w + 1; - r2.w = 12.566371 * r3.x; - r3.x = sqrt(r3.x); - r2.w = r3.x * r2.w; - r2.w = max(0.00100000005, r2.w); - r0.w = r0.w / r2.w; - r4.xyz = saturate(cb0[157].xyz * r0.www + r4.xyz); - r4.xyz = float3(255,255,255) * r4.xyz; - r2.xyz = float3(1,1,1) + -r2.xyz; - r2.xyz = r4.xyz * r2.xyz; - r2.xyz = r2.xyz * r1.yyy + r3.yzw; - o0.xyz = r0.xyz * r1.xzw + r2.xyz; - - // ========================================================================== - // SKYBOX DESATURATION (50%) ??? Tech Test Look - // ========================================================================== - if (TECH_TEST_LOOK > 0.5f) { - float skyboxLuma = dot(o0.xyz, float3(0.2126f, 0.7152f, 0.0722f)); - o0.xyz = lerp(o0.xyz, float3(skyboxLuma, skyboxLuma, skyboxLuma), 0.5f); - } - - r0.x = max(9.99999994e-09, v3.z); - r0.xy = v3.xy / r0.xx; - r0.z = max(9.99999994e-09, v4.z); - r0.zw = v4.xy / r0.zz; - r0.xy = r0.xy + -r0.zw; - r1.xy = float2(0.5,-0.5) * r0.xy; - r1.xy = sqrt(abs(r1.xy)); - r1.xy = sqrt(r1.xy); - r0.z = -r0.y; - r0.yw = cmp(float2(0,0) < r0.xz); - r0.xz = cmp(r0.xz < float2(0,0)); - r0.xy = (int2)-r0.yw + (int2)r0.xz; - r0.xy = (int2)r0.xy; - r0.xy = r1.xy * r0.xy; - o1.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); - o0.w = 1; - o1.zw = float2(0,0); - return; -} diff --git a/src/games/endfield/others/skybox3_0x98A8BB43.ps_5_0.hlsl b/src/games/endfield/others/skybox3_0x98A8BB43.ps_5_0.hlsl new file mode 100644 index 0000000000..250eeae6c3 --- /dev/null +++ b/src/games/endfield/others/skybox3_0x98A8BB43.ps_5_0.hlsl @@ -0,0 +1,708 @@ +#include "../shared.h" + +// ============================================================================ +// SKYBOX / SKY RENDERING SHADER +// ============================================================================ +// Textures: +// t0: 3D LUT for volumetric fog/scattering +// t1: Environment/fallback sky cubemap lookup +// t2: Main skybox texture (4096x2048 equirectangular) +// t3: Reflection probe 1 texture +// t4: Reflection probe 2 texture +// t5: Reflection probe 1 detail/tint +// t6: Reflection probe 2 detail/tint +// ============================================================================ + +Texture2D t7 : register(t7); + +Texture2D t6 : register(t6); + +Texture2D t5 : register(t5); + +Texture2D t4 : register(t4); + +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture3D t0 : register(t0); + +SamplerState s6_s : register(s6); + +SamplerState s5_s : register(s5); + +SamplerState s4_s : register(s4); + +SamplerState s3_s : register(s3); + +SamplerState s2_s : register(s2); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb2 : register(b2) +{ + float4 cb2[45]; +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[105]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[45]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float3 v1 : TEXCOORD0, + float2 v2 : TEXCOORD1, + float3 v3 : TEXCOORD2, + float3 v4 : TEXCOORD3, + float3 v5 : TEXCOORD4, + out float4 o0 : SV_Target0, + out float4 o1 : SV_Target1) +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10; + uint4 bitmask, uiDest; + float4 fDest; + + // ========================================================================== + // VIEW DIRECTION CALCULATION + // ========================================================================== + r0.xyz = -cb0[44].xyz + v1.xyz; + r0.w = dot(r0.xyz, r0.xyz); + r1.x = max(9.99999994e-009, r0.w); + r1.x = rsqrt(r1.x); + r1.yzw = r1.xxx * r0.xyz; + r2.x = r1.x * r0.w; + // ========================================================================== + // OCTAHEDRAL / CUBEMAP UV MAPPING FOR t1 (fallback environment) + // ========================================================================== + r2.y = dot(abs(r1.yzw), float3(1,1,1)); + r2.y = 1 / r2.y; + r2.zw = r2.yy * r1.yw; + r2.z = r2.z + r2.w; + r2.y = r1.y * r2.y + -r2.w; + r3.xy = float2(1,1) + r2.zy; + r2.yz = float2(0.5,0.5) * r3.xy; + r2.yzw = t1.SampleLevel(s0_s, r2.yz, 0).xyz; + r3.x = saturate(r1.z * 10 + 1); + // ========================================================================== + // PROCEDURAL SUN DISK CALCULATION + // ========================================================================== + // cb2[44].xyz = sun direction + // cb2[43].x = sun size/falloff exponent + // cb2[42].xyz = sun color, cb2[42].w = sun intensity + r3.y = saturate(dot(-cb2[44].xyz, -r1.yzw)); // Sun-view alignment (1 = looking at sun) + r3.y = log2(r3.y); + // Sun size adjustment: multiply exponent to shrink disk (5.0 = ~80% smaller) + float sunSizeMultiplier = (SUN_INTENSITY > 0.5f) ? 5.0f : 1.0f; + r3.y = cb2[43].x * sunSizeMultiplier * r3.y; // Apply sun size exponent + r3.y = exp2(r3.y); + r3.z = r3.y * r3.y + 1; // Soft falloff numerator + r3.y = -r3.y * 1.98000002 + 1.98010004; // Soft falloff denominator + r3.w = log2(cb2[42].w); // Sun intensity + r3.zw = float2(0.0100164423,0.649999976) * r3.zw; + r3.w = exp2(r3.w); + r3.w = 8 * r3.w; + r3.y = log2(r3.y); + r3.y = r3.w * r3.y; + r3.y = exp2(r3.y); + r3.y = max(9.99999975e-005, r3.y); + r3.y = r3.z / r3.y; // Final sun disk intensity + // ========================================================================== + // EQUIRECTANGULAR SKYBOX UV CALCULATION (for t2: 4096x2048) + // ========================================================================== + r3.z = r1.y / r1.w; + r3.w = cmp(abs(r3.z) < 1); + r4.x = 1 / abs(r3.z); + r4.x = r3.w ? abs(r3.z) : r4.x; + r4.y = r4.x * r4.x; + r4.z = r4.y * 0.0872929022 + -0.301894993; + r4.y = r4.z * r4.y + 1; + r4.z = r4.y * r4.x; + r4.x = -r4.y * r4.x + 1.57079637; + r3.w = r3.w ? r4.z : r4.x; + r4.x = abs(r1.z) * 0.0468878001 + -0.203471005; + r4.x = r4.x * abs(r1.z) + 1.57079601; + r4.y = 1 + -abs(r1.z); + r4.y = sqrt(r4.y); + r4.z = r4.x * r4.y; + r3.z = cmp(r3.z < 0); + r3.z = r3.z ? -r3.w : r3.w; + r5.xy = cmp(r1.yz >= float2(0,0)); + r3.w = r5.x ? 3.1415925 : -3.1415925; + r4.w = cmp(r1.w < 0); + r4.w = r4.w ? 1.000000 : 0; + r6.x = r3.w * r4.w + r3.z; + r3.z = -r4.x * r4.y + 3.14159274; + r3.z = r5.y ? r4.z : r3.z; + r6.y = 1.57079637 + -r3.z; + r3.zw = r6.xy * float2(0.159099996,0.318300009) + float2(0.5,0.5); + r3.z = -cb2[41].w * 0.00277777785 + r3.z; + r4.x = 1 + r3.z; + r4.y = r3.w * 2 + -1; + // ========================================================================== + // SKYBOX TEXTURE SAMPLE (t2: 4096x2048 equirectangular) + // ========================================================================== + r4.xyzw = t2.SampleBias(s1_s, r4.xy, cb1[26].x).xyzw; + r5.xzw = float3(-0.5,-0.5,-0.5) + r4.xyz; + r4.xyz = r5.xzw * cb2[40].yyy + float3(0.5,0.5,0.5); + r6.xyzw = cb2[38].xyzw * r4.xyzw; + r3.z = max(r6.x, r6.y); + r4.xyzw = -r4.xyzw * cb2[38].xyzw + r3.zzzz; + r4.xyzw = cb2[40].xxxx * r4.xyzw + r6.xyzw; + r4.xyzw = cb2[39].xyzw * r4.xyzw; + r3.z = r5.y ? 1.000000 : 0; + r5.x = r4.w * r3.z; + r5.x = saturate(r5.x); + // ========================================================================== + // SUN DISK BLENDING + // ========================================================================== + // Smoothstep for sun edge falloff + r3.w = -0.5 + r3.y; + r3.w = saturate(r3.w + r3.w); + r4.w = r3.w * -2 + 3; + r3.w = r3.w * r3.w; + r3.w = r4.w * r3.w; + r4.w = r3.w * r3.y; + r3.y = -r3.w * r3.y + r3.y; + r3.y = cb2[43].y * r3.y + r4.w; // Sun brightness + r5.yzw = cb2[42].xyz * r3.yyy; // Apply sun color + r5.yzw = cb2[43].www * r5.yzw; // Sun intensity multiplier + r5.yzw = cb2[44].www * r5.yzw; // Sun shadow/occlusion + r5.yzw = max(float3(0,0,0), r5.yzw); + // HDR Sun toggle + if (SUN_INTENSITY > 0.5f) { + // Calculate sun-view alignment (1 = looking directly at sun center) + float sunDot = saturate(dot(-cb2[44].xyz, -r1.yzw)); + + // === HORIZON REDDENING === + // Sun direction Y component indicates height (-1 = below, 0 = horizon, 1 = zenith) + float sunHeight = saturate(cb2[44].y + 0.1f); // Shift so effect starts slightly above horizon + + // Warm shift when sun is low (more red/orange near horizon) + float3 horizonTint = lerp(float3(1.0f, 0.6f, 0.3f), // Low sun: warm orange + float3(1.0f, 0.95f, 0.9f), // High sun: nearly white + sunHeight); + + // === LIMB DARKENING === + // Real stars appear darker at edges due to optical depth through atmosphere + // Use a soft power curve - center is brightest, edges darken + float limbDarkening = pow(sunDot, 0.4f); // Subtle darkening toward edges + + // === CHROMATIC SUN EDGE === + // Core is white-hot, edges transition to yellow/orange + float3 sunCoreColor = float3(1.0f, 1.0f, 1.0f); // White-hot center + float3 sunEdgeColor = float3(1.0f, 0.85f, 0.6f); // Warm yellow edge + + // Blend from edge color to core color based on how centered we are + float coreFactor = pow(sunDot, 3.0f); // Sharp transition to white core + float3 chromaticColor = lerp(sunEdgeColor, sunCoreColor, coreFactor); + + // === COMBINE SUN DISK === + // Apply limb darkening and chromatic color to base sun + r5.yzw = r5.yzw * limbDarkening * chromaticColor * horizonTint; + + // Boost the sun intensity for HDR + r5.yzw = r5.yzw * 5.0f; + + // === CORONA GLOW === + // Inner corona (tight glow) + float coronaInner = pow(sunDot, 64.0f); + // Outer corona (wide soft glow) + float coronaOuter = pow(sunDot, 8.0f); + + // Corona colors - also affected by horizon + float3 coronaColorInner = lerp(float3(1.0f, 0.5f, 0.2f), // Warm inner at horizon + float3(1.0f, 0.7f, 0.3f), // Normal inner + sunHeight); + float3 coronaColorOuter = lerp(float3(1.0f, 0.3f, 0.1f), // Deep orange at horizon + float3(1.0f, 0.5f, 0.2f), // Normal outer + sunHeight); + + float3 corona = coronaInner * coronaColorInner * 2.0f + + coronaOuter * coronaColorOuter * 0.5f; + + // Modulate corona by sun color/intensity from game + corona *= cb2[42].xyz * cb2[42].w; + corona *= cb2[44].w; // Sun shadow/occlusion + + // Add corona to sun + r5.yzw += corona; + + // === DESATURATE SUN (50%) === + float sunLuma = dot(r5.yzw, float3(0.2126f, 0.7152f, 0.0722f)); + r5.yzw = lerp(r5.yzw, float3(sunLuma, sunLuma, sunLuma), 0.5f); + + // === BLOOM BOOST === + r5.yzw *= 10.0f; + + } else { + // Vanilla clamp + r5.yzw = min(float3(3,3,3), r5.yzw); + } + + // Blend environment + sun + skybox + r2.yzw = r2.yzw * r3.xxx + r5.yzw; + r3.xyw = r4.xyz * r3.zzz + -r2.yzw; + r2.yzw = r5.xxx * r3.xyw + r2.yzw; + // ========================================================================== + // REFLECTION PROBE 1 (cb2[0].x enables this) + // ========================================================================== + r3.xy = cmp(float2(0.75,0.75) < cb2[0].xy); + if (r3.x != 0) { + r3.x = rsqrt(r0.w); + r5.yzw = r3.xxx * r0.yxz; + r3.x = dot(r5.zyw, cb2[15].xyz); + r3.w = cb2[19].x * cb2[19].x + -1; + r3.w = r3.x * r3.x + r3.w; + r4.w = max(0, r3.w); + r4.w = sqrt(r4.w); + r3.x = -r4.w + r3.x; + r6.xyz = r5.zyw * r3.xxx + -cb2[15].xyz; + r6.xyz = r6.xyz / cb2[19].xxx; + r3.x = dot(cb2[15].xyz, cb2[15].xyz); + r3.x = rsqrt(r3.x); + r7.xyz = cb2[15].xyz * r3.xxx; + r3.x = saturate(dot(r5.zyw, r7.xyz)); + r3.x = r3.w * r3.x; + r3.x = max(0, r3.x); + r3.x = cmp(0 < r3.x); + r3.w = r3.x ? 1.000000 : 0; + r4.w = dot(cb2[21].xyz, cb2[15].xyz); + r6.w = dot(cb2[21].yxz, r5.yzw); + r4.w = abs(r4.w) / abs(r6.w); + r7.xyz = r5.zyw * r4.www + -cb2[15].xyz; + r4.w = dot(r7.xyz, r7.xyz); + r4.w = sqrt(r4.w); + r8.xyz = r7.xyz / r4.www; + r6.w = dot(cb2[21].xyz, r7.xyz); + r6.w = cmp(abs(r6.w) < 0.00100000005); + r6.w = r6.w ? 1.000000 : 0; + r6.w = r6.w * r4.w; + r7.y = r6.w * cb2[19].z + cb2[19].w; + r6.w = dot(r6.xyz, cb2[21].xyz); + r9.xyz = -cb2[21].xyz * r6.www + r6.xyz; + r7.z = dot(r9.xyz, r9.xyz); + r7.z = rsqrt(r7.z); + r9.xyz = r9.xyz * r7.zzz; + r7.z = dot(r9.xyz, cb2[25].xyz); + r7.w = cmp(0 < r7.z); + r7.z = cmp(r7.z < 0); + r7.z = (int)-r7.w + (int)r7.z; + r7.z = (int)r7.z; + r7.w = saturate(-r7.z); + r8.w = dot(r9.xyz, cb2[23].xyz); + r9.x = 1 + -abs(r8.w); + r9.x = sqrt(r9.x); + r9.y = abs(r8.w) * -0.0187292993 + 0.0742610022; + r9.y = r9.y * abs(r8.w) + -0.212114394; + r9.y = r9.y * abs(r8.w) + 1.57072878; + r9.z = r9.y * r9.x; + r9.z = r9.z * -2 + 3.14159274; + r8.w = cmp(r8.w < -r8.w); + r8.w = r8.w ? r9.z : 0; + r8.w = r9.y * r9.x + r8.w; + r7.z = r8.w * r7.z; + r9.x = r7.z * 0.159154937 + r7.w; + r7.z = r6.w * r6.w; + r7.z = r7.z * -0.222222224 + -0.277777791; + r9.y = r7.z * -r6.w + 0.50000006; + r10.xyzw = t3.SampleBias(s2_s, r9.xy, cb1[26].x).xyzw; + r6.x = saturate(dot(cb2[17].xyz, r6.xyz)); + r6.x = saturate(r6.x * cb2[1].x + cb2[1].z); + r6.yzw = t5.SampleBias(s4_s, r9.xy, cb1[26].x).xyz; + r6.yzw = cb2[9].xyz * r6.yzw; + r10.xyz = r10.xyz * r6.xxx + r6.yzw; + r6.xyzw = r10.xyzw * r3.wwww; + r7.z = saturate(1 + -r7.y); + r7.z = r7.z * r7.y; + r7.w = cmp(0 < r7.z); + r7.z = cmp(r7.z < 0); + r7.z = (int)-r7.w + (int)r7.z; + r7.z = (int)r7.z; + r7.z = saturate(r7.z); + r5.z = dot(r5.zyw, r8.xyz); + r5.w = cmp(0 < -r5.z); + r5.z = cmp(-r5.z < 0); + r5.z = (int)-r5.w + (int)r5.z; + r5.z = (int)r5.z; + r5.yz = saturate(r5.yz); + r5.z = -1 + r5.z; + r3.w = r3.w * r5.z + 1; + r3.w = r7.z * r3.w; + r5.z = dot(r8.xyz, cb2[25].xyz); + r5.w = cmp(0 < r5.z); + r5.z = cmp(r5.z < 0); + r5.z = (int)-r5.w + (int)r5.z; + r5.z = (int)r5.z; + r5.w = dot(cb2[17].xyz, r8.xyz); + r5.w = saturate(-r5.w); + r7.z = saturate(-r5.z); + r7.w = dot(r8.xyz, cb2[23].xyz); + r8.x = 1 + -abs(r7.w); + r8.x = sqrt(r8.x); + r8.y = abs(r7.w) * -0.0187292993 + 0.0742610022; + r8.y = r8.y * abs(r7.w) + -0.212114394; + r8.y = r8.y * abs(r7.w) + 1.57072878; + r8.z = r8.y * r8.x; + r8.z = r8.z * -2 + 3.14159274; + r7.w = cmp(r7.w < -r7.w); + r7.w = r7.w ? r8.z : 0; + r7.w = r8.y * r8.x + r7.w; + r5.z = r7.w * r5.z; + r7.x = r5.z * 0.159154937 + r7.z; + r7.xyzw = t7.SampleBias(s6_s, r7.xy, cb1[26].x).xyzw; + r7.xyzw = cb2[7].xyzw * r7.xyzw; + r5.z = -r5.w * r5.w + 1; + r5.z = sqrt(r5.z); + r4.w = -r4.w * r5.z + cb2[19].x; + r4.w = cb2[19].y * r4.w; + r4.w = r4.w / cb2[0].z; + r4.w = saturate(1 + r4.w); + r4.w = 1 + -r4.w; + r5.z = dot(cb2[17].xyz, cb2[21].xyz); + r5.z = 0.400000006 + abs(r5.z); + r5.z = min(1, r5.z); + r4.w = r5.z * r4.w; + r7.xyzw = r7.xyzw * r4.wwww; + r7.xyz = r7.xyz * r7.www; + r7.xyz = r7.xyz * r3.www; + r8.xyz = r6.xyz * r10.www + r7.xyz; + r3.w = r7.w * r3.w; + r3.x = r3.x ? 0 : 1; + r8.w = r3.w * r3.x + r6.w; + r6.xyzw = cb2[5].xyzw * r8.xyzw; + r3.x = -1 + r5.y; + r3.x = cb2[29].w * r3.x + 1; + r7.xyzw = r6.xyzw * r3.xxxx; + r3.w = cmp(cb2[2].x >= 0.5); + r3.w = r3.w ? 1.000000 : 0; + r5.yz = cmp(float2(1.5,0.5) >= cb2[2].xx); + r5.yz = r5.yz ? float2(1,1) : 0; + r3.w = -r3.w * r5.y + 1; + r3.w = -r7.w * r3.w + 1; + r4.w = dot(r7.xyz, float3(0.212672904,0.715152204,0.0721750036)); + r6.xyz = r6.xyz * r3.xxx + -r4.www; + r6.xyz = cb1[104].www * r6.xyz + r4.www; + r6.xyz = cb1[104].xyz * r6.xyz; + r3.x = -r6.w * r3.x + 1; + r3.x = -r3.x * r5.z + 1; + r5.yzw = r6.xyz * r3.xxx; + r2.yzw = r2.yzw * r3.www + r5.yzw; + } + // ========================================================================== + // REFLECTION PROBE 2 (cb2[0].y enables this) + // ========================================================================== + if (r3.y != 0) { + r3.x = rsqrt(r0.w); + r3.xyw = r3.xxx * r0.yxz; + r0.x = dot(r3.yxw, cb2[16].xyz); + r0.z = cb2[20].x * cb2[20].x + -1; + r0.z = r0.x * r0.x + r0.z; + r4.w = max(0, r0.z); + r4.w = sqrt(r4.w); + r0.x = -r4.w + r0.x; + r5.yzw = r3.yxw * r0.xxx + -cb2[16].xyz; + r5.yzw = r5.yzw / cb2[20].xxx; + r0.x = dot(r5.yzw, cb2[22].xyz); + r6.xyz = -cb2[22].xyz * r0.xxx + r5.yzw; + r4.w = dot(r6.xyz, r6.xyz); + r4.w = rsqrt(r4.w); + r6.xyz = r6.xyz * r4.www; + r4.w = dot(r6.xyz, cb2[26].xyz); + r6.w = cmp(0 < r4.w); + r4.w = cmp(r4.w < 0); + r4.w = (int)-r6.w + (int)r4.w; + r4.w = (int)r4.w; + r6.w = saturate(-r4.w); + r6.x = dot(r6.xyz, cb2[24].xyz); + r6.y = 1 + -abs(r6.x); + r6.y = sqrt(r6.y); + r6.z = abs(r6.x) * -0.0187292993 + 0.0742610022; + r6.z = r6.z * abs(r6.x) + -0.212114394; + r6.z = r6.z * abs(r6.x) + 1.57072878; + r7.x = r6.z * r6.y; + r7.x = r7.x * -2 + 3.14159274; + r6.x = cmp(r6.x < -r6.x); + r6.x = r6.x ? r7.x : 0; + r6.x = r6.z * r6.y + r6.x; + r4.w = r6.x * r4.w; + r6.x = r4.w * 0.159154937 + r6.w; + r4.w = r0.x * r0.x; + r4.w = r4.w * -0.222222224 + -0.277777791; + r6.y = r4.w * -r0.x + 0.50000006; + r7.xyzw = t4.SampleBias(s3_s, r6.xy, cb1[26].x).xyzw; + r0.x = saturate(dot(cb2[18].xyz, r5.yzw)); + r0.x = saturate(r0.x * cb2[1].y + cb2[1].w); + r5.yzw = t6.SampleBias(s5_s, r6.xy, cb1[26].x).xyz; + r5.yzw = cb2[10].xyz * r5.yzw; + r7.xyz = r7.xyz * r0.xxx + r5.yzw; + r0.x = dot(cb2[16].xyz, cb2[16].xyz); + r0.x = rsqrt(r0.x); + r5.yzw = cb2[16].xyz * r0.xxx; + r0.x = saturate(dot(r3.yxw, r5.yzw)); + r0.x = r0.z * r0.x; + r0.x = max(0, r0.x); + r0.x = cmp(0 < r0.x); + r0.x = r0.x ? 1.000000 : 0; + r6.xyzw = r7.xyzw * r0.xxxx; + r6.xyz = r6.xyz * r7.www; + r6.xyzw = cb2[6].xyzw * r6.xyzw; + r3.x = saturate(r3.x); + r0.x = -1 + r3.x; + r0.x = cb2[32].w * r0.x + 1; + r7.xyzw = r6.xyzw * r0.xxxx; + r0.z = cmp(cb2[2].y >= 0.5); + r0.z = r0.z ? 1.000000 : 0; + r3.xy = cmp(float2(1.5,0.5) >= cb2[2].yy); + r3.xy = r3.xy ? float2(1,1) : 0; + r0.z = -r0.z * r3.x + 1; + r0.z = -r7.w * r0.z + 1; + r0.x = -r6.w * r0.x + 1; + r0.x = -r0.x * r3.y + 1; + r3.xyw = r7.xyz * r0.xxx; + r2.yzw = r2.yzw * r0.zzz + r3.xyw; + } + // Final skybox blend + r3.xyz = r4.xyz * r3.zzz + -r2.yzw; + r2.yzw = r5.xxx * r3.xyz + r2.yzw; + // ========================================================================== + // ATMOSPHERIC FOG / SCATTERING (Height-based exponential fog) + // ========================================================================== + r0.x = v1.y * cb1[74].w + cb1[75].w; + r0.z = r2.x * cb1[72].w + -cb1[71].w; + r0.xz = max(float2(0.00999999978,0), r0.xz); + r3.x = -1.44269502 * r0.x; + r3.x = exp2(r3.x); + r3.x = 1 + -r3.x; + r0.x = r3.x / r0.x; + r3.x = v1.y * cb1[74].w + cb1[76].w; + r3.x = 1.44269502 * r3.x; + r3.x = exp2(r3.x); + r0.x = r3.x * r0.x; + r0.x = -r0.z * r0.x; + r3.xyz = cb1[73].xyz * r0.xxx; + r3.xyz = float3(1.44269502,1.44269502,1.44269502) * r3.xyz; + r3.xyz = exp2(r3.xyz); + r0.x = dot(r1.yzw, cb1[72].xyz); + r0.z = cb1[73].w * cb1[73].w + 1; + r3.w = dot(r0.xx, cb1[73].ww); + r0.z = -r3.w + r0.z; + // ========================================================================== + // VOLUMETRIC FOG SAMPLING (t0: 3D fog volume) + // ========================================================================== + r3.w = cmp(0 < cb1[83].z); + if (r3.w != 0) { + r4.xy = (uint2)v0.xy; + r4.z = 7 & asint(cb1[26].w); + r5.xyz = mad((int3)r4.xyz, int3(0x19660d,0x19660d,0x19660d), int3(0x3c6ef35f,0x3c6ef35f,0x3c6ef35f)); + r3.w = mad((int)r5.y, (int)r5.z, (int)r5.x); + r4.z = mad((int)r5.z, (int)r3.w, (int)r5.y); + r4.w = mad((int)r3.w, (int)r4.z, (int)r5.z); + r5.x = mad((int)r4.z, (int)r4.w, (int)r3.w); + r6.x = -cb0[0].z; + r6.y = -cb0[1].z; + r6.z = -cb0[2].z; + r3.w = dot(r1.yzw, r6.xyz); + r5.z = cmp(5.96046448e-008 < r3.w); + r3.w = 1 / r3.w; + r3.w = r5.z ? r3.w : 0; + r3.w = cb1[83].w * r3.w; + r5.z = 1 / r2.x; + r5.w = r5.z * r3.w; + r6.x = r5.w * r0.y + cb0[44].y; + r5.w = -r5.w * r0.y + r0.y; + r3.w = -r3.w * r5.z + 1; + r5.z = r3.w * r2.x; + r6.y = cb1[77].z * r5.w; + r5.w = cb1[80].x * r5.w; + r5.w = max(-127, r5.w); + r6.z = -cb1[77].x + r6.x; + r6.z = cb1[77].z * r6.z; + r6.yz = max(float2(-127,-127), r6.yz); + r6.z = exp2(-r6.z); + r6.z = cb1[77].y * r6.z; + r6.w = cmp(5.96046448e-008 < abs(r6.y)); + r7.x = exp2(-r6.y); + r7.x = 1 + -r7.x; + r7.x = r7.x / r6.y; + r6.y = -r6.y * 0.240226507 + 0.693147182; + r6.y = r6.w ? r7.x : r6.y; + r6.x = -cb1[80].z + r6.x; + r6.x = cb1[80].x * r6.x; + r6.x = max(-127, r6.x); + r6.x = exp2(-r6.x); + r6.x = cb1[80].y * r6.x; + r6.w = cmp(5.96046448e-008 < abs(r5.w)); + r7.x = exp2(-r5.w); + r7.x = 1 + -r7.x; + r7.x = r7.x / r5.w; + r5.w = -r5.w * 0.240226507 + 0.693147182; + r5.w = r6.w ? r7.x : r5.w; + r5.w = r6.x * r5.w; + r5.w = r6.z * r6.y + r5.w; + r6.xy = saturate(r2.xx * cb1[78].wy + cb1[78].zx); + r5.z = r5.w * r5.z; + r5.z = exp2(-r5.z); + r5.z = min(1, r5.z); + r5.z = max(cb1[79].w, r5.z); + r5.z = r5.z + r6.y; + r5.z = r5.z + r6.x; + r5.z = min(1, r5.z); + r5.y = mad((int)r4.w, (int)r5.x, (int)r4.z); + r4.zw = (uint2)r5.xy >> int2(16,16); + r4.xyzw = (uint4)r4.xyzw; + r4.zw = r4.zw * float2(3.05180438e-005,3.05180438e-005) + float2(-1,-1); + r4.xy = r4.zw * cb1[87].ww + r4.xy; + r4.xy = cb1[85].xy * r4.xy; + r4.w = v0.w * cb1[84].x + cb1[84].y; + r4.w = log2(r4.w); + r4.w = cb1[84].z * r4.w; + r4.z = r4.w / cb1[83].z; + r4.xyzw = t0.SampleLevel(s0_s, r4.xyz, 0).xyzw; + r5.x = -cb1[86].z + v0.w; + r5.x = saturate(1000000 * r5.x); + r4.xyzw = float4(-0,-0,-0,-1) + r4.xyzw; + r4.xyzw = r5.xxxx * r4.xyzw + float4(0,0,0,1); + r5.x = 1 + -r5.z; + r5.y = saturate(dot(-r1.yzw, cb1[81].xyz)); + r5.y = log2(r5.y); + r5.y = cb1[82].w * r5.y; + r5.y = exp2(r5.y); + r6.yzw = cb1[82].xyz * r5.yyy; + r3.w = r3.w * r2.x + -cb1[81].w; + r3.w = max(0, r3.w); + r3.w = r5.w * r3.w; + r3.w = exp2(-r3.w); + r3.w = min(1, r3.w); + r3.w = 1 + -r3.w; + r6.yzw = r6.yzw * r3.www; + r3.w = 1 + -r6.x; + r6.xyz = r6.yzw * r3.www; + r5.xyw = cb1[79].xyz * r5.xxx + r6.xyz; + r4.xyz = r5.xyw * r4.www + r4.xyz; + r3.w = r4.w * r5.z; + } else { + r4.w = cb1[77].z * r0.y; + r4.w = max(-127, r4.w); + r0.y = cb1[80].x * r0.y; + r0.y = max(-127, r0.y); + r5.x = -cb1[77].x + cb0[44].y; + r5.x = cb1[77].z * r5.x; + r5.x = max(-127, r5.x); + r5.x = exp2(-r5.x); + r5.x = cb1[77].y * r5.x; + r5.y = cmp(5.96046448e-008 < abs(r4.w)); + r5.z = exp2(-r4.w); + r5.z = 1 + -r5.z; + r5.z = r5.z / r4.w; + r4.w = -r4.w * 0.240226507 + 0.693147182; + r4.w = r5.y ? r5.z : r4.w; + r5.y = -cb1[80].z + cb0[44].y; + r5.y = cb1[80].x * r5.y; + r5.y = max(-127, r5.y); + r5.y = exp2(-r5.y); + r5.y = cb1[80].y * r5.y; + r5.z = cmp(5.96046448e-008 < abs(r0.y)); + r5.w = exp2(-r0.y); + r5.w = 1 + -r5.w; + r5.w = r5.w / r0.y; + r0.y = -r0.y * 0.240226507 + 0.693147182; + r0.y = r5.z ? r5.w : r0.y; + r0.y = r5.y * r0.y; + r0.y = r5.x * r4.w + r0.y; + r5.xy = saturate(r2.xx * cb1[78].wy + cb1[78].zx); + r2.x = r0.y * r2.x; + r2.x = exp2(-r2.x); + r2.x = min(1, r2.x); + r2.x = max(cb1[79].w, r2.x); + r2.x = r2.x + r5.y; + r2.x = r2.x + r5.x; + r3.w = min(1, r2.x); + r2.x = 1 + -r3.w; + r1.y = saturate(dot(-r1.yzw, cb1[81].xyz)); + r1.y = log2(r1.y); + r1.y = cb1[82].w * r1.y; + r1.y = exp2(r1.y); + r1.yzw = cb1[82].xyz * r1.yyy; + r0.w = r0.w * r1.x + -cb1[81].w; + r0.w = max(0, r0.w); + r0.y = r0.y * r0.w; + r0.y = exp2(-r0.y); + r0.y = min(1, r0.y); + r0.y = 1 + -r0.y; + r1.xyz = r1.yzw * r0.yyy; + r0.y = 1 + -r5.x; + r1.xyz = r1.xyz * r0.yyy; + r4.xyz = cb1[79].xyz * r2.xxx + r1.xyz; + } + // ========================================================================== + // FINAL COLOR GRADING + // ========================================================================== + // Desaturation based on luminance + r0.y = dot(r2.yzw, float3(0.212672904,0.715152204,0.0721750036)); // Luminance + r1.xyz = r2.yzw + -r0.yyy; + r1.xyz = cb1[104].www * r1.xyz + r0.yyy; // Saturation control + r1.xyz = cb1[104].xyz * r1.xyz; // Color tint/exposure + r2.xyz = r3.xyz * r3.www; + r0.x = r0.x * r0.x + 1; + r0.x = 0.0596831031 * r0.x; + r0.xyw = cb1[74].xyz * r0.xxx + cb1[76].xyz; + r1.w = -cb1[73].w * cb1[73].w + 1; + r2.w = 12.566371 * r0.z; + r0.z = sqrt(r0.z); + r0.z = r2.w * r0.z; + r0.z = max(0.00100000005, r0.z); + r0.z = r1.w / r0.z; + r0.xyz = saturate(cb1[75].xyz * r0.zzz + r0.xyw); + r0.xyz = float3(255,255,255) * r0.xyz; + r3.xyz = float3(1,1,1) + -r3.xyz; + r0.xyz = r3.xyz * r0.xyz; + r0.xyz = r0.xyz * r3.www + r4.xyz; + o0.xyz = r1.xyz * r2.xyz + r0.xyz; + + // ========================================================================== + // SKYBOX DESATURATION (50%) - Tech Test Look + // ========================================================================== + if (TECH_TEST_LOOK > 0.5f) { + float skyboxLuma = dot(o0.xyz, float3(0.2126f, 0.7152f, 0.0722f)); + o0.xyz = lerp(o0.xyz, float3(skyboxLuma, skyboxLuma, skyboxLuma), 0.5f); + } + + // ========================================================================== + // VELOCITY BUFFER OUTPUT (for motion blur / TAA) + // ========================================================================== + r0.x = max(9.99999994e-009, v3.z); + r0.xy = v3.xy / r0.xx; + r0.z = max(9.99999994e-009, v4.z); + r0.zw = v4.xy / r0.zz; + r0.xy = r0.xy + -r0.zw; + r1.xy = float2(0.5,-0.5) * r0.xy; + r1.xy = sqrt(abs(r1.xy)); + r1.xy = sqrt(r1.xy); + r0.z = -r0.y; + r0.yw = cmp(float2(0,0) < r0.xz); + r0.xz = cmp(r0.xz < float2(0,0)); + r0.xy = (int2)-r0.yw + (int2)r0.xz; + r0.xy = (int2)r0.xy; + r0.xy = r1.xy * r0.xy; + o1.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); + o0.w = 1; + o1.zw = float2(0,0); + return; +} diff --git a/src/games/endfield/others/skybox4_0x9D430106.ps_5_0.hlsl b/src/games/endfield/others/skybox4_0x9D430106.ps_5_0.hlsl new file mode 100644 index 0000000000..ffc48e8c64 --- /dev/null +++ b/src/games/endfield/others/skybox4_0x9D430106.ps_5_0.hlsl @@ -0,0 +1,692 @@ +#include "../shared.h" + +// ============================================================================ +// SKYBOX / SKY RENDERING SHADER +// ============================================================================ +// Textures: +// t0: 3D LUT for volumetric fog/scattering +// t1: Environment/fallback sky cubemap lookup +// t2: Main skybox texture (4096x2048 equirectangular) +// t3: Reflection probe 1 texture +// t4: Reflection probe 2 texture +// t5: Reflection probe 1 detail/tint +// t6: Reflection probe 2 detail/tint +// ============================================================================ + +Texture2D t6 : register(t6); + +Texture2D t5 : register(t5); + +Texture2D t4 : register(t4); + +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture3D t0 : register(t0); + +SamplerState s5_s : register(s5); + +SamplerState s4_s : register(s4); + +SamplerState s3_s : register(s3); + +SamplerState s2_s : register(s2); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb2 : register(b2) +{ + float4 cb2[45]; +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[105]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[45]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float3 v1 : TEXCOORD0, + float2 v2 : TEXCOORD1, + float3 v3 : TEXCOORD2, + float3 v4 : TEXCOORD3, + float3 v5 : TEXCOORD4, + out float4 o0 : SV_Target0, + out float4 o1 : SV_Target1) +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8; + uint4 bitmask, uiDest; + float4 fDest; + + // ========================================================================== + // VIEW DIRECTION CALCULATION + // ========================================================================== + r0.xyz = -cb0[44].xyz + v1.xyz; + r0.w = dot(r0.xyz, r0.xyz); + r1.x = max(9.99999994e-009, r0.w); + r1.x = rsqrt(r1.x); + r1.yzw = r1.xxx * r0.xyz; + r2.x = r1.x * r0.w; + // ========================================================================== + // OCTAHEDRAL / CUBEMAP UV MAPPING FOR t1 (fallback environment) + // ========================================================================== + r2.y = dot(abs(r1.yzw), float3(1,1,1)); + r2.y = 1 / r2.y; + r2.zw = r2.yy * r1.yw; + r2.z = r2.z + r2.w; + r2.y = r1.y * r2.y + -r2.w; + r3.xy = float2(1,1) + r2.zy; + r2.yz = float2(0.5,0.5) * r3.xy; + r2.yzw = t1.SampleLevel(s0_s, r2.yz, 0).xyz; + r3.x = 1.57079637 * r1.z; + r3.y = saturate(r1.z * 10 + 1); + // ========================================================================== + // PROCEDURAL SUN DISK CALCULATION + // ========================================================================== + // cb2[44].xyz = sun direction + // cb2[43].x = sun size/falloff exponent + // cb2[42].xyz = sun color, cb2[42].w = sun intensity + r3.z = saturate(dot(-cb2[44].xyz, -r1.yzw)); // Sun-view alignment (1 = looking at sun) + r3.z = log2(r3.z); + // Sun size adjustment: multiply exponent to shrink disk (5.0 = ~80% smaller) + float sunSizeMultiplier = (SUN_INTENSITY > 0.5f) ? 5.0f : 1.0f; + r3.z = cb2[43].x * sunSizeMultiplier * r3.z; // Apply sun size exponent + r3.z = exp2(r3.z); + r3.w = r3.z * r3.z + 1; // Soft falloff numerator + r3.w = 0.0100164423 * r3.w; + r3.z = -r3.z * 1.98000002 + 1.98010004; // Soft falloff denominator + r4.x = log2(cb2[42].w); // Sun intensity + r4.x = 0.649999976 * r4.x; + r4.x = exp2(r4.x); + r4.x = 8 * r4.x; + r3.z = log2(r3.z); + r3.z = r4.x * r3.z; + r3.z = exp2(r3.z); + r3.z = max(9.99999975e-005, r3.z); + r3.z = r3.w / r3.z; // Final sun disk intensity + // ========================================================================== + // EQUIRECTANGULAR SKYBOX UV CALCULATION (for t2: 4096x2048) + // ========================================================================== + r3.w = cb2[41].z * cb1[20].x; + r4.xy = r3.ww * float2(20,20) + float2(0,0.5); + r4.xy = frac(r4.xy); + r4.xy = float2(-0.5,-0.5) + r4.xy; + r3.x = sin(r3.x); + r5.xz = cb2[41].xy * r3.xx; + r5.y = 0; + r3.x = cb2[41].w * 0.0174532942; + sincos(r3.x, r3.x, r6.x); + r7.x = -r3.x; + r7.y = r6.x; + r6.x = dot(r7.yx, r1.yw); + r7.z = r3.x; + r6.z = dot(r7.zy, r1.yw); + r6.y = r1.z; + r7.xyz = r5.xyz * r4.xxx + r6.xyz; + r3.x = dot(r7.xyz, r7.xyz); + r3.x = rsqrt(r3.x); + r7.xyz = r7.xyz * r3.xxx; + r3.x = r7.x / r7.z; + r3.w = cmp(abs(r3.x) < 1); + r4.z = 1 / abs(r3.x); + r4.z = r3.w ? abs(r3.x) : r4.z; + r4.w = r4.z * r4.z; + r5.w = r4.w * 0.0872929022 + -0.301894993; + r4.w = r5.w * r4.w + 1; + r5.w = r4.w * r4.z; + r4.z = -r4.w * r4.z + 1.57079637; + r3.w = r3.w ? r5.w : r4.z; + r4.z = abs(r7.y) * 0.0468878001 + -0.203471005; + r4.z = r4.z * abs(r7.y) + 1.57079601; + r4.w = 1 + -abs(r7.y); + r4.w = sqrt(r4.w); + r5.w = r4.z * r4.w; + r3.x = cmp(r3.x < 0); + r3.x = r3.x ? -r3.w : r3.w; + r7.xy = cmp(r7.xy >= float2(0,0)); + r3.w = r7.x ? 3.1415925 : -3.1415925; + r6.w = cmp(r7.z < 0); + r6.w = r6.w ? 1.000000 : 0; + r8.x = r3.w * r6.w + r3.x; + r3.x = -r4.z * r4.w + 3.14159274; + r3.x = r7.y ? r5.w : r3.x; + r8.y = 1.57079637 + -r3.x; + r7.xy = r8.xy * float2(0.159099996,0.318300009) + float2(0.5,0.5); + r7.z = r7.y * 2 + -1; + // ========================================================================== + // SKYBOX TEXTURE SAMPLE (t2: 4096x2048 equirectangular) + // ========================================================================== + r7.xyzw = t2.SampleBias(s1_s, r7.xz, cb1[26].x).xyzw; + r4.yzw = r5.xyz * r4.yyy + r6.xyz; + r3.x = dot(r4.yzw, r4.yzw); + r3.x = rsqrt(r3.x); + r4.yzw = r4.yzw * r3.xxx; + r3.x = r4.y / r4.w; + r3.w = cmp(abs(r3.x) < 1); + r5.x = 1 / abs(r3.x); + r5.x = r3.w ? abs(r3.x) : r5.x; + r5.y = r5.x * r5.x; + r5.z = r5.y * 0.0872929022 + -0.301894993; + r5.y = r5.z * r5.y + 1; + r5.z = r5.y * r5.x; + r5.x = -r5.y * r5.x + 1.57079637; + r3.w = r3.w ? r5.z : r5.x; + r5.x = abs(r4.z) * 0.0468878001 + -0.203471005; + r5.x = r5.x * abs(r4.z) + 1.57079601; + r5.y = 1 + -abs(r4.z); + r5.y = sqrt(r5.y); + r5.z = r5.x * r5.y; + r3.x = cmp(r3.x < 0); + r3.x = r3.x ? -r3.w : r3.w; + r4.yz = cmp(r4.yz >= float2(0,0)); + r3.w = r4.y ? 3.1415925 : -3.1415925; + r4.y = cmp(r4.w < 0); + r4.y = r4.y ? 1.000000 : 0; + r8.x = r3.w * r4.y + r3.x; + r3.x = -r5.x * r5.y + 3.14159274; + r3.x = r4.z ? r5.z : r3.x; + r8.y = 1.57079637 + -r3.x; + r5.xy = r8.xy * float2(0.159099996,0.318300009) + float2(0.5,0.5); + r5.z = r5.y * 2 + -1; + r5.xyzw = t2.SampleBias(s1_s, r5.xz, cb1[26].x).xyzw; + r3.x = r4.x + r4.x; + r4.xyzw = r5.xyzw + -r7.xyzw; + r4.xyzw = abs(r3.xxxx) * r4.xyzw + r7.xyzw; + r5.xyz = float3(-0.5,-0.5,-0.5) + r4.xyz; + r4.xyz = r5.xyz * cb2[40].yyy + float3(0.5,0.5,0.5); + r5.xyzw = cb2[38].xyzw * r4.xyzw; + r3.x = max(r5.x, r5.y); + r4.xyzw = -r4.xyzw * cb2[38].xyzw + r3.xxxx; + r4.xyzw = cb2[40].xxxx * r4.xyzw + r5.xyzw; + r4.xyzw = cb2[39].xyzw * r4.xyzw; + r3.x = cmp(r6.y >= 0); + r3.x = r3.x ? 1.000000 : 0; + r5.x = r4.w * r3.x; + r5.x = saturate(r5.x); + // ========================================================================== + // SUN DISK BLENDING + // ========================================================================== + // Smoothstep for sun edge falloff + r3.w = -0.5 + r3.z; + r3.w = saturate(r3.w + r3.w); + r4.w = r3.w * -2 + 3; + r3.w = r3.w * r3.w; + r3.w = r4.w * r3.w; + r4.w = r3.w * r3.z; + r3.z = -r3.w * r3.z + r3.z; + r3.z = cb2[43].y * r3.z + r4.w; // Sun brightness + r5.yzw = cb2[42].xyz * r3.zzz; // Apply sun color + r5.yzw = cb2[43].www * r5.yzw; // Sun intensity multiplier + r5.yzw = cb2[44].www * r5.yzw; // Sun shadow/occlusion + r5.yzw = max(float3(0,0,0), r5.yzw); + // HDR Sun toggle + if (SUN_INTENSITY > 0.5f) { + // Calculate sun-view alignment (1 = looking directly at sun center) + float sunDot = saturate(dot(-cb2[44].xyz, -r1.yzw)); + + // === HORIZON REDDENING === + // Sun direction Y component indicates height (-1 = below, 0 = horizon, 1 = zenith) + float sunHeight = saturate(cb2[44].y + 0.1f); // Shift so effect starts slightly above horizon + + // Warm shift when sun is low (more red/orange near horizon) + float3 horizonTint = lerp(float3(1.0f, 0.6f, 0.3f), // Low sun: warm orange + float3(1.0f, 0.95f, 0.9f), // High sun: nearly white + sunHeight); + + // === LIMB DARKENING === + // Real stars appear darker at edges due to optical depth through atmosphere + // Use a soft power curve - center is brightest, edges darken + float limbDarkening = pow(sunDot, 0.4f); // Subtle darkening toward edges + + // === CHROMATIC SUN EDGE === + // Core is white-hot, edges transition to yellow/orange + float3 sunCoreColor = float3(1.0f, 1.0f, 1.0f); // White-hot center + float3 sunEdgeColor = float3(1.0f, 0.85f, 0.6f); // Warm yellow edge + + // Blend from edge color to core color based on how centered we are + float coreFactor = pow(sunDot, 3.0f); // Sharp transition to white core + float3 chromaticColor = lerp(sunEdgeColor, sunCoreColor, coreFactor); + + // === COMBINE SUN DISK === + // Apply limb darkening and chromatic color to base sun + r5.yzw = r5.yzw * limbDarkening * chromaticColor * horizonTint; + + // Boost the sun intensity for HDR + r5.yzw = r5.yzw * 5.0f; + + // === CORONA GLOW === + // Inner corona (tight glow) + float coronaInner = pow(sunDot, 64.0f); + // Outer corona (wide soft glow) + float coronaOuter = pow(sunDot, 8.0f); + + // Corona colors - also affected by horizon + float3 coronaColorInner = lerp(float3(1.0f, 0.5f, 0.2f), // Warm inner at horizon + float3(1.0f, 0.7f, 0.3f), // Normal inner + sunHeight); + float3 coronaColorOuter = lerp(float3(1.0f, 0.3f, 0.1f), // Deep orange at horizon + float3(1.0f, 0.5f, 0.2f), // Normal outer + sunHeight); + + float3 corona = coronaInner * coronaColorInner * 2.0f + + coronaOuter * coronaColorOuter * 0.5f; + + // Modulate corona by sun color/intensity from game + corona *= cb2[42].xyz * cb2[42].w; + corona *= cb2[44].w; // Sun shadow/occlusion + + // Add corona to sun + r5.yzw += corona; + + // === DESATURATE SUN (50%) === + float sunLuma = dot(r5.yzw, float3(0.2126f, 0.7152f, 0.0722f)); + r5.yzw = lerp(r5.yzw, float3(sunLuma, sunLuma, sunLuma), 0.5f); + + // === BLOOM BOOST === + r5.yzw *= 10.0f; + + } else { + // Vanilla clamp + r5.yzw = min(float3(3,3,3), r5.yzw); + } + + // Blend environment + sun + skybox + r2.yzw = r2.yzw * r3.yyy + r5.yzw; + r3.yzw = r4.xyz * r3.xxx + -r2.yzw; + r2.yzw = r5.xxx * r3.yzw + r2.yzw; + // ========================================================================== + // REFLECTION PROBE 1 (cb2[0].x enables this) + // ========================================================================== + r3.yz = cmp(float2(0.75,0.75) < cb2[0].xy); + if (r3.y != 0) { + r3.y = rsqrt(r0.w); + r5.yzw = r3.yyy * r0.yxz; + r3.y = dot(r5.zyw, cb2[15].xyz); + r3.w = cb2[19].x * cb2[19].x + -1; + r3.w = r3.y * r3.y + r3.w; + r4.w = max(0, r3.w); + r4.w = sqrt(r4.w); + r3.y = -r4.w + r3.y; + r6.xyz = r5.zyw * r3.yyy + -cb2[15].xyz; + r6.xyz = r6.xyz / cb2[19].xxx; + r3.y = dot(r6.xyz, cb2[21].xyz); + r7.xyz = -cb2[21].xyz * r3.yyy + r6.xyz; + r4.w = dot(r7.xyz, r7.xyz); + r4.w = rsqrt(r4.w); + r7.xyz = r7.xyz * r4.www; + r4.w = dot(r7.xyz, cb2[25].xyz); + r6.w = cmp(0 < r4.w); + r4.w = cmp(r4.w < 0); + r4.w = (int)-r6.w + (int)r4.w; + r4.w = (int)r4.w; + r6.w = saturate(-r4.w); + r7.x = dot(r7.xyz, cb2[23].xyz); + r7.y = 1 + -abs(r7.x); + r7.y = sqrt(r7.y); + r7.z = abs(r7.x) * -0.0187292993 + 0.0742610022; + r7.z = r7.z * abs(r7.x) + -0.212114394; + r7.z = r7.z * abs(r7.x) + 1.57072878; + r7.w = r7.z * r7.y; + r7.w = r7.w * -2 + 3.14159274; + r7.x = cmp(r7.x < -r7.x); + r7.x = r7.x ? r7.w : 0; + r7.x = r7.z * r7.y + r7.x; + r4.w = r7.x * r4.w; + r7.x = r4.w * 0.159154937 + r6.w; + r4.w = r3.y * r3.y; + r4.w = r4.w * -0.222222224 + -0.277777791; + r7.y = r4.w * -r3.y + 0.50000006; + r8.xyzw = t3.SampleBias(s2_s, r7.xy, cb1[26].x).xyzw; + r3.y = saturate(dot(cb2[17].xyz, r6.xyz)); + r3.y = saturate(r3.y * cb2[1].x + cb2[1].z); + r6.xyz = t5.SampleBias(s4_s, r7.xy, cb1[26].x).xyz; + r6.xyz = cb2[9].xyz * r6.xyz; + r8.xyz = r8.xyz * r3.yyy + r6.xyz; + r3.y = dot(cb2[15].xyz, cb2[15].xyz); + r3.y = rsqrt(r3.y); + r6.xyz = cb2[15].xyz * r3.yyy; + r3.y = saturate(dot(r5.zyw, r6.xyz)); + r3.y = r3.w * r3.y; + r3.y = max(0, r3.y); + r3.y = cmp(0 < r3.y); + r3.y = r3.y ? 1.000000 : 0; + r6.xyzw = r8.xyzw * r3.yyyy; + r6.xyz = r6.xyz * r8.www; + r6.xyzw = cb2[5].xyzw * r6.xyzw; + r5.y = saturate(r5.y); + r3.y = -1 + r5.y; + r3.y = cb2[29].w * r3.y + 1; + r7.xyzw = r6.xyzw * r3.yyyy; + r3.w = cmp(cb2[2].x >= 0.5); + r3.w = r3.w ? 1.000000 : 0; + r5.yz = cmp(float2(1.5,0.5) >= cb2[2].xx); + r5.yz = r5.yz ? float2(1,1) : 0; + r3.w = -r3.w * r5.y + 1; + r3.w = -r7.w * r3.w + 1; + r4.w = dot(r7.xyz, float3(0.212672904,0.715152204,0.0721750036)); + r6.xyz = r6.xyz * r3.yyy + -r4.www; + r6.xyz = cb1[104].www * r6.xyz + r4.www; + r6.xyz = cb1[104].xyz * r6.xyz; + r3.y = -r6.w * r3.y + 1; + r3.y = -r3.y * r5.z + 1; + r5.yzw = r6.xyz * r3.yyy; + r2.yzw = r2.yzw * r3.www + r5.yzw; + } + // ========================================================================== + // REFLECTION PROBE 2 (cb2[0].y enables this) + // ========================================================================== + if (r3.z != 0) { + r3.y = rsqrt(r0.w); + r3.yzw = r3.yyy * r0.yxz; + r0.x = dot(r3.zyw, cb2[16].xyz); + r0.z = cb2[20].x * cb2[20].x + -1; + r0.z = r0.x * r0.x + r0.z; + r4.w = max(0, r0.z); + r4.w = sqrt(r4.w); + r0.x = -r4.w + r0.x; + r5.yzw = r3.zyw * r0.xxx + -cb2[16].xyz; + r5.yzw = r5.yzw / cb2[20].xxx; + r0.x = dot(r5.yzw, cb2[22].xyz); + r6.xyz = -cb2[22].xyz * r0.xxx + r5.yzw; + r4.w = dot(r6.xyz, r6.xyz); + r4.w = rsqrt(r4.w); + r6.xyz = r6.xyz * r4.www; + r4.w = dot(r6.xyz, cb2[26].xyz); + r6.w = cmp(0 < r4.w); + r4.w = cmp(r4.w < 0); + r4.w = (int)-r6.w + (int)r4.w; + r4.w = (int)r4.w; + r6.w = saturate(-r4.w); + r6.x = dot(r6.xyz, cb2[24].xyz); + r6.y = 1 + -abs(r6.x); + r6.y = sqrt(r6.y); + r6.z = abs(r6.x) * -0.0187292993 + 0.0742610022; + r6.z = r6.z * abs(r6.x) + -0.212114394; + r6.z = r6.z * abs(r6.x) + 1.57072878; + r7.x = r6.z * r6.y; + r7.x = r7.x * -2 + 3.14159274; + r6.x = cmp(r6.x < -r6.x); + r6.x = r6.x ? r7.x : 0; + r6.x = r6.z * r6.y + r6.x; + r4.w = r6.x * r4.w; + r6.x = r4.w * 0.159154937 + r6.w; + r4.w = r0.x * r0.x; + r4.w = r4.w * -0.222222224 + -0.277777791; + r6.y = r4.w * -r0.x + 0.50000006; + r7.xyzw = t4.SampleBias(s3_s, r6.xy, cb1[26].x).xyzw; + r0.x = saturate(dot(cb2[18].xyz, r5.yzw)); + r0.x = saturate(r0.x * cb2[1].y + cb2[1].w); + r5.yzw = t6.SampleBias(s5_s, r6.xy, cb1[26].x).xyz; + r5.yzw = cb2[10].xyz * r5.yzw; + r7.xyz = r7.xyz * r0.xxx + r5.yzw; + r0.x = dot(cb2[16].xyz, cb2[16].xyz); + r0.x = rsqrt(r0.x); + r5.yzw = cb2[16].xyz * r0.xxx; + r0.x = saturate(dot(r3.zyw, r5.yzw)); + r0.x = r0.z * r0.x; + r0.x = max(0, r0.x); + r0.x = cmp(0 < r0.x); + r0.x = r0.x ? 1.000000 : 0; + r6.xyzw = r7.xyzw * r0.xxxx; + r6.xyz = r6.xyz * r7.www; + r6.xyzw = cb2[6].xyzw * r6.xyzw; + r3.y = saturate(r3.y); + r0.x = -1 + r3.y; + r0.x = cb2[32].w * r0.x + 1; + r7.xyzw = r6.xyzw * r0.xxxx; + r0.z = cmp(cb2[2].y >= 0.5); + r0.z = r0.z ? 1.000000 : 0; + r3.yz = cmp(float2(1.5,0.5) >= cb2[2].yy); + r3.yz = r3.yz ? float2(1,1) : 0; + r0.z = -r0.z * r3.y + 1; + r0.z = -r7.w * r0.z + 1; + r0.x = -r6.w * r0.x + 1; + r0.x = -r0.x * r3.z + 1; + r3.yzw = r7.xyz * r0.xxx; + r2.yzw = r2.yzw * r0.zzz + r3.yzw; + } + // Final skybox blend + r3.xyz = r4.xyz * r3.xxx + -r2.yzw; + r2.yzw = r5.xxx * r3.xyz + r2.yzw; + // ========================================================================== + // ATMOSPHERIC FOG / SCATTERING (Height-based exponential fog) + // ========================================================================== + r0.x = v1.y * cb1[74].w + cb1[75].w; + r0.z = r2.x * cb1[72].w + -cb1[71].w; + r0.xz = max(float2(0.00999999978,0), r0.xz); + r3.x = -1.44269502 * r0.x; + r3.x = exp2(r3.x); + r3.x = 1 + -r3.x; + r0.x = r3.x / r0.x; + r3.x = v1.y * cb1[74].w + cb1[76].w; + r3.x = 1.44269502 * r3.x; + r3.x = exp2(r3.x); + r0.x = r3.x * r0.x; + r0.x = -r0.z * r0.x; + r3.xyz = cb1[73].xyz * r0.xxx; + r3.xyz = float3(1.44269502,1.44269502,1.44269502) * r3.xyz; + r3.xyz = exp2(r3.xyz); + r0.x = dot(r1.yzw, cb1[72].xyz); + r0.z = cb1[73].w * cb1[73].w + 1; + r3.w = dot(r0.xx, cb1[73].ww); + r0.z = -r3.w + r0.z; + // ========================================================================== + // VOLUMETRIC FOG SAMPLING (t0: 3D fog volume) + // ========================================================================== + r3.w = cmp(0 < cb1[83].z); + if (r3.w != 0) { + r4.xy = (uint2)v0.xy; + r4.z = 7 & asint(cb1[26].w); + r5.xyz = mad((int3)r4.xyz, int3(0x19660d,0x19660d,0x19660d), int3(0x3c6ef35f,0x3c6ef35f,0x3c6ef35f)); + r3.w = mad((int)r5.y, (int)r5.z, (int)r5.x); + r4.z = mad((int)r5.z, (int)r3.w, (int)r5.y); + r4.w = mad((int)r3.w, (int)r4.z, (int)r5.z); + r5.x = mad((int)r4.z, (int)r4.w, (int)r3.w); + r6.x = -cb0[0].z; + r6.y = -cb0[1].z; + r6.z = -cb0[2].z; + r3.w = dot(r1.yzw, r6.xyz); + r5.z = cmp(5.96046448e-008 < r3.w); + r3.w = 1 / r3.w; + r3.w = r5.z ? r3.w : 0; + r3.w = cb1[83].w * r3.w; + r5.z = 1 / r2.x; + r5.w = r5.z * r3.w; + r6.x = r5.w * r0.y + cb0[44].y; + r5.w = -r5.w * r0.y + r0.y; + r3.w = -r3.w * r5.z + 1; + r5.z = r3.w * r2.x; + r6.y = cb1[77].z * r5.w; + r5.w = cb1[80].x * r5.w; + r5.w = max(-127, r5.w); + r6.z = -cb1[77].x + r6.x; + r6.z = cb1[77].z * r6.z; + r6.yz = max(float2(-127,-127), r6.yz); + r6.z = exp2(-r6.z); + r6.z = cb1[77].y * r6.z; + r6.w = cmp(5.96046448e-008 < abs(r6.y)); + r7.x = exp2(-r6.y); + r7.x = 1 + -r7.x; + r7.x = r7.x / r6.y; + r6.y = -r6.y * 0.240226507 + 0.693147182; + r6.y = r6.w ? r7.x : r6.y; + r6.x = -cb1[80].z + r6.x; + r6.x = cb1[80].x * r6.x; + r6.x = max(-127, r6.x); + r6.x = exp2(-r6.x); + r6.x = cb1[80].y * r6.x; + r6.w = cmp(5.96046448e-008 < abs(r5.w)); + r7.x = exp2(-r5.w); + r7.x = 1 + -r7.x; + r7.x = r7.x / r5.w; + r5.w = -r5.w * 0.240226507 + 0.693147182; + r5.w = r6.w ? r7.x : r5.w; + r5.w = r6.x * r5.w; + r5.w = r6.z * r6.y + r5.w; + r6.xy = saturate(r2.xx * cb1[78].wy + cb1[78].zx); + r5.z = r5.w * r5.z; + r5.z = exp2(-r5.z); + r5.z = min(1, r5.z); + r5.z = max(cb1[79].w, r5.z); + r5.z = r5.z + r6.y; + r5.z = r5.z + r6.x; + r5.z = min(1, r5.z); + r5.y = mad((int)r4.w, (int)r5.x, (int)r4.z); + r4.zw = (uint2)r5.xy >> int2(16,16); + r4.xyzw = (uint4)r4.xyzw; + r4.zw = r4.zw * float2(3.05180438e-005,3.05180438e-005) + float2(-1,-1); + r4.xy = r4.zw * cb1[87].ww + r4.xy; + r4.xy = cb1[85].xy * r4.xy; + r4.w = v0.w * cb1[84].x + cb1[84].y; + r4.w = log2(r4.w); + r4.w = cb1[84].z * r4.w; + r4.z = r4.w / cb1[83].z; + r4.xyzw = t0.SampleLevel(s0_s, r4.xyz, 0).xyzw; + r5.x = -cb1[86].z + v0.w; + r5.x = saturate(1000000 * r5.x); + r4.xyzw = float4(-0,-0,-0,-1) + r4.xyzw; + r4.xyzw = r5.xxxx * r4.xyzw + float4(0,0,0,1); + r5.x = 1 + -r5.z; + r5.y = saturate(dot(-r1.yzw, cb1[81].xyz)); + r5.y = log2(r5.y); + r5.y = cb1[82].w * r5.y; + r5.y = exp2(r5.y); + r6.yzw = cb1[82].xyz * r5.yyy; + r3.w = r3.w * r2.x + -cb1[81].w; + r3.w = max(0, r3.w); + r3.w = r5.w * r3.w; + r3.w = exp2(-r3.w); + r3.w = min(1, r3.w); + r3.w = 1 + -r3.w; + r6.yzw = r6.yzw * r3.www; + r3.w = 1 + -r6.x; + r6.xyz = r6.yzw * r3.www; + r5.xyw = cb1[79].xyz * r5.xxx + r6.xyz; + r4.xyz = r5.xyw * r4.www + r4.xyz; + r3.w = r4.w * r5.z; + } else { + r4.w = cb1[77].z * r0.y; + r4.w = max(-127, r4.w); + r0.y = cb1[80].x * r0.y; + r0.y = max(-127, r0.y); + r5.x = -cb1[77].x + cb0[44].y; + r5.x = cb1[77].z * r5.x; + r5.x = max(-127, r5.x); + r5.x = exp2(-r5.x); + r5.x = cb1[77].y * r5.x; + r5.y = cmp(5.96046448e-008 < abs(r4.w)); + r5.z = exp2(-r4.w); + r5.z = 1 + -r5.z; + r5.z = r5.z / r4.w; + r4.w = -r4.w * 0.240226507 + 0.693147182; + r4.w = r5.y ? r5.z : r4.w; + r5.y = -cb1[80].z + cb0[44].y; + r5.y = cb1[80].x * r5.y; + r5.y = max(-127, r5.y); + r5.y = exp2(-r5.y); + r5.y = cb1[80].y * r5.y; + r5.z = cmp(5.96046448e-008 < abs(r0.y)); + r5.w = exp2(-r0.y); + r5.w = 1 + -r5.w; + r5.w = r5.w / r0.y; + r0.y = -r0.y * 0.240226507 + 0.693147182; + r0.y = r5.z ? r5.w : r0.y; + r0.y = r5.y * r0.y; + r0.y = r5.x * r4.w + r0.y; + r5.xy = saturate(r2.xx * cb1[78].wy + cb1[78].zx); + r2.x = r0.y * r2.x; + r2.x = exp2(-r2.x); + r2.x = min(1, r2.x); + r2.x = max(cb1[79].w, r2.x); + r2.x = r2.x + r5.y; + r2.x = r2.x + r5.x; + r3.w = min(1, r2.x); + r2.x = 1 + -r3.w; + r1.y = saturate(dot(-r1.yzw, cb1[81].xyz)); + r1.y = log2(r1.y); + r1.y = cb1[82].w * r1.y; + r1.y = exp2(r1.y); + r1.yzw = cb1[82].xyz * r1.yyy; + r0.w = r0.w * r1.x + -cb1[81].w; + r0.w = max(0, r0.w); + r0.y = r0.y * r0.w; + r0.y = exp2(-r0.y); + r0.y = min(1, r0.y); + r0.y = 1 + -r0.y; + r1.xyz = r1.yzw * r0.yyy; + r0.y = 1 + -r5.x; + r1.xyz = r1.xyz * r0.yyy; + r4.xyz = cb1[79].xyz * r2.xxx + r1.xyz; + } + // ========================================================================== + // FINAL COLOR GRADING + // ========================================================================== + // Desaturation based on luminance + r0.y = dot(r2.yzw, float3(0.212672904,0.715152204,0.0721750036)); // Luminance + r1.xyz = r2.yzw + -r0.yyy; + r1.xyz = cb1[104].www * r1.xyz + r0.yyy; // Saturation control + r1.xyz = cb1[104].xyz * r1.xyz; // Color tint/exposure + r2.xyz = r3.xyz * r3.www; + r0.x = r0.x * r0.x + 1; + r0.x = 0.0596831031 * r0.x; + r0.xyw = cb1[74].xyz * r0.xxx + cb1[76].xyz; + r1.w = -cb1[73].w * cb1[73].w + 1; + r2.w = 12.566371 * r0.z; + r0.z = sqrt(r0.z); + r0.z = r2.w * r0.z; + r0.z = max(0.00100000005, r0.z); + r0.z = r1.w / r0.z; + r0.xyz = saturate(cb1[75].xyz * r0.zzz + r0.xyw); + r0.xyz = float3(255,255,255) * r0.xyz; + r3.xyz = float3(1,1,1) + -r3.xyz; + r0.xyz = r3.xyz * r0.xyz; + r0.xyz = r0.xyz * r3.www + r4.xyz; + o0.xyz = r1.xyz * r2.xyz + r0.xyz; + + // ========================================================================== + // SKYBOX DESATURATION (50%) - Tech Test Look + // ========================================================================== + if (TECH_TEST_LOOK > 0.5f) { + float skyboxLuma = dot(o0.xyz, float3(0.2126f, 0.7152f, 0.0722f)); + o0.xyz = lerp(o0.xyz, float3(skyboxLuma, skyboxLuma, skyboxLuma), 0.5f); + } + + // ========================================================================== + // VELOCITY BUFFER OUTPUT (for motion blur / TAA) + // ========================================================================== + r0.x = max(9.99999994e-009, v3.z); + r0.xy = v3.xy / r0.xx; + r0.z = max(9.99999994e-009, v4.z); + r0.zw = v4.xy / r0.zz; + r0.xy = r0.xy + -r0.zw; + r1.xy = float2(0.5,-0.5) * r0.xy; + r1.xy = sqrt(abs(r1.xy)); + r1.xy = sqrt(r1.xy); + r0.z = -r0.y; + r0.yw = cmp(float2(0,0) < r0.xz); + r0.xz = cmp(r0.xz < float2(0,0)); + r0.xy = (int2)-r0.yw + (int2)r0.xz; + r0.xy = (int2)r0.xy; + r0.xy = r1.xy * r0.xy; + o1.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); + o0.w = 1; + o1.zw = float2(0,0); + return; +} diff --git a/src/games/endfield/others/skybox5_0xCD4FEF5A.ps_5_0.hlsl b/src/games/endfield/others/skybox5_0xCD4FEF5A.ps_5_0.hlsl new file mode 100644 index 0000000000..654ab99c37 --- /dev/null +++ b/src/games/endfield/others/skybox5_0xCD4FEF5A.ps_5_0.hlsl @@ -0,0 +1,928 @@ +#include "../shared.h" + +Texture2D t6 : register(t6); + +Texture2D t5 : register(t5); + +Texture2D t4 : register(t4); + +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture3D t0 : register(t0); + +SamplerState s5_s : register(s5); + +SamplerState s4_s : register(s4); + +SamplerState s3_s : register(s3); + +SamplerState s2_s : register(s2); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb2 : register(b2) +{ + float4 cb2[45]; +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[105]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[45]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, // Screen position + float3 v1 : TEXCOORD0, // World position + float2 v2 : TEXCOORD1, // Unused + float3 v3 : TEXCOORD2, // Motion vector data 1 + float3 v4 : TEXCOORD3, // Motion vector data 2 + float3 v5 : TEXCOORD4, // Unused + out float4 o0 : SV_Target0, // Final color output + out float4 o1 : SV_Target1) // Motion vectors output +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16; + uint4 bitmask, uiDest; + float4 fDest; + + // ============================================================================ + // VIEW DIRECTION AND DISTANCE CALCULATION + // ============================================================================ + r0.xyz = -cb0[44].xyz + v1.xyz; + r0.w = dot(r0.xyz, r0.xyz); + r1.x = max(9.99999994e-009, r0.w); + r1.x = rsqrt(r1.x); + r1.yzw = r1.xxx * r0.xyz; + r2.x = r1.x * r0.w; + r2.y = dot(abs(r1.yzw), float3(1,1,1)); + r2.y = 1 / r2.y; + r2.zw = r2.yy * r1.yw; + r2.z = r2.z + r2.w; + r2.y = r1.y * r2.y + -r2.w; + r3.xy = float2(1,1) + r2.zy; + r2.yz = float2(0.5,0.5) * r3.xy; + r2.yzw = t1.SampleLevel(s0_s, r2.yz, 0).xyz; + r3.x = saturate(r1.z * 10 + 1); + // ========================================================================== + // PROCEDURAL SUN DISK CALCULATION + // ========================================================================== + // cb2[44].xyz = sun direction + // cb2[43].x = sun size/falloff exponent + // cb2[42].xyz = sun color, cb2[42].w = sun intensity + r3.y = saturate(dot(-cb2[44].xyz, -r1.yzw)); // Sun-view alignment (1 = looking at sun) + r3.y = log2(r3.y); + // Sun size adjustment: multiply exponent to shrink disk (5.0 = ~80% smaller) + float sunSizeMultiplier = (SUN_INTENSITY > 0.5f) ? 5.0f : 1.0f; + r3.y = cb2[43].x * sunSizeMultiplier * r3.y; // Apply sun size exponent + r3.y = exp2(r3.y); + r3.z = r3.y * r3.y + 1; + r3.y = -r3.y * 1.98000002 + 1.98010004; + r3.w = log2(cb2[42].w); + r3.zw = float2(0.0100164423,0.649999976) * r3.zw; + r3.w = exp2(r3.w); + r3.w = 8 * r3.w; + r3.y = log2(r3.y); + r3.y = r3.w * r3.y; + r3.y = exp2(r3.y); + r3.y = max(9.99999975e-005, r3.y); + r3.y = r3.z / r3.y; + // ============================================================================ + // SUN SPECULAR HIGHLIGHT WITH SMOOTHSTEP + // ============================================================================ + r3.z = -0.5 + r3.y; + r3.z = saturate(r3.z + r3.z); + r3.w = r3.z * -2 + 3; + r3.z = r3.z * r3.z; + r3.z = r3.w * r3.z; + r3.w = r3.z * r3.y; + r3.y = -r3.z * r3.y + r3.y; + r3.y = cb2[43].y * r3.y + r3.w; // Sun brightness + r3.yzw = cb2[42].xyz * r3.yyy; // Apply sun color + r3.yzw = cb2[43].www * r3.yzw; // Sun intensity multiplier + r3.yzw = cb2[44].www * r3.yzw; // Sun shadow/occlusion + r3.yzw = max(float3(0,0,0), r3.yzw); + // HDR Sun toggle + if (SUN_INTENSITY > 0.5f) { + // Calculate sun-view alignment (1 = looking directly at sun center) + float sunDot = saturate(dot(-cb2[44].xyz, -r1.yzw)); + + // === HORIZON REDDENING === + // Sun direction Y component indicates height (-1 = below, 0 = horizon, 1 = zenith) + float sunHeight = saturate(cb2[44].y + 0.1f); // Shift so effect starts slightly above horizon + + // Warm shift when sun is low (more red/orange near horizon) + float3 horizonTint = lerp(float3(1.0f, 0.6f, 0.3f), // Low sun: warm orange + float3(1.0f, 0.95f, 0.9f), // High sun: nearly white + sunHeight); + + // === LIMB DARKENING === + // Real stars appear darker at edges due to optical depth through atmosphere + // Use a soft power curve - center is brightest, edges darken + float limbDarkening = pow(sunDot, 0.4f); // Subtle darkening toward edges + + // === CHROMATIC SUN EDGE === + // Core is white-hot, edges transition to yellow/orange + float3 sunCoreColor = float3(1.0f, 1.0f, 1.0f); // White-hot center + float3 sunEdgeColor = float3(1.0f, 0.85f, 0.6f); // Warm yellow edge + + // Blend from edge color to core color based on how centered we are + float coreFactor = pow(sunDot, 3.0f); // Sharp transition to white core + float3 chromaticColor = lerp(sunEdgeColor, sunCoreColor, coreFactor); + + // === COMBINE SUN DISK === + // Apply limb darkening and chromatic color to base sun + r3.yzw = r3.yzw * limbDarkening * chromaticColor * horizonTint; + + // Boost the sun intensity for HDR + r3.yzw = r3.yzw * 5.0f; + + // === CORONA GLOW === + // Inner corona (tight glow) + float coronaInner = pow(sunDot, 64.0f); + // Outer corona (wide soft glow) + float coronaOuter = pow(sunDot, 8.0f); + + // Corona colors - also affected by horizon + float3 coronaColorInner = lerp(float3(1.0f, 0.5f, 0.2f), // Warm inner at horizon + float3(1.0f, 0.7f, 0.3f), // Normal inner + sunHeight); + float3 coronaColorOuter = lerp(float3(1.0f, 0.3f, 0.1f), // Deep orange at horizon + float3(1.0f, 0.5f, 0.2f), // Normal outer + sunHeight); + + float3 corona = coronaInner * coronaColorInner * 2.0f + + coronaOuter * coronaColorOuter * 0.5f; + + // Modulate corona by sun color/intensity from game + corona *= cb2[42].xyz * cb2[42].w; + corona *= cb2[44].w; // Sun shadow/occlusion + + // Add corona to sun + r3.yzw += corona; + + // === DESATURATE SUN (50%) === + float sunLuma = dot(r3.yzw, float3(0.2126f, 0.7152f, 0.0722f)); + r3.yzw = lerp(r3.yzw, float3(sunLuma, sunLuma, sunLuma), 0.5f); + + // === BLOOM BOOST === + r3.yzw *= 10.0f; + + } else { + // Vanilla clamp + r3.yzw = min(float3(3,3,3), r3.yzw); + } + + // Combine skybox, sun specular, and clouds + r2.yzw = r2.yzw * r3.xxx + r3.yzw; + // ============================================================================ + // VOLUMETRIC LIGHT SHAFT SYSTEM 1 (conditional) + // ============================================================================ + r3.xy = cmp(float2(0.75,0.75) < cb2[0].xy); + if (r3.x != 0) { + r3.x = 1 / cb2[27].x; + r3.z = cb2[27].w + cb2[27].x; + r3.w = rsqrt(r0.w); + r4.xyz = r3.www * r0.xyz; + // ============================================================================ + // SPHERICAL LIGHT SOURCE INTERSECTION (cb2[15] = light position) + // ============================================================================ + r3.w = dot(r4.xyz, cb2[15].xyz); + r4.w = cb2[19].x * cb2[19].x + -1; + r4.w = r3.w * r3.w + r4.w; + r5.x = max(0, r4.w); + r5.x = sqrt(r5.x); + r3.w = -r5.x + r3.w; + r5.xyz = r4.xyz * r3.www + -cb2[15].xyz; + r5.xyz = r5.xyz / cb2[19].xxx; + r3.w = dot(cb2[15].xyz, cb2[15].xyz); + r3.w = rsqrt(r3.w); + r6.xyz = cb2[15].xyz * r3.www; + r3.w = saturate(dot(r4.xyz, r6.xyz)); + r3.w = r4.w * r3.w; + r3.w = max(0, r3.w); + r3.w = cmp(0 < r3.w); + r4.w = r3.w ? 1.000000 : 0; + r5.w = dot(cb2[21].xyz, cb2[15].xyz); + r6.x = dot(cb2[21].xyz, r4.xyz); + r5.w = abs(r5.w) / abs(r6.x); + r6.xyz = r4.xyz * r5.www + -cb2[15].xyz; + r5.w = dot(r6.xyz, r6.xyz); + r5.w = sqrt(r5.w); + r7.xyz = r6.xyz / r5.www; + r6.x = dot(cb2[21].xyz, r6.xyz); + r6.x = cmp(abs(r6.x) < 0.00100000005); + r6.x = r6.x ? 1.000000 : 0; + r6.x = r6.x * r5.w; + r6.y = r6.x * cb2[19].z + cb2[19].w; + r6.z = dot(r5.xyz, cb2[21].xyz); + r8.xyz = -cb2[21].xyz * r6.zzz + r5.xyz; + r6.w = dot(r8.xyz, r8.xyz); + r6.w = rsqrt(r6.w); + r8.xyz = r8.xyz * r6.www; + r6.w = dot(r8.xyz, cb2[25].xyz); + r7.w = cmp(0 < r6.w); + r6.w = cmp(r6.w < 0); + r6.w = (int)-r7.w + (int)r6.w; + r6.w = (int)r6.w; + r7.w = saturate(-r6.w); + r8.x = dot(r8.xyz, cb2[23].xyz); + r8.y = 1 + -abs(r8.x); + r8.y = sqrt(r8.y); + r8.z = abs(r8.x) * -0.0187292993 + 0.0742610022; + r8.z = r8.z * abs(r8.x) + -0.212114394; + r8.z = r8.z * abs(r8.x) + 1.57072878; + r8.w = r8.z * r8.y; + r8.w = r8.w * -2 + 3.14159274; + r8.x = cmp(r8.x < -r8.x); + r8.x = r8.x ? r8.w : 0; + r8.x = r8.z * r8.y + r8.x; + r6.w = r8.x * r6.w; + r8.x = r6.w * 0.159154937 + r7.w; + r6.w = r6.z * r6.z; + r6.w = r6.w * -0.222222224 + -0.277777791; + r8.y = r6.w * -r6.z + 0.50000006; + // ============================================================================ + // CLOUD/ATMOSPHERE TEXTURE SAMPLING + // ============================================================================ + r9.xyzw = t2.SampleBias(s1_s, r8.xy, cb1[26].x).xyzw; + r5.x = saturate(dot(cb2[17].xyz, r5.xyz)); + r5.x = saturate(r5.x * cb2[1].x + cb2[1].z); + r8.xyz = t4.SampleBias(s3_s, r8.xy, cb1[26].x).xyz; + r8.xyz = cb2[9].xyz * r8.xyz; + r9.xyz = r9.xyz * r5.xxx + r8.xyz; + r8.xyzw = r9.xyzw * r4.wwww; + r5.y = saturate(1 + -r6.y); + r5.y = r5.y * r6.y; + r5.z = cmp(0 < r5.y); + r5.y = cmp(r5.y < 0); + r5.y = (int)-r5.z + (int)r5.y; + r5.y = (int)r5.y; + r5.z = dot(r4.xyz, r7.xyz); + r6.z = cmp(0 < -r5.z); + r5.z = cmp(-r5.z < 0); + r5.z = (int)-r6.z + (int)r5.z; + r5.z = (int)r5.z; + r5.yz = saturate(r5.yz); + r5.z = -1 + r5.z; + r4.w = r4.w * r5.z + 1; + r4.w = r5.y * r4.w; + r5.y = dot(r7.xyz, cb2[25].xyz); + r5.z = cmp(0 < r5.y); + r5.y = cmp(r5.y < 0); + r5.y = (int)-r5.z + (int)r5.y; + r5.y = (int)r5.y; + r5.z = dot(cb2[17].xyz, r7.xyz); + r5.z = saturate(-r5.z); + r6.z = saturate(-r5.y); + r6.w = dot(r7.xyz, cb2[23].xyz); + r7.x = 1 + -abs(r6.w); + r7.x = sqrt(r7.x); + r7.y = abs(r6.w) * -0.0187292993 + 0.0742610022; + r7.y = r7.y * abs(r6.w) + -0.212114394; + r7.y = r7.y * abs(r6.w) + 1.57072878; + r7.z = r7.y * r7.x; + r7.z = r7.z * -2 + 3.14159274; + r6.w = cmp(r6.w < -r6.w); + r6.w = r6.w ? r7.z : 0; + r6.w = r7.y * r7.x + r6.w; + r5.y = r6.w * r5.y; + r6.x = r5.y * 0.159154937 + r6.z; + r6.xyzw = t6.SampleBias(s5_s, r6.xy, cb1[26].x).xyzw; + r6.xyzw = cb2[7].xyzw * r6.xyzw; + r5.y = -r5.z * r5.z + 1; + r5.y = sqrt(r5.y); + r5.y = -r5.w * r5.y + cb2[19].x; + r5.y = cb2[19].y * r5.y; + r5.y = r5.y / cb2[0].z; + r5.y = saturate(1 + r5.y); + r5.y = 1 + -r5.y; + r5.z = dot(cb2[17].xyz, cb2[21].xyz); + r5.z = 0.400000006 + abs(r5.z); + r5.z = min(1, r5.z); + r5.y = r5.y * r5.z; + r6.xyzw = r6.xyzw * r5.yyyy; + r5.yzw = r6.xyz * r6.www; + r5.yzw = r5.yzw * r4.www; + r7.xyz = r8.xyz * r9.www + r5.yzw; + r4.w = r6.w * r4.w; + r3.w = r3.w ? 0 : 1; + r7.w = r4.w * r3.w + r8.w; + r3.w = saturate(r4.y); + r3.w = -1 + r3.w; + r3.w = cb2[29].w * r3.w + 1; + r6.xyzw = cb2[5].xyzw * r7.xyzw; + r7.xyzw = r6.xyzw * r3.wwww; + r4.w = dot(r4.xyz, r4.xyz); + r4.w = max(1.17549435e-038, r4.w); + r4.w = rsqrt(r4.w); + r4.xyz = r4.xyz * r4.www; + r4.w = dot(cb2[17].xyz, cb2[17].xyz); + r4.w = max(1.17549435e-038, r4.w); + r4.w = rsqrt(r4.w); + r5.yzw = cb2[17].xyz * r4.www; + r8.xyz = -cb2[13].xyz + cb0[44].xyz; + r4.w = dot(r4.xyz, r8.xyz); + r8.x = dot(r8.xyz, r8.xyz); + r8.y = -r3.z * r3.z + r8.x; + r8.y = r4.w * r4.w + -r8.y; + r8.z = cmp(0 < r8.y); + r8.y = sqrt(r8.y); + r8.w = -r8.y + -r4.w; + r9.x = max(0, r8.w); + r8.y = r8.y + -r4.w; + r9.y = r8.y + -r9.x; + r8.yw = r8.zz ? r9.xy : 0; + if (r8.z != 0) { + r8.x = -cb2[27].w * cb2[27].w + r8.x; + r8.x = r4.w * r4.w + -r8.x; + r8.z = cmp(0 < r8.x); + r8.x = sqrt(r8.x); + r4.w = -r8.x + -r4.w; + r4.w = max(0, r4.w); + r4.w = r8.z ? r4.w : 0; + r8.x = cmp(0 < r4.w); + r4.w = r4.w + -r8.y; + r4.w = min(r8.w, r4.w); + r4.w = r8.x ? r4.w : r8.w; + r4.w = r8.z ? r4.w : r8.w; + r8.x = cmp(0 < r4.w); + if (r8.x != 0) { + r4.w = r4.w / cb2[27].y; + r8.x = dot(-r4.xyz, r5.yzw); + r9.xyz = cb2[27].zzz * float3(0.000244140625,0.0012673497,0.00266802101); + r8.yzw = r4.xyz * r8.yyy + cb0[44].xyz; + r10.xyz = r4.xyz * r4.www; + r8.yzw = r10.xyz * float3(0.5,0.5,0.5) + r8.yzw; + r10.xyz = float3(0.5,0.5,0.5) * r5.yzw; + r11.xyz = r8.yzw; + r12.xyz = float3(0,0,0); + r9.w = 0; + r10.w = 0; + while (true) { + r11.w = (int)r10.w; + r11.w = cmp(r11.w >= cb2[27].y); + if (r11.w != 0) break; + r13.xyz = -cb2[13].xyz + r11.xyz; + r11.w = dot(r13.xyz, r13.xyz); + r12.w = sqrt(r11.w); + r12.w = -cb2[27].w + r12.w; + r12.w = r12.w * r3.x; + r12.w = cb2[28].y * -r12.w; + r12.w = 1.44269502 * r12.w; + r12.w = exp2(r12.w); + r12.w = r12.w * r4.w; + r12.w = min(3.40282347e+038, r12.w); + r9.w = r12.w + r9.w; + r13.x = dot(r5.yzw, r13.xyz); + r11.w = -r3.z * r3.z + r11.w; + r11.w = r13.x * r13.x + -r11.w; + r13.y = cmp(0 < r11.w); + r11.w = sqrt(r11.w); + r13.z = -r13.x + r11.w; + r11.w = -r13.x + -r11.w; + r11.w = max(0, r11.w); + r11.w = r13.z + -r11.w; + r11.w = r13.y ? r11.w : 0; + r11.w = r11.w / cb2[28].x; + r13.xyz = r10.xyz * r11.www + r11.xyz; + r14.xyz = r13.xyz; + r13.w = 0; + r14.w = 0; + while (true) { + r15.x = (int)r14.w; + r15.x = cmp(r15.x >= cb2[28].x); + if (r15.x != 0) break; + r15.xyz = -cb2[13].xyz + r14.xyz; + r16.xyz = r5.yzw * r11.www + r14.xyz; + r15.x = dot(r15.xyz, r15.xyz); + r15.x = sqrt(r15.x); + r15.x = -cb2[27].w + r15.x; + r15.x = max(0, r15.x); + r15.x = r15.x * r3.x; + r15.x = cb2[28].y * -r15.x; + r15.x = 1.44269502 * r15.x; + r15.x = exp2(r15.x); + r15.x = r15.x + r13.w; + r15.y = (int)r14.w + 1; + r14.xyz = r16.xyz; + r13.w = r15.x; + r14.w = r15.y; + continue; + } + r11.w = r13.w * r11.w + r9.w; + r13.xyz = r11.www * r9.xyz; + r13.xyz = float3(-1.44269502,-1.44269502,-1.44269502) * r13.xyz; + r13.xyz = exp2(r13.xyz); + r12.xyz = r13.xyz * r12.www + r12.xyz; + r11.xyz = r4.xyz * r4.www + r11.xyz; + r10.w = (int)r10.w + 1; + } + r3.x = r8.x * r8.x + 1; + r3.x = 0.0596831031 * r3.x; + r4.xyz = r12.xyz * r3.xxx; + r4.xyz = r4.xyz * r9.xyz; + } else { + r4.xyz = float3(0,0,0); + } + } else { + r4.xyz = float3(0,0,0); + } + r8.xyw = cb2[28].zzz * r4.yzx; + r3.x = cmp(r8.x >= r8.y); + r3.x = r3.x ? 1.000000 : 0; + r9.xy = r8.yx; + r9.zw = float2(-1,0.666666687); + r4.xy = r4.yz * cb2[28].zz + -r9.xy; + r4.zw = float2(1,-1); + r4.xyzw = r3.xxxx * r4.xyzw + r9.xyzw; + r3.x = cmp(r8.w >= r4.x); + r3.x = r3.x ? 1.000000 : 0; + r8.xyz = r4.xyw; + r4.xyw = r8.wyx; + r4.xyzw = r4.xyzw + -r8.xyzw; + r4.xyzw = r3.xxxx * r4.xyzw + r8.xyzw; + r3.x = min(r4.w, r4.y); + r3.x = r4.x + -r3.x; + r3.z = r4.w + -r4.y; + r4.y = r3.x * 6 + 9.99999975e-005; + r3.z = r3.z / r4.y; + r3.z = r4.z + r3.z; + r3.z = cb2[28].w + abs(r3.z); + r4.yzw = float3(1,0.666666687,0.333333343) + r3.zzz; + r4.yzw = frac(r4.yzw); + r4.yzw = r4.yzw * float3(6,6,6) + float3(-3,-3,-3); + r4.yzw = saturate(float3(-1,-1,-1) + abs(r4.yzw)); + r3.z = 9.99999975e-005 + r4.x; + r3.x = r3.x / r3.z; + r4.yzw = float3(-1,-1,-1) + r4.yzw; + r4.yzw = r3.xxx * r4.yzw + float3(1,1,1); + r5.yzw = r4.yzw * r4.xxx; + r3.x = cmp(cb2[2].x >= 0.5); + r3.x = r3.x ? 1.000000 : 0; + r8.xy = cmp(float2(1.5,0.5) >= cb2[2].xx); + r8.xy = r8.xy ? float2(1,1) : 0; + r3.x = -r3.x * r8.x + 1; + r3.x = -r7.w * r3.x + 1; + r3.z = dot(r7.xyz, float3(0.212672904,0.715152204,0.0721750036)); + r6.xyz = r6.xyz * r3.www + -r3.zzz; + r6.xyz = cb1[104].www * r6.xyz + r3.zzz; + r6.xyz = cb1[104].xyz * r6.xyz; + r3.z = -r6.w * r3.w + 1; + r3.z = -r3.z * r8.y + 1; + r6.xyz = r6.xyz * r3.zzz; + r6.xyz = r2.yzw * r3.xxx + r6.xyz; + r5.xyz = r5.yzw * r5.xxx; + r4.xyz = r4.yzw * r4.xxx + -r5.xyz; + r4.xyz = cb2[29].yyy * r4.xyz + r5.xyz; + r2.yzw = r4.xyz * r3.www + r6.xyz; + } + if (r3.y != 0) { + r3.x = 1 / cb2[30].x; + r3.y = cb2[30].w + cb2[30].x; + r3.z = rsqrt(r0.w); + r4.xyz = r3.zzz * r0.xyz; + r0.x = dot(r4.xyz, cb2[16].xyz); + r0.z = cb2[20].x * cb2[20].x + -1; + r0.z = r0.x * r0.x + r0.z; + r3.z = max(0, r0.z); + r3.z = sqrt(r3.z); + r0.x = -r3.z + r0.x; + r5.xyz = r4.xyz * r0.xxx + -cb2[16].xyz; + r5.xyz = r5.xyz / cb2[20].xxx; + r0.x = dot(r5.xyz, cb2[22].xyz); + r6.xyz = -cb2[22].xyz * r0.xxx + r5.xyz; + r3.z = dot(r6.xyz, r6.xyz); + r3.z = rsqrt(r3.z); + r6.xyz = r6.xyz * r3.zzz; + r3.z = dot(r6.xyz, cb2[26].xyz); + r3.w = cmp(0 < r3.z); + r3.z = cmp(r3.z < 0); + r3.z = (int)-r3.w + (int)r3.z; + r3.z = (int)r3.z; + r3.w = saturate(-r3.z); + r4.w = dot(r6.xyz, cb2[24].xyz); + r5.w = 1 + -abs(r4.w); + r5.w = sqrt(r5.w); + r6.x = abs(r4.w) * -0.0187292993 + 0.0742610022; + r6.x = r6.x * abs(r4.w) + -0.212114394; + r6.x = r6.x * abs(r4.w) + 1.57072878; + r6.y = r6.x * r5.w; + r6.y = r6.y * -2 + 3.14159274; + r4.w = cmp(r4.w < -r4.w); + r4.w = r4.w ? r6.y : 0; + r4.w = r6.x * r5.w + r4.w; + r3.z = r4.w * r3.z; + r6.x = r3.z * 0.159154937 + r3.w; + r3.z = r0.x * r0.x; + r3.z = r3.z * -0.222222224 + -0.277777791; + r6.y = r3.z * -r0.x + 0.50000006; + r7.xyzw = t3.SampleBias(s2_s, r6.xy, cb1[26].x).xyzw; + r0.x = saturate(dot(cb2[18].xyz, r5.xyz)); + r0.x = saturate(r0.x * cb2[1].y + cb2[1].w); + r5.xyz = t5.SampleBias(s4_s, r6.xy, cb1[26].x).xyz; + r5.xyz = cb2[10].xyz * r5.xyz; + r7.xyz = r7.xyz * r0.xxx + r5.xyz; + r3.z = dot(cb2[16].xyz, cb2[16].xyz); + r3.z = rsqrt(r3.z); + r5.xyz = cb2[16].xyz * r3.zzz; + r3.z = saturate(dot(r4.xyz, r5.xyz)); + r0.z = r3.z * r0.z; + r0.z = max(0, r0.z); + r0.z = cmp(0 < r0.z); + r0.z = r0.z ? 1.000000 : 0; + r5.xyzw = r7.xyzw * r0.zzzz; + r5.xyz = r5.xyz * r7.www; + r0.z = saturate(r4.y); + r0.z = -1 + r0.z; + r0.z = cb2[32].w * r0.z + 1; + r5.xyzw = cb2[6].xyzw * r5.xyzw; + r6.xyzw = r5.xyzw * r0.zzzz; + r3.z = dot(r4.xyz, r4.xyz); + r3.z = max(1.17549435e-038, r3.z); + r3.z = rsqrt(r3.z); + r4.xyz = r4.xyz * r3.zzz; + r3.z = dot(cb2[18].xyz, cb2[18].xyz); + r3.z = max(1.17549435e-038, r3.z); + r3.z = rsqrt(r3.z); + r5.xyz = cb2[18].xyz * r3.zzz; + r7.xyz = -cb2[14].xyz + cb0[44].xyz; + r3.z = dot(r4.xyz, r7.xyz); + r3.w = dot(r7.xyz, r7.xyz); + r4.w = -r3.y * r3.y + r3.w; + r4.w = r3.z * r3.z + -r4.w; + r7.x = cmp(0 < r4.w); + r4.w = sqrt(r4.w); + r7.y = -r4.w + -r3.z; + r8.x = max(0, r7.y); + r4.w = r4.w + -r3.z; + r8.y = r4.w + -r8.x; + r7.yz = r7.xx ? r8.xy : 0; + if (r7.x != 0) { + r3.w = -cb2[30].w * cb2[30].w + r3.w; + r3.w = r3.z * r3.z + -r3.w; + r4.w = cmp(0 < r3.w); + r3.w = sqrt(r3.w); + r3.z = -r3.z + -r3.w; + r3.z = max(0, r3.z); + r3.z = r4.w ? r3.z : 0; + r3.w = cmp(0 < r3.z); + r3.z = r3.z + -r7.y; + r3.z = min(r7.z, r3.z); + r3.z = r3.w ? r3.z : r7.z; + r3.z = r4.w ? r3.z : r7.z; + r3.w = cmp(0 < r3.z); + if (r3.w != 0) { + r3.z = r3.z / cb2[30].y; + r3.w = dot(-r4.xyz, r5.xyz); + r7.xzw = cb2[30].zzz * float3(0.000244140625,0.0012673497,0.00266802101); + r8.xyz = r4.xyz * r7.yyy + cb0[44].xyz; + r9.xyz = r4.xyz * r3.zzz; + r8.xyz = r9.xyz * float3(0.5,0.5,0.5) + r8.xyz; + r9.xyz = float3(0.5,0.5,0.5) * r5.xyz; + r10.xyz = r8.xyz; + r11.xyz = float3(0,0,0); + r4.w = 0; + r7.y = 0; + while (true) { + r8.w = (int)r7.y; + r8.w = cmp(r8.w >= cb2[30].y); + if (r8.w != 0) break; + r12.xyz = -cb2[14].xyz + r10.xyz; + r8.w = dot(r12.xyz, r12.xyz); + r9.w = sqrt(r8.w); + r9.w = -cb2[30].w + r9.w; + r9.w = r9.w * r3.x; + r9.w = cb2[31].y * -r9.w; + r9.w = 1.44269502 * r9.w; + r9.w = exp2(r9.w); + r9.w = r9.w * r3.z; + r9.w = min(3.40282347e+038, r9.w); + r4.w = r9.w + r4.w; + r10.w = dot(r5.xyz, r12.xyz); + r8.w = -r3.y * r3.y + r8.w; + r8.w = r10.w * r10.w + -r8.w; + r11.w = cmp(0 < r8.w); + r8.w = sqrt(r8.w); + r12.x = -r10.w + r8.w; + r8.w = -r10.w + -r8.w; + r8.w = max(0, r8.w); + r8.w = r12.x + -r8.w; + r8.w = r11.w ? r8.w : 0; + r8.w = r8.w / cb2[31].x; + r12.xyz = r9.xyz * r8.www + r10.xyz; + r13.xyz = r12.xyz; + r10.w = 0; + r11.w = 0; + while (true) { + r12.w = (int)r11.w; + r12.w = cmp(r12.w >= cb2[31].x); + if (r12.w != 0) break; + r14.xyz = -cb2[14].xyz + r13.xyz; + r15.xyz = r5.xyz * r8.www + r13.xyz; + r12.w = dot(r14.xyz, r14.xyz); + r12.w = sqrt(r12.w); + r12.w = -cb2[30].w + r12.w; + r12.w = max(0, r12.w); + r12.w = r12.w * r3.x; + r12.w = cb2[31].y * -r12.w; + r12.w = 1.44269502 * r12.w; + r12.w = exp2(r12.w); + r12.w = r12.w + r10.w; + r13.w = (int)r11.w + 1; + r13.xyz = r15.xyz; + r10.w = r12.w; + r11.w = r13.w; + continue; + } + r8.w = r10.w * r8.w + r4.w; + r12.xyz = r8.www * r7.xzw; + r12.xyz = float3(-1.44269502,-1.44269502,-1.44269502) * r12.xyz; + r12.xyz = exp2(r12.xyz); + r11.xyz = r12.xyz * r9.www + r11.xyz; + r10.xyz = r4.xyz * r3.zzz + r10.xyz; + r7.y = (int)r7.y + 1; + } + r3.x = r3.w * r3.w + 1; + r3.x = 0.0596831031 * r3.x; + r3.xyz = r11.xyz * r3.xxx; + r3.xyz = r3.xyz * r7.xzw; + } else { + r3.xyz = float3(0,0,0); + } + } else { + r3.xyz = float3(0,0,0); + } + r4.xyw = cb2[31].zzz * r3.yzx; + r3.x = cmp(r4.x >= r4.y); + r3.x = r3.x ? 1.000000 : 0; + r7.xy = r4.yx; + r7.zw = float2(-1,0.666666687); + r8.xy = r3.yz * cb2[31].zz + -r7.xy; + r8.zw = float2(1,-1); + r3.xyzw = r3.xxxx * r8.xyzw + r7.xyzw; + r5.x = cmp(r4.w >= r3.x); + r5.x = r5.x ? 1.000000 : 0; + r4.xyz = r3.xyw; + r3.xyw = r4.wyx; + r3.xyzw = r3.xyzw + -r4.xyzw; + r3.xyzw = r5.xxxx * r3.xyzw + r4.xyzw; + r4.x = min(r3.w, r3.y); + r4.x = -r4.x + r3.x; + r3.y = r3.w + -r3.y; + r3.w = r4.x * 6 + 9.99999975e-005; + r3.y = r3.y / r3.w; + r3.y = r3.z + r3.y; + r3.y = cb2[31].w + abs(r3.y); + r3.yzw = float3(1,0.666666687,0.333333343) + r3.yyy; + r3.yzw = frac(r3.yzw); + r3.yzw = r3.yzw * float3(6,6,6) + float3(-3,-3,-3); + r3.yzw = saturate(float3(-1,-1,-1) + abs(r3.yzw)); + r4.y = 9.99999975e-005 + r3.x; + r4.x = r4.x / r4.y; + r3.yzw = float3(-1,-1,-1) + r3.yzw; + r3.yzw = r4.xxx * r3.yzw + float3(1,1,1); + r4.xyz = r3.yzw * r3.xxx; + r4.w = cmp(cb2[2].y >= 0.5); + r4.w = r4.w ? 1.000000 : 0; + r5.xy = cmp(float2(1.5,0.5) >= cb2[2].yy); + r5.xy = r5.xy ? float2(1,1) : 0; + r4.w = -r4.w * r5.x + 1; + r4.w = -r6.w * r4.w + 1; + r5.x = -r5.w * r0.z + 1; + r5.x = -r5.x * r5.y + 1; + r5.xyz = r6.xyz * r5.xxx; + r5.xyz = r2.yzw * r4.www + r5.xyz; + r4.xyz = r4.xyz * r0.xxx; + r3.xyz = r3.yzw * r3.xxx + -r4.xyz; + r3.xyz = cb2[32].yyy * r3.xyz + r4.xyz; + r2.yzw = r3.xyz * r0.zzz + r5.xyz; + } + r0.x = v1.y * cb1[74].w + cb1[75].w; + r0.z = r2.x * cb1[72].w + -cb1[71].w; + r0.xz = max(float2(0.00999999978,0), r0.xz); + r3.x = -1.44269502 * r0.x; + r3.x = exp2(r3.x); + r3.x = 1 + -r3.x; + r0.x = r3.x / r0.x; + r3.x = v1.y * cb1[74].w + cb1[76].w; + r3.x = 1.44269502 * r3.x; + r3.x = exp2(r3.x); + r0.x = r3.x * r0.x; + r0.x = -r0.z * r0.x; + r3.xyz = cb1[73].xyz * r0.xxx; + r3.xyz = float3(1.44269502,1.44269502,1.44269502) * r3.xyz; + r3.xyz = exp2(r3.xyz); + r0.x = dot(r1.yzw, cb1[72].xyz); + r0.z = cb1[73].w * cb1[73].w + 1; + r3.w = dot(r0.xx, cb1[73].ww); + r0.z = -r3.w + r0.z; + r3.w = cmp(0 < cb1[83].z); + if (r3.w != 0) { + r4.xy = (uint2)v0.xy; + r4.z = 7 & asint(cb1[26].w); + r5.xyz = mad((int3)r4.xyz, int3(0x19660d,0x19660d,0x19660d), int3(0x3c6ef35f,0x3c6ef35f,0x3c6ef35f)); + r3.w = mad((int)r5.y, (int)r5.z, (int)r5.x); + r4.z = mad((int)r5.z, (int)r3.w, (int)r5.y); + r4.w = mad((int)r3.w, (int)r4.z, (int)r5.z); + r5.x = mad((int)r4.z, (int)r4.w, (int)r3.w); + r6.x = -cb0[0].z; + r6.y = -cb0[1].z; + r6.z = -cb0[2].z; + r3.w = dot(r1.yzw, r6.xyz); + r5.z = cmp(5.96046448e-008 < r3.w); + r3.w = 1 / r3.w; + r3.w = r5.z ? r3.w : 0; + r3.w = cb1[83].w * r3.w; + r5.z = 1 / r2.x; + r5.w = r5.z * r3.w; + r6.x = r5.w * r0.y + cb0[44].y; + r5.w = -r5.w * r0.y + r0.y; + r3.w = -r3.w * r5.z + 1; + r5.z = r3.w * r2.x; + r6.y = cb1[77].z * r5.w; + r5.w = cb1[80].x * r5.w; + r5.w = max(-127, r5.w); + r6.z = -cb1[77].x + r6.x; + r6.z = cb1[77].z * r6.z; + r6.yz = max(float2(-127,-127), r6.yz); + r6.z = exp2(-r6.z); + r6.z = cb1[77].y * r6.z; + r6.w = cmp(5.96046448e-008 < abs(r6.y)); + r7.x = exp2(-r6.y); + r7.x = 1 + -r7.x; + r7.x = r7.x / r6.y; + r6.y = -r6.y * 0.240226507 + 0.693147182; + r6.y = r6.w ? r7.x : r6.y; + r6.x = -cb1[80].z + r6.x; + r6.x = cb1[80].x * r6.x; + r6.x = max(-127, r6.x); + r6.x = exp2(-r6.x); + r6.x = cb1[80].y * r6.x; + r6.w = cmp(5.96046448e-008 < abs(r5.w)); + r7.x = exp2(-r5.w); + r7.x = 1 + -r7.x; + r7.x = r7.x / r5.w; + r5.w = -r5.w * 0.240226507 + 0.693147182; + r5.w = r6.w ? r7.x : r5.w; + r5.w = r6.x * r5.w; + r5.w = r6.z * r6.y + r5.w; + r6.xy = saturate(r2.xx * cb1[78].wy + cb1[78].zx); + r5.z = r5.w * r5.z; + r5.z = exp2(-r5.z); + r5.z = min(1, r5.z); + r5.z = max(cb1[79].w, r5.z); + r5.z = r5.z + r6.y; + r5.z = r5.z + r6.x; + r5.z = min(1, r5.z); + r5.y = mad((int)r4.w, (int)r5.x, (int)r4.z); + r4.zw = (uint2)r5.xy >> int2(16,16); + r4.xyzw = (uint4)r4.xyzw; + r4.zw = r4.zw * float2(3.05180438e-005,3.05180438e-005) + float2(-1,-1); + r4.xy = r4.zw * cb1[87].ww + r4.xy; + r4.xy = cb1[85].xy * r4.xy; + r4.w = v0.w * cb1[84].x + cb1[84].y; + r4.w = log2(r4.w); + r4.w = cb1[84].z * r4.w; + r4.z = r4.w / cb1[83].z; + r4.xyzw = t0.SampleLevel(s0_s, r4.xyz, 0).xyzw; + r5.x = -cb1[86].z + v0.w; + r5.x = saturate(1000000 * r5.x); + r4.xyzw = float4(-0,-0,-0,-1) + r4.xyzw; + r4.xyzw = r5.xxxx * r4.xyzw + float4(0,0,0,1); + r5.x = 1 + -r5.z; + r5.y = saturate(dot(-r1.yzw, cb1[81].xyz)); + r5.y = log2(r5.y); + r5.y = cb1[82].w * r5.y; + r5.y = exp2(r5.y); + r6.yzw = cb1[82].xyz * r5.yyy; + r3.w = r3.w * r2.x + -cb1[81].w; + r3.w = max(0, r3.w); + r3.w = r5.w * r3.w; + r3.w = exp2(-r3.w); + r3.w = min(1, r3.w); + r3.w = 1 + -r3.w; + r6.yzw = r6.yzw * r3.www; + r3.w = 1 + -r6.x; + r6.xyz = r6.yzw * r3.www; + r5.xyw = cb1[79].xyz * r5.xxx + r6.xyz; + r4.xyz = r5.xyw * r4.www + r4.xyz; + r3.w = r4.w * r5.z; + } else { + r4.w = cb1[77].z * r0.y; + r4.w = max(-127, r4.w); + r0.y = cb1[80].x * r0.y; + r0.y = max(-127, r0.y); + r5.x = -cb1[77].x + cb0[44].y; + r5.x = cb1[77].z * r5.x; + r5.x = max(-127, r5.x); + r5.x = exp2(-r5.x); + r5.x = cb1[77].y * r5.x; + r5.y = cmp(5.96046448e-008 < abs(r4.w)); + r5.z = exp2(-r4.w); + r5.z = 1 + -r5.z; + r5.z = r5.z / r4.w; + r4.w = -r4.w * 0.240226507 + 0.693147182; + r4.w = r5.y ? r5.z : r4.w; + r5.y = -cb1[80].z + cb0[44].y; + r5.y = cb1[80].x * r5.y; + r5.y = max(-127, r5.y); + r5.y = exp2(-r5.y); + r5.y = cb1[80].y * r5.y; + r5.z = cmp(5.96046448e-008 < abs(r0.y)); + r5.w = exp2(-r0.y); + r5.w = 1 + -r5.w; + r5.w = r5.w / r0.y; + r0.y = -r0.y * 0.240226507 + 0.693147182; + r0.y = r5.z ? r5.w : r0.y; + r0.y = r5.y * r0.y; + r0.y = r5.x * r4.w + r0.y; + r5.xy = saturate(r2.xx * cb1[78].wy + cb1[78].zx); + r2.x = r0.y * r2.x; + r2.x = exp2(-r2.x); + r2.x = min(1, r2.x); + r2.x = max(cb1[79].w, r2.x); + r2.x = r2.x + r5.y; + r2.x = r2.x + r5.x; + r3.w = min(1, r2.x); + r2.x = 1 + -r3.w; + r1.y = saturate(dot(-r1.yzw, cb1[81].xyz)); + r1.y = log2(r1.y); + r1.y = cb1[82].w * r1.y; + r1.y = exp2(r1.y); + r1.yzw = cb1[82].xyz * r1.yyy; + r0.w = r0.w * r1.x + -cb1[81].w; + r0.w = max(0, r0.w); + r0.y = r0.y * r0.w; + r0.y = exp2(-r0.y); + r0.y = min(1, r0.y); + r0.y = 1 + -r0.y; + r1.xyz = r1.yzw * r0.yyy; + r0.y = 1 + -r5.x; + r1.xyz = r1.xyz * r0.yyy; + r4.xyz = cb1[79].xyz * r2.xxx + r1.xyz; + } + r0.y = dot(r2.yzw, float3(0.212672904,0.715152204,0.0721750036)); + r1.xyz = r2.yzw + -r0.yyy; + r1.xyz = cb1[104].www * r1.xyz + r0.yyy; + r1.xyz = cb1[104].xyz * r1.xyz; + r2.xyz = r3.xyz * r3.www; + r0.x = r0.x * r0.x + 1; + r0.x = 0.0596831031 * r0.x; + r0.xyw = cb1[74].xyz * r0.xxx + cb1[76].xyz; + r1.w = -cb1[73].w * cb1[73].w + 1; + r2.w = 12.566371 * r0.z; + r0.z = sqrt(r0.z); + r0.z = r2.w * r0.z; + r0.z = max(0.00100000005, r0.z); + r0.z = r1.w / r0.z; + r0.xyz = saturate(cb1[75].xyz * r0.zzz + r0.xyw); + r0.xyz = float3(255,255,255) * r0.xyz; + r3.xyz = float3(1,1,1) + -r3.xyz; + r0.xyz = r3.xyz * r0.xyz; + r0.xyz = r0.xyz * r3.www + r4.xyz; + o0.xyz = r1.xyz * r2.xyz + r0.xyz; + + // ========================================================================== + // SKYBOX DESATURATION (50%) ??? Tech Test Look + // ========================================================================== + if (TECH_TEST_LOOK > 0.5f) { + float skyboxLuma = dot(o0.xyz, float3(0.2126f, 0.7152f, 0.0722f)); + o0.xyz = lerp(o0.xyz, float3(skyboxLuma, skyboxLuma, skyboxLuma), 0.5f); + } + + r0.x = max(9.99999994e-009, v3.z); + r0.xy = v3.xy / r0.xx; + r0.z = max(9.99999994e-009, v4.z); + r0.zw = v4.xy / r0.zz; + r0.xy = r0.xy + -r0.zw; + r1.xy = float2(0.5,-0.5) * r0.xy; + r1.xy = sqrt(abs(r1.xy)); + r1.xy = sqrt(r1.xy); + r0.z = -r0.y; + r0.yw = cmp(float2(0,0) < r0.xz); + r0.xz = cmp(r0.xz < float2(0,0)); + r0.xy = (int2)-r0.yw + (int2)r0.xz; + r0.xy = (int2)r0.xy; + r0.xy = r1.xy * r0.xy; + o1.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); + o0.w = 1; + o1.zw = float2(0,0); + return; +} diff --git a/src/games/endfield/others/skybox_0x270E5BA5.ps_5_0.hlsl b/src/games/endfield/others/skybox_0x270E5BA5.ps_5_0.hlsl new file mode 100644 index 0000000000..43e2ac072d --- /dev/null +++ b/src/games/endfield/others/skybox_0x270E5BA5.ps_5_0.hlsl @@ -0,0 +1,637 @@ +#include "../shared.h" + +// ============================================================================ +// SKYBOX / SKY RENDERING SHADER +// ============================================================================ +// Textures: +// t0: 3D LUT for volumetric fog/scattering +// t1: Environment/fallback sky cubemap lookup +// t2: Main skybox texture (4096x2048 equirectangular) +// t3: Reflection probe 1 texture +// t4: Reflection probe 2 texture +// t5: Reflection probe 1 detail/tint +// t6: Reflection probe 2 detail/tint +// ============================================================================ + +Texture2D t6 : register(t6); + +Texture2D t5 : register(t5); + +Texture2D t4 : register(t4); + +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture3D t0 : register(t0); + +SamplerState s5_s : register(s5); + +SamplerState s4_s : register(s4); + +SamplerState s3_s : register(s3); + +SamplerState s2_s : register(s2); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb2 : register(b2) +{ + float4 cb2[45]; +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[105]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[45]; +} + + + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float3 v1 : TEXCOORD0, + float2 v2 : TEXCOORD1, + float3 v3 : TEXCOORD2, + float3 v4 : TEXCOORD3, + float3 v5 : TEXCOORD4, + out float4 o0 : SV_Target0, + out float4 o1 : SV_Target1) +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8; + uint4 bitmask, uiDest; + float4 fDest; + + // ========================================================================== + // VIEW DIRECTION CALCULATION + // ========================================================================== + r0.xyz = -cb0[44].xyz + v1.xyz; + r0.w = dot(r0.xyz, r0.xyz); + r1.x = max(9.99999994e-009, r0.w); + r1.x = rsqrt(r1.x); + r1.yzw = r1.xxx * r0.xyz; + r2.x = r1.x * r0.w; + // ========================================================================== + // OCTAHEDRAL / CUBEMAP UV MAPPING FOR t1 (fallback environment) + // ========================================================================== + r2.y = dot(abs(r1.yzw), float3(1,1,1)); + r2.y = 1 / r2.y; + r2.zw = r2.yy * r1.yw; + r2.z = r2.z + r2.w; + r2.y = r1.y * r2.y + -r2.w; + r3.xy = float2(1,1) + r2.zy; + r2.yz = float2(0.5,0.5) * r3.xy; + r2.yzw = t1.SampleLevel(s0_s, r2.yz, 0).xyz; + r3.x = saturate(r1.z * 10 + 1); + // ========================================================================== + // PROCEDURAL SUN DISK CALCULATION + // ========================================================================== + // cb2[44].xyz = sun direction + // cb2[43].x = sun size/falloff exponent + // cb2[42].xyz = sun color, cb2[42].w = sun intensity + r3.y = saturate(dot(-cb2[44].xyz, -r1.yzw)); // Sun-view alignment (1 = looking at sun) + r3.y = log2(r3.y); + // Sun size adjustment: multiply exponent to shrink disk (5.0 = ~80% smaller) + float sunSizeMultiplier = (SUN_INTENSITY > 0.5f) ? 5.0f : 1.0f; + r3.y = cb2[43].x * sunSizeMultiplier * r3.y; // Apply sun size exponent + r3.y = exp2(r3.y); + r3.z = r3.y * r3.y + 1; // Soft falloff numerator + r3.y = -r3.y * 1.98000002 + 1.98010004; // Soft falloff denominator + r3.w = log2(cb2[42].w); // Sun intensity + r3.zw = float2(0.0100164423,0.649999976) * r3.zw; + r3.w = exp2(r3.w); + r3.w = 8 * r3.w; + r3.y = log2(r3.y); + r3.y = r3.w * r3.y; + r3.y = exp2(r3.y); + r3.y = max(9.99999975e-005, r3.y); + r3.y = r3.z / r3.y; // Final sun disk intensity + // ========================================================================== + // EQUIRECTANGULAR SKYBOX UV CALCULATION (for t2: 4096x2048) + // ========================================================================== + r3.z = r1.y / r1.w; + r3.w = cmp(abs(r3.z) < 1); + r4.x = 1 / abs(r3.z); + r4.x = r3.w ? abs(r3.z) : r4.x; + r4.y = r4.x * r4.x; + r4.z = r4.y * 0.0872929022 + -0.301894993; + r4.y = r4.z * r4.y + 1; + r4.z = r4.y * r4.x; + r4.x = -r4.y * r4.x + 1.57079637; + r3.w = r3.w ? r4.z : r4.x; + r4.x = abs(r1.z) * 0.0468878001 + -0.203471005; + r4.x = r4.x * abs(r1.z) + 1.57079601; + r4.y = 1 + -abs(r1.z); + r4.y = sqrt(r4.y); + r4.z = r4.x * r4.y; + r3.z = cmp(r3.z < 0); + r3.z = r3.z ? -r3.w : r3.w; + r5.xy = cmp(r1.yz >= float2(0,0)); + r3.w = r5.x ? 3.1415925 : -3.1415925; + r4.w = cmp(r1.w < 0); + r4.w = r4.w ? 1.000000 : 0; + r6.x = r3.w * r4.w + r3.z; + r3.z = -r4.x * r4.y + 3.14159274; + r3.z = r5.y ? r4.z : r3.z; + r6.y = 1.57079637 + -r3.z; + r3.zw = r6.xy * float2(0.159099996,0.318300009) + float2(0.5,0.5); + r3.z = -cb2[41].w * 0.00277777785 + r3.z; + r4.x = 1 + r3.z; + r4.y = r3.w * 2 + -1; + // ========================================================================== + // SKYBOX TEXTURE SAMPLE (t2: 4096x2048 equirectangular) + // ========================================================================== + r4.xyzw = t2.SampleBias(s1_s, r4.xy, cb1[26].x).xyzw; + r5.xzw = float3(-0.5,-0.5,-0.5) + r4.xyz; + r4.xyz = r5.xzw * cb2[40].yyy + float3(0.5,0.5,0.5); + r6.xyzw = cb2[38].xyzw * r4.xyzw; + r3.z = max(r6.x, r6.y); + r4.xyzw = -r4.xyzw * cb2[38].xyzw + r3.zzzz; + r4.xyzw = cb2[40].xxxx * r4.xyzw + r6.xyzw; + r4.xyzw = cb2[39].xyzw * r4.xyzw; + r3.z = r5.y ? 1.000000 : 0; + r5.x = r4.w * r3.z; + r5.x = saturate(r5.x); + // ========================================================================== + // SUN DISK BLENDING + // ========================================================================== + // Smoothstep for sun edge falloff + r3.w = -0.5 + r3.y; + r3.w = saturate(r3.w + r3.w); + r4.w = r3.w * -2 + 3; + r3.w = r3.w * r3.w; + r3.w = r4.w * r3.w; + r4.w = r3.w * r3.y; + r3.y = -r3.w * r3.y + r3.y; + r3.y = cb2[43].y * r3.y + r4.w; // Sun brightness + r5.yzw = cb2[42].xyz * r3.yyy; // Apply sun color + r5.yzw = cb2[43].www * r5.yzw; // Sun intensity multiplier + r5.yzw = cb2[44].www * r5.yzw; // Sun shadow/occlusion + r5.yzw = max(float3(0,0,0), r5.yzw); + // HDR Sun toggle + if (SUN_INTENSITY > 0.5f) { + // Calculate sun-view alignment (1 = looking directly at sun center) + float sunDot = saturate(dot(-cb2[44].xyz, -r1.yzw)); + + // === HORIZON REDDENING === + // Sun direction Y component indicates height (-1 = below, 0 = horizon, 1 = zenith) + float sunHeight = saturate(cb2[44].y + 0.1f); // Shift so effect starts slightly above horizon + + // Warm shift when sun is low (more red/orange near horizon) + float3 horizonTint = lerp(float3(1.0f, 0.6f, 0.3f), // Low sun: warm orange + float3(1.0f, 0.95f, 0.9f), // High sun: nearly white + sunHeight); + + // === LIMB DARKENING === + // Real stars appear darker at edges due to optical depth through atmosphere + // Use a soft power curve - center is brightest, edges darken + float limbDarkening = pow(sunDot, 0.4f); // Subtle darkening toward edges + + // === CHROMATIC SUN EDGE === + // Core is white-hot, edges transition to yellow/orange + float3 sunCoreColor = float3(1.0f, 1.0f, 1.0f); // White-hot center + float3 sunEdgeColor = float3(1.0f, 0.85f, 0.6f); // Warm yellow edge + + // Blend from edge color to core color based on how centered we are + float coreFactor = pow(sunDot, 3.0f); // Sharp transition to white core + float3 chromaticColor = lerp(sunEdgeColor, sunCoreColor, coreFactor); + + // === COMBINE SUN DISK === + // Apply limb darkening and chromatic color to base sun + r5.yzw = r5.yzw * limbDarkening * chromaticColor * horizonTint; + + // Boost the sun intensity for HDR + r5.yzw = r5.yzw * 5.0f; + + // === CORONA GLOW === + // Inner corona (tight glow) + float coronaInner = pow(sunDot, 64.0f); + // Outer corona (wide soft glow) + float coronaOuter = pow(sunDot, 8.0f); + + // Corona colors - also affected by horizon + float3 coronaColorInner = lerp(float3(1.0f, 0.5f, 0.2f), // Warm inner at horizon + float3(1.0f, 0.7f, 0.3f), // Normal inner + sunHeight); + float3 coronaColorOuter = lerp(float3(1.0f, 0.3f, 0.1f), // Deep orange at horizon + float3(1.0f, 0.5f, 0.2f), // Normal outer + sunHeight); + + float3 corona = coronaInner * coronaColorInner * 2.0f + + coronaOuter * coronaColorOuter * 0.5f; + + // Modulate corona by sun color/intensity from game + corona *= cb2[42].xyz * cb2[42].w; + corona *= cb2[44].w; // Sun shadow/occlusion + + // Add corona to sun + r5.yzw += corona; + + // === DESATURATE SUN (50%) === + float sunLuma = dot(r5.yzw, float3(0.2126f, 0.7152f, 0.0722f)); + r5.yzw = lerp(r5.yzw, float3(sunLuma, sunLuma, sunLuma), 0.5f); + + // === BLOOM BOOST === + r5.yzw *= 10.0f; + + } else { + // Vanilla clamp + r5.yzw = min(float3(3,3,3), r5.yzw); + } + + // Blend environment + sun + skybox + r2.yzw = r2.yzw * r3.xxx + r5.yzw; + r3.xyw = r4.xyz * r3.zzz + -r2.yzw; + r2.yzw = r5.xxx * r3.xyw + r2.yzw; + // ========================================================================== + // REFLECTION PROBE 1 (cb2[0].x enables this) + // ========================================================================== + r3.xy = cmp(float2(0.75,0.75) < cb2[0].xy); + if (r3.x != 0) { + r3.x = rsqrt(r0.w); + r5.yzw = r3.xxx * r0.yxz; + r3.x = dot(r5.zyw, cb2[15].xyz); + r3.w = cb2[19].x * cb2[19].x + -1; + r3.w = r3.x * r3.x + r3.w; + r4.w = max(0, r3.w); + r4.w = sqrt(r4.w); + r3.x = -r4.w + r3.x; + r6.xyz = r5.zyw * r3.xxx + -cb2[15].xyz; + r6.xyz = r6.xyz / cb2[19].xxx; + r3.x = dot(r6.xyz, cb2[21].xyz); + r7.xyz = -cb2[21].xyz * r3.xxx + r6.xyz; + r4.w = dot(r7.xyz, r7.xyz); + r4.w = rsqrt(r4.w); + r7.xyz = r7.xyz * r4.www; + r4.w = dot(r7.xyz, cb2[25].xyz); + r6.w = cmp(0 < r4.w); + r4.w = cmp(r4.w < 0); + r4.w = (int)-r6.w + (int)r4.w; + r4.w = (int)r4.w; + r6.w = saturate(-r4.w); + r7.x = dot(r7.xyz, cb2[23].xyz); + r7.y = 1 + -abs(r7.x); + r7.y = sqrt(r7.y); + r7.z = abs(r7.x) * -0.0187292993 + 0.0742610022; + r7.z = r7.z * abs(r7.x) + -0.212114394; + r7.z = r7.z * abs(r7.x) + 1.57072878; + r7.w = r7.z * r7.y; + r7.w = r7.w * -2 + 3.14159274; + r7.x = cmp(r7.x < -r7.x); + r7.x = r7.x ? r7.w : 0; + r7.x = r7.z * r7.y + r7.x; + r4.w = r7.x * r4.w; + r7.x = r4.w * 0.159154937 + r6.w; + r4.w = r3.x * r3.x; + r4.w = r4.w * -0.222222224 + -0.277777791; + r7.y = r4.w * -r3.x + 0.50000006; + r8.xyzw = t3.SampleBias(s2_s, r7.xy, cb1[26].x).xyzw; + r3.x = saturate(dot(cb2[17].xyz, r6.xyz)); + r3.x = saturate(r3.x * cb2[1].x + cb2[1].z); + r6.xyz = t5.SampleBias(s4_s, r7.xy, cb1[26].x).xyz; + r6.xyz = cb2[9].xyz * r6.xyz; + r8.xyz = r8.xyz * r3.xxx + r6.xyz; + r3.x = dot(cb2[15].xyz, cb2[15].xyz); + r3.x = rsqrt(r3.x); + r6.xyz = cb2[15].xyz * r3.xxx; + r3.x = saturate(dot(r5.zyw, r6.xyz)); + r3.x = r3.w * r3.x; + r3.x = max(0, r3.x); + r3.x = cmp(0 < r3.x); + r3.x = r3.x ? 1.000000 : 0; + r6.xyzw = r8.xyzw * r3.xxxx; + r6.xyz = r6.xyz * r8.www; + r6.xyzw = cb2[5].xyzw * r6.xyzw; + r5.y = saturate(r5.y); + r3.x = -1 + r5.y; + r3.x = cb2[29].w * r3.x + 1; + r7.xyzw = r6.xyzw * r3.xxxx; + r3.w = cmp(cb2[2].x >= 0.5); + r3.w = r3.w ? 1.000000 : 0; + r5.yz = cmp(float2(1.5,0.5) >= cb2[2].xx); + r5.yz = r5.yz ? float2(1,1) : 0; + r3.w = -r3.w * r5.y + 1; + r3.w = -r7.w * r3.w + 1; + r4.w = dot(r7.xyz, float3(0.212672904,0.715152204,0.0721750036)); + r6.xyz = r6.xyz * r3.xxx + -r4.www; + r6.xyz = cb1[104].www * r6.xyz + r4.www; + r6.xyz = cb1[104].xyz * r6.xyz; + r3.x = -r6.w * r3.x + 1; + r3.x = -r3.x * r5.z + 1; + r5.yzw = r6.xyz * r3.xxx; + r2.yzw = r2.yzw * r3.www + r5.yzw; + } + // ========================================================================== + // REFLECTION PROBE 2 (cb2[0].y enables this) + // ========================================================================== + if (r3.y != 0) { + r3.x = rsqrt(r0.w); + r3.xyw = r3.xxx * r0.yxz; + r0.x = dot(r3.yxw, cb2[16].xyz); + r0.z = cb2[20].x * cb2[20].x + -1; + r0.z = r0.x * r0.x + r0.z; + r4.w = max(0, r0.z); + r4.w = sqrt(r4.w); + r0.x = -r4.w + r0.x; + r5.yzw = r3.yxw * r0.xxx + -cb2[16].xyz; + r5.yzw = r5.yzw / cb2[20].xxx; + r0.x = dot(r5.yzw, cb2[22].xyz); + r6.xyz = -cb2[22].xyz * r0.xxx + r5.yzw; + r4.w = dot(r6.xyz, r6.xyz); + r4.w = rsqrt(r4.w); + r6.xyz = r6.xyz * r4.www; + r4.w = dot(r6.xyz, cb2[26].xyz); + r6.w = cmp(0 < r4.w); + r4.w = cmp(r4.w < 0); + r4.w = (int)-r6.w + (int)r4.w; + r4.w = (int)r4.w; + r6.w = saturate(-r4.w); + r6.x = dot(r6.xyz, cb2[24].xyz); + r6.y = 1 + -abs(r6.x); + r6.y = sqrt(r6.y); + r6.z = abs(r6.x) * -0.0187292993 + 0.0742610022; + r6.z = r6.z * abs(r6.x) + -0.212114394; + r6.z = r6.z * abs(r6.x) + 1.57072878; + r7.x = r6.z * r6.y; + r7.x = r7.x * -2 + 3.14159274; + r6.x = cmp(r6.x < -r6.x); + r6.x = r6.x ? r7.x : 0; + r6.x = r6.z * r6.y + r6.x; + r4.w = r6.x * r4.w; + r6.x = r4.w * 0.159154937 + r6.w; + r4.w = r0.x * r0.x; + r4.w = r4.w * -0.222222224 + -0.277777791; + r6.y = r4.w * -r0.x + 0.50000006; + r7.xyzw = t4.SampleBias(s3_s, r6.xy, cb1[26].x).xyzw; + r0.x = saturate(dot(cb2[18].xyz, r5.yzw)); + r0.x = saturate(r0.x * cb2[1].y + cb2[1].w); + r5.yzw = t6.SampleBias(s5_s, r6.xy, cb1[26].x).xyz; + r5.yzw = cb2[10].xyz * r5.yzw; + r7.xyz = r7.xyz * r0.xxx + r5.yzw; + r0.x = dot(cb2[16].xyz, cb2[16].xyz); + r0.x = rsqrt(r0.x); + r5.yzw = cb2[16].xyz * r0.xxx; + r0.x = saturate(dot(r3.yxw, r5.yzw)); + r0.x = r0.z * r0.x; + r0.x = max(0, r0.x); + r0.x = cmp(0 < r0.x); + r0.x = r0.x ? 1.000000 : 0; + r6.xyzw = r7.xyzw * r0.xxxx; + r6.xyz = r6.xyz * r7.www; + r6.xyzw = cb2[6].xyzw * r6.xyzw; + r3.x = saturate(r3.x); + r0.x = -1 + r3.x; + r0.x = cb2[32].w * r0.x + 1; + r7.xyzw = r6.xyzw * r0.xxxx; + r0.z = cmp(cb2[2].y >= 0.5); + r0.z = r0.z ? 1.000000 : 0; + r3.xy = cmp(float2(1.5,0.5) >= cb2[2].yy); + r3.xy = r3.xy ? float2(1,1) : 0; + r0.z = -r0.z * r3.x + 1; + r0.z = -r7.w * r0.z + 1; + r0.x = -r6.w * r0.x + 1; + r0.x = -r0.x * r3.y + 1; + r3.xyw = r7.xyz * r0.xxx; + r2.yzw = r2.yzw * r0.zzz + r3.xyw; + } + // Final skybox blend + r3.xyz = r4.xyz * r3.zzz + -r2.yzw; + r2.yzw = r5.xxx * r3.xyz + r2.yzw; + // ========================================================================== + // ATMOSPHERIC FOG / SCATTERING (Height-based exponential fog) + // ========================================================================== + r0.x = v1.y * cb1[74].w + cb1[75].w; + r0.z = r2.x * cb1[72].w + -cb1[71].w; + r0.xz = max(float2(0.00999999978,0), r0.xz); + r3.x = -1.44269502 * r0.x; + r3.x = exp2(r3.x); + r3.x = 1 + -r3.x; + r0.x = r3.x / r0.x; + r3.x = v1.y * cb1[74].w + cb1[76].w; + r3.x = 1.44269502 * r3.x; + r3.x = exp2(r3.x); + r0.x = r3.x * r0.x; + r0.x = -r0.z * r0.x; + r3.xyz = cb1[73].xyz * r0.xxx; + r3.xyz = float3(1.44269502,1.44269502,1.44269502) * r3.xyz; + r3.xyz = exp2(r3.xyz); + r0.x = dot(r1.yzw, cb1[72].xyz); + r0.z = cb1[73].w * cb1[73].w + 1; + r3.w = dot(r0.xx, cb1[73].ww); + r0.z = -r3.w + r0.z; + // ========================================================================== + // VOLUMETRIC FOG SAMPLING (t0: 3D fog volume) + // ========================================================================== + r3.w = cmp(0 < cb1[83].z); + if (r3.w != 0) { + r4.xy = (uint2)v0.xy; + r4.z = 7 & asint(cb1[26].w); + r5.xyz = mad((int3)r4.xyz, int3(0x19660d,0x19660d,0x19660d), int3(0x3c6ef35f,0x3c6ef35f,0x3c6ef35f)); + r3.w = mad((int)r5.y, (int)r5.z, (int)r5.x); + r4.z = mad((int)r5.z, (int)r3.w, (int)r5.y); + r4.w = mad((int)r3.w, (int)r4.z, (int)r5.z); + r5.x = mad((int)r4.z, (int)r4.w, (int)r3.w); + r6.x = -cb0[0].z; + r6.y = -cb0[1].z; + r6.z = -cb0[2].z; + r3.w = dot(r1.yzw, r6.xyz); + r5.z = cmp(5.96046448e-008 < r3.w); + r3.w = 1 / r3.w; + r3.w = r5.z ? r3.w : 0; + r3.w = cb1[83].w * r3.w; + r5.z = 1 / r2.x; + r5.w = r5.z * r3.w; + r6.x = r5.w * r0.y + cb0[44].y; + r5.w = -r5.w * r0.y + r0.y; + r3.w = -r3.w * r5.z + 1; + r5.z = r3.w * r2.x; + r6.y = cb1[77].z * r5.w; + r5.w = cb1[80].x * r5.w; + r5.w = max(-127, r5.w); + r6.z = -cb1[77].x + r6.x; + r6.z = cb1[77].z * r6.z; + r6.yz = max(float2(-127,-127), r6.yz); + r6.z = exp2(-r6.z); + r6.z = cb1[77].y * r6.z; + r6.w = cmp(5.96046448e-008 < abs(r6.y)); + r7.x = exp2(-r6.y); + r7.x = 1 + -r7.x; + r7.x = r7.x / r6.y; + r6.y = -r6.y * 0.240226507 + 0.693147182; + r6.y = r6.w ? r7.x : r6.y; + r6.x = -cb1[80].z + r6.x; + r6.x = cb1[80].x * r6.x; + r6.x = max(-127, r6.x); + r6.x = exp2(-r6.x); + r6.x = cb1[80].y * r6.x; + r6.w = cmp(5.96046448e-008 < abs(r5.w)); + r7.x = exp2(-r5.w); + r7.x = 1 + -r7.x; + r7.x = r7.x / r5.w; + r5.w = -r5.w * 0.240226507 + 0.693147182; + r5.w = r6.w ? r7.x : r5.w; + r5.w = r6.x * r5.w; + r5.w = r6.z * r6.y + r5.w; + r6.xy = saturate(r2.xx * cb1[78].wy + cb1[78].zx); + r5.z = r5.w * r5.z; + r5.z = exp2(-r5.z); + r5.z = min(1, r5.z); + r5.z = max(cb1[79].w, r5.z); + r5.z = r5.z + r6.y; + r5.z = r5.z + r6.x; + r5.z = min(1, r5.z); + r5.y = mad((int)r4.w, (int)r5.x, (int)r4.z); + r4.zw = (uint2)r5.xy >> int2(16,16); + r4.xyzw = (uint4)r4.xyzw; + r4.zw = r4.zw * float2(3.05180438e-005,3.05180438e-005) + float2(-1,-1); + r4.xy = r4.zw * cb1[87].ww + r4.xy; + r4.xy = cb1[85].xy * r4.xy; + r4.w = v0.w * cb1[84].x + cb1[84].y; + r4.w = log2(r4.w); + r4.w = cb1[84].z * r4.w; + r4.z = r4.w / cb1[83].z; + r4.xyzw = t0.SampleLevel(s0_s, r4.xyz, 0).xyzw; + r5.x = -cb1[86].z + v0.w; + r5.x = saturate(1000000 * r5.x); + r4.xyzw = float4(-0,-0,-0,-1) + r4.xyzw; + r4.xyzw = r5.xxxx * r4.xyzw + float4(0,0,0,1); + r5.x = 1 + -r5.z; + r5.y = saturate(dot(-r1.yzw, cb1[81].xyz)); + r5.y = log2(r5.y); + r5.y = cb1[82].w * r5.y; + r5.y = exp2(r5.y); + r6.yzw = cb1[82].xyz * r5.yyy; + r3.w = r3.w * r2.x + -cb1[81].w; + r3.w = max(0, r3.w); + r3.w = r5.w * r3.w; + r3.w = exp2(-r3.w); + r3.w = min(1, r3.w); + r3.w = 1 + -r3.w; + r6.yzw = r6.yzw * r3.www; + r3.w = 1 + -r6.x; + r6.xyz = r6.yzw * r3.www; + r5.xyw = cb1[79].xyz * r5.xxx + r6.xyz; + r4.xyz = r5.xyw * r4.www + r4.xyz; + r3.w = r4.w * r5.z; + } else { + r4.w = cb1[77].z * r0.y; + r4.w = max(-127, r4.w); + r0.y = cb1[80].x * r0.y; + r0.y = max(-127, r0.y); + r5.x = -cb1[77].x + cb0[44].y; + r5.x = cb1[77].z * r5.x; + r5.x = max(-127, r5.x); + r5.x = exp2(-r5.x); + r5.x = cb1[77].y * r5.x; + r5.y = cmp(5.96046448e-008 < abs(r4.w)); + r5.z = exp2(-r4.w); + r5.z = 1 + -r5.z; + r5.z = r5.z / r4.w; + r4.w = -r4.w * 0.240226507 + 0.693147182; + r4.w = r5.y ? r5.z : r4.w; + r5.y = -cb1[80].z + cb0[44].y; + r5.y = cb1[80].x * r5.y; + r5.y = max(-127, r5.y); + r5.y = exp2(-r5.y); + r5.y = cb1[80].y * r5.y; + r5.z = cmp(5.96046448e-008 < abs(r0.y)); + r5.w = exp2(-r0.y); + r5.w = 1 + -r5.w; + r5.w = r5.w / r0.y; + r0.y = -r0.y * 0.240226507 + 0.693147182; + r0.y = r5.z ? r5.w : r0.y; + r0.y = r5.y * r0.y; + r0.y = r5.x * r4.w + r0.y; + r5.xy = saturate(r2.xx * cb1[78].wy + cb1[78].zx); + r2.x = r0.y * r2.x; + r2.x = exp2(-r2.x); + r2.x = min(1, r2.x); + r2.x = max(cb1[79].w, r2.x); + r2.x = r2.x + r5.y; + r2.x = r2.x + r5.x; + r3.w = min(1, r2.x); + r2.x = 1 + -r3.w; + r1.y = saturate(dot(-r1.yzw, cb1[81].xyz)); + r1.y = log2(r1.y); + r1.y = cb1[82].w * r1.y; + r1.y = exp2(r1.y); + r1.yzw = cb1[82].xyz * r1.yyy; + r0.w = r0.w * r1.x + -cb1[81].w; + r0.w = max(0, r0.w); + r0.y = r0.y * r0.w; + r0.y = exp2(-r0.y); + r0.y = min(1, r0.y); + r0.y = 1 + -r0.y; + r1.xyz = r1.yzw * r0.yyy; + r0.y = 1 + -r5.x; + r1.xyz = r1.xyz * r0.yyy; + r4.xyz = cb1[79].xyz * r2.xxx + r1.xyz; + } + // ========================================================================== + // FINAL COLOR GRADING + // ========================================================================== + // Desaturation based on luminance + r0.y = dot(r2.yzw, float3(0.212672904,0.715152204,0.0721750036)); // Luminance + r1.xyz = r2.yzw + -r0.yyy; + r1.xyz = cb1[104].www * r1.xyz + r0.yyy; // Saturation control + r1.xyz = cb1[104].xyz * r1.xyz; // Color tint/exposure + r2.xyz = r3.xyz * r3.www; + r0.x = r0.x * r0.x + 1; + r0.x = 0.0596831031 * r0.x; + r0.xyw = cb1[74].xyz * r0.xxx + cb1[76].xyz; + r1.w = -cb1[73].w * cb1[73].w + 1; + r2.w = 12.566371 * r0.z; + r0.z = sqrt(r0.z); + r0.z = r2.w * r0.z; + r0.z = max(0.00100000005, r0.z); + r0.z = r1.w / r0.z; + r0.xyz = saturate(cb1[75].xyz * r0.zzz + r0.xyw); + r0.xyz = float3(255,255,255) * r0.xyz; + r3.xyz = float3(1,1,1) + -r3.xyz; + r0.xyz = r3.xyz * r0.xyz; + r0.xyz = r0.xyz * r3.www + r4.xyz; + o0.xyz = r1.xyz * r2.xyz + r0.xyz; + + // ========================================================================== + // SKYBOX DESATURATION (50%) - Tech Test Look + // ========================================================================== + if (TECH_TEST_LOOK > 0.5f) { + float skyboxLuma = dot(o0.xyz, float3(0.2126f, 0.7152f, 0.0722f)); + o0.xyz = lerp(o0.xyz, float3(skyboxLuma, skyboxLuma, skyboxLuma), 0.5f); + } + + // ========================================================================== + // VELOCITY BUFFER OUTPUT (for motion blur / TAA) + // ========================================================================== + r0.x = max(9.99999994e-009, v3.z); + r0.xy = v3.xy / r0.xx; + r0.z = max(9.99999994e-009, v4.z); + r0.zw = v4.xy / r0.zz; + r0.xy = r0.xy + -r0.zw; + r1.xy = float2(0.5,-0.5) * r0.xy; + r1.xy = sqrt(abs(r1.xy)); + r1.xy = sqrt(r1.xy); + r0.z = -r0.y; + r0.yw = cmp(float2(0,0) < r0.xz); + r0.xz = cmp(r0.xz < float2(0,0)); + r0.xy = (int2)-r0.yw + (int2)r0.xz; + r0.xy = (int2)r0.xy; + r0.xy = r1.xy * r0.xy; + o1.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); + o0.w = 1; + o1.zw = float2(0,0); + return; +} diff --git a/src/games/endfield/others/skybox_0x3710A6A1.ps_5_0.hlsl b/src/games/endfield/others/skybox_0x3710A6A1.ps_5_0.hlsl deleted file mode 100644 index d9db139dc7..0000000000 --- a/src/games/endfield/others/skybox_0x3710A6A1.ps_5_0.hlsl +++ /dev/null @@ -1,600 +0,0 @@ -// ---- Created with 3Dmigoto v1.4.1 on Thu Jan 22 13:20:49 2026 - -#include "../shared.h" - -// ============================================================================ -// SKYBOX / SKY RENDERING SHADER -// ============================================================================ -// Textures: -// t0: 3D LUT for volumetric fog/scattering -// t1: Environment/fallback sky cubemap lookup -// t2: Main skybox texture (4096x2048 equirectangular) -// t3: Reflection probe 1 texture -// t4: Reflection probe 2 texture -// t5: Reflection probe 1 detail/tint -// t6: Reflection probe 2 detail/tint -// ============================================================================ - -Texture2D t6 : register(t6); - -Texture2D t5 : register(t5); - -Texture2D t4 : register(t4); - -Texture2D t3 : register(t3); - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture3D t0 : register(t0); - -SamplerState s5_s : register(s5); - -SamplerState s4_s : register(s4); - -SamplerState s3_s : register(s3); - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb1 : register(b1) -{ - float4 cb1[52]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[187]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float4 v1 : TEXCOORD0, - float4 v2 : TEXCOORD1, - float4 v3 : TEXCOORD2, - float4 v4 : TEXCOORD3, - float3 v5 : TEXCOORD4, - out float4 o0 : SV_Target0, - out float4 o1 : SV_Target1) -{ - float4 r0,r1,r2,r3,r4,r5,r6,r7,r8; - uint4 bitmask, uiDest; - float4 fDest; - - // ========================================================================== - // VIEW DIRECTION CALCULATION - // ========================================================================== - r0.xyz = -cb0[44].xyz + v1.xyz; - r0.w = dot(r0.xyz, r0.xyz); - r1.x = max(9.99999994e-09, r0.w); - r1.x = rsqrt(r1.x); - r1.yzw = r1.xxx * r0.xyz; - r1.x = r1.x * r0.w; - - // ========================================================================== - // OCTAHEDRAL / CUBEMAP UV MAPPING FOR t1 (fallback environment) - // ========================================================================== - r2.x = dot(abs(r1.yzw), float3(1,1,1)); - r2.x = 1 / r2.x; - r2.yz = r2.xx * r1.yw; - r2.y = r2.y + r2.z; - r2.x = r1.y * r2.x + -r2.z; - r3.xy = float2(1,1) + r2.yx; - r2.xy = float2(0.5,0.5) * r3.xy; - r2.xyz = t1.SampleLevel(s0_s, r2.xy, 0).xyz; - r2.w = saturate(r1.z * 10 + 1); - // ========================================================================== - // PROCEDURAL SUN DISK CALCULATION - // ========================================================================== - // cb1[11].xyz = sun direction - // cb1[10].x = sun size/falloff exponent - // cb1[9].xyz = sun color, cb1[9].w = sun intensity - r3.x = saturate(dot(-cb1[11].xyz, -r1.yzw)); // Sun-view alignment (1 = looking at sun) - r3.x = log2(r3.x); - - // Sun size adjustment: multiply exponent to shrink disk (5.0 = ~80% smaller) - float sunSizeMultiplier = (SUN_INTENSITY > 0.5f) ? 5.0f : 1.0f; - r3.x = cb1[10].x * sunSizeMultiplier * r3.x; // Apply sun size exponent - - r3.x = exp2(r3.x); - r3.y = r3.x * r3.x + 1; // Soft falloff numerator - r3.x = -r3.x * 1.98000002 + 1.98010004; // Soft falloff denominator - r3.z = log2(cb1[9].w); // Sun intensity - r3.yz = float2(0.0100164423,0.649999976) * r3.yz; - r3.z = exp2(r3.z); - r3.z = 8 * r3.z; - r3.x = log2(r3.x); - r3.x = r3.z * r3.x; - r3.x = exp2(r3.x); - r3.x = max(9.99999975e-05, r3.x); - r3.x = r3.y / r3.x; // Final sun disk intensity - - // ========================================================================== - // EQUIRECTANGULAR SKYBOX UV CALCULATION (for t2: 4096x2048) - // ========================================================================== - r3.y = r1.y / r1.w; - r3.z = cmp(abs(r3.y) < 1); - r3.w = 1 / abs(r3.y); - r3.w = r3.z ? abs(r3.y) : r3.w; - r4.x = r3.w * r3.w; - r4.y = r4.x * 0.0872929022 + -0.301894993; - r4.x = r4.y * r4.x + 1; - r4.y = r4.x * r3.w; - r3.w = -r4.x * r3.w + 1.57079637; - r3.z = r3.z ? r4.y : r3.w; - r3.w = abs(r1.z) * 0.0468878001 + -0.203471005; - r3.w = r3.w * abs(r1.z) + 1.57079601; - r4.x = 1 + -abs(r1.z); - r4.x = sqrt(r4.x); - r4.y = r4.x * r3.w; - r3.y = cmp(r3.y < 0); - r3.y = r3.y ? -r3.z : r3.z; - r4.zw = cmp(r1.yz >= float2(0,0)); - r3.z = r4.z ? 3.1415925 : -3.1415925; - r4.z = cmp(r1.w < 0); - r4.z = r4.z ? 1.000000 : 0; - r5.x = r3.z * r4.z + r3.y; - r3.y = -r3.w * r4.x + 3.14159274; - r3.y = r4.w ? r4.y : r3.y; - r5.y = 1.57079637 + -r3.y; - r3.yz = r5.xy * float2(0.159099996,0.318300009) + float2(0.5,0.5); - r3.y = -cb1[8].w * 0.00277777785 + r3.y; - r4.x = 1 + r3.y; - r4.y = r3.z * 2 + -1; - - // ========================================================================== - // SKYBOX TEXTURE SAMPLE (t2: 4096x2048 equirectangular) - // ========================================================================== - r5.xyzw = t2.SampleBias(s1_s, r4.xy, cb0[108].x).xyzw; - r3.yzw = float3(-0.5,-0.5,-0.5) + r5.xyz; - r5.xyz = r3.yzw * cb1[7].yyy + float3(0.5,0.5,0.5); - r6.xyzw = cb1[5].xyzw * r5.xyzw; - r3.y = max(r6.x, r6.y); - r5.xyzw = -r5.xyzw * cb1[5].xyzw + r3.yyyy; - r5.xyzw = cb1[7].xxxx * r5.xyzw + r6.xyzw; - r5.xyzw = cb1[6].xyzw * r5.xyzw; - r3.y = r4.w ? 1.000000 : 0; - r4.x = r5.w * r3.y; - r4.x = saturate(r4.x); - - // ========================================================================== - // SUN DISK BLENDING - // ========================================================================== - // Smoothstep for sun edge falloff - r3.z = -0.5 + r3.x; - r3.z = saturate(r3.z + r3.z); - r3.w = r3.z * -2 + 3; - r3.z = r3.z * r3.z; - r3.z = r3.w * r3.z; - r3.w = r3.z * r3.x; - r3.x = -r3.z * r3.x + r3.x; - r3.x = cb1[10].y * r3.x + r3.w; // Sun brightness - r3.xzw = cb1[9].xyz * r3.xxx; // Apply sun color - r3.xzw = cb1[10].www * r3.xzw; // Sun intensity multiplier - r3.xzw = cb1[11].www * r3.xzw; // Sun shadow/occlusion - r3.xzw = max(float3(0,0,0), r3.xzw); - - // HDR Sun toggle - if (SUN_INTENSITY > 0.5f) { - // Calculate sun-view alignment (1 = looking directly at sun center) - float sunDot = saturate(dot(-cb1[11].xyz, -r1.yzw)); - - // === HORIZON REDDENING === - // Sun direction Y component indicates height (-1 = below, 0 = horizon, 1 = zenith) - float sunHeight = saturate(cb1[11].y + 0.1f); // Shift so effect starts slightly above horizon - - // Warm shift when sun is low (more red/orange near horizon) - float3 horizonTint = lerp(float3(1.0f, 0.6f, 0.3f), // Low sun: warm orange - float3(1.0f, 0.95f, 0.9f), // High sun: nearly white - sunHeight); - - // === LIMB DARKENING === - // Real stars appear darker at edges due to optical depth through atmosphere - // Use a soft power curve - center is brightest, edges darken - float limbDarkening = pow(sunDot, 0.4f); // Subtle darkening toward edges - - // === CHROMATIC SUN EDGE === - // Core is white-hot, edges transition to yellow/orange - float3 sunCoreColor = float3(1.0f, 1.0f, 1.0f); // White-hot center - float3 sunEdgeColor = float3(1.0f, 0.85f, 0.6f); // Warm yellow edge - - // Blend from edge color to core color based on how centered we are - float coreFactor = pow(sunDot, 3.0f); // Sharp transition to white core - float3 chromaticColor = lerp(sunEdgeColor, sunCoreColor, coreFactor); - - // === COMBINE SUN DISK === - // Apply limb darkening and chromatic color to base sun - r3.xzw = r3.xzw * limbDarkening * chromaticColor * horizonTint; - - // Boost the sun intensity for HDR - r3.xzw = r3.xzw * 5.0f; - - // === CORONA GLOW === - // Inner corona (tight glow) - float coronaInner = pow(sunDot, 64.0f); - // Outer corona (wide soft glow) - float coronaOuter = pow(sunDot, 8.0f); - - // Corona colors - also affected by horizon - float3 coronaColorInner = lerp(float3(1.0f, 0.5f, 0.2f), // Warm inner at horizon - float3(1.0f, 0.7f, 0.3f), // Normal inner - sunHeight); - float3 coronaColorOuter = lerp(float3(1.0f, 0.3f, 0.1f), // Deep orange at horizon - float3(1.0f, 0.5f, 0.2f), // Normal outer - sunHeight); - - float3 corona = coronaInner * coronaColorInner * 2.0f - + coronaOuter * coronaColorOuter * 0.5f; - - // Modulate corona by sun color/intensity from game - corona *= cb1[9].xyz * cb1[9].w; - corona *= cb1[11].w; // Sun shadow/occlusion - - // Add corona to sun - r3.xzw += corona; - - // === DESATURATE SUN (50%) === - float sunLuma = dot(r3.xzw, float3(0.2126f, 0.7152f, 0.0722f)); - r3.xzw = lerp(r3.xzw, float3(sunLuma, sunLuma, sunLuma), 0.5f); - - // === BLOOM BOOST === - r3.xzw *= 10.0f; - - } else { - // Vanilla clamp - r3.xzw = min(float3(3,3,3), r3.xzw); - } - - // Blend environment + sun + skybox - r2.xyz = r2.xyz * r2.www + r3.xzw; - r3.xzw = r5.xyz * r3.yyy + -r2.xyz; - r2.xyz = r4.xxx * r3.xzw + r2.xyz; - - // ========================================================================== - // REFLECTION PROBE 1 (cb1[20].x enables this) - // ========================================================================== - r3.xz = cmp(float2(0.5,0.5) < cb1[20].xy); - if (r3.x != 0) { - r2.w = rsqrt(r0.w); - r4.yzw = r2.www * r0.yxz; - r2.w = dot(r4.zyw, cb1[23].xyz); - r3.x = cb1[27].x * cb1[27].x + -1; - r3.x = r2.w * r2.w + r3.x; - r3.w = max(0, r3.x); - r3.w = sqrt(r3.w); - r2.w = -r3.w + r2.w; - r6.xyz = r4.zyw * r2.www + -cb1[23].xyz; - r6.xyz = r6.xyz / cb1[27].xxx; - r2.w = dot(r6.xyz, cb1[29].xyz); - r7.xyz = -cb1[29].xyz * r2.www + r6.xyz; - r3.w = dot(r7.xyz, r7.xyz); - r3.w = rsqrt(r3.w); - r7.xyz = r7.xyz * r3.www; - r3.w = dot(r7.xyz, cb1[33].xyz); - r5.w = cmp(0 < r3.w); - r3.w = cmp(r3.w < 0); - r3.w = (int)-r5.w + (int)r3.w; - r3.w = (int)r3.w; - r5.w = saturate(-r3.w); - r6.w = dot(r7.xyz, cb1[31].xyz); - r7.x = 1 + -abs(r6.w); - r7.x = sqrt(r7.x); - r7.y = abs(r6.w) * -0.0187292993 + 0.0742610022; - r7.y = r7.y * abs(r6.w) + -0.212114394; - r7.y = r7.y * abs(r6.w) + 1.57072878; - r7.z = r7.y * r7.x; - r7.z = r7.z * -2 + 3.14159274; - r6.w = cmp(r6.w < -r6.w); - r6.w = r6.w ? r7.z : 0; - r6.w = r7.y * r7.x + r6.w; - r3.w = r6.w * r3.w; - r7.x = r3.w * 0.159154937 + r5.w; - r3.w = r2.w * r2.w; - r3.w = r3.w * -0.222222224 + -0.277777791; - r7.y = r3.w * -r2.w + 0.50000006; - r8.xyzw = t3.SampleBias(s2_s, r7.xy, cb0[108].x).xyzw; - r2.w = saturate(dot(cb1[25].xyz, r6.xyz)); - r2.w = saturate(r2.w * cb1[45].x + cb1[45].z); - r6.xyz = t5.SampleBias(s4_s, r7.xy, cb0[108].x).xyz; - r6.xyz = cb1[41].xyz * r6.xyz; - r6.xyz = r8.xyz * r2.www + r6.xyz; - r2.w = dot(cb1[23].xyz, cb1[23].xyz); - r2.w = rsqrt(r2.w); - r7.xyz = cb1[23].xyz * r2.www; - r2.w = saturate(dot(r4.zyw, r7.xyz)); - r2.w = r3.x * r2.w; - r2.w = max(0, r2.w); - r2.w = cmp(0 < r2.w); - r2.w = r2.w ? 1.000000 : 0; - r6.xyz = r6.xyz * r2.www; - r6.xyz = r6.xyz * r8.www; - r6.xyz = cb1[37].xyz * r6.xyz; - r4.y = saturate(r4.y); - r2.w = -1 + r4.y; - r2.w = cb1[48].w * r2.w + 1; - r4.yzw = r6.xyz * r2.www; - r3.x = dot(r4.yzw, float3(0.212672904,0.715152204,0.0721750036)); - r4.yzw = r6.xyz * r2.www + -r3.xxx; - r4.yzw = cb0[186].www * r4.yzw + r3.xxx; - r2.xyz = r4.yzw * cb0[186].xyz + r2.xyz; - } - - // ========================================================================== - // REFLECTION PROBE 2 (cb1[20].y enables this) - // ========================================================================== - if (r3.z != 0) { - r0.w = rsqrt(r0.w); - r0.xzw = r0.yxz * r0.www; - r2.w = dot(r0.zxw, cb1[24].xyz); - r3.x = cb1[28].x * cb1[28].x + -1; - r3.x = r2.w * r2.w + r3.x; - r3.z = max(0, r3.x); - r3.z = sqrt(r3.z); - r2.w = -r3.z + r2.w; - r4.yzw = r0.zxw * r2.www + -cb1[24].xyz; - r4.yzw = r4.yzw / cb1[28].xxx; - r2.w = dot(r4.yzw, cb1[30].xyz); - r6.xyz = -cb1[30].xyz * r2.www + r4.yzw; - r3.z = dot(r6.xyz, r6.xyz); - r3.z = rsqrt(r3.z); - r6.xyz = r6.xyz * r3.zzz; - r3.z = dot(r6.xyz, cb1[34].xyz); - r3.w = cmp(0 < r3.z); - r3.z = cmp(r3.z < 0); - r3.z = (int)-r3.w + (int)r3.z; - r3.z = (int)r3.z; - r3.w = saturate(-r3.z); - r5.w = dot(r6.xyz, cb1[32].xyz); - r6.x = 1 + -abs(r5.w); - r6.x = sqrt(r6.x); - r6.y = abs(r5.w) * -0.0187292993 + 0.0742610022; - r6.y = r6.y * abs(r5.w) + -0.212114394; - r6.y = r6.y * abs(r5.w) + 1.57072878; - r6.z = r6.y * r6.x; - r6.z = r6.z * -2 + 3.14159274; - r5.w = cmp(r5.w < -r5.w); - r5.w = r5.w ? r6.z : 0; - r5.w = r6.y * r6.x + r5.w; - r3.z = r5.w * r3.z; - r6.x = r3.z * 0.159154937 + r3.w; - r3.z = r2.w * r2.w; - r3.z = r3.z * -0.222222224 + -0.277777791; - r6.y = r3.z * -r2.w + 0.50000006; - r7.xyzw = t4.SampleBias(s3_s, r6.xy, cb0[108].x).xyzw; - r2.w = saturate(dot(cb1[26].xyz, r4.yzw)); - r2.w = saturate(r2.w * cb1[45].y + cb1[45].w); - r4.yzw = t6.SampleBias(s5_s, r6.xy, cb0[108].x).xyz; - r4.yzw = cb1[42].xyz * r4.yzw; - r4.yzw = r7.xyz * r2.www + r4.yzw; - r2.w = dot(cb1[24].xyz, cb1[24].xyz); - r2.w = rsqrt(r2.w); - r6.xyz = cb1[24].xyz * r2.www; - r0.z = saturate(dot(r0.zxw, r6.xyz)); - r0.z = r3.x * r0.z; - r0.z = max(0, r0.z); - r0.z = cmp(0 < r0.z); - r0.z = r0.z ? 1.000000 : 0; - r3.xzw = r4.yzw * r0.zzz; - r3.xzw = r3.xzw * r7.www; - r3.xzw = cb1[38].xyz * r3.xzw; - r0.x = saturate(r0.x); - r0.x = -1 + r0.x; - r0.x = cb1[51].w * r0.x + 1; - r2.xyz = r3.xzw * r0.xxx + r2.xyz; - } - - // Final skybox blend - r0.xzw = r5.xyz * r3.yyy + -r2.xyz; - r0.xzw = r4.xxx * r0.xzw + r2.xyz; - - // ========================================================================== - // ATMOSPHERIC FOG / SCATTERING (Height-based exponential fog) - // ========================================================================== - r2.x = v1.y * cb0[156].w + cb0[157].w; - r2.y = r1.x * cb0[154].w + -cb0[153].w; - r2.xy = max(float2(0.00999999978,0), r2.xy); - r2.z = -1.44269502 * r2.x; - r2.z = exp2(r2.z); - r2.z = 1 + -r2.z; - r2.x = r2.z / r2.x; - r2.z = v1.y * cb0[156].w + cb0[158].w; - r2.z = 1.44269502 * r2.z; - r2.z = exp2(r2.z); - r2.x = r2.x * r2.z; - r2.x = -r2.y * r2.x; - r2.xyz = cb0[155].xyz * r2.xxx; - r2.xyz = float3(1.44269502,1.44269502,1.44269502) * r2.xyz; - r2.xyz = exp2(r2.xyz); - - r2.w = dot(r1.yzw, cb0[154].xyz); - r3.x = cb0[155].w * cb0[155].w + 1; - r3.y = dot(r2.ww, cb0[155].ww); - r3.x = r3.x + -r3.y; - - // ========================================================================== - // VOLUMETRIC FOG SAMPLING (t0: 3D fog volume) - // ========================================================================== - r3.y = cmp(0 < cb0[163].z); - if (r3.y != 0) { - r4.xy = (uint2)v0.xy; - r4.z = 7 & asint(cb0[108].w); - r3.yzw = mad((int3)r4.xyz, int3(0x19660d,0x19660d,0x19660d), int3(0x3c6ef35f,0x3c6ef35f,0x3c6ef35f)); - r3.y = mad((int)r3.z, (int)r3.w, (int)r3.y); - r3.z = mad((int)r3.w, (int)r3.y, (int)r3.z); - r3.w = mad((int)r3.y, (int)r3.z, (int)r3.w); - r5.x = mad((int)r3.z, (int)r3.w, (int)r3.y); - r6.x = -cb0[0].z; - r6.y = -cb0[1].z; - r6.z = -cb0[2].z; - r1.y = dot(r1.yzw, r6.xyz); - r1.z = cmp(5.96046448e-08 < r1.y); - r1.y = 1 / r1.y; - r1.y = r1.z ? r1.y : 0; - r1.y = cb0[163].w * r1.y; - r1.z = 1 / r1.x; - r1.w = r1.y * r1.z; - r3.y = r1.w * r0.y + cb0[44].y; - r1.w = -r1.w * r0.y + r0.y; - r4.z = cb0[159].z * r1.w; - r1.w = cb0[162].x * r1.w; - r1.w = max(-127, r1.w); - r4.w = -cb0[159].x + r3.y; - r4.w = cb0[159].z * r4.w; - r4.zw = max(float2(-127,-127), r4.zw); - r4.w = exp2(-r4.w); - r4.w = cb0[159].y * r4.w; - r5.z = cmp(5.96046448e-08 < abs(r4.z)); - r5.w = exp2(-r4.z); - r5.w = 1 + -r5.w; - r5.w = r5.w / r4.z; - r4.z = -r4.z * 0.240226507 + 0.693147182; - r4.z = r5.z ? r5.w : r4.z; - r3.y = -cb0[162].z + r3.y; - r3.y = cb0[162].x * r3.y; - r3.y = max(-127, r3.y); - r3.y = exp2(-r3.y); - r3.y = cb0[162].y * r3.y; - r5.z = cmp(5.96046448e-08 < abs(r1.w)); - r5.w = exp2(-r1.w); - r5.w = 1 + -r5.w; - r5.w = r5.w / r1.w; - r1.w = -r1.w * 0.240226507 + 0.693147182; - r1.w = r5.z ? r5.w : r1.w; - r1.w = r3.y * r1.w; - r1.w = r4.w * r4.z + r1.w; - r1.y = -r1.y * r1.z + 1; - r1.y = r1.y * r1.x; - r1.y = r1.w * r1.y; - r1.y = exp2(-r1.y); - r1.y = min(1, r1.y); - r1.y = max(cb0[161].w, r1.y); - r1.zw = saturate(r1.xx * cb0[160].yw + cb0[160].xz); - r1.y = r1.y + r1.z; - r1.y = r1.y + r1.w; - r1.y = min(1, r1.y); - r1.zw = (uint2)r4.xy; - r5.y = mad((int)r3.w, (int)r5.x, (int)r3.z); - r3.yz = (uint2)r5.xy >> int2(16,16); - r3.yz = (uint2)r3.yz; - r3.yz = r3.yz * float2(3.05180438e-05,3.05180438e-05) + float2(-1,-1); - r1.zw = r3.yz * cb0[167].ww + r1.zw; - r4.xy = cb0[165].xy * r1.zw; - r1.z = v0.w * cb0[164].x + cb0[164].y; - r1.z = log2(r1.z); - r1.z = cb0[164].z * r1.z; - r4.z = r1.z / cb0[163].z; - r4.xyzw = t0.SampleLevel(s0_s, r4.xyz, 0).xyzw; - r1.z = -cb0[166].z + v0.w; - r1.z = saturate(1000000 * r1.z); - r4.xyzw = float4(-0,-0,-0,-1) + r4.xyzw; - r4.xyzw = r1.zzzz * r4.xyzw + float4(0,0,0,1); - r1.z = 1 + -r1.y; - r3.yzw = cb0[161].xyz * r1.zzz; - r3.yzw = r3.yzw * r4.www + r4.xyz; - r1.y = r4.w * r1.y; - } else { - r1.z = cb0[159].z * r0.y; - r0.y = cb0[162].x * r0.y; - r0.y = max(-127, r0.y); - r1.w = -cb0[159].x + cb0[44].y; - r1.w = cb0[159].z * r1.w; - r1.zw = max(float2(-127,-127), r1.zw); - r1.w = exp2(-r1.w); - r1.w = cb0[159].y * r1.w; - r4.x = cmp(5.96046448e-08 < abs(r1.z)); - r4.y = exp2(-r1.z); - r4.y = 1 + -r4.y; - r4.y = r4.y / r1.z; - r1.z = -r1.z * 0.240226507 + 0.693147182; - r1.z = r4.x ? r4.y : r1.z; - r4.x = -cb0[162].z + cb0[44].y; - r4.x = cb0[162].x * r4.x; - r4.x = max(-127, r4.x); - r4.x = exp2(-r4.x); - r4.x = cb0[162].y * r4.x; - r4.y = cmp(5.96046448e-08 < abs(r0.y)); - r4.z = exp2(-r0.y); - r4.z = 1 + -r4.z; - r4.z = r4.z / r0.y; - r0.y = -r0.y * 0.240226507 + 0.693147182; - r0.y = r4.y ? r4.z : r0.y; - r0.y = r4.x * r0.y; - r0.y = r1.w * r1.z + r0.y; - r0.y = r0.y * r1.x; - r0.y = exp2(-r0.y); - r0.y = min(1, r0.y); - r0.y = max(cb0[161].w, r0.y); - r1.xz = saturate(r1.xx * cb0[160].yw + cb0[160].xz); - r0.y = r1.x + r0.y; - r0.y = r0.y + r1.z; - r1.y = min(1, r0.y); - r0.y = 1 + -r1.y; - r3.yzw = cb0[161].xyz * r0.yyy; - } - - // ========================================================================== - // FINAL COLOR GRADING - // ========================================================================== - // Desaturation based on luminance - r0.y = dot(r0.xzw, float3(0.212672904,0.715152204,0.0721750036)); // Luminance - r0.xzw = r0.xzw + -r0.yyy; - r0.xyz = cb0[186].www * r0.xzw + r0.yyy; // Saturation control - r0.xyz = cb0[186].xyz * r0.xyz; // Color tint/exposure - r1.xzw = r2.xyz * r1.yyy; - r0.w = r2.w * r2.w + 1; - r0.w = 0.0596831031 * r0.w; - r4.xyz = cb0[156].xyz * r0.www + cb0[158].xyz; - r0.w = -cb0[155].w * cb0[155].w + 1; - r2.w = 12.566371 * r3.x; - r3.x = sqrt(r3.x); - r2.w = r3.x * r2.w; - r2.w = max(0.00100000005, r2.w); - r0.w = r0.w / r2.w; - r4.xyz = saturate(cb0[157].xyz * r0.www + r4.xyz); - r4.xyz = float3(255,255,255) * r4.xyz; - r2.xyz = float3(1,1,1) + -r2.xyz; - r2.xyz = r4.xyz * r2.xyz; - r2.xyz = r2.xyz * r1.yyy + r3.yzw; - o0.xyz = r0.xyz * r1.xzw + r2.xyz; - - // ========================================================================== - // SKYBOX DESATURATION (50%) - Tech Test Look - // ========================================================================== - if (TECH_TEST_LOOK > 0.5f) { - float skyboxLuma = dot(o0.xyz, float3(0.2126f, 0.7152f, 0.0722f)); - o0.xyz = lerp(o0.xyz, float3(skyboxLuma, skyboxLuma, skyboxLuma), 0.5f); - } - - // ========================================================================== - // VELOCITY BUFFER OUTPUT (for motion blur / TAA) - // ========================================================================== - r0.x = max(9.99999994e-09, v3.z); - r0.xy = v3.xy / r0.xx; - r0.z = max(9.99999994e-09, v4.z); - r0.zw = v4.xy / r0.zz; - r0.xy = r0.xy + -r0.zw; - r1.xy = float2(0.5,-0.5) * r0.xy; - r1.xy = sqrt(abs(r1.xy)); - r1.xy = sqrt(r1.xy); - r0.z = -r0.y; - r0.yw = cmp(float2(0,0) < r0.xz); - r0.xz = cmp(r0.xz < float2(0,0)); - r0.xy = (int2)-r0.yw + (int2)r0.xz; - r0.xy = (int2)r0.xy; - r0.xy = r1.xy * r0.xy; - o1.xy = r0.xy * float2(0.5,0.5) + float2(0.5,0.5); - o0.w = 1; - o1.zw = float2(0,0); - return; -} diff --git a/src/games/endfield/others/sun-lens-dirt_0xC3217979.ps_5_0.hlsl b/src/games/endfield/others/sun-lens-dirt_0xA71BB1FA.ps_5_0.hlsl similarity index 87% rename from src/games/endfield/others/sun-lens-dirt_0xC3217979.ps_5_0.hlsl rename to src/games/endfield/others/sun-lens-dirt_0xA71BB1FA.ps_5_0.hlsl index a958a23ef9..1f844b96c8 100644 --- a/src/games/endfield/others/sun-lens-dirt_0xC3217979.ps_5_0.hlsl +++ b/src/games/endfield/others/sun-lens-dirt_0xA71BB1FA.ps_5_0.hlsl @@ -10,7 +10,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[109]; + float4 cb0[27]; } @@ -30,7 +30,7 @@ void main( uint4 bitmask, uiDest; float4 fDest; - r0.xyzw = t0.SampleBias(s0_s, v1.xy, cb0[108].x).xyzw; + r0.xyzw = t0.SampleBias(s0_s, v1.xy, cb0[26].x).xyzw; r0.xyzw = cb1[6].xyzw * r0.xyzw; o0.xyzw = w1 * r0.xyzw * 0.25f; return; diff --git a/src/games/endfield/others/video_0x541BC9D1.ps_5_0.hlsl b/src/games/endfield/others/video_0x5477040A.ps_5_0.hlsl similarity index 96% rename from src/games/endfield/others/video_0x541BC9D1.ps_5_0.hlsl rename to src/games/endfield/others/video_0x5477040A.ps_5_0.hlsl index f1a86ff11e..b85eb5f596 100644 --- a/src/games/endfield/others/video_0x541BC9D1.ps_5_0.hlsl +++ b/src/games/endfield/others/video_0x5477040A.ps_5_0.hlsl @@ -15,7 +15,7 @@ SamplerState s0_s : register(s0); cbuffer cb0 : register(b0) { - float4 cb0[8]; + float4 cb0[6]; } @@ -50,6 +50,6 @@ void main( o0.x = rgb.x; o0.y = rgb.y; o0.z = rgb.z; - o0.w = -cb0[7].x + 1; + o0.w = -cb0[5].z + 1; return; -} \ No newline at end of file +} diff --git a/src/games/endfield/shadows/0xCAB28784.cso b/src/games/endfield/shadows/0xCAB28784.cso deleted file mode 100644 index 94fdabb4f558c350f87b02dadf5db7dd161f2857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7420 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 diff --git a/src/games/endfield/shadows/character-shadows_0x68D7EB8E.ps_5_0.hlsl b/src/games/endfield/shadows/character-shadows_0xB1BC33D0.ps_5_0.hlsl similarity index 71% rename from src/games/endfield/shadows/character-shadows_0x68D7EB8E.ps_5_0.hlsl rename to src/games/endfield/shadows/character-shadows_0xB1BC33D0.ps_5_0.hlsl index d32fb15d68..a068089204 100644 --- a/src/games/endfield/shadows/character-shadows_0x68D7EB8E.ps_5_0.hlsl +++ b/src/games/endfield/shadows/character-shadows_0xB1BC33D0.ps_5_0.hlsl @@ -22,24 +22,27 @@ SamplerState s1_s : register(s1); SamplerState s0_s : register(s0); +cbuffer cb3 : register(b3) +{ + float4 cb3[715]; +} + cbuffer cb2 : register(b2) { - float4 cb2[715]; + float4 cb2[1]; } cbuffer cb1 : register(b1) { - float4 cb1[1]; + float4 cb1[104]; } cbuffer cb0 : register(b0) { - float4 cb0[186]; + float4 cb0[45]; } - - // 3Dmigoto declarations #define cmp - @@ -73,10 +76,10 @@ void main( r0.zw = float2(0,0); r1.xyzw = t5.Load(r0.xyw).xyzw; r2.xy = (uint2)r0.xy; - r2.zw = cb0[82].zw * r2.xy; + r2.zw = cb1[0].zw * r2.xy; r2.zw = r2.zw * float2(2,2) + float2(-1,-1); r2.xy = float2(0.5,0.5) + r2.xy; - r2.xy = cb0[82].zw * r2.xy; + r2.xy = cb1[0].zw * r2.xy; r2.x = t0.SampleLevel(s0_s, r2.xy, 0).x; r3.xyzw = cb0[25].xyzw * -r2.wwww; r3.xyzw = cb0[24].xyzw * r2.zzzz + r3.xyzw; @@ -96,31 +99,32 @@ void main( r0.z = dot(r3.xyz, r3.xyz); r0.z = rsqrt(r0.z); r3.xyz = r3.xyz * r0.zzz; - r0.z = cmp(cb2[35].w < 0.99000001); + r0.z = cmp(cb3[35].w < 0.99000001); if (r0.z != 0) { - r0.z = (int)cb2[35].x; + r0.z = (int)cb3[35].x; r0.w = cmp((int)r0.z == 2); - r4.xyz = r0.www ? cb2[20].xyz : cb0[44].xyz; + r4.xyz = r0.www ? cb3[20].xyz : cb0[44].xyz; r4.xyz = -r4.xyz + r2.xyz; r0.w = dot(r4.xyz, r4.xyz); - r0.w = cb2[34].w + -r0.w; - r0.w = saturate(cb2[34].z * r0.w); + r0.w = cb3[34].w + -r0.w; + r0.w = saturate(cb3[34].z * r0.w); + r0.w = max(cb3[36].x, r0.w); r2.w = cmp(0 < r0.w); if (r2.w != 0) { r0.z = cmp(0 < (int)r0.z); if (r0.z != 0) { - r4.xyz = -cb2[20].xyz + r2.xyz; - r5.xyz = -cb2[21].xyz + r2.xyz; - r6.xyz = -cb2[22].xyz + r2.xyz; - r7.xyz = -cb2[23].xyz + r2.xyz; + r4.xyz = -cb3[20].xyz + r2.xyz; + r5.xyz = -cb3[21].xyz + r2.xyz; + r6.xyz = -cb3[22].xyz + r2.xyz; + r7.xyz = -cb3[23].xyz + r2.xyz; r0.z = dot(r4.xyz, r4.xyz); r2.w = dot(r5.xyz, r5.xyz); r3.w = dot(r6.xyz, r6.xyz); r4.x = dot(r7.xyz, r7.xyz); - r5.x = cmp(r0.z < cb2[20].w); - r5.y = cmp(r2.w < cb2[21].w); - r5.z = cmp(r3.w < cb2[22].w); - r5.w = cmp(r4.x < cb2[23].w); + r5.x = cmp(r0.z < cb3[20].w); + r5.y = cmp(r2.w < cb3[21].w); + r5.z = cmp(r3.w < cb3[22].w); + r5.w = cmp(r4.x < cb3[23].w); r4.xyzw = r5.xyzw ? float4(1,1,1,1) : 0; r5.xyz = r5.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0); r5.xyz = r5.xyz + r4.yzw; @@ -129,20 +133,13 @@ void main( r0.z = 4 + -r0.z; r0.z = max(0, r0.z); r0.z = min(3, r0.z); - r0.z = max(cb2[34].y, r0.z); + r0.z = max(cb3[34].y, r0.z); r2.w = (uint)r0.z; - r3.w = (uint)r2.w << 2; - r4.x = dot(r3.xyz, cb1[0].xyz); - r4.x = max(0, r4.x); - r4.x = min(0.899999976, r4.x); - r4.x = 1 + -r4.x; - r2.w = cb2[r2.w+24].x * r4.x; - r2.w = max(0, r2.w); - r4.xyz = -cb1[0].xyz * r2.www + r2.xyz; - r5.xyz = cb2[r3.w+1].xyz * r4.yyy; - r4.xyw = cb2[r3.w+0].xyz * r4.xxx + r5.xyz; - r4.xyz = cb2[r3.w+2].xyz * r4.zzz + r4.xyw; - r4.xyz = cb2[r3.w+3].xyz + r4.xyz; + r2.w = (uint)r2.w << 2; + r4.xyz = cb3[r2.w+1].xyz * r2.yyy; + r4.xyz = cb3[r2.w+0].xyz * r2.xxx + r4.xyz; + r4.xyz = cb3[r2.w+2].xyz * r2.zzz + r4.xyz; + r4.xyz = cb3[r2.w+3].xyz + r4.xyz; r5.xyz = cmp(float3(0,0,0) >= r4.xyz); r6.xyz = cmp(r4.xyz >= float3(1,1,1)); r5.xyz = (int3)r5.xyz | (int3)r6.xyz; @@ -152,10 +149,10 @@ void main( r3.w = cmp(0x7f800000 < (uint)r3.w); r5.z = (int)r2.w | (int)r3.w; r0.z = (int)r0.z; - r4.xy = r4.xy * cb2[r0.z+28].zw + cb2[r0.z+28].xy; - r6.xy = r4.xy * cb2[32].zw + float2(0.5,0.5); + r4.xy = r4.xy * cb3[r0.z+28].zw + cb3[r0.z+28].xy; + r6.xy = r4.xy * cb3[32].zw + float2(0.5,0.5); r6.xy = floor(r6.xy); - r4.xy = r4.xy * cb2[32].zw + -r6.xy; + r4.xy = r4.xy * cb3[32].zw + -r6.xy; r7.xyzw = float4(0.5,1,0.5,1) + r4.xxyy; r8.xw = r7.xz * r7.xz; r6.zw = min(float2(0,0), r4.xy); @@ -177,17 +174,17 @@ void main( r10.xyzw = r8.xxzz + r8.yyww; r4.xy = r7.yw / r9.zw; r4.xy = float2(-1.5,0.5) + r4.xy; - r7.xy = cb2[32].xx * r4.xy; + r7.xy = cb3[32].xx * r4.xy; r4.xy = r8.yw / r10.yw; r4.xy = float2(-1.5,0.5) + r4.xy; - r7.zw = cb2[32].yy * r4.xy; + r7.zw = cb3[32].yy * r4.xy; r8.xyzw = r10.xyzw * r9.xyzw; - r9.xyzw = r6.xyxy * cb2[32].xyxy + r7.xzyz; + r9.xyzw = r6.xyxy * cb3[32].xyxy + r7.xzyz; r0.z = t1.SampleCmpLevelZero(s3_s, r9.xy, r4.z).x; r2.w = t1.SampleCmpLevelZero(s3_s, r9.zw, r4.z).x; r2.w = r8.y * r2.w; r0.z = r8.x * r0.z + r2.w; - r6.xyzw = r6.xyxy * cb2[32].xyxy + r7.xwyw; + r6.xyzw = r6.xyxy * cb3[32].xyxy + r7.xwyw; r2.w = t1.SampleCmpLevelZero(s3_s, r6.xy, r4.z).x; r0.z = r8.z * r2.w + r0.z; r2.w = t1.SampleCmpLevelZero(s3_s, r6.zw, r4.z).x; @@ -200,49 +197,51 @@ void main( r5.xz = float2(1,0); } r0.z = cmp(r0.w < 1); + r2.w = cmp(0.5 < cb3[36].x); + r0.z = (int)r0.z | (int)r2.w; if (r0.z != 0) { - r0.z = dot(r3.xyz, cb1[0].xyz); + r0.z = dot(r3.xyz, cb2[0].xyz); r0.z = max(0, r0.z); r0.z = min(0.899999976, r0.z); r0.z = 1 + -r0.z; - r4.xy = cb2[584].xy * r0.zz; - r4.xzw = -cb1[0].xyz * r4.xxx + r2.xyz; + r4.xy = cb3[584].xy * r0.zz; + r4.xzw = -cb2[0].xyz * r4.xxx + r2.xyz; r4.xyz = r3.xyz * r4.yyy + r4.xzw; - r6.xy = cb2[581].xy * r4.yy; - r6.xy = cb2[580].xy * r4.xx + r6.xy; - r6.xy = cb2[582].xy * r4.zz + r6.xy; - r6.xy = cb2[583].xy + r6.xy; + r6.xy = cb3[581].xy * r4.yy; + r6.xy = cb3[580].xy * r4.xx + r6.xy; + r6.xy = cb3[582].xy * r4.zz + r6.xy; + r6.xy = cb3[583].xy + r6.xy; r6.zw = cmp(float2(0,0) < r6.xy); r0.z = r6.w ? r6.z : 0; r6.zw = cmp(r6.xy < float2(1,1)); r2.w = r6.w ? r6.z : 0; - r0.z = (int)r0.z & (int)r2.w; + r0.z = r2.w ? r0.z : 0; if (r0.z != 0) { - r0.z = cb2[585].z * r6.y; + r0.z = cb3[585].z * r6.y; r0.z = floor(r0.z); r0.z = r0.z + r6.x; - r0.z = cb2[585].y * r0.z; + r0.z = cb3[585].y * r0.z; r0.z = (uint)r0.z; r0.z = min(127, (uint)r0.z); - r2.w = 0x0000ffff & asint(cb2[r0.z+587].x); - r6.x = f16tof32((uint)r2.w); + r2.w = 0x0000ffff & asint(cb3[r0.z+587].x); + r6.x = f16tof32(r2.w); r2.w = cmp(r6.x >= 0); if (r2.w != 0) { - r7.x = cb2[576].x; - r7.y = cb2[577].x; - r7.z = cb2[578].x; - r7.w = cb2[r0.z+587].y; + r7.x = cb3[576].x; + r7.y = cb3[577].x; + r7.z = cb3[578].x; + r7.w = cb3[r0.z+587].y; r4.w = 1; r7.x = dot(r7.xyzw, r4.xyzw); - r8.x = cb2[576].y; - r8.y = cb2[577].y; - r8.z = cb2[578].y; - r8.w = cb2[r0.z+587].z; + r8.x = cb3[576].y; + r8.y = cb3[577].y; + r8.z = cb3[578].y; + r8.w = cb3[r0.z+587].z; r7.y = dot(r8.xyzw, r4.xyzw); - r8.x = cb2[576].z; - r8.y = cb2[577].z; - r8.z = cb2[578].z; - r8.w = cb2[r0.z+587].w; + r8.x = cb3[576].z; + r8.y = cb3[577].z; + r8.z = cb3[578].z; + r8.w = cb3[r0.z+587].w; r2.w = dot(r8.xyzw, r4.xyzw); r4.xy = cmp(float2(0,0) < r7.xy); r3.w = cmp(0 < r2.w); @@ -254,12 +253,12 @@ void main( r4.x = r4.z ? r4.x : 0; r3.w = r3.w ? r4.x : 0; if (r3.w != 0) { - r0.z = asuint(cb2[r0.z+587].x) >> 16; - r6.y = f16tof32((uint)r0.z); - r4.xy = r7.xy * cb2[584].zw + r6.xy; - r4.zw = r4.xy * cb2[586].zw + float2(0.5,0.5); + r0.z = asuint(cb3[r0.z+587].x) >> 16; + r6.y = f16tof32(r0.z); + r4.xy = r7.xy * cb3[584].zw + r6.xy; + r4.zw = r4.xy * cb3[586].zw + float2(0.5,0.5); r4.zw = floor(r4.zw); - r4.xy = r4.xy * cb2[586].zw + -r4.zw; + r4.xy = r4.xy * cb3[586].zw + -r4.zw; r6.xyzw = float4(0.5,1,0.5,1) + r4.xxyy; r7.xw = r6.xz * r6.xz; r6.xz = min(float2(0,0), r4.xy); @@ -281,17 +280,17 @@ void main( r8.xyzw = r6.xxzz + r6.yyww; r4.xy = r9.yw / r7.zw; r4.xy = float2(-1.5,0.5) + r4.xy; - r9.xy = cb2[586].xx * r4.xy; + r9.xy = cb3[586].xx * r4.xy; r4.xy = r6.yw / r8.yw; r4.xy = float2(-1.5,0.5) + r4.xy; - r9.zw = cb2[586].yy * r4.xy; + r9.zw = cb3[586].yy * r4.xy; r6.xyzw = r8.xyzw * r7.xyzw; - r7.xyzw = r4.zwzw * cb2[586].xyxy + r9.xzyz; + r7.xyzw = r4.zwzw * cb3[586].xyxy + r9.xzyz; r0.z = t4.SampleCmpLevelZero(s3_s, r7.xy, r2.w).x; r3.w = t4.SampleCmpLevelZero(s3_s, r7.zw, r2.w).x; r3.w = r6.y * r3.w; r0.z = r6.x * r0.z + r3.w; - r4.xyzw = r4.zwzw * cb2[586].xyxy + r9.xwyw; + r4.xyzw = r4.zwzw * cb3[586].xyxy + r9.xwyw; r3.w = t4.SampleCmpLevelZero(s3_s, r4.xy, r2.w).x; r0.z = r6.z * r3.w + r0.z; r2.w = t4.SampleCmpLevelZero(s3_s, r4.zw, r2.w).x; @@ -311,38 +310,42 @@ void main( } r0.z = r5.x + -r5.y; r0.z = r0.w * r0.z + r5.y; + r0.w = min(r5.y, r5.x); + r0.w = r0.w + -r0.z; + r0.z = cb3[36].x * r0.w + r0.z; + // Cloud shadow (t3) — toggle via FAKE_CLOUD_SHADOWS if (FAKE_CLOUD_SHADOWS >= 1.f) { r0.w = cmp(0.00100000005 < r0.z); - if (r0.w != 0) { - r4.xyz = -cb0[175].xyz + r2.xyz; - r4.yw = cb0[178].xz * r4.yy + r4.xz; - r5.xy = cb0[176].zz * r4.yw; - r5.zw = cb0[185].ww * cb0[177].xy; - r4.yw = r4.yw * cb0[176].zz + r5.zw; - r0.w = t3.SampleLevel(s2_s, r4.yw, 0).x; - r4.yw = r5.xy * cb0[177].ww + r5.zw; - r2.w = t3.SampleLevel(s2_s, r4.yw, 0).x; - r3.w = dot(r4.xz, r4.xz); - r3.w = sqrt(r3.w); - r4.x = cb0[176].y + -cb0[176].x; - r3.w = -cb0[176].x + r3.w; - r4.x = 1 / r4.x; - r3.w = saturate(r4.x * r3.w); - r4.x = r3.w * -2 + 3; - r3.w = r3.w * r3.w; - r3.w = r4.x * r3.w; - r2.w = r2.w + -r0.w; - r0.w = r3.w * r2.w + r0.w; - r0.w = -1 + r0.w; - r0.w = cb0[177].z * r0.w + 1; - r0.z = r0.z * r0.w; + if (r0.w != 0) { + r4.xyz = -cb1[93].xyz + r2.xyz; + r4.yw = cb1[96].xz * r4.yy + r4.xz; + r5.xy = cb1[94].zz * r4.yw; + r5.zw = cb1[103].ww * cb1[95].xy; + r4.yw = r4.yw * cb1[94].zz + r5.zw; + r0.w = t3.SampleLevel(s2_s, r4.yw, 0).x; + r4.yw = r5.xy * cb1[95].ww + r5.zw; + r2.w = t3.SampleLevel(s2_s, r4.yw, 0).x; + r3.w = dot(r4.xz, r4.xz); + r3.w = sqrt(r3.w); + r4.x = cb1[94].y + -cb1[94].x; + r3.w = -cb1[94].x + r3.w; + r4.x = 1 / r4.x; + r3.w = saturate(r4.x * r3.w); + r4.x = r3.w * -2 + 3; + r3.w = r3.w * r3.w; + r3.w = r4.x * r3.w; + r2.w = r2.w + -r0.w; + r0.w = r3.w * r2.w + r0.w; + r0.w = -1 + r0.w; + r0.w = cb1[95].z * r0.w + 1; + r0.z = r0.z * r0.w; } } - r0.w = cb2[35].z + -r0.z; - r0.z = cb2[35].w * r0.w + r0.z; + r0.w = cb3[35].z + -r0.z; + r0.z = cb3[35].w * r0.w + r0.z; } else { - r0.z = cb2[35].z; + r0.z = cb3[35].z; } r1.xyzw = r1.wzyx * float4(3,1023,1023,1023) + float4(0.5,0.5,0.5,0.5); r1.xyzw = (uint4)r1.xyzw; @@ -354,22 +357,22 @@ void main( r0.w = log2(r0.w); r0.w = -8 + r0.w; r1.x = cmp(r0.w >= 0); - r1.y = cmp(r0.w < cb2[554].z); + r1.y = cmp(r0.w < cb3[554].z); r1.x = r1.y ? r1.x : 0; if (r1.x != 0) { r0.w = (int)r0.w; - r1.x = dot(r3.xyz, cb2[r0.w+523].xyz); + r1.x = dot(r3.xyz, cb3[r0.w+523].xyz); r1.x = max(0, r1.x); r1.x = min(0.899999976, r1.x); r1.x = 1 + -r1.x; r1.y = (uint)r0.w << 2; - r1.xz = cb2[r0.w+508].xy * r1.xx; - r2.xyz = -cb2[r0.w+523].xyz * r1.xxx + r2.xyz; + r1.xz = cb3[r0.w+508].xy * r1.xx; + r2.xyz = -cb3[r0.w+523].xyz * r1.xxx + r2.xyz; r1.xzw = r3.xyz * r1.zzz + r2.xyz; - r2.xyz = cb2[r1.y+449].xyz * r1.zzz; - r2.xyz = cb2[r1.y+448].xyz * r1.xxx + r2.xyz; - r1.xzw = cb2[r1.y+450].xyz * r1.www + r2.xyz; - r1.xyz = cb2[r1.y+451].xyz + r1.xzw; + r2.xyz = cb3[r1.y+449].xyz * r1.zzz; + r2.xyz = cb3[r1.y+448].xyz * r1.xxx + r2.xyz; + r1.xzw = cb3[r1.y+450].xyz * r1.www + r2.xyz; + r1.xyz = cb3[r1.y+451].xyz + r1.xzw; r1.z = max(0.00999999978, r1.z); r2.xy = cmp(float2(0,0) >= r1.xy); r2.zw = cmp(r1.xy >= float2(1,1)); @@ -378,8 +381,8 @@ void main( r2.x = (int)r2.y | (int)r2.x; r1.w = (int)r1.w | (int)r2.x; if (r1.w == 0) { - r2.x = cb2[553].x * 4; - r1.xy = r1.xy * cb2[r0.w+538].zw + cb2[r0.w+538].xy; + r2.x = cb3[553].x * 4; + r1.xy = r1.xy * cb3[r0.w+538].zw + cb3[r0.w+538].xy; bitmask.x = ((~(-1 << 2)) << 2) & 0xffffffff; r0.x = (((uint)r0.x << 2) & bitmask.x) | ((uint)0 & ~bitmask.x); bitmask.x = ((~(-1 << 2)) << 0) & 0xffffffff; r0.x = (((uint)r0.y << 0) & bitmask.x) | ((uint)r0.x & ~bitmask.x); r0.yw = icb[r0.x+0].xy * float2(1,-1); @@ -430,11 +433,11 @@ void main( // Shadow compositing contrast curve: S-curve deepens shadow cores if (SHADOW_HARDENING >= 1.f) { - r0.x = r0.x * r0.x * (3.0 - 2.0 * r0.x); // smoothstep(0, 1, r0.x) + r0.x = r0.x * r0.x * (3.0 - 2.0 * r0.x); // smoothstep(0, 1, r0.x) } r0.x = -1 + r0.x; - o0.x = cb2[34].x * r0.x + 1; + o0.x = cb3[34].x * r0.x + 1; o0.z = 0; return; } diff --git a/src/games/endfield/shadows/shadowcompositing-shadowmap_0xB370840A.ps_5_0.hlsl b/src/games/endfield/shadows/shadowcompositing-shadowmap_0xB370840A.ps_5_0.hlsl new file mode 100644 index 0000000000..bee5af38c1 --- /dev/null +++ b/src/games/endfield/shadows/shadowcompositing-shadowmap_0xB370840A.ps_5_0.hlsl @@ -0,0 +1,404 @@ +#include "../shared.h" + +Texture2D t5 : register(t5); + +Texture2D t4 : register(t4); + +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +Texture2D t0 : register(t0); + +SamplerComparisonState s3_s : register(s3); + +SamplerState s2_s : register(s2); + +SamplerState s1_s : register(s1); + +SamplerState s0_s : register(s0); + +cbuffer cb3 : register(b3) +{ + float4 cb3[715]; +} + +cbuffer cb2 : register(b2) +{ + float4 cb2[1]; +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[104]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[45]; +} + + +// 3Dmigoto declarations +#define cmp - + + +void main( + float4 v0 : SV_Position0, + float2 v1 : TEXCOORD0, + out float3 o0 : SV_Target0) +{ + const float4 icb[] = { { 1.000000, 0, 0, 0}, + { 0, 1.000000, 0, 0}, + { 0, 0, 1.000000, 0}, + { 0, 0, 0, 1.000000}, + { -0.399656, 0.916665, -0.942016, -0.399062}, + { 0.124512, -0.992218, 0.945586, -0.768907}, + { 0.852354, 0.522965, -0.094184, -0.929389}, + { -0.229312, 0.973353, 0.344959, 0.293878}, + { -0.772406, 0.635129, -0.915886, 0.457714}, + { 0.792753, -0.609544, -0.815442, -0.879125}, + { -0.578050, 0.816002, -0.382775, 0.276768}, + { -0.831130, -0.556079, 0.974844, 0.756484}, + { 0.807795, 0.589464, 0.443233, -0.975116}, + { 0.471415, 0.881911, 0.537430, -0.473734}, + { -0.313974, -0.949432, -0.264969, -0.418930}, + { -0.945007, -0.327051, 0.791975, 0.190902}, + { -0.185037, -0.982732, -0.241888, 0.997065}, + { -0.933756, 0.357911, -0.814100, 0.914376}, + { -0.997614, 0.069036, 0.199841, 0.786414}, + { 0.306128, 0.951990, 0.143832, -0.141008} }; + float4 r0,r1,r2,r3,r4,r5,r6,r7; + uint4 bitmask, uiDest; + float4 fDest; + + r0.x = cmp(cb3[35].w < 0.99000001); + if (r0.x != 0) { + r0.xy = (uint2)v0.xy; + r0.zw = (uint2)r0.xy; + r1.xy = cb1[0].zw * r0.zw; + r1.zw = r1.xy * float2(2,2) + float2(-1,-1); + r2.xy = float2(0.5,0.5) + r0.zw; + r2.xy = cb1[0].zw * r2.xy; + r2.x = t0.SampleLevel(s0_s, r2.xy, 0).x; + r3.xyzw = cb0[25].xyzw * -r1.wwww; + r3.xyzw = cb0[24].xyzw * r1.zzzz + r3.xyzw; + r2.xyzw = cb0[26].xyzw * r2.xxxx + r3.xyzw; + r2.xyzw = cb0[27].xyzw + r2.xyzw; + r2.xyz = r2.xyz / r2.www; + r1.z = (int)cb3[35].x; + r1.w = cmp((int)r1.z == 2); + r3.xyz = r1.www ? cb3[20].xyz : cb0[44].xyz; + r3.xyz = -r3.xyz + r2.xyz; + r1.w = dot(r3.xyz, r3.xyz); + r1.w = cb3[34].w + -r1.w; + r1.w = saturate(cb3[34].z * r1.w); + r1.w = max(cb3[36].x, r1.w); + r2.w = cmp(0 < r1.w); + if (r2.w != 0) { + r1.z = cmp(0 < (int)r1.z); + if (r1.z != 0) { + r1.xy = t5.SampleLevel(s1_s, r1.xy, 0).xy; + r3.xyz = -cb3[20].xyz + r2.xyz; + r4.xyz = -cb3[21].xyz + r2.xyz; + r5.xyz = -cb3[22].xyz + r2.xyz; + r6.xyz = -cb3[23].xyz + r2.xyz; + r3.x = dot(r3.xyz, r3.xyz); + r3.y = dot(r4.xyz, r4.xyz); + r3.z = dot(r5.xyz, r5.xyz); + r3.w = dot(r6.xyz, r6.xyz); + r4.x = cmp(r3.x < cb3[20].w); + r4.y = cmp(r3.y < cb3[21].w); + r4.z = cmp(r3.z < cb3[22].w); + r4.w = cmp(r3.w < cb3[23].w); + r5.xyzw = r4.xyzw ? float4(1,1,1,1) : 0; + r4.xyz = r4.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0); + r4.xyz = r5.yzw + r4.xyz; + r5.yzw = max(float3(0,0,0), r4.xyz); + r1.z = dot(r5.xyzw, float4(4,3,2,1)); + r1.z = 4 + -r1.z; + r1.z = max(0, r1.z); + r1.z = min(3, r1.z); + r2.w = 1 + r1.z; + r2.w = min(3, r2.w); + r4.x = (uint)r2.w; + r4.y = dot(r3.yzw, icb[r4.x+0].yzw); + r4.x = r4.y / cb3[r4.x+20].w; + r2.w = cmp(r1.z < r2.w); + r4.y = cmp(r4.x >= 0); + r2.w = r2.w ? r4.y : 0; + r4.x = cmp(1 >= r4.x); + r2.w = r2.w ? r4.x : 0; + if (r2.w != 0) { + r2.w = (uint)r1.z; + r4.xy = float2(2.08299994,4.8670001) + r0.zw; + r4.x = dot(r4.xy, float2(0.0671105608,0.00583714992)); + r4.x = frac(r4.x); + r4.x = 52.9829178 * r4.x; + r4.x = frac(r4.x); + r3.x = dot(r3.xyzw, icb[r2.w+0].xyzw); + r2.w = r3.x / cb3[r2.w+20].w; + r2.w = sqrt(r2.w); + r2.w = -0.899999976 + r2.w; + r2.w = 12 * r2.w; + r2.w = cmp(r2.w >= r4.x); + r2.w = r2.w ? 1.000000 : 0; + r1.z = r2.w + r1.z; + } + r2.w = (uint)r1.z; + r2.w = (uint)r2.w << 2; + r1.x = cmp(r1.x >= 0.999989986); + r1.x = r1.x ? 1.000000 : 0; + r1.x = r1.x * r1.y; + r1.x = 4 * r1.x; + r3.xyz = -cb2[0].xyz * r1.xxx + r2.xyz; + r4.xyz = cb3[r2.w+1].xyz * r3.yyy; + r3.xyw = cb3[r2.w+0].xyz * r3.xxx + r4.xyz; + r3.xyz = cb3[r2.w+2].xyz * r3.zzz + r3.xyw; + r3.xyz = cb3[r2.w+3].xyz + r3.xyz; + r4.xyz = cmp(float3(0,0,0) >= r3.xyz); + r5.xyz = cmp(r3.xyz >= float3(1,1,1)); + r4.xyz = (int3)r4.xyz | (int3)r5.xyz; + r1.x = (int)r4.y | (int)r4.x; + r1.x = (int)r4.z | (int)r1.x; + r1.y = (int)r3.z & 0x7fffffff; + r1.y = cmp(0x7f800000 < (uint)r1.y); + r4.z = (int)r1.y | (int)r1.x; + r0.zw = float2(0.25,0.25) * r0.zw; + r5.xy = (int2)r0.zw; + r5.zw = float2(0,0); + r4.x = t3.Load(r5.xyz).x; + r0.z = cmp(r4.x < 0.00100000005); + r0.w = cmp(0.99000001 < r4.x); + r0.z = (int)r0.w | (int)r0.z; + if (r0.z == 0) { + r0.z = (int)r1.z; + r1.xy = r3.xy * cb3[r0.z+28].zw + cb3[r0.z+28].xy; + bitmask.x = ((~(-1 << 2)) << 2) & 0xffffffff; r0.x = (((uint)r0.x << 2) & bitmask.x) | ((uint)0 & ~bitmask.x); + bitmask.x = ((~(-1 << 2)) << 0) & 0xffffffff; r0.x = (((uint)r0.y << 0) & bitmask.x) | ((uint)r0.x & ~bitmask.x); + r0.y = dot(cb3[33].xyzw, icb[r0.z+0].xyzw); + + // Per-cascade PCF kernel scaling: sharper near shadows, softer distant shadows + if (SHADOW_HARDENING >= 1.f) { + r0.y *= lerp(0.75, 1.5, saturate((float)r0.z / 3.0)); + } + r0.zw = icb[r0.x+4].xy * float2(1,-1); + r3.xy = float2(0,0); + r1.z = 0; + while (true) { + r2.w = cmp((uint)r1.z >= 16); + if (r2.w != 0) break; + r5.x = dot(icb[r1.z+4].zw, r0.zw); + r5.y = dot(icb[r1.z+4].wz, icb[r0.x+4].xy); + r5.xy = r5.xy * r0.yy + r1.xy; + r5.xyzw = t1.Gather(s1_s, r5.xy).xyzw; + r5.xyzw = r5.xyzw + -r3.zzzz; + r6.xyzw = cmp(r5.xyzw >= float4(0,0,0,0)); + r6.xyzw = r6.xyzw ? float4(1,1,1,1) : 0; + r2.w = dot(r5.xyzw, r6.xyzw); + r5.x = r3.x + r2.w; + r2.w = dot(r6.xyzw, float4(1,1,1,1)); + r5.y = r3.y + r2.w; + r2.w = (int)r1.z + 1; + r3.xy = r5.xy; + r1.z = r2.w; + continue; + } + r0.x = r3.y * 0.03125 + -1; + r0.y = cmp(0 < r0.x); + r0.z = cmp(r0.x < 0); + r0.y = (int)-r0.y + (int)r0.z; + r0.y = (int)r0.y; + r0.x = -r0.y * r0.x + 1; + r0.z = r0.x * r0.x; + r0.w = r0.z * r0.x; + r1.x = 1 / r3.y; + r1.x = r3.x * r1.x; + r1.y = 1 / r3.z; + r1.x = saturate(r1.x * r1.y); + r0.x = -r0.z * r0.x + r0.x; + r0.x = r1.x * r0.x + r0.w; + r0.x = 1 + -r0.x; + r0.x = r0.x * r0.y; + r0.x = -r0.x * 0.5 + 0.5; + r4.x = r4.z ? 1 : r0.x; + } + } else { + r4.xz = float2(1,0); + } + } else { + r4.xz = float2(1,0); + } + r0.x = cmp(r1.w < 1); + r0.y = cmp(0.5 < cb3[36].x); + r0.x = (int)r0.y | (int)r0.x; + if (r0.x != 0) { + r0.xyz = ddy_coarse(r2.zxy); + r1.xyz = ddx_coarse(r2.yzx); + r3.xyz = r1.xyz * r0.xyz; + r0.xyz = r0.zxy * r1.yzx + -r3.xyz; + r0.w = dot(r0.xyz, r0.xyz); + r0.w = max(1.17549435e-038, r0.w); + r0.w = rsqrt(r0.w); + r0.xyz = r0.xyz * r0.www; + r0.w = dot(r0.xyz, cb2[0].xyz); + r0.w = max(0, r0.w); + r0.w = min(0.899999976, r0.w); + r0.w = 1 + -r0.w; + r1.xy = cb3[584].xy * r0.ww; + r3.xyz = -cb2[0].xyz * r1.xxx + r2.xyz; + r0.xyz = r0.xyz * r1.yyy + r3.xyz; + r1.xy = cb3[581].xy * r0.yy; + r1.xy = cb3[580].xy * r0.xx + r1.xy; + r1.xy = cb3[582].xy * r0.zz + r1.xy; + r1.xy = cb3[583].xy + r1.xy; + r3.xy = cmp(float2(0,0) < r1.xy); + r1.z = r3.y ? r3.x : 0; + r3.xy = cmp(r1.xy < float2(1,1)); + r2.w = r3.y ? r3.x : 0; + r1.z = (int)r1.z & (int)r2.w; + if (r1.z != 0) { + r1.y = cb3[585].z * r1.y; + r1.y = floor(r1.y); + r1.x = r1.y + r1.x; + r1.x = cb3[585].y * r1.x; + r1.x = (uint)r1.x; + r1.x = min(127, (uint)r1.x); + r1.y = 0x0000ffff & asint(cb3[r1.x+587].x); + r3.x = f16tof32(r1.y); + r1.y = cmp(r3.x >= 0); + if (r1.y != 0) { + r5.x = cb3[576].x; + r5.y = cb3[577].x; + r5.z = cb3[578].x; + r5.w = cb3[r1.x+587].y; + r0.w = 1; + r5.x = dot(r5.xyzw, r0.xyzw); + r6.x = cb3[576].y; + r6.y = cb3[577].y; + r6.z = cb3[578].y; + r6.w = cb3[r1.x+587].z; + r5.y = dot(r6.xyzw, r0.xyzw); + r6.x = cb3[576].z; + r6.y = cb3[577].z; + r6.z = cb3[578].z; + r6.w = cb3[r1.x+587].w; + r0.x = dot(r6.xyzw, r0.xyzw); + r0.yz = cmp(float2(0,0) < r5.xy); + r0.w = cmp(0 < r0.x); + r0.y = r0.z ? r0.y : 0; + r0.y = r0.w ? r0.y : 0; + r0.zw = cmp(r5.xy < float2(1,1)); + r1.y = cmp(r0.x < 1); + r0.z = r0.w ? r0.z : 0; + r0.z = r1.y ? r0.z : 0; + r0.y = r0.z ? r0.y : 0; + if (r0.y != 0) { + r0.y = asuint(cb3[r1.x+587].x) >> 16; + r3.y = f16tof32(r0.y); + r0.yz = r5.xy * cb3[584].zw + r3.xy; + r1.xy = r0.yz * cb3[586].zw + float2(0.5,0.5); + r1.xy = floor(r1.xy); + r0.yz = r0.yz * cb3[586].zw + -r1.xy; + r3.xyzw = float4(0.5,1,0.5,1) + r0.yyzz; + r5.xw = r3.xz * r3.xz; + r3.xz = min(float2(0,0), r0.yz); + r6.xy = max(float2(0,0), r0.yz); + r6.zw = r5.xw * float2(0.5,0.5) + -r0.yz; + r0.yz = float2(1,1) + -r0.yz; + r0.yz = -r3.xz * r3.xz + r0.yz; + r3.xy = -r6.xy * r6.xy + r3.yw; + r7.x = r6.z; + r7.y = r0.y; + r7.z = r3.x; + r7.w = r5.x; + r7.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r7.xyzw; + r5.x = r6.w; + r5.y = r0.z; + r5.z = r3.y; + r3.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r5.xyzw; + r5.xyzw = r7.xzxz + r7.ywyw; + r6.xyzw = r3.xxzz + r3.yyww; + r0.yz = r7.yw / r5.zw; + r0.yz = float2(-1.5,0.5) + r0.yz; + r7.xy = cb3[586].xx * r0.yz; + r0.yz = r3.yw / r6.yw; + r0.yz = float2(-1.5,0.5) + r0.yz; + r7.zw = cb3[586].yy * r0.yz; + r3.xyzw = r6.xyzw * r5.xyzw; + r5.xyzw = r1.xyxy * cb3[586].xyxy + r7.xzyz; + r0.y = t4.SampleCmpLevelZero(s3_s, r5.xy, r0.x).x; + r0.z = t4.SampleCmpLevelZero(s3_s, r5.zw, r0.x).x; + r0.z = r3.y * r0.z; + r0.y = r3.x * r0.y + r0.z; + r5.xyzw = r1.xyxy * cb3[586].xyxy + r7.xwyw; + r0.z = t4.SampleCmpLevelZero(s3_s, r5.xy, r0.x).x; + r0.y = r3.z * r0.z + r0.y; + r0.x = t4.SampleCmpLevelZero(s3_s, r5.zw, r0.x).x; + r4.y = r3.w * r0.x + r0.y; + } else { + r4.y = 1; + } + } else { + r4.y = 1; + } + } else { + r4.y = 1; + } + r4.x = r4.z ? r4.y : r4.x; + } else { + r4.y = 1; + } + r0.x = r4.x + -r4.y; + r0.x = r1.w * r0.x + r4.y; + r0.y = min(r4.y, r4.x); + r0.y = r0.y + -r0.x; + r0.x = cb3[36].x * r0.y + r0.x; + + // Cloud shadow (t2) — toggle via FAKE_CLOUD_SHADOWS + if (FAKE_CLOUD_SHADOWS >= 1.f) { + r0.y = cmp(0.00100000005 < r0.x); + if (r0.y != 0) { + r0.yzw = -cb1[93].xyz + r2.xyz; + r1.xy = cb1[96].xz * r0.zz + r0.yw; + r1.zw = cb1[94].zz * r1.xy; + r2.xy = cb1[103].ww * cb1[95].xy; + r1.xy = r1.xy * cb1[94].zz + r2.xy; + r0.z = t2.SampleLevel(s2_s, r1.xy, 0).x; + r1.xy = r1.zw * cb1[95].ww + r2.xy; + r1.x = t2.SampleLevel(s2_s, r1.xy, 0).x; + r0.y = dot(r0.yw, r0.yw); + r0.y = sqrt(r0.y); + r0.w = cb1[94].y + -cb1[94].x; + r0.y = -cb1[94].x + r0.y; + r0.w = 1 / r0.w; + r0.y = saturate(r0.y * r0.w); + r0.w = r0.y * -2 + 3; + r0.y = r0.y * r0.y; + r0.y = r0.w * r0.y; + r0.w = r1.x + -r0.z; + r0.y = r0.y * r0.w + r0.z; + r0.y = -1 + r0.y; + r0.y = cb1[95].z * r0.y + 1; + r0.x = r0.x * r0.y; + } + } + r0.y = cb3[35].z + -r0.x; + r0.x = cb3[35].w * r0.y + r0.x; + } else { + r0.x = cb3[35].z; + } + r0.x = min(1, r0.x); + + // Shadow compositing contrast curve: S-curve deepens shadow cores + if (SHADOW_HARDENING >= 1.f) { + r0.x = r0.x * r0.x * (3.0 - 2.0 * r0.x); + } + + r0.x = -1 + r0.x; + o0.x = cb3[34].x * r0.x + 1; + o0.yz = float2(1,0); + return; +} diff --git a/src/games/endfield/shadows/shadowcompositing-shadowmap_0xBD36930C.ps_5_0.hlsl b/src/games/endfield/shadows/shadowcompositing-shadowmap_0xBD36930C.ps_5_0.hlsl deleted file mode 100644 index bb8f0c46fd..0000000000 --- a/src/games/endfield/shadows/shadowcompositing-shadowmap_0xBD36930C.ps_5_0.hlsl +++ /dev/null @@ -1,402 +0,0 @@ - -#include "../shared.h" - -Texture2D t5 : register(t5); - -Texture2D t4 : register(t4); - -Texture2D t3 : register(t3); - -Texture2D t2 : register(t2); - -Texture2D t1 : register(t1); - -Texture2D t0 : register(t0); - -SamplerComparisonState s3_s : register(s3); - -SamplerState s2_s : register(s2); - -SamplerState s1_s : register(s1); - -SamplerState s0_s : register(s0); - -cbuffer cb2 : register(b2) -{ - float4 cb2[715]; -} - -cbuffer cb1 : register(b1) -{ - float4 cb1[1]; -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[186]; -} - - - - -// 3Dmigoto declarations -#define cmp - - - -void main( - float4 v0 : SV_Position0, - float2 v1 : TEXCOORD0, - out float3 o0 : SV_Target0) -{ - const float4 icb[] = { { 1.000000, 0, 0, 0}, - { 0, 1.000000, 0, 0}, - { 0, 0, 1.000000, 0}, - { 0, 0, 0, 1.000000}, - { -0.399656, 0.916665, -0.942016, -0.399062}, - { 0.124512, -0.992218, 0.945586, -0.768907}, - { 0.852354, 0.522965, -0.094184, -0.929389}, - { -0.229312, 0.973353, 0.344959, 0.293878}, - { -0.772406, 0.635129, -0.915886, 0.457714}, - { 0.792753, -0.609544, -0.815442, -0.879125}, - { -0.578050, 0.816002, -0.382775, 0.276768}, - { -0.831130, -0.556079, 0.974844, 0.756484}, - { 0.807795, 0.589464, 0.443233, -0.975116}, - { 0.471415, 0.881911, 0.537430, -0.473734}, - { -0.313974, -0.949432, -0.264969, -0.418930}, - { -0.945007, -0.327051, 0.791975, 0.190902}, - { -0.185037, -0.982732, -0.241888, 0.997065}, - { -0.933756, 0.357911, -0.814100, 0.914376}, - { -0.997614, 0.069036, 0.199841, 0.786414}, - { 0.306128, 0.951990, 0.143832, -0.141008} }; - float4 r0,r1,r2,r3,r4,r5,r6,r7; - uint4 bitmask, uiDest; - float4 fDest; - - r0.x = cmp(cb2[35].w < 0.99000001); - if (r0.x != 0) { - r0.xy = (uint2)v0.xy; - r0.zw = (uint2)r0.xy; - r1.xy = cb0[82].zw * r0.zw; - r1.zw = r1.xy * float2(2,2) + float2(-1,-1); - r2.xy = float2(0.5,0.5) + r0.zw; - r2.xy = cb0[82].zw * r2.xy; - r2.x = t0.SampleLevel(s0_s, r2.xy, 0).x; - r3.xyzw = cb0[25].xyzw * -r1.wwww; - r3.xyzw = cb0[24].xyzw * r1.zzzz + r3.xyzw; - r2.xyzw = cb0[26].xyzw * r2.xxxx + r3.xyzw; - r2.xyzw = cb0[27].xyzw + r2.xyzw; - r2.xyz = r2.xyz / r2.www; - r3.xyz = ddy_coarse(r2.zxy); - r4.xyz = ddx_coarse(r2.yzx); - r5.xyz = r4.xyz * r3.xyz; - r3.xyz = r3.zxy * r4.yzx + -r5.xyz; - r1.z = dot(r3.xyz, r3.xyz); - r1.z = max(1.17549435e-38, r1.z); - r1.z = rsqrt(r1.z); - r3.xyz = r3.xyz * r1.zzz; - r1.z = (int)cb2[35].x; - r1.w = cmp((int)r1.z == 2); - r4.xyz = r1.www ? cb2[20].xyz : cb0[44].xyz; - r4.xyz = -r4.xyz + r2.xyz; - r1.w = dot(r4.xyz, r4.xyz); - r1.w = cb2[34].w + -r1.w; - r1.w = saturate(cb2[34].z * r1.w); - r2.w = cmp(0 < r1.w); - if (r2.w != 0) { - r1.z = cmp(0 < (int)r1.z); - if (r1.z != 0) { - r1.xy = t5.SampleLevel(s1_s, r1.xy, 0).xy; - r4.xyz = -cb2[20].xyz + r2.xyz; - r5.xyz = -cb2[21].xyz + r2.xyz; - r6.xyz = -cb2[22].xyz + r2.xyz; - r7.xyz = -cb2[23].xyz + r2.xyz; - r4.x = dot(r4.xyz, r4.xyz); - r4.y = dot(r5.xyz, r5.xyz); - r4.z = dot(r6.xyz, r6.xyz); - r4.w = dot(r7.xyz, r7.xyz); - r5.x = cmp(r4.x < cb2[20].w); - r5.y = cmp(r4.y < cb2[21].w); - r5.z = cmp(r4.z < cb2[22].w); - r5.w = cmp(r4.w < cb2[23].w); - r6.xyzw = r5.xyzw ? float4(1,1,1,1) : 0; - r5.xyz = r5.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0); - r5.xyz = r6.yzw + r5.xyz; - r6.yzw = max(float3(0,0,0), r5.xyz); - r1.z = dot(r6.xyzw, float4(4,3,2,1)); - r1.z = 4 + -r1.z; - r1.z = max(0, r1.z); - r1.z = min(3, r1.z); - r2.w = 1 + r1.z; - r2.w = min(3, r2.w); - r2.w = (uint)r2.w; - r3.w = dot(r4.yzw, icb[r2.w+0].yzw); - r2.w = r3.w / cb2[r2.w+20].w; - r3.w = cmp(r2.w >= 0); - r2.w = cmp(1 >= r2.w); - r2.w = r2.w ? r3.w : 0; - if (r2.w != 0) { - r2.w = (uint)r1.z; - r5.xy = float2(2.08299994,4.8670001) + r0.zw; - r3.w = dot(r5.xy, float2(0.0671105608,0.00583714992)); - r3.w = frac(r3.w); - r3.w = 52.9829178 * r3.w; - r3.w = frac(r3.w); - r4.x = dot(r4.xyzw, icb[r2.w+0].xyzw); - r2.w = r4.x / cb2[r2.w+20].w; - r2.w = sqrt(r2.w); - r2.w = -0.899999976 + r2.w; - r2.w = 12 * r2.w; - r2.w = cmp(r2.w >= r3.w); - r2.w = r2.w ? 1.000000 : 0; - r1.z = r2.w + r1.z; - } - r2.w = dot(r3.xyz, cb1[0].xyz); - r2.w = max(0, r2.w); - r2.w = min(0.899999976, r2.w); - r2.w = 1 + -r2.w; - r3.w = (uint)r1.z; - r4.x = (uint)r3.w << 2; - r4.yz = cb2[r3.w+24].xy * r2.ww; - r1.x = cmp(r1.x >= 0.999989986); - r1.x = r1.x ? 1.000000 : 0; - r1.x = r1.x * r1.y; - r1.x = 4 * r1.x; - r1.x = max(r4.y, r1.x); - r5.xyz = -cb1[0].xyz * r1.xxx + r2.xyz; - r4.yzw = r3.xyz * r4.zzz + r5.xyz; - r5.xyz = cb2[r4.x+1].xyz * r4.zzz; - r5.xyz = cb2[r4.x+0].xyz * r4.yyy + r5.xyz; - r4.yzw = cb2[r4.x+2].xyz * r4.www + r5.xyz; - r4.xyz = cb2[r4.x+3].xyz + r4.yzw; - r5.xyz = cmp(float3(0,0,0) >= r4.xyz); - r6.xyz = cmp(r4.xyz >= float3(1,1,1)); - r5.xyz = (int3)r5.xyz | (int3)r6.xyz; - r1.x = (int)r5.y | (int)r5.x; - r1.x = (int)r5.z | (int)r1.x; - r1.y = (int)r4.z & 0x7fffffff; - r1.y = cmp(0x7f800000 < (uint)r1.y); - r5.z = (int)r1.y | (int)r1.x; - r0.zw = float2(0.25,0.25) * r0.zw; - r6.xy = (int2)r0.zw; - r6.zw = float2(0,0); - r5.x = t3.Load(r6.xyz).x; - r0.z = cmp(r5.x < 0.00100000005); - r0.w = cmp(0.99000001 < r5.x); - r0.z = (int)r0.w | (int)r0.z; - if (r0.z == 0) { - r0.z = (int)r1.z; - r1.xy = r4.xy * cb2[r0.z+28].zw + cb2[r0.z+28].xy; - bitmask.x = ((~(-1 << 2)) << 2) & 0xffffffff; r0.x = (((uint)r0.x << 2) & bitmask.x) | ((uint)0 & ~bitmask.x); - bitmask.x = ((~(-1 << 2)) << 0) & 0xffffffff; r0.x = (((uint)r0.y << 0) & bitmask.x) | ((uint)r0.x & ~bitmask.x); - r0.y = dot(cb2[33].xyzw, icb[r0.z+0].xyzw); - - // Per-cascade PCF kernel scaling: sharper near shadows, softer distant shadows - if (SHADOW_HARDENING >= 1.f) { - r0.y *= lerp(0.75, 1.5, saturate((float)r0.z / 3.0)); - } - - r0.zw = icb[r0.x+4].xy * float2(1,-1); - r4.xy = float2(0,0); - r1.z = 0; - while (true) { - r2.w = cmp((uint)r1.z >= 16); - if (r2.w != 0) break; - r6.x = dot(icb[r1.z+4].zw, r0.zw); - r6.y = dot(icb[r1.z+4].wz, icb[r0.x+4].xy); - r6.xy = r6.xy * r0.yy + r1.xy; - r6.xyzw = t1.Gather(s1_s, r6.xy).xyzw; - r6.xyzw = r6.xyzw + -r4.zzzz; - r7.xyzw = cmp(r6.xyzw >= float4(0,0,0,0)); - r7.xyzw = r7.xyzw ? float4(1,1,1,1) : 0; - r2.w = dot(r6.xyzw, r7.xyzw); - r6.x = r4.x + r2.w; - r2.w = dot(r7.xyzw, float4(1,1,1,1)); - r6.y = r4.y + r2.w; - r2.w = (int)r1.z + 1; - r4.xy = r6.xy; - r1.z = r2.w; - continue; - } - r0.x = r4.y * 0.03125 + -1; - r0.y = cmp(0 < r0.x); - r0.z = cmp(r0.x < 0); - r0.y = (int)-r0.y + (int)r0.z; - r0.y = (int)r0.y; - r0.x = -r0.y * r0.x + 1; - r0.z = r0.x * r0.x; - r0.w = r0.z * r0.x; - r1.x = 1 / r4.y; - r1.x = r4.x * r1.x; - r1.y = 1 / r4.z; - r1.x = saturate(r1.x * r1.y); - r0.x = -r0.z * r0.x + r0.x; - r0.x = r1.x * r0.x + r0.w; - r0.x = 1 + -r0.x; - r0.x = r0.x * r0.y; - r0.x = -r0.x * 0.5 + 0.5; - r5.x = r5.z ? 1 : r0.x; - } - } else { - r5.xz = float2(1,0); - } - } else { - r5.xz = float2(1,0); - } - r0.x = cmp(r1.w < 1); - if (r0.x != 0) { - r0.x = dot(r3.xyz, cb1[0].xyz); - r0.x = max(0, r0.x); - r0.x = min(0.899999976, r0.x); - r0.x = 1 + -r0.x; - r0.xy = cb2[584].xy * r0.xx; - r0.xzw = -cb1[0].xyz * r0.xxx + r2.xyz; - r0.xyz = r3.xyz * r0.yyy + r0.xzw; - r1.xy = cb2[581].xy * r0.yy; - r1.xy = cb2[580].xy * r0.xx + r1.xy; - r1.xy = cb2[582].xy * r0.zz + r1.xy; - r1.xy = cb2[583].xy + r1.xy; - r3.xy = cmp(float2(0,0) < r1.xy); - r1.z = r3.y ? r3.x : 0; - r3.xy = cmp(r1.xy < float2(1,1)); - r2.w = r3.y ? r3.x : 0; - r1.z = (int)r1.z & (int)r2.w; - if (r1.z != 0) { - r1.y = cb2[585].z * r1.y; - r1.y = floor(r1.y); - r1.x = r1.y + r1.x; - r1.x = cb2[585].y * r1.x; - r1.x = (uint)r1.x; - r1.x = min(127, (uint)r1.x); - r1.y = 0x0000ffff & asint(cb2[r1.x+587].x); - r3.x = f16tof32((uint)r1.y); - r1.y = cmp(r3.x >= 0); - if (r1.y != 0) { - r4.x = cb2[576].x; - r4.y = cb2[577].x; - r4.z = cb2[578].x; - r4.w = cb2[r1.x+587].y; - r0.w = 1; - r4.x = dot(r4.xyzw, r0.xyzw); - r6.x = cb2[576].y; - r6.y = cb2[577].y; - r6.z = cb2[578].y; - r6.w = cb2[r1.x+587].z; - r4.y = dot(r6.xyzw, r0.xyzw); - r6.x = cb2[576].z; - r6.y = cb2[577].z; - r6.z = cb2[578].z; - r6.w = cb2[r1.x+587].w; - r0.x = dot(r6.xyzw, r0.xyzw); - r0.yz = cmp(float2(0,0) < r4.xy); - r0.w = cmp(0 < r0.x); - r0.y = r0.z ? r0.y : 0; - r0.y = r0.w ? r0.y : 0; - r0.zw = cmp(r4.xy < float2(1,1)); - r1.y = cmp(r0.x < 1); - r0.z = r0.w ? r0.z : 0; - r0.z = r1.y ? r0.z : 0; - r0.y = r0.z ? r0.y : 0; - if (r0.y != 0) { - r0.y = asuint(cb2[r1.x+587].x) >> 16; - r3.y = f16tof32((uint)r0.y); - r0.yz = r4.xy * cb2[584].zw + r3.xy; - r1.xy = r0.yz * cb2[586].zw + float2(0.5,0.5); - r1.xy = floor(r1.xy); - r0.yz = r0.yz * cb2[586].zw + -r1.xy; - r3.xyzw = float4(0.5,1,0.5,1) + r0.yyzz; - r4.xw = r3.xz * r3.xz; - r3.xz = min(float2(0,0), r0.yz); - r6.xy = max(float2(0,0), r0.yz); - r6.zw = r4.xw * float2(0.5,0.5) + -r0.yz; - r0.yz = float2(1,1) + -r0.yz; - r0.yz = -r3.xz * r3.xz + r0.yz; - r3.xy = -r6.xy * r6.xy + r3.yw; - r7.x = r6.z; - r7.y = r0.y; - r7.z = r3.x; - r7.w = r4.x; - r7.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r7.xyzw; - r4.x = r6.w; - r4.y = r0.z; - r4.z = r3.y; - r3.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r4.xyzw; - r4.xyzw = r7.xzxz + r7.ywyw; - r6.xyzw = r3.xxzz + r3.yyww; - r0.yz = r7.yw / r4.zw; - r0.yz = float2(-1.5,0.5) + r0.yz; - r7.xy = cb2[586].xx * r0.yz; - r0.yz = r3.yw / r6.yw; - r0.yz = float2(-1.5,0.5) + r0.yz; - r7.zw = cb2[586].yy * r0.yz; - r3.xyzw = r6.xyzw * r4.xyzw; - r4.xyzw = r1.xyxy * cb2[586].xyxy + r7.xzyz; - r0.y = t4.SampleCmpLevelZero(s3_s, r4.xy, r0.x).x; - r0.z = t4.SampleCmpLevelZero(s3_s, r4.zw, r0.x).x; - r0.z = r3.y * r0.z; - r0.y = r3.x * r0.y + r0.z; - r4.xyzw = r1.xyxy * cb2[586].xyxy + r7.xwyw; - r0.z = t4.SampleCmpLevelZero(s3_s, r4.xy, r0.x).x; - r0.y = r3.z * r0.z + r0.y; - r0.x = t4.SampleCmpLevelZero(s3_s, r4.zw, r0.x).x; - r5.y = r3.w * r0.x + r0.y; - } else { - r5.y = 1; - } - } else { - r5.y = 1; - } - } else { - r5.y = 1; - } - r5.x = r5.z ? r5.y : r5.x; - } else { - r5.y = 1; - } - r0.x = r5.x + -r5.y; - r0.x = r1.w * r0.x + r5.y; - - // Cloud shadow (t2) — toggle via FAKE_CLOUD_SHADOWS - if (FAKE_CLOUD_SHADOWS >= 1.f) { - r0.y = cmp(0.00100000005 < r0.x); - if (r0.y != 0) { - r0.yzw = -cb0[175].xyz + r2.xyz; - r1.xy = cb0[178].xz * r0.zz + r0.yw; - r1.zw = cb0[176].zz * r1.xy; - r2.xy = cb0[185].ww * cb0[177].xy; - r1.xy = r1.xy * cb0[176].zz + r2.xy; - r0.z = t2.SampleLevel(s2_s, r1.xy, 0).x; - r1.xy = r1.zw * cb0[177].ww + r2.xy; - r1.x = t2.SampleLevel(s2_s, r1.xy, 0).x; - r0.y = dot(r0.yw, r0.yw); - r0.y = sqrt(r0.y); - r0.w = cb0[176].y + -cb0[176].x; - r0.y = -cb0[176].x + r0.y; - r0.w = 1 / r0.w; - r0.y = saturate(r0.y * r0.w); - r0.w = r0.y * -2 + 3; - r0.y = r0.y * r0.y; - r0.y = r0.w * r0.y; - r0.w = r1.x + -r0.z; - r0.y = r0.y * r0.w + r0.z; - r0.y = -1 + r0.y; - r0.y = cb0[177].z * r0.y + 1; - r0.x = r0.x * r0.y; - } - } - r0.y = cb2[35].z + -r0.x; - r0.x = cb2[35].w * r0.y + r0.x; - } else { - r0.x = cb2[35].z; - } - r0.x = min(1, r0.x); - - // Shadow compositing contrast curve: S-curve deepens shadow cores - if (SHADOW_HARDENING >= 1.f) { - r0.x = r0.x * r0.x * (3.0 - 2.0 * r0.x); - } - - r0.x = -1 + r0.x; - o0.x = cb2[34].x * r0.x + 1; - o0.yz = float2(1,0); - return; -} diff --git a/src/games/endfield/ssr/ssr-denoiser_0x0C2070DE.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-denoiser_0x4DF0E317.cs_5_0.hlsl similarity index 92% rename from src/games/endfield/ssr/ssr-denoiser_0x0C2070DE.cs_5_0.hlsl rename to src/games/endfield/ssr/ssr-denoiser_0x4DF0E317.cs_5_0.hlsl index 98152c6722..7ebd245d77 100644 --- a/src/games/endfield/ssr/ssr-denoiser_0x0C2070DE.cs_5_0.hlsl +++ b/src/games/endfield/ssr/ssr-denoiser_0x4DF0E317.cs_5_0.hlsl @@ -10,7 +10,7 @@ SamplerState s0_s : register(s0); cbuffer cb0 : register(b0) { - float4 cb0[83]; + float4 cb0[1]; } RWTexture2D u0 : register(u0); @@ -28,7 +28,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.xyzw = (int4)vThreadID.xyxy + int4(0,1,1,1); r0.xyzw = (int4)r0.xyzw; r0.xyzw = float4(0.5,0.5,0.5,0.5) + r0.xyzw; - r0.xyzw = cb0[82].zwzw * r0.xyzw; + r0.xyzw = cb0[0].zwzw * r0.xyzw; r1.xyz = t1.SampleLevel(s0_s, r0.zw, 0).xyz; r0.xyz = t1.SampleLevel(s0_s, r0.xy, 0).xyz; r0.w = dot(r1.xz, float2(0.5,-0.5)); @@ -44,7 +44,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.xyzw = (int4)vThreadID.xyxy + int4(1,0,-1,1); r0.xyzw = (int4)r0.xyzw; r0.xyzw = float4(0.5,0.5,0.5,0.5) + r0.xyzw; - r0.xyzw = cb0[82].zwzw * r0.xyzw; + r0.xyzw = cb0[0].zwzw * r0.xyzw; r3.xyz = t1.SampleLevel(s0_s, r0.zw, 0).xyz; r0.xyz = t1.SampleLevel(s0_s, r0.xy, 0).xyz; r0.w = dot(r3.xz, float2(0.5,-0.5)); @@ -60,7 +60,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.xyzw = (int4)vThreadID.xyxy + int4(1,-1,-1,0); r0.xyzw = (int4)r0.xyzw; r0.xyzw = float4(0.5,0.5,0.5,0.5) + r0.xyzw; - r0.xyzw = cb0[82].zwzw * r0.xyzw; + r0.xyzw = cb0[0].zwzw * r0.xyzw; r5.xyz = t1.SampleLevel(s0_s, r0.zw, 0).xyz; r0.xyz = t1.SampleLevel(s0_s, r0.xy, 0).xyz; r0.w = dot(r5.xz, float2(0.5,-0.5)); @@ -76,7 +76,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.xyzw = (int4)vThreadID.xyxy + int4(-1,-1,0,-1); r0.xyzw = (int4)r0.xyzw; r0.xyzw = float4(0.5,0.5,0.5,0.5) + r0.xyzw; - r0.xyzw = cb0[82].zwzw * r0.xyzw; + r0.xyzw = cb0[0].zwzw * r0.xyzw; r7.xyz = t1.SampleLevel(s0_s, r0.xy, 0).xyz; r0.xyz = t1.SampleLevel(s0_s, r0.zw, 0).xyz; r0.w = dot(r7.xz, float2(0.5,-0.5)); @@ -95,7 +95,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.xyz = r6.xyz * r6.xyz + r0.xyz; r9.xy = (int2)vThreadID.xy; r9.xy = float2(0.5,0.5) + r9.xy; - r9.xy = cb0[82].zw * r9.xy; + r9.xy = cb0[0].zw * r9.xy; r10.xyz = t1.SampleLevel(s0_s, r9.xy, 0).xyz; r0.w = dot(r10.xz, float2(0.5,-0.5)); r11.y = 0.501960814 + r0.w; @@ -166,13 +166,13 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.w = 0.899999976 * r0.w; if (shader_injection.improved_ssr >= 0.5f) { // Manual bilinear interpolation for history color - float2 texelPos = r2.xy * cb0[82].xy - 0.5; + float2 texelPos = r2.xy * cb0[0].xy - 0.5; float2 f = frac(texelPos); - float2 base = (floor(texelPos) + 0.5) * cb0[82].zw; + float2 base = (floor(texelPos) + 0.5) * cb0[0].zw; float3 h00 = t3.SampleLevel(s0_s, base, 0).xyz; - float3 h10 = t3.SampleLevel(s0_s, base + float2(cb0[82].z, 0), 0).xyz; - float3 h01 = t3.SampleLevel(s0_s, base + float2(0, cb0[82].w), 0).xyz; - float3 h11 = t3.SampleLevel(s0_s, base + cb0[82].zw, 0).xyz; + float3 h10 = t3.SampleLevel(s0_s, base + float2(cb0[0].z, 0), 0).xyz; + float3 h01 = t3.SampleLevel(s0_s, base + float2(0, cb0[0].w), 0).xyz; + float3 h11 = t3.SampleLevel(s0_s, base + cb0[0].zw, 0).xyz; r2.xyz = lerp(lerp(h00, h10, f.x), lerp(h01, h11, f.x), f.y); } else { r2.xyz = t3.SampleLevel(s0_s, r2.xy, 0).xyz; diff --git a/src/games/endfield/ssr/ssr-temporal2_0x7D50F458.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-temporal2_0x7D50F458.cs_5_0.hlsl new file mode 100644 index 0000000000..bceab45d41 --- /dev/null +++ b/src/games/endfield/ssr/ssr-temporal2_0x7D50F458.cs_5_0.hlsl @@ -0,0 +1,396 @@ +#include "../shared.h" + +#ifdef SSR_FULL_TRACE_VARIANT +Texture2D t5 : register(t5); +#endif + +Texture2D t4 : register(t4); + +Texture2D t3 : register(t3); + +Texture2D t2 : register(t2); + +Texture2D t1 : register(t1); + +StructuredBuffer t0 : register(t0); + +SamplerState s0_s : register(s0); + +cbuffer cb2 : register(b2) +{ +#ifdef SSR_FULL_TRACE_VARIANT + float4 cb2[6]; +#else + float4 cb2[7]; +#endif +} + +cbuffer cb1 : register(b1) +{ + float4 cb1[3]; +} + +cbuffer cb0 : register(b0) +{ + float4 cb0[65]; +} + +RWTexture2D u0 : register(u0); +RWTexture2D u1 : register(u1); +RWTexture2D u2 : register(u2); + + +#define cmp - + + +[numthreads(8, 8, 1)] +void main(uint3 vThreadGroupID : SV_GroupID, uint3 vThreadIDInGroup : SV_GroupThreadID) +{ + float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13; + uint4 bitmask, uiDest; + float4 fDest; + +#ifdef SSR_FULL_TRACE_VARIANT + uint dispatch_index = vThreadGroupID.x; +#else + uint dispatch_index = (uint)cb2[6].z + vThreadGroupID.x; +#endif + uint packed_dispatch = t0[dispatch_index]; + uint2 packed_group = uint2(packed_dispatch >> 16, packed_dispatch & 0x0000ffff); + r0.xy = mad((int2)packed_group, int2(8,8), (int2)vThreadIDInGroup.xy); + r1.xy = (uint2)cb2[0].xy; + r1.xy = cmp((uint2)r0.xy >= (uint2)r1.xy); + r1.x = (int)r1.y | (int)r1.x; + if (r1.x == 0) { + r1.x = u2[(uint2)r0.xy].x; + r1.yz = (int2)r0.xy; + r1.yz = float2(0.5,0.5) + r1.yz; + r2.xy = cb2[0].zw * r1.yz; + r1.w = cmp(0.00100000005 < r1.x); + if (r1.w != 0) { +#ifdef SSR_FULL_TRACE_VARIANT + r2.zw = (uint2)r0.xy; + r2.zw = float2(0.5,0.5) + r2.zw; + r2.zw = cb2[0].zw * r2.zw; + bool use_full_trace = t4.SampleLevel(s0_s, r2.zw, 0).x > 0.5; + float low_trace_count = max(ceil(cb2[3].x * 0.125), 4.0f); + r1.w = use_full_trace ? cb2[3].x : low_trace_count; + if (shader_injection.improved_ssr >= 0.5f) { + r1.w = max(r1.w, use_full_trace ? 256.0f : 32.0f); + } +#else + r1.w = cb2[3].x * 0.125; + r1.w = ceil(r1.w); + r1.w = max(r1.w, (shader_injection.improved_ssr >= 0.5f) ? 32.0f : 4.0f); +#endif + r3.z = t2.SampleLevel(s0_s, r2.xy, 0).x; + r3.xy = r2.xy * float2(2,2) + float2(-1,-1); + r4.xyzw = cb0[13].xyzw * r3.yyyy; + r4.xyzw = cb0[12].xyzw * r3.xxxx + r4.xyzw; + r4.xyzw = cb0[14].xyzw * r3.zzzz + r4.xyzw; + r4.xyzw = cb0[15].xyzw + r4.xyzw; + r4.xyz = r4.xyz / r4.www; + r0.zw = float2(0,0); +#ifdef SSR_FULL_TRACE_VARIANT + r5.xyz = t5.Load(r0.xyz).xyz; +#else + r5.xyz = t4.Load(r0.xyz).xyz; +#endif + r0.zw = r5.xy * float2(2,2) + float2(-1,-1); + r2.z = dot(float2(1,1), abs(r0.zw)); + r6.y = 1 + -r2.z; + r2.z = cmp(r6.y < 0); + r5.xy = cmp(r0.zw >= float2(0,0)); + r7.xy = float2(1,1) + -abs(r0.wz); + r5.xy = r5.xy ? float2(1,1) : float2(-1,-1); + r5.xy = r7.xy * r5.xy; + r6.xz = r2.zz ? r5.xy : r0.zw; + r0.z = dot(r6.xyz, r6.xyz); + r0.z = rsqrt(r0.z); + r5.xyw = r6.xyz * r0.zzz; + r0.z = r5.z * r5.z; + r0.z = r0.z * r0.z; + r4.w = -r4.y; + r0.w = dot(r4.xzw, r4.xzw); + r0.w = rsqrt(r0.w); + r4.xyz = r4.xwz * r0.www; + r6.xyz = cb0[1].xyz * r5.yyy; + r6.xyz = cb0[0].xyz * r5.xxx + r6.xyz; + r6.xyz = cb0[2].xyz * r5.www + r6.xyz; + r0.w = dot(r4.xyz, r6.xyz); + r0.w = r0.w + r0.w; + r4.xyz = r6.xyz * -r0.www + r4.xyz; + r6.xyzw = cb0[9].xyzw * r4.yyyy; + r6.xyzw = cb0[8].xyzw * r4.xxxx + r6.xyzw; + r4.xyzw = cb0[10].xyzw * r4.zzzz + r6.xyzw; + r3.w = 1; + r4.xyzw = r4.xyzw * float4(1,-1,1,1) + r3.xyzw; + r4.xyz = r4.xyz / r4.www; + r4.xyz = r4.xyz + -r3.xyz; + r0.w = dot(r4.xy, r4.xy); + r0.w = sqrt(r0.w); + r2.z = 0.5 * r0.w; + r6.xy = r3.xy * r2.zz + r4.xy; + r6.xy = -r0.ww * float2(0.5,0.5) + abs(r6.xy); + r6.xy = max(float2(0,0), r6.xy); + r6.xy = r6.xy / abs(r4.xy); + r6.xy = float2(1,1) + -r6.xy; + r0.w = min(r6.x, r6.y); + r0.w = r0.w / r2.z; + r4.xyz = r4.xyz * r0.www; + r0.w = abs(r4.z) / r1.w; + r0.w = max(9.99999975e-005, r0.w); + r2.z = 1 / r1.w; + r4.xyz = float3(0.5,0.5,1) * r4.xyz; + r4.xyz = r4.xyz * r2.zzz; + r2.zw = cb2[0].xy * r4.xy; + r2.z = max(abs(r2.z), abs(r2.w)); + r2.w = cmp(r2.z < 1); + r2.z = 0.00100000005 + r2.z; + r2.z = 1 / r2.z; + r3.w = trunc(cb2[1].x); + r1.yz = r3.ww * float2(2.08299994,4.8670001) + r1.yz; + r1.y = dot(r1.yz, float2(0.0671105608,0.00583714992)); + r1.y = frac(r1.y); + r1.y = 52.9829178 * r1.y; + r1.y = frac(r1.y); + r1.y = r2.w ? r2.z : r1.y; + r6.xyz = r3.xyz * float3(0.5,0.5,1) + float3(0.5,0.5,0); + r6.xyz = r4.xyz * r1.yyy + r6.xyz; + r1.y = t2.SampleLevel(s0_s, r6.xy, 0).x; + r1.y = r6.z + -r1.y; + r7.xyz = float3(0,0,0); + r8.xyz = float3(0,0,0); + r9.xyz = r6.xyz; + r1.z = 0; + r2.z = 0; + r2.w = r1.y; + while (true) { + r3.w = cmp(r2.z < r1.w); + if (r3.w != 0) { + r10.xyzw = r4.xyxy * float4(1,1,2,2) + r9.xyxy; + r11.xyzw = r4.xyxy * float4(3,3,4,4) + r9.xyxy; + r12.xyzw = r4.zzzz * float4(1,2,3,4) + r9.zzzz; + r13.x = t2.SampleLevel(s0_s, r10.xy, 0).x; + r13.y = t2.SampleLevel(s0_s, r10.zw, 0).x; + r13.z = t2.SampleLevel(s0_s, r11.xy, 0).x; + r13.w = t2.SampleLevel(s0_s, r11.zw, 0).x; + r10.xyzw = -r13.xyzw + r12.xyzw; + r11.xyzw = r10.xyzw + r0.wwww; + r11.xyzw = cmp(abs(r11.xyzw) < r0.wwww); + r12.xy = (int2)r11.zw | (int2)r11.xy; + r3.w = (int)r12.y | (int)r12.x; + if (r3.w != 0) { + r12.xy = r11.zz ? r10.zy : r10.wz; + r10.yz = r11.yy ? r10.yx : r12.xy; + r3.w = r11.x ? r10.x : r10.y; + r4.w = r11.x ? r2.w : r10.z; + r5.z = r11.z ? 2 : 3; + r5.z = r11.y ? 1 : r5.z; + r5.z = r11.x ? 0 : r5.z; + r3.w = r4.w + -r3.w; + r3.w = saturate(r4.w / r3.w); + r3.w = r5.z + r3.w; + r10.xyz = r4.xyz * r3.www + r9.xyz; + r1.z = -1; + r8.xyz = r10.xyz; + break; + } + r9.xyz = r4.xyz * float3(4,4,4) + r9.xyz; + r2.z = 4 + r2.z; + r7.xyz = r9.xyz; + r1.z = 0; + r2.w = r10.w; + continue; + } else { + r8.xyz = r7.xyz; + r1.z = 0; + break; + } + r1.z = 0; + } + if (r1.z != 0) { + r0.w = max(r8.x, r8.y); + r0.w = 1 + -r0.w; + r1.y = min(r8.x, r8.y); + r0.w = min(r1.y, r0.w); + r1.y = cmp(cb2[1].y < r0.w); + r0.w = saturate(r0.w / cb2[1].y); + r0.w = r1.y ? 1 : r0.w; + r0.w = r1.x * r0.w; + r1.yz = t3.SampleLevel(s0_s, r8.xy, 0).xy; + r2.zw = abs(r1.yz) * float2(2,2) + float2(-1,-1); + r2.zw = r2.zw * r2.zw; + r2.zw = r2.zw * r2.zw; + r1.yz = float2(-0.5,-0.5) + r1.yz; + r4.xy = cmp(float2(0,0) < r1.yz); + r1.yz = cmp(r1.yz < float2(0,0)); + r1.yz = (int2)-r4.xy + (int2)r1.yz; + r1.yz = (int2)r1.yz; + r1.yz = r2.zw * r1.yz; + r1.w = -cb2[2].z + 1; + r2.zw = r1.yz * r1.ww; + r2.xy = -r1.yz * r1.ww + r8.xy; + r1.y = t1.SampleLevel(s0_s, r2.xy, 0).x; + r1.z = cmp(0 < r1.y); + r1.w = cmp(cb2[2].z < 0.5); + r1.z = r1.w ? r1.z : 0; + r4.xy = r2.xy * float2(2,2) + float2(-1,-1); + r6.xyzw = cb0[62].xyzw * -r4.yyyy; + r4.xyzw = cb0[61].xyzw * r4.xxxx + r6.xyzw; + r4.xyzw = cb0[63].xyzw * r1.yyyy + r4.xyzw; + r4.xyzw = cb0[64].xyzw + r4.xyzw; + r1.yw = r8.xy * float2(2,2) + float2(-1,-1); + r6.xyzw = cb0[25].xyzw * -r1.wwww; + r6.xyzw = cb0[24].xyzw * r1.yyyy + r6.xyzw; + r6.xyzw = cb0[26].xyzw * r8.zzzz + r6.xyzw; + r6.xyzw = cb0[27].xyzw + r6.xyzw; + r1.y = cb1[2].z * r8.z + cb1[2].w; + r1.y = 1 / r1.y; + r4.xyz = r4.xyz / r4.www; + r6.xyz = r6.xyz / r6.www; + r4.xyz = -r6.xyz + r4.xyz; + r1.w = dot(r4.xyz, r4.xyz); + r1.w = sqrt(r1.w); + r1.y = r1.y * r1.y; + r1.y = 0.00999999978 * r1.y; + r1.y = cmp(r1.y < r1.w); + r1.y = r1.y ? 0 : r0.w; + r1.x = r1.z ? r1.y : r0.w; + } else { + r2.zw = float2(0,0); + r1.x = 0; + } + r1.yz = t3.SampleLevel(s0_s, r2.xy, 0).xy; + r4.xy = abs(r1.yz) * float2(2,2) + float2(-1,-1); + r4.xy = r4.xy * r4.xy; + r0.w = 2 / r0.z; + r0.w = -1 + r0.w; + r0.w = 1 / r0.w; + r0.w = -2.03504682 * r0.w; + r0.w = exp2(r0.w); + r1.w = 1 + -r0.w; + r1.w = sqrt(r1.w); + r3.w = r0.w * -0.0187292993 + 0.0742610022; + r3.w = r3.w * r0.w + -0.212114394; + r0.w = r3.w * r0.w + 1.57072878; + r0.w = r0.w * r1.w; + r6.xyzw = cb0[25].xyzw * r3.yyyy; + r6.xyzw = cb0[24].xyzw * r3.xxxx + r6.xyzw; + r6.xyzw = cb0[26].xyzw * r3.zzzz + r6.xyzw; + r6.xyzw = cb0[27].xyzw + r6.xyzw; + r6.xyzw = r6.xyzw / r6.wwww; + r3.xy = r8.xy * float2(2,2) + float2(-1,-1); + r7.xyzw = cb0[25].xyzw * r3.yyyy; + r7.xyzw = cb0[24].xyzw * r3.xxxx + r7.xyzw; + r7.xyzw = cb0[26].xyzw * r8.zzzz + r7.xyzw; + r7.xyzw = cb0[27].xyzw + r7.xyzw; + r3.xyw = cb0[44].xyz + -r6.xyz; + r1.w = dot(r3.xyw, r3.xyw); + r4.z = rsqrt(r1.w); + r8.xyz = r4.zzz * r3.xyw; + r1.w = sqrt(r1.w); + r4.w = cmp(abs(r5.w) < 0.999000013); + r9.z = r4.w ? 0 : 1; + r9.y = r4.w ? 1.000000 : 0; + r9.x = 0; + r10.xyz = r9.xyz * r5.xyw; + r9.xyz = r9.zxy * r5.ywx + -r10.xyz; + r4.w = dot(r9.xyz, r9.xyz); + r4.w = rsqrt(r4.w); + r9.xyz = r9.xyz * r4.www; + r7.xyzw = r7.xyzw / r7.wwww; + r6.xyzw = r7.xyzw + -r6.xyzw; + r4.w = dot(r6.xyzw, r6.xyzw); + r4.w = sqrt(r4.w); + r6.xyz = r9.zxy * r8.xyz; + r6.xyz = r9.yzx * r8.yzx + -r6.xyz; + sincos(r0.w, r7.x, r10.x); + r7.yzw = -r8.xyz * r1.www + cb0[44].xyz; + r10.yzw = r9.xyz * r5.xyw; + r5.xyz = r5.wxy * r9.yzx + -r10.yzw; + r9.xyz = r5.xyz * r8.xyz; + r5.xyz = r5.zxy * r8.yzx + -r9.xyz; + r0.w = r4.w + r1.w; + r9.xyz = r8.xyz * r0.www; + r10.yzw = cb0[21].xyw * -r9.yyy; + r9.xyw = cb0[20].xyw * -r9.xxx + r10.yzw; + r9.xyz = cb0[22].xyw * -r9.zzz + r9.xyw; + r9.xyz = cb0[23].xyw + r9.xyz; + r9.xy = r9.xy / r9.zz; + r9.xy = r9.xy * float2(0.5,0.5) + float2(0.5,0.5); + r9.xy = cb2[0].xy * r9.xy; + r0.w = dot(r6.yzx, -r8.xyz); + r10.yzw = r6.yzx * r0.www; + r11.xyz = -r3.xyw * r4.zzz + -r10.yzw; + r10.yzw = r10.xxx * r11.xyz + r10.yzw; + r11.xyz = r6.xyz * -r8.yzx; + r6.xyz = r6.zxy * -r8.zxy + -r11.xyz; + r6.xyz = r6.xyz * r7.xxx + r10.yzw; + r6.xyz = r6.xyz * r4.www + r7.yzw; + r6.xyz = -cb0[44].xyz + r6.xyz; + r10.yzw = cb0[21].xyw * r6.yyy; + r6.xyw = cb0[20].xyw * r6.xxx + r10.yzw; + r6.xyz = cb0[22].xyw * r6.zzz + r6.xyw; + r6.xyz = cb0[23].xyw + r6.xyz; + r0.w = dot(r5.yzx, -r8.xyz); + r10.yzw = r5.yzx * r0.www; + r3.xyw = -r3.xyw * r4.zzz + -r10.yzw; + r3.xyw = r10.xxx * r3.xyw + r10.yzw; + r10.xyz = r5.xyz * -r8.yzx; + r5.xyz = r5.zxy * -r8.zxy + -r10.xyz; + r3.xyw = r5.xyz * r7.xxx + r3.xyw; + r3.xyw = r3.xyw * r4.www + r7.yzw; + r3.xyw = -cb0[44].xyz + r3.xyw; + r5.xyz = cb0[21].xyw * r3.yyy; + r5.xyz = cb0[20].xyw * r3.xxx + r5.xyz; + r3.xyw = cb0[22].xyw * r3.www + r5.xyz; + r3.xyw = cb0[23].xyw + r3.xyw; + r4.xy = r4.xy * r4.xy; + r1.yz = float2(-0.5,-0.5) + r1.yz; + r4.zw = cmp(float2(0,0) < r1.yz); + r1.yz = cmp(r1.yz < float2(0,0)); + r1.yz = (int2)-r4.zw + (int2)r1.yz; + r1.yz = (int2)r1.yz; + r1.yz = r4.xy * r1.yz + r2.zw; + r1.yz = cb1[0].xy * r1.yz; + r0.w = dot(r1.yz, r1.yz); + r0.w = sqrt(r0.w); + r1.y = cb1[2].z * r3.z + cb1[2].w; + r1.y = 0.0199999996 / r1.y; + r1.y = log2(r1.y); + r1.y = saturate(r1.y * 0.693147182 + 0.00999999978); + r0.w = r1.y * -r0.w; + r0.w = 1.44269502 * r0.w; + r4.x = exp2(r0.w); + r0.z = cmp(9.99999975e-005 >= r0.z); + r1.yz = r6.xy / r6.zz; + r1.yz = r1.yz * float2(0.5,0.5) + float2(0.5,0.5); + r1.yz = -r1.yz * cb2[0].xy + r9.xy; + r0.w = dot(r1.yz, r1.yz); + r1.yz = r3.xy / r3.ww; + r1.yz = r1.yz * float2(0.5,0.5) + float2(0.5,0.5); + r1.yz = -r1.yz * cb2[0].xy + r9.xy; + r1.y = dot(r1.yz, r1.yz); + r0.w = r1.y + r0.w; + r0.w = sqrt(r0.w); + r0.w = 0.5 * r0.w; + r0.w = log2(r0.w); + r0.w = max(0, r0.w); + r0.w = min(cb2[5].y, r0.w); + r0.w = r0.w / cb2[5].y; + r4.y = r0.z ? 0 : r0.w; + } else { + r4.xy = float2(0,0); + } + if (shader_injection.improved_ssr >= 0.5f) { + float mip_threshold = 0.25f; + r4.y = saturate((r4.y - mip_threshold) / (1.0f - mip_threshold)); + } + u0[(uint2)r0.xy] = r2.xyxx; + u1[(uint2)r0.xy] = r4.xyxx; + u2[(uint2)r0.xy] = r1.xxxx; + } + return; + // Approximately 0 instruction slots used +} diff --git a/src/games/endfield/ssr/ssr-temporal2_0x953D811E.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-temporal2_0x953D811E.cs_5_0.hlsl deleted file mode 100644 index dcf04f2110..0000000000 --- a/src/games/endfield/ssr/ssr-temporal2_0x953D811E.cs_5_0.hlsl +++ /dev/null @@ -1,395 +0,0 @@ -#include "../shared.h" - -float cmp(bool value) { return value ? -1.0f : 0.0f; } -float2 cmp(bool2 value) { return float2(cmp(value.x), cmp(value.y)); } -float3 cmp(bool3 value) { return float3(cmp(value.x), cmp(value.y), cmp(value.z)); } -float4 cmp(bool4 value) { return float4(cmp(value.x), cmp(value.y), cmp(value.z), cmp(value.w)); } - -float select_nonzero(float condition, float when_true, float when_false) { - return condition != 0.0f ? when_true : when_false; -} -float2 select_nonzero(float2 condition, float2 when_true, float2 when_false) { - return float2(select_nonzero(condition.x, when_true.x, when_false.x), - select_nonzero(condition.y, when_true.y, when_false.y)); -} -float3 select_nonzero(float3 condition, float3 when_true, float3 when_false) { - return float3(select_nonzero(condition.x, when_true.x, when_false.x), - select_nonzero(condition.y, when_true.y, when_false.y), - select_nonzero(condition.z, when_true.z, when_false.z)); -} -float4 select_nonzero(float4 condition, float4 when_true, float4 when_false) { - return float4(select_nonzero(condition.x, when_true.x, when_false.x), - select_nonzero(condition.y, when_true.y, when_false.y), - select_nonzero(condition.z, when_true.z, when_false.z), - select_nonzero(condition.w, when_true.w, when_false.w)); -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[85]; -} - -cbuffer cb1 : register(b1) -{ - float4 cb1[6]; -} - -SamplerState s0_s : register(s0); - -Texture2D t0 : register(t0); - -Texture2D t1 : register(t1); - -Texture2D t2 : register(t2); - -Texture2D t3 : register(t3); - -Texture2D t4 : register(t4); - -Texture2D t5 : register(t5); - -RWTexture2D u0 : register(u0); - -RWTexture2D u1 : register(u1); - -RWTexture2D u2 : register(u2); - -[numthreads(8, 8, 1)] -void main(uint3 vThreadID : SV_DispatchThreadID) -{ - float4 r0 = 0; - float4 r1 = 0; - float4 r2 = 0; - float4 r3 = 0; - float4 r4 = 0; - float4 r5 = 0; - float4 r6 = 0; - float4 r7 = 0; - float4 r8 = 0; - float4 r9 = 0; - float4 r10 = 0; - float4 r11 = 0; - float4 r12 = 0; - float4 r13 = 0; - r0.xy = float2(vThreadID.xy); - r0.xy = r0.xy + float2(0.500000, 0.500000); - r0.zw = r0.xy * cb1[0].zw; - r1.xy = r0.zw * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); - r2.x = t0.SampleLevel(s0_s, r0.zw, 0.000000).x; - r3.xyzw = r1.xxxx * cb0[24].xyzw; - r4.xyzw = cb0[25].xyzw * -r1.yyyy + r3.xyzw; - r2.xyzw = cb0[26].xyzw * r2.xxxx + r4.xyzw; - r2.xyzw = r2.xyzw + cb0[27].xyzw; - r1.z = t1.SampleLevel(s0_s, r0.zw, 0.000000).x; - r5.x = cb0[84].z * r1.z + cb0[84].w; - r4.xyzw = cb0[26].xyzw * r1.zzzz + r4.xyzw; - r4.xyzw = r4.xyzw + cb0[27].xyzw; - r6.xyzw = r1.yyyy * cb0[13].xyzw; - r6.xyzw = cb0[12].xyzw * r1.xxxx + r6.xyzw; - r6.xyzw = cb0[14].xyzw * r1.zzzz + r6.xyzw; - r6.xyzw = r6.xyzw + cb0[15].xyzw; - r6.xyz = r6.xyz / r6.www; - r5.yzw = t2.SampleLevel(s0_s, r0.zw, 0.000000).xyz; - r7.xyz = t3.SampleLevel(s0_s, r0.zw, 0.000000).xyz; - r2.xyz = r2.xyz / r2.www; - r4.xyz = r4.xyz / r4.www; - r2.xyz = r2.xyz + -r4.xyz; - r2.x = dot(r2.xyz, r2.xyz); - r2.x = sqrt(r2.x); - r2.x = r2.x * 10.000000; - r2.x = min(r2.x, 1.000000); - r2.yzw = -r5.yzw + r7.xyz; - r2.xyz = r2.xxx * r2.yzw + r5.yzw; - r2.xy = r2.xy * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); - r2.w = dot(float2(1.000000, 1.000000), abs(r2.xy)); - r4.y = -r2.w + 1.000000; - r2.w = cmp(r4.y < 0.000000); - r5.yzw = cmp(r2.xyz >= float3(0.000000, 0.000000, 0.300000)); - r7.xy = -abs(r2.yx) + float2(1.000000, 1.000000); - r5.yz = select_nonzero(r5.yz, float2(1.000000, 1.000000), float2(-1.000000, -1.000000)); - r5.yz = r5.yz * r7.xy; - r4.xz = select_nonzero(r2.ww, r5.yz, r2.xy); - r2.x = dot(r4.xyz, r4.xyz); - r2.x = rsqrt(r2.x); - r2.xyw = r2.xxx * r4.xyz; - r4.x = r2.z * r2.z; - r4.x = r4.x * r4.x; - r4.yzw = r2.yyy * cb0[1].xyz; - r4.yzw = cb0[0].xyz * r2.xxx + r4.yzw; - r4.yzw = cb0[2].xyz * r2.www + r4.yzw; - r5.yz = float2(-0.070000, 0.020000) / r5.xx; - r5.y = r5.y * 1.442695; - r5.y = exp2(r5.y); - r5.y = r5.y + r5.y; - r5.y = max(r5.y, 0.125000); - r5.y = min(r5.y, 1.000000); - r5.y = r5.y * cb1[3].x; - r5.y = ceil(r5.y); - r5.y = max(r5.y, (shader_injection.improved_ssr >= 0.5f) ? 256.0f : 32.0f); - r7.x = r5.y * 0.125000; - r5.y = select_nonzero(r5.w, r7.x, r5.y); - r6.w = -r6.y; - r5.w = dot(r6.xzw, r6.xzw); - r5.w = rsqrt(r5.w); - r6.xyz = r5.www * r6.xwz; - r5.w = dot(r6.xyz, r4.yzw); - r6.w = r5.w + r5.w; - r4.yzw = r4.yzw * -r6.www + r6.xyz; - r6.xyzw = r4.zzzz * cb0[9].xyzw; - r6.xyzw = cb0[8].xyzw * r4.yyyy + r6.xyzw; - r6.xyzw = cb0[10].xyzw * r4.wwww + r6.xyzw; - r1.w = 1.000000; - r6.xyzw = r6.xyzw * float4(1.000000, -1.000000, 1.000000, 1.000000) + r1.xyzw; - r4.yzw = r6.xyz / r6.www; - r4.yzw = -r1.xyz + r4.yzw; - r1.w = dot(r4.yz, r4.yz); - r1.w = sqrt(r1.w); - r6.x = r1.w * 0.500000; - r6.yz = r1.xy * r6.xx + r4.yz; - r6.yz = -r1.ww * float2(0.500000, 0.500000) + abs(r6.yz); - r6.yz = max(r6.yz, float2(0.000000, 0.000000)); - r6.yz = r6.yz / abs(r4.yz); - r6.yz = -r6.yz + float2(1.000000, 1.000000); - r1.w = min(r6.z, r6.y); - r1.w = r1.w / r6.x; - r4.yzw = r1.www * r4.yzw; - r1.w = abs(r4.w) / r5.y; - r1.w = max(r1.w, 0.000100); - r6.x = 1.000000 / r5.y; - r4.yzw = r4.yzw * float3(0.500000, 0.500000, 1.000000); - r4.yzw = r6.xxx * r4.yzw; - r6.xy = r4.yz * cb1[0].xy; - r6.x = max(abs(r6.y), abs(r6.x)); - r6.y = cmp(r6.x < 1.000000); - r6.x = r6.x + 0.001000; - r6.x = 1.000000 / r6.x; - r6.z = trunc(cb1[1].x); - r0.xy = r6.zz * float2(2.083000, 4.867000) + r0.xy; - r0.x = dot(r0.xy, float2(0.067111, 0.005837)); - r0.x = frac(r0.x); - r0.x = r0.x * 52.982918; - r0.x = frac(r0.x); - r0.x = select_nonzero(r6.y, r6.x, r0.x); - r6.xyz = r1.xyz * float3(0.500000, 0.500000, 1.000000) + float3(0.500000, 0.500000, 0.000000); - r6.xyz = r4.yzw * r0.xxx + r6.xyz; - r0.x = t1.SampleLevel(s0_s, r6.xy, 0.000000).x; - r0.x = -r0.x + r6.z; - r7.xyz = float3(0, 0, 0); - r8.xyz = float3(0, 0, 0); - r9.xyz = r6.xyz; - r0.y = 0; - r1.x = 0; - r6.w = r0.x; - while (true) { - r7.w = cmp(r1.x < r5.y); - if (r7.w != 0) { - r10.xyzw = r4.yzyz * float4(1.000000, 1.000000, 2.000000, 2.000000) + r9.xyxy; - r11.xyzw = r4.yzyz * float4(3.000000, 3.000000, 4.000000, 4.000000) + r9.xyxy; - r12.xyzw = r4.wwww * float4(1.000000, 2.000000, 3.000000, 4.000000) + r9.zzzz; - r13.x = t1.SampleLevel(s0_s, r10.xy, 0.000000).x; - r13.y = t1.SampleLevel(s0_s, r10.zw, 0.000000).x; - r13.z = t1.SampleLevel(s0_s, r11.xy, 0.000000).x; - r13.w = t1.SampleLevel(s0_s, r11.zw, 0.000000).x; - r10.xyzw = r12.xyzw + -r13.xyzw; - r11.xyzw = r1.wwww + r10.xyzw; - r11.xyzw = cmp(abs(r11.xyzw) < r1.wwww); - r12.xy = asfloat(asuint(r11.zw) | asuint(r11.xy)); - r7.w = asfloat(asuint(r12.y) | asuint(r12.x)); - if (r7.w != 0) { - r12.xy = select_nonzero(r11.zz, r10.zy, r10.wz); - r10.yz = select_nonzero(r11.yy, r10.yx, r12.xy); - r7.w = select_nonzero(r11.x, r10.x, r10.y); - r8.w = select_nonzero(r11.x, r6.w, r10.z); - r9.w = select_nonzero(r11.z, 2.000000, 3.000000); - r9.w = select_nonzero(r11.y, 1.000000, r9.w); - r9.w = select_nonzero(r11.x, 0, r9.w); - r7.w = -r7.w + r8.w; - r7.w = saturate(r8.w / r7.w); - r7.w = r7.w + r9.w; - r10.xyz = r4.yzw * r7.www + r9.xyz; - r0.y = -1; - r8.xyz = r10.xyz; - break; - } - r9.xyz = r4.yzw * float3(4.000000, 4.000000, 4.000000) + r9.xyz; - r1.x = r1.x + 4.000000; - r7.xyz = r9.xyz; - r0.y = 0; - r6.w = r10.w; - continue; - } else { - r8.xyz = r7.xyz; - r0.y = 0; - break; - } - r0.y = 0; - } - if (r0.y != 0) { - r0.x = max(r8.y, r8.x); - r0.x = -r0.x + 1.000000; - r0.y = min(r8.y, r8.x); - r0.x = min(r0.y, r0.x); - r1.xw = t4.SampleLevel(s0_s, r8.xy, 0.000000).xy; - r4.yz = abs(r1.xw) * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); - r4.yz = r4.yz * r4.yz; - r4.yz = r4.yz * r4.yz; - r1.xw = r1.xw + float2(-0.500000, -0.500000); - r6.xy = cmp(float2(0.000000, 0.000000) < r1.xw); - r1.xw = cmp(r1.xw < float2(0.000000, 0.000000)); - r1.xw = int2(-r6.xy) + int2(r1.xw); - r1.xw = float2(r1.xw); - r1.xw = r1.xw * r4.yz; - r0.y = 1.000000 + -cb1[2].z; - r4.yz = r0.yy * r1.xw; - r4.w = cmp(cb1[1].y < r0.x); - r0.x = saturate(r0.x / cb1[1].y); - r0.x = select_nonzero(r4.w, 1.000000, r0.x); - r4.w = saturate(abs(r5.w) * cb1[1].z + cb1[1].w); - r4.w = -r4.w + 1.000000; - r0.x = r0.x * r4.w; - r2.z = cmp(r2.z < 0.100000); - r4.w = 1.000000 / r5.x; - r4.w = -r4.w + 100.000000; - r4.w = saturate(r4.w * 0.100000); - r2.z = select_nonzero(r2.z, 1.000000, r4.w); - r0.x = r0.x * r2.z; - r1.xw = -r1.xw * r0.yy + r8.xy; - } else { - r4.yz = float2(0, 0); - r1.xw = r0.zw; - r0.x = 0; - } - r5.xy = t4.SampleLevel(s0_s, r1.xw, 0.000000).xy; - r6.xy = abs(r5.xy) * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); - r6.xy = r6.xy * r6.xy; - r0.y = 2.000000 / r4.x; - r0.y = r0.y + -1.000000; - r0.y = 1.000000 / r0.y; - r0.y = r0.y * -2.035047; - r0.y = exp2(r0.y); - r2.z = -r0.y + 1.000000; - r2.z = sqrt(r2.z); - r4.w = r0.y * -0.018729 + 0.074261; - r4.w = r4.w * r0.y + -0.212114; - r0.y = r4.w * r0.y + 1.570729; - r0.y = r2.z * r0.y; - r3.xyzw = cb0[25].xyzw * r1.yyyy + r3.xyzw; - r3.xyzw = cb0[26].xyzw * r1.zzzz + r3.xyzw; - r3.xyzw = r3.xyzw + cb0[27].xyzw; - r3.xyzw = r3.xyzw / r3.wwww; - r1.yz = r8.xy * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); - r7.xyzw = r1.zzzz * cb0[25].xyzw; - r7.xyzw = cb0[24].xyzw * r1.yyyy + r7.xyzw; - r7.xyzw = cb0[26].xyzw * r8.zzzz + r7.xyzw; - r7.xyzw = r7.xyzw + cb0[27].xyzw; - r8.xyz = -r3.xyz + cb0[44].xyz; - r1.y = dot(r8.xyz, r8.xyz); - r1.z = rsqrt(r1.y); - r9.xyz = r1.zzz * r8.xyz; - r1.y = sqrt(r1.y); - r2.z = cmp(abs(r2.w) < 0.999000); - r10.z = select_nonzero(r2.z, 0, 1.000000); - r10.y = asfloat(asuint(r2.z) & 0x3f800000u); - r10.x = 0; - r11.xyz = r2.xyw * r10.xyz; - r10.xyz = r10.zxy * r2.ywx + -r11.xyz; - r2.z = dot(r10.xyz, r10.xyz); - r2.z = rsqrt(r2.z); - r10.xyz = r2.zzz * r10.xyz; - r7.xyzw = r7.xyzw / r7.wwww; - r3.xyzw = -r3.xyzw + r7.xyzw; - r2.z = dot(r3.xyzw, r3.xyzw); - r2.z = sqrt(r2.z); - r3.xyz = r9.xyz * r10.zxy; - r3.xyz = r10.yzx * r9.yzx + -r3.xyz; - r7.x = sin(r0.y); -r11.x = cos(r0.y); - r7.yzw = -r9.xyz * r1.yyy + cb0[44].xyz; - r11.yzw = r2.xyw * r10.xyz; - r2.xyw = r2.wxy * r10.yzx + -r11.yzw; - r10.xyz = r9.xyz * r2.xyw; - r2.xyw = r2.wxy * r9.yzx + -r10.xyz; - r0.y = r1.y + r2.z; - r10.xyz = r0.yyy * r9.xyz; - r11.yzw = -r10.yyy * cb0[21].xyw; - r10.xyw = cb0[20].xyw * -r10.xxx + r11.yzw; - r10.xyz = cb0[22].xyw * -r10.zzz + r10.xyw; - r10.xyz = r10.xyz + cb0[23].xyw; - r6.zw = r10.xy / r10.zz; - r6.zw = r6.zw * float2(0.500000, 0.500000) + float2(0.500000, 0.500000); - r6.zw = r6.zw * cb1[0].xy; - r0.y = dot(r3.yzx, -r9.xyz); - r10.xyz = r0.yyy * r3.yzx; - r11.yzw = -r8.xyz * r1.zzz + -r10.xyz; - r10.xyz = r11.xxx * r11.yzw + r10.xyz; - r11.yzw = -r9.yzx * r3.xyz; - r3.xyz = r3.zxy * -r9.zxy + -r11.yzw; - r3.xyz = r3.xyz * r7.xxx + r10.xyz; - r3.xyz = r3.xyz * r2.zzz + r7.yzw; - r3.xyz = r3.xyz + -cb0[44].xyz; - r10.xyz = r3.yyy * cb0[21].xyw; - r3.xyw = cb0[20].xyw * r3.xxx + r10.xyz; - r3.xyz = cb0[22].xyw * r3.zzz + r3.xyw; - r3.xyz = r3.xyz + cb0[23].xyw; - r0.y = dot(r2.ywx, -r9.xyz); - r10.xyz = r0.yyy * r2.ywx; - r8.xyz = -r8.xyz * r1.zzz + -r10.xyz; - r8.xyz = r11.xxx * r8.xyz + r10.xyz; - r10.xyz = -r9.yzx * r2.xyw; - r2.xyw = r2.wxy * -r9.zxy + -r10.xyz; - r2.xyw = r2.xyw * r7.xxx + r8.xyz; - r2.xyz = r2.xyw * r2.zzz + r7.yzw; - r2.xyz = r2.xyz + -cb0[44].xyz; - r7.xyz = r2.yyy * cb0[21].xyw; - r2.xyw = cb0[20].xyw * r2.xxx + r7.xyz; - r2.xyz = cb0[22].xyw * r2.zzz + r2.xyw; - r2.xyz = r2.xyz + cb0[23].xyw; - u0[vThreadID.xy] = r1.xwxx; - r1.xy = r6.xy * r6.xy; - r1.zw = r5.xy + float2(-0.500000, -0.500000); - r5.xy = cmp(float2(0.000000, 0.000000) < r1.zw); - r1.zw = cmp(r1.zw < float2(0.000000, 0.000000)); - r1.zw = int2(-r5.xy) + int2(r1.zw); - r1.zw = float2(r1.zw); - r1.xy = r1.xy * r1.zw + r4.yz; - r1.xy = r1.xy * cb0[82].xy; - r0.y = dot(r1.xy, r1.xy); - r0.y = sqrt(r0.y); - r1.x = log2(r5.z); - r1.x = saturate(r1.x * 0.693147 + 0.010000); - r0.y = -r0.y * r1.x; - r0.y = r0.y * 1.442695; - r1.xzw = exp2(r0.yyy); - r0.y = cmp(0.000100 >= r4.x); - r3.xy = r3.xy / r3.zz; - r3.xy = r3.xy * float2(0.500000, 0.500000) + float2(0.500000, 0.500000); - r3.xy = -r3.xy * cb1[0].xy + r6.zw; - r2.w = dot(r3.xy, r3.xy); - r2.xy = r2.xy / r2.zz; - r2.xy = r2.xy * float2(0.500000, 0.500000) + float2(0.500000, 0.500000); - r2.xy = -r2.xy * cb1[0].xy + r6.zw; - r2.x = dot(r2.xy, r2.xy); - r2.x = r2.x + r2.w; - r2.x = sqrt(r2.x); - r2.x = r2.x * 0.500000; - r2.x = log2(r2.x); - r2.x = max(r2.x, 0.000000); - r2.x = min(r2.x, cb1[5].y); - r2.x = r2.x / cb1[5].y; - r1.y = select_nonzero(r0.y, 0, r2.x); - if (shader_injection.improved_ssr >= 0.5f) { - float mip_threshold = 0.25f; - float adjusted_mip = saturate((r1.y - mip_threshold) / (1.0f - mip_threshold)); - u1[vThreadID.xy] = float4(r1.x, adjusted_mip, r1.z, r1.x); - } else { - u1[vThreadID.xy] = r1.xyzw; - } - r0.yz = r0.zw * cb0[82].xy; - r1.xy = float2(r0.yz); - uint ssr_mask = t5.Load(int3(int2(r1.xy), 0)).y & 4u; - r0.x = (ssr_mask != 0u) ? 1.000000 : r0.x; - u2[vThreadID.xy] = r0.xxxx; - return; - // Approximately 0 instruction slots used - -} diff --git a/src/games/endfield/ssr/ssr-temporal_0x0A58A512.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-temporal_0x0A58A512.cs_5_0.hlsl deleted file mode 100644 index c4451113da..0000000000 --- a/src/games/endfield/ssr/ssr-temporal_0x0A58A512.cs_5_0.hlsl +++ /dev/null @@ -1,684 +0,0 @@ -#include "../shared.h" - -float cmp(bool value) { return value ? -1.0f : 0.0f; } -float2 cmp(bool2 value) { return float2(cmp(value.x), cmp(value.y)); } -float3 cmp(bool3 value) { return float3(cmp(value.x), cmp(value.y), cmp(value.z)); } -float4 cmp(bool4 value) { return float4(cmp(value.x), cmp(value.y), cmp(value.z), cmp(value.w)); } - -float select_nonzero(float condition, float when_true, float when_false) { - return condition != 0.0f ? when_true : when_false; -} -float2 select_nonzero(float2 condition, float2 when_true, float2 when_false) { - return float2(select_nonzero(condition.x, when_true.x, when_false.x), - select_nonzero(condition.y, when_true.y, when_false.y)); -} -float3 select_nonzero(float3 condition, float3 when_true, float3 when_false) { - return float3(select_nonzero(condition.x, when_true.x, when_false.x), - select_nonzero(condition.y, when_true.y, when_false.y), - select_nonzero(condition.z, when_true.z, when_false.z)); -} -float4 select_nonzero(float4 condition, float4 when_true, float4 when_false) { - return float4(select_nonzero(condition.x, when_true.x, when_false.x), - select_nonzero(condition.y, when_true.y, when_false.y), - select_nonzero(condition.z, when_true.z, when_false.z), - select_nonzero(condition.w, when_true.w, when_false.w)); -} - -cbuffer cb0 : register(b0) -{ - float4 cb0[238]; -} - -cbuffer cb1 : register(b1) -{ - float4 cb1[6]; -} - -cbuffer cb2 : register(b2) -{ - float4 cb2[5]; -} - -SamplerState s0_s : register(s0); - -SamplerState s1_s : register(s1); - -SamplerState s2_s : register(s2); - -SamplerComparisonState s3_s : register(s3); - -Texture2D t0 : register(t0); - -Texture2D t1 : register(t1); - -Texture2D t2 : register(t2); - -Texture2D t3 : register(t3); - -Texture2D t4 : register(t4); - -Texture2D t5 : register(t5); - -Texture2D t6 : register(t6); - -Texture3D t7 : register(t7); - -Texture2D t8 : register(t8); - -Texture2D t9 : register(t9); - -RWTexture2D u0 : register(u0); - -RWTexture2D u1 : register(u1); - -RWTexture2D u2 : register(u2); - -[numthreads(8, 8, 1)] -void main(uint3 vThreadID : SV_DispatchThreadID) -{ - float4 r0 = 0; - float4 r1 = 0; - float4 r2 = 0; - float4 r3 = 0; - float4 r4 = 0; - float4 r5 = 0; - float4 r6 = 0; - float4 r7 = 0; - float4 r8 = 0; - float4 r9 = 0; - float4 r10 = 0; - float4 r11 = 0; - float4 r12 = 0; - float4 r13 = 0; - r0.xy = float2(vThreadID.xy); - r0.xy = r0.xy + float2(0.500000, 0.500000); - r0.zw = r0.xy * cb1[0].zw; - r1.xy = r0.zw * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); - r2.x = t0.SampleLevel(s0_s, r0.zw, 0.000000).x; - r3.xyzw = r1.xxxx * cb0[24].xyzw; - r4.xyzw = cb0[25].xyzw * -r1.yyyy + r3.xyzw; - r2.xyzw = cb0[26].xyzw * r2.xxxx + r4.xyzw; - r2.xyzw = r2.xyzw + cb0[27].xyzw; - r1.z = t1.SampleLevel(s0_s, r0.zw, 0.000000).x; - r5.x = cb0[84].z * r1.z + cb0[84].w; - r4.xyzw = cb0[26].xyzw * r1.zzzz + r4.xyzw; - r4.xyzw = r4.xyzw + cb0[27].xyzw; - r6.xyzw = r1.yyyy * cb0[13].xyzw; - r6.xyzw = cb0[12].xyzw * r1.xxxx + r6.xyzw; - r6.xyzw = cb0[14].xyzw * r1.zzzz + r6.xyzw; - r6.xyzw = r6.xyzw + cb0[15].xyzw; - r6.xyz = r6.xyz / r6.www; - r5.yzw = t2.SampleLevel(s0_s, r0.zw, 0.000000).xyz; - r7.xyz = t3.SampleLevel(s0_s, r0.zw, 0.000000).xyz; - r2.xyz = r2.xyz / r2.www; - r4.xyz = r4.xyz / r4.www; - r2.xyz = r2.xyz + -r4.xyz; - r2.x = dot(r2.xyz, r2.xyz); - r2.x = sqrt(r2.x); - r2.x = r2.x * 10.000000; - r2.x = min(r2.x, 1.000000); - r2.yzw = -r5.yzw + r7.xyz; - r2.xyz = r2.xxx * r2.yzw + r5.yzw; - r2.xy = r2.xy * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); - r2.w = dot(float2(1.000000, 1.000000), abs(r2.xy)); - r4.y = -r2.w + 1.000000; - r2.w = cmp(r4.y < 0.000000); - r5.yz = cmp(r2.xy >= float2(0.000000, 0.000000)); - r7.xy = -abs(r2.yx) + float2(1.000000, 1.000000); - r5.yz = select_nonzero(r5.yz, float2(1.000000, 1.000000), float2(-1.000000, -1.000000)); - r5.yz = r5.yz * r7.xy; - r4.xz = select_nonzero(r2.ww, r5.yz, r2.xy); - r2.x = dot(r4.xyz, r4.xyz); - r2.x = rsqrt(r2.x); - r4.xzw = r2.xxx * r4.xyz; - r2.yw = t9.SampleLevel(s1_s, r0.zw, 0.000000).xy; - r5.yzw = -r6.yyy * cb0[5].xyz; - r5.yzw = cb0[4].xyz * r6.xxx + r5.yzw; - r5.yzw = cb0[6].xyz * r6.zzz + r5.yzw; - r5.yzw = r5.yzw + cb0[7].xyz; - r7.xy = cmp(float2(0.500000, 0.500000) < cb0[230].xy); - if (r7.x != 0) { - r7.x = abs(r4.z) + abs(r4.x); - r7.x = abs(r4.w) + r7.x; - r7.x = 1.000000 / r7.x; - r7.xzw = abs(r4.xzw) * r7.xxx; - r8.xyz = r5.yzw * cb0[233].xxx; - r8.x = t7.SampleLevel(s2_s, r8.xyz, 0.000000).x; - r9.xyzw = r7.xxzz * float4(0.000000, 1.000000, 0.707106, 0.000000); - r8.yzw = r9.zwz + r9.xxy; - r7.xzw = r7.www * float3(1.000000, 0.000000, 0.000000) + r8.yzw; - r8.y = r8.x * 2.000000 + -1.000000; - r7.xzw = r7.xzw * r8.yyy; - r8.y = abs(r4.z); - r8.y = r8.y + -0.700000; - r8.y = saturate(r8.y * 4.000000); - r8.z = r8.y * -2.000000 + 3.000000; - r8.y = r8.y * r8.y; - r8.y = r8.y * r8.z; - r8.z = -cb0[233].z + cb0[233].y; - r8.y = r8.y * r8.z + cb0[233].z; - r7.xzw = r7.xzw * r8.yyy; - } else { - r7.xzw = float3(0, 0, 0); - r8.x = 0; - } - if (r7.y != 0) { - r8.yzw = r4.xzw * cb0[237].zzz; - r9.xyz = float3(0.000000, 1.000000, 0.000000) * cb0[229].yyy; - r8.yzw = r8.yzw * cb0[229].xxx + r9.xyz; - r7.y = max(-r4.z, 0.000000); - r7.y = min(r7.y, 0.900000); - r7.y = -r7.y + 1.000000; - r2.x = -r4.y * r2.x + -0.200000; - r2.x = saturate(r2.x * -10.000000); - r4.y = r2.x * -2.000000 + 3.000000; - r2.x = r2.x * r2.x; - r2.x = r2.x * r4.y; - r2.x = max(r2.x, 0.100000); - r2.x = min(r2.x, 1.000000); - r2.x = r2.x * r7.y; - r8.yzw = r8.yzw * r2.xxx + r5.yzw; - r7.xyz = r7.xzw + r8.yzw; - r8.yzw = r7.yyy * cb2[1].xyz; - r7.xyw = cb2[0].xyz * r7.xxx + r8.yzw; - r7.xyz = cb2[2].xyz * r7.zzz + r7.xyw; - r7.xyz = r7.xyz + cb2[3].xyz; - r9.x = r7.x * 0.500000 + cb2[4].x; - r2.x = r7.y * 0.500000 + 0.500000; - r9.z = -r2.x + cb2[4].y; - r7.xy = r9.xz + float2(0.500000, 1.000000); - r2.x = max(r7.z, 0.000488); - r2.x = t6.SampleCmpLevelZero(s3_s, r7.xy, r2.x).x; - } else { - r2.x = 1.000000; - } - r4.y = saturate(r4.z); - r7.xy = r5.yw + -cb0[44].xz; - r7.z = 1.000000 + -cb0[234].w; - r7.z = r4.y * r7.z + cb0[234].w; - r7.w = r2.x * r7.z; - r8.y = 0.050000 * cb0[226].w; - r7.x = max(abs(r7.y), abs(r7.x)); - r7.x = -cb0[226].w * 0.700000 + r7.x; - r7.y = 1.000000 / r8.y; - r7.x = saturate(r7.y * r7.x); - r7.y = r7.x * -2.000000 + 3.000000; - r7.x = r7.x * r7.x; - r7.x = r7.x * r7.y; - r2.x = -r7.z * r2.x + 1.000000; - r2.x = r7.x * r2.x + r7.w; - r7.x = -r2.x + 1.000000; - r7.y = r2.y * r7.x; - r7.z = cmp(0.000488 < cb0[235].y); - if (r7.z != 0) { - r8.yzw = r5.yzw + -cb0[44].xyz; - r5.z = dot(r8.yzw, r8.yzw); - r5.z = sqrt(r5.z); - r5.z = r5.z + -15.000000; - r5.z = saturate(r5.z * 0.015000); - r5.z = -r5.z + 1.000000; - r7.z = min(0.990000, cb0[232].w); - r7.w = cb0[227].z * 0.300000 + 0.686000; - r7.w = max(r7.w, 0.970000); - r8.y = -r7.w + 0.990000; - r7.w = r4.y + -r7.w; - r8.y = 1.000000 / r8.y; - r7.w = saturate(r7.w * r8.y); - r8.y = r7.w * -2.000000 + 3.000000; - r7.w = r7.w * r7.w; - r4.y = r4.y + -0.991000; - r4.y = r4.y * 111.111069; - r4.y = max(r4.y, 0.000000); - r8.z = r4.y * -2.000000 + 3.000000; - r4.y = r4.y * r4.y; - r4.y = r4.y * r8.z; - r8.z = r8.x * 0.200000 + 0.800000; - r8.z = cmp(r8.z >= 0.618000); - r8.z = asfloat(asuint(r8.z) & 0x3f800000u); - r4.y = r4.y * r8.z; - r4.y = r8.y * r7.w + r4.y; - r4.y = min(r4.y, 1.000000); - r7.w = -r7.z + cb0[232].w; - r4.y = -r7.z + r4.y; - r7.z = 1.000000 / r7.w; - r4.y = saturate(r4.y * r7.z); - r7.z = r4.y * -2.000000 + 3.000000; - r4.y = r4.y * r4.y; - r4.y = r4.y * r7.z; - r7.z = cmp(0.000488 < r4.y); - if (r7.z != 0) { - r7.zw = -r5.yw * cb0[232].xy; - r8.yz = frac(r7.zw); - r9.xy = cmp(float2(0.000488, 0.000488) < cb0[231].yw); - if (r9.x != 0) { - r7.zw = floor(r7.zw); - r7.zw = r7.zw * float2(0.000977, 0.000977); - r9.xz = cmp(r7.zw >= -r7.zw); - r7.zw = frac(abs(r7.zw)); - r7.zw = select_nonzero(r9.xz, r7.zw, -r7.zw); - r7.zw = r7.zw * float2(1024.000000, 1024.000000); - r7.z = dot(r7.zw, float2(12.989800, 78.233002)); - r7.z = sin(r7.z); - r7.z = r7.z * 43758.546875; - r7.z = frac(r7.z); - r7.w = r7.z + cb0[231].x; - r7.w = frac(r7.w); - r8.w = cb0[232].z * cb0[232].z; - r7.w = r7.w * r8.w; - r7.w = floor(r7.w); - r8.w = 1.000000 / cb0[232].z; - r7.z = cmp(0.500000 >= r7.z); - r7.z = asfloat(asuint(r7.z) & 0x3f800000u); - r9.xz = -r8.yz + r8.zy; - r8.yz = r7.zz * r9.xz + r8.yz; - r7.z = r7.w / cb0[232].z; - r9.x = cmp(r7.z >= -r7.z); - r7.z = frac(abs(r7.z)); - r7.z = select_nonzero(r9.x, r7.z, -r7.z); - r7.z = r7.z * cb0[232].z; - r10.x = r7.z * r8.w; - r7.z = -1.000000 + cb0[232].z; - r7.w = r7.w * r8.w; - r7.w = floor(r7.w); - r7.z = -r7.w + r7.z; - r10.y = r7.z * r8.w; - r7.zw = r8.yz * r8.ww + r10.xy; - r7.zw = frac(r7.zw); - r7.zw = t8.SampleLevel(s1_s, r7.zw, 0.000000).xy; - r7.zw = r7.zw * cb0[231].yy; - r10.xy = r7.zw * float2(2.000000, 2.000000) + -cb0[231].yy; - } else { - r10.xy = float2(0, 0); - } - if (r9.y != 0) { - r9.xw = float2(0, 0.500000); - r9.y = cb0[231].z; - r7.zw = -r5.yw * cb0[232].xy + r9.xy; - r9.z = r8.x * 0.500000; - r7.zw = r7.zw + r9.zw; - r7.zw = r7.zw + float2(-0.500000, -0.500000); - r9.xy = t8.SampleLevel(s2_s, r7.zw, 0.000000).zw; - r11.xz = cb0[231].zw; - r11.y = 0; - r5.yw = -r5.yw * cb0[232].xy + -r11.xy; - r11.y = -r8.x + 1.000000; - r11.x = 0.500000; - r7.zw = float2(1.000000, 0.500000) * r11.xy + float2(-0.500000, -0.500000); - r5.yw = r5.yw + -r7.zw; - r9.zw = t8.SampleLevel(s2_s, r5.yw, 0.000000).zw; - r9.xyzw = r9.xyzw * cb0[231].wwww; - r9.xyzw = r9.xyzw * float4(2.000000, 2.000000, 2.000000, 2.000000) + -r11.zzzz; - r9.xyzw = r8.xxxx * r9.xyzw; - r5.yw = r9.zw + r9.xy; - r10.xy = r5.yw + r10.xy; - } - r5.y = r2.z * 0.300000; - r5.y = r8.x * 0.700000 + r5.y; - r5.w = r2.z + -0.100000; - r5.w = saturate(r5.w * 100.000000); - r5.y = r5.w * r5.y; - r5.w = r5.y * 0.618000; - r5.w = min(r5.w, 0.990000); - r5.y = saturate(r5.y * 0.618000 + 0.600000); - r5.y = -r5.w + r5.y; - r5.w = -r5.w + cb0[232].w; - r5.y = 1.000000 / r5.y; - r5.y = saturate(r5.y * r5.w); - r5.w = r5.y * -2.000000 + 3.000000; - r5.y = r5.y * r5.y; - r5.y = r5.y * r5.w; - r4.y = r4.y * cb0[226].x; - r5.w = dot(r10.xy, r10.xy); - r5.w = min(r5.w, 1.000000); - r5.w = -r5.w + 1.000000; - r5.w = sqrt(r5.w); - r10.z = max(r5.w, 0.000488); - r5.w = dot(r10.xyz, r10.xyz); - r5.w = rsqrt(r5.w); - r8.yzw = r5.www * r10.yzx; - r5.w = r8.z * 1.000000; - r7.z = r5.y * r4.y; - r7.z = r2.x * r7.z; - r7.z = r5.z * r7.z; - r8.yzw = r8.yzw * float3(1.000000, 1.000000, -1.000000) + -r4.xzw; - r4.xzw = r7.zzz * r8.yzw + r4.xzw; - r7.z = -r8.x + 1.000000; - r7.z = r7.z * cb0[232].w; - r7.w = r7.z * 0.500000; - r7.z = -r7.z * 0.500000 + 1.000000; - r5.y = r5.y * r7.z + r7.w; - r7.z = -0.600000 + cb0[232].w; - r7.z = saturate(r7.z * 2.500000); - r7.w = r7.z * -2.000000 + 3.000000; - r7.z = r7.z * r7.z; - r7.z = r7.z * r7.w; - r5.y = saturate(r7.z * 0.600000 + r5.y); - r4.y = r4.y * r5.y; - r4.y = r5.w * r4.y; - r4.y = saturate(r4.y * 8.090615); - r5.y = r4.y * -2.000000 + 3.000000; - r4.y = r4.y * r4.y; - r4.y = r4.y * r5.y; - r2.x = r2.x * r4.y; - r2.x = r5.z * r2.x; - r2.x = max(r2.x, 0.000000); - } else { - r2.x = 0; - } - } else { - r2.x = 0; - } - r4.y = -r2.z + 1.000000; - r5.y = saturate(r4.y * cb0[226].z + cb0[226].y); - r5.z = r2.z * r2.x; - r5.y = saturate(r5.z * 0.100000 + r5.y); - r5.y = r5.y * -0.300000 + 0.900000; - r5.z = sqrt(r4.y); - r5.y = r5.z + r5.y; - r5.y = r5.y + -0.600000; - r5.y = min(r5.y, 1.000000); - r5.y = max(r4.y, r5.y); - r5.y = min(r5.y, 0.990000); - r5.z = saturate(2.000000 + -cb0[226].x); - r5.z = r5.z * cb0[226].x; - r5.w = -r4.z + -0.200000; - r5.w = saturate(r5.w * 3.333333); - r7.z = r5.w * -2.000000 + 3.000000; - r5.w = r5.w * r5.w; - r5.w = -r7.z * r5.w + 1.000000; - r5.z = r5.w * r5.z; - r5.w = -r2.y * r7.x + 1.000000; - r5.z = r5.w * r5.z; - r5.y = -r4.y + r5.y; - r4.y = r5.z * r5.y + r4.y; - r4.y = -r4.y + 1.000000; - r2.x = r2.x * -0.900000 + 1.000000; - r5.y = r2.x * r4.y; - r5.y = min(r5.y, 1.000000); - r2.y = min(r2.w, r2.y); - r2.x = r4.y * r2.x + -r5.y; - r2.x = r2.y * r2.x + r5.y; - r2.y = -r2.x + r2.z; - r2.x = r7.y * r2.y + r2.x; - r2.y = r2.x * r2.x; - r2.y = r2.y * r2.y; - r5.yzw = r4.zzz * cb0[1].xyz; - r5.yzw = cb0[0].xyz * r4.xxx + r5.yzw; - r5.yzw = cb0[2].xyz * r4.www + r5.yzw; - r7.xy = float2(-0.070000, 0.020000) / r5.xx; - r2.w = r7.x * 1.442695; - r2.w = exp2(r2.w); - r2.w = r2.w + r2.w; - r2.w = max(r2.w, 0.125000); - r2.w = min(r2.w, 1.000000); - r2.w = r2.w * cb1[3].x; - r2.w = ceil(r2.w); - r2.w = max(r2.w, (shader_injection.improved_ssr >= 0.5f) ? 256.0f : 32.0f); - r2.z = cmp(r2.z >= 0.300000); - r4.y = r2.w * 0.125000; - r2.z = select_nonzero(r2.z, r4.y, r2.w); - r6.w = -r6.y; - r2.w = dot(r6.xzw, r6.xzw); - r2.w = rsqrt(r2.w); - r6.xyz = r2.www * r6.xwz; - r2.w = dot(r6.xyz, r5.yzw); - r4.y = r2.w + r2.w; - r5.yzw = r5.yzw * -r4.yyy + r6.xyz; - r6.xyzw = r5.zzzz * cb0[9].xyzw; - r6.xyzw = cb0[8].xyzw * r5.yyyy + r6.xyzw; - r6.xyzw = cb0[10].xyzw * r5.wwww + r6.xyzw; - r1.w = 1.000000; - r6.xyzw = r6.xyzw * float4(1.000000, -1.000000, 1.000000, 1.000000) + r1.xyzw; - r5.yzw = r6.xyz / r6.www; - r5.yzw = -r1.xyz + r5.yzw; - r1.w = dot(r5.yz, r5.yz); - r1.w = sqrt(r1.w); - r4.y = r1.w * 0.500000; - r6.xy = r1.xy * r4.yy + r5.yz; - r6.xy = -r1.ww * float2(0.500000, 0.500000) + abs(r6.xy); - r6.xy = max(r6.xy, float2(0.000000, 0.000000)); - r6.xy = r6.xy / abs(r5.yz); - r6.xy = -r6.xy + float2(1.000000, 1.000000); - r1.w = min(r6.y, r6.x); - r1.w = r1.w / r4.y; - r5.yzw = r1.www * r5.yzw; - r1.w = abs(r5.w) / r2.z; - r1.w = max(r1.w, 0.000100); - r4.y = 1.000000 / r2.z; - r5.yzw = r5.yzw * float3(0.500000, 0.500000, 1.000000); - r5.yzw = r4.yyy * r5.yzw; - r6.xy = r5.yz * cb1[0].xy; - r4.y = max(abs(r6.y), abs(r6.x)); - r6.x = cmp(r4.y < 1.000000); - r4.y = r4.y + 0.001000; - r4.y = 1.000000 / r4.y; - r6.y = trunc(cb1[1].x); - r0.xy = r6.yy * float2(2.083000, 4.867000) + r0.xy; - r0.x = dot(r0.xy, float2(0.067111, 0.005837)); - r0.x = frac(r0.x); - r0.x = r0.x * 52.982918; - r0.x = frac(r0.x); - r0.x = select_nonzero(r6.x, r4.y, r0.x); - r6.xyz = r1.xyz * float3(0.500000, 0.500000, 1.000000) + float3(0.500000, 0.500000, 0.000000); - r6.xyz = r5.yzw * r0.xxx + r6.xyz; - r0.x = t1.SampleLevel(s0_s, r6.xy, 0.000000).x; - r0.x = -r0.x + r6.z; - r7.xzw = float3(0, 0, 0); - r8.xyz = float3(0, 0, 0); - r9.xyz = r6.xyz; - r0.y = 0; - r1.x = 0; - r4.y = r0.x; - while (true) { - r6.w = cmp(r1.x < r2.z); - if (r6.w != 0) { - r10.xyzw = r5.yzyz * float4(1.000000, 1.000000, 2.000000, 2.000000) + r9.xyxy; - r11.xyzw = r5.yzyz * float4(3.000000, 3.000000, 4.000000, 4.000000) + r9.xyxy; - r12.xyzw = r5.wwww * float4(1.000000, 2.000000, 3.000000, 4.000000) + r9.zzzz; - r13.x = t1.SampleLevel(s0_s, r10.xy, 0.000000).x; - r13.y = t1.SampleLevel(s0_s, r10.zw, 0.000000).x; - r13.z = t1.SampleLevel(s0_s, r11.xy, 0.000000).x; - r13.w = t1.SampleLevel(s0_s, r11.zw, 0.000000).x; - r10.xyzw = r12.xyzw + -r13.xyzw; - r11.xyzw = r1.wwww + r10.xyzw; - r11.xyzw = cmp(abs(r11.xyzw) < r1.wwww); - r12.xy = asfloat(asuint(r11.zw) | asuint(r11.xy)); - r6.w = asfloat(asuint(r12.y) | asuint(r12.x)); - if (r6.w != 0) { - r12.xy = select_nonzero(r11.zz, r10.zy, r10.wz); - r10.yz = select_nonzero(r11.yy, r10.yx, r12.xy); - r6.w = select_nonzero(r11.x, r10.x, r10.y); - r8.w = select_nonzero(r11.x, r4.y, r10.z); - r9.w = select_nonzero(r11.z, 2.000000, 3.000000); - r9.w = select_nonzero(r11.y, 1.000000, r9.w); - r9.w = select_nonzero(r11.x, 0, r9.w); - r6.w = -r6.w + r8.w; - r6.w = saturate(r8.w / r6.w); - r6.w = r6.w + r9.w; - r10.xyz = r5.yzw * r6.www + r9.xyz; - r0.y = -1; - r8.xyz = r10.xyz; - break; - } - r9.xyz = r5.yzw * float3(4.000000, 4.000000, 4.000000) + r9.xyz; - r1.x = r1.x + 4.000000; - r7.xzw = r9.xyz; - r0.y = 0; - r4.y = r10.w; - continue; - } else { - r8.xyz = r7.xzw; - r0.y = 0; - break; - } - r0.y = 0; - } - if (r0.y != 0) { - r0.x = max(r8.y, r8.x); - r0.x = -r0.x + 1.000000; - r0.y = min(r8.y, r8.x); - r0.x = min(r0.y, r0.x); - r1.xw = t4.SampleLevel(s0_s, r8.xy, 0.000000).xy; - r5.yz = abs(r1.xw) * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); - r5.yz = r5.yz * r5.yz; - r5.yz = r5.yz * r5.yz; - r1.xw = r1.xw + float2(-0.500000, -0.500000); - r6.xy = cmp(float2(0.000000, 0.000000) < r1.xw); - r1.xw = cmp(r1.xw < float2(0.000000, 0.000000)); - r1.xw = int2(-r6.xy) + int2(r1.xw); - r1.xw = float2(r1.xw); - r1.xw = r1.xw * r5.yz; - r0.y = 1.000000 + -cb1[2].z; - r5.yz = r0.yy * r1.xw; - r2.z = cmp(cb1[1].y < r0.x); - r0.x = saturate(r0.x / cb1[1].y); - r0.x = select_nonzero(r2.z, 1.000000, r0.x); - r2.z = saturate(abs(r2.w) * cb1[1].z + cb1[1].w); - r2.z = -r2.z + 1.000000; - r0.x = r0.x * r2.z; - r2.x = cmp(r2.x < 0.100000); - r2.z = 1.000000 / r5.x; - r2.z = -r2.z + 100.000000; - r2.z = saturate(r2.z * 0.100000); - r2.x = select_nonzero(r2.x, 1.000000, r2.z); - r0.x = r0.x * r2.x; - r1.xw = -r1.xw * r0.yy + r8.xy; - } else { - r5.yz = float2(0, 0); - r1.xw = r0.zw; - r0.x = 0; - } - r2.xz = t4.SampleLevel(s0_s, r1.xw, 0.000000).xy; - r5.xw = abs(r2.xz) * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); - r5.xw = r5.xw * r5.xw; - r0.y = 2.000000 / r2.y; - r0.y = r0.y + -1.000000; - r0.y = 1.000000 / r0.y; - r0.y = r0.y * -2.035047; - r0.y = exp2(r0.y); - r2.w = -r0.y + 1.000000; - r2.w = sqrt(r2.w); - r4.y = r0.y * -0.018729 + 0.074261; - r4.y = r4.y * r0.y + -0.212114; - r0.y = r4.y * r0.y + 1.570729; - r0.y = r2.w * r0.y; - r3.xyzw = cb0[25].xyzw * r1.yyyy + r3.xyzw; - r3.xyzw = cb0[26].xyzw * r1.zzzz + r3.xyzw; - r3.xyzw = r3.xyzw + cb0[27].xyzw; - r3.xyzw = r3.xyzw / r3.wwww; - r1.yz = r8.xy * float2(2.000000, 2.000000) + float2(-1.000000, -1.000000); - r6.xyzw = r1.zzzz * cb0[25].xyzw; - r6.xyzw = cb0[24].xyzw * r1.yyyy + r6.xyzw; - r6.xyzw = cb0[26].xyzw * r8.zzzz + r6.xyzw; - r6.xyzw = r6.xyzw + cb0[27].xyzw; - r7.xzw = -r3.xyz + cb0[44].xyz; - r1.y = dot(r7.xzw, r7.xzw); - r1.z = rsqrt(r1.y); - r8.xyz = r1.zzz * r7.xzw; - r1.y = sqrt(r1.y); - r2.w = cmp(abs(r4.w) < 0.999000); - r9.z = select_nonzero(r2.w, 0, 1.000000); - r9.y = asfloat(asuint(r2.w) & 0x3f800000u); - r9.x = 0; - r10.xyz = r4.xzw * r9.xyz; - r9.xyz = r9.zxy * r4.zwx + -r10.xyz; - r2.w = dot(r9.xyz, r9.xyz); - r2.w = rsqrt(r2.w); - r9.xyz = r2.www * r9.xyz; - r6.xyzw = r6.xyzw / r6.wwww; - r3.xyzw = -r3.xyzw + r6.xyzw; - r2.w = dot(r3.xyzw, r3.xyzw); - r2.w = sqrt(r2.w); - r3.xyz = r8.xyz * r9.zxy; - r3.xyz = r9.yzx * r8.yzx + -r3.xyz; - r6.x = sin(r0.y); -r10.x = cos(r0.y); - r6.yzw = -r8.xyz * r1.yyy + cb0[44].xyz; - r10.yzw = r4.xzw * r9.xyz; - r4.xyz = r4.wxz * r9.yzx + -r10.yzw; - r9.xyz = r8.xyz * r4.xyz; - r4.xyz = r4.zxy * r8.yzx + -r9.xyz; - r0.y = r1.y + r2.w; - r9.xyz = r0.yyy * r8.xyz; - r10.yzw = -r9.yyy * cb0[21].xyw; - r9.xyw = cb0[20].xyw * -r9.xxx + r10.yzw; - r9.xyz = cb0[22].xyw * -r9.zzz + r9.xyw; - r9.xyz = r9.xyz + cb0[23].xyw; - r9.xy = r9.xy / r9.zz; - r9.xy = r9.xy * float2(0.500000, 0.500000) + float2(0.500000, 0.500000); - r9.xy = r9.xy * cb1[0].xy; - r0.y = dot(r3.yzx, -r8.xyz); - r10.yzw = r0.yyy * r3.yzx; - r11.xyz = -r7.xzw * r1.zzz + -r10.yzw; - r10.yzw = r10.xxx * r11.xyz + r10.yzw; - r11.xyz = -r8.yzx * r3.xyz; - r3.xyz = r3.zxy * -r8.zxy + -r11.xyz; - r3.xyz = r3.xyz * r6.xxx + r10.yzw; - r3.xyz = r3.xyz * r2.www + r6.yzw; - r3.xyz = r3.xyz + -cb0[44].xyz; - r10.yzw = r3.yyy * cb0[21].xyw; - r3.xyw = cb0[20].xyw * r3.xxx + r10.yzw; - r3.xyz = cb0[22].xyw * r3.zzz + r3.xyw; - r3.xyz = r3.xyz + cb0[23].xyw; - r0.y = dot(r4.yzx, -r8.xyz); - r10.yzw = r0.yyy * r4.yzx; - r7.xzw = -r7.xzw * r1.zzz + -r10.yzw; - r7.xzw = r10.xxx * r7.xzw + r10.yzw; - r10.xyz = -r8.yzx * r4.xyz; - r4.xyz = r4.zxy * -r8.zxy + -r10.xyz; - r4.xyz = r4.xyz * r6.xxx + r7.xzw; - r4.xyz = r4.xyz * r2.www + r6.yzw; - r4.xyz = r4.xyz + -cb0[44].xyz; - r6.xyz = r4.yyy * cb0[21].xyw; - r4.xyw = cb0[20].xyw * r4.xxx + r6.xyz; - r4.xyz = cb0[22].xyw * r4.zzz + r4.xyw; - r4.xyz = r4.xyz + cb0[23].xyw; - u0[vThreadID.xy] = r1.xwxx; - r1.xy = r5.xw * r5.xw; - r1.zw = r2.xz + float2(-0.500000, -0.500000); - r2.xz = cmp(float2(0.000000, 0.000000) < r1.zw); - r1.zw = cmp(r1.zw < float2(0.000000, 0.000000)); - r1.zw = int2(-r2.xz) + int2(r1.zw); - r1.zw = float2(r1.zw); - r1.xy = r1.xy * r1.zw + r5.yz; - r1.xy = r1.xy * cb0[82].xy; - r0.y = dot(r1.xy, r1.xy); - r0.y = sqrt(r0.y); - r1.x = log2(r7.y); - r1.x = saturate(r1.x * 0.693147 + 0.010000); - r0.y = -r0.y * r1.x; - r0.y = r0.y * 1.442695; - r1.xzw = exp2(r0.yyy); - r0.y = cmp(0.000100 >= r2.y); - r2.xy = r3.xy / r3.zz; - r2.xy = r2.xy * float2(0.500000, 0.500000) + float2(0.500000, 0.500000); - r2.xy = -r2.xy * cb1[0].xy + r9.xy; - r2.x = dot(r2.xy, r2.xy); - r2.yz = r4.xy / r4.zz; - r2.yz = r2.yz * float2(0.500000, 0.500000) + float2(0.500000, 0.500000); - r2.yz = -r2.yz * cb1[0].xy + r9.xy; - r2.y = dot(r2.yz, r2.yz); - r2.x = r2.y + r2.x; - r2.x = sqrt(r2.x); - r2.x = r2.x * 0.500000; - r2.x = log2(r2.x); - r2.x = max(r2.x, 0.000000); - r2.x = min(r2.x, cb1[5].y); - r2.x = r2.x / cb1[5].y; - r1.y = select_nonzero(r0.y, 0, r2.x); - if (shader_injection.improved_ssr >= 0.5f) { - float mip_threshold = 0.25f; - float adjusted_mip = saturate((r1.y - mip_threshold) / (1.0f - mip_threshold)); - u1[vThreadID.xy] = float4(r1.x, adjusted_mip, r1.z, r1.x); - } else { - u1[vThreadID.xy] = r1.xyzw; - } - r0.yz = r0.zw * cb0[82].xy; - r1.xy = float2(r0.yz); - uint ssr_mask = t5.Load(int3(int2(r1.xy), 0)).y & 4u; - r0.x = (ssr_mask != 0u) ? 1.000000 : r0.x; - u2[vThreadID.xy] = r0.xxxx; - return; - // Approximately 0 instruction slots used - -} diff --git a/src/games/endfield/ssr/ssr-temporal_0x3594373F.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-temporal_0x3594373F.cs_5_0.hlsl new file mode 100644 index 0000000000..cad5af90f9 --- /dev/null +++ b/src/games/endfield/ssr/ssr-temporal_0x3594373F.cs_5_0.hlsl @@ -0,0 +1,2 @@ +#define SSR_FULL_TRACE_VARIANT +#include "ssr-temporal2_0x7D50F458.cs_5_0.hlsl" diff --git a/src/games/endfield/ssr/ssr-upsample_0xE714AB7B.cs_5_0.hlsl b/src/games/endfield/ssr/ssr-upsample_0x4ED659BE.cs_5_0.hlsl similarity index 87% rename from src/games/endfield/ssr/ssr-upsample_0xE714AB7B.cs_5_0.hlsl rename to src/games/endfield/ssr/ssr-upsample_0x4ED659BE.cs_5_0.hlsl index 90b99d05d7..2163c608dd 100644 --- a/src/games/endfield/ssr/ssr-upsample_0xE714AB7B.cs_5_0.hlsl +++ b/src/games/endfield/ssr/ssr-upsample_0x4ED659BE.cs_5_0.hlsl @@ -1,12 +1,12 @@ #include "../shared.h" -Texture2D t2 : register(t2); -Texture2D t1 : register(t1); -Texture2D t0 : register(t0); +Texture2D t2 : register(t2); +Texture2D t1 : register(t1); +Texture2D t0 : register(t0); -SamplerState s1_s : register(s1); -SamplerState s0_s : register(s0); +SamplerState s1_s : register(s1); +SamplerState s0_s : register(s0); cbuffer cb1 : register(b1) { @@ -15,7 +15,7 @@ cbuffer cb1 : register(b1) cbuffer cb0 : register(b0) { - float4 cb0[83]; + float4 cb0[1]; } RWTexture2D u0 : register(u0); @@ -31,7 +31,7 @@ void main(uint3 vThreadID : SV_DispatchThreadID) r0.xy = (uint2)vThreadID.xy; r0.xy = float2(0.5, 0.5) + r0.xy; - r0.xy = cb0[82].zw * r0.xy; + r0.xy = cb0[0].zw * r0.xy; // Sample sharp temporal color and apply inverse Reinhard r1.xyz = t1.SampleLevel(s1_s, r0.xy, 0).xyz; From 1b0600455eac5f793f6afb949127aa762470dc8b Mon Sep 17 00:00:00 2001 From: ItsTheSewerRat Date: Sat, 18 Jul 2026 01:34:24 +0200 Subject: [PATCH 33/40] fix(endfield): update deferred and material shaders --- .../endfield/deferred-lighting/0x0175FC4A.cso | Bin 0 -> 52352 bytes .../endfield/deferred-lighting/0x0608CFD6.cso | Bin 0 -> 64556 bytes .../endfield/deferred-lighting/0x08A44A93.cso | Bin 0 -> 69304 bytes .../{0xE9FA7952.cso => 0x09E3521F.cso} | Bin 27164 -> 27300 bytes .../endfield/deferred-lighting/0x0A8C4B9A.cso | Bin 41924 -> 0 bytes .../endfield/deferred-lighting/0x162B46D9.cso | Bin 0 -> 71012 bytes .../endfield/deferred-lighting/0x18F24DBB.cso | Bin 0 -> 51824 bytes .../endfield/deferred-lighting/0x1BA367EC.cso | Bin 64076 -> 0 bytes .../endfield/deferred-lighting/0x1D75F314.cso | Bin 0 -> 68464 bytes .../endfield/deferred-lighting/0x1F7F3376.cso | Bin 0 -> 66596 bytes .../endfield/deferred-lighting/0x20CB4A05.cso | Bin 62096 -> 0 bytes .../endfield/deferred-lighting/0x27B5CC3B.cso | Bin 0 -> 68580 bytes .../endfield/deferred-lighting/0x2A4AA5B9.cso | Bin 0 -> 73728 bytes .../endfield/deferred-lighting/0x3300FBDA.cso | Bin 0 -> 28676 bytes .../{0x355D50B7.cso => 0x3923F97E.cso} | Bin 27572 -> 27708 bytes .../endfield/deferred-lighting/0x470E14EE.cso | Bin 0 -> 67220 bytes .../endfield/deferred-lighting/0x4A42FD4A.cso | Bin 48468 -> 0 bytes .../{0xBB9276D0.cso => 0x4BF704A4.cso} | Bin 27216 -> 27352 bytes .../endfield/deferred-lighting/0x4C421100.cso | Bin 0 -> 43180 bytes .../endfield/deferred-lighting/0x4FA33192.cso | Bin 0 -> 44384 bytes .../endfield/deferred-lighting/0x509F5926.cso | Bin 0 -> 13776 bytes .../endfield/deferred-lighting/0x523B9E43.cso | Bin 0 -> 69428 bytes .../endfield/deferred-lighting/0x523DDB41.cso | Bin 0 -> 68048 bytes .../endfield/deferred-lighting/0x5BEF30AE.cso | Bin 0 -> 15632 bytes .../endfield/deferred-lighting/0x60A0503D.cso | Bin 0 -> 50068 bytes .../endfield/deferred-lighting/0x60D37BB1.cso | Bin 52696 -> 0 bytes .../endfield/deferred-lighting/0x6412C588.cso | Bin 0 -> 64648 bytes .../{0x46368E6B.cso => 0x66F41E33.cso} | Bin 27608 -> 27744 bytes .../endfield/deferred-lighting/0x69A9A3A2.cso | Bin 0 -> 51172 bytes .../endfield/deferred-lighting/0x6A7F47F5.cso | Bin 0 -> 66084 bytes .../endfield/deferred-lighting/0x6B2D0D3F.cso | Bin 49392 -> 0 bytes .../endfield/deferred-lighting/0x773D0A68.cso | Bin 0 -> 64728 bytes .../endfield/deferred-lighting/0x7B4BA49D.cso | Bin 63360 -> 0 bytes .../endfield/deferred-lighting/0x7C0172E6.cso | Bin 48060 -> 0 bytes .../endfield/deferred-lighting/0x7F533976.cso | Bin 0 -> 50428 bytes .../endfield/deferred-lighting/0x82083D15.cso | Bin 0 -> 53820 bytes .../endfield/deferred-lighting/0x82E0E0DA.cso | Bin 0 -> 14064 bytes .../endfield/deferred-lighting/0x8ACC6F4B.cso | Bin 68040 -> 0 bytes .../endfield/deferred-lighting/0x8C4B48EB.cso | Bin 0 -> 48652 bytes .../endfield/deferred-lighting/0x8D5C466E.cso | Bin 0 -> 57396 bytes .../endfield/deferred-lighting/0x8E45AB83.cso | Bin 0 -> 42532 bytes .../endfield/deferred-lighting/0x8FEB8406.cso | Bin 0 -> 12168 bytes .../endfield/deferred-lighting/0x990EFD89.cso | Bin 0 -> 65732 bytes .../endfield/deferred-lighting/0x9EBC19FB.cso | Bin 0 -> 64468 bytes .../endfield/deferred-lighting/0x9FEC1C1B.cso | Bin 0 -> 65268 bytes .../endfield/deferred-lighting/0xA1716606.cso | Bin 62792 -> 0 bytes .../endfield/deferred-lighting/0xA5B8112F.cso | Bin 0 -> 48096 bytes .../endfield/deferred-lighting/0xA98FCD8A.cso | Bin 0 -> 49252 bytes .../{0x3826B75E.cso => 0xACD57C4D.cso} | Bin 30524 -> 30660 bytes .../endfield/deferred-lighting/0xADB65273.cso | Bin 0 -> 66784 bytes .../endfield/deferred-lighting/0xB017F103.cso | Bin 0 -> 50728 bytes .../endfield/deferred-lighting/0xB2137813.cso | Bin 0 -> 49656 bytes .../endfield/deferred-lighting/0xB36BFB47.cso | Bin 0 -> 76916 bytes .../endfield/deferred-lighting/0xBE1C389F.cso | Bin 0 -> 73232 bytes .../endfield/deferred-lighting/0xC181EA40.cso | Bin 0 -> 54324 bytes .../endfield/deferred-lighting/0xC75E6D72.cso | Bin 48716 -> 0 bytes .../endfield/deferred-lighting/0xCDB8DB9F.cso | Bin 0 -> 77260 bytes .../endfield/deferred-lighting/0xD91B7CA0.cso | Bin 0 -> 44904 bytes .../endfield/deferred-lighting/0xDDFFCC65.cso | Bin 0 -> 28164 bytes .../endfield/deferred-lighting/0xDEA84D39.cso | Bin 0 -> 69800 bytes .../endfield/deferred-lighting/0xE312F9FE.cso | Bin 62180 -> 0 bytes .../endfield/deferred-lighting/0xE31759A4.cso | Bin 0 -> 52180 bytes .../endfield/deferred-lighting/0xEB195F90.cso | Bin 0 -> 14844 bytes .../endfield/deferred-lighting/0xEBD4CAC5.cso | Bin 62296 -> 0 bytes .../endfield/deferred-lighting/0xED0BAEAD.cso | Bin 0 -> 16244 bytes .../{0x51B20E29.cso => 0xEE78E1BA.cso} | Bin 31052 -> 31188 bytes .../endfield/deferred-lighting/0xEFA7F46F.cso | Bin 0 -> 51124 bytes .../endfield/deferred-lighting/0xF014B254.cso | Bin 67472 -> 0 bytes .../endfield/deferred-lighting/0xF50042EC.cso | Bin 52192 -> 0 bytes .../{0x69D13BAF.cso => 0xFB48A847.cso} | Bin 41356 -> 41492 bytes src/games/endfield/glass/0x048D5332.cso | Bin 52780 -> 0 bytes src/games/endfield/glass/0x08D1A751.cso | Bin 53924 -> 0 bytes src/games/endfield/glass/0x10F48E71.cso | Bin 0 -> 57640 bytes src/games/endfield/glass/0x1913D5FD.cso | Bin 56220 -> 0 bytes src/games/endfield/glass/0x25F7357D.cso | Bin 55856 -> 0 bytes src/games/endfield/glass/0x3FC1A55D.cso | Bin 53204 -> 0 bytes src/games/endfield/glass/0x48C2ED6A.cso | Bin 0 -> 57808 bytes src/games/endfield/glass/0x4F5F426C.cso | Bin 55740 -> 0 bytes src/games/endfield/glass/0x597C09EE.cso | Bin 55588 -> 0 bytes src/games/endfield/glass/0x63D71B7E.cso | Bin 0 -> 53744 bytes src/games/endfield/glass/0x68EDC7A9.cso | Bin 55952 -> 0 bytes src/games/endfield/glass/0x6CC74479.cso | Bin 0 -> 54216 bytes src/games/endfield/glass/0x6EC3380B.cso | Bin 54656 -> 0 bytes src/games/endfield/glass/0x84E5DFA1.cso | Bin 0 -> 55620 bytes src/games/endfield/glass/0x93A1901D.cso | Bin 0 -> 59956 bytes src/games/endfield/glass/0x96F91C3D.cso | Bin 0 -> 55884 bytes src/games/endfield/glass/0xC7F04612.cso | Bin 0 -> 54168 bytes src/games/endfield/glass/0xD37F588D.cso | Bin 53640 -> 0 bytes src/games/endfield/glass/0xD6BA37BD.cso | Bin 0 -> 57268 bytes src/games/endfield/glass/0xE32D090A.cso | Bin 55376 -> 0 bytes src/games/endfield/glass/0xE82F718F.cso | Bin 0 -> 58188 bytes src/games/endfield/glass/0xEC75B2AD.cso | Bin 0 -> 57524 bytes src/games/endfield/glass/0xF52EED7A.cso | Bin 53252 -> 0 bytes src/games/endfield/glass/0xFB0D073D.cso | Bin 0 -> 57920 bytes src/games/endfield/waterfalls/0x4DEFF5F5.cso | Bin 0 -> 54616 bytes src/games/endfield/waterfalls/0x8C038DD0.cso | Bin 53632 -> 0 bytes 96 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/games/endfield/deferred-lighting/0x0175FC4A.cso create mode 100644 src/games/endfield/deferred-lighting/0x0608CFD6.cso create mode 100644 src/games/endfield/deferred-lighting/0x08A44A93.cso rename src/games/endfield/deferred-lighting/{0xE9FA7952.cso => 0x09E3521F.cso} (71%) delete mode 100644 src/games/endfield/deferred-lighting/0x0A8C4B9A.cso create mode 100644 src/games/endfield/deferred-lighting/0x162B46D9.cso create mode 100644 src/games/endfield/deferred-lighting/0x18F24DBB.cso delete mode 100644 src/games/endfield/deferred-lighting/0x1BA367EC.cso create mode 100644 src/games/endfield/deferred-lighting/0x1D75F314.cso create mode 100644 src/games/endfield/deferred-lighting/0x1F7F3376.cso delete mode 100644 src/games/endfield/deferred-lighting/0x20CB4A05.cso create mode 100644 src/games/endfield/deferred-lighting/0x27B5CC3B.cso create mode 100644 src/games/endfield/deferred-lighting/0x2A4AA5B9.cso create mode 100644 src/games/endfield/deferred-lighting/0x3300FBDA.cso rename src/games/endfield/deferred-lighting/{0x355D50B7.cso => 0x3923F97E.cso} (71%) create mode 100644 src/games/endfield/deferred-lighting/0x470E14EE.cso delete mode 100644 src/games/endfield/deferred-lighting/0x4A42FD4A.cso rename src/games/endfield/deferred-lighting/{0xBB9276D0.cso => 0x4BF704A4.cso} (74%) create mode 100644 src/games/endfield/deferred-lighting/0x4C421100.cso create mode 100644 src/games/endfield/deferred-lighting/0x4FA33192.cso create mode 100644 src/games/endfield/deferred-lighting/0x509F5926.cso create mode 100644 src/games/endfield/deferred-lighting/0x523B9E43.cso create mode 100644 src/games/endfield/deferred-lighting/0x523DDB41.cso create mode 100644 src/games/endfield/deferred-lighting/0x5BEF30AE.cso create mode 100644 src/games/endfield/deferred-lighting/0x60A0503D.cso delete mode 100644 src/games/endfield/deferred-lighting/0x60D37BB1.cso create mode 100644 src/games/endfield/deferred-lighting/0x6412C588.cso rename src/games/endfield/deferred-lighting/{0x46368E6B.cso => 0x66F41E33.cso} (73%) create mode 100644 src/games/endfield/deferred-lighting/0x69A9A3A2.cso create mode 100644 src/games/endfield/deferred-lighting/0x6A7F47F5.cso delete mode 100644 src/games/endfield/deferred-lighting/0x6B2D0D3F.cso create mode 100644 src/games/endfield/deferred-lighting/0x773D0A68.cso delete mode 100644 src/games/endfield/deferred-lighting/0x7B4BA49D.cso delete mode 100644 src/games/endfield/deferred-lighting/0x7C0172E6.cso create mode 100644 src/games/endfield/deferred-lighting/0x7F533976.cso create mode 100644 src/games/endfield/deferred-lighting/0x82083D15.cso create mode 100644 src/games/endfield/deferred-lighting/0x82E0E0DA.cso delete mode 100644 src/games/endfield/deferred-lighting/0x8ACC6F4B.cso create mode 100644 src/games/endfield/deferred-lighting/0x8C4B48EB.cso create mode 100644 src/games/endfield/deferred-lighting/0x8D5C466E.cso create mode 100644 src/games/endfield/deferred-lighting/0x8E45AB83.cso create mode 100644 src/games/endfield/deferred-lighting/0x8FEB8406.cso create mode 100644 src/games/endfield/deferred-lighting/0x990EFD89.cso create mode 100644 src/games/endfield/deferred-lighting/0x9EBC19FB.cso create mode 100644 src/games/endfield/deferred-lighting/0x9FEC1C1B.cso delete mode 100644 src/games/endfield/deferred-lighting/0xA1716606.cso create mode 100644 src/games/endfield/deferred-lighting/0xA5B8112F.cso create mode 100644 src/games/endfield/deferred-lighting/0xA98FCD8A.cso rename src/games/endfield/deferred-lighting/{0x3826B75E.cso => 0xACD57C4D.cso} (71%) create mode 100644 src/games/endfield/deferred-lighting/0xADB65273.cso create mode 100644 src/games/endfield/deferred-lighting/0xB017F103.cso create mode 100644 src/games/endfield/deferred-lighting/0xB2137813.cso create mode 100644 src/games/endfield/deferred-lighting/0xB36BFB47.cso create mode 100644 src/games/endfield/deferred-lighting/0xBE1C389F.cso create mode 100644 src/games/endfield/deferred-lighting/0xC181EA40.cso delete mode 100644 src/games/endfield/deferred-lighting/0xC75E6D72.cso create mode 100644 src/games/endfield/deferred-lighting/0xCDB8DB9F.cso create mode 100644 src/games/endfield/deferred-lighting/0xD91B7CA0.cso create mode 100644 src/games/endfield/deferred-lighting/0xDDFFCC65.cso create mode 100644 src/games/endfield/deferred-lighting/0xDEA84D39.cso delete mode 100644 src/games/endfield/deferred-lighting/0xE312F9FE.cso create mode 100644 src/games/endfield/deferred-lighting/0xE31759A4.cso create mode 100644 src/games/endfield/deferred-lighting/0xEB195F90.cso delete mode 100644 src/games/endfield/deferred-lighting/0xEBD4CAC5.cso create mode 100644 src/games/endfield/deferred-lighting/0xED0BAEAD.cso rename src/games/endfield/deferred-lighting/{0x51B20E29.cso => 0xEE78E1BA.cso} (71%) create mode 100644 src/games/endfield/deferred-lighting/0xEFA7F46F.cso delete mode 100644 src/games/endfield/deferred-lighting/0xF014B254.cso delete mode 100644 src/games/endfield/deferred-lighting/0xF50042EC.cso rename src/games/endfield/deferred-lighting/{0x69D13BAF.cso => 0xFB48A847.cso} (75%) delete mode 100644 src/games/endfield/glass/0x048D5332.cso delete mode 100644 src/games/endfield/glass/0x08D1A751.cso create mode 100644 src/games/endfield/glass/0x10F48E71.cso delete mode 100644 src/games/endfield/glass/0x1913D5FD.cso delete mode 100644 src/games/endfield/glass/0x25F7357D.cso delete mode 100644 src/games/endfield/glass/0x3FC1A55D.cso create mode 100644 src/games/endfield/glass/0x48C2ED6A.cso delete mode 100644 src/games/endfield/glass/0x4F5F426C.cso delete mode 100644 src/games/endfield/glass/0x597C09EE.cso create mode 100644 src/games/endfield/glass/0x63D71B7E.cso delete mode 100644 src/games/endfield/glass/0x68EDC7A9.cso create mode 100644 src/games/endfield/glass/0x6CC74479.cso delete mode 100644 src/games/endfield/glass/0x6EC3380B.cso create mode 100644 src/games/endfield/glass/0x84E5DFA1.cso create mode 100644 src/games/endfield/glass/0x93A1901D.cso create mode 100644 src/games/endfield/glass/0x96F91C3D.cso create mode 100644 src/games/endfield/glass/0xC7F04612.cso delete mode 100644 src/games/endfield/glass/0xD37F588D.cso create mode 100644 src/games/endfield/glass/0xD6BA37BD.cso delete mode 100644 src/games/endfield/glass/0xE32D090A.cso create mode 100644 src/games/endfield/glass/0xE82F718F.cso create mode 100644 src/games/endfield/glass/0xEC75B2AD.cso delete mode 100644 src/games/endfield/glass/0xF52EED7A.cso create mode 100644 src/games/endfield/glass/0xFB0D073D.cso create mode 100644 src/games/endfield/waterfalls/0x4DEFF5F5.cso delete mode 100644 src/games/endfield/waterfalls/0x8C038DD0.cso diff --git a/src/games/endfield/deferred-lighting/0x0175FC4A.cso b/src/games/endfield/deferred-lighting/0x0175FC4A.cso new file mode 100644 index 0000000000000000000000000000000000000000..845ca65a5689ae416b7c281dc29f3b8639ad7828 GIT binary patch literal 52352 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 O=8;kSx3hIt!~YB9Fqn7% literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x08A44A93.cso b/src/games/endfield/deferred-lighting/0x08A44A93.cso new file mode 100644 index 0000000000000000000000000000000000000000..8c8dbe58304bdba3b9b9440799ff8dde54bf759d GIT binary patch literal 69304 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0xE9FA7952.cso b/src/games/endfield/deferred-lighting/0x09E3521F.cso similarity index 71% rename from src/games/endfield/deferred-lighting/0xE9FA7952.cso rename to src/games/endfield/deferred-lighting/0x09E3521F.cso index 89fd748299705db7ae677c6f62b52fc3c8329a26..83cb426aef92008718f9faae8785d00a73d1ea7a 100644 GIT binary patch delta 2021 zcmZuyeN0 zd+s@}SH6*!??{g4TT6o<&0B8$n6Lg?@jxDb=j*eh5@T$6(eXjs55tVr<6_*&*h^+6 zwJ|1_z3oK{V;MN~H361rZ5Dn5>P9r`ej~0;7X)$jaebPMUhTHc7h_4AEw+TeB%r1raNA;)5aHQ zOnMpVQ?Q%#I}ezG9nawZ`u%FunbvRR%G@*qH*-YpWD3BF+2!VwGKew6D77r5v8`|arucI`T67hJcALUgpH%rqr zyf3JLEl7BGP{;d%@z4=WBuubcGN`wL3kIB;%VH(8b(Ry)ba@)e_400%_KHlDfr>sW zorxau&jl|-Z-s*P&5CxEDV5*x%OruXJ023MMv-u?svLP?yXL*4Ky^Ii63;E7Kdud* zBUWmGQ;eCZnkmav!8Er_i|TZv?qRY_*{3R}@ib$x$r$fKo!WzD(JqYT9`ZSl_@c#F zqH#J7eFo-&$vVHO#e@{FS{LM(al(FGuBO>D{E*cxLu>sgx46}<`bR_uRpFke@l14w zY8X520&`>HW3;Leo`VJ`ht5G4gd1mh4;;qTz;5FVC$5C?ruHXvG__JGo}DtU?@@VJ zhrgRdy;nj?Sd>;141`5rIMv0l_C;%gl$JmE1|e`q^0`(IZ4m(p!EQu>Pa>jELhxCn zPK&j+ey_#uwYoIT-X^^DU~N^@i8fi}p%%}za$e-278YL^;o)_v)P77ncLeMm;;_x| zY=?&@A&ek;P`Yp!hC4(XhheEh?A8P~J0hH@1st7gTx)=>P7&7#QkSmfb%{$iKyTLr zu{CsdLpm{sa8PN{*OgL9rNU=zXZowbQnEmg@o~uMc`D^Fh(2Xhho`lfKF!>Z>GQyH zPZr-S1b2JxbFCgWdi7N8^wtTRn)jmX-!z@X&jnG`LT{gzCfM#KHgSXRbM9(b9bA(V zpmWHB^35Svj%O-bpbuigyjiFv9mI+)Nk2mgw&Fn?d^z+ff+vU5Q1+ft;EUnbe*hru BcfbGu delta 1865 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 L`fq>dvbz5t%`>5( literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x18F24DBB.cso b/src/games/endfield/deferred-lighting/0x18F24DBB.cso new file mode 100644 index 0000000000000000000000000000000000000000..600880e51495d8020f416b9a506a55e118fca4aa GIT binary patch literal 51824 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 literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x1BA367EC.cso b/src/games/endfield/deferred-lighting/0x1BA367EC.cso deleted file mode 100644 index 07fe74b2c0870288273e9529e3237ed9c88bfc62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64076 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 R;DGN5jt*)CAJ6Ob{{nU<^*jIo literal 0 HcmV?d00001 diff --git a/src/games/endfield/deferred-lighting/0x20CB4A05.cso b/src/games/endfield/deferred-lighting/0x20CB4A05.cso deleted file mode 100644 index 3bed2019e8501e8fc524ce476e843b4537fabb53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62096 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 EKlQ^fkpKVy diff --git a/src/games/endfield/deferred-lighting/0x27B5CC3B.cso b/src/games/endfield/deferred-lighting/0x27B5CC3B.cso new file mode 100644 index 0000000000000000000000000000000000000000..3960c8450918ebb79ce28fa6e6f7bd7432dae6ac GIT binary patch literal 68580 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